summaryrefslogtreecommitdiffstats
path: root/chrome/browser/cocoa
diff options
context:
space:
mode:
authordanno@chromium.org <danno@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-09-22 12:43:14 +0000
committerdanno@chromium.org <danno@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-09-22 12:43:14 +0000
commit37d5293518a8657af4d79035f7ef2e8c3a8d6b9a (patch)
tree9897f36b9f09457d3a5fbb002abc4e081e79ae56 /chrome/browser/cocoa
parent37c3dacaa38fddba1c53d9b3f3f0514933d3dd45 (diff)
downloadchromium_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')
-rw-r--r--chrome/browser/cocoa/content_settings_dialog_controller.h2
-rw-r--r--chrome/browser/cocoa/content_settings_dialog_controller.mm24
-rw-r--r--chrome/browser/cocoa/extensions/extension_action_context_menu.mm12
-rw-r--r--chrome/browser/cocoa/preferences_window_controller.h2
-rw-r--r--chrome/browser/cocoa/preferences_window_controller.mm16
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.