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 2775f3c8c1b7a988ef5b05e00d715ece1f575498..9d17e22d7bbc3eaa0aa82e568f452ec8a1c01c0e 100644 |
| --- a/chrome/browser/ui/webui/options/browser_options_handler.cc |
| +++ b/chrome/browser/ui/webui/options/browser_options_handler.cc |
| @@ -151,6 +151,7 @@ BrowserOptionsHandler::~BrowserOptionsHandler() { |
| if (sync_service) |
| sync_service->RemoveObserver(this); |
| + profile_pref_registrar_.RemoveAll(); |
|
Dan Beam
2013/02/25 17:35:08
also may not be necessary.
|
| if (default_browser_worker_.get()) |
| default_browser_worker_->ObserverDestroyed(); |
| if (template_url_service_) |
| @@ -604,6 +605,13 @@ void BrowserOptionsHandler::OnStateChanged() { |
| SendProfilesInfo(); |
| } |
| +void BrowserOptionsHandler::OnSigninAllowedPrefChange() { |
| + web_ui()->CallJavascriptFunction("BrowserOptions.updateSyncState", |
| + *GetSyncStateDictionary()); |
| + |
| + SendProfilesInfo(); |
| +} |
| + |
| void BrowserOptionsHandler::PageLoadStarted() { |
| page_initialized_ = false; |
| } |
| @@ -674,11 +682,16 @@ 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, |
| - base::Bind(&BrowserOptionsHandler::SetupProxySettingsSection, |
| - base::Unretained(this))); |
| + profile_pref_registrar_.Add( |
| + prefs::kProxy, |
| + base::Bind(&BrowserOptionsHandler::SetupProxySettingsSection, |
| + base::Unretained(this))); |
| #endif // !defined(OS_CHROMEOS) |
| } |
| @@ -1103,18 +1116,20 @@ void BrowserOptionsHandler::UpdateAccountPicture() { |
| scoped_ptr<DictionaryValue> BrowserOptionsHandler::GetSyncStateDictionary() { |
| scoped_ptr<DictionaryValue> sync_status(new DictionaryValue); |
| Profile* profile = Profile::FromWebUI(web_ui()); |
| - sync_status->SetBoolean("signinAllowed", !profile->IsGuestSession()); |
| if (profile->IsGuestSession()) { |
| // Cannot display signin status when running in guest mode on chromeos |
| // because there is no SigninManager. |
| + sync_status->SetBoolean("signinAllowed", false); |
| return sync_status.Pass(); |
| } |
| // Signout is not allowed if the user has policy (crbug.com/172204). |
| SigninManager* signin = SigninManagerFactory::GetForProfile(profile); |
| + DCHECK(signin); |
| sync_status->SetBoolean("signoutAllowed", !signin->IsSignoutProhibited()); |
| ProfileSyncService* service( |
| ProfileSyncServiceFactory::GetInstance()->GetForProfile(profile)); |
| + sync_status->SetBoolean("signinAllowed", signin->IsSigninAllowed()); |
| sync_status->SetBoolean("syncSystemEnabled", !!service); |
| sync_status->SetBoolean("setupCompleted", |
| service && service->HasSyncSetupCompleted()); |
| @@ -1457,7 +1472,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", |