Commit 9a45a9a6 authored by nasko's avatar nasko Committed by Commit bot

Remove indirection for SiteInstance and RenderProcessHost from RenderFrameHost.

Currently the SiteInstance and RenderProcessHost for a RenderFrameHost are retrieved from the associated RenderViewHost. The RFH code is sufficiently along the way to keep track of these on its own.

BUG=304341

Review URL: https://codereview.chromium.org/881683002

Cr-Commit-Position: refs/heads/master@{#313383}
parent 514272fc
......@@ -15,6 +15,7 @@ RenderFrameHostFactory* RenderFrameHostFactory::factory_ = NULL;
// static
scoped_ptr<RenderFrameHostImpl> RenderFrameHostFactory::Create(
SiteInstance* site_instance,
RenderViewHostImpl* render_view_host,
RenderFrameHostDelegate* delegate,
RenderWidgetHostDelegate* rwh_delegate,
......@@ -23,13 +24,13 @@ scoped_ptr<RenderFrameHostImpl> RenderFrameHostFactory::Create(
int routing_id,
int flags) {
if (factory_) {
return factory_->CreateRenderFrameHost(
render_view_host, delegate, rwh_delegate, frame_tree, frame_tree_node,
routing_id, flags);
return factory_->CreateRenderFrameHost(site_instance, render_view_host,
delegate, rwh_delegate, frame_tree,
frame_tree_node, routing_id, flags);
}
return make_scoped_ptr(
new RenderFrameHostImpl(render_view_host, delegate, rwh_delegate,
frame_tree, frame_tree_node, routing_id, flags));
return make_scoped_ptr(new RenderFrameHostImpl(
site_instance, render_view_host, delegate, rwh_delegate, frame_tree,
frame_tree_node, routing_id, flags));
}
// static
......
......@@ -17,6 +17,7 @@ class RenderFrameHostDelegate;
class RenderFrameHostImpl;
class RenderViewHostImpl;
class RenderWidgetHostDelegate;
class SiteInstance;
// A factory for creating RenderFrameHosts. There is a global factory function
// that can be installed for the purposes of testing to provide a specialized
......@@ -26,6 +27,7 @@ class CONTENT_EXPORT RenderFrameHostFactory {
// Creates a new RenderFrameHostImpl using the currently registered factory,
// or a regular RenderFrameHostImpl if no factory is registered.
static scoped_ptr<RenderFrameHostImpl> Create(
SiteInstance* site_instance,
RenderViewHostImpl* render_view_host,
RenderFrameHostDelegate* delegate,
RenderWidgetHostDelegate* rwh_delegate,
......@@ -44,6 +46,7 @@ class CONTENT_EXPORT RenderFrameHostFactory {
// You can derive from this class and specify an implementation for this
// function to create an alternate kind of RenderFrameHostImpl for testing.
virtual scoped_ptr<RenderFrameHostImpl> CreateRenderFrameHost(
SiteInstance* site_instance,
RenderViewHostImpl* render_view_host,
RenderFrameHostDelegate* delegate,
RenderWidgetHostDelegate* rwh_delegate,
......
......@@ -118,7 +118,8 @@ RenderFrameHostImpl* RenderFrameHostImpl::FromID(int process_id,
return it == frames->end() ? NULL : it->second;
}
RenderFrameHostImpl::RenderFrameHostImpl(RenderViewHostImpl* render_view_host,
RenderFrameHostImpl::RenderFrameHostImpl(SiteInstance* site_instance,
RenderViewHostImpl* render_view_host,
RenderFrameHostDelegate* delegate,
RenderWidgetHostDelegate* rwh_delegate,
FrameTree* frame_tree,
......@@ -127,6 +128,8 @@ RenderFrameHostImpl::RenderFrameHostImpl(RenderViewHostImpl* render_view_host,
int flags)
: render_view_host_(render_view_host),
delegate_(delegate),
site_instance_(static_cast<SiteInstanceImpl*>(site_instance)),
process_(site_instance->GetProcess()),
cross_process_frame_connector_(NULL),
render_frame_proxy_host_(NULL),
frame_tree_(frame_tree),
......@@ -198,13 +201,11 @@ int RenderFrameHostImpl::GetRoutingID() {
}
SiteInstanceImpl* RenderFrameHostImpl::GetSiteInstance() {
return render_view_host_->GetSiteInstance();
return site_instance_.get();
}
RenderProcessHost* RenderFrameHostImpl::GetProcess() {
// TODO(nasko): This should return its own process, once we have working
// cross-process navigation for subframes.
return render_view_host_->GetProcess();
return process_;
}
RenderFrameHost* RenderFrameHostImpl::GetParent() {
......
......@@ -418,7 +418,8 @@ class CONTENT_EXPORT RenderFrameHostImpl
// TODO(nasko): Remove dependency on RenderViewHost here. RenderProcessHost
// should be the abstraction needed here, but we need RenderViewHost to pass
// into WebContentsObserver::FrameDetached for now.
RenderFrameHostImpl(RenderViewHostImpl* render_view_host,
RenderFrameHostImpl(SiteInstance* site_instance,
RenderViewHostImpl* render_view_host,
RenderFrameHostDelegate* delegate,
RenderWidgetHostDelegate* rwh_delegate,
FrameTree* frame_tree,
......@@ -536,6 +537,17 @@ class CONTENT_EXPORT RenderFrameHostImpl
RenderFrameHostDelegate* delegate_;
// The SiteInstance associated with this RenderFrameHost. All content drawn
// in this RenderFrameHost is part of this SiteInstance. Cannot change over
// time.
scoped_refptr<SiteInstanceImpl> site_instance_;
// The renderer process this RenderFrameHost is associated with. It is
// equivalent to the result of site_instance_->GetProcess(), but that
// method has the side effect of creating the process if it doesn't exist.
// Cache a pointer to avoid unnecessary process creation.
RenderProcessHost* process_;
// |cross_process_frame_connector_| passes messages from an out-of-process
// child frame to the parent process for compositing.
//
......
......@@ -1218,8 +1218,9 @@ scoped_ptr<RenderFrameHostImpl> RenderFrameHostManager::CreateRenderFrameHost(
// TODO(creis): Pass hidden to RFH.
scoped_ptr<RenderFrameHostImpl> render_frame_host = make_scoped_ptr(
RenderFrameHostFactory::Create(
render_view_host, render_frame_delegate_, render_widget_delegate_,
frame_tree, frame_tree_node_, frame_routing_id, flags).release());
site_instance, render_view_host, render_frame_delegate_,
render_widget_delegate_, frame_tree, frame_tree_node_,
frame_routing_id, flags).release());
return render_frame_host.Pass();
}
......
......@@ -34,14 +34,16 @@ void TestRenderFrameHostCreationObserver::RenderFrameCreated(
last_created_frame_ = render_frame_host;
}
TestRenderFrameHost::TestRenderFrameHost(RenderViewHostImpl* render_view_host,
TestRenderFrameHost::TestRenderFrameHost(SiteInstance* site_instance,
RenderViewHostImpl* render_view_host,
RenderFrameHostDelegate* delegate,
RenderWidgetHostDelegate* rwh_delegate,
FrameTree* frame_tree,
FrameTreeNode* frame_tree_node,
int routing_id,
int flags)
: RenderFrameHostImpl(render_view_host,
: RenderFrameHostImpl(site_instance,
render_view_host,
delegate,
rwh_delegate,
frame_tree,
......
......@@ -35,7 +35,8 @@ class TestRenderFrameHostCreationObserver : public WebContentsObserver {
class TestRenderFrameHost : public RenderFrameHostImpl,
public RenderFrameHostTester {
public:
TestRenderFrameHost(RenderViewHostImpl* render_view_host,
TestRenderFrameHost(SiteInstance* site_instance,
RenderViewHostImpl* render_view_host,
RenderFrameHostDelegate* delegate,
RenderWidgetHostDelegate* rwh_delegate,
FrameTree* frame_tree,
......
......@@ -21,6 +21,7 @@ TestRenderFrameHostFactory::~TestRenderFrameHostFactory() {
scoped_ptr<RenderFrameHostImpl>
TestRenderFrameHostFactory::CreateRenderFrameHost(
SiteInstance* site_instance,
RenderViewHostImpl* render_view_host,
RenderFrameHostDelegate* delegate,
RenderWidgetHostDelegate* rwh_delegate,
......@@ -28,9 +29,9 @@ TestRenderFrameHostFactory::CreateRenderFrameHost(
FrameTreeNode* frame_tree_node,
int routing_id,
int flags) {
return make_scoped_ptr(
new TestRenderFrameHost(render_view_host, delegate, rwh_delegate,
frame_tree, frame_tree_node, routing_id, flags));
return make_scoped_ptr(new TestRenderFrameHost(
site_instance, render_view_host, delegate, rwh_delegate, frame_tree,
frame_tree_node, routing_id, flags));
}
} // namespace content
......@@ -25,6 +25,7 @@ class TestRenderFrameHostFactory : public RenderFrameHostFactory {
protected:
// RenderFrameHostFactory implementation.
scoped_ptr<RenderFrameHostImpl> CreateRenderFrameHost(
SiteInstance* site_instance,
RenderViewHostImpl* render_view_host,
RenderFrameHostDelegate* delegate,
RenderWidgetHostDelegate* rwh_delegate,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment