diff options
author | ananta@chromium.org <ananta@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-07-12 17:30:58 +0000 |
---|---|---|
committer | ananta@chromium.org <ananta@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-07-12 17:30:58 +0000 |
commit | 6e47f2fed00e86f7579e040c2e02cb747a95913b (patch) | |
tree | ad5c153a2246b2c821ae415ec10ba06f96587ad1 /chrome_frame | |
parent | b5558cf212f53fb81dbcbe522b5b2eede5d4641b (diff) | |
download | chromium_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.cc | 5 |
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); } |