Index: chrome/browser/extensions/extension_browsertests_misc.cc |
=================================================================== |
--- chrome/browser/extensions/extension_browsertests_misc.cc (revision 29288) |
+++ chrome/browser/extensions/extension_browsertests_misc.cc (working copy) |
@@ -788,3 +788,41 @@ |
ASSERT_EQ("2.0", extensions->at(0)->VersionString()); |
} |
+// Used to simulate a click on the first button named 'Options'. |
+static const wchar_t* jscript_click_option_button = |
+ L"(function() { " |
+ L" var button = document.evaluate(\"//button[text()='Options']\"," |
+ L" document, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE," |
+ L" null).snapshotItem(0);" |
+ L" button.click();" |
+ L" window.domAutomationController.send(0);" |
+ L"})();"; |
+ |
+// Test that an extension with an options page makes an 'Options' button appear |
+// on chrome://extensions, and that clicking the button opens a new tab with the |
+// extension's options page. |
+IN_PROC_BROWSER_TEST_F(ExtensionBrowserTest, OptionsPage) { |
+ // Install an extension with an options page. |
+ ASSERT_TRUE(InstallExtension(test_data_dir_.AppendASCII("options.crx"), 1)); |
+ ExtensionsService* service = browser()->profile()->GetExtensionsService(); |
+ const ExtensionList* extensions = service->extensions(); |
+ ASSERT_EQ(1u, extensions->size()); |
+ Extension* extension = extensions->at(0); |
+ |
+ // Go to the chrome://extensions page and click the Options button. |
+ ui_test_utils::NavigateToURL(browser(), GURL(chrome::kChromeUIExtensionsURL)); |
+ TabStripModel* tab_strip = browser()->tabstrip_model(); |
+ TabContents* extensions_tab = browser()->GetSelectedTabContents(); |
+ ui_test_utils::ExecuteJavaScript(extensions_tab->render_view_host(), L"", |
+ jscript_click_option_button); |
+ |
+ // If the options page hasn't already come up, wait for it. |
+ if (tab_strip->count() == 1) { |
+ ui_test_utils::WaitForNewTab(browser()); |
+ } |
+ ASSERT_EQ(2, tab_strip->count()); |
+ |
+ EXPECT_EQ(extension->GetResourceURL("options.html"), |
+ tab_strip->GetTabContentsAt(1)->GetURL()); |
+} |
+ |