Index: chrome/browser/browser_process_impl.cc |
diff --git a/chrome/browser/browser_process_impl.cc b/chrome/browser/browser_process_impl.cc |
index 5a3a0ef22b53472303dafd54762e3a15e195a5bb..0623619f4748eb7515a28e2c423167bc5bcdd488 100644 |
--- a/chrome/browser/browser_process_impl.cc |
+++ b/chrome/browser/browser_process_impl.cc |
@@ -682,8 +682,7 @@ void BrowserProcessImpl::Observe(int type, |
if (type == chrome::NOTIFICATION_PREF_CHANGED) { |
std::string* pref = content::Details<std::string>(details).ptr(); |
if (*pref == prefs::kDefaultBrowserSettingEnabled) { |
- if (local_state_->GetBoolean(prefs::kDefaultBrowserSettingEnabled)) |
- ShellIntegration::SetAsDefaultBrowser(); |
+ ApplyDefaultBrowserPolicy(); |
} else if (*pref == prefs::kDisabledSchemes) { |
ApplyDisabledSchemesPolicy(); |
} else if (*pref == prefs::kAllowCrossOriginAuthPrompt) { |
@@ -940,8 +939,7 @@ void BrowserProcessImpl::CreateLocalState() { |
local_state_->RegisterBooleanPref(prefs::kDefaultBrowserSettingEnabled, |
false); |
if (local_state_->IsManagedPreference(prefs::kDefaultBrowserSettingEnabled)) { |
- if (local_state_->GetBoolean(prefs::kDefaultBrowserSettingEnabled)) |
- ShellIntegration::SetAsDefaultBrowser(); |
+ ApplyDefaultBrowserPolicy(); |
} |
pref_change_registrar_.Add(prefs::kDefaultBrowserSettingEnabled, this); |
@@ -1059,6 +1057,14 @@ void BrowserProcessImpl::ApplyDisabledSchemesPolicy() { |
ChildProcessSecurityPolicy::GetInstance()->RegisterDisabledSchemes(schemes); |
} |
+void BrowserProcessImpl::ApplyDefaultBrowserPolicy() { |
+ if (local_state_->GetBoolean(prefs::kDefaultBrowserSettingEnabled)) { |
+ scoped_refptr<ShellIntegration::DefaultWebClientWorker> |
+ set_browser_worker = new ShellIntegration::DefaultBrowserWorker(NULL); |
+ set_browser_worker->StartSetAsDefault(); |
+ } |
+} |
+ |
void BrowserProcessImpl::ApplyAllowCrossOriginAuthPromptPolicy() { |
bool value = local_state()->GetBoolean(prefs::kAllowCrossOriginAuthPrompt); |
resource_dispatcher_host()->set_allow_cross_origin_auth_prompt(value); |