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 f7fac34905f789c96ce28d0107dca525986da7ce..c220c4dfbe10c6b05626e882bee65a9ce7e2d8d8 100644 |
| --- a/chrome/browser/ui/startup/startup_browser_creator.cc |
| +++ b/chrome/browser/ui/startup/startup_browser_creator.cc |
| @@ -446,6 +446,43 @@ void StartupBrowserCreator::RegisterLocalStatePrefs( |
| } |
| // static |
| +bool StartupBrowserCreator::HasUrlFilters() { |
| + return !GetUrlFilters()->empty(); |
| +} |
| + |
| +// static |
| +bool StartupBrowserCreator::ExecuteFilterCallback(const GURL& url) { |
| + UrlFilters* filters = GetUrlFilters(); |
| + auto it = filters->find(url); |
| + if (it != filters->end()) { |
|
grt (UTC plus 2)
2015/09/22 18:21:47
nit to reduce braces:
if (it == filters->end())
|
| + it->second.Run(); |
| + return true; |
| + } |
| + return false; |
| +} |
| + |
| +// static |
| +bool StartupBrowserCreator::UrlFilterExists(const GURL& url) { |
| + UrlFilters* filters = GetUrlFilters(); |
| + return filters->find(url) != filters->end(); |
| +} |
| + |
| +// static |
| +void StartupBrowserCreator::AddUrlFilter( |
| + const GURL& url, |
| + const base::Callback<void(void)>& callback) { |
| + GetUrlFilters()->insert({url, callback}); |
|
grt (UTC plus 2)
2015/09/22 18:21:47
how about:
(*GetUrlFilters())[url] = callback;
|
| +} |
| + |
| +// static |
| +void StartupBrowserCreator::RemoveUrlFilter(const GURL& url) { |
| + DCHECK(UrlFilterExists(url)); |
| + |
| + UrlFilters* filters = GetUrlFilters(); |
| + filters->erase(filters->find(url)); |
|
grt (UTC plus 2)
2015/09/22 18:21:47
remove the DCHECK above and change this to:
size
|
| +} |
| + |
| +// static |
| std::vector<GURL> StartupBrowserCreator::GetURLsFromCommandLine( |
| const base::CommandLine& command_line, |
| const base::FilePath& cur_dir, |
| @@ -511,6 +548,7 @@ bool StartupBrowserCreator::ProcessCmdLineImpl( |
| Profile* last_used_profile, |
| const Profiles& last_opened_profiles, |
| StartupBrowserCreator* browser_creator) { |
| + DCHECK_CURRENTLY_ON(BrowserThread::UI); |
| TRACE_EVENT0("startup", "StartupBrowserCreator::ProcessCmdLineImpl"); |
| DCHECK(last_used_profile); |
| @@ -649,6 +687,15 @@ bool StartupBrowserCreator::ProcessCmdLineImpl( |
| return true; |
| } |
| + // Filters out specific urls. |
|
grt (UTC plus 2)
2015/09/22 18:21:47
nit: Filters -> Filter
|
| + if (HasUrlFilters()) { |
| + for (const auto& arg : command_line.GetArgs()) { |
| + GURL url(arg); |
| + if (url.is_valid() && browser_creator->ExecuteFilterCallback(url)) |
| + return true; |
| + } |
| + } |
| + |
| #if defined(OS_WIN) |
| // Log whether this process was a result of an action in the Windows Jumplist. |
| if (command_line.HasSwitch(switches::kWinJumplistAction)) { |
| @@ -827,6 +874,12 @@ bool StartupBrowserCreator::ActivatedProfile() { |
| return profile_launch_observer.Get().activated_profile(); |
| } |
| +// static |
| +StartupBrowserCreator::UrlFilters* StartupBrowserCreator::GetUrlFilters() { |
| + static UrlFilters* url_filters_ = new UrlFilters(); |
|
grt (UTC plus 2)
2015/09/22 18:21:47
in the vast majority of Chrome runs, there will ne
|
| + return url_filters_; |
| +} |
| + |
| bool HasPendingUncleanExit(Profile* profile) { |
| return profile->GetLastSessionExitType() == Profile::EXIT_CRASHED && |
| !profile_launch_observer.Get().HasBeenLaunched(profile); |