// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#import <Cocoa/Cocoa.h>
-
#include "chrome/browser/ui/cocoa/extensions/extension_view_mac.h"
-#include "chrome/browser/extensions/extension_host.h"
+#import <Cocoa/Cocoa.h>
+
+#include "base/mac/foundation_util.h"
+#include "chrome/browser/extensions/extension_view_host.h"
+#import "chrome/browser/ui/cocoa/chrome_event_processing_window.h"
#include "content/public/browser/render_view_host.h"
#include "content/public/browser/render_widget_host_view.h"
#include "content/public/browser/web_contents.h"
-#include "content/public/browser/web_contents_view.h"
+#include "extensions/browser/extension_host.h"
#include "extensions/common/view_type.h"
// The minimum/maximum dimensions of the popup.
extension_host_(extension_host),
container_(NULL) {
DCHECK(extension_host_);
- [native_view() setHidden:YES];
+ [GetNativeView() setHidden:YES];
}
ExtensionViewMac::~ExtensionViewMac() {
}
-void ExtensionViewMac::Init() {
- CreateWidgetHostView();
+void ExtensionViewMac::WindowFrameChanged() {
+ if (render_view_host()->GetView())
+ render_view_host()->GetView()->WindowFrameChanged();
}
-gfx::NativeView ExtensionViewMac::native_view() {
- return extension_host_->host_contents()->GetView()->GetNativeView();
+void ExtensionViewMac::Init() {
+ CreateWidgetHostView();
}
-content::RenderViewHost* ExtensionViewMac::render_view_host() const {
- return extension_host_->render_view_host();
+Browser* ExtensionViewMac::GetBrowser() {
+ return browser_;
}
-void ExtensionViewMac::DidStopLoading() {
- ShowIfCompletelyLoaded();
+gfx::NativeView ExtensionViewMac::GetNativeView() {
+ return extension_host_->host_contents()->GetNativeView();
}
void ExtensionViewMac::ResizeDueToAutoResize(const gfx::Size& new_size) {
}
}
-void ExtensionViewMac::WindowFrameChanged() {
- if (render_view_host()->GetView())
- render_view_host()->GetView()->WindowFrameChanged();
+void ExtensionViewMac::HandleKeyboardEvent(
+ content::WebContents* source,
+ const content::NativeWebKeyboardEvent& event) {
+ if (event.skip_in_browser ||
+ event.type == content::NativeWebKeyboardEvent::Char ||
+ extension_host_->extension_host_type() !=
+ extensions::VIEW_TYPE_EXTENSION_POPUP)
+ return;
+
+ ChromeEventProcessingWindow* event_window =
+ base::mac::ObjCCastStrict<ChromeEventProcessingWindow>(
+ [GetNativeView() window]);
+ [event_window redispatchKeyEvent:event.os_event];
+}
+
+void ExtensionViewMac::DidStopLoading() {
+ ShowIfCompletelyLoaded();
+}
+
+content::RenderViewHost* ExtensionViewMac::render_view_host() const {
+ return extension_host_->render_view_host();
}
void ExtensionViewMac::CreateWidgetHostView() {
// We wait to show the ExtensionView until it has loaded, and the view has
// actually been created. These can happen in different orders.
if (extension_host_->did_stop_loading()) {
- [native_view() setHidden:NO];
+ [GetNativeView() setHidden:NO];
if (container_)
container_->OnExtensionViewDidShow(this);
}
}
+
+namespace extensions {
+
+// static
+scoped_ptr<ExtensionView> ExtensionViewHost::CreateExtensionView(
+ ExtensionViewHost* host,
+ Browser* browser) {
+ scoped_ptr<ExtensionViewMac> view(new ExtensionViewMac(host, browser));
+ return view.PassAs<ExtensionView>();
+}
+
+} // namespace extensions