diff options
author | ncj674@motorola.com <ncj674@motorola.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-10-14 15:48:19 +0000 |
---|---|---|
committer | ncj674@motorola.com <ncj674@motorola.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-10-14 15:48:19 +0000 |
commit | 130b48e0cbad58bbe59b87c79fbdfe9ca6b57a31 (patch) | |
tree | 2794f6b5bd46c4cff980ecae501c33f9f2b7655b | |
parent | 94ae845f3e78716a8d90c652f1139ad677718d7a (diff) | |
download | chromium_src-130b48e0cbad58bbe59b87c79fbdfe9ca6b57a31.zip chromium_src-130b48e0cbad58bbe59b87c79fbdfe9ca6b57a31.tar.gz chromium_src-130b48e0cbad58bbe59b87c79fbdfe9ca6b57a31.tar.bz2 |
Do not create incognito window based on the particular URL.
BUG=98534
TEST=1.Open bookmark manager and bookmark it.
2.Bookmark manager is shown in the bookmarks list.
3.Right click on the bookmark manager entry and try to open it in incognito window.
It should not open bookmark manager in incognito window.
Review URL: http://codereview.chromium.org/8077006
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@105500 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r-- | chrome/browser/extensions/extension_tabs_module.cc | 12 | ||||
-rw-r--r-- | chrome/browser/ui/browser_navigator.cc | 12 | ||||
-rw-r--r-- | chrome/browser/ui/browser_navigator.h | 5 |
3 files changed, 24 insertions, 5 deletions
diff --git a/chrome/browser/extensions/extension_tabs_module.cc b/chrome/browser/extensions/extension_tabs_module.cc index f51f064..c460cc9 100644 --- a/chrome/browser/extensions/extension_tabs_module.cc +++ b/chrome/browser/extensions/extension_tabs_module.cc @@ -395,8 +395,18 @@ bool CreateWindowFunction::RunImpl() { return false; } - if (incognito) + if (incognito) { + // Guest session is an exception as it always opens in incognito mode. + for (size_t i = 0; i < urls.size();) { + if (browser::IsURLAllowedInIncognito(urls[i]) && + !Profile::IsGuestSession()) { + urls.erase(urls.begin() + i); + } else { + i++; + } + } window_profile = window_profile->GetOffTheRecordProfile(); + } } if (args->HasKey(keys::kFocusedKey)) { diff --git a/chrome/browser/ui/browser_navigator.cc b/chrome/browser/ui/browser_navigator.cc index c8503b2..f6bb093 100644 --- a/chrome/browser/ui/browser_navigator.cc +++ b/chrome/browser/ui/browser_navigator.cc @@ -76,10 +76,7 @@ bool CompareURLsWithReplacements( // chrome://settings. void AdjustNavigateParamsForURL(browser::NavigateParams* params) { if (!params->target_contents && - params->url.scheme() == chrome::kChromeUIScheme && - (params->url.host() == chrome::kChromeUISettingsHost || - params->url.host() == chrome::kChromeUIExtensionsHost || - params->url.host() == chrome::kChromeUIBookmarksHost)) { + browser::IsURLAllowedInIncognito(params->url)) { Profile* profile = params->browser ? params->browser->profile() : params->profile; @@ -618,4 +615,11 @@ int GetIndexOfSingletonTab(browser::NavigateParams* params) { return -1; } +bool IsURLAllowedInIncognito(const GURL& url) { + return url.scheme() == chrome::kChromeUIScheme && + (url.host() == chrome::kChromeUISettingsHost || + url.host() == chrome::kChromeUIExtensionsHost || + url.host() == chrome::kChromeUIBookmarksHost); +} + } // namespace browser diff --git a/chrome/browser/ui/browser_navigator.h b/chrome/browser/ui/browser_navigator.h index 02ee48a..5124c97 100644 --- a/chrome/browser/ui/browser_navigator.h +++ b/chrome/browser/ui/browser_navigator.h @@ -191,6 +191,11 @@ void Navigate(NavigateParams* params); // Otherwise, returns -1. int GetIndexOfSingletonTab(NavigateParams* params); +// Returns true if the url is not allowed to open in incognito window. +// Currently, chrome://settings, the bookmark manager, and chrome://extensions +// are part this list. +bool IsURLAllowedInIncognito(const GURL& url); + } // namespace browser #endif // CHROME_BROWSER_UI_BROWSER_NAVIGATOR_H_ |