Index: trunk/src/content/browser/frame_host/frame_tree.cc |
=================================================================== |
--- trunk/src/content/browser/frame_host/frame_tree.cc (revision 241158) |
+++ trunk/src/content/browser/frame_host/frame_tree.cc (working copy) |
@@ -12,8 +12,6 @@ |
#include "content/browser/frame_host/navigator.h" |
#include "content/browser/frame_host/render_frame_host_factory.h" |
#include "content/browser/frame_host/render_frame_host_impl.h" |
-#include "content/browser/renderer_host/render_view_host_factory.h" |
-#include "content/browser/renderer_host/render_view_host_impl.h" |
namespace content { |
@@ -54,8 +52,7 @@ |
render_view_delegate_(render_view_delegate), |
render_widget_delegate_(render_widget_delegate), |
manager_delegate_(manager_delegate), |
- root_(new FrameTreeNode(this, |
- navigator, |
+ root_(new FrameTreeNode(navigator, |
render_frame_delegate, |
render_view_delegate, |
render_widget_delegate, |
@@ -97,7 +94,7 @@ |
root_->set_frame_id(main_frame_id); |
} |
-RenderFrameHostImpl* FrameTree::AddFrame(int frame_routing_id, |
+RenderFrameHostImpl* FrameTree::AddFrame(int render_frame_host_id, |
int64 parent_frame_id, |
int64 frame_id, |
const std::string& frame_name) { |
@@ -107,11 +104,10 @@ |
if (!parent) |
return NULL; |
- scoped_ptr<FrameTreeNode> node(new FrameTreeNode( |
- this, parent->navigator(), render_frame_delegate_, render_view_delegate_, |
- render_widget_delegate_, manager_delegate_, frame_id, frame_name)); |
- RenderFrameHostImpl* render_frame = node->current_frame_host(); |
- parent->AddChild(node.Pass(), frame_routing_id); |
+ scoped_ptr<FrameTreeNode> node(CreateNode( |
+ frame_id, frame_name, render_frame_host_id, parent)); |
+ RenderFrameHostImpl* render_frame = node->render_frame_host(); |
+ parent->AddChild(node.Pass()); |
return render_frame; |
} |
@@ -151,12 +147,12 @@ |
node->set_current_url(url); |
} |
-void FrameTree::ResetForMainFrameSwap() { |
- return root_->ResetForMainFrameSwap(); |
+void FrameTree::SwapMainFrame(RenderFrameHostImpl* render_frame_host) { |
+ return root_->ResetForMainFrame(render_frame_host); |
} |
RenderFrameHostImpl* FrameTree::GetMainFrame() const { |
- return root_->current_frame_host(); |
+ return root_->render_frame_host(); |
} |
void FrameTree::SetFrameRemoveListener( |
@@ -164,78 +160,32 @@ |
on_frame_removed_ = on_frame_removed; |
} |
-void FrameTree::ClearFrameRemoveListenerForTesting() { |
- on_frame_removed_.Reset(); |
-} |
- |
-RenderViewHostImpl* FrameTree::CreateRenderViewHostForMainFrame( |
- SiteInstance* site_instance, |
- int routing_id, |
- int main_frame_routing_id, |
- bool swapped_out, |
- bool hidden) { |
- DCHECK(main_frame_routing_id != MSG_ROUTING_NONE); |
- RenderViewHostMap::iterator iter = |
- render_view_host_map_.find(site_instance->GetId()); |
- CHECK(iter == render_view_host_map_.end()); |
- RenderViewHostImpl* rvh = static_cast<RenderViewHostImpl*>( |
- RenderViewHostFactory::Create(site_instance, |
- render_view_delegate_, |
- render_widget_delegate_, |
- routing_id, |
- main_frame_routing_id, |
- swapped_out, |
- hidden)); |
- |
- render_view_host_map_[site_instance->GetId()] = |
- RenderViewHostRefCount(rvh, 0); |
- return rvh; |
-} |
- |
-RenderViewHostImpl* FrameTree::GetRenderViewHostForSubFrame( |
- SiteInstance* site_instance) { |
- RenderViewHostMap::iterator iter = |
- render_view_host_map_.find(site_instance->GetId()); |
- CHECK(iter != render_view_host_map_.end()); |
- RenderViewHostRefCount rvh_refcount = iter->second; |
- return rvh_refcount.first; |
-} |
- |
-void FrameTree::RegisterRenderFrameHost( |
- RenderFrameHostImpl* render_frame_host) { |
- SiteInstance* site_instance = |
- render_frame_host->render_view_host()->GetSiteInstance(); |
- RenderViewHostMap::iterator iter = |
- render_view_host_map_.find(site_instance->GetId()); |
- CHECK(iter != render_view_host_map_.end()); |
- |
- // Increment the refcount. |
- CHECK_GE(iter->second.second, 0); |
- iter->second.second++; |
-} |
- |
-void FrameTree::UnregisterRenderFrameHost( |
- RenderFrameHostImpl* render_frame_host) { |
- SiteInstance* site_instance = |
- render_frame_host->render_view_host()->GetSiteInstance(); |
- RenderViewHostMap::iterator iter = |
- render_view_host_map_.find(site_instance->GetId()); |
- CHECK(iter != render_view_host_map_.end()); |
- |
- // Decrement the refcount and shutdown the RenderViewHost if no one else is |
- // using it. |
- CHECK_GT(iter->second.second, 0); |
- iter->second.second--; |
- if (iter->second.second == 0) { |
- iter->second.first->Shutdown(); |
- render_view_host_map_.erase(iter); |
- } |
-} |
- |
FrameTreeNode* FrameTree::FindByFrameID(int64 frame_id) { |
FrameTreeNode* node = NULL; |
ForEach(base::Bind(&FrameTreeNodeForFrameId, frame_id, &node)); |
return node; |
} |
+scoped_ptr<FrameTreeNode> FrameTree::CreateNode( |
+ int64 frame_id, |
+ const std::string& frame_name, |
+ int render_frame_host_id, |
+ FrameTreeNode* parent_node) { |
+ scoped_ptr<FrameTreeNode> frame_tree_node(new FrameTreeNode( |
+ parent_node->navigator(), render_frame_delegate_, render_view_delegate_, |
+ render_widget_delegate_, manager_delegate_, frame_id, frame_name)); |
+ |
+ scoped_ptr<RenderFrameHostImpl> render_frame_host( |
+ RenderFrameHostFactory::Create( |
+ parent_node->render_frame_host()->render_view_host(), |
+ parent_node->render_frame_host()->delegate(), |
+ this, |
+ frame_tree_node.get(), |
+ render_frame_host_id, |
+ false)); |
+ |
+ frame_tree_node->set_render_frame_host(render_frame_host.release(), true); |
+ return frame_tree_node.Pass(); |
+} |
+ |
} // namespace content |