1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #include "base/stringprintf.h" 6 #if defined (OS_WIN) 7 #include "base/win/windows_version.h" 8 #endif // defined (OS_WIN) 9 10 #include "chrome/browser/extensions/extension_apitest.h" 11 #include "chrome/browser/extensions/extension_webstore_private_api.h" 12 #include "chrome/common/chrome_switches.h" 13 #include "chrome/test/ui_test_utils.h" 14 #include "net/base/mock_host_resolver.h" 15 16 class ExtensionGalleryInstallApiTest : public ExtensionApiTest { 17 public: 18 void SetUpCommandLine(CommandLine* command_line) { 19 ExtensionApiTest::SetUpCommandLine(command_line); 20 command_line->AppendSwitchASCII(switches::kAppsGalleryURL, 21 "http://www.example.com"); 22 } 23 24 bool RunInstallTest(const std::string& page) { 25 std::string base_url = base::StringPrintf( 26 "http://www.example.com:%u/files/extensions/", 27 test_server()->host_port_pair().port()); 28 29 std::string testing_install_base_url = base_url; 30 testing_install_base_url += "good.crx"; 31 32 CommandLine::ForCurrentProcess()->AppendSwitchASCII( 33 switches::kAppsGalleryUpdateURL, testing_install_base_url); 34 35 std::string page_url = base_url; 36 page_url += "api_test/extension_gallery_install/" + page; 37 38 return RunPageTest(page_url.c_str()); 39 } 40 }; 41 42 namespace { 43 44 bool RunningOnXP() { 45 #if defined (OS_WIN) 46 return GetVersion() < base::win::VERSION_VISTA; 47 #else 48 return false; 49 #endif // defined (OS_WIN) 50 } 51 52 } // namespace 53 54 // TODO(asargent) - for some reason this test occasionally fails on XP, 55 // but not other versions of windows. http://crbug.com/55642 56 #if defined (OS_WIN) 57 #define MAYBE_InstallAndUninstall FLAKY_InstallAndUninstall 58 #else 59 #define MAYBE_InstallAndUninstall InstallAndUninstall 60 #endif 61 IN_PROC_BROWSER_TEST_F(ExtensionGalleryInstallApiTest, 62 MAYBE_InstallAndUninstall) { 63 if (RunningOnXP()) { 64 LOG(INFO) << "Adding host resolver rule"; 65 } 66 host_resolver()->AddRule("www.example.com", "127.0.0.1"); 67 if (RunningOnXP()) { 68 LOG(INFO) << "Starting test server"; 69 } 70 ASSERT_TRUE(test_server()->Start()); 71 72 if (RunningOnXP()) { 73 LOG(INFO) << "Starting tests without user gesture checking"; 74 } 75 BeginInstallFunction::SetIgnoreUserGestureForTests(true); 76 ASSERT_TRUE(RunInstallTest("test.html")); 77 ASSERT_TRUE(RunInstallTest("complete_without_begin.html")); 78 ASSERT_TRUE(RunInstallTest("invalid_begin.html")); 79 80 if (RunningOnXP()) { 81 LOG(INFO) << "Starting tests with user gesture checking"; 82 } 83 BeginInstallFunction::SetIgnoreUserGestureForTests(false); 84 ASSERT_TRUE(RunInstallTest("no_user_gesture.html")); 85 } 86