| 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 "chrome/browser/extensions/extension_browsertest.h" | 5 #include "chrome/browser/extensions/extension_browsertest.h" |
| 6 #include "chrome/browser/extensions/extension_service.h" | |
| 7 #include "chrome/browser/extensions/test_extension_dir.h" | 6 #include "chrome/browser/extensions/test_extension_dir.h" |
| 8 #include "chrome/browser/ui/browser.h" | 7 #include "chrome/browser/ui/browser.h" |
| 9 #include "chrome/browser/ui/tabs/tab_strip_model.h" | 8 #include "chrome/browser/ui/tabs/tab_strip_model.h" |
| 10 #include "chrome/common/url_constants.h" | 9 #include "chrome/common/url_constants.h" |
| 11 #include "chrome/test/base/ui_test_utils.h" | 10 #include "chrome/test/base/ui_test_utils.h" |
| 12 #include "content/public/browser/notification_service.h" | 11 #include "content/public/browser/notification_service.h" |
| 13 #include "content/public/test/browser_test_utils.h" | 12 #include "content/public/test/browser_test_utils.h" |
| 14 #include "extensions/browser/extension_system.h" | 13 #include "extensions/browser/extension_registry.h" |
| 15 #include "extensions/common/extension.h" | 14 #include "extensions/common/extension.h" |
| 16 #include "extensions/common/value_builder.h" | 15 #include "extensions/common/value_builder.h" |
| 17 #include "extensions/test/extension_test_message_listener.h" | 16 #include "extensions/test/extension_test_message_listener.h" |
| 18 | 17 |
| 19 namespace extensions { | 18 namespace extensions { |
| 20 | 19 |
| 21 // Used to simulate a click on the first element named 'Options'. | 20 // Used to simulate a click on the first element named 'Options'. |
| 22 static const char kScriptClickOptionButton[] = | 21 static const char kScriptClickOptionButton[] = |
| 23 "(function() { " | 22 "(function() { " |
| 24 " var button = document.querySelector('.options-link');" | 23 " var button = document.querySelector('.options-link');" |
| 25 " button.click();" | 24 " button.click();" |
| 26 "})();"; | 25 "})();"; |
| 27 | 26 |
| 28 // Test that an extension with an options page makes an 'Options' button appear | 27 // Test that an extension with an options page makes an 'Options' button appear |
| 29 // on chrome://extensions, and that clicking the button opens a new tab with the | 28 // on chrome://extensions, and that clicking the button opens a new tab with the |
| 30 // extension's options page. | 29 // extension's options page. |
| 31 // Disabled because of flakiness. See http://crbug.com/174934. | 30 // Disabled because of flakiness. See http://crbug.com/174934. |
| 32 IN_PROC_BROWSER_TEST_F(ExtensionBrowserTest, DISABLED_OptionsPage) { | 31 IN_PROC_BROWSER_TEST_F(ExtensionBrowserTest, DISABLED_OptionsPage) { |
| 33 ExtensionService* service = | 32 ExtensionRegistry* registry = ExtensionRegistry::Get(browser()->profile()); |
| 34 ExtensionSystem::Get(browser()->profile())->extension_service(); | 33 size_t installed_extensions = registry->enabled_extensions().size(); |
| 35 size_t installed_extensions = service->extensions()->size(); | |
| 36 // Install an extension with an options page. | 34 // Install an extension with an options page. |
| 37 const Extension* extension = | 35 const Extension* extension = |
| 38 InstallExtension(test_data_dir_.AppendASCII("options.crx"), 1); | 36 InstallExtension(test_data_dir_.AppendASCII("options.crx"), 1); |
| 39 ASSERT_TRUE(extension); | 37 ASSERT_TRUE(extension); |
| 40 EXPECT_EQ(installed_extensions + 1, service->extensions()->size()); | 38 EXPECT_EQ(installed_extensions + 1, registry->enabled_extensions().size()); |
| 41 | 39 |
| 42 // Go to the Extension Settings page and click the Options button. | 40 // Go to the Extension Settings page and click the Options button. |
| 43 ui_test_utils::NavigateToURL(browser(), GURL(chrome::kChromeUIExtensionsURL)); | 41 ui_test_utils::NavigateToURL(browser(), GURL(chrome::kChromeUIExtensionsURL)); |
| 44 TabStripModel* tab_strip = browser()->tab_strip_model(); | 42 TabStripModel* tab_strip = browser()->tab_strip_model(); |
| 45 ui_test_utils::WindowedTabAddedNotificationObserver observer( | 43 ui_test_utils::WindowedTabAddedNotificationObserver observer( |
| 46 content::NotificationService::AllSources()); | 44 content::NotificationService::AllSources()); |
| 47 // NOTE: Currently the above script needs to execute in an iframe. The | 45 // NOTE: Currently the above script needs to execute in an iframe. The |
| 48 // selector for that iframe may break if the layout of the extensions | 46 // selector for that iframe may break if the layout of the extensions |
| 49 // page changes. | 47 // page changes. |
| 50 content::RenderFrameHost* frame = content::FrameMatchingPredicate( | 48 content::RenderFrameHost* frame = content::FrameMatchingPredicate( |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 85 scoped_refptr<const Extension> extension = | 83 scoped_refptr<const Extension> extension = |
| 86 InstallExtension(extension_dir.Pack(), 1); | 84 InstallExtension(extension_dir.Pack(), 1); |
| 87 ASSERT_TRUE(extension.get()); | 85 ASSERT_TRUE(extension.get()); |
| 88 ui_test_utils::NavigateToURL( | 86 ui_test_utils::NavigateToURL( |
| 89 browser(), GURL("chrome://extensions?options=" + extension->id())); | 87 browser(), GURL("chrome://extensions?options=" + extension->id())); |
| 90 ASSERT_TRUE(listener.WaitUntilSatisfied()); | 88 ASSERT_TRUE(listener.WaitUntilSatisfied()); |
| 91 ASSERT_EQ("embedded", listener.message()); | 89 ASSERT_EQ("embedded", listener.message()); |
| 92 } | 90 } |
| 93 | 91 |
| 94 } // namespace extensions | 92 } // namespace extensions |
| OLD | NEW |