summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjoi@chromium.org <joi@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-11-15 14:39:08 +0000
committerjoi@chromium.org <joi@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-11-15 14:39:08 +0000
commit637a7f18bb59338af71885b36ce5db96eebbb5af (patch)
treedf9a6ef38ba1c659db62ee879e070cf0f3b97472
parent810bd915369498c64f30399bfac269d02ef14a05 (diff)
downloadchromium_src-637a7f18bb59338af71885b36ce5db96eebbb5af.zip
chromium_src-637a7f18bb59338af71885b36ce5db96eebbb5af.tar.gz
chromium_src-637a7f18bb59338af71885b36ce5db96eebbb5af.tar.bz2
Remove PrefObserver usages, batch 5.
TBR=cbentzel@chromium.org,achuith@chromium.org,bauerb@chromium.org,jhawkins@chromium.org,ivankr@chromium.org BUG=155525 Review URL: https://chromiumcodereview.appspot.com/11359209 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@167916 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r--chrome/browser/chromeos/proxy_config_service_impl.cc35
-rw-r--r--chrome/browser/chromeos/proxy_config_service_impl.h5
-rw-r--r--chrome/browser/net/pref_proxy_config_tracker_impl.cc34
-rw-r--r--chrome/browser/net/pref_proxy_config_tracker_impl.h8
-rw-r--r--chrome/browser/plugins/plugin_prefs.cc44
-rw-r--r--chrome/browser/plugins/plugin_prefs.h13
-rw-r--r--chrome/browser/protector/base_prefs_change.cc11
-rw-r--r--chrome/browser/protector/base_prefs_change.h8
-rw-r--r--chrome/browser/protector/protected_prefs_watcher.cc20
-rw-r--r--chrome/browser/protector/protected_prefs_watcher.h7
-rw-r--r--chrome/browser/ui/webui/options/browser_options_handler.cc60
-rw-r--r--chrome/browser/ui/webui/options/browser_options_handler.h6
12 files changed, 115 insertions, 136 deletions
diff --git a/chrome/browser/chromeos/proxy_config_service_impl.cc b/chrome/browser/chromeos/proxy_config_service_impl.cc
index 5eca442..0e21f47 100644
--- a/chrome/browser/chromeos/proxy_config_service_impl.cc
+++ b/chrome/browser/chromeos/proxy_config_service_impl.cc
@@ -387,8 +387,12 @@ ProxyConfigServiceImpl::ProxyConfigServiceImpl(PrefService* pref_service)
pointer_factory_(this) {
// Register for notifications of UseSharedProxies user preference.
- if (pref_service->FindPreference(prefs::kUseSharedProxies))
- use_shared_proxies_.Init(prefs::kUseSharedProxies, pref_service, this);
+ if (pref_service->FindPreference(prefs::kUseSharedProxies)) {
+ use_shared_proxies_.Init(
+ prefs::kUseSharedProxies, pref_service,
+ base::Bind(&ProxyConfigServiceImpl::OnUseSharedProxiesChanged,
+ base::Unretained(this)));
+ }
FetchProxyPolicy();
@@ -586,26 +590,19 @@ void ProxyConfigServiceImpl::RegisterPrefs(PrefService* pref_service) {
//------------------ ProxyConfigServiceImpl: private methods -------------------
-void ProxyConfigServiceImpl::OnPreferenceChanged(PrefServiceBase* service,
- const std::string& pref_name) {
- DCHECK(service == prefs());
+void ProxyConfigServiceImpl::OnUseSharedProxiesChanged() {
VLOG(1) << "New use-shared-proxies = " << GetUseSharedProxies();
- if (pref_name == prefs::kUseSharedProxies) {
- // Determine new proxy config which may have changed because of new
- // use-shared-proxies. If necessary, activate it.
- Network* network = NULL;
- if (!active_network_.empty()) {
- network = CrosLibrary::Get()->GetNetworkLibrary()->FindNetworkByPath(
- active_network_);
- if (!network)
- LOG(WARNING) << "Can't find requested network " << active_network_;
- }
- DetermineEffectiveConfig(network, true);
- return;
+ // Determine new proxy config which may have changed because of new
+ // use-shared-proxies. If necessary, activate it.
+ Network* network = NULL;
+ if (!active_network_.empty()) {
+ network = CrosLibrary::Get()->GetNetworkLibrary()->FindNetworkByPath(
+ active_network_);
+ if (!network)
+ LOG(WARNING) << "Can't find requested network " << active_network_;
}
-
- PrefProxyConfigTrackerImpl::OnPreferenceChanged(service, pref_name);
+ DetermineEffectiveConfig(network, true);
}
void ProxyConfigServiceImpl::OnUISetProxyConfig() {
diff --git a/chrome/browser/chromeos/proxy_config_service_impl.h b/chrome/browser/chromeos/proxy_config_service_impl.h
index 78026ba..8377b8d 100644
--- a/chrome/browser/chromeos/proxy_config_service_impl.h
+++ b/chrome/browser/chromeos/proxy_config_service_impl.h
@@ -214,9 +214,8 @@ class ProxyConfigServiceImpl
#endif // defined(UNIT_TEST)
private:
- // PrefObserver implementation.
- virtual void OnPreferenceChanged(PrefServiceBase* service,
- const std::string& pref_name) OVERRIDE;
+ // Called when the kUseSharedProxies preference changes.
+ void OnUseSharedProxiesChanged();
// Called from the various UISetProxyConfigTo*.
void OnUISetProxyConfig();
diff --git a/chrome/browser/net/pref_proxy_config_tracker_impl.cc b/chrome/browser/net/pref_proxy_config_tracker_impl.cc
index 50398ab..69f9387 100644
--- a/chrome/browser/net/pref_proxy_config_tracker_impl.cc
+++ b/chrome/browser/net/pref_proxy_config_tracker_impl.cc
@@ -130,7 +130,9 @@ PrefProxyConfigTrackerImpl::PrefProxyConfigTrackerImpl(
update_pending_(true) {
config_state_ = ReadPrefConfig(&pref_config_);
proxy_prefs_.Init(pref_service);
- proxy_prefs_.Add(prefs::kProxy, this);
+ proxy_prefs_.Add(prefs::kProxy,
+ base::Bind(&PrefProxyConfigTrackerImpl::OnProxyPrefChanged,
+ base::Unretained(this)));
}
PrefProxyConfigTrackerImpl::~PrefProxyConfigTrackerImpl() {
@@ -287,26 +289,20 @@ bool PrefProxyConfigTrackerImpl::PrefConfigToNetConfig(
return false;
}
-void PrefProxyConfigTrackerImpl::OnPreferenceChanged(
- PrefServiceBase* service,
- const std::string& pref_name) {
+void PrefProxyConfigTrackerImpl::OnProxyPrefChanged() {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
- if (service == pref_service_) {
- net::ProxyConfig new_config;
- ProxyPrefs::ConfigState config_state = ReadPrefConfig(&new_config);
- if (config_state_ != config_state ||
- (config_state_ != ProxyPrefs::CONFIG_UNSET &&
- !pref_config_.Equals(new_config))) {
- config_state_ = config_state;
- if (config_state_ != ProxyPrefs::CONFIG_UNSET)
- pref_config_ = new_config;
- update_pending_ = true;
- }
- if (update_pending_)
- OnProxyConfigChanged(config_state, new_config);
- } else {
- NOTREACHED() << "Unexpected PrefService.";
+ net::ProxyConfig new_config;
+ ProxyPrefs::ConfigState config_state = ReadPrefConfig(&new_config);
+ if (config_state_ != config_state ||
+ (config_state_ != ProxyPrefs::CONFIG_UNSET &&
+ !pref_config_.Equals(new_config))) {
+ config_state_ = config_state;
+ if (config_state_ != ProxyPrefs::CONFIG_UNSET)
+ pref_config_ = new_config;
+ update_pending_ = true;
}
+ if (update_pending_)
+ OnProxyConfigChanged(config_state, new_config);
}
ProxyPrefs::ConfigState PrefProxyConfigTrackerImpl::ReadPrefConfig(
diff --git a/chrome/browser/net/pref_proxy_config_tracker_impl.h b/chrome/browser/net/pref_proxy_config_tracker_impl.h
index 7ec829e..9157f55 100644
--- a/chrome/browser/net/pref_proxy_config_tracker_impl.h
+++ b/chrome/browser/net/pref_proxy_config_tracker_impl.h
@@ -10,7 +10,6 @@
#include "base/memory/scoped_ptr.h"
#include "base/observer_list.h"
#include "base/prefs/public/pref_change_registrar.h"
-#include "base/prefs/public/pref_observer.h"
#include "chrome/browser/prefs/proxy_config_dictionary.h"
#include "net/proxy/proxy_config.h"
#include "net/proxy/proxy_config_service.h"
@@ -78,7 +77,7 @@ class ChromeProxyConfigService
// A class that tracks proxy preferences. It translates the configuration
// to net::ProxyConfig and pushes the result over to the IO thread for
// ChromeProxyConfigService::UpdateProxyConfig to use.
-class PrefProxyConfigTrackerImpl : public PrefObserver {
+class PrefProxyConfigTrackerImpl {
public:
explicit PrefProxyConfigTrackerImpl(PrefService* pref_service);
virtual ~PrefProxyConfigTrackerImpl();
@@ -132,10 +131,7 @@ class PrefProxyConfigTrackerImpl : public PrefObserver {
virtual void OnProxyConfigChanged(ProxyPrefs::ConfigState config_state,
const net::ProxyConfig& config);
- // PrefObserver implementation:
- virtual void OnPreferenceChanged(PrefServiceBase* service,
- const std::string& pref_name) OVERRIDE;
-
+ void OnProxyPrefChanged();
const PrefService* prefs() const { return pref_service_; }
bool update_pending() const { return update_pending_; }
diff --git a/chrome/browser/plugins/plugin_prefs.cc b/chrome/browser/plugins/plugin_prefs.cc
index d8ee038..ba0b8b5 100644
--- a/chrome/browser/plugins/plugin_prefs.cc
+++ b/chrome/browser/plugins/plugin_prefs.cc
@@ -274,25 +274,11 @@ bool PluginPrefs::IsPluginEnabled(const webkit::WebPluginInfo& plugin) const {
return true;
}
-void PluginPrefs::OnPreferenceChanged(PrefServiceBase* service,
- const std::string& pref_name) {
- DCHECK_EQ(prefs_, service);
- if (pref_name == prefs::kPluginsDisabledPlugins) {
- base::AutoLock auto_lock(lock_);
- ListValueToStringSet(prefs_->GetList(prefs::kPluginsDisabledPlugins),
- &policy_disabled_plugin_patterns_);
- } else if (pref_name == prefs::kPluginsDisabledPluginsExceptions) {
- base::AutoLock auto_lock(lock_);
- ListValueToStringSet(
- prefs_->GetList(prefs::kPluginsDisabledPluginsExceptions),
- &policy_disabled_plugin_exception_patterns_);
- } else if (pref_name == prefs::kPluginsEnabledPlugins) {
- base::AutoLock auto_lock(lock_);
- ListValueToStringSet(prefs_->GetList(prefs::kPluginsEnabledPlugins),
- &policy_enabled_plugin_patterns_);
- } else {
- NOTREACHED();
- }
+void PluginPrefs::UpdatePatternsAndNotify(std::set<string16>* patterns,
+ const std::string& pref_name) {
+ base::AutoLock auto_lock(lock_);
+ ListValueToStringSet(prefs_->GetList(pref_name.c_str()), patterns);
+
NotifyPluginStatusChanged();
}
@@ -520,9 +506,23 @@ void PluginPrefs::SetPrefs(PrefService* prefs) {
&policy_enabled_plugin_patterns_);
registrar_.Init(prefs_);
- registrar_.Add(prefs::kPluginsDisabledPlugins, this);
- registrar_.Add(prefs::kPluginsDisabledPluginsExceptions, this);
- registrar_.Add(prefs::kPluginsEnabledPlugins, this);
+
+ // Because pointers to our own members will remain unchanged for the
+ // lifetime of |registrar_| (which we also own), we can bind their
+ // pointer values directly in the callbacks to avoid string-based
+ // lookups at notification time.
+ registrar_.Add(prefs::kPluginsDisabledPlugins,
+ base::Bind(&PluginPrefs::UpdatePatternsAndNotify,
+ base::Unretained(this),
+ &policy_disabled_plugin_patterns_));
+ registrar_.Add(prefs::kPluginsDisabledPluginsExceptions,
+ base::Bind(&PluginPrefs::UpdatePatternsAndNotify,
+ base::Unretained(this),
+ &policy_disabled_plugin_exception_patterns_));
+ registrar_.Add(prefs::kPluginsEnabledPlugins,
+ base::Bind(&PluginPrefs::UpdatePatternsAndNotify,
+ base::Unretained(this),
+ &policy_enabled_plugin_patterns_));
if (force_enable_internal_pdf || internal_pdf_enabled) {
// See http://crbug.com/50105 for background.
diff --git a/chrome/browser/plugins/plugin_prefs.h b/chrome/browser/plugins/plugin_prefs.h
index 594e3d3..719523e 100644
--- a/chrome/browser/plugins/plugin_prefs.h
+++ b/chrome/browser/plugins/plugin_prefs.h
@@ -12,7 +12,6 @@
#include "base/basictypes.h"
#include "base/file_path.h"
#include "base/prefs/public/pref_change_registrar.h"
-#include "base/prefs/public/pref_observer.h"
#include "base/synchronization/lock.h"
#include "chrome/browser/plugins/plugin_finder.h"
#include "chrome/browser/prefs/pref_service.h"
@@ -34,8 +33,7 @@ class PluginList;
// This class stores information about whether a plug-in or a plug-in group is
// enabled or disabled.
// Except where otherwise noted, it can be used on every thread.
-class PluginPrefs : public RefcountedProfileKeyedService,
- public PrefObserver {
+class PluginPrefs : public RefcountedProfileKeyedService {
public:
enum PolicyStatus {
NO_POLICY = 0, // Neither enabled or disabled by policy.
@@ -85,10 +83,6 @@ class PluginPrefs : public RefcountedProfileKeyedService,
// RefCountedProfileKeyedBase method override.
virtual void ShutdownOnUIThread() OVERRIDE;
- // PrefObserver method override.
- virtual void OnPreferenceChanged(PrefServiceBase* service,
- const std::string& pref_name) OVERRIDE;
-
private:
friend class base::RefCountedThreadSafe<PluginPrefs>;
friend class PluginPrefsTest;
@@ -117,6 +111,11 @@ class PluginPrefs : public RefcountedProfileKeyedService,
virtual ~PluginPrefs();
+ // Called to update one of the policy_xyz patterns below when a
+ // preference changes.
+ void UpdatePatternsAndNotify(std::set<string16>* patterns,
+ const std::string& pref_name);
+
// Allows unit tests to directly set enforced plug-in patterns.
void SetPolicyEnforcedPluginPatterns(
const std::set<string16>& disabled_patterns,
diff --git a/chrome/browser/protector/base_prefs_change.cc b/chrome/browser/protector/base_prefs_change.cc
index 9ca25c8..b7708b3 100644
--- a/chrome/browser/protector/base_prefs_change.cc
+++ b/chrome/browser/protector/base_prefs_change.cc
@@ -2,9 +2,11 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
+#include "chrome/browser/protector/base_prefs_change.h"
+
+#include "base/bind.h"
#include "chrome/browser/prefs/pref_service.h"
#include "chrome/browser/profiles/profile.h"
-#include "chrome/browser/protector/base_prefs_change.h"
#include "chrome/browser/protector/protected_prefs_watcher.h"
#include "chrome/browser/protector/protector_service.h"
#include "chrome/browser/protector/protector_service_factory.h"
@@ -36,15 +38,16 @@ void BasePrefsChange::InitWhenDisabled(Profile* profile) {
void BasePrefsChange::DismissOnPrefChange(const std::string& pref_name) {
DCHECK(!pref_observer_.IsObserved(pref_name));
- pref_observer_.Add(pref_name.c_str(), this);
+ pref_observer_.Add(pref_name.c_str(),
+ base::Bind(&BasePrefsChange::OnPreferenceChanged,
+ base::Unretained(this)));
}
void BasePrefsChange::IgnorePrefChanges() {
pref_observer_.RemoveAll();
}
-void BasePrefsChange::OnPreferenceChanged(PrefServiceBase* service,
- const std::string& pref_name) {
+void BasePrefsChange::OnPreferenceChanged(const std::string& pref_name) {
DCHECK(pref_observer_.IsObserved(pref_name));
// Will delete this instance.
ProtectorServiceFactory::GetForProfile(profile())->DismissChange(this);
diff --git a/chrome/browser/protector/base_prefs_change.h b/chrome/browser/protector/base_prefs_change.h
index ba29d3a..046b83a 100644
--- a/chrome/browser/protector/base_prefs_change.h
+++ b/chrome/browser/protector/base_prefs_change.h
@@ -9,14 +9,12 @@
#include "base/memory/scoped_ptr.h"
#include "base/prefs/public/pref_change_registrar.h"
-#include "base/prefs/public/pref_observer.h"
#include "chrome/browser/protector/base_setting_change.h"
namespace protector {
// BaseSettingChange subclass for PrefService-managed settings changes.
-class BasePrefsChange : public BaseSettingChange,
- public PrefObserver {
+class BasePrefsChange : public BaseSettingChange {
public:
BasePrefsChange();
virtual ~BasePrefsChange();
@@ -35,9 +33,7 @@ class BasePrefsChange : public BaseSettingChange,
void IgnorePrefChanges();
private:
- // PrefObserver overrides:
- virtual void OnPreferenceChanged(PrefServiceBase* service,
- const std::string& pref_name) OVERRIDE;
+ void OnPreferenceChanged(const std::string& pref_name);
PrefChangeRegistrar pref_observer_;
diff --git a/chrome/browser/protector/protected_prefs_watcher.cc b/chrome/browser/protector/protected_prefs_watcher.cc
index ed13224..4c926db 100644
--- a/chrome/browser/protector/protected_prefs_watcher.cc
+++ b/chrome/browser/protector/protected_prefs_watcher.cc
@@ -5,6 +5,7 @@
#include "chrome/browser/protector/protected_prefs_watcher.h"
#include "base/base64.h"
+#include "base/bind.h"
#include "base/logging.h"
#include "base/metrics/histogram.h"
#include "base/stringprintf.h"
@@ -111,16 +112,18 @@ ProtectedPrefsWatcher::ProtectedPrefsWatcher(Profile* profile)
EnsurePrefsMigration();
pref_observer_.Init(profile->GetPrefs());
- pref_observer_.Add(prefs::kHomePageIsNewTabPage, this);
- pref_observer_.Add(prefs::kHomePage, this);
- pref_observer_.Add(prefs::kShowHomeButton, this);
+ PrefChangeRegistrar::NamedChangeCallback callback = base::Bind(
+ &ProtectedPrefsWatcher::OnPreferenceChanged, base::Unretained(this));
+ pref_observer_.Add(prefs::kHomePageIsNewTabPage, callback);
+ pref_observer_.Add(prefs::kHomePage, callback);
+ pref_observer_.Add(prefs::kShowHomeButton, callback);
// Session startup.
- pref_observer_.Add(prefs::kRestoreOnStartup, this);
- pref_observer_.Add(prefs::kURLsToRestoreOnStartup, this);
+ pref_observer_.Add(prefs::kRestoreOnStartup, callback);
+ pref_observer_.Add(prefs::kURLsToRestoreOnStartup, callback);
// Pinned tabs.
- pref_observer_.Add(prefs::kPinnedTabs, this);
+ pref_observer_.Add(prefs::kPinnedTabs, callback);
// Extensions.
- pref_observer_.Add(ExtensionPrefs::kExtensionsPref, this);
+ pref_observer_.Add(ExtensionPrefs::kExtensionsPref, callback);
UpdateCachedPrefs();
ValidateBackup();
@@ -195,8 +198,7 @@ void ProtectedPrefsWatcher::ForceUpdateBackup() {
InitBackup();
}
-void ProtectedPrefsWatcher::OnPreferenceChanged(PrefServiceBase* service,
- const std::string& pref_name) {
+void ProtectedPrefsWatcher::OnPreferenceChanged(const std::string& pref_name) {
DCHECK(pref_observer_.IsObserved(pref_name));
if (UpdateBackupEntry(pref_name))
UpdateBackupSignature();
diff --git a/chrome/browser/protector/protected_prefs_watcher.h b/chrome/browser/protector/protected_prefs_watcher.h
index 269edc3..d6aaf44 100644
--- a/chrome/browser/protector/protected_prefs_watcher.h
+++ b/chrome/browser/protector/protected_prefs_watcher.h
@@ -10,7 +10,6 @@
#include "base/basictypes.h"
#include "base/memory/scoped_ptr.h"
#include "base/prefs/public/pref_change_registrar.h"
-#include "base/prefs/public/pref_observer.h"
#include "chrome/browser/extensions/extension_prefs.h"
class PrefService;
@@ -22,7 +21,7 @@ class Value;
namespace protector {
-class ProtectedPrefsWatcher : public PrefObserver {
+class ProtectedPrefsWatcher {
public:
// Current backup version.
static const int kCurrentVersionNumber;
@@ -51,9 +50,7 @@ class ProtectedPrefsWatcher : public PrefObserver {
private:
friend class ProtectedPrefsWatcherTest;
- // PrefObserver overrides:
- virtual void OnPreferenceChanged(PrefServiceBase* service,
- const std::string& pref_name) OVERRIDE;
+ void OnPreferenceChanged(const std::string& pref_name);
// Makes sure that all protected prefs have been migrated before starting to
// observe them.
diff --git a/chrome/browser/ui/webui/options/browser_options_handler.cc b/chrome/browser/ui/webui/options/browser_options_handler.cc
index 0288b1b..a761aa9 100644
--- a/chrome/browser/ui/webui/options/browser_options_handler.cc
+++ b/chrome/browser/ui/webui/options/browser_options_handler.cc
@@ -569,9 +569,11 @@ void BrowserOptionsHandler::InitializeHandler() {
ChromeURLDataManager::AddDataSource(profile,
new FaviconSource(profile, FaviconSource::FAVICON));
- default_browser_policy_.Init(prefs::kDefaultBrowserSettingEnabled,
- g_browser_process->local_state(),
- this);
+ default_browser_policy_.Init(
+ prefs::kDefaultBrowserSettingEnabled,
+ g_browser_process->local_state(),
+ base::Bind(&BrowserOptionsHandler::UpdateDefaultBrowserState,
+ base::Unretained(this)));
registrar_.Add(this, chrome::NOTIFICATION_PROFILE_CACHED_INFO_CHANGED,
content::NotificationService::AllSources());
@@ -599,17 +601,31 @@ void BrowserOptionsHandler::InitializeHandler() {
#endif
#if !defined(OS_CHROMEOS)
- cloud_print_connector_email_.Init(prefs::kCloudPrintEmail, prefs, this);
- cloud_print_connector_enabled_.Init(prefs::kCloudPrintProxyEnabled, prefs,
- this);
+ base::Closure cloud_print_callback = base::Bind(
+ &BrowserOptionsHandler::OnCloudPrintPrefsChanged, base::Unretained(this));
+ cloud_print_connector_email_.Init(
+ prefs::kCloudPrintEmail, prefs, cloud_print_callback);
+ cloud_print_connector_enabled_.Init(
+ prefs::kCloudPrintProxyEnabled, prefs, cloud_print_callback);
#endif
- auto_open_files_.Init(prefs::kDownloadExtensionsToOpen, prefs, this);
- default_font_size_.Init(prefs::kWebKitDefaultFontSize, prefs, this);
- default_zoom_level_.Init(prefs::kDefaultZoomLevel, prefs, this);
+ auto_open_files_.Init(
+ prefs::kDownloadExtensionsToOpen, prefs,
+ base::Bind(&BrowserOptionsHandler::SetupAutoOpenFileTypes,
+ base::Unretained(this)));
+ default_font_size_.Init(
+ prefs::kWebKitDefaultFontSize, prefs,
+ base::Bind(&BrowserOptionsHandler::SetupFontSizeSelector,
+ base::Unretained(this)));
+ default_zoom_level_.Init(
+ prefs::kDefaultZoomLevel, prefs,
+ base::Bind(&BrowserOptionsHandler::SetupPageZoomSelector,
+ base::Unretained(this)));
#if !defined(OS_CHROMEOS)
proxy_prefs_.Init(prefs);
- proxy_prefs_.Add(prefs::kProxy, this);
+ proxy_prefs_.Add(prefs::kProxy,
+ base::Bind(&BrowserOptionsHandler::SetupProxySettingsSection,
+ base::Unretained(this)));
#endif // !defined(OS_CHROMEOS)
}
@@ -870,29 +886,11 @@ void BrowserOptionsHandler::Observe(
}
}
-void BrowserOptionsHandler::OnPreferenceChanged(PrefServiceBase* service,
- const std::string& pref_name) {
- if (pref_name == prefs::kDefaultBrowserSettingEnabled) {
- UpdateDefaultBrowserState();
- } else if (pref_name == prefs::kDownloadExtensionsToOpen) {
- SetupAutoOpenFileTypes();
-#if !defined(OS_CHROMEOS)
- } else if (proxy_prefs_.IsObserved(pref_name)) {
- SetupProxySettingsSection();
-#endif // !defined(OS_CHROMEOS)
- } else if ((pref_name == prefs::kCloudPrintEmail) ||
- (pref_name == prefs::kCloudPrintProxyEnabled)) {
+void BrowserOptionsHandler::OnCloudPrintPrefsChanged() {
#if !defined(OS_CHROMEOS)
- if (cloud_print_connector_ui_enabled_)
- SetupCloudPrintConnectorSection();
+ if (cloud_print_connector_ui_enabled_)
+ SetupCloudPrintConnectorSection();
#endif
- } else if (pref_name == prefs::kWebKitDefaultFontSize) {
- SetupFontSizeSelector();
- } else if (pref_name == prefs::kDefaultZoomLevel) {
- SetupPageZoomSelector();
- } else {
- NOTREACHED();
- }
}
void BrowserOptionsHandler::ToggleAutoLaunch(const ListValue* args) {
diff --git a/chrome/browser/ui/webui/options/browser_options_handler.h b/chrome/browser/ui/webui/options/browser_options_handler.h
index 0488e10..794bc92 100644
--- a/chrome/browser/ui/webui/options/browser_options_handler.h
+++ b/chrome/browser/ui/webui/options/browser_options_handler.h
@@ -8,7 +8,6 @@
#include "base/memory/ref_counted.h"
#include "base/memory/scoped_ptr.h"
#include "base/memory/weak_ptr.h"
-#include "base/prefs/public/pref_observer.h"
#include "chrome/browser/api/prefs/pref_member.h"
#include "chrome/browser/api/sync/profile_sync_service_observer.h"
#include "chrome/browser/printing/cloud_print/cloud_print_setup_handler.h"
@@ -36,7 +35,6 @@ namespace options {
class BrowserOptionsHandler
: public OptionsPageUIHandler,
public CloudPrintSetupHandlerDelegate,
- public PrefObserver,
public ProfileSyncServiceObserver,
public ui::SelectFileDialog::Listener,
public ShellIntegration::DefaultWebClientObserver,
@@ -76,9 +74,7 @@ class BrowserOptionsHandler
const content::NotificationSource& source,
const content::NotificationDetails& details) OVERRIDE;
- // PrefObserver implementation.
- virtual void OnPreferenceChanged(PrefServiceBase* service,
- const std::string& pref_name) OVERRIDE;
+ void OnCloudPrintPrefsChanged();
// SelectFileDialog::Listener implementation
virtual void FileSelected(const FilePath& path,