Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(5182)

Unified Diff: chrome/browser/ui/startup/startup_browser_creator.cc

Issue 1349163008: Setting chrome as the default browser is now fixed on Windows 10 (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: asvitkine comments #1 Created 5 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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);

Powered by Google App Engine
This is Rietveld 408576698