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

Side by Side Diff: chrome/browser/ui/cocoa/wrench_menu/wrench_menu_controller.mm

Issue 23851016: Convert zoom callbacks to use CallbackRegistry (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Pure merge Created 7 years, 2 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #import "chrome/browser/ui/cocoa/wrench_menu/wrench_menu_controller.h" 5 #import "chrome/browser/ui/cocoa/wrench_menu/wrench_menu_controller.h"
6 6
7 #include "base/basictypes.h" 7 #include "base/basictypes.h"
8 #include "base/mac/bundle_locations.h" 8 #include "base/mac/bundle_locations.h"
9 #include "base/mac/mac_util.h" 9 #include "base/mac/mac_util.h"
10 #include "base/strings/string16.h" 10 #include "base/strings/string16.h"
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
59 return false; 59 return false;
60 *out_accelerator = *accelerator; 60 *out_accelerator = *accelerator;
61 return true; 61 return true;
62 } 62 }
63 }; 63 };
64 64
65 class ZoomLevelObserver { 65 class ZoomLevelObserver {
66 public: 66 public:
67 ZoomLevelObserver(WrenchMenuController* controller, 67 ZoomLevelObserver(WrenchMenuController* controller,
68 content::HostZoomMap* map) 68 content::HostZoomMap* map)
69 : callback_(base::Bind(&ZoomLevelObserver::OnZoomLevelChanged, 69 : controller_(controller),
70 base::Unretained(this))),
71 controller_(controller),
72 map_(map) { 70 map_(map) {
73 map_->AddZoomLevelChangedCallback(callback_); 71 subscription_ = map_->AddZoomLevelChangedCallback(
72 base::Bind(&ZoomLevelObserver::OnZoomLevelChanged,
73 base::Unretained(this)));
74 } 74 }
75 75
76 ~ZoomLevelObserver() { 76 ~ZoomLevelObserver() {}
77 map_->RemoveZoomLevelChangedCallback(callback_);
78 }
79 77
80 private: 78 private:
81 void OnZoomLevelChanged(const HostZoomMap::ZoomLevelChange& change) { 79 void OnZoomLevelChanged(const HostZoomMap::ZoomLevelChange& change) {
82 WrenchMenuModel* wrenchMenuModel = [controller_ wrenchMenuModel]; 80 WrenchMenuModel* wrenchMenuModel = [controller_ wrenchMenuModel];
83 wrenchMenuModel->UpdateZoomControls(); 81 wrenchMenuModel->UpdateZoomControls();
84 const string16 level = 82 const string16 level =
85 wrenchMenuModel->GetLabelForCommandId(IDC_ZOOM_PERCENT_DISPLAY); 83 wrenchMenuModel->GetLabelForCommandId(IDC_ZOOM_PERCENT_DISPLAY);
86 [[controller_ zoomDisplay] setTitle:SysUTF16ToNSString(level)]; 84 [[controller_ zoomDisplay] setTitle:SysUTF16ToNSString(level)];
87 } 85 }
88 86
89 content::HostZoomMap::ZoomLevelChangedCallback callback_; 87 scoped_ptr<content::HostZoomMap::Subscription> subscription_;
90 88
91 WrenchMenuController* controller_; // Weak; owns this. 89 WrenchMenuController* controller_; // Weak; owns this.
92 content::HostZoomMap* map_; // Weak. 90 content::HostZoomMap* map_; // Weak.
93 91
94 DISALLOW_COPY_AND_ASSIGN(ZoomLevelObserver); 92 DISALLOW_COPY_AND_ASSIGN(ZoomLevelObserver);
95 }; 93 };
96 94
97 } // namespace WrenchMenuControllerInternal 95 } // namespace WrenchMenuControllerInternal
98 96
99 @implementation WrenchMenuController 97 @implementation WrenchMenuController
(...skipping 307 matching lines...) Expand 10 before | Expand all | Expand 10 after
407 controller_ = controller; 405 controller_ = controller;
408 } 406 }
409 return self; 407 return self;
410 } 408 }
411 409
412 - (IBAction)dispatchWrenchMenuCommand:(id)sender { 410 - (IBAction)dispatchWrenchMenuCommand:(id)sender {
413 [controller_ dispatchWrenchMenuCommand:sender]; 411 [controller_ dispatchWrenchMenuCommand:sender];
414 } 412 }
415 413
416 @end // @implementation WrenchMenuButtonViewController 414 @end // @implementation WrenchMenuButtonViewController
OLDNEW
« no previous file with comments | « chrome/browser/ui/cocoa/location_bar/zoom_decoration_browsertest.mm ('k') | chrome/browser/ui/gtk/browser_toolbar_gtk.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698