| 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 042191f4123a32ed55e6683ce89eb2634c902d29..d277af0016a139eda84868cbfe2b79d66e0a664f 100644
|
| --- a/chrome/browser/ui/webui/options/browser_options_handler.cc
|
| +++ b/chrome/browser/ui/webui/options/browser_options_handler.cc
|
| @@ -145,6 +145,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_)
|
| @@ -582,6 +583,13 @@ void BrowserOptionsHandler::OnStateChanged() {
|
| SendProfilesInfo();
|
| }
|
|
|
| +void BrowserOptionsHandler::OnSigninAllowedPrefChange() {
|
| + web_ui()->CallJavascriptFunction("BrowserOptions.updateSyncState",
|
| + *GetSyncStateDictionary());
|
| +
|
| + SendProfilesInfo();
|
| +}
|
| +
|
| void BrowserOptionsHandler::PageLoadStarted() {
|
| page_initialized_ = false;
|
| }
|
| @@ -652,11 +660,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)
|
| }
|
|
|
| @@ -1075,10 +1088,10 @@ 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();
|
| }
|
|
|
| @@ -1093,6 +1106,9 @@ scoped_ptr<DictionaryValue> BrowserOptionsHandler::GetSyncStateDictionary() {
|
| sync_status->SetBoolean("signoutAllowed", signout_allowed);
|
| ProfileSyncService* service(
|
| ProfileSyncServiceFactory::GetInstance()->GetForProfile(profile));
|
| + SigninManager* signin(SigninManagerFactory::GetForProfile(profile));
|
| + DCHECK(signin);
|
| + sync_status->SetBoolean("signinAllowed", signin->IsSigninAllowed());
|
| sync_status->SetBoolean("syncSystemEnabled", !!service);
|
| sync_status->SetBoolean("setupCompleted",
|
| service && service->HasSyncSetupCompleted());
|
| @@ -1101,8 +1117,6 @@ scoped_ptr<DictionaryValue> BrowserOptionsHandler::GetSyncStateDictionary() {
|
|
|
| string16 status_label;
|
| string16 link_label;
|
| - SigninManager* signin = SigninManagerFactory::GetForProfile(profile);
|
| - DCHECK(signin);
|
| bool status_has_error = sync_ui_util::GetStatusLabels(
|
| service, *signin, sync_ui_util::WITH_HTML, &status_label, &link_label) ==
|
| sync_ui_util::SYNC_ERROR;
|
| @@ -1436,7 +1450,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",
|
|
|