diff options
author | jam@chromium.org <jam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-07-23 17:35:09 +0000 |
---|---|---|
committer | jam@chromium.org <jam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-07-23 17:35:09 +0000 |
commit | aacd1d7eda186c0b32d2736c0f38d9749b6006b8 (patch) | |
tree | 0ab3883448a1d082f5a78cad4a08577530364ddf /content/browser/renderer_host/render_widget_helper.cc | |
parent | 87d5c05993b8a457cbf0cce00ec97fc3fcc1d270 (diff) | |
download | chromium_src-aacd1d7eda186c0b32d2736c0f38d9749b6006b8.zip chromium_src-aacd1d7eda186c0b32d2736c0f38d9749b6006b8.tar.gz chromium_src-aacd1d7eda186c0b32d2736c0f38d9749b6006b8.tar.bz2 |
Fix regression of bug 205 where a plugin in a window shown with window.open may not have the correct parent window. PluginTest.OpenPopupWindowWithPlugin covers this, but this bug is a race condition which is why the test works most of the time (although it shows up on the flakiness dashboard). When I tried to move this test to content_browsertests, the timing was different so it showed up most of the time.
BUG=205
Review URL: https://chromiumcodereview.appspot.com/10809051
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@147874 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'content/browser/renderer_host/render_widget_helper.cc')
-rw-r--r-- | content/browser/renderer_host/render_widget_helper.cc | 25 |
1 files changed, 13 insertions, 12 deletions
diff --git a/content/browser/renderer_host/render_widget_helper.cc b/content/browser/renderer_host/render_widget_helper.cc index 961f320..300d0ac 100644 --- a/content/browser/renderer_host/render_widget_helper.cc +++ b/content/browser/renderer_host/render_widget_helper.cc @@ -143,9 +143,7 @@ void RenderWidgetHelper::CrossSiteSwapOutACK( } bool RenderWidgetHelper::WaitForBackingStoreMsg( - int render_widget_id, - const base::TimeDelta& max_delay, - IPC::Message* msg) { + int render_widget_id, const base::TimeDelta& max_delay, IPC::Message* msg) { base::TimeTicks time_start = base::TimeTicks::Now(); for (;;) { @@ -189,6 +187,17 @@ bool RenderWidgetHelper::WaitForBackingStoreMsg( return false; } +void RenderWidgetHelper::ResumeRequestsForView(int route_id) { + // We only need to resume blocked requests if we used a valid route_id. + // See CreateNewWindow. + if (route_id != MSG_ROUTING_NONE) { + BrowserThread::PostTask( + BrowserThread::IO, FROM_HERE, + base::Bind(&RenderWidgetHelper::OnResumeRequestsForView, + this, route_id)); + } +} + void RenderWidgetHelper::DidReceiveBackingStoreMsg(const IPC::Message& msg) { int render_widget_id = msg.routing_id(); @@ -288,17 +297,9 @@ void RenderWidgetHelper::OnCreateWindowOnUI( RenderViewHostImpl::FromID(render_process_id_, params.opener_id); if (host) host->CreateNewWindow(route_id, params, session_storage_namespace); - - // We only need to resume blocked requests if we used a valid route_id. - // See CreateNewWindow. - if (route_id != MSG_ROUTING_NONE) { - BrowserThread::PostTask( - BrowserThread::IO, FROM_HERE, - base::Bind(&RenderWidgetHelper::OnCreateWindowOnIO, this, route_id)); - } } -void RenderWidgetHelper::OnCreateWindowOnIO(int route_id) { +void RenderWidgetHelper::OnResumeRequestsForView(int route_id) { resource_dispatcher_host_->ResumeBlockedRequestsForRoute( render_process_id_, route_id); } |