Chromium Code Reviews| Index: chrome/browser/ui/cocoa/extensions/browser_actions_controller.mm |
| diff --git a/chrome/browser/ui/cocoa/extensions/browser_actions_controller.mm b/chrome/browser/ui/cocoa/extensions/browser_actions_controller.mm |
| index a17f3d8cde36d18dbab3e47d97209012f9400896..cdc9840e3e99f1cbd433b45ce140e7d7500ae48b 100644 |
| --- a/chrome/browser/ui/cocoa/extensions/browser_actions_controller.mm |
| +++ b/chrome/browser/ui/cocoa/extensions/browser_actions_controller.mm |
| @@ -140,6 +140,10 @@ const CGFloat kBrowserActionBubbleYOffset = 3.0; |
| // Handles when the given BrowserActionButton object is clicked. |
| - (void)browserActionClicked:(BrowserActionButton*)button; |
| +// Triggers opening the popup window for an extension without a user action. |
| +// Used by an extension API that opens an extension's popup. |
| +- (void)openPopup:(const Extension*)extension; |
| + |
| // Returns whether the given extension should be displayed. Only displays |
| // incognito-enabled extensions in incognito mode. Otherwise returns YES. |
| - (BOOL)shouldDisplayBrowserAction:(const Extension*)extension; |
| @@ -238,6 +242,14 @@ class ExtensionServiceObserverBridge : public content::NotificationObserver, |
| [owner_ resizeContainerAndAnimate:NO]; |
| } |
| + virtual void BrowserActionShowPopup(const Extension* extension) OVERRIDE { |
| + content::WebContents* active_tab = |
| + browser_->tab_strip_model()->GetActiveWebContents(); |
| + if (!active_tab) |
| + return; |
| + [owner_ openPopup:extension]; |
| + } |
| + |
| private: |
| // The object we need to inform when we get a notification. Weak. Owns us. |
| BrowserActionsController* owner_; |
| @@ -739,6 +751,26 @@ class ExtensionServiceObserverBridge : public content::NotificationObserver, |
| } |
| } |
| +- (void)openPopup:(const Extension*)extension { |
| + const GURL popupUrl = toolbarModel_->GetPopupUrl(extension, browser_); |
| + if (!popupUrl.is_empty()) { |
| + NSPoint arrowPoint = [self popupPointForBrowserAction:extension]; |
| + if (NSEqualPoints(arrowPoint, NSZeroPoint)) { |
| + // The button is hidden if arrowPoint is zero. |
| + |
| + // TODO(justinlin): This is not right.. position below hotdog menu. |
|
mark a. foltz
2013/10/11 20:25:30
When an extension is installed into the overflow b
justinlin
2013/10/16 07:06:48
Right. It's a bit unclear how to plumb that in rig
|
| + arrowPoint = NSMakePoint(NSWidth([containerView_ frame]), |
| + kBrowserActionOriginYOffset); |
| + } |
| + |
| + [ExtensionPopupController showURL:popupUrl |
| + inBrowser:browser_ |
| + anchoredAt:arrowPoint |
| + arrowLocation:info_bubble::kTopRight |
| + devMode:NO]; |
| + } |
| +} |
| + |
| - (void)browserActionClicked:(BrowserActionButton*)button { |
| const Extension* extension = [button extension]; |
| GURL popupUrl; |