diff options
author | skerner@chromium.org <skerner@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-02-03 20:58:50 +0000 |
---|---|---|
committer | skerner@chromium.org <skerner@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-02-03 20:58:50 +0000 |
commit | 85ae959285a1ed1d423abd3d01cac5a71cd7b51f (patch) | |
tree | 69a19062ec994dd0524e355f2221aa968b360bd7 /chrome/browser/extensions/browser_action_apitest.cc | |
parent | c775e00efade22d264a07888b5c70a443552fd99 (diff) | |
download | chromium_src-85ae959285a1ed1d423abd3d01cac5a71cd7b51f.zip chromium_src-85ae959285a1ed1d423abd3d01cac5a71cd7b51f.tar.gz chromium_src-85ae959285a1ed1d423abd3d01cac5a71cd7b51f.tar.bz2 |
Implement chrome.browserAction.setPopup().
BUG=27526
TEST=Unit tests BrowserActionApiTest.BrowserAction*Popup .
Review URL: http://codereview.chromium.org/552263
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@38015 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/extensions/browser_action_apitest.cc')
-rw-r--r-- | chrome/browser/extensions/browser_action_apitest.cc | 89 |
1 files changed, 89 insertions, 0 deletions
diff --git a/chrome/browser/extensions/browser_action_apitest.cc b/chrome/browser/extensions/browser_action_apitest.cc index 10f5b01..eafa655 100644 --- a/chrome/browser/extensions/browser_action_apitest.cc +++ b/chrome/browser/extensions/browser_action_apitest.cc @@ -172,3 +172,92 @@ IN_PROC_BROWSER_TEST_F(BrowserActionApiTest, BrowserActionPopup) { EXPECT_EQ(maxSize, bounds.size()); EXPECT_TRUE(GetBrowserActionsBar().HidePopup()); } + +// Test that calling chrome.browserAction.setPopup() can enable and change +// a popup. +IN_PROC_BROWSER_TEST_F(BrowserActionApiTest, BrowserActionAddPopup) { + ASSERT_TRUE(RunExtensionTest("browser_action/add_popup")) << message_; + Extension* extension = GetSingleLoadedExtension(); + ASSERT_TRUE(extension) << message_; + + int tab_id = ExtensionTabUtil::GetTabId(browser()->GetSelectedTabContents()); + + ExtensionAction* browser_action = extension->browser_action(); + ASSERT_TRUE(browser_action) + << "Browser action test extension should have a browser action."; + + ASSERT_FALSE(browser_action->HasPopup(tab_id)); + ASSERT_FALSE(browser_action->HasPopup(ExtensionAction::kDefaultTabId)); + + // Simulate a click on the browser action icon. The onClicked handler + // will add a popup. + { + ResultCatcher catcher; + GetBrowserActionsBar().Press(0); + ASSERT_TRUE(catcher.GetNextResult()); + } + + // The call to setPopup in background.html set a tab id, so the + // current tab's setting should have changed, but the default setting + // should not have changed. + ASSERT_TRUE(browser_action->HasPopup(tab_id)) + << "Clicking on the browser action should have caused a popup to " + << "be added."; + ASSERT_FALSE(browser_action->HasPopup(ExtensionAction::kDefaultTabId)) + << "Clicking on the browser action should not have set a default " + << "popup."; + + ASSERT_STREQ("/a_popup.html", + browser_action->GetPopupUrl(tab_id).path().c_str()); + + // Now change the popup from a_popup.html to another_popup.html by loading + // a page which removes the popup using chrome.browserAction.setPopup(). + { + ResultCatcher catcher; + ui_test_utils::NavigateToURL( + browser(), + GURL(extension->GetResourceURL("change_popup.html"))); + ASSERT_TRUE(catcher.GetNextResult()); + } + + // The call to setPopup in change_popup.html did not use a tab id, + // so the default setting should have changed as well as the current tab. + ASSERT_TRUE(browser_action->HasPopup(tab_id)); + ASSERT_TRUE(browser_action->HasPopup(ExtensionAction::kDefaultTabId)); + ASSERT_STREQ("/another_popup.html", + browser_action->GetPopupUrl(tab_id).path().c_str()); +} + +// Test that calling chrome.browserAction.setPopup() can remove a popup. +IN_PROC_BROWSER_TEST_F(BrowserActionApiTest, BrowserActionRemovePopup) { + // Load the extension, which has a browser action with a default popup. + ASSERT_TRUE(RunExtensionTest("browser_action/remove_popup")) << message_; + Extension* extension = GetSingleLoadedExtension(); + ASSERT_TRUE(extension) << message_; + + int tab_id = ExtensionTabUtil::GetTabId(browser()->GetSelectedTabContents()); + + ExtensionAction* browser_action = extension->browser_action(); + ASSERT_TRUE(browser_action) + << "Browser action test extension should have a browser action."; + + ASSERT_TRUE(browser_action->HasPopup(tab_id)) + << "Expect a browser action popup before the test removes it."; + ASSERT_TRUE(browser_action->HasPopup(ExtensionAction::kDefaultTabId)) + << "Expect a browser action popup is the default for all tabs."; + + // Load a page which removes the popup using chrome.browserAction.setPopup(). + { + ResultCatcher catcher; + ui_test_utils::NavigateToURL( + browser(), + GURL(extension->GetResourceURL("remove_popup.html"))); + ASSERT_TRUE(catcher.GetNextResult()); + } + + ASSERT_FALSE(browser_action->HasPopup(tab_id)) + << "Browser action popup should have been removed."; + ASSERT_TRUE(browser_action->HasPopup(ExtensionAction::kDefaultTabId)) + << "Browser action popup default should not be changed by setting " + << "a specific tab id."; +} |