Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(72)

Unified Diff: chrome/browser/extensions/browser_action_apitest.cc

Issue 567037: Initial work on making extensions work in incognito mode. (Closed)
Patch Set: added experimental requirement Created 10 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/extensions/browser_action_apitest.cc
diff --git a/chrome/browser/extensions/browser_action_apitest.cc b/chrome/browser/extensions/browser_action_apitest.cc
index eafa6551e36ab807a550ea8c9534ee425cceb8df..f6f01c392dff0043ccb3e471a9ce91b210e4fe9d 100644
--- a/chrome/browser/extensions/browser_action_apitest.cc
+++ b/chrome/browser/extensions/browser_action_apitest.cc
@@ -19,7 +19,9 @@
#include "chrome/browser/extensions/extensions_service.h"
#include "chrome/browser/profile.h"
#include "chrome/browser/tab_contents/tab_contents.h"
+#include "chrome/common/chrome_switches.h"
#include "chrome/common/extensions/extension_action.h"
+#include "chrome/common/url_constants.h"
#include "chrome/test/ui_test_utils.h"
static const int kTimeoutMs = 60 * 1000; // 1 minute
@@ -261,3 +263,109 @@ IN_PROC_BROWSER_TEST_F(BrowserActionApiTest, BrowserActionRemovePopup) {
<< "Browser action popup default should not be changed by setting "
<< "a specific tab id.";
}
+
+IN_PROC_BROWSER_TEST_F(BrowserActionApiTest, IncognitoBasic) {
+ CommandLine::ForCurrentProcess()->AppendSwitch(
+ switches::kEnableExperimentalExtensionApis);
+
+ StartHTTPServer();
+
+ ASSERT_TRUE(RunExtensionTest("browser_action/basics")) << message_;
+ Extension* extension = GetSingleLoadedExtension();
+ ASSERT_TRUE(extension) << message_;
+
+ // Test that there is a browser action in the toolbar.
+ ASSERT_EQ(1, GetBrowserActionsBar().NumberOfBrowserActions());
+
+ // Open an incognito window and test that the browser action isn't there by
+ // default.
+ Profile* incognito_profile = browser()->profile()->GetOffTheRecordProfile();
+ Browser* incognito_browser = Browser::Create(incognito_profile);
+
+ ASSERT_EQ(0,
+ BrowserActionTestUtil(incognito_browser).NumberOfBrowserActions());
+
+ // Now enable the extension in incognito mode, and test that the browser
+ // action shows up. Note that we don't update the existing window at the
+ // moment, so we just create a new one.
+ browser()->profile()->GetExtensionsService()->extension_prefs()->
+ SetIsIncognitoEnabled(extension->id(), true);
+
+ incognito_browser->CloseWindow();
+ incognito_browser = Browser::Create(incognito_profile);
+ ASSERT_EQ(1,
+ BrowserActionTestUtil(incognito_browser).NumberOfBrowserActions());
+
+ // TODO(mpcomplete): simulate a click and have it do the right thing in
+ // incognito.
+}
+
+IN_PROC_BROWSER_TEST_F(BrowserActionApiTest, IncognitoDragging) {
+ ExtensionsService* service = browser()->profile()->GetExtensionsService();
+
+ CommandLine::ForCurrentProcess()->AppendSwitch(
+ switches::kEnableExperimentalExtensionApis);
+
+ // The tooltips for each respective browser action.
+ const char kTooltipA[] = "Make this page red";
+ const char kTooltipB[] = "grow";
+ const char kTooltipC[] = "Test setPopup()";
+ ASSERT_TRUE(LoadExtension(test_data_dir_.AppendASCII(
+ "browser_action/basics")));
+ ASSERT_TRUE(LoadExtension(test_data_dir_.AppendASCII(
+ "browser_action/popup")));
+ ASSERT_TRUE(LoadExtension(test_data_dir_.AppendASCII(
+ "browser_action/add_popup")));
+
+ // Test that there are 3 browser actions in the toolbar.
+ ASSERT_EQ(3u, service->extensions()->size());
+ ASSERT_EQ(3, GetBrowserActionsBar().NumberOfBrowserActions());
+
+ // Now enable 2 of the extensions in incognito mode, and test that the browser
+ // actions show up.
+ service->extension_prefs()->SetIsIncognitoEnabled(
+ service->extensions()->at(0)->id(), true);
+ service->extension_prefs()->SetIsIncognitoEnabled(
+ service->extensions()->at(2)->id(), true);
+
+ Profile* incognito_profile = browser()->profile()->GetOffTheRecordProfile();
+ Browser* incognito_browser = Browser::Create(incognito_profile);
+ BrowserActionTestUtil incognito_bar(incognito_browser);
+
+ // Navigate just to have a tab in this window, otherwise wonky things happen.
+ ui_test_utils::OpenURLOffTheRecord(browser()->profile(),
+ GURL(chrome::kChromeUIExtensionsURL));
+
+ ASSERT_EQ(2, incognito_bar.NumberOfBrowserActions());
+
+ // Ensure that the browser actions are in the right order (ABC).
+ EXPECT_EQ(kTooltipA, GetBrowserActionsBar().GetTooltip(0));
+ EXPECT_EQ(kTooltipB, GetBrowserActionsBar().GetTooltip(1));
+ EXPECT_EQ(kTooltipC, GetBrowserActionsBar().GetTooltip(2));
+
+ EXPECT_EQ(kTooltipA, incognito_bar.GetTooltip(0));
+ EXPECT_EQ(kTooltipC, incognito_bar.GetTooltip(1));
+
+ // Now rearrange them and ensure that they are rearranged correctly in both
+ // regular and incognito mode.
+
+ // ABC -> CAB
+ service->toolbar_model()->MoveBrowserAction(service->extensions()->at(2), 0);
+
+ EXPECT_EQ(kTooltipC, GetBrowserActionsBar().GetTooltip(0));
+ EXPECT_EQ(kTooltipA, GetBrowserActionsBar().GetTooltip(1));
+ EXPECT_EQ(kTooltipB, GetBrowserActionsBar().GetTooltip(2));
+
+ EXPECT_EQ(kTooltipC, incognito_bar.GetTooltip(0));
+ EXPECT_EQ(kTooltipA, incognito_bar.GetTooltip(1));
+
+ // CAB -> CBA
+ service->toolbar_model()->MoveBrowserAction(service->extensions()->at(1), 1);
+
+ EXPECT_EQ(kTooltipC, GetBrowserActionsBar().GetTooltip(0));
+ EXPECT_EQ(kTooltipB, GetBrowserActionsBar().GetTooltip(1));
+ EXPECT_EQ(kTooltipA, GetBrowserActionsBar().GetTooltip(2));
+
+ EXPECT_EQ(kTooltipC, incognito_bar.GetTooltip(0));
+ EXPECT_EQ(kTooltipA, incognito_bar.GetTooltip(1));
+}

Powered by Google App Engine
This is Rietveld 408576698