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..dd422bda3c6bd509806f71691405c771e1a7f940 100644 |
| --- a/chrome/browser/ui/startup/startup_browser_creator.cc |
| +++ b/chrome/browser/ui/startup/startup_browser_creator.cc |
| @@ -521,22 +521,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. |
|
sky
2016/09/16 21:53:05
There is no ExistingUserController::OnLoginSuccess
alito
2016/09/17 20:23:31
Well, it seems this comment was introduced in 2010
|
| + url_points_to_an_approved_settings_page = |
| + url.GetOrigin() == settings_url.GetOrigin(); |
| +#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"); |
|
sky
2016/09/16 21:53:05
Would it make sense to define this hash some where
alito
2016/09/17 20:23:31
It was a bit hard to find it a nice home. I've def
sky
2016/09/18 16:14:03
I wouldn't expect the has in a util file. Maybe Da
|
| +#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); |
| } |