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

Unified Diff: chrome/browser/ui/cocoa/extensions/browser_action_button.mm

Issue 703443002: Move more extension action cocoa logic into the platform delegate (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@dc_toolbar_abstract_extension_action
Patch Set: Created 6 years, 1 month 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/extensions/browser_action_button.mm
diff --git a/chrome/browser/ui/cocoa/extensions/browser_action_button.mm b/chrome/browser/ui/cocoa/extensions/browser_action_button.mm
index b8bc8885aeeb977e122dc02c0067e00275bc7be5..3dd70481b4bdf1de6c11c47af5d6353c17af301e 100644
--- a/chrome/browser/ui/cocoa/extensions/browser_action_button.mm
+++ b/chrome/browser/ui/cocoa/extensions/browser_action_button.mm
@@ -40,12 +40,18 @@ class ToolbarActionViewDelegateBridge : public ToolbarActionViewDelegateCocoa {
BrowserActionsController* controller);
~ToolbarActionViewDelegateBridge();
+ ExtensionActionContextMenuController* menuController() {
+ return menuController_;
+ }
+
private:
// ToolbarActionViewDelegateCocoa:
ToolbarActionViewController* GetPreferredPopupViewController() override;
content::WebContents* GetCurrentWebContents() const override;
void UpdateState() override;
NSPoint GetPopupPoint() override;
+ void SetContextMenuController(
+ ExtensionActionContextMenuController* menuController) override;
// The owning button. Weak.
BrowserActionButton* owner_;
@@ -53,6 +59,9 @@ class ToolbarActionViewDelegateBridge : public ToolbarActionViewDelegateCocoa {
// The BrowserActionsController that owns the button. Weak.
BrowserActionsController* controller_;
+ // The context menu controller. Weak.
+ ExtensionActionContextMenuController* menuController_;
+
DISALLOW_COPY_AND_ASSIGN(ToolbarActionViewDelegateBridge);
};
@@ -60,7 +69,8 @@ ToolbarActionViewDelegateBridge::ToolbarActionViewDelegateBridge(
BrowserActionButton* owner,
BrowserActionsController* controller)
: owner_(owner),
- controller_(controller) {
+ controller_(controller),
+ menuController_(nil) {
}
ToolbarActionViewDelegateBridge::~ToolbarActionViewDelegateBridge() {
@@ -84,6 +94,11 @@ NSPoint ToolbarActionViewDelegateBridge::GetPopupPoint() {
return [controller_ popupPointForId:[owner_ viewController]->GetId()];
}
+void ToolbarActionViewDelegateBridge::SetContextMenuController(
+ ExtensionActionContextMenuController* menuController) {
+ menuController_ = menuController;
+}
+
@interface BrowserActionCell (Internals)
- (void)drawBadgeWithinFrame:(NSRect)frame;
@end
@@ -102,8 +117,7 @@ NSPoint ToolbarActionViewDelegateBridge::GetPopupPoint() {
- (id)initWithFrame:(NSRect)frame
viewController:(scoped_ptr<ToolbarActionViewController>)viewController
- controller:(BrowserActionsController*)controller
- menuController:(ExtensionActionContextMenuController*)menuController {
+ controller:(BrowserActionsController*)controller {
if ((self = [super initWithFrame:frame])) {
BrowserActionCell* cell = [[[BrowserActionCell alloc] init] autorelease];
// [NSButton setCell:] warns to NOT use setCell: other than in the
@@ -138,8 +152,6 @@ NSPoint ToolbarActionViewDelegateBridge::GetPopupPoint() {
[self setButtonType:NSMomentaryChangeButton];
[self setShowsBorderOnlyWhileMouseInside:YES];
- contextMenuController_.reset(menuController);
-
base::scoped_nsobject<NSMenu> contextMenu(
[[NSMenu alloc] initWithTitle:@""]);
[contextMenu setDelegate:self];
@@ -300,7 +312,10 @@ NSPoint ToolbarActionViewDelegateBridge::GetPopupPoint() {
- (void)menuNeedsUpdate:(NSMenu*)menu {
[menu removeAllItems];
- [contextMenuController_ populateMenu:menu];
+ // |menuController()| can be nil if we don't show context menus for the given
+ // action.
+ if (viewControllerDelegate_->menuController())
+ [viewControllerDelegate_->menuController() populateMenu:menu];
}
@end

Powered by Google App Engine
This is Rietveld 408576698