Chromium Code Reviews| Index: chrome/browser/ui/startup/startup_browser_creator.cc |
| diff --git a/chrome/browser/ui/startup/startup_browser_creator.cc b/chrome/browser/ui/startup/startup_browser_creator.cc |
| index c5bce5454100fbf3e3056f8bd17d69b938804cb3..214a982d2f953c60bdca0ff2b58579cc5bf82faf 100644 |
| --- a/chrome/browser/ui/startup/startup_browser_creator.cc |
| +++ b/chrome/browser/ui/startup/startup_browser_creator.cc |
| @@ -30,6 +30,7 @@ |
| #include "base/strings/string_split.h" |
| #include "base/strings/string_tokenizer.h" |
| #include "base/strings/string_util.h" |
| +#include "base/strings/stringprintf.h" |
|
Dan Beam
2016/09/16 19:48:29
not needed any more
alito
2016/09/16 20:16:15
Done.
|
| #include "base/strings/utf_string_conversions.h" |
| #include "base/threading/thread_restrictions.h" |
| #include "base/trace_event/trace_event.h" |
| @@ -521,22 +522,32 @@ std::vector<GURL> StartupBrowserCreator::GetURLsFromCommandLine( |
| if (!url.is_valid()) |
| continue; |
| + const GURL settings_url = GURL(chrome::kChromeUISettingsURL); |
| + bool url_points_to_an_approved_settings_page = false; |
| +#if defined(OS_CHROMEOS) |
| + // In ChromeOS, allow any settings page to be specified on the command |
| + // line. See ExistingUserController::OnLoginSuccess. |
| + url_points_to_an_approved_settings_page = |
| + url.GetOrigin() == settings_url.GetOrigin(); |
|
Dan Beam
2016/09/16 19:48:29
this also looks much better! yay!
alito
2016/09/16 20:16:16
Always a good feeling.
|
| +#else |
| + // Exposed for external cleaners to offer a settings reset to the |
| + // user. The allowed URLs must match exactly. |
| + const GURL reset_settings_url = |
| + settings_url.Resolve(chrome::kResetProfileSettingsSubPage); |
| + url_points_to_an_approved_settings_page = url == reset_settings_url; |
| +#if defined(OS_WIN) |
| + // On Windows, also allow a hash for the Chrome Cleanup Tool. |
| + url_points_to_an_approved_settings_page = |
| + url_points_to_an_approved_settings_page || |
| + url == reset_settings_url.Resolve("#cct"); |
| +#endif // defined(OS_WIN) |
| +#endif // defined(OS_CHROMEOS) |
| + |
| ChildProcessSecurityPolicy* policy = |
| ChildProcessSecurityPolicy::GetInstance(); |
| if (policy->IsWebSafeScheme(url.scheme()) || |
| url.SchemeIs(url::kFileScheme) || |
| -#if defined(OS_CHROMEOS) |
| - // In ChromeOS, allow any settings page to be specified on the command |
| - // line. See ExistingUserController::OnLoginSuccess. |
| - base::StartsWith(url.spec(), chrome::kChromeUISettingsURL, |
| - base::CompareCase::SENSITIVE) || |
| -#else |
| - // Exposed for external cleaners to offer a settings reset to the |
| - // user. So the URL must match exactly, without any param or prefix. |
| - (url.spec() == |
| - std::string(chrome::kChromeUISettingsURL) + |
| - chrome::kResetProfileSettingsSubPage) || |
| -#endif |
| + url_points_to_an_approved_settings_page || |
| (url.spec().compare(url::kAboutBlankURL) == 0)) { |
| urls.push_back(url); |
| } |