diff options
author | joi@chromium.org <joi@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-11-30 20:08:02 +0000 |
---|---|---|
committer | joi@chromium.org <joi@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-11-30 20:08:02 +0000 |
commit | 0b085c40e699bd8bfcad31a9eb0303437f0c5e93 (patch) | |
tree | 56dee99bada0c6c2ece5613afbacd97776f64b8a /chrome/browser/ui | |
parent | 3a8d7fa918f77e913778628a988c5687cf0d9fa4 (diff) | |
download | chromium_src-0b085c40e699bd8bfcad31a9eb0303437f0c5e93.zip chromium_src-0b085c40e699bd8bfcad31a9eb0303437f0c5e93.tar.gz chromium_src-0b085c40e699bd8bfcad31a9eb0303437f0c5e93.tar.bz2 |
Revert 170483 - Remove PrefObserver usages, batch 12.
TBR=ben@chromium.org
BUG=155525
Review URL: https://chromiumcodereview.appspot.com/11280115
Reason for revert: A review comment after commit showed that the
change is probably wrong (or at least changes behavior in a way that
was not intended). Reverting for now, until there is time to figure
out the correct change.
TBR=joi@chromium.org
Review URL: https://codereview.chromium.org/11308295
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@170519 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/ui')
13 files changed, 135 insertions, 114 deletions
diff --git a/chrome/browser/ui/alternate_error_tab_observer.cc b/chrome/browser/ui/alternate_error_tab_observer.cc index 6bac4c3..569a739 100644 --- a/chrome/browser/ui/alternate_error_tab_observer.cc +++ b/chrome/browser/ui/alternate_error_tab_observer.cc @@ -25,11 +25,7 @@ AlternateErrorPageTabObserver::AlternateErrorPageTabObserver( PrefService* prefs = profile_->GetPrefs(); if (prefs) { pref_change_registrar_.Init(prefs); - pref_change_registrar_.Add( - prefs::kAlternateErrorPagesEnabled, - base::Bind(&AlternateErrorPageTabObserver:: - OnAlternateErrorPagesEnabledChanged, - base::Unretained(this))); + pref_change_registrar_.Add(prefs::kAlternateErrorPagesEnabled, this); } registrar_.Add(this, chrome::NOTIFICATION_GOOGLE_URL_UPDATED, @@ -65,6 +61,17 @@ void AlternateErrorPageTabObserver::Observe( } //////////////////////////////////////////////////////////////////////////////// +// PrefObserver overrides + +void AlternateErrorPageTabObserver::OnPreferenceChanged( + PrefServiceBase* service, + const std::string& pref_name) { + DCHECK_EQ(profile_->GetPrefs(), service); + DCHECK(prefs::kAlternateErrorPagesEnabled == pref_name); + UpdateAlternateErrorPageURL(web_contents()->GetRenderViewHost()); +} + +//////////////////////////////////////////////////////////////////////////////// // Internal helpers GURL AlternateErrorPageTabObserver::GetAlternateErrorPageURL() const { @@ -83,10 +90,6 @@ GURL AlternateErrorPageTabObserver::GetAlternateErrorPageURL() const { return url; } -void AlternateErrorPageTabObserver::OnAlternateErrorPagesEnabledChanged() { - UpdateAlternateErrorPageURL(web_contents()->GetRenderViewHost()); -} - void AlternateErrorPageTabObserver::UpdateAlternateErrorPageURL( RenderViewHost* rvh) { rvh->SetAltErrorPageURL(GetAlternateErrorPageURL()); diff --git a/chrome/browser/ui/alternate_error_tab_observer.h b/chrome/browser/ui/alternate_error_tab_observer.h index 9a933b4..071dea8 100644 --- a/chrome/browser/ui/alternate_error_tab_observer.h +++ b/chrome/browser/ui/alternate_error_tab_observer.h @@ -6,6 +6,7 @@ #define CHROME_BROWSER_UI_ALTERNATE_ERROR_TAB_OBSERVER_H_ #include "base/prefs/public/pref_change_registrar.h" +#include "base/prefs/public/pref_observer.h" #include "chrome/browser/prefs/pref_service.h" #include "content/public/browser/notification_observer.h" #include "content/public/browser/notification_registrar.h" @@ -18,7 +19,8 @@ class Profile; class AlternateErrorPageTabObserver : public content::WebContentsObserver, public content::NotificationObserver, - public content::WebContentsUserData<AlternateErrorPageTabObserver> { + public content::WebContentsUserData<AlternateErrorPageTabObserver>, + public PrefObserver { public: virtual ~AlternateErrorPageTabObserver(); @@ -37,14 +39,16 @@ class AlternateErrorPageTabObserver const content::NotificationSource& source, const content::NotificationDetails& details) OVERRIDE; + // PrefObserver overrides: + virtual void OnPreferenceChanged(PrefServiceBase* service, + const std::string& pref_name) OVERRIDE; + // Internal helpers ---------------------------------------------------------- // Returns the server that can provide alternate error pages. If the returned // URL is empty, the default error page built into WebKit will be used. GURL GetAlternateErrorPageURL() const; - void OnAlternateErrorPagesEnabledChanged(); - // Send the alternate error page URL to the renderer. void UpdateAlternateErrorPageURL(content::RenderViewHost* rvh); diff --git a/chrome/browser/ui/ash/launcher/chrome_launcher_controller_per_app.cc b/chrome/browser/ui/ash/launcher/chrome_launcher_controller_per_app.cc index 7076834..37d2509 100644 --- a/chrome/browser/ui/ash/launcher/chrome_launcher_controller_per_app.cc +++ b/chrome/browser/ui/ash/launcher/chrome_launcher_controller_per_app.cc @@ -173,10 +173,7 @@ ChromeLauncherControllerPerApp::ChromeLauncherControllerPerApp( chrome::NOTIFICATION_EXTENSION_UNLOADED, content::Source<Profile>(profile_)); pref_change_registrar_.Init(profile_->GetPrefs()); - pref_change_registrar_.Add( - prefs::kPinnedLauncherApps, - base::Bind(&ChromeLauncherControllerPerApp::UpdateAppLaunchersFromPref, - base::Unretained(this))); + pref_change_registrar_.Add(prefs::kPinnedLauncherApps, this); } ChromeLauncherControllerPerApp::~ChromeLauncherControllerPerApp() { @@ -230,19 +227,9 @@ void ChromeLauncherControllerPerApp::Init() { SetShelfAutoHideBehaviorFromPrefs(); SetShelfAlignmentFromPrefs(); PrefService* prefs = profile_->GetPrefs(); - if (prefs->GetString(prefs::kShelfAlignmentLocal).empty()) { - pref_change_registrar_.Add( - prefs::kShelfAlignmentLocal, - base::Bind( - &ChromeLauncherControllerPerApp::SetShelfAlignmentFromPrefs, - base::Unretained(this))); - } - if (prefs->GetString(prefs::kShelfAutoHideBehaviorLocal).empty()) { - pref_change_registrar_.Add( - prefs::kShelfAutoHideBehaviorLocal, - base::Bind(&ChromeLauncherControllerPerApp:: - SetShelfAutoHideBehaviorFromPrefs, - base::Unretained(this))); + if (prefs->GetString(prefs::kShelfAlignmentLocal).empty() || + prefs->GetString(prefs::kShelfAutoHideBehaviorLocal).empty()) { + prefs->AddObserver(this); } ash::Shell::GetInstance()->AddShellObserver(this); } @@ -796,6 +783,20 @@ void ChromeLauncherControllerPerApp::Observe( } } +void ChromeLauncherControllerPerApp::OnPreferenceChanged( + PrefServiceBase* service, + const std::string& pref_name) { + if (pref_name == prefs::kPinnedLauncherApps) { + UpdateAppLaunchersFromPref(); + } else if (pref_name == prefs::kShelfAlignmentLocal) { + SetShelfAlignmentFromPrefs(); + } else if (pref_name == prefs::kShelfAutoHideBehaviorLocal) { + SetShelfAutoHideBehaviorFromPrefs(); + } else { + NOTREACHED() << "Unexpected pref change for " << pref_name; + } +} + void ChromeLauncherControllerPerApp::OnShelfAlignmentChanged() { const char* pref_value = NULL; // TODO(oshima): Support multiple displays. @@ -864,10 +865,7 @@ void ChromeLauncherControllerPerApp::PersistPinnedState() { } } } - pref_change_registrar_.Add( - prefs::kPinnedLauncherApps, - base::Bind(&ChromeLauncherControllerPerApp::UpdateAppLaunchersFromPref, - base::Unretained(this))); + pref_change_registrar_.Add(prefs::kPinnedLauncherApps, this); } ash::LauncherModel* ChromeLauncherControllerPerApp::model() { diff --git a/chrome/browser/ui/ash/launcher/chrome_launcher_controller_per_app.h b/chrome/browser/ui/ash/launcher/chrome_launcher_controller_per_app.h index 2d61d90..8722d79 100644 --- a/chrome/browser/ui/ash/launcher/chrome_launcher_controller_per_app.h +++ b/chrome/browser/ui/ash/launcher/chrome_launcher_controller_per_app.h @@ -17,6 +17,7 @@ #include "base/compiler_specific.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" #include "chrome/browser/prefs/pref_service_observer.h" #include "chrome/browser/ui/ash/app_sync_ui_state_observer.h" @@ -59,6 +60,7 @@ class ChromeLauncherControllerPerApp public ash::ShellObserver, public ChromeLauncherController, public content::NotificationObserver, + public PrefObserver, public PrefServiceObserver, public AppSyncUIStateObserver { public: @@ -233,6 +235,10 @@ class ChromeLauncherControllerPerApp const content::NotificationSource& source, const content::NotificationDetails& details) OVERRIDE; + // Overridden from PrefObserver: + virtual void OnPreferenceChanged(PrefServiceBase* service, + const std::string& pref_name) OVERRIDE; + // Overridden from ash::ShellObserver: virtual void OnShelfAlignmentChanged() OVERRIDE; diff --git a/chrome/browser/ui/ash/launcher/chrome_launcher_controller_per_browser.cc b/chrome/browser/ui/ash/launcher/chrome_launcher_controller_per_browser.cc index 41ce382..4248c15 100644 --- a/chrome/browser/ui/ash/launcher/chrome_launcher_controller_per_browser.cc +++ b/chrome/browser/ui/ash/launcher/chrome_launcher_controller_per_browser.cc @@ -174,11 +174,7 @@ ChromeLauncherControllerPerBrowser::ChromeLauncherControllerPerBrowser( chrome::NOTIFICATION_EXTENSION_UNLOADED, content::Source<Profile>(profile_)); pref_change_registrar_.Init(profile_->GetPrefs()); - pref_change_registrar_.Add( - prefs::kPinnedLauncherApps, - base::Bind(&ChromeLauncherControllerPerBrowser:: - UpdateAppLaunchersFromPref, - base::Unretained(this))); + pref_change_registrar_.Add(prefs::kPinnedLauncherApps, this); } ChromeLauncherControllerPerBrowser::~ChromeLauncherControllerPerBrowser() { @@ -233,19 +229,9 @@ void ChromeLauncherControllerPerBrowser::Init() { SetShelfAutoHideBehaviorFromPrefs(); SetShelfAlignmentFromPrefs(); PrefService* prefs = profile_->GetPrefs(); - if (prefs->GetString(prefs::kShelfAlignmentLocal).empty()) { - pref_change_registrar_.Add( - prefs::kShelfAlignmentLocal, - base::Bind(&ChromeLauncherControllerPerBrowser:: - SetShelfAlignmentFromPrefs, - base::Unretained(this))); - } - if (prefs->GetString(prefs::kShelfAutoHideBehaviorLocal).empty()) { - pref_change_registrar_.Add( - prefs::kShelfAutoHideBehaviorLocal, - base::Bind(&ChromeLauncherControllerPerBrowser:: - SetShelfAutoHideBehaviorFromPrefs, - base::Unretained(this))); + if (prefs->GetString(prefs::kShelfAlignmentLocal).empty() || + prefs->GetString(prefs::kShelfAutoHideBehaviorLocal).empty()) { + prefs->AddObserver(this); } ash::Shell::GetInstance()->AddShellObserver(this); } @@ -802,6 +788,20 @@ void ChromeLauncherControllerPerBrowser::Observe( } } +void ChromeLauncherControllerPerBrowser::OnPreferenceChanged( + PrefServiceBase* service, + const std::string& pref_name) { + if (pref_name == prefs::kPinnedLauncherApps) { + UpdateAppLaunchersFromPref(); + } else if (pref_name == prefs::kShelfAlignmentLocal) { + SetShelfAlignmentFromPrefs(); + } else if (pref_name == prefs::kShelfAutoHideBehaviorLocal) { + SetShelfAutoHideBehaviorFromPrefs(); + } else { + NOTREACHED() << "Unexpected pref change for " << pref_name; + } +} + void ChromeLauncherControllerPerBrowser::OnShelfAlignmentChanged() { const char* pref_value = NULL; // TODO(oshima): Support multiple displays. @@ -870,11 +870,7 @@ void ChromeLauncherControllerPerBrowser::PersistPinnedState() { } } } - pref_change_registrar_.Add( - prefs::kPinnedLauncherApps, - base::Bind(&ChromeLauncherControllerPerBrowser:: - UpdateAppLaunchersFromPref, - base::Unretained(this))); + pref_change_registrar_.Add(prefs::kPinnedLauncherApps, this); } ash::LauncherModel* ChromeLauncherControllerPerBrowser::model() { diff --git a/chrome/browser/ui/ash/launcher/chrome_launcher_controller_per_browser.h b/chrome/browser/ui/ash/launcher/chrome_launcher_controller_per_browser.h index 5ef6ad1..49e1883 100644 --- a/chrome/browser/ui/ash/launcher/chrome_launcher_controller_per_browser.h +++ b/chrome/browser/ui/ash/launcher/chrome_launcher_controller_per_browser.h @@ -18,6 +18,7 @@ #include "base/compiler_specific.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" #include "chrome/browser/prefs/pref_service_observer.h" #include "chrome/browser/ui/ash/app_sync_ui_state_observer.h" @@ -60,6 +61,7 @@ class ChromeLauncherControllerPerBrowser public ash::ShellObserver, public ChromeLauncherController, public content::NotificationObserver, + public PrefObserver, public PrefServiceObserver, public AppSyncUIStateObserver { public: @@ -235,6 +237,10 @@ class ChromeLauncherControllerPerBrowser const content::NotificationSource& source, const content::NotificationDetails& details) OVERRIDE; + // Overridden from PrefObserver: + virtual void OnPreferenceChanged(PrefServiceBase* service, + const std::string& pref_name) OVERRIDE; + // Overridden from ash::ShellObserver: virtual void OnShelfAlignmentChanged() OVERRIDE; diff --git a/chrome/browser/ui/browser_command_controller.cc b/chrome/browser/ui/browser_command_controller.cc index 25ad1c7..f6ec7f5b 100644 --- a/chrome/browser/ui/browser_command_controller.cc +++ b/chrome/browser/ui/browser_command_controller.cc @@ -159,40 +159,16 @@ BrowserCommandController::BrowserCommandController(Browser* browser) PrefService* local_state = g_browser_process->local_state(); if (local_state) { local_pref_registrar_.Init(local_state); - local_pref_registrar_.Add( - prefs::kAllowFileSelectionDialogs, - base::Bind( - &BrowserCommandController::UpdateCommandsForFileSelectionDialogs, - base::Unretained(this))); - local_pref_registrar_.Add( - prefs::kInManagedMode, - base::Bind( - &BrowserCommandController::UpdateCommandsForMultipleProfiles, - base::Unretained(this))); + local_pref_registrar_.Add(prefs::kAllowFileSelectionDialogs, this); + local_pref_registrar_.Add(prefs::kInManagedMode, this); } profile_pref_registrar_.Init(profile()->GetPrefs()); - profile_pref_registrar_.Add( - prefs::kDevToolsDisabled, - base::Bind(&BrowserCommandController::UpdateCommandsForDevTools, - base::Unretained(this))); - profile_pref_registrar_.Add( - prefs::kEditBookmarksEnabled, - base::Bind(&BrowserCommandController::UpdateCommandsForBookmarkEditing, - base::Unretained(this))); - profile_pref_registrar_.Add( - prefs::kShowBookmarkBar, - base::Bind(&BrowserCommandController::UpdateCommandsForBookmarkBar, - base::Unretained(this))); - profile_pref_registrar_.Add( - prefs::kIncognitoModeAvailability, - base::Bind( - &BrowserCommandController::UpdateCommandsForIncognitoAvailability, - base::Unretained(this))); - profile_pref_registrar_.Add( - prefs::kPrintingEnabled, - base::Bind(&BrowserCommandController::UpdatePrintingState, - base::Unretained(this))); + profile_pref_registrar_.Add(prefs::kDevToolsDisabled, this); + profile_pref_registrar_.Add(prefs::kEditBookmarksEnabled, this); + profile_pref_registrar_.Add(prefs::kShowBookmarkBar, this); + profile_pref_registrar_.Add(prefs::kIncognitoModeAvailability, this); + profile_pref_registrar_.Add(prefs::kPrintingEnabled, this); InitCommandState(); @@ -708,6 +684,32 @@ void BrowserCommandController::Observe( } //////////////////////////////////////////////////////////////////////////////// +// PrefObserver implementation: + +void BrowserCommandController::OnPreferenceChanged( + PrefServiceBase* service, + const std::string& pref_name) { + if (pref_name == prefs::kPrintingEnabled) { + UpdatePrintingState(); + } else if (pref_name == prefs::kIncognitoModeAvailability) { + UpdateCommandsForIncognitoAvailability(); + } else if (pref_name == prefs::kDevToolsDisabled) { + UpdateCommandsForDevTools(); + } else if (pref_name == prefs::kEditBookmarksEnabled) { + UpdateCommandsForBookmarkEditing(); + } else if (pref_name == prefs::kShowBookmarkBar) { + UpdateCommandsForBookmarkBar(); + } else if (pref_name == prefs::kAllowFileSelectionDialogs) { + UpdateSaveAsState(); + UpdateOpenFileState(); + } else if (pref_name == prefs::kInManagedMode) { + UpdateCommandsForMultipleProfiles(); + } else { + NOTREACHED(); + } +} + +//////////////////////////////////////////////////////////////////////////////// // BrowserCommandController, TabStripModelObserver implementation: void BrowserCommandController::TabInsertedAt(WebContents* contents, @@ -1050,11 +1052,6 @@ void BrowserCommandController::UpdateCommandsForBookmarkBar() { show_main_ui); } -void BrowserCommandController::UpdateCommandsForFileSelectionDialogs() { - UpdateSaveAsState(); - UpdateOpenFileState(); -} - void BrowserCommandController::UpdateCommandsForFullscreenMode( FullScreenMode fullscreen_mode) { const bool show_main_ui = diff --git a/chrome/browser/ui/browser_command_controller.h b/chrome/browser/ui/browser_command_controller.h index e3f6afa..1d8e96c 100644 --- a/chrome/browser/ui/browser_command_controller.h +++ b/chrome/browser/ui/browser_command_controller.h @@ -6,6 +6,7 @@ #define CHROME_BROWSER_UI_BROWSER_COMMAND_CONTROLLER_H_ #include "base/prefs/public/pref_change_registrar.h" +#include "base/prefs/public/pref_observer.h" #include "chrome/browser/api/sync/profile_sync_service_observer.h" #include "chrome/browser/command_updater.h" #include "chrome/browser/sessions/tab_restore_service_observer.h" @@ -27,6 +28,7 @@ namespace chrome { class BrowserCommandController : public CommandUpdater::CommandUpdaterDelegate, public content::NotificationObserver, + public PrefObserver, public TabStripModelObserver, public TabRestoreServiceObserver, public ProfileSyncServiceObserver { @@ -86,6 +88,10 @@ class BrowserCommandController : public CommandUpdater::CommandUpdaterDelegate, const content::NotificationSource& source, const content::NotificationDetails& details) OVERRIDE; + // Overridden from PrefObserver: + virtual void OnPreferenceChanged(PrefServiceBase* service, + const std::string& pref_name) OVERRIDE; + // Overridden from TabStripModelObserver: virtual void TabInsertedAt(content::WebContents* contents, int index, @@ -133,10 +139,6 @@ class BrowserCommandController : public CommandUpdater::CommandUpdaterDelegate, // Updates commands that affect the bookmark bar. void UpdateCommandsForBookmarkBar(); - // Updates commands that affect file selection dialogs in aggregate, - // namely the save-page-as state and the open-file state. - void UpdateCommandsForFileSelectionDialogs(); - // Update commands whose state depends on the type of fullscreen mode the // window is in. void UpdateCommandsForFullscreenMode(FullScreenMode fullscreen_mode); diff --git a/chrome/browser/ui/cocoa/browser_window_cocoa.h b/chrome/browser/ui/cocoa/browser_window_cocoa.h index 4b8c901..1dbf224 100644 --- a/chrome/browser/ui/cocoa/browser_window_cocoa.h +++ b/chrome/browser/ui/cocoa/browser_window_cocoa.h @@ -8,6 +8,7 @@ #include "base/memory/scoped_nsobject.h" #include "base/memory/weak_ptr.h" #include "base/prefs/public/pref_change_registrar.h" +#include "base/prefs/public/pref_observer.h" #include "chrome/browser/bookmarks/bookmark_model.h" #include "chrome/browser/extensions/extension_keybinding_registry.h" #include "chrome/browser/ui/browser_window.h" @@ -31,6 +32,7 @@ class Extension; class BrowserWindowCocoa : public BrowserWindow, + public PrefObserver, public extensions::ExtensionKeybindingRegistry::Delegate { public: BrowserWindowCocoa(Browser* browser, @@ -144,6 +146,10 @@ class BrowserWindowCocoa : const gfx::Rect& rect) OVERRIDE; virtual void ShowAvatarBubbleFromAvatarButton() OVERRIDE; + // Overridden from NotificationObserver + virtual void OnPreferenceChanged(PrefServiceBase* service, + const std::string& pref_name) OVERRIDE; + // Overridden from ExtensionKeybindingRegistry::Delegate: virtual extensions::ActiveTabPermissionGranter* GetActiveTabPermissionGranter() OVERRIDE; @@ -158,7 +164,6 @@ class BrowserWindowCocoa : virtual void DestroyBrowser() OVERRIDE; private: - virtual void OnShowBookmarkBarChanged(); NSWindow* window() const; // Accessor for the (current) |NSWindow|. PrefChangeRegistrar pref_change_registrar_; diff --git a/chrome/browser/ui/cocoa/browser_window_cocoa.mm b/chrome/browser/ui/cocoa/browser_window_cocoa.mm index c3f4d37..e6b893d 100644 --- a/chrome/browser/ui/cocoa/browser_window_cocoa.mm +++ b/chrome/browser/ui/cocoa/browser_window_cocoa.mm @@ -89,10 +89,7 @@ BrowserWindowCocoa::BrowserWindowCocoa(Browser* browser, attention_request_id_(0) { pref_change_registrar_.Init(browser_->profile()->GetPrefs()); - pref_change_registrar_.Add( - prefs::kShowBookmarkBar, - base::Bind(&BrowserWindowCocoa::OnShowBookmarkBarChanged, - base::Unretained(this))); + pref_change_registrar_.Add(prefs::kShowBookmarkBar, this); gfx::Rect bounds; chrome::GetSavedWindowBoundsAndShowState(browser_, &bounds, @@ -617,7 +614,9 @@ bool BrowserWindowCocoa::GetConstrainedWindowTopY(int* top_y) { return false; } -void BrowserWindowCocoa::OnShowBookmarkBarChanged() { +void BrowserWindowCocoa::OnPreferenceChanged(PrefServiceBase* service, + const std::string& pref_name) { + DCHECK(pref_name == prefs::kShowBookmarkBar); [controller_ updateBookmarkBarVisibilityWithAnimation:YES]; } diff --git a/chrome/browser/ui/cocoa/browser_window_cocoa_unittest.mm b/chrome/browser/ui/cocoa/browser_window_cocoa_unittest.mm index 4ec71fd..16c630c 100644 --- a/chrome/browser/ui/cocoa/browser_window_cocoa_unittest.mm +++ b/chrome/browser/ui/cocoa/browser_window_cocoa_unittest.mm @@ -4,6 +4,7 @@ #include "base/memory/scoped_nsobject.h" #include "base/memory/scoped_ptr.h" +#include "base/prefs/public/pref_observer.h" #include "base/string_util.h" #include "chrome/browser/ui/bookmarks/bookmark_utils.h" #import "chrome/browser/ui/cocoa/browser_window_cocoa.h" @@ -19,7 +20,7 @@ // A BrowserWindowCocoa that goes PONG when // BOOKMARK_BAR_VISIBILITY_PREF_CHANGED is sent. This is so we can be // sure we are observing it. -class BrowserWindowCocoaPong : public BrowserWindowCocoa { +class BrowserWindowCocoaPong : public BrowserWindowCocoa, public PrefObserver { public: BrowserWindowCocoaPong(Browser* browser, BrowserWindowController* controller) @@ -28,8 +29,10 @@ class BrowserWindowCocoaPong : public BrowserWindowCocoa { } virtual ~BrowserWindowCocoaPong() { } - virtual void OnShowBookmarkBarChanged() OVERRIDE { - pong_ = true; + virtual void OnPreferenceChanged(PrefServiceBase* service, + const std::string& pref_name) OVERRIDE { + if (pref_name == prefs::kShowBookmarkBar) + pong_ = true; } bool pong_; diff --git a/chrome/browser/ui/cocoa/location_bar/location_bar_view_mac.h b/chrome/browser/ui/cocoa/location_bar/location_bar_view_mac.h index 3032241..b1505f6 100644 --- a/chrome/browser/ui/cocoa/location_bar/location_bar_view_mac.h +++ b/chrome/browser/ui/cocoa/location_bar/location_bar_view_mac.h @@ -13,6 +13,7 @@ #include "base/memory/scoped_ptr.h" #include "base/memory/scoped_vector.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/extensions/image_loading_tracker.h" #include "chrome/browser/ui/browser.h" @@ -45,7 +46,8 @@ class ZoomDecoration; class LocationBarViewMac : public LocationBar, public LocationBarTesting, public OmniboxEditController, - public content::NotificationObserver { + public content::NotificationObserver, + public PrefObserver { public: LocationBarViewMac(AutocompleteTextField* field, CommandUpdater* command_updater, @@ -178,6 +180,10 @@ class LocationBarViewMac : public LocationBar, const content::NotificationSource& source, const content::NotificationDetails& details) OVERRIDE; + // PrefObserver: + virtual void OnPreferenceChanged(PrefServiceBase* service, + const std::string& pref_name) OVERRIDE; + Browser* browser() const { return browser_; } private: @@ -190,8 +196,6 @@ class LocationBarViewMac : public LocationBar, // Clear the page-action decorations. void DeletePageActionDecorations(); - void OnEditBookmarksEnabledChanged(); - // Re-generate the page-action decorations from the profile's // extension service. void RefreshPageActionDecorations(); diff --git a/chrome/browser/ui/cocoa/location_bar/location_bar_view_mac.mm b/chrome/browser/ui/cocoa/location_bar/location_bar_view_mac.mm index d652f6c..e972af9 100644 --- a/chrome/browser/ui/cocoa/location_bar/location_bar_view_mac.mm +++ b/chrome/browser/ui/cocoa/location_bar/location_bar_view_mac.mm @@ -139,11 +139,8 @@ LocationBarViewMac::LocationBarViewMac( chrome::NOTIFICATION_EXTENSION_LOCATION_BAR_UPDATED, content::Source<Profile>(browser_->profile())); - edit_bookmarks_enabled_.Init( - prefs::kEditBookmarksEnabled, - profile_->GetPrefs(), - base::Bind(&LocationBarViewMac::OnEditBookmarksEnabledChanged, - base::Unretained(this))); + edit_bookmarks_enabled_.Init(prefs::kEditBookmarksEnabled, + profile_->GetPrefs(), this); } LocationBarViewMac::~LocationBarViewMac() { @@ -600,7 +597,8 @@ void LocationBarViewMac::Observe(int type, } } -void LocationBarViewMac::OnEditBookmarksEnabledChanged() { +void LocationBarViewMac::OnPreferenceChanged(PrefServiceBase* service, + const std::string& pref_name) { UpdateStarDecorationVisibility(); OnChanged(); } |