Index: chrome/browser/ui/toolbar/wrench_menu_model.cc |
diff --git a/chrome/browser/ui/toolbar/wrench_menu_model.cc b/chrome/browser/ui/toolbar/wrench_menu_model.cc |
index 228c7ef63356f2dfb5e0993986d70135f9fd4a23..5c6d0094f2618aa0832b30e3960d47b39572e1c4 100644 |
--- a/chrome/browser/ui/toolbar/wrench_menu_model.cc |
+++ b/chrome/browser/ui/toolbar/wrench_menu_model.cc |
@@ -225,16 +225,17 @@ WrenchMenuModel::WrenchMenuModel(ui::AcceleratorProvider* provider, |
: ALLOW_THIS_IN_INITIALIZER_LIST(ui::SimpleMenuModel(this)), |
provider_(provider), |
browser_(browser), |
- tab_strip_model_(browser_->tab_strip_model()) { |
+ tab_strip_model_(browser_->tab_strip_model()), |
+ zoom_callback_(base::Bind(&WrenchMenuModel::OnZoomLevelChanged, |
+ base::Unretained(this))) { |
Build(is_new_menu, supports_new_separators); |
UpdateZoomControls(); |
+ HostZoomMap::GetForBrowserContext( |
+ browser->profile())->AddZoomLevelChangedCallback(zoom_callback_); |
+ |
tab_strip_model_->AddObserver(this); |
- registrar_.Add( |
- this, content::NOTIFICATION_ZOOM_LEVEL_CHANGED, |
- content::Source<HostZoomMap>( |
- HostZoomMap::GetForBrowserContext(browser_->profile()))); |
registrar_.Add(this, content::NOTIFICATION_NAV_ENTRY_COMMITTED, |
content::NotificationService::AllSources()); |
} |
@@ -242,6 +243,9 @@ WrenchMenuModel::WrenchMenuModel(ui::AcceleratorProvider* provider, |
WrenchMenuModel::~WrenchMenuModel() { |
if (tab_strip_model_) |
tab_strip_model_->RemoveObserver(this); |
+ |
+ HostZoomMap::GetForBrowserContext( |
+ browser()->profile())->RemoveZoomLevelChangedCallback(zoom_callback_); |
} |
bool WrenchMenuModel::DoesCommandIdDismissMenu(int command_id) const { |
@@ -455,14 +459,8 @@ void WrenchMenuModel::TabStripModelDeleted() { |
void WrenchMenuModel::Observe(int type, |
const content::NotificationSource& source, |
const content::NotificationDetails& details) { |
- switch (type) { |
- case content::NOTIFICATION_ZOOM_LEVEL_CHANGED: |
- case content::NOTIFICATION_NAV_ENTRY_COMMITTED: |
- UpdateZoomControls(); |
- break; |
- default: |
- NOTREACHED(); |
- } |
+ DCHECK(type == content::NOTIFICATION_NAV_ENTRY_COMMITTED); |
+ UpdateZoomControls(); |
} |
// For testing. |
@@ -754,3 +752,8 @@ GlobalError* WrenchMenuModel::GetActiveSignedInServiceError() const { |
} |
return NULL; |
} |
+ |
+void WrenchMenuModel::OnZoomLevelChanged(const std::string& host) { |
+ UpdateZoomControls(); |
+} |
+ |