Chromium Code Reviews| 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; |
| +} |