Chromium Code Reviews| Index: chrome/browser/ui/webui/options/browser_options_handler.cc |
| diff --git a/chrome/browser/ui/webui/options/browser_options_handler.cc b/chrome/browser/ui/webui/options/browser_options_handler.cc |
| index 5b5816769e59c8d30deac58e4c3cede461955808..4a55e1e239046b7959aeba05f8766ce410b2be35 100644 |
| --- a/chrome/browser/ui/webui/options/browser_options_handler.cc |
| +++ b/chrome/browser/ui/webui/options/browser_options_handler.cc |
| @@ -143,6 +143,7 @@ BrowserOptionsHandler::~BrowserOptionsHandler() { |
| if (sync_service) |
| sync_service->RemoveObserver(this); |
| + profile_pref_registrar_.RemoveAll(); |
| if (default_browser_worker_.get()) |
| default_browser_worker_->ObserverDestroyed(); |
| if (template_url_service_) |
| @@ -580,6 +581,13 @@ void BrowserOptionsHandler::OnStateChanged() { |
| SendProfilesInfo(); |
| } |
| +void BrowserOptionsHandler::OnSigninAllowedPrefChange() { |
| + web_ui()->CallJavascriptFunction("BrowserOptions.updateSyncState", |
| + *GetSyncStateDictionary()); |
| + |
| + SendProfilesInfo(); |
| +} |
| + |
| void BrowserOptionsHandler::PageLoadStarted() { |
| page_initialized_ = false; |
| } |
| @@ -647,9 +655,12 @@ void BrowserOptionsHandler::InitializeHandler() { |
| prefs::kDefaultZoomLevel, prefs, |
| base::Bind(&BrowserOptionsHandler::SetupPageZoomSelector, |
| base::Unretained(this))); |
| + profile_pref_registrar_.Init(prefs); |
| + profile_pref_registrar_.Add(prefs::kSigninAllowed, |
| + base::Bind(&BrowserOptionsHandler::OnSigninAllowedPrefChange, |
| + base::Unretained(this))); |
| #if !defined(OS_CHROMEOS) |
| - proxy_prefs_.Init(prefs); |
| - proxy_prefs_.Add(prefs::kProxy, |
| + profile_pref_registrar_.Add(prefs::kProxy, |
| base::Bind(&BrowserOptionsHandler::SetupProxySettingsSection, |
| base::Unretained(this))); |
| #endif // !defined(OS_CHROMEOS) |
| @@ -1061,6 +1072,10 @@ scoped_ptr<DictionaryValue> BrowserOptionsHandler::GetSyncStateDictionary() { |
| scoped_ptr<DictionaryValue> sync_status(new DictionaryValue); |
| ProfileSyncService* service(ProfileSyncServiceFactory:: |
| GetInstance()->GetForProfile(Profile::FromWebUI(web_ui()))); |
| + SigninManager* signin = SigninManagerFactory::GetForProfile( |
| + Profile::FromWebUI(web_ui())); |
| + DCHECK(signin); |
|
Andrew T Wilson (Slow)
2013/02/07 10:08:11
I believe signin can be NULL for chromeos guest pr
Adrian Kuegel
2013/02/07 11:09:21
I merged it to ToT. Hopefully correctly :-)
|
| + sync_status->SetBoolean("signinAllowed", signin->IsSigninAllowed()); |
| sync_status->SetBoolean("syncSystemEnabled", !!service); |
| if (!service) |
| return sync_status.Pass(); |
| @@ -1071,8 +1086,6 @@ scoped_ptr<DictionaryValue> BrowserOptionsHandler::GetSyncStateDictionary() { |
| string16 status_label; |
| string16 link_label; |
| - SigninManager* signin = SigninManagerFactory::GetForProfile( |
| - Profile::FromWebUI(web_ui())); |
| bool status_has_error = sync_ui_util::GetStatusLabels( |
| service, *signin, sync_ui_util::WITH_HTML, &status_label, &link_label) == |
| @@ -1406,7 +1419,7 @@ void BrowserOptionsHandler::SetupProxySettingsSection() { |
| bool is_extension_controlled = (proxy_config && |
| proxy_config->IsExtensionControlled()); |
| - base::FundamentalValue disabled(proxy_prefs_.IsManaged() || |
| + base::FundamentalValue disabled(profile_pref_registrar_.IsManaged() || |
| is_extension_controlled); |
| base::FundamentalValue extension_controlled(is_extension_controlled); |
| web_ui()->CallJavascriptFunction("BrowserOptions.setupProxySettingsSection", |