| 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 71ec817e8d78b47bf48cc58b0cf878138f5921cd..a144c38933779448eba353f3cab24d12c72006aa 100644
|
| --- a/content/browser/frame_host/render_frame_host_manager.cc
|
| +++ b/content/browser/frame_host/render_frame_host_manager.cc
|
| @@ -254,18 +254,12 @@ 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,
|
| int32 surface_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);
|
| int flags = delegate_->IsHidden() ? CREATE_RF_HIDDEN : 0;
|
| SetRenderFrameHost(CreateRenderFrameHost(site_instance, view_routing_id,
|
| frame_routing_id, widget_routing_id,
|
| @@ -1741,12 +1735,13 @@ scoped_ptr<RenderFrameHostImpl> RenderFrameHostManager::CreateRenderFrame(
|
|
|
| int32 widget_routing_id = MSG_ROUTING_NONE;
|
| int32 surface_id = 0;
|
| - // A RenderFrame in a different process from its parent RenderFrame
|
| - // requires a RenderWidget for input/layout/painting.
|
| - if (frame_tree_node_->parent() &&
|
| + // A main RenderFrame, or a RenderFrame in a different process from its
|
| + // parent RenderFrame requires a RenderWidget for input/layout/painting.
|
| + if (!frame_tree_node_->parent() ||
|
| frame_tree_node_->parent()->current_frame_host()->GetSiteInstance() !=
|
| instance) {
|
| - CHECK(SiteIsolationPolicy::AreCrossProcessFramesPossible());
|
| + CHECK(!frame_tree_node_->parent() ||
|
| + SiteIsolationPolicy::AreCrossProcessFramesPossible());
|
| widget_routing_id = instance->GetProcess()->GetNextRoutingID();
|
| surface_id = GpuSurfaceTracker::Get()->AddSurfaceForRenderer(
|
| instance->GetProcess()->GetID(), widget_routing_id);
|
|
|