Index: chrome/browser/ui/cocoa/browser_window_cocoa.mm |
diff --git a/chrome/browser/ui/cocoa/browser_window_cocoa.mm b/chrome/browser/ui/cocoa/browser_window_cocoa.mm |
index 42303bda99f7a7efa65fcf7edd997796dac791ef..81637ba5c7ffe1f584738000272f2354367aee7a 100644 |
--- a/chrome/browser/ui/cocoa/browser_window_cocoa.mm |
+++ b/chrome/browser/ui/cocoa/browser_window_cocoa.mm |
@@ -43,6 +43,7 @@ |
#include "chrome/common/pref_names.h" |
#include "content/browser/tab_contents/tab_contents.h" |
#include "content/common/native_web_keyboard_event.h" |
+#include "content/common/notification_details.h" |
#include "content/common/notification_service.h" |
#include "grit/chromium_strings.h" |
#include "grit/generated_resources.h" |
@@ -74,14 +75,12 @@ BrowserWindowCocoa::BrowserWindowCocoa(Browser* browser, |
: browser_(browser), |
controller_(controller), |
confirm_close_factory_(browser) { |
- // Listen for bookmark bar visibility changes and set the initial state; we |
- // need to listen to all profiles because of normal profile/incognito issues. |
- registrar_.Add(this, |
- chrome::NOTIFICATION_BOOKMARK_BAR_VISIBILITY_PREF_CHANGED, |
- NotificationService::AllBrowserContextsAndSources()); |
registrar_.Add(this, chrome::NOTIFICATION_SIDEBAR_CHANGED, |
Source<SidebarManager>(SidebarManager::GetInstance())); |
+ pref_change_registrar_.Init(browser_->profile()->GetPrefs()); |
+ pref_change_registrar_.Add(prefs::kShowBookmarkBar, this); |
+ |
initial_show_state_ = browser_->GetSavedWindowShowState(); |
} |
@@ -554,12 +553,12 @@ void BrowserWindowCocoa::Observe(int type, |
const NotificationSource& source, |
const NotificationDetails& details) { |
switch (type) { |
- // Only the key window gets a direct toggle from the menu. |
- // Other windows hear about it from the notification. |
- case chrome::NOTIFICATION_BOOKMARK_BAR_VISIBILITY_PREF_CHANGED: |
- if (browser_->profile()->IsSameProfile(Source<Profile>(source).ptr())) |
- [controller_ updateBookmarkBarVisibilityWithAnimation:YES]; |
+ case chrome::NOTIFICATION_PREF_CHANGED: { |
+ const std::string& pref_name = *Details<std::string>(details).ptr(); |
+ DCHECK(pref_name == prefs::kShowBookmarkBar); |
+ [controller_ updateBookmarkBarVisibilityWithAnimation:YES]; |
break; |
+ } |
case chrome::NOTIFICATION_SIDEBAR_CHANGED: |
UpdateSidebarForContents( |
Details<SidebarContainer>(details)->tab_contents()); |