summaryrefslogtreecommitdiffstats
path: root/chrome/browser
diff options
context:
space:
mode:
authorandybons@chromium.org <andybons@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-03-30 16:16:27 +0000
committerandybons@chromium.org <andybons@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-03-30 16:16:27 +0000
commitfe9e5960882d7107ee7bd80f6c6bae56703db071 (patch)
tree518f000de246f854428f8d71890592abe730d755 /chrome/browser
parentcb9763b66b2829349280c08549ee519bf1ae58db (diff)
downloadchromium_src-fe9e5960882d7107ee7bd80f6c6bae56703db071.zip
chromium_src-fe9e5960882d7107ee7bd80f6c6bae56703db071.tar.gz
chromium_src-fe9e5960882d7107ee7bd80f6c6bae56703db071.tar.bz2
[Mac] If a popup for an extension is shown and then the extension is killed or crashes, the popup should close for that extension.
BUG=35940 TEST=See bug for repro steps. Review URL: http://codereview.chromium.org/1528006 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@43084 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser')
-rw-r--r--chrome/browser/extensions/extension_host_mac.h2
-rw-r--r--chrome/browser/extensions/extension_host_mac.mm12
2 files changed, 13 insertions, 1 deletions
diff --git a/chrome/browser/extensions/extension_host_mac.h b/chrome/browser/extensions/extension_host_mac.h
index 8032fd9..6a97e62 100644
--- a/chrome/browser/extensions/extension_host_mac.h
+++ b/chrome/browser/extensions/extension_host_mac.h
@@ -14,7 +14,7 @@ class ExtensionHostMac : public ExtensionHost {
ExtensionHostMac(Extension* extension, SiteInstance* site_instance,
const GURL& url, ViewType::Type host_type) :
ExtensionHost(extension, site_instance, url, host_type) {}
- virtual ~ExtensionHostMac() {}
+ virtual ~ExtensionHostMac();
protected:
virtual RenderWidgetHostView* CreateNewWidgetInternal(int route_id,
bool activatable);
diff --git a/chrome/browser/extensions/extension_host_mac.mm b/chrome/browser/extensions/extension_host_mac.mm
index 2dfc336..29d58ca 100644
--- a/chrome/browser/extensions/extension_host_mac.mm
+++ b/chrome/browser/extensions/extension_host_mac.mm
@@ -5,9 +5,21 @@
#include "chrome/browser/extensions/extension_host_mac.h"
#import "chrome/browser/cocoa/chrome_event_processing_window.h"
+#import "chrome/browser/cocoa/extensions/extension_popup_controller.h"
+#import "chrome/browser/cocoa/info_bubble_window.h"
#include "chrome/browser/renderer_host/render_widget_host_view_mac.h"
#include "chrome/common/native_web_keyboard_event.h"
+ExtensionHostMac::~ExtensionHostMac() {
+ // If there is a popup open for this host's extension, close it.
+ ExtensionPopupController* popup = [ExtensionPopupController popup];
+ if (popup && [popup extensionHost]->extension() == this->extension()) {
+ InfoBubbleWindow* window = (InfoBubbleWindow*)[popup window];
+ [window setDelayOnClose:NO];
+ [popup close];
+ }
+}
+
RenderWidgetHostView* ExtensionHostMac::CreateNewWidgetInternal(
int route_id,
bool activatable) {