Index: chrome/browser/ui/cocoa/extensions/extension_action_view_controller_cocoa.mm |
diff --git a/chrome/browser/ui/cocoa/extensions/extension_action_view_controller_cocoa.mm b/chrome/browser/ui/cocoa/extensions/extension_action_view_controller_cocoa.mm |
new file mode 100644 |
index 0000000000000000000000000000000000000000..07a4a8936a4a7601929b2b0cf21ccef68b242874 |
--- /dev/null |
+++ b/chrome/browser/ui/cocoa/extensions/extension_action_view_controller_cocoa.mm |
@@ -0,0 +1,72 @@ |
+// Copyright 2014 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#import "chrome/browser/ui/cocoa/extensions/extension_action_view_controller_cocoa.h" |
+ |
+#import "chrome/browser/ui/cocoa/extensions/extension_popup_controller.h" |
+#import "chrome/browser/ui/cocoa/toolbar/toolbar_action_view_delegate_cocoa.h" |
+#include "extensions/common/extension.h" |
+ |
+ExtensionActionViewControllerCocoa::ExtensionActionViewControllerCocoa( |
+ const extensions::Extension* extension, |
+ Browser* browser, |
+ ExtensionAction* extension_action) |
+ : ExtensionActionViewController(extension, browser, extension_action) { |
+} |
+ |
+ExtensionActionViewControllerCocoa::~ExtensionActionViewControllerCocoa() { |
+} |
+ |
+gfx::NativeView ExtensionActionViewControllerCocoa::GetPopupNativeView() { |
+ ExtensionPopupController* popup = GetPopup(); |
+ return popup != nil ? [popup view] : nullptr; |
+} |
+ |
+bool ExtensionActionViewControllerCocoa::IsMenuRunning() const { |
+ // TODO(devlin): Also account for context menus. |
+ return GetPopup() != nil; |
+} |
+ |
+void ExtensionActionViewControllerCocoa::RegisterCommand() { |
+ // Commands are handled elsewhere for cocoa. |
+} |
+ |
+bool ExtensionActionViewControllerCocoa::IsShowingPopup() const { |
+ return GetPopup() != nil; |
+} |
+ |
+void ExtensionActionViewControllerCocoa::CloseActivePopup() { |
+ ExtensionPopupController* popup = [ExtensionPopupController popup]; |
+ if (popup) |
+ [popup close]; |
+} |
+ |
+void ExtensionActionViewControllerCocoa::ClosePopupImpl() { |
+ ExtensionPopupController* popup = GetPopup(); |
+ DCHECK(popup); |
+ [popup close]; |
+} |
+ |
+bool ExtensionActionViewControllerCocoa::ShowPopupWithUrlImpl( |
+ PopupShowAction show_action, |
+ const GURL& popup_url, |
+ bool grant_tab_permissions) { |
+ NSPoint arrowPoint = GetDelegateCocoa()->GetPopupPoint(); |
+ [ExtensionPopupController showURL:popup_url |
+ inBrowser:browser() |
+ anchoredAt:arrowPoint |
+ arrowLocation:info_bubble::kTopRight |
+ devMode:NO]; |
+ return true; |
+} |
+ |
+ToolbarActionViewDelegateCocoa* |
+ExtensionActionViewControllerCocoa::GetDelegateCocoa() { |
+ return static_cast<ToolbarActionViewDelegateCocoa*>(delegate()); |
+} |
+ |
+ExtensionPopupController* ExtensionActionViewControllerCocoa::GetPopup() const { |
+ ExtensionPopupController* popup = [ExtensionPopupController popup]; |
+ return popup && [popup extensionId] == extension()->id() ? popup : nil; |
+} |