Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "chrome/browser/ui/browser_navigator.h" | 5 #include "chrome/browser/ui/browser_navigator.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 | 8 |
| 9 #include "base/command_line.h" | 9 #include "base/command_line.h" |
| 10 #include "base/stringprintf.h" | 10 #include "base/stringprintf.h" |
| (...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 64 const url_canon::Replacements<char>& replacements) { | 64 const url_canon::Replacements<char>& replacements) { |
| 65 if (url == other) | 65 if (url == other) |
| 66 return true; | 66 return true; |
| 67 | 67 |
| 68 GURL url_replaced = url.ReplaceComponents(replacements); | 68 GURL url_replaced = url.ReplaceComponents(replacements); |
| 69 GURL other_replaced = other.ReplaceComponents(replacements); | 69 GURL other_replaced = other.ReplaceComponents(replacements); |
| 70 return url_replaced == other_replaced; | 70 return url_replaced == other_replaced; |
| 71 } | 71 } |
| 72 | 72 |
| 73 // Change some of the navigation parameters based on the particular URL. | 73 // Change some of the navigation parameters based on the particular URL. |
| 74 // Currently this applies to chrome://settings, the bookmark manager, | 74 // Currently this applies to some chrome:// pages which we always want to open |
| 75 // and chrome://extensions, which we always want to open in a normal | 75 // in a normal (not incognito) window. Guest session is an exception. |
|
James Hawkins
2011/11/17 02:23:53
s/normal (non incognito)/non-incognito/
James Hawkins
2011/11/17 02:23:53
While you're here, can you clarify the guest sessi
binji
2011/11/17 21:02:09
Done.
binji
2011/11/17 21:02:09
Done.
| |
| 76 // (not incognito) window. Guest session is an exception. | |
| 77 // chrome://extensions is on the list because it redirects to | 76 // chrome://extensions is on the list because it redirects to |
| 78 // chrome://settings. | 77 // chrome://settings. |
| 79 // Returns true on success. Otherwise, if changing params leads the browser into | 78 // Returns true on success. Otherwise, if changing params leads the browser into |
| 80 // an erroneous state, returns false. | 79 // an erroneous state, returns false. |
| 81 bool AdjustNavigateParamsForURL(browser::NavigateParams* params) { | 80 bool AdjustNavigateParamsForURL(browser::NavigateParams* params) { |
| 82 if (!params->target_contents && | 81 if (params->target_contents != NULL || |
|
binji
2011/11/17 01:23:51
I think it is clearer to early out here.
James Hawkins
2011/11/17 02:23:53
Always and forever.
| |
| 83 browser::IsURLAllowedInIncognito(params->url)) { | 82 browser::IsURLAllowedInIncognito(params->url)) |
| 84 Profile* profile = | 83 return true; |
| 85 params->browser ? params->browser->profile() : params->profile; | |
| 86 | 84 |
| 87 if ((profile->IsOffTheRecord() && !Profile::IsGuestSession()) || | 85 Profile* profile = |
| 88 params->disposition == OFF_THE_RECORD) { | 86 params->browser ? params->browser->profile() : params->profile; |
| 89 profile = profile->GetOriginalProfile(); | |
| 90 | 87 |
| 91 // If incognito is forced, we punt. | 88 if ((profile->IsOffTheRecord() && !Profile::IsGuestSession()) || |
| 92 PrefService* prefs = profile->GetPrefs(); | 89 params->disposition == OFF_THE_RECORD) { |
| 93 if (prefs && IncognitoModePrefs::GetAvailability(prefs) == | 90 profile = profile->GetOriginalProfile(); |
| 94 IncognitoModePrefs::FORCED) { | |
| 95 return false; | |
| 96 } | |
| 97 | 91 |
| 98 params->disposition = SINGLETON_TAB; | 92 // If incognito is forced, we punt. |
| 99 params->profile = profile; | 93 PrefService* prefs = profile->GetPrefs(); |
| 100 params->browser = Browser::GetOrCreateTabbedBrowser(profile); | 94 if (prefs && IncognitoModePrefs::GetAvailability(prefs) == |
| 101 params->window_action = browser::NavigateParams::SHOW_WINDOW; | 95 IncognitoModePrefs::FORCED) { |
| 96 return false; | |
| 102 } | 97 } |
| 98 | |
| 99 params->disposition = SINGLETON_TAB; | |
| 100 params->profile = profile; | |
| 101 params->browser = Browser::GetOrCreateTabbedBrowser(profile); | |
| 102 params->window_action = browser::NavigateParams::SHOW_WINDOW; | |
| 103 } | 103 } |
| 104 | |
| 104 return true; | 105 return true; |
| 105 } | 106 } |
| 106 | 107 |
| 107 // Returns a Browser that can host the navigation or tab addition specified in | 108 // Returns a Browser that can host the navigation or tab addition specified in |
| 108 // |params|. This might just return the same Browser specified in |params|, or | 109 // |params|. This might just return the same Browser specified in |params|, or |
| 109 // some other if that Browser is deemed incompatible. | 110 // some other if that Browser is deemed incompatible. |
| 110 Browser* GetBrowserForDisposition(browser::NavigateParams* params) { | 111 Browser* GetBrowserForDisposition(browser::NavigateParams* params) { |
| 111 // If no source TabContents was specified, we use the selected one from the | 112 // If no source TabContents was specified, we use the selected one from the |
| 112 // target browser. This must happen first, before GetBrowserForDisposition() | 113 // target browser. This must happen first, before GetBrowserForDisposition() |
| 113 // has a chance to replace |params->browser| with another one. | 114 // has a chance to replace |params->browser| with another one. |
| (...skipping 511 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 625 rewritten_url, replacements)) { | 626 rewritten_url, replacements)) { |
| 626 params->target_contents = tab; | 627 params->target_contents = tab; |
| 627 return tab_index; | 628 return tab_index; |
| 628 } | 629 } |
| 629 } | 630 } |
| 630 | 631 |
| 631 return -1; | 632 return -1; |
| 632 } | 633 } |
| 633 | 634 |
| 634 bool IsURLAllowedInIncognito(const GURL& url) { | 635 bool IsURLAllowedInIncognito(const GURL& url) { |
| 635 return url.scheme() == chrome::kChromeUIScheme && | 636 // Most URLs are allowed in incognito; the following are exceptions. |
| 637 return !(url.scheme() == chrome::kChromeUIScheme && | |
|
binji
2011/11/17 01:23:51
Reversed the logic here because the name was incon
James Hawkins
2011/11/17 02:23:53
Don't you need to reverse the call sites too?
binji
2011/11/17 21:02:09
Good catch.
| |
| 636 (url.host() == chrome::kChromeUISettingsHost || | 638 (url.host() == chrome::kChromeUISettingsHost || |
| 637 url.host() == chrome::kChromeUIExtensionsHost || | 639 url.host() == chrome::kChromeUIExtensionsHost || |
| 638 url.host() == chrome::kChromeUIBookmarksHost); | 640 url.host() == chrome::kChromeUIBookmarksHost || |
| 641 url.host() == chrome::kChromeUISyncPromoHost)); | |
| 639 } | 642 } |
| 640 | 643 |
| 641 } // namespace browser | 644 } // namespace browser |
| OLD | NEW |