summaryrefslogtreecommitdiffstats
path: root/chrome_frame
diff options
context:
space:
mode:
authorananta@chromium.org <ananta@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-07-12 17:30:58 +0000
committerananta@chromium.org <ananta@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-07-12 17:30:58 +0000
commit6e47f2fed00e86f7579e040c2e02cb747a95913b (patch)
treead5c153a2246b2c821ae415ec10ba06f96587ad1 /chrome_frame
parentb5558cf212f53fb81dbcbe522b5b2eede5d4641b (diff)
downloadchromium_src-6e47f2fed00e86f7579e040c2e02cb747a95913b.zip
chromium_src-6e47f2fed00e86f7579e040c2e02cb747a95913b.tar.gz
chromium_src-6e47f2fed00e86f7579e040c2e02cb747a95913b.tar.bz2
ChromeFrame would leave chrome processes running if a page rendered in Chrome would open up a popup window which
opened up in IE. This is because of an orphan external tab container created to handle the popup. This tab is destroyed in the normal case when the active document window is destroyed, which is the parent of the external tab container. However in this case the active document is destroyed without its window being created thus resulting in the external tab container lying around which holds a reference to the automation provider. Fix is to pass the ChromeFrameAutomationClient window as the parent window in the AutomationMsg_ConnectExternalTab message. Fixes bug http://code.google.com/p/chromium/issues/detail?id=48732 Bug=48732 Covered by ChromeFrame test FullTabNavigationTest.JavascriptWindowOpenDifferentDomain Review URL: http://codereview.chromium.org/2911006 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@52094 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome_frame')
-rw-r--r--chrome_frame/chrome_frame_automation.cc5
1 files changed, 3 insertions, 2 deletions
diff --git a/chrome_frame/chrome_frame_automation.cc b/chrome_frame/chrome_frame_automation.cc
index 880a645..c6d43d7 100644
--- a/chrome_frame/chrome_frame_automation.cc
+++ b/chrome_frame/chrome_frame_automation.cc
@@ -886,7 +886,7 @@ void ChromeFrameAutomationClient::LaunchComplete(
// ExternalTab.
IPC::SyncMessage* message =
new AutomationMsg_ConnectExternalTab(0, external_tab_cookie_, true,
- NULL, NULL, NULL);
+ m_hWnd, NULL, NULL, NULL);
automation_server_->SendAsAsync(message,
new CreateExternalTabContext(this),
this);
@@ -1210,7 +1210,8 @@ void ChromeFrameAutomationClient::AttachExternalTab(
void ChromeFrameAutomationClient::BlockExternalTab(uint64 cookie) {
// The host does not want this tab to be shown (due popup blocker).
IPC::SyncMessage* message =
- new AutomationMsg_ConnectExternalTab(0, cookie, false, NULL, NULL, NULL);
+ new AutomationMsg_ConnectExternalTab(0, cookie, false, m_hWnd,
+ NULL, NULL, NULL);
automation_server_->SendAsAsync(message, NULL, this);
}