From 6e47f2fed00e86f7579e040c2e02cb747a95913b Mon Sep 17 00:00:00 2001 From: "ananta@chromium.org" Date: Mon, 12 Jul 2010 17:30:58 +0000 Subject: 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 --- chrome_frame/chrome_frame_automation.cc | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'chrome_frame') 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); } -- cgit v1.1