summaryrefslogtreecommitdiffstats
path: root/chrome/browser/extensions/extension_host_mac.mm
diff options
context:
space:
mode:
authormpcomplete@chromium.org <mpcomplete@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-11-08 01:03:43 +0000
committermpcomplete@chromium.org <mpcomplete@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-11-08 01:03:43 +0000
commit28b3a811ffc8c1563a699fa4a185bc11583a8ccd (patch)
tree3a19c6f3abdb1a56d693516c8b014904123bc120 /chrome/browser/extensions/extension_host_mac.mm
parent309722bbac4f5c65361683f8800abdb2f62059fe (diff)
downloadchromium_src-28b3a811ffc8c1563a699fa4a185bc11583a8ccd.zip
chromium_src-28b3a811ffc8c1563a699fa4a185bc11583a8ccd.tar.gz
chromium_src-28b3a811ffc8c1563a699fa4a185bc11583a8ccd.tar.bz2
Revert "Have ExtensionHost use TabContents instead of RenderViewHost. This is part"
It broke a browser test on Mac. BUG=84146 TEST=no Review URL: http://codereview.chromium.org/8467039 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@108957 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/extensions/extension_host_mac.mm')
-rw-r--r--chrome/browser/extensions/extension_host_mac.mm27
1 files changed, 27 insertions, 0 deletions
diff --git a/chrome/browser/extensions/extension_host_mac.mm b/chrome/browser/extensions/extension_host_mac.mm
index 424db46..64c5d92 100644
--- a/chrome/browser/extensions/extension_host_mac.mm
+++ b/chrome/browser/extensions/extension_host_mac.mm
@@ -22,6 +22,33 @@ ExtensionHostMac::~ExtensionHostMac() {
}
}
+RenderWidgetHostView* ExtensionHostMac::CreateNewWidgetInternal(
+ int route_id,
+ WebKit::WebPopupType popup_type) {
+ // A RenderWidgetHostViewMac has lifetime scoped to the view. We'll retain it
+ // to allow it to survive the trip without being hosed.
+ RenderWidgetHostView* widget_view =
+ ExtensionHost::CreateNewWidgetInternal(route_id, popup_type);
+ RenderWidgetHostViewMac* widget_view_mac =
+ static_cast<RenderWidgetHostViewMac*>(widget_view);
+ [widget_view_mac->native_view() retain];
+
+ return widget_view;
+}
+
+void ExtensionHostMac::ShowCreatedWidgetInternal(
+ RenderWidgetHostView* widget_host_view,
+ const gfx::Rect& initial_pos) {
+ ExtensionHost::ShowCreatedWidgetInternal(widget_host_view, initial_pos);
+
+ // A RenderWidgetHostViewMac has lifetime scoped to the view. Now that it's
+ // properly embedded (or purposefully ignored) we can release the reference we
+ // took in CreateNewWidgetInternal().
+ RenderWidgetHostViewMac* widget_view_mac =
+ static_cast<RenderWidgetHostViewMac*>(widget_host_view);
+ [widget_view_mac->native_view() release];
+}
+
void ExtensionHostMac::UnhandledKeyboardEvent(
const NativeWebKeyboardEvent& event) {
if (event.skip_in_browser || event.type == NativeWebKeyboardEvent::Char ||