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 |
new file mode 100644 |
index 0000000000000000000000000000000000000000..4a8f765571e1660989c9ca9d512fb68a37f7cd6d |
--- /dev/null |
+++ b/chrome/browser/ui/cocoa/extensions/extension_action_platform_delegate_cocoa.mm |
@@ -0,0 +1,83 @@ |
+// 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_platform_delegate_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" |
+ |
+// static |
+scoped_ptr<ExtensionActionPlatformDelegate> |
+ExtensionActionPlatformDelegate::Create( |
+ ExtensionActionViewController* controller) { |
+ return make_scoped_ptr(new ExtensionActionPlatformDelegateCocoa(controller)); |
+} |
+ |
+ExtensionActionPlatformDelegateCocoa::ExtensionActionPlatformDelegateCocoa( |
+ ExtensionActionViewController* controller) |
+ : controller_(controller) { |
+} |
+ |
+ExtensionActionPlatformDelegateCocoa::~ExtensionActionPlatformDelegateCocoa() { |
+} |
+ |
+gfx::NativeView ExtensionActionPlatformDelegateCocoa::GetPopupNativeView() { |
+ ExtensionPopupController* popup = GetPopup(); |
+ return popup != nil ? [popup view] : nullptr; |
Avi (use Gerrit)
2014/10/30 23:21:26
NativeView is an NSView, so nil rather than nullpt
Devlin
2014/10/31 17:50:43
Done.
|
+} |
+ |
+bool ExtensionActionPlatformDelegateCocoa::IsMenuRunning() const { |
+ // TODO(devlin): Also account for context menus. |
+ return GetPopup() != nil; |
+} |
+ |
+void ExtensionActionPlatformDelegateCocoa::RegisterCommand() { |
+ // Commands are handled elsewhere for cocoa. |
+} |
+ |
+void ExtensionActionPlatformDelegateCocoa::OnDelegateSet() { |
+} |
+ |
+bool ExtensionActionPlatformDelegateCocoa::IsShowingPopup() const { |
+ return GetPopup() != nil; |
+} |
+ |
+void ExtensionActionPlatformDelegateCocoa::CloseActivePopup() { |
+ ExtensionPopupController* popup = [ExtensionPopupController popup]; |
+ if (popup) |
+ [popup close]; |
+} |
+ |
+void ExtensionActionPlatformDelegateCocoa::CloseOwnPopup() { |
+ ExtensionPopupController* popup = GetPopup(); |
+ DCHECK(popup); |
+ [popup close]; |
+} |
+ |
+bool ExtensionActionPlatformDelegateCocoa::ShowPopupWithUrl( |
+ ExtensionActionViewController::PopupShowAction show_action, |
+ const GURL& popup_url, |
+ bool grant_tab_permissions) { |
+ NSPoint arrowPoint = GetDelegateCocoa()->GetPopupPoint(); |
+ [ExtensionPopupController showURL:popup_url |
+ inBrowser:controller_->browser() |
+ anchoredAt:arrowPoint |
+ arrowLocation:info_bubble::kTopRight |
+ devMode:NO]; |
+ return true; |
+} |
+ |
+ToolbarActionViewDelegateCocoa* |
+ExtensionActionPlatformDelegateCocoa::GetDelegateCocoa() { |
+ return static_cast<ToolbarActionViewDelegateCocoa*>( |
+ controller_->view_delegate()); |
+} |
+ |
+ExtensionPopupController* ExtensionActionPlatformDelegateCocoa::GetPopup() |
+ const { |
+ ExtensionPopupController* popup = [ExtensionPopupController popup]; |
+ return popup && [popup extensionId] == controller_->extension()->id() ? |
+ popup : nil; |
+} |