| Index: content/browser/renderer_host/render_widget_helper.cc
|
| diff --git a/content/browser/renderer_host/render_widget_helper.cc b/content/browser/renderer_host/render_widget_helper.cc
|
| index 51f5e3abe9ec0cd54d3fdd760bd85f16f274b4ac..ad45659bc88bd281478de62941307164ce43e915 100644
|
| --- a/content/browser/renderer_host/render_widget_helper.cc
|
| +++ b/content/browser/renderer_host/render_widget_helper.cc
|
| @@ -104,9 +104,11 @@ void RenderWidgetHelper::CreateNewWindow(
|
| const ViewHostMsg_CreateWindow_Params& params,
|
| bool no_javascript_access,
|
| base::ProcessHandle render_process,
|
| - int* route_id,
|
| - int* main_frame_route_id,
|
| - int* surface_id,
|
| + int32* route_id,
|
| + int32* surface_id,
|
| + int32* main_frame_route_id,
|
| + int32* main_frame_widget_route_id,
|
| + int32* widget_surface_id,
|
| SessionStorageNamespace* session_storage_namespace) {
|
| if (params.opener_suppressed || no_javascript_access) {
|
| // If the opener is supppressed or script access is disallowed, we should
|
| @@ -115,38 +117,51 @@ void RenderWidgetHelper::CreateNewWindow(
|
| // it. Because of this, we will immediately show and navigate the window
|
| // in OnCreateWindowOnUI, using the params provided here.
|
| *route_id = MSG_ROUTING_NONE;
|
| - *main_frame_route_id = MSG_ROUTING_NONE;
|
| *surface_id = 0;
|
| + *main_frame_route_id = MSG_ROUTING_NONE;
|
| + *main_frame_widget_route_id = MSG_ROUTING_NONE;
|
| + *widget_surface_id = 0;
|
| } else {
|
| *route_id = GetNextRoutingID();
|
| - *main_frame_route_id = GetNextRoutingID();
|
| + // TODO(dcheng): Use the main frame RenderWidgetHost for painting instead of
|
| + // the RenderViewHost. https://crbug.com/526958
|
| *surface_id = GpuSurfaceTracker::Get()->AddSurfaceForRenderer(
|
| render_process_id_, *route_id);
|
| + *main_frame_route_id = GetNextRoutingID();
|
| + *main_frame_widget_route_id = GetNextRoutingID();
|
| + *widget_surface_id = GpuSurfaceTracker::Get()->AddSurfaceForRenderer(
|
| + render_process_id_, *main_frame_widget_route_id);
|
| // Block resource requests until the view is created, since the HWND might
|
| // be needed if a response ends up creating a plugin.
|
| resource_dispatcher_host_->BlockRequestsForRoute(
|
| render_process_id_, *route_id);
|
| resource_dispatcher_host_->BlockRequestsForRoute(
|
| render_process_id_, *main_frame_route_id);
|
| + resource_dispatcher_host_->BlockRequestsForRoute(
|
| + render_process_id_, *main_frame_widget_route_id);
|
| }
|
|
|
| BrowserThread::PostTask(
|
| BrowserThread::UI, FROM_HERE,
|
| - base::Bind(&RenderWidgetHelper::OnCreateWindowOnUI,
|
| - this, params, *route_id, *main_frame_route_id,
|
| + base::Bind(&RenderWidgetHelper::OnCreateWindowOnUI, this, params,
|
| + *route_id, *main_frame_route_id, *main_frame_widget_route_id,
|
| + *widget_surface_id,
|
| make_scoped_refptr(session_storage_namespace)));
|
| }
|
|
|
| void RenderWidgetHelper::OnCreateWindowOnUI(
|
| const ViewHostMsg_CreateWindow_Params& params,
|
| - int route_id,
|
| - int main_frame_route_id,
|
| + int32 route_id,
|
| + int32 main_frame_route_id,
|
| + int32 main_frame_widget_route_id,
|
| + int32 surface_id,
|
| SessionStorageNamespace* session_storage_namespace) {
|
| RenderViewHostImpl* host =
|
| RenderViewHostImpl::FromID(render_process_id_, params.opener_id);
|
| if (host)
|
| - host->CreateNewWindow(route_id, main_frame_route_id, params,
|
| - session_storage_namespace);
|
| + host->CreateNewWindow(route_id, main_frame_route_id,
|
| + main_frame_widget_route_id, surface_id, params,
|
| + session_storage_namespace);
|
| }
|
|
|
| void RenderWidgetHelper::OnResumeRequestsForView(int route_id) {
|
|
|