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..868b0bf7f75740eeeb60af2a74c130f2cde1d19b 100644 |
--- a/chrome/browser/ui/toolbar/wrench_menu_model.cc |
+++ b/chrome/browser/ui/toolbar/wrench_menu_model.cc |
@@ -229,12 +229,13 @@ WrenchMenuModel::WrenchMenuModel(ui::AcceleratorProvider* provider, |
Build(is_new_menu, supports_new_separators); |
UpdateZoomControls(); |
+ HostZoomMap::GetForBrowserContext( |
+ browser->profile())->AddZoomLevelChangedCallback( |
+ base::Bind(&WrenchMenuModel::OnZoomLevelChanged, |
+ base::Unretained(this))); |
+ |
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,11 @@ WrenchMenuModel::WrenchMenuModel(ui::AcceleratorProvider* provider, |
WrenchMenuModel::~WrenchMenuModel() { |
if (tab_strip_model_) |
tab_strip_model_->RemoveObserver(this); |
+ |
+ HostZoomMap::GetForBrowserContext( |
+ browser()->profile())->RemoveZoomLevelChangedCallback( |
+ base::Bind(&WrenchMenuModel::OnZoomLevelChanged, |
+ base::Unretained(this))); |
} |
bool WrenchMenuModel::DoesCommandIdDismissMenu(int command_id) const { |
@@ -452,17 +458,15 @@ void WrenchMenuModel::TabStripModelDeleted() { |
tab_strip_model_ = NULL; |
} |
+void WrenchMenuModel::OnZoomLevelChanged(const std::string& host) { |
+ UpdateZoomControls(); |
+} |
+ |
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. |