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; ...@@ -15,6 +15,7 @@ RenderFrameHostFactory* RenderFrameHostFactory::factory_ = NULL;
// static // static
scoped_ptr<RenderFrameHostImpl> RenderFrameHostFactory::Create( scoped_ptr<RenderFrameHostImpl> RenderFrameHostFactory::Create(
SiteInstance* site_instance,
RenderViewHostImpl* render_view_host, RenderViewHostImpl* render_view_host,
RenderFrameHostDelegate* delegate, RenderFrameHostDelegate* delegate,
RenderWidgetHostDelegate* rwh_delegate, RenderWidgetHostDelegate* rwh_delegate,
...@@ -23,13 +24,13 @@ scoped_ptr<RenderFrameHostImpl> RenderFrameHostFactory::Create( ...@@ -23,13 +24,13 @@ scoped_ptr<RenderFrameHostImpl> RenderFrameHostFactory::Create(
int routing_id, int routing_id,
int flags) { int flags) {
if (factory_) { if (factory_) {
return factory_->CreateRenderFrameHost( return factory_->CreateRenderFrameHost(site_instance, render_view_host,
render_view_host, delegate, rwh_delegate, frame_tree, frame_tree_node, delegate, rwh_delegate, frame_tree,
routing_id, flags); frame_tree_node, routing_id, flags);
} }
return make_scoped_ptr( return make_scoped_ptr(new RenderFrameHostImpl(
new RenderFrameHostImpl(render_view_host, delegate, rwh_delegate, site_instance, render_view_host, delegate, rwh_delegate, frame_tree,
frame_tree, frame_tree_node, routing_id, flags)); frame_tree_node, routing_id, flags));
} }
// static // static
......
...@@ -17,6 +17,7 @@ class RenderFrameHostDelegate; ...@@ -17,6 +17,7 @@ class RenderFrameHostDelegate;
class RenderFrameHostImpl; class RenderFrameHostImpl;
class RenderViewHostImpl; class RenderViewHostImpl;
class RenderWidgetHostDelegate; class RenderWidgetHostDelegate;
class SiteInstance;
// A factory for creating RenderFrameHosts. There is a global factory function // A factory for creating RenderFrameHosts. There is a global factory function
// that can be installed for the purposes of testing to provide a specialized // that can be installed for the purposes of testing to provide a specialized
...@@ -26,6 +27,7 @@ class CONTENT_EXPORT RenderFrameHostFactory { ...@@ -26,6 +27,7 @@ class CONTENT_EXPORT RenderFrameHostFactory {
// Creates a new RenderFrameHostImpl using the currently registered factory, // Creates a new RenderFrameHostImpl using the currently registered factory,
// or a regular RenderFrameHostImpl if no factory is registered. // or a regular RenderFrameHostImpl if no factory is registered.
static scoped_ptr<RenderFrameHostImpl> Create( static scoped_ptr<RenderFrameHostImpl> Create(
SiteInstance* site_instance,
RenderViewHostImpl* render_view_host, RenderViewHostImpl* render_view_host,
RenderFrameHostDelegate* delegate, RenderFrameHostDelegate* delegate,
RenderWidgetHostDelegate* rwh_delegate, RenderWidgetHostDelegate* rwh_delegate,
...@@ -44,6 +46,7 @@ class CONTENT_EXPORT RenderFrameHostFactory { ...@@ -44,6 +46,7 @@ class CONTENT_EXPORT RenderFrameHostFactory {
// You can derive from this class and specify an implementation for this // You can derive from this class and specify an implementation for this
// function to create an alternate kind of RenderFrameHostImpl for testing. // function to create an alternate kind of RenderFrameHostImpl for testing.
virtual scoped_ptr<RenderFrameHostImpl> CreateRenderFrameHost( virtual scoped_ptr<RenderFrameHostImpl> CreateRenderFrameHost(
SiteInstance* site_instance,
RenderViewHostImpl* render_view_host, RenderViewHostImpl* render_view_host,
RenderFrameHostDelegate* delegate, RenderFrameHostDelegate* delegate,
RenderWidgetHostDelegate* rwh_delegate, RenderWidgetHostDelegate* rwh_delegate,
......
...@@ -118,7 +118,8 @@ RenderFrameHostImpl* RenderFrameHostImpl::FromID(int process_id, ...@@ -118,7 +118,8 @@ RenderFrameHostImpl* RenderFrameHostImpl::FromID(int process_id,
return it == frames->end() ? NULL : it->second; return it == frames->end() ? NULL : it->second;
} }
RenderFrameHostImpl::RenderFrameHostImpl(RenderViewHostImpl* render_view_host, RenderFrameHostImpl::RenderFrameHostImpl(SiteInstance* site_instance,
RenderViewHostImpl* render_view_host,
RenderFrameHostDelegate* delegate, RenderFrameHostDelegate* delegate,
RenderWidgetHostDelegate* rwh_delegate, RenderWidgetHostDelegate* rwh_delegate,
FrameTree* frame_tree, FrameTree* frame_tree,
...@@ -127,6 +128,8 @@ RenderFrameHostImpl::RenderFrameHostImpl(RenderViewHostImpl* render_view_host, ...@@ -127,6 +128,8 @@ RenderFrameHostImpl::RenderFrameHostImpl(RenderViewHostImpl* render_view_host,
int flags) int flags)
: render_view_host_(render_view_host), : render_view_host_(render_view_host),
delegate_(delegate), delegate_(delegate),
site_instance_(static_cast<SiteInstanceImpl*>(site_instance)),
process_(site_instance->GetProcess()),
cross_process_frame_connector_(NULL), cross_process_frame_connector_(NULL),
render_frame_proxy_host_(NULL), render_frame_proxy_host_(NULL),
frame_tree_(frame_tree), frame_tree_(frame_tree),
...@@ -198,13 +201,11 @@ int RenderFrameHostImpl::GetRoutingID() { ...@@ -198,13 +201,11 @@ int RenderFrameHostImpl::GetRoutingID() {
} }
SiteInstanceImpl* RenderFrameHostImpl::GetSiteInstance() { SiteInstanceImpl* RenderFrameHostImpl::GetSiteInstance() {
return render_view_host_->GetSiteInstance(); return site_instance_.get();
} }
RenderProcessHost* RenderFrameHostImpl::GetProcess() { RenderProcessHost* RenderFrameHostImpl::GetProcess() {
// TODO(nasko): This should return its own process, once we have working return process_;
// cross-process navigation for subframes.
return render_view_host_->GetProcess();
} }
RenderFrameHost* RenderFrameHostImpl::GetParent() { RenderFrameHost* RenderFrameHostImpl::GetParent() {
......
...@@ -418,7 +418,8 @@ class CONTENT_EXPORT RenderFrameHostImpl ...@@ -418,7 +418,8 @@ class CONTENT_EXPORT RenderFrameHostImpl
// TODO(nasko): Remove dependency on RenderViewHost here. RenderProcessHost // TODO(nasko): Remove dependency on RenderViewHost here. RenderProcessHost
// should be the abstraction needed here, but we need RenderViewHost to pass // should be the abstraction needed here, but we need RenderViewHost to pass
// into WebContentsObserver::FrameDetached for now. // into WebContentsObserver::FrameDetached for now.
RenderFrameHostImpl(RenderViewHostImpl* render_view_host, RenderFrameHostImpl(SiteInstance* site_instance,
RenderViewHostImpl* render_view_host,
RenderFrameHostDelegate* delegate, RenderFrameHostDelegate* delegate,
RenderWidgetHostDelegate* rwh_delegate, RenderWidgetHostDelegate* rwh_delegate,
FrameTree* frame_tree, FrameTree* frame_tree,
...@@ -536,6 +537,17 @@ class CONTENT_EXPORT RenderFrameHostImpl ...@@ -536,6 +537,17 @@ class CONTENT_EXPORT RenderFrameHostImpl
RenderFrameHostDelegate* delegate_; 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 // |cross_process_frame_connector_| passes messages from an out-of-process
// child frame to the parent process for compositing. // child frame to the parent process for compositing.
// //
......
...@@ -1218,8 +1218,9 @@ scoped_ptr<RenderFrameHostImpl> RenderFrameHostManager::CreateRenderFrameHost( ...@@ -1218,8 +1218,9 @@ scoped_ptr<RenderFrameHostImpl> RenderFrameHostManager::CreateRenderFrameHost(
// TODO(creis): Pass hidden to RFH. // TODO(creis): Pass hidden to RFH.
scoped_ptr<RenderFrameHostImpl> render_frame_host = make_scoped_ptr( scoped_ptr<RenderFrameHostImpl> render_frame_host = make_scoped_ptr(
RenderFrameHostFactory::Create( RenderFrameHostFactory::Create(
render_view_host, render_frame_delegate_, render_widget_delegate_, site_instance, render_view_host, render_frame_delegate_,
frame_tree, frame_tree_node_, frame_routing_id, flags).release()); render_widget_delegate_, frame_tree, frame_tree_node_,
frame_routing_id, flags).release());
return render_frame_host.Pass(); return render_frame_host.Pass();
} }
......
...@@ -34,14 +34,16 @@ void TestRenderFrameHostCreationObserver::RenderFrameCreated( ...@@ -34,14 +34,16 @@ void TestRenderFrameHostCreationObserver::RenderFrameCreated(
last_created_frame_ = render_frame_host; last_created_frame_ = render_frame_host;
} }
TestRenderFrameHost::TestRenderFrameHost(RenderViewHostImpl* render_view_host, TestRenderFrameHost::TestRenderFrameHost(SiteInstance* site_instance,
RenderViewHostImpl* render_view_host,
RenderFrameHostDelegate* delegate, RenderFrameHostDelegate* delegate,
RenderWidgetHostDelegate* rwh_delegate, RenderWidgetHostDelegate* rwh_delegate,
FrameTree* frame_tree, FrameTree* frame_tree,
FrameTreeNode* frame_tree_node, FrameTreeNode* frame_tree_node,
int routing_id, int routing_id,
int flags) int flags)
: RenderFrameHostImpl(render_view_host, : RenderFrameHostImpl(site_instance,
render_view_host,
delegate, delegate,
rwh_delegate, rwh_delegate,
frame_tree, frame_tree,
......
...@@ -35,7 +35,8 @@ class TestRenderFrameHostCreationObserver : public WebContentsObserver { ...@@ -35,7 +35,8 @@ class TestRenderFrameHostCreationObserver : public WebContentsObserver {
class TestRenderFrameHost : public RenderFrameHostImpl, class TestRenderFrameHost : public RenderFrameHostImpl,
public RenderFrameHostTester { public RenderFrameHostTester {
public: public:
TestRenderFrameHost(RenderViewHostImpl* render_view_host, TestRenderFrameHost(SiteInstance* site_instance,
RenderViewHostImpl* render_view_host,
RenderFrameHostDelegate* delegate, RenderFrameHostDelegate* delegate,
RenderWidgetHostDelegate* rwh_delegate, RenderWidgetHostDelegate* rwh_delegate,
FrameTree* frame_tree, FrameTree* frame_tree,
......
...@@ -21,6 +21,7 @@ TestRenderFrameHostFactory::~TestRenderFrameHostFactory() { ...@@ -21,6 +21,7 @@ TestRenderFrameHostFactory::~TestRenderFrameHostFactory() {
scoped_ptr<RenderFrameHostImpl> scoped_ptr<RenderFrameHostImpl>
TestRenderFrameHostFactory::CreateRenderFrameHost( TestRenderFrameHostFactory::CreateRenderFrameHost(
SiteInstance* site_instance,
RenderViewHostImpl* render_view_host, RenderViewHostImpl* render_view_host,
RenderFrameHostDelegate* delegate, RenderFrameHostDelegate* delegate,
RenderWidgetHostDelegate* rwh_delegate, RenderWidgetHostDelegate* rwh_delegate,
...@@ -28,9 +29,9 @@ TestRenderFrameHostFactory::CreateRenderFrameHost( ...@@ -28,9 +29,9 @@ TestRenderFrameHostFactory::CreateRenderFrameHost(
FrameTreeNode* frame_tree_node, FrameTreeNode* frame_tree_node,
int routing_id, int routing_id,
int flags) { int flags) {
return make_scoped_ptr( return make_scoped_ptr(new TestRenderFrameHost(
new TestRenderFrameHost(render_view_host, delegate, rwh_delegate, site_instance, render_view_host, delegate, rwh_delegate, frame_tree,
frame_tree, frame_tree_node, routing_id, flags)); frame_tree_node, routing_id, flags));
} }
} // namespace content } // namespace content
...@@ -25,6 +25,7 @@ class TestRenderFrameHostFactory : public RenderFrameHostFactory { ...@@ -25,6 +25,7 @@ class TestRenderFrameHostFactory : public RenderFrameHostFactory {
protected: protected:
// RenderFrameHostFactory implementation. // RenderFrameHostFactory implementation.
scoped_ptr<RenderFrameHostImpl> CreateRenderFrameHost( scoped_ptr<RenderFrameHostImpl> CreateRenderFrameHost(
SiteInstance* site_instance,
RenderViewHostImpl* render_view_host, RenderViewHostImpl* render_view_host,
RenderFrameHostDelegate* delegate, RenderFrameHostDelegate* delegate,
RenderWidgetHostDelegate* rwh_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