| Index: content/browser/frame_host/render_frame_host_manager.cc
|
| diff --git a/content/browser/frame_host/render_frame_host_manager.cc b/content/browser/frame_host/render_frame_host_manager.cc
|
| index 1d36b037795c5cd216fadeb4f67851c11f9e1101..e1c9d71960520fc3c6639850bc6f3b438f702a50 100644
|
| --- a/content/browser/frame_host/render_frame_host_manager.cc
|
| +++ b/content/browser/frame_host/render_frame_host_manager.cc
|
| @@ -253,17 +253,16 @@ RenderFrameHostManager::~RenderFrameHostManager() {
|
| SetRenderFrameHost(scoped_ptr<RenderFrameHostImpl>());
|
| }
|
|
|
| -void RenderFrameHostManager::Init(BrowserContext* browser_context,
|
| - SiteInstance* site_instance,
|
| +void RenderFrameHostManager::Init(SiteInstance* site_instance,
|
| int32 view_routing_id,
|
| int32 frame_routing_id,
|
| int32 widget_routing_id) {
|
| - // Create a RenderViewHost and RenderFrameHost, once we have an instance. It
|
| - // is important to immediately give this SiteInstance to a RenderViewHost so
|
| - // that the SiteInstance is ref counted.
|
| - if (!site_instance)
|
| - site_instance = SiteInstance::Create(browser_context);
|
| -
|
| + DCHECK(site_instance);
|
| + // TODO(avi): While RenderViewHostImpl is-a RenderWidgetHostImpl, this must
|
| + // hold true to avoid having two RenderWidgetHosts for the top-level frame.
|
| + // https://crbug.com/545684
|
| + DCHECK_IMPLIES(frame_tree_node_->IsMainFrame(),
|
| + view_routing_id == widget_routing_id);
|
| int flags = delegate_->IsHidden() ? CREATE_RF_HIDDEN : 0;
|
| SetRenderFrameHost(CreateRenderFrameHost(site_instance, view_routing_id,
|
| frame_routing_id, widget_routing_id,
|
| @@ -1802,6 +1801,7 @@ scoped_ptr<RenderFrameHostImpl> RenderFrameHostManager::CreateRenderFrame(
|
| } else {
|
| // Create a new RenderFrameHost if we don't find an existing one.
|
|
|
| + int32 view_routing_id = MSG_ROUTING_NONE;
|
| int32 widget_routing_id = MSG_ROUTING_NONE;
|
| // A RenderFrame in a different process from its parent RenderFrame
|
| // requires a RenderWidget for input/layout/painting.
|
| @@ -1810,10 +1810,15 @@ scoped_ptr<RenderFrameHostImpl> RenderFrameHostManager::CreateRenderFrame(
|
| instance) {
|
| CHECK(SiteIsolationPolicy::AreCrossProcessFramesPossible());
|
| widget_routing_id = instance->GetProcess()->GetNextRoutingID();
|
| + } else if (!frame_tree_node_->parent()) {
|
| + // TODO(avi): This branch can be merged with the above branch once
|
| + // RenderViewHostImpl has-a RenderWidgetHostImpl. https://crbug.com/545684
|
| + view_routing_id = widget_routing_id =
|
| + instance->GetProcess()->GetNextRoutingID();
|
| }
|
|
|
| new_render_frame_host = CreateRenderFrameHost(
|
| - instance, MSG_ROUTING_NONE, MSG_ROUTING_NONE, widget_routing_id, flags);
|
| + instance, view_routing_id, MSG_ROUTING_NONE, widget_routing_id, flags);
|
| RenderViewHostImpl* render_view_host =
|
| new_render_frame_host->render_view_host();
|
| int proxy_routing_id = MSG_ROUTING_NONE;
|
|
|