| 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();
|
| +}
|
| +
|
|
|