Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(397)

Unified Diff: trunk/src/content/browser/frame_host/frame_tree_node.cc

Issue 105523006: Revert 241151 "Make RenderFrameHostManager swap RenderFrameHosts..." (Closed) Base URL: svn://svn.chromium.org/chrome/
Patch Set: Created 7 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: trunk/src/content/browser/frame_host/frame_tree_node.cc
===================================================================
--- trunk/src/content/browser/frame_host/frame_tree_node.cc (revision 241158)
+++ trunk/src/content/browser/frame_host/frame_tree_node.cc (working copy)
@@ -7,53 +7,39 @@
#include <queue>
#include "base/stl_util.h"
-#include "content/browser/frame_host/frame_tree.h"
#include "content/browser/frame_host/navigator.h"
#include "content/browser/frame_host/render_frame_host_impl.h"
-#include "content/browser/renderer_host/render_view_host_impl.h"
namespace content {
const int64 FrameTreeNode::kInvalidFrameId = -1;
int64 FrameTreeNode::next_frame_tree_node_id_ = 1;
-FrameTreeNode::FrameTreeNode(FrameTree* frame_tree,
- Navigator* navigator,
+FrameTreeNode::FrameTreeNode(Navigator* navigator,
RenderFrameHostDelegate* render_frame_delegate,
RenderViewHostDelegate* render_view_delegate,
RenderWidgetHostDelegate* render_widget_delegate,
RenderFrameHostManager::Delegate* manager_delegate,
int64 frame_id,
const std::string& name)
- : frame_tree_(frame_tree),
- navigator_(navigator),
- render_manager_(this,
- render_frame_delegate,
+ : navigator_(navigator),
+ render_manager_(render_frame_delegate,
render_view_delegate,
render_widget_delegate,
manager_delegate),
frame_tree_node_id_(next_frame_tree_node_id_++),
frame_id_(frame_id),
- frame_name_(name) {
+ frame_name_(name),
+ owns_render_frame_host_(true),
+ render_frame_host_(NULL) {
}
FrameTreeNode::~FrameTreeNode() {
+ if (owns_render_frame_host_)
+ delete render_frame_host_;
}
-bool FrameTreeNode::IsMainFrame() const {
- return frame_tree_->root() == this;
-}
-
-void FrameTreeNode::AddChild(scoped_ptr<FrameTreeNode> child,
- int frame_routing_id) {
- // Initialize the RenderFrameHost for the new node. We always create child
- // frames in the same SiteInstance as the current frame, and they can swap to
- // a different one if they navigate away.
- child->render_manager()->Init(
- render_manager_.current_host()->GetSiteInstance()->GetBrowserContext(),
- render_manager_.current_host()->GetSiteInstance(),
- render_manager_.current_host()->GetRoutingID(),
- frame_routing_id);
+void FrameTreeNode::AddChild(scoped_ptr<FrameTreeNode> child) {
children_.push_back(child.release());
}
@@ -69,7 +55,9 @@
children_.erase(iter);
}
-void FrameTreeNode::ResetForMainFrameSwap() {
+void FrameTreeNode::ResetForMainFrame(
+ RenderFrameHostImpl* new_render_frame_host) {
+ owns_render_frame_host_ = false;
frame_id_ = kInvalidFrameId;
current_url_ = GURL();
@@ -77,6 +65,8 @@
// commits before the old process cleans everything up. Make sure the child
// nodes get deleted.
children_.clear();
+
+ render_frame_host_ = new_render_frame_host;
}
} // namespace content
« no previous file with comments | « trunk/src/content/browser/frame_host/frame_tree_node.h ('k') | trunk/src/content/browser/frame_host/frame_tree_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698