diff options
Diffstat (limited to 'content/browser/frame_host/frame_tree_node.h')
-rw-r--r-- | content/browser/frame_host/frame_tree_node.h | 63 |
1 files changed, 21 insertions, 42 deletions
diff --git a/content/browser/frame_host/frame_tree_node.h b/content/browser/frame_host/frame_tree_node.h index 9c22b12..e7b0800 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 |