Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(7110)

Unified Diff: chrome/browser/ui/cocoa/wrench_menu/wrench_menu_controller.mm

Issue 12039058: content: convert zoom notifications to observer usage (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase Created 7 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/ui/cocoa/wrench_menu/wrench_menu_controller.mm
diff --git a/chrome/browser/ui/cocoa/wrench_menu/wrench_menu_controller.mm b/chrome/browser/ui/cocoa/wrench_menu/wrench_menu_controller.mm
index bb87814f2896e20f95747e4c117753272f6008ea..8f1cc87966e65a5fa7ccb986e12c274901658738 100644
--- a/chrome/browser/ui/cocoa/wrench_menu/wrench_menu_controller.mm
+++ b/chrome/browser/ui/cocoa/wrench_menu/wrench_menu_controller.mm
@@ -22,11 +22,6 @@
#import "chrome/browser/ui/cocoa/wrench_menu/recent_tabs_menu_model_delegate.h"
#include "chrome/browser/ui/toolbar/recent_tabs_sub_menu_model.h"
#include "chrome/browser/ui/toolbar/wrench_menu_model.h"
-#include "content/public/browser/host_zoom_map.h"
-#include "content/public/browser/notification_observer.h"
-#include "content/public/browser/notification_service.h"
-#include "content/public/browser/notification_source.h"
-#include "content/public/browser/notification_types.h"
#include "content/public/browser/user_metrics.h"
#include "grit/chromium_strings.h"
#include "grit/generated_resources.h"
@@ -64,35 +59,36 @@ class AcceleratorDelegate : public ui::AcceleratorProvider {
}
};
-class ZoomLevelObserver : public content::NotificationObserver {
+class ZoomLevelObserver {
public:
- explicit ZoomLevelObserver(WrenchMenuController* controller)
- : controller_(controller) {
- registrar_.Add(
- this, content::NOTIFICATION_ZOOM_LEVEL_CHANGED,
- content::NotificationService::AllBrowserContextsAndSources());
+ ZoomLevelObserver(WrenchMenuController* controller,
+ content::HostZoomMap* map)
+ : callback_(base::Bind(&ZoomLevelObserver::OnZoomLevelChanged,
+ base::Unretained(this))),
+ controller_(controller),
+ map_(map) {
+ map_->AddZoomLevelChangedCallback(callback_);
}
- void Observe(int type,
- const content::NotificationSource& source,
- const content::NotificationDetails& details) {
- DCHECK_EQ(type, content::NOTIFICATION_ZOOM_LEVEL_CHANGED);
- WrenchMenuModel* wrenchMenuModel = [controller_ wrenchMenuModel];
- if (HostZoomMap::GetForBrowserContext(
- wrenchMenuModel->browser()->profile()) !=
- content::Source<HostZoomMap>(source).ptr()) {
- return;
- }
+ ~ZoomLevelObserver() {
+ map_->RemoveZoomLevelChangedCallback(callback_);
+ }
+ private:
+ void OnZoomLevelChanged(const std::string& host) {
+ WrenchMenuModel* wrenchMenuModel = [controller_ wrenchMenuModel];
wrenchMenuModel->UpdateZoomControls();
const string16 level =
wrenchMenuModel->GetLabelForCommandId(IDC_ZOOM_PERCENT_DISPLAY);
[[controller_ zoomDisplay] setTitle:SysUTF16ToNSString(level)];
}
- private:
- content::NotificationRegistrar registrar_;
+ content::HostZoomMap::ZoomLevelChangedCallback callback_;
+
WrenchMenuController* controller_; // Weak; owns this.
+ content::HostZoomMap* map_; // Weak.
+
+ DISALLOW_COPY_AND_ASSIGN(ZoomLevelObserver);
};
} // namespace WrenchMenuControllerInternal
@@ -102,7 +98,8 @@ class ZoomLevelObserver : public content::NotificationObserver {
- (id)initWithBrowser:(Browser*)browser {
if ((self = [super init])) {
browser_ = browser;
- observer_.reset(new WrenchMenuControllerInternal::ZoomLevelObserver(self));
+ observer_.reset(new WrenchMenuControllerInternal::ZoomLevelObserver(
+ self, content::HostZoomMap::GetForBrowserContext(browser->profile())));
acceleratorDelegate_.reset(
new WrenchMenuControllerInternal::AcceleratorDelegate());
[self createModel];
« no previous file with comments | « chrome/browser/ui/browser_browsertest.cc ('k') | chrome/browser/ui/cocoa/wrench_menu/wrench_menu_controller_unittest.mm » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698