summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjam@chromium.org <jam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-12-04 16:40:46 +0000
committerjam@chromium.org <jam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-12-04 16:40:46 +0000
commit92404c66ef122b6cdaae916432426953c5542ab1 (patch)
tree493553ed18910def5236ffe8c4de059b26a60461
parenteafe1f91f01c34e724d90f36d06addef2088f0a9 (diff)
downloadchromium_src-92404c66ef122b6cdaae916432426953c5542ab1.zip
chromium_src-92404c66ef122b6cdaae916432426953c5542ab1.tar.gz
chromium_src-92404c66ef122b6cdaae916432426953c5542ab1.tar.bz2
Add RenderFrameHostDelegate and plumb it through all the necessary classes.
This is an empty interface for now. I'm doing this separately in preparation for moving plugin creation from RenderView to RenderFrame. BUG=245126 R=creis@chromium.org Review URL: https://codereview.chromium.org/103633002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@238709 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r--content/browser/frame_host/frame_tree.cc10
-rw-r--r--content/browser/frame_host/frame_tree.h3
-rw-r--r--content/browser/frame_host/frame_tree_node.cc4
-rw-r--r--content/browser/frame_host/frame_tree_node.h1
-rw-r--r--content/browser/frame_host/frame_tree_unittest.cc7
-rw-r--r--content/browser/frame_host/interstitial_page_impl.cc3
-rw-r--r--content/browser/frame_host/interstitial_page_impl.h4
-rw-r--r--content/browser/frame_host/render_frame_host_delegate.h21
-rw-r--r--content/browser/frame_host/render_frame_host_factory.cc4
-rw-r--r--content/browser/frame_host/render_frame_host_factory.h3
-rw-r--r--content/browser/frame_host/render_frame_host_impl.cc3
-rw-r--r--content/browser/frame_host/render_frame_host_impl.h9
-rw-r--r--content/browser/frame_host/render_frame_host_manager.cc7
-rw-r--r--content/browser/frame_host/render_frame_host_manager.h3
-rw-r--r--content/browser/frame_host/render_frame_host_manager_unittest.cc16
-rw-r--r--content/browser/frame_host/test_render_frame_host.cc2
-rw-r--r--content/browser/frame_host/test_render_frame_host.h1
-rw-r--r--content/browser/renderer_host/media/web_contents_video_capture_device_unittest.cc13
-rw-r--r--content/browser/renderer_host/render_view_host_factory.cc10
-rw-r--r--content/browser/renderer_host/render_view_host_factory.h3
-rw-r--r--content/browser/renderer_host/render_view_host_impl.cc4
-rw-r--r--content/browser/renderer_host/render_view_host_impl.h2
-rw-r--r--content/browser/renderer_host/test_render_view_host.cc2
-rw-r--r--content/browser/renderer_host/test_render_view_host.h1
-rw-r--r--content/browser/web_contents/web_contents_impl.cc2
-rw-r--r--content/browser/web_contents/web_contents_impl.h5
-rw-r--r--content/browser/web_contents/web_contents_impl_unittest.cc2
-rw-r--r--content/content_browser.gypi1
-rw-r--r--content/test/test_render_frame_host_factory.cc3
-rw-r--r--content/test/test_render_frame_host_factory.h5
-rw-r--r--content/test/test_render_view_host_factory.cc5
-rw-r--r--content/test/test_render_view_host_factory.h1
32 files changed, 118 insertions, 42 deletions
diff --git a/content/browser/frame_host/frame_tree.cc b/content/browser/frame_host/frame_tree.cc
index 303c496..814ca9e 100644
--- a/content/browser/frame_host/frame_tree.cc
+++ b/content/browser/frame_host/frame_tree.cc
@@ -44,13 +44,16 @@ bool FrameTreeNodeForFrameId(int64 frame_id,
} // namespace
FrameTree::FrameTree(Navigator* navigator,
+ RenderFrameHostDelegate* render_frame_delegate,
RenderViewHostDelegate* render_view_delegate,
RenderWidgetHostDelegate* render_widget_delegate,
RenderFrameHostManager::Delegate* manager_delegate)
- : render_view_delegate_(render_view_delegate),
+ : render_frame_delegate_(render_frame_delegate),
+ render_view_delegate_(render_view_delegate),
render_widget_delegate_(render_widget_delegate),
manager_delegate_(manager_delegate),
root_(new FrameTreeNode(navigator,
+ render_frame_delegate,
render_view_delegate,
render_widget_delegate,
manager_delegate,
@@ -169,13 +172,14 @@ scoped_ptr<FrameTreeNode> FrameTree::CreateNode(
scoped_ptr<RenderFrameHostImpl> render_frame_host(
RenderFrameHostFactory::Create(
root_->render_frame_host()->render_view_host(),
+ root_->render_frame_host()->delegate(),
this,
render_frame_host_id,
false));
return make_scoped_ptr(new FrameTreeNode(navigator,
- render_view_delegate_, render_widget_delegate_, manager_delegate_,
- frame_id, frame_name, render_frame_host.Pass()));
+ render_frame_delegate_, render_view_delegate_, render_widget_delegate_,
+ manager_delegate_, frame_id, frame_name, render_frame_host.Pass()));
}
} // namespace content
diff --git a/content/browser/frame_host/frame_tree.h b/content/browser/frame_host/frame_tree.h
index 498dc20..11a41b8 100644
--- a/content/browser/frame_host/frame_tree.h
+++ b/content/browser/frame_host/frame_tree.h
@@ -16,6 +16,7 @@ namespace content {
class FrameTreeNode;
class Navigator;
+class RenderFrameHostDelegate;
class RenderProcessHost;
class RenderViewHostDelegate;
class RenderViewHostImpl;
@@ -46,6 +47,7 @@ class CONTENT_EXPORT FrameTree {
// TODO(creis): This set of delegates will change as we move things to
// Navigator.
FrameTree(Navigator* navigator,
+ RenderFrameHostDelegate* render_frame_delegate,
RenderViewHostDelegate* render_view_delegate,
RenderWidgetHostDelegate* render_widget_delegate,
RenderFrameHostManager::Delegate* manager_delegate);
@@ -118,6 +120,7 @@ class CONTENT_EXPORT FrameTree {
// These delegates are installed into all the RenderViewHosts and
// RenderFrameHosts that we create.
+ RenderFrameHostDelegate* render_frame_delegate_;
RenderViewHostDelegate* render_view_delegate_;
RenderWidgetHostDelegate* render_widget_delegate_;
RenderFrameHostManager::Delegate* manager_delegate_;
diff --git a/content/browser/frame_host/frame_tree_node.cc b/content/browser/frame_host/frame_tree_node.cc
index 65c20ee..cf5d906 100644
--- a/content/browser/frame_host/frame_tree_node.cc
+++ b/content/browser/frame_host/frame_tree_node.cc
@@ -16,6 +16,7 @@ const int64 FrameTreeNode::kInvalidFrameId = -1;
int64 FrameTreeNode::next_frame_tree_node_id_ = 1;
FrameTreeNode::FrameTreeNode(Navigator* navigator,
+ RenderFrameHostDelegate* render_frame_delegate,
RenderViewHostDelegate* render_view_delegate,
RenderWidgetHostDelegate* render_widget_delegate,
RenderFrameHostManager::Delegate* manager_delegate,
@@ -23,7 +24,8 @@ FrameTreeNode::FrameTreeNode(Navigator* navigator,
const std::string& name,
scoped_ptr<RenderFrameHostImpl> render_frame_host)
: navigator_(navigator),
- render_manager_(render_view_delegate,
+ render_manager_(render_frame_delegate,
+ render_view_delegate,
render_widget_delegate,
manager_delegate),
frame_tree_node_id_(next_frame_tree_node_id_++),
diff --git a/content/browser/frame_host/frame_tree_node.h b/content/browser/frame_host/frame_tree_node.h
index cc8e9fa..145d036 100644
--- a/content/browser/frame_host/frame_tree_node.h
+++ b/content/browser/frame_host/frame_tree_node.h
@@ -29,6 +29,7 @@ class CONTENT_EXPORT FrameTreeNode {
static const int64 kInvalidFrameId;
FrameTreeNode(Navigator* navigator,
+ RenderFrameHostDelegate* render_frame_delegate,
RenderViewHostDelegate* render_view_delegate,
RenderWidgetHostDelegate* render_widget_delegate,
RenderFrameHostManager::Delegate* manager_delegate,
diff --git a/content/browser/frame_host/frame_tree_unittest.cc b/content/browser/frame_host/frame_tree_unittest.cc
index 27b8167..3fa74f9 100644
--- a/content/browser/frame_host/frame_tree_unittest.cc
+++ b/content/browser/frame_host/frame_tree_unittest.cc
@@ -53,7 +53,7 @@ class FrameTreeTest : public RenderViewHostTestHarness {
// - Swapping back to NULL doesn't crash (easier tear-down for interstitials).
// - Main frame does not own RenderFrameHost.
TEST_F(FrameTreeTest, RootNode) {
- FrameTree frame_tree(new Navigator(NULL, NULL), NULL, NULL, NULL);
+ FrameTree frame_tree(new Navigator(NULL, NULL), NULL, NULL, NULL, NULL);
// Initial state has empty node.
FrameTreeNode* root = frame_tree.root();
@@ -80,7 +80,7 @@ TEST_F(FrameTreeTest, RootNode) {
// - On creation, frame id is unassigned.
// - After a swap, frame id is unassigned.
TEST_F(FrameTreeTest, FirstNavigationAfterSwap) {
- FrameTree frame_tree(new Navigator(NULL, NULL), NULL, NULL, NULL);
+ FrameTree frame_tree(new Navigator(NULL, NULL), NULL, NULL, NULL, NULL);
EXPECT_TRUE(frame_tree.IsFirstNavigationAfterSwap());
EXPECT_EQ(FrameTreeNode::kInvalidFrameId,
@@ -99,7 +99,7 @@ TEST_F(FrameTreeTest, FirstNavigationAfterSwap) {
// - Add a series of nodes and verify tree structure.
// - Remove a series of nodes and verify tree structure.
TEST_F(FrameTreeTest, Shape) {
- FrameTree frame_tree(new Navigator(NULL, NULL), NULL, NULL, NULL);
+ FrameTree frame_tree(new Navigator(NULL, NULL), NULL, NULL, NULL, NULL);
std::string no_children_node("no children node");
std::string deep_subtree("node with deep subtree");
@@ -108,6 +108,7 @@ TEST_F(FrameTreeTest, Shape) {
// main frame swap here.
scoped_ptr<RenderFrameHostImpl> render_frame_host =
RenderFrameHostFactory::Create(static_cast<RenderViewHostImpl*>(rvh()),
+ NULL,
&frame_tree,
process()->GetNextRoutingID(),
false);
diff --git a/content/browser/frame_host/interstitial_page_impl.cc b/content/browser/frame_host/interstitial_page_impl.cc
index 1e65d22..5a96f4d 100644
--- a/content/browser/frame_host/interstitial_page_impl.cc
+++ b/content/browser/frame_host/interstitial_page_impl.cc
@@ -161,7 +161,7 @@ InterstitialPageImpl::InterstitialPageImpl(
// While we get the code to a point to do this, pass NULL for it.
// TODO(creis): We will also need to pass delegates for the RVHM as we
// start to use it.
- frame_tree_(new Navigator(NULL, this), NULL, NULL, NULL),
+ frame_tree_(new Navigator(NULL, this), NULL, NULL, NULL, NULL),
original_child_id_(web_contents->GetRenderProcessHost()->GetID()),
original_rvh_id_(web_contents->GetRenderViewHost()->GetRoutingID()),
should_revert_web_contents_title_(false),
@@ -526,6 +526,7 @@ RenderViewHost* InterstitialPageImpl::CreateRenderViewHost() {
return RenderViewHostFactory::Create(site_instance.get(),
this,
this,
+ this,
MSG_ROUTING_NONE,
MSG_ROUTING_NONE,
false,
diff --git a/content/browser/frame_host/interstitial_page_impl.h b/content/browser/frame_host/interstitial_page_impl.h
index 81d2c7c..cf981a8 100644
--- a/content/browser/frame_host/interstitial_page_impl.h
+++ b/content/browser/frame_host/interstitial_page_impl.h
@@ -10,6 +10,7 @@
#include "base/memory/weak_ptr.h"
#include "content/browser/frame_host/frame_tree.h"
#include "content/browser/frame_host/navigator_delegate.h"
+#include "content/browser/frame_host/render_frame_host_delegate.h"
#include "content/browser/renderer_host/render_view_host_delegate.h"
#include "content/browser/renderer_host/render_widget_host_delegate.h"
#include "content/public/browser/interstitial_page.h"
@@ -38,6 +39,7 @@ class CONTENT_EXPORT InterstitialPageImpl
: public NON_EXPORTED_BASE(InterstitialPage),
public NotificationObserver,
public WebContentsObserver,
+ public NON_EXPORTED_BASE(RenderFrameHostDelegate),
public RenderViewHostDelegate,
public RenderWidgetHostDelegate,
public NON_EXPORTED_BASE(NavigatorDelegate) {
@@ -101,6 +103,8 @@ class CONTENT_EXPORT InterstitialPageImpl
virtual void NavigationEntryCommitted(
const LoadCommittedDetails& load_details) OVERRIDE;
+ // RenderFrameHostDelegate implementation:
+
// RenderViewHostDelegate implementation:
virtual RenderViewHostDelegateView* GetDelegateView() OVERRIDE;
virtual const GURL& GetURL() const OVERRIDE;
diff --git a/content/browser/frame_host/render_frame_host_delegate.h b/content/browser/frame_host/render_frame_host_delegate.h
new file mode 100644
index 0000000..7fb299c
--- /dev/null
+++ b/content/browser/frame_host/render_frame_host_delegate.h
@@ -0,0 +1,21 @@
+// Copyright 2013 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef CONTENT_BROWSER_FRAME_HOST_RENDER_FRAME_HOST_DELEGATE_H_
+#define CONTENT_BROWSER_FRAME_HOST_RENDER_FRAME_HOST_DELEGATE_H_
+
+namespace content {
+
+// An interface implemented by an object interested in knowing about the state
+// of the RenderFrameHost.
+class RenderFrameHostDelegate {
+ public:
+
+ protected:
+ virtual ~RenderFrameHostDelegate() {}
+};
+
+} // namespace content
+
+#endif // CONTENT_BROWSER_FRAME_HOST_RENDER_FRAME_HOST_DELEGATE_H_
diff --git a/content/browser/frame_host/render_frame_host_factory.cc b/content/browser/frame_host/render_frame_host_factory.cc
index 8e9215c..1a1daa2 100644
--- a/content/browser/frame_host/render_frame_host_factory.cc
+++ b/content/browser/frame_host/render_frame_host_factory.cc
@@ -15,17 +15,19 @@ RenderFrameHostFactory* RenderFrameHostFactory::factory_ = NULL;
// static
scoped_ptr<RenderFrameHostImpl> RenderFrameHostFactory::Create(
RenderViewHostImpl* render_view_host,
+ RenderFrameHostDelegate* delegate,
FrameTree* frame_tree,
int routing_id,
bool is_swapped_out) {
if (factory_) {
return factory_->CreateRenderFrameHost(render_view_host,
+ delegate,
frame_tree,
routing_id,
is_swapped_out).Pass();
}
return make_scoped_ptr(new RenderFrameHostImpl(
- render_view_host, frame_tree, routing_id, is_swapped_out));
+ render_view_host, delegate, frame_tree, routing_id, is_swapped_out));
}
// static
diff --git a/content/browser/frame_host/render_frame_host_factory.h b/content/browser/frame_host/render_frame_host_factory.h
index 4b6e2b6..2332922 100644
--- a/content/browser/frame_host/render_frame_host_factory.h
+++ b/content/browser/frame_host/render_frame_host_factory.h
@@ -12,6 +12,7 @@
namespace content {
class FrameTree;
+class RenderFrameHostDelegate;
class RenderFrameHostImpl;
class RenderViewHostImpl;
@@ -24,6 +25,7 @@ class CONTENT_EXPORT RenderFrameHostFactory {
// or a regular RenderFrameHostImpl if no factory is registered.
static scoped_ptr<RenderFrameHostImpl> Create(
RenderViewHostImpl* render_view_host,
+ RenderFrameHostDelegate* delegate,
FrameTree* frame_tree,
int routing_id,
bool is_swapped_out);
@@ -39,6 +41,7 @@ class CONTENT_EXPORT RenderFrameHostFactory {
// function to create an alternate kind of RenderFrameHostImpl for testing.
virtual scoped_ptr<RenderFrameHostImpl> CreateRenderFrameHost(
RenderViewHostImpl* render_view_host,
+ RenderFrameHostDelegate* delegate,
FrameTree* frame_tree,
int routing_id,
bool is_swapped_out) = 0;
diff --git a/content/browser/frame_host/render_frame_host_impl.cc b/content/browser/frame_host/render_frame_host_impl.cc
index c1fbc30..3d2f1e4 100644
--- a/content/browser/frame_host/render_frame_host_impl.cc
+++ b/content/browser/frame_host/render_frame_host_impl.cc
@@ -7,6 +7,7 @@
#include "base/containers/hash_tables.h"
#include "base/lazy_instance.h"
#include "content/browser/frame_host/frame_tree.h"
+#include "content/browser/frame_host/render_frame_host_delegate.h"
#include "content/browser/renderer_host/render_view_host_impl.h"
#include "content/common/frame_messages.h"
#include "content/public/browser/browser_thread.h"
@@ -33,10 +34,12 @@ RenderFrameHostImpl* RenderFrameHostImpl::FromID(
RenderFrameHostImpl::RenderFrameHostImpl(
RenderViewHostImpl* render_view_host,
+ RenderFrameHostDelegate* delegate,
FrameTree* frame_tree,
int routing_id,
bool is_swapped_out)
: render_view_host_(render_view_host),
+ delegate_(delegate),
frame_tree_(frame_tree),
routing_id_(routing_id),
is_swapped_out_(is_swapped_out) {
diff --git a/content/browser/frame_host/render_frame_host_impl.h b/content/browser/frame_host/render_frame_host_impl.h
index 3c5e3ac..4279b6b 100644
--- a/content/browser/frame_host/render_frame_host_impl.h
+++ b/content/browser/frame_host/render_frame_host_impl.h
@@ -16,6 +16,7 @@ class GURL;
namespace content {
class FrameTree;
+class RenderFrameHostDelegate;
class RenderProcessHost;
class RenderViewHostImpl;
@@ -39,9 +40,8 @@ class CONTENT_EXPORT RenderFrameHostImpl : public RenderFrameHost {
int64 frame_id,
const std::string& frame_name);
- RenderViewHostImpl* render_view_host() {
- return render_view_host_;
- }
+ RenderViewHostImpl* render_view_host() { return render_view_host_; }
+ RenderFrameHostDelegate* delegate() { return delegate_; }
protected:
friend class RenderFrameHostFactory;
@@ -50,6 +50,7 @@ class CONTENT_EXPORT RenderFrameHostImpl : public RenderFrameHost {
// should be the abstraction needed here, but we need RenderViewHost to pass
// into WebContentsObserver::FrameDetached for now.
RenderFrameHostImpl(RenderViewHostImpl* render_view_host,
+ RenderFrameHostDelegate* delegate,
FrameTree* frame_tree,
int routing_id,
bool is_swapped_out);
@@ -67,6 +68,8 @@ class CONTENT_EXPORT RenderFrameHostImpl : public RenderFrameHost {
// TODO(nasko): This should be removed and replaced by RenderProcessHost.
RenderViewHostImpl* render_view_host_; // Not owned.
+ RenderFrameHostDelegate* delegate_;
+
// Reference to the whole frame tree that this RenderFrameHost belongs too.
// Allows this RenderFrameHost to add and remove nodes in response to
// messages from the renderer requesting DOM manipulation.
diff --git a/content/browser/frame_host/render_frame_host_manager.cc b/content/browser/frame_host/render_frame_host_manager.cc
index b6c4cc6..8b7448d 100644
--- a/content/browser/frame_host/render_frame_host_manager.cc
+++ b/content/browser/frame_host/render_frame_host_manager.cc
@@ -57,11 +57,13 @@ RenderFrameHostManager::PendingNavigationParams::PendingNavigationParams(
RenderFrameHostManager::PendingNavigationParams::~PendingNavigationParams() {}
RenderFrameHostManager::RenderFrameHostManager(
+ RenderFrameHostDelegate* render_frame_delegate,
RenderViewHostDelegate* render_view_delegate,
RenderWidgetHostDelegate* render_widget_delegate,
Delegate* delegate)
: delegate_(delegate),
cross_navigation_pending_(false),
+ render_frame_delegate_(render_frame_delegate),
render_view_delegate_(render_view_delegate),
render_widget_delegate_(render_widget_delegate),
render_view_host_(NULL),
@@ -98,8 +100,8 @@ void RenderFrameHostManager::Init(BrowserContext* browser_context,
site_instance = SiteInstance::Create(browser_context);
render_view_host_ = static_cast<RenderViewHostImpl*>(
RenderViewHostFactory::Create(
- site_instance, render_view_delegate_, render_widget_delegate_,
- routing_id, main_frame_routing_id, false,
+ site_instance, render_view_delegate_, render_frame_delegate_,
+ render_widget_delegate_, routing_id, main_frame_routing_id, false,
delegate_->IsHidden()));
render_view_host_->AttachToFrameTree();
@@ -745,6 +747,7 @@ int RenderFrameHostManager::CreateRenderView(
new_render_view_host = static_cast<RenderViewHostImpl*>(
RenderViewHostFactory::Create(instance,
render_view_delegate_,
+ render_frame_delegate_,
render_widget_delegate_,
MSG_ROUTING_NONE,
MSG_ROUTING_NONE,
diff --git a/content/browser/frame_host/render_frame_host_manager.h b/content/browser/frame_host/render_frame_host_manager.h
index 78ca04a..94a4998 100644
--- a/content/browser/frame_host/render_frame_host_manager.h
+++ b/content/browser/frame_host/render_frame_host_manager.h
@@ -23,6 +23,7 @@ class InterstitialPageImpl;
class NavigationControllerImpl;
class NavigationEntry;
class NavigationEntryImpl;
+class RenderFrameHostDelegate;
class RenderFrameHostManagerTest;
class RenderViewHost;
class RenderViewHostImpl;
@@ -113,6 +114,7 @@ class CONTENT_EXPORT RenderFrameHostManager
//
// You must call Init() before using this class.
RenderFrameHostManager(
+ RenderFrameHostDelegate* render_frame_delegate,
RenderViewHostDelegate* render_view_delegate,
RenderWidgetHostDelegate* render_widget_delegate,
Delegate* delegate);
@@ -356,6 +358,7 @@ class CONTENT_EXPORT RenderFrameHostManager
// Implemented by the owner of this class, these delegates are installed into
// all the RenderViewHosts that we create.
+ RenderFrameHostDelegate* render_frame_delegate_;
RenderViewHostDelegate* render_view_delegate_;
RenderWidgetHostDelegate* render_widget_delegate_;
diff --git a/content/browser/frame_host/render_frame_host_manager_unittest.cc b/content/browser/frame_host/render_frame_host_manager_unittest.cc
index 69d977b..f7f3a81 100644
--- a/content/browser/frame_host/render_frame_host_manager_unittest.cc
+++ b/content/browser/frame_host/render_frame_host_manager_unittest.cc
@@ -568,7 +568,7 @@ TEST_F(RenderFrameHostManagerTest, Init) {
scoped_ptr<TestWebContents> web_contents(
TestWebContents::Create(browser_context(), instance));
RenderFrameHostManager manager(web_contents.get(), web_contents.get(),
- web_contents.get());
+ web_contents.get(), web_contents.get());
manager.Init(browser_context(), instance, MSG_ROUTING_NONE, MSG_ROUTING_NONE);
@@ -594,7 +594,7 @@ TEST_F(RenderFrameHostManagerTest, Navigate) {
// Create.
RenderFrameHostManager manager(web_contents.get(), web_contents.get(),
- web_contents.get());
+ web_contents.get(), web_contents.get());
manager.Init(browser_context(), instance, MSG_ROUTING_NONE, MSG_ROUTING_NONE);
@@ -686,7 +686,7 @@ TEST_F(RenderFrameHostManagerTest, NavigateWithEarlyReNavigation) {
// Create.
RenderFrameHostManager manager(web_contents.get(), web_contents.get(),
- web_contents.get());
+ web_contents.get(), web_contents.get());
manager.Init(browser_context(), instance, MSG_ROUTING_NONE, MSG_ROUTING_NONE);
@@ -829,7 +829,7 @@ TEST_F(RenderFrameHostManagerTest, WebUI) {
scoped_ptr<TestWebContents> web_contents(
TestWebContents::Create(browser_context(), instance));
RenderFrameHostManager manager(web_contents.get(), web_contents.get(),
- web_contents.get());
+ web_contents.get(), web_contents.get());
manager.Init(browser_context(), instance, MSG_ROUTING_NONE, MSG_ROUTING_NONE);
EXPECT_FALSE(manager.current_host()->IsRenderViewLive());
@@ -876,7 +876,7 @@ TEST_F(RenderFrameHostManagerTest, WebUIInNewTab) {
scoped_ptr<TestWebContents> web_contents1(
TestWebContents::Create(browser_context(), blank_instance));
RenderFrameHostManager manager1(web_contents1.get(), web_contents1.get(),
- web_contents1.get());
+ web_contents1.get(), web_contents1.get());
manager1.Init(
browser_context(), blank_instance, MSG_ROUTING_NONE, MSG_ROUTING_NONE);
// Test the case that new RVH is considered live.
@@ -906,7 +906,7 @@ TEST_F(RenderFrameHostManagerTest, WebUIInNewTab) {
scoped_ptr<TestWebContents> web_contents2(
TestWebContents::Create(browser_context(), webui_instance));
RenderFrameHostManager manager2(web_contents2.get(), web_contents2.get(),
- web_contents2.get());
+ web_contents2.get(), web_contents2.get());
manager2.Init(
browser_context(), webui_instance, MSG_ROUTING_NONE, MSG_ROUTING_NONE);
// Make sure the new RVH is considered live. This is usually done in
@@ -1192,7 +1192,7 @@ TEST_F(RenderFrameHostManagerTest, NoSwapOnGuestNavigations) {
// Create.
RenderFrameHostManager manager(web_contents.get(), web_contents.get(),
- web_contents.get());
+ web_contents.get(), web_contents.get());
manager.Init(browser_context(), instance, MSG_ROUTING_NONE, MSG_ROUTING_NONE);
@@ -1257,7 +1257,7 @@ TEST_F(RenderFrameHostManagerTest, NavigateWithEarlyClose) {
// Create.
RenderFrameHostManager manager(web_contents.get(), web_contents.get(),
- web_contents.get());
+ web_contents.get(), web_contents.get());
manager.Init(browser_context(), instance, MSG_ROUTING_NONE, MSG_ROUTING_NONE);
diff --git a/content/browser/frame_host/test_render_frame_host.cc b/content/browser/frame_host/test_render_frame_host.cc
index 040b232..f833d08 100644
--- a/content/browser/frame_host/test_render_frame_host.cc
+++ b/content/browser/frame_host/test_render_frame_host.cc
@@ -7,10 +7,12 @@
namespace content {
TestRenderFrameHost::TestRenderFrameHost(RenderViewHostImpl* render_view_host,
+ RenderFrameHostDelegate* delegate,
FrameTree* frame_tree,
int routing_id,
bool is_swapped_out)
: RenderFrameHostImpl(render_view_host,
+ delegate,
frame_tree,
routing_id,
is_swapped_out) {}
diff --git a/content/browser/frame_host/test_render_frame_host.h b/content/browser/frame_host/test_render_frame_host.h
index 18055d6..68d7cd0 100644
--- a/content/browser/frame_host/test_render_frame_host.h
+++ b/content/browser/frame_host/test_render_frame_host.h
@@ -13,6 +13,7 @@ namespace content {
class TestRenderFrameHost : public RenderFrameHostImpl {
public:
TestRenderFrameHost(RenderViewHostImpl* render_view_host,
+ RenderFrameHostDelegate* delegate,
FrameTree* frame_tree,
int routing_id,
bool is_swapped_out);
diff --git a/content/browser/renderer_host/media/web_contents_video_capture_device_unittest.cc b/content/browser/renderer_host/media/web_contents_video_capture_device_unittest.cc
index 5ef2ef9..7b00597 100644
--- a/content/browser/renderer_host/media/web_contents_video_capture_device_unittest.cc
+++ b/content/browser/renderer_host/media/web_contents_video_capture_device_unittest.cc
@@ -228,13 +228,14 @@ class CaptureTestRenderViewHost : public TestRenderViewHost {
public:
CaptureTestRenderViewHost(SiteInstance* instance,
RenderViewHostDelegate* delegate,
+ RenderFrameHostDelegate* frame_delegate,
RenderWidgetHostDelegate* widget_delegate,
int routing_id,
int main_frame_routing_id,
bool swapped_out,
CaptureTestSourceController* controller)
- : TestRenderViewHost(instance, delegate, widget_delegate, routing_id,
- main_frame_routing_id, swapped_out),
+ : TestRenderViewHost(instance, delegate, frame_delegate, widget_delegate,
+ routing_id, main_frame_routing_id, swapped_out),
controller_(controller) {
// Override the default view installed by TestRenderViewHost; we need
// our special subclass which has mocked-out tab capture support.
@@ -289,13 +290,15 @@ class CaptureTestRenderViewHostFactory : public RenderViewHostFactory {
virtual RenderViewHost* CreateRenderViewHost(
SiteInstance* instance,
RenderViewHostDelegate* delegate,
+ RenderFrameHostDelegate* frame_delegate,
RenderWidgetHostDelegate* widget_delegate,
int routing_id,
int main_frame_routing_id,
bool swapped_out) OVERRIDE {
- return new CaptureTestRenderViewHost(instance, delegate, widget_delegate,
- routing_id, main_frame_routing_id,
- swapped_out, controller_);
+ return new CaptureTestRenderViewHost(instance, delegate, frame_delegate,
+ widget_delegate, routing_id,
+ main_frame_routing_id, swapped_out,
+ controller_);
}
private:
CaptureTestSourceController* controller_;
diff --git a/content/browser/renderer_host/render_view_host_factory.cc b/content/browser/renderer_host/render_view_host_factory.cc
index 5cffd13..fe51c7e 100644
--- a/content/browser/renderer_host/render_view_host_factory.cc
+++ b/content/browser/renderer_host/render_view_host_factory.cc
@@ -16,17 +16,19 @@ RenderViewHostFactory* RenderViewHostFactory::factory_ = NULL;
RenderViewHost* RenderViewHostFactory::Create(
SiteInstance* instance,
RenderViewHostDelegate* delegate,
+ RenderFrameHostDelegate* frame_delegate,
RenderWidgetHostDelegate* widget_delegate,
int routing_id,
int main_frame_routing_id,
bool swapped_out,
bool hidden) {
if (factory_) {
- return factory_->CreateRenderViewHost(instance, delegate, widget_delegate,
- routing_id, main_frame_routing_id,
- swapped_out);
+ return factory_->CreateRenderViewHost(instance, delegate, frame_delegate,
+ widget_delegate, routing_id,
+ main_frame_routing_id, swapped_out);
}
- return new RenderViewHostImpl(instance, delegate, widget_delegate, routing_id,
+ return new RenderViewHostImpl(instance, delegate, frame_delegate,
+ widget_delegate, routing_id,
main_frame_routing_id, swapped_out, hidden);
}
diff --git a/content/browser/renderer_host/render_view_host_factory.h b/content/browser/renderer_host/render_view_host_factory.h
index b046635..cf6a0f1 100644
--- a/content/browser/renderer_host/render_view_host_factory.h
+++ b/content/browser/renderer_host/render_view_host_factory.h
@@ -9,6 +9,7 @@
#include "content/common/content_export.h"
namespace content {
+class RenderFrameHostDelegate;
class RenderViewHost;
class RenderViewHostDelegate;
class RenderWidgetHostDelegate;
@@ -26,6 +27,7 @@ class RenderViewHostFactory {
static RenderViewHost* Create(
SiteInstance* instance,
RenderViewHostDelegate* delegate,
+ RenderFrameHostDelegate* frame_delegate,
RenderWidgetHostDelegate* widget_delegate,
int routing_id,
int main_frame_routing_id,
@@ -46,6 +48,7 @@ class RenderViewHostFactory {
virtual RenderViewHost* CreateRenderViewHost(
SiteInstance* instance,
RenderViewHostDelegate* delegate,
+ RenderFrameHostDelegate* frame_delegate,
RenderWidgetHostDelegate* widget_delegate,
int routing_id,
int main_frame_routing_id,
diff --git a/content/browser/renderer_host/render_view_host_impl.cc b/content/browser/renderer_host/render_view_host_impl.cc
index 9ce8199..0299886 100644
--- a/content/browser/renderer_host/render_view_host_impl.cc
+++ b/content/browser/renderer_host/render_view_host_impl.cc
@@ -159,6 +159,7 @@ RenderViewHostImpl* RenderViewHostImpl::FromID(int render_process_id,
RenderViewHostImpl::RenderViewHostImpl(
SiteInstance* instance,
RenderViewHostDelegate* delegate,
+ RenderFrameHostDelegate* frame_delegate,
RenderWidgetHostDelegate* widget_delegate,
int routing_id,
int main_frame_routing_id,
@@ -193,7 +194,8 @@ RenderViewHostImpl::RenderViewHostImpl(
main_frame_routing_id = GetProcess()->GetNextRoutingID();
main_render_frame_host_ = RenderFrameHostFactory::Create(
- this, delegate_->GetFrameTree(), main_frame_routing_id, is_swapped_out_);
+ this, frame_delegate, delegate_->GetFrameTree(), main_frame_routing_id,
+ is_swapped_out_);
GetProcess()->EnableSendQueue();
diff --git a/content/browser/renderer_host/render_view_host_impl.h b/content/browser/renderer_host/render_view_host_impl.h
index 6e02571..44851ee 100644
--- a/content/browser/renderer_host/render_view_host_impl.h
+++ b/content/browser/renderer_host/render_view_host_impl.h
@@ -61,6 +61,7 @@ namespace content {
class BrowserMediaPlayerManager;
class ChildProcessSecurityPolicyImpl;
class PageState;
+class RenderFrameHostDelegate;
class RenderFrameHostImpl;
class RenderWidgetHostDelegate;
class SessionStorageNamespace;
@@ -118,6 +119,7 @@ class CONTENT_EXPORT RenderViewHostImpl
RenderViewHostImpl(
SiteInstance* instance,
RenderViewHostDelegate* delegate,
+ RenderFrameHostDelegate* frame_delegate,
RenderWidgetHostDelegate* widget_delegate,
int routing_id,
int main_frame_routing_id,
diff --git a/content/browser/renderer_host/test_render_view_host.cc b/content/browser/renderer_host/test_render_view_host.cc
index 4dfcf70..bc8279c 100644
--- a/content/browser/renderer_host/test_render_view_host.cc
+++ b/content/browser/renderer_host/test_render_view_host.cc
@@ -238,12 +238,14 @@ gfx::NativeViewId TestRenderWidgetHostView::GetParentForWindowlessPlugin()
TestRenderViewHost::TestRenderViewHost(
SiteInstance* instance,
RenderViewHostDelegate* delegate,
+ RenderFrameHostDelegate* frame_delegate,
RenderWidgetHostDelegate* widget_delegate,
int routing_id,
int main_frame_routing_id,
bool swapped_out)
: RenderViewHostImpl(instance,
delegate,
+ frame_delegate,
widget_delegate,
routing_id,
main_frame_routing_id,
diff --git a/content/browser/renderer_host/test_render_view_host.h b/content/browser/renderer_host/test_render_view_host.h
index 680f937..19add78 100644
--- a/content/browser/renderer_host/test_render_view_host.h
+++ b/content/browser/renderer_host/test_render_view_host.h
@@ -233,6 +233,7 @@ class TestRenderViewHost
public:
TestRenderViewHost(SiteInstance* instance,
RenderViewHostDelegate* delegate,
+ RenderFrameHostDelegate* frame_delegate,
RenderWidgetHostDelegate* widget_delegate,
int routing_id,
int main_frame_routing_id,
diff --git a/content/browser/web_contents/web_contents_impl.cc b/content/browser/web_contents/web_contents_impl.cc
index e363c32..2e49ce3 100644
--- a/content/browser/web_contents/web_contents_impl.cc
+++ b/content/browser/web_contents/web_contents_impl.cc
@@ -345,7 +345,7 @@ WebContentsImpl::WebContentsImpl(
#if defined(OS_WIN) && defined(USE_AURA)
accessible_parent_(NULL),
#endif
- frame_tree_(new Navigator(&controller_, this), this, this, this),
+ frame_tree_(new Navigator(&controller_, this), this, this, this, this),
is_loading_(false),
crashed_status_(base::TERMINATION_STATUS_STILL_RUNNING),
crashed_error_code_(0),
diff --git a/content/browser/web_contents/web_contents_impl.h b/content/browser/web_contents/web_contents_impl.h
index df68db9..7dbdf66 100644
--- a/content/browser/web_contents/web_contents_impl.h
+++ b/content/browser/web_contents/web_contents_impl.h
@@ -19,6 +19,7 @@
#include "content/browser/frame_host/navigation_controller_delegate.h"
#include "content/browser/frame_host/navigation_controller_impl.h"
#include "content/browser/frame_host/navigator_delegate.h"
+#include "content/browser/frame_host/render_frame_host_delegate.h"
#include "content/browser/frame_host/render_frame_host_manager.h"
#include "content/browser/renderer_host/render_view_host_delegate.h"
#include "content/browser/renderer_host/render_widget_host_delegate.h"
@@ -78,6 +79,7 @@ WebContentsViewPort* CreateWebContentsView(
class CONTENT_EXPORT WebContentsImpl
: public NON_EXPORTED_BASE(WebContents),
+ public NON_EXPORTED_BASE(RenderFrameHostDelegate),
public RenderViewHostDelegate,
public RenderWidgetHostDelegate,
public RenderFrameHostManager::Delegate,
@@ -273,8 +275,9 @@ class CONTENT_EXPORT WebContentsImpl
// Implementation of IPC::Sender.
virtual bool Send(IPC::Message* message) OVERRIDE;
- // RenderViewHostDelegate ----------------------------------------------------
+ // RenderFrameHostDelegate ---------------------------------------------------
+ // RenderViewHostDelegate ----------------------------------------------------
virtual RenderViewHostDelegateView* GetDelegateView() OVERRIDE;
virtual RenderViewHostDelegate::RendererManagement*
GetRendererManagementDelegate() OVERRIDE;
diff --git a/content/browser/web_contents/web_contents_impl_unittest.cc b/content/browser/web_contents/web_contents_impl_unittest.cc
index 01c0191..083dce0 100644
--- a/content/browser/web_contents/web_contents_impl_unittest.cc
+++ b/content/browser/web_contents/web_contents_impl_unittest.cc
@@ -183,7 +183,7 @@ class TestInterstitialPage : public InterstitialPageImpl {
virtual RenderViewHost* CreateRenderViewHost() OVERRIDE {
return new TestRenderViewHost(
SiteInstance::Create(web_contents()->GetBrowserContext()),
- this, this, MSG_ROUTING_NONE, MSG_ROUTING_NONE, false);
+ this, this, this, MSG_ROUTING_NONE, MSG_ROUTING_NONE, false);
}
virtual WebContentsView* CreateWebContentsView() OVERRIDE {
diff --git a/content/content_browser.gypi b/content/content_browser.gypi
index e1546b1..e235bbd 100644
--- a/content/content_browser.gypi
+++ b/content/content_browser.gypi
@@ -519,6 +519,7 @@
'browser/frame_host/navigator.cc',
'browser/frame_host/navigator.h',
'browser/frame_host/navigator_delegate.h',
+ 'browser/frame_host/render_frame_host_delegate.h',
'browser/frame_host/render_frame_host_factory.cc',
'browser/frame_host/render_frame_host_factory.h',
'browser/frame_host/render_frame_host_impl.cc',
diff --git a/content/test/test_render_frame_host_factory.cc b/content/test/test_render_frame_host_factory.cc
index c308aed..1ec7e8b 100644
--- a/content/test/test_render_frame_host_factory.cc
+++ b/content/test/test_render_frame_host_factory.cc
@@ -22,12 +22,13 @@ TestRenderFrameHostFactory::~TestRenderFrameHostFactory() {
scoped_ptr<RenderFrameHostImpl>
TestRenderFrameHostFactory::CreateRenderFrameHost(
RenderViewHostImpl* render_view_host,
+ RenderFrameHostDelegate* delegate,
FrameTree* frame_tree,
int routing_id,
bool is_swapped_out) {
return make_scoped_ptr(
new TestRenderFrameHost(
- render_view_host, frame_tree, routing_id, is_swapped_out))
+ render_view_host, delegate, frame_tree, routing_id, is_swapped_out))
.PassAs<RenderFrameHostImpl>();
}
diff --git a/content/test/test_render_frame_host_factory.h b/content/test/test_render_frame_host_factory.h
index cb2c480..91287bf 100644
--- a/content/test/test_render_frame_host_factory.h
+++ b/content/test/test_render_frame_host_factory.h
@@ -12,10 +12,6 @@
namespace content {
-class FrameTree;
-class RenderFrameHostImpl;
-class RenderViewHostImpl;
-
// Manages creation of the RenderFrameHostImpls; when registered, all created
// RenderFrameHostsImpls will be TestRenderFrameHosts. This
// automatically registers itself when it goes in scope, and unregisters itself
@@ -30,6 +26,7 @@ class TestRenderFrameHostFactory : public RenderFrameHostFactory {
// RenderFrameHostFactory implementation.
virtual scoped_ptr<RenderFrameHostImpl> CreateRenderFrameHost(
RenderViewHostImpl* render_view_host,
+ RenderFrameHostDelegate* delegate,
FrameTree* frame_tree,
int routing_id,
bool is_swapped_out) OVERRIDE;
diff --git a/content/test/test_render_view_host_factory.cc b/content/test/test_render_view_host_factory.cc
index ca86f09..ebba612 100644
--- a/content/test/test_render_view_host_factory.cc
+++ b/content/test/test_render_view_host_factory.cc
@@ -29,13 +29,14 @@ void TestRenderViewHostFactory::set_render_process_host_factory(
RenderViewHost* TestRenderViewHostFactory::CreateRenderViewHost(
SiteInstance* instance,
RenderViewHostDelegate* delegate,
+ RenderFrameHostDelegate* frame_delegate,
RenderWidgetHostDelegate* widget_delegate,
int routing_id,
int main_frame_routing_id,
bool swapped_out) {
return new TestRenderViewHost(
- instance, delegate, widget_delegate, routing_id, main_frame_routing_id,
- swapped_out);
+ instance, delegate, frame_delegate, widget_delegate, routing_id,
+ main_frame_routing_id, swapped_out);
}
} // namespace content
diff --git a/content/test/test_render_view_host_factory.h b/content/test/test_render_view_host_factory.h
index e93762f..df6a2d0 100644
--- a/content/test/test_render_view_host_factory.h
+++ b/content/test/test_render_view_host_factory.h
@@ -30,6 +30,7 @@ class TestRenderViewHostFactory : public RenderViewHostFactory {
virtual RenderViewHost* CreateRenderViewHost(
SiteInstance* instance,
RenderViewHostDelegate* delegate,
+ RenderFrameHostDelegate* frame_delegate,
RenderWidgetHostDelegate* widget_delegate,
int routing_id,
int main_frame_routing_id,