| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "base/command_line.h" | 5 #include "base/command_line.h" |
| 6 #include "base/scoped_observer.h" | 6 #include "base/scoped_observer.h" |
| 7 #include "chrome/browser/chrome_notification_types.h" | 7 #include "chrome/browser/chrome_notification_types.h" |
| 8 #include "chrome/browser/extensions/extension_install_prompt.h" | |
| 9 #include "chrome/browser/extensions/extension_service.h" | 8 #include "chrome/browser/extensions/extension_service.h" |
| 10 #include "chrome/browser/extensions/startup_helper.h" | 9 #include "chrome/browser/extensions/startup_helper.h" |
| 11 #include "chrome/browser/extensions/webstore_installer_test.h" | 10 #include "chrome/browser/extensions/webstore_installer_test.h" |
| 12 #include "chrome/browser/infobars/infobar_service.h" | 11 #include "chrome/browser/infobars/infobar_service.h" |
| 13 #include "chrome/browser/profiles/profile.h" | 12 #include "chrome/browser/profiles/profile.h" |
| 14 #include "chrome/browser/ui/browser.h" | 13 #include "chrome/browser/ui/browser.h" |
| 15 #include "chrome/browser/ui/tabs/tab_strip_model.h" | 14 #include "chrome/browser/ui/tabs/tab_strip_model.h" |
| 16 #include "chrome/common/chrome_switches.h" | 15 #include "chrome/common/chrome_switches.h" |
| 17 #include "chrome/test/base/in_process_browser_test.h" | 16 #include "chrome/test/base/in_process_browser_test.h" |
| 18 #include "chrome/test/base/test_switches.h" | 17 #include "chrome/test/base/test_switches.h" |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 50 WebstoreStartupInstallerTest() | 49 WebstoreStartupInstallerTest() |
| 51 : WebstoreInstallerTest( | 50 : WebstoreInstallerTest( |
| 52 kWebstoreDomain, | 51 kWebstoreDomain, |
| 53 kTestDataPath, | 52 kTestDataPath, |
| 54 kCrxFilename, | 53 kCrxFilename, |
| 55 kAppDomain, | 54 kAppDomain, |
| 56 kNonAppDomain) {} | 55 kNonAppDomain) {} |
| 57 }; | 56 }; |
| 58 | 57 |
| 59 IN_PROC_BROWSER_TEST_F(WebstoreStartupInstallerTest, Install) { | 58 IN_PROC_BROWSER_TEST_F(WebstoreStartupInstallerTest, Install) { |
| 60 ExtensionInstallPrompt::g_auto_confirm_for_tests = | 59 AutoAcceptInstall(); |
| 61 ExtensionInstallPrompt::ACCEPT; | |
| 62 | 60 |
| 63 ui_test_utils::NavigateToURL( | 61 ui_test_utils::NavigateToURL( |
| 64 browser(), GenerateTestServerUrl(kAppDomain, "install.html")); | 62 browser(), GenerateTestServerUrl(kAppDomain, "install.html")); |
| 65 | 63 |
| 66 RunTest("runTest"); | 64 RunTest("runTest"); |
| 67 | 65 |
| 68 extensions::ExtensionRegistry* registry = | 66 extensions::ExtensionRegistry* registry = |
| 69 extensions::ExtensionRegistry::Get(browser()->profile()); | 67 extensions::ExtensionRegistry::Get(browser()->profile()); |
| 70 const extensions::Extension* extension = | 68 const extensions::Extension* extension = |
| 71 registry->enabled_extensions().GetByID(kTestExtensionId); | 69 registry->enabled_extensions().GetByID(kTestExtensionId); |
| 72 EXPECT_TRUE(extension); | 70 EXPECT_TRUE(extension); |
| 73 } | 71 } |
| 74 | 72 |
| 75 IN_PROC_BROWSER_TEST_F(WebstoreStartupInstallerTest, | 73 IN_PROC_BROWSER_TEST_F(WebstoreStartupInstallerTest, |
| 76 InstallNotAllowedFromNonVerifiedDomains) { | 74 InstallNotAllowedFromNonVerifiedDomains) { |
| 77 ExtensionInstallPrompt::g_auto_confirm_for_tests = | 75 AutoCancelInstall(); |
| 78 ExtensionInstallPrompt::CANCEL; | |
| 79 ui_test_utils::NavigateToURL( | 76 ui_test_utils::NavigateToURL( |
| 80 browser(), | 77 browser(), |
| 81 GenerateTestServerUrl(kNonAppDomain, "install_non_verified_domain.html")); | 78 GenerateTestServerUrl(kNonAppDomain, "install_non_verified_domain.html")); |
| 82 | 79 |
| 83 RunTest("runTest1"); | 80 RunTest("runTest1"); |
| 84 RunTest("runTest2"); | 81 RunTest("runTest2"); |
| 85 } | 82 } |
| 86 | 83 |
| 87 IN_PROC_BROWSER_TEST_F(WebstoreStartupInstallerTest, FindLink) { | 84 IN_PROC_BROWSER_TEST_F(WebstoreStartupInstallerTest, FindLink) { |
| 88 ui_test_utils::NavigateToURL( | 85 ui_test_utils::NavigateToURL( |
| 89 browser(), GenerateTestServerUrl(kAppDomain, "find_link.html")); | 86 browser(), GenerateTestServerUrl(kAppDomain, "find_link.html")); |
| 90 | 87 |
| 91 RunTest("runTest"); | 88 RunTest("runTest"); |
| 92 } | 89 } |
| 93 | 90 |
| 94 // Flakes on all platforms: http://crbug.com/95713, http://crbug.com/229947 | 91 // Flakes on all platforms: http://crbug.com/95713, http://crbug.com/229947 |
| 95 IN_PROC_BROWSER_TEST_F(WebstoreStartupInstallerTest, | 92 IN_PROC_BROWSER_TEST_F(WebstoreStartupInstallerTest, |
| 96 DISABLED_ArgumentValidation) { | 93 DISABLED_ArgumentValidation) { |
| 97 ExtensionInstallPrompt::g_auto_confirm_for_tests = | 94 AutoCancelInstall(); |
| 98 ExtensionInstallPrompt::CANCEL; | |
| 99 | 95 |
| 100 // Each of these tests has to run separately, since one page/tab can | 96 // Each of these tests has to run separately, since one page/tab can |
| 101 // only have one in-progress install request. These tests don't all pass | 97 // only have one in-progress install request. These tests don't all pass |
| 102 // callbacks to install, so they have no way to wait for the installation | 98 // callbacks to install, so they have no way to wait for the installation |
| 103 // to complete before starting the next test. | 99 // to complete before starting the next test. |
| 104 bool is_finished = false; | 100 bool is_finished = false; |
| 105 for (int i = 0; !is_finished; ++i) { | 101 for (int i = 0; !is_finished; ++i) { |
| 106 ui_test_utils::NavigateToURL( | 102 ui_test_utils::NavigateToURL( |
| 107 browser(), | 103 browser(), |
| 108 GenerateTestServerUrl(kAppDomain, "argument_validation.html")); | 104 GenerateTestServerUrl(kAppDomain, "argument_validation.html")); |
| 109 is_finished = !RunIndexedTest("runTest", i); | 105 is_finished = !RunIndexedTest("runTest", i); |
| 110 } | 106 } |
| 111 } | 107 } |
| 112 | 108 |
| 113 IN_PROC_BROWSER_TEST_F(WebstoreStartupInstallerTest, MultipleInstallCalls) { | 109 IN_PROC_BROWSER_TEST_F(WebstoreStartupInstallerTest, MultipleInstallCalls) { |
| 114 ExtensionInstallPrompt::g_auto_confirm_for_tests = | 110 AutoCancelInstall(); |
| 115 ExtensionInstallPrompt::CANCEL; | |
| 116 | 111 |
| 117 ui_test_utils::NavigateToURL( | 112 ui_test_utils::NavigateToURL( |
| 118 browser(), | 113 browser(), |
| 119 GenerateTestServerUrl(kAppDomain, "multiple_install_calls.html")); | 114 GenerateTestServerUrl(kAppDomain, "multiple_install_calls.html")); |
| 120 RunTest("runTest"); | 115 RunTest("runTest"); |
| 121 } | 116 } |
| 122 | 117 |
| 123 IN_PROC_BROWSER_TEST_F(WebstoreStartupInstallerTest, InstallNotSupported) { | 118 IN_PROC_BROWSER_TEST_F(WebstoreStartupInstallerTest, InstallNotSupported) { |
| 124 ExtensionInstallPrompt::g_auto_confirm_for_tests = | 119 AutoCancelInstall(); |
| 125 ExtensionInstallPrompt::CANCEL; | |
| 126 ui_test_utils::NavigateToURL( | 120 ui_test_utils::NavigateToURL( |
| 127 browser(), | 121 browser(), |
| 128 GenerateTestServerUrl(kAppDomain, "install_not_supported.html")); | 122 GenerateTestServerUrl(kAppDomain, "install_not_supported.html")); |
| 129 | 123 |
| 130 ui_test_utils::WindowedTabAddedNotificationObserver observer( | 124 ui_test_utils::WindowedTabAddedNotificationObserver observer( |
| 131 content::NotificationService::AllSources()); | 125 content::NotificationService::AllSources()); |
| 132 RunTest("runTest"); | 126 RunTest("runTest"); |
| 133 observer.Wait(); | 127 observer.Wait(); |
| 134 | 128 |
| 135 // The inline install should fail, and a store-provided URL should be opened | 129 // The inline install should fail, and a store-provided URL should be opened |
| 136 // in a new tab. | 130 // in a new tab. |
| 137 WebContents* web_contents = | 131 WebContents* web_contents = |
| 138 browser()->tab_strip_model()->GetActiveWebContents(); | 132 browser()->tab_strip_model()->GetActiveWebContents(); |
| 139 EXPECT_EQ(GURL("http://cws.com/show-me-the-money"), web_contents->GetURL()); | 133 EXPECT_EQ(GURL("http://cws.com/show-me-the-money"), web_contents->GetURL()); |
| 140 } | 134 } |
| 141 | 135 |
| 142 // Regression test for http://crbug.com/144991. | 136 // Regression test for http://crbug.com/144991. |
| 143 IN_PROC_BROWSER_TEST_F(WebstoreStartupInstallerTest, InstallFromHostedApp) { | 137 IN_PROC_BROWSER_TEST_F(WebstoreStartupInstallerTest, InstallFromHostedApp) { |
| 144 ExtensionInstallPrompt::g_auto_confirm_for_tests = | 138 AutoAcceptInstall(); |
| 145 ExtensionInstallPrompt::ACCEPT; | |
| 146 | 139 |
| 147 const GURL kInstallUrl = GenerateTestServerUrl(kAppDomain, "install.html"); | 140 const GURL kInstallUrl = GenerateTestServerUrl(kAppDomain, "install.html"); |
| 148 | 141 |
| 149 // We're forced to construct a hosted app dynamically because we need the | 142 // We're forced to construct a hosted app dynamically because we need the |
| 150 // app to run on a declared URL, but we don't know the port ahead of time. | 143 // app to run on a declared URL, but we don't know the port ahead of time. |
| 151 scoped_refptr<const Extension> hosted_app = ExtensionBuilder() | 144 scoped_refptr<const Extension> hosted_app = ExtensionBuilder() |
| 152 .SetManifest(DictionaryBuilder() | 145 .SetManifest(DictionaryBuilder() |
| 153 .Set("name", "hosted app") | 146 .Set("name", "hosted app") |
| 154 .Set("version", "1") | 147 .Set("version", "1") |
| 155 .Set("app", DictionaryBuilder() | 148 .Set("app", DictionaryBuilder() |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 188 | 181 |
| 189 IN_PROC_BROWSER_TEST_F(WebstoreStartupInstallerSupervisedUsersTest, | 182 IN_PROC_BROWSER_TEST_F(WebstoreStartupInstallerSupervisedUsersTest, |
| 190 InstallProhibited) { | 183 InstallProhibited) { |
| 191 #if defined(OS_WIN) && defined(USE_ASH) | 184 #if defined(OS_WIN) && defined(USE_ASH) |
| 192 // Disable this test in Metro+Ash for now (http://crbug.com/262796). | 185 // Disable this test in Metro+Ash for now (http://crbug.com/262796). |
| 193 if (base::CommandLine::ForCurrentProcess()->HasSwitch( | 186 if (base::CommandLine::ForCurrentProcess()->HasSwitch( |
| 194 switches::kAshBrowserTests)) | 187 switches::kAshBrowserTests)) |
| 195 return; | 188 return; |
| 196 #endif | 189 #endif |
| 197 | 190 |
| 198 ExtensionInstallPrompt::g_auto_confirm_for_tests = | 191 AutoAcceptInstall(); |
| 199 ExtensionInstallPrompt::ACCEPT; | |
| 200 | 192 |
| 201 ui_test_utils::NavigateToURL( | 193 ui_test_utils::NavigateToURL( |
| 202 browser(), GenerateTestServerUrl(kAppDomain, "install_prohibited.html")); | 194 browser(), GenerateTestServerUrl(kAppDomain, "install_prohibited.html")); |
| 203 | 195 |
| 204 RunTest("runTest"); | 196 RunTest("runTest"); |
| 205 | 197 |
| 206 // No error infobar should show up. | 198 // No error infobar should show up. |
| 207 WebContents* contents = browser()->tab_strip_model()->GetActiveWebContents(); | 199 WebContents* contents = browser()->tab_strip_model()->GetActiveWebContents(); |
| 208 InfoBarService* infobar_service = InfoBarService::FromWebContents(contents); | 200 InfoBarService* infobar_service = InfoBarService::FromWebContents(contents); |
| 209 EXPECT_EQ(0u, infobar_service->infobar_count()); | 201 EXPECT_EQ(0u, infobar_service->infobar_count()); |
| (...skipping 14 matching lines...) Expand all Loading... |
| 224 } | 216 } |
| 225 | 217 |
| 226 void SetUpInProcessBrowserTestFixture() override { | 218 void SetUpInProcessBrowserTestFixture() override { |
| 227 WebstoreStartupInstallerTest::SetUpInProcessBrowserTestFixture(); | 219 WebstoreStartupInstallerTest::SetUpInProcessBrowserTestFixture(); |
| 228 extensions::ExtensionInstallUI::set_disable_failure_ui_for_tests(); | 220 extensions::ExtensionInstallUI::set_disable_failure_ui_for_tests(); |
| 229 } | 221 } |
| 230 }; | 222 }; |
| 231 | 223 |
| 232 IN_PROC_BROWSER_TEST_F(WebstoreStartupInstallUnpackFailureTest, | 224 IN_PROC_BROWSER_TEST_F(WebstoreStartupInstallUnpackFailureTest, |
| 233 WebstoreStartupInstallUnpackFailureTest) { | 225 WebstoreStartupInstallUnpackFailureTest) { |
| 234 ExtensionInstallPrompt::g_auto_confirm_for_tests = | 226 AutoAcceptInstall(); |
| 235 ExtensionInstallPrompt::ACCEPT; | |
| 236 | 227 |
| 237 ui_test_utils::NavigateToURL(browser(), | 228 ui_test_utils::NavigateToURL(browser(), |
| 238 GenerateTestServerUrl(kAppDomain, "install_unpack_failure.html")); | 229 GenerateTestServerUrl(kAppDomain, "install_unpack_failure.html")); |
| 239 | 230 |
| 240 RunTest("runTest"); | 231 RunTest("runTest"); |
| 241 } | 232 } |
| 242 | 233 |
| 243 class CommandLineWebstoreInstall | 234 class CommandLineWebstoreInstall |
| 244 : public WebstoreStartupInstallerTest, | 235 : public WebstoreStartupInstallerTest, |
| 245 public content::NotificationObserver, | 236 public content::NotificationObserver, |
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 288 bool saw_install_; | 279 bool saw_install_; |
| 289 | 280 |
| 290 // How many NOTIFICATION_BROWSER_OPENED notifications have we seen? | 281 // How many NOTIFICATION_BROWSER_OPENED notifications have we seen? |
| 291 int browser_open_count_; | 282 int browser_open_count_; |
| 292 }; | 283 }; |
| 293 | 284 |
| 294 IN_PROC_BROWSER_TEST_F(CommandLineWebstoreInstall, CannotInstallNonEphemeral) { | 285 IN_PROC_BROWSER_TEST_F(CommandLineWebstoreInstall, CannotInstallNonEphemeral) { |
| 295 base::CommandLine* command_line = base::CommandLine::ForCurrentProcess(); | 286 base::CommandLine* command_line = base::CommandLine::ForCurrentProcess(); |
| 296 command_line->AppendSwitchASCII( | 287 command_line->AppendSwitchASCII( |
| 297 switches::kInstallEphemeralAppFromWebstore, kTestExtensionId); | 288 switches::kInstallEphemeralAppFromWebstore, kTestExtensionId); |
| 298 ExtensionInstallPrompt::g_auto_confirm_for_tests = | 289 AutoAcceptInstall(); |
| 299 ExtensionInstallPrompt::ACCEPT; | |
| 300 extensions::StartupHelper helper; | 290 extensions::StartupHelper helper; |
| 301 EXPECT_FALSE(helper.InstallEphemeralApp(*command_line, browser()->profile())); | 291 EXPECT_FALSE(helper.InstallEphemeralApp(*command_line, browser()->profile())); |
| 302 EXPECT_FALSE(saw_install()); | 292 EXPECT_FALSE(saw_install()); |
| 303 EXPECT_EQ(0, browser_open_count()); | 293 EXPECT_EQ(0, browser_open_count()); |
| 304 } | 294 } |
| OLD | NEW |