Index: chrome/browser/ui/cocoa/extensions/extension_action_platform_delegate_cocoa.mm |
diff --git a/chrome/browser/ui/cocoa/extensions/extension_action_platform_delegate_cocoa.mm b/chrome/browser/ui/cocoa/extensions/extension_action_platform_delegate_cocoa.mm |
index 16b9a45921682aa0c178335be08b0db464522fc1..716e2626a337067ca79b37f7195f7c08b97da49e 100644 |
--- a/chrome/browser/ui/cocoa/extensions/extension_action_platform_delegate_cocoa.mm |
+++ b/chrome/browser/ui/cocoa/extensions/extension_action_platform_delegate_cocoa.mm |
@@ -12,10 +12,12 @@ |
#include "chrome/browser/ui/browser.h" |
#include "chrome/browser/ui/browser_window.h" |
#import "chrome/browser/ui/cocoa/browser_window_controller.h" |
+#import "chrome/browser/ui/cocoa/extensions/browser_actions_controller.h" |
#import "chrome/browser/ui/cocoa/extensions/extension_popup_controller.h" |
-#import "chrome/browser/ui/cocoa/toolbar/toolbar_action_view_delegate_cocoa.h" |
+#import "chrome/browser/ui/cocoa/location_bar/location_bar_view_mac.h" |
#import "chrome/browser/ui/cocoa/toolbar/toolbar_controller.h" |
#import "chrome/browser/ui/cocoa/wrench_menu/wrench_menu_controller.h" |
+#include "chrome/browser/ui/toolbar/toolbar_action_view_delegate.h" |
#include "chrome/common/extensions/api/extension_action/action_info.h" |
#include "content/public/browser/notification_details.h" |
#include "content/public/browser/notification_source.h" |
@@ -83,8 +85,6 @@ ExtensionActionPlatformDelegateCocoa::ShowPopupWithUrl( |
ExtensionActionViewController::PopupShowAction show_action, |
const GURL& popup_url, |
bool grant_tab_permissions) { |
- NSPoint arrowPoint = GetDelegateCocoa()->GetPopupPoint(); |
- |
// If this was triggered by an action overflowed to the wrench menu, then |
// the wrench menu will be open. Close it before opening the popup. |
WrenchMenuController* wrenchMenuController = |
@@ -100,16 +100,29 @@ ExtensionActionPlatformDelegateCocoa::ShowPopupWithUrl( |
ExtensionPopupController* popupController = |
[ExtensionPopupController showURL:popup_url |
inBrowser:controller_->browser() |
- anchoredAt:arrowPoint |
+ anchoredAt:GetPopupPoint() |
arrowLocation:info_bubble::kTopRight |
devMode:devMode]; |
return [popupController extensionViewHost]; |
} |
-ToolbarActionViewDelegateCocoa* |
-ExtensionActionPlatformDelegateCocoa::GetDelegateCocoa() { |
- return static_cast<ToolbarActionViewDelegateCocoa*>( |
- controller_->view_delegate()); |
+NSPoint ExtensionActionPlatformDelegateCocoa::GetPopupPoint() const { |
+ BrowserWindowController* windowController = |
+ [BrowserWindowController browserWindowControllerForWindow: |
+ controller_->browser()->window()->GetNativeWindow()]; |
+ NSPoint popupPoint; |
+ if (controller_->extension_action()->action_type() == |
+ extensions::ActionInfo::TYPE_PAGE) { |
+ popupPoint = [windowController locationBarBridge]->GetPageActionBubblePoint( |
+ controller_->extension_action()); |
+ } else { |
+ DCHECK_EQ(extensions::ActionInfo::TYPE_BROWSER, |
+ controller_->extension_action()->action_type()); |
+ BrowserActionsController* actionsController = |
+ [[windowController toolbarController] browserActionsController]; |
+ popupPoint = [actionsController popupPointForId:controller_->GetId()]; |
+ } |
+ return popupPoint; |
} |
void ExtensionActionPlatformDelegateCocoa::Observe( |