diff options
author | danno@chromium.org <danno@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-09-22 12:43:14 +0000 |
---|---|---|
committer | danno@chromium.org <danno@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-09-22 12:43:14 +0000 |
commit | 37d5293518a8657af4d79035f7ef2e8c3a8d6b9a (patch) | |
tree | 9897f36b9f09457d3a5fbb002abc4e081e79ae56 /chrome/browser/cocoa | |
parent | 37c3dacaa38fddba1c53d9b3f3f0514933d3dd45 (diff) | |
download | chromium_src-37d5293518a8657af4d79035f7ef2e8c3a8d6b9a.zip chromium_src-37d5293518a8657af4d79035f7ef2e8c3a8d6b9a.tar.gz chromium_src-37d5293518a8657af4d79035f7ef2e8c3a8d6b9a.tar.bz2 |
Use PrefChangeRegistrar everywhere
BUG=54955
TEST=PrefChangeRegistrarTest.*
Review URL: http://codereview.chromium.org/3304015
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@60169 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/cocoa')
5 files changed, 16 insertions, 40 deletions
diff --git a/chrome/browser/cocoa/content_settings_dialog_controller.h b/chrome/browser/cocoa/content_settings_dialog_controller.h index d48b962..8fe92da 100644 --- a/chrome/browser/cocoa/content_settings_dialog_controller.h +++ b/chrome/browser/cocoa/content_settings_dialog_controller.h @@ -7,6 +7,7 @@ #import "base/cocoa_protocols_mac.h" #include "base/scoped_ptr.h" #include "chrome/common/content_settings_types.h" +#include "chrome/browser/prefs/pref_change_registrar.h" #include "chrome/browser/prefs/pref_member.h" // Index of the "enabled" and "disabled" radio group settings in all tabs except @@ -50,6 +51,7 @@ class Profile; Profile* profile_; // weak IntegerPrefMember lastSelectedTab_; BooleanPrefMember clearSiteDataOnExit_; + PrefChangeRegistrar registrar_; scoped_ptr<ContentSettingsDialogControllerInternal::PrefObserverBridge> observer_; // Watches for pref changes. } diff --git a/chrome/browser/cocoa/content_settings_dialog_controller.mm b/chrome/browser/cocoa/content_settings_dialog_controller.mm index 0c71fd9..70287cc 100644 --- a/chrome/browser/cocoa/content_settings_dialog_controller.mm +++ b/chrome/browser/cocoa/content_settings_dialog_controller.mm @@ -140,11 +140,11 @@ class PrefObserverDisabler { // Manually observe notifications for preferences that are grouped in // the HostContentSettingsMap or GeolocationContentSettingsMap. PrefService* prefs = profile_->GetPrefs(); - prefs->AddPrefObserver(prefs::kBlockThirdPartyCookies, observer_.get()); - prefs->AddPrefObserver(prefs::kBlockNonsandboxedPlugins, observer_.get()); - prefs->AddPrefObserver(prefs::kDefaultContentSettings, observer_.get()); - prefs->AddPrefObserver(prefs::kGeolocationDefaultContentSetting, - observer_.get()); + registrar_.Init(prefs); + registrar_.Add(prefs::kBlockThirdPartyCookies, observer_.get()); + registrar_.Add(prefs::kBlockNonsandboxedPlugins, observer_.get()); + registrar_.Add(prefs::kDefaultContentSettings, observer_.get()); + registrar_.Add(prefs::kGeolocationDefaultContentSetting, observer_.get()); // We don't need to observe changes in this value. lastSelectedTab_.Init(prefs::kContentSettingsWindowLastTabIndex, @@ -153,20 +153,6 @@ class PrefObserverDisabler { return self; } -- (void)dealloc { - if (profile_) { - PrefService* prefs = profile_->GetPrefs(); - prefs->RemovePrefObserver(prefs::kBlockThirdPartyCookies, observer_.get()); - prefs->RemovePrefObserver(prefs::kBlockNonsandboxedPlugins, - observer_.get()); - prefs->RemovePrefObserver(prefs::kDefaultContentSettings, observer_.get()); - prefs->RemovePrefObserver(prefs::kGeolocationDefaultContentSetting, - observer_.get()); - } - - [super dealloc]; -} - - (void)closeExceptionsSheet { NSWindow* attachedSheet = [[self window] attachedSheet]; if (attachedSheet) { diff --git a/chrome/browser/cocoa/extensions/extension_action_context_menu.mm b/chrome/browser/cocoa/extensions/extension_action_context_menu.mm index 10ea079..81aa61e 100644 --- a/chrome/browser/cocoa/extensions/extension_action_context_menu.mm +++ b/chrome/browser/cocoa/extensions/extension_action_context_menu.mm @@ -18,6 +18,7 @@ #include "chrome/browser/extensions/extension_install_ui.h" #include "chrome/browser/extensions/extensions_service.h" #include "chrome/browser/extensions/extension_tabs_module.h" +#include "chrome/browser/prefs/pref_change_registrar.h" #include "chrome/browser/prefs/pref_service.h" #include "chrome/browser/profile.h" #include "chrome/common/extensions/extension.h" @@ -71,14 +72,10 @@ class DevmodeObserver : public NotificationObserver { DevmodeObserver(ExtensionActionContextMenu* menu, PrefService* service) : menu_(menu), pref_service_(service) { - pref_service_->AddPrefObserver(prefs::kExtensionsUIDeveloperMode, - this); - } - - ~DevmodeObserver() { - pref_service_->RemovePrefObserver(prefs::kExtensionsUIDeveloperMode, - this); + registrar_.Init(pref_service_); + registrar_.Add(prefs::kExtensionsUIDeveloperMode, this); } + virtual ~DevmodeObserver() {} void Observe(NotificationType type, const NotificationSource& source, @@ -92,6 +89,7 @@ class DevmodeObserver : public NotificationObserver { private: ExtensionActionContextMenu* menu_; PrefService* pref_service_; + PrefChangeRegistrar registrar_; }; } // namespace extension_action_context_menu diff --git a/chrome/browser/cocoa/preferences_window_controller.h b/chrome/browser/cocoa/preferences_window_controller.h index e7b8383..54d4778 100644 --- a/chrome/browser/cocoa/preferences_window_controller.h +++ b/chrome/browser/cocoa/preferences_window_controller.h @@ -9,6 +9,7 @@ #include "chrome/browser/options_window.h" #include "chrome/browser/prefs/pref_member.h" #include "chrome/browser/prefs/pref_set_observer.h" +#include "chrome/browser/prefs/pref_change_registrar.h" namespace PreferencesWindowControllerInternal { class PrefObserverBridge; @@ -45,6 +46,7 @@ class ProfileSyncService; ProfileSyncService* syncService_; scoped_ptr<PreferencesWindowControllerInternal::PrefObserverBridge> observer_; // Watches for pref changes. + PrefChangeRegistrar registrar_; // Manages pref change observer registration. scoped_nsobject<WindowSizeAutosaver> sizeSaver_; NSView* currentPrefsView_; // weak ref - current prefs page view. scoped_ptr<PreferencesWindowControllerInternal::ManagedPrefsBannerState> diff --git a/chrome/browser/cocoa/preferences_window_controller.mm b/chrome/browser/cocoa/preferences_window_controller.mm index c7c2b7b..0f11f63 100644 --- a/chrome/browser/cocoa/preferences_window_controller.mm +++ b/chrome/browser/cocoa/preferences_window_controller.mm @@ -330,7 +330,6 @@ CGFloat AutoSizeUnderTheHoodContent(NSView* view, // Record the user performed a certain action and save the preferences. - (void)recordUserAction:(const UserMetricsAction&) action; - (void)registerPrefObservers; -- (void)unregisterPrefObservers; // KVC setter methods. - (void)setNewTabPageIsHomePageIndex:(NSInteger)val; @@ -761,7 +760,6 @@ class ManagedPrefsBannerState : public policy::ManagedPrefsBannerBase { syncService_->RemoveObserver(observer_.get()); } [[NSNotificationCenter defaultCenter] removeObserver:self]; - [self unregisterPrefObservers]; [animation_ setDelegate:nil]; [animation_ stopAnimation]; [super dealloc]; @@ -781,7 +779,8 @@ class ManagedPrefsBannerState : public policy::ManagedPrefsBannerBase { if (!prefs_) return; // Basics panel - prefs_->AddPrefObserver(prefs::kURLsToRestoreOnStartup, observer_.get()); + registrar_.Init(prefs_); + registrar_.Add(prefs::kURLsToRestoreOnStartup, observer_.get()); restoreOnStartup_.Init(prefs::kRestoreOnStartup, prefs_, observer_.get()); newTabPageIsHomePage_.Init(prefs::kHomePageIsNewTabPage, prefs_, observer_.get()); @@ -823,17 +822,6 @@ class ManagedPrefsBannerState : public policy::ManagedPrefsBannerBase { lastSelectedPage_.Init(prefs::kOptionsWindowLastTabIndex, local, NULL); } -// Clean up what was registered in -registerPrefObservers. We only have to -// clean up the non-PrefMember registrations. -- (void)unregisterPrefObservers { - if (!prefs_) return; - - // Basics - prefs_->RemovePrefObserver(prefs::kURLsToRestoreOnStartup, observer_.get()); - - // Nothing to do for other panels... -} - // Called when the window wants to be closed. - (BOOL)windowShouldClose:(id)sender { // Stop any animation and clear the delegate to avoid stale pointers. |