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

Side by Side Diff: content/browser/frame_host/frame_tree_node.cc

Issue 30323002: [DRAFT] Create RenderFrameHostManager. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebase Created 7 years, 1 month 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "content/browser/frame_host/frame_tree_node.h" 5 #include "content/browser/frame_host/frame_tree_node.h"
6 6
7 #include <queue> 7 #include <queue>
8 8
9 #include "base/stl_util.h" 9 #include "base/stl_util.h"
10 #include "content/browser/frame_host/navigator.h" 10 #include "content/browser/frame_host/navigator.h"
11 #include "content/browser/frame_host/render_frame_host_impl.h" 11 #include "content/browser/frame_host/render_frame_host_impl.h"
12 #include "content/browser/renderer_host/render_view_host_impl.h"
12 13
13 namespace content { 14 namespace content {
14 15
15 const int64 FrameTreeNode::kInvalidFrameId = -1;
16 int64 FrameTreeNode::next_frame_tree_node_id_ = 1; 16 int64 FrameTreeNode::next_frame_tree_node_id_ = 1;
17 17
18 FrameTreeNode::FrameTreeNode(Navigator* navigator, 18 FrameTreeNode::FrameTreeNode(Navigator* navigator,
19 RenderViewHostDelegate* render_view_delegate, 19 RenderViewHostDelegate* render_view_delegate,
20 RenderWidgetHostDelegate* render_widget_delegate, 20 RenderWidgetHostDelegate* render_widget_delegate,
21 RenderViewHostManager::Delegate* manager_delegate, 21 RenderViewHostManager::Delegate* manager_delegate,
22 int64 frame_id, 22 const std::string& name)
23 const std::string& name,
24 scoped_ptr<RenderFrameHostImpl> render_frame_host)
25 : navigator_(navigator), 23 : navigator_(navigator),
26 render_manager_(render_view_delegate, 24 render_manager_(this,
25 render_view_delegate,
27 render_widget_delegate, 26 render_widget_delegate,
28 manager_delegate), 27 manager_delegate),
29 frame_tree_node_id_(next_frame_tree_node_id_++), 28 frame_tree_node_id_(next_frame_tree_node_id_++),
30 frame_id_(frame_id), 29 frame_name_(name) {
31 frame_name_(name),
32 owns_render_frame_host_(true),
33 render_frame_host_(render_frame_host.release()) {
34 } 30 }
35 31
36 FrameTreeNode::~FrameTreeNode() { 32 FrameTreeNode::~FrameTreeNode() {
37 if (owns_render_frame_host_)
38 delete render_frame_host_;
39 } 33 }
40 34
41 void FrameTreeNode::AddChild(scoped_ptr<FrameTreeNode> child) { 35 void FrameTreeNode::AddChild(scoped_ptr<FrameTreeNode> child,
36 int render_frame_host_id) {
37 // TODO(creis): Find a sane place to put this.
38 child->render_manager()->Init(
39 render_manager_.current_host()->GetSiteInstance()->GetBrowserContext(),
40 render_manager_.current_host()->GetSiteInstance(),
41 render_manager_.current_host()->GetRoutingID(),
42 render_frame_host_id);
42 children_.push_back(child.release()); 43 children_.push_back(child.release());
43 } 44 }
44 45
45 void FrameTreeNode::RemoveChild(FrameTreeNode* child) { 46 void FrameTreeNode::RemoveChild(FrameTreeNode* child) {
46 std::vector<FrameTreeNode*>::iterator iter; 47 std::vector<FrameTreeNode*>::iterator iter;
47 48
48 for (iter = children_.begin(); iter != children_.end(); ++iter) { 49 for (iter = children_.begin(); iter != children_.end(); ++iter) {
49 if ((*iter) == child) 50 if ((*iter) == child)
50 break; 51 break;
51 } 52 }
52 53
53 if (iter != children_.end()) 54 if (iter != children_.end())
54 children_.erase(iter); 55 children_.erase(iter);
55 } 56 }
56 57
57 void FrameTreeNode::ResetForMainFrame( 58 // TODO(creis): Do we need to change the frame ID and URL after a navigation?
59 /*void FrameTreeNode::ResetForMainFrame(
58 RenderFrameHostImpl* new_render_frame_host) { 60 RenderFrameHostImpl* new_render_frame_host) {
59 DCHECK_EQ(0UL, children_.size()); 61 DCHECK_EQ(0UL, children_.size());
60 62
61 owns_render_frame_host_ = false; 63 owns_render_frame_host_ = false;
62 frame_id_ = kInvalidFrameId; 64 frame_id_ = kInvalidFrameId;
63 current_url_ = GURL(); 65 current_url_ = GURL();
64 children_.clear(); 66 children_.clear();
65 67
66 render_frame_host_ = new_render_frame_host; 68 render_frame_host_ = new_render_frame_host;
67 } 69 }*/
68 70
69 } // namespace content 71 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698