Index: chrome/browser/ui/cocoa/toolbar/toolbar_controller.mm |
diff --git a/chrome/browser/ui/cocoa/toolbar/toolbar_controller.mm b/chrome/browser/ui/cocoa/toolbar/toolbar_controller.mm |
index 91f2fee891bd7819d3ff6f9c11d132b77ed89a43..39f326e4da0b3ffb185cd90730dac2d04c47064a 100644 |
--- a/chrome/browser/ui/cocoa/toolbar/toolbar_controller.mm |
+++ b/chrome/browser/ui/cocoa/toolbar/toolbar_controller.mm |
@@ -9,6 +9,7 @@ |
#include "base/mac/bundle_locations.h" |
#include "base/mac/mac_util.h" |
#include "base/memory/singleton.h" |
+#include "base/prefs/public/pref_observer.h" |
#include "base/string_util.h" |
#include "base/sys_string_conversions.h" |
#include "base/utf_string_conversions.h" |
@@ -87,7 +88,7 @@ const CGFloat kWrenchMenuLeftPadding = 3.0; |
@property(assign, nonatomic) Browser* browser; |
- (void)addAccessibilityDescriptions; |
- (void)initCommandStatus:(CommandUpdater*)commands; |
-- (void)prefChanged:(std::string*)prefName; |
+- (void)prefChanged:(const std::string&)prefName; |
- (BackgroundGradientView*)backgroundGradientView; |
- (void)toolbarFrameChanged; |
- (void)pinLocationBarToLeftOfBrowserActionsContainerAndAnimate:(BOOL)animate; |
@@ -105,7 +106,9 @@ namespace ToolbarControllerInternal { |
// A class registered for C++ notifications. This is used to detect changes in |
// preferences and upgrade available notifications. Bridges the notification |
// back to the ToolbarController. |
-class NotificationBridge : public content::NotificationObserver { |
+class NotificationBridge |
+ : public content::NotificationObserver, |
+ public PrefObserver { |
public: |
explicit NotificationBridge(ToolbarController* controller) |
: controller_(controller) { |
@@ -118,11 +121,8 @@ class NotificationBridge : public content::NotificationObserver { |
// Overridden from content::NotificationObserver: |
virtual void Observe(int type, |
const content::NotificationSource& source, |
- const content::NotificationDetails& details) { |
+ const content::NotificationDetails& details) OVERRIDE { |
switch (type) { |
- case chrome::NOTIFICATION_PREF_CHANGED: |
- [controller_ prefChanged:content::Details<std::string>(details).ptr()]; |
- break; |
case chrome::NOTIFICATION_UPGRADE_RECOMMENDED: |
case chrome::NOTIFICATION_GLOBAL_ERRORS_CHANGED: |
[controller_ badgeWrenchMenuIfNeeded]; |
@@ -132,6 +132,12 @@ class NotificationBridge : public content::NotificationObserver { |
} |
} |
+ // Overridden from PrefObserver: |
+ virtual void OnPreferenceChanged(PrefServiceBase* service, |
+ const std::string& pref_name) OVERRIDE { |
+ [controller_ prefChanged:pref_name]; |
+ } |
+ |
private: |
ToolbarController* controller_; // weak, owns us |
@@ -563,9 +569,8 @@ class NotificationBridge : public content::NotificationObserver { |
[[wrenchButton_ cell] setOverlayImageID:error_badge_id]; |
} |
-- (void)prefChanged:(std::string*)prefName { |
- if (!prefName) return; |
- if (*prefName == prefs::kShowHomeButton) { |
+- (void)prefChanged:(const std::string&)prefName { |
+ if (prefName == prefs::kShowHomeButton) { |
[self showOptionalHomeButton]; |
} |
} |