Index: chrome/browser/extensions/extension_tabs_test.cc |
diff --git a/chrome/browser/extensions/extension_tabs_test.cc b/chrome/browser/extensions/extension_tabs_test.cc |
index 3428abce0d1f2624fa45c286173fe6b1e8e7bb16..c9aad4bad4d35b82de8640c52282e2bec5e6fc13 100644 |
--- a/chrome/browser/extensions/extension_tabs_test.cc |
+++ b/chrome/browser/extensions/extension_tabs_test.cc |
@@ -12,8 +12,10 @@ |
#include "base/string_util.h" |
#include "base/values.h" |
#include "chrome/browser/extensions/extension_function_test_utils.h" |
-#include "chrome/browser/extensions/extension_tab_util.h" |
#include "chrome/browser/extensions/extension_tabs_module_constants.h" |
+#include "chrome/browser/extensions/extension_tab_util.h" |
+#include "chrome/browser/prefs/incognito_mode_prefs.h" |
+#include "chrome/browser/profiles/profile.h" |
#include "chrome/browser/ui/browser.h" |
#include "chrome/browser/ui/browser_window.h" |
#include "chrome/test/base/in_process_browser_test.h" |
@@ -126,3 +128,73 @@ IN_PROC_BROWSER_TEST_F(ExtensionTabsTest, UpdateNoPermissions) { |
browser())); |
EXPECT_EQ(base::Value::TYPE_NULL, result->GetType()); |
} |
+ |
+IN_PROC_BROWSER_TEST_F(ExtensionTabsTest, |
+ DontCreateNormalWindowWhenIncognitoForced) { |
+ static const char kArgsWithoutExplicitIncognitoParam[] = |
+ "[{\"url\": \"about:blank\"}]"; |
+ static const char kArgsWithExplicitIncognitoParam[] = |
+ "[{\"url\": \"about:blank\", \"incognito\": false }]"; |
+ // Force Incognito mode. |
+ IncognitoModePrefs::SetAvailability(browser()->profile()->GetPrefs(), |
+ IncognitoModePrefs::FORCED); |
+ // Run without an explicit "incognito" param. |
+ EXPECT_TRUE(MatchPattern( |
+ RunFunctionAndReturnError( |
+ new CreateWindowFunction(), |
+ kArgsWithoutExplicitIncognitoParam, |
Aaron Boodman
2011/10/25 08:35:09
In this case, shouldn't we default to incognito? S
rustema
2011/10/26 07:13:41
Makes sense. Done.
|
+ browser()), |
+ extension_tabs_module_constants::kIncognitoModeIsForced)); |
+ |
+ // Run with an explicit "incognito" param. |
+ EXPECT_TRUE(MatchPattern( |
+ RunFunctionAndReturnError( |
+ new CreateWindowFunction(), |
+ kArgsWithExplicitIncognitoParam, |
+ browser()), |
+ extension_tabs_module_constants::kIncognitoModeIsForced)); |
+ |
+ // Now try opening a normal window from incognito window. |
+ Browser* incognito_browser = CreateIncognitoBrowser(); |
+ // Run without an explicit "incognito" param. |
+ EXPECT_TRUE(MatchPattern( |
+ RunFunctionAndReturnError( |
+ new CreateWindowFunction(), |
+ kArgsWithoutExplicitIncognitoParam, |
+ incognito_browser), |
+ extension_tabs_module_constants::kIncognitoModeIsForced)); |
+ |
+ // Run with an explicit "incognito" param. |
+ EXPECT_TRUE(MatchPattern( |
+ RunFunctionAndReturnError( |
+ new CreateWindowFunction(), |
+ kArgsWithExplicitIncognitoParam, |
+ incognito_browser), |
+ extension_tabs_module_constants::kIncognitoModeIsForced)); |
+} |
+ |
+IN_PROC_BROWSER_TEST_F(ExtensionTabsTest, |
+ DontCreateIncognitoWindowWhenIncognitoDisabled) { |
+ static const char kArgs[] = |
+ "[{\"url\": \"about:blank\", \"incognito\": true }]"; |
+ |
+ Browser* incognito_browser = CreateIncognitoBrowser(); |
+ // Disable Incognito mode. |
+ IncognitoModePrefs::SetAvailability(browser()->profile()->GetPrefs(), |
+ IncognitoModePrefs::DISABLED); |
+ // Run in normal window. |
+ EXPECT_TRUE(MatchPattern( |
+ RunFunctionAndReturnError( |
+ new CreateWindowFunction(), |
+ kArgs, |
+ browser()), |
+ extension_tabs_module_constants::kIncognitoModeIsDisabled)); |
+ |
+ // Run in incognito window. |
+ EXPECT_TRUE(MatchPattern( |
+ RunFunctionAndReturnError( |
+ new CreateWindowFunction(), |
+ kArgs, |
+ incognito_browser), |
+ extension_tabs_module_constants::kIncognitoModeIsDisabled)); |
+} |