Index: content/browser/frame_host/frame_tree_node.h |
diff --git a/content/browser/frame_host/frame_tree_node.h b/content/browser/frame_host/frame_tree_node.h |
index 9c22b125ba3e13ce182329eadee626aa9262f165..e7b0800319e1332cefbf88c2bf42905c6787a38a 100644 |
--- a/content/browser/frame_host/frame_tree_node.h |
+++ b/content/browser/frame_host/frame_tree_node.h |
@@ -18,6 +18,7 @@ |
namespace content { |
+class FrameTree; |
class Navigator; |
class RenderFrameHostImpl; |
@@ -29,7 +30,8 @@ class CONTENT_EXPORT FrameTreeNode { |
public: |
static const int64 kInvalidFrameId; |
- FrameTreeNode(Navigator* navigator, |
+ FrameTreeNode(FrameTree* frame_tree, |
+ Navigator* navigator, |
RenderFrameHostDelegate* render_frame_delegate, |
RenderViewHostDelegate* render_view_delegate, |
RenderWidgetHostDelegate* render_widget_delegate, |
@@ -39,27 +41,18 @@ class CONTENT_EXPORT FrameTreeNode { |
~FrameTreeNode(); |
- void AddChild(scoped_ptr<FrameTreeNode> child); |
+ bool IsMainFrame() const; |
+ |
+ void AddChild(scoped_ptr<FrameTreeNode> child, int frame_routing_id); |
void RemoveChild(FrameTreeNode* child); |
- // TODO(nasko): This method should be removed once RenderFrameHosts are |
- // created by RenderFrameHostManager. |
- void set_render_frame_host( |
- RenderFrameHostImpl* render_frame_host, |
- bool owns_render_frame_host) { |
- render_frame_host_ = render_frame_host; |
- owns_render_frame_host_ = owns_render_frame_host; |
- } |
+ // Clears process specific-state after a main frame process swap. |
+ // TODO(creis): Look into how we can remove the need for this method. |
+ void ResetForMainFrameSwap(); |
- // Transitional API allowing the RenderFrameHost of a FrameTreeNode |
- // representing the main frame to be provided by someone else. After |
- // this is called, the FrameTreeNode no longer owns its RenderFrameHost. |
- // |
- // This should only be used for the main frame (aka root) in a frame tree. |
- // |
- // TODO(ajwong): Remove this method once the main frame RenderFrameHostImpl is |
- // no longer owned by the RenderViewHostImpl. |
- void ResetForMainFrame(RenderFrameHostImpl* new_render_frame_host); |
+ FrameTree* frame_tree() const { |
+ return frame_tree_; |
+ } |
Navigator* navigator() { |
return navigator_.get(); |
@@ -103,23 +96,25 @@ class CONTENT_EXPORT FrameTreeNode { |
current_url_ = url; |
} |
- RenderFrameHostImpl* render_frame_host() const { |
- return render_frame_host_; |
+ RenderFrameHostImpl* current_frame_host() const { |
+ return render_manager_.current_frame_host(); |
} |
private: |
// The next available browser-global FrameTreeNode ID. |
static int64 next_frame_tree_node_id_; |
+ // The FrameTree that owns us. |
+ FrameTree* frame_tree_; // not owned. |
+ |
// The Navigator object responsible for managing navigations at this node |
// of the frame tree. |
scoped_refptr<Navigator> navigator_; |
- // Manages creation and swapping of RenderViewHosts for this frame. This must |
- // be declared before |children_| so that it gets deleted after them. That's |
- // currently necessary so that RenderFrameHostImpl's destructor can call |
- // GetProcess. |
- // TODO(creis): This will eliminate the need for |render_frame_host_| below. |
+ // Manages creation and swapping of RenderFrameHosts for this frame. This |
+ // must be declared before |children_| so that it gets deleted after them. |
+ // That's currently necessary so that RenderFrameHostImpl's destructor can |
+ // call GetProcess. |
RenderFrameHostManager render_manager_; |
// A browser-global identifier for the frame in the page, which stays stable |
@@ -139,22 +134,6 @@ class CONTENT_EXPORT FrameTreeNode { |
// The immediate children of this specific frame. |
ScopedVector<FrameTreeNode> children_; |
- // When ResetForMainFrame() is called, this is set to false and the |
- // |render_frame_host_| below is not deleted on destruction. |
- // |
- // For the mainframe, the FrameTree does not own the |render_frame_host_|. |
- // This is a transitional wart because RenderFrameHostManager does not yet |
- // have the bookkeeping logic to handle creating a pending RenderFrameHost |
- // along with a pending RenderViewHost. Thus, for the main frame, the |
- // RenderViewHost currently retains ownership and the FrameTreeNode should |
- // not delete it on destruction. |
- bool owns_render_frame_host_; |
- |
- // The active RenderFrameHost for this frame. The FrameTreeNode does not |
- // always own this pointer. See comments above |owns_render_frame_host_|. |
- // TODO(ajwong): Replace with RenderFrameHostManager. |
- RenderFrameHostImpl* render_frame_host_; |
- |
// Track the current frame's last committed URL, so we can estimate the |
// process impact of out-of-process iframes. |
// TODO(creis): Remove this when we can store subframe URLs in the |