| 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 6956729ee736ccf0d0f93985adef7ddee38169a3..c24ce72e75d39ef854a646af80f59b01cdfab39a 100644
|
| --- a/chrome/browser/ui/toolbar/wrench_menu_model.cc
|
| +++ b/chrome/browser/ui/toolbar/wrench_menu_model.cc
|
| @@ -212,16 +212,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());
|
| }
|
| @@ -229,6 +230,11 @@ WrenchMenuModel::WrenchMenuModel(ui::AcceleratorProvider* provider,
|
| WrenchMenuModel::~WrenchMenuModel() {
|
| if (tab_strip_model_)
|
| tab_strip_model_->RemoveObserver(this);
|
| +
|
| + if (browser()) {
|
| + HostZoomMap::GetForBrowserContext(
|
| + browser()->profile())->RemoveZoomLevelChangedCallback(zoom_callback_);
|
| + }
|
| }
|
|
|
| bool WrenchMenuModel::DoesCommandIdDismissMenu(int command_id) const {
|
| @@ -421,14 +427,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.
|
| @@ -697,3 +697,7 @@ void WrenchMenuModel::UpdateZoomControls() {
|
| zoom_label_ = l10n_util::GetStringFUTF16(
|
| IDS_ZOOM_PERCENT, base::IntToString16(zoom_percent));
|
| }
|
| +
|
| +void WrenchMenuModel::OnZoomLevelChanged(const std::string& host) {
|
| + UpdateZoomControls();
|
| +}
|
|
|