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 63030a610a62b7d40402270fad994e023422093c..6c84e9521ffb7ead642b60db0b29817d0be8f276 100644 |
--- a/content/browser/frame_host/frame_tree_node.h |
+++ b/content/browser/frame_host/frame_tree_node.h |
@@ -10,6 +10,7 @@ |
#include "base/basictypes.h" |
#include "base/memory/scoped_ptr.h" |
#include "base/memory/scoped_vector.h" |
+#include "content/browser/frame_host/render_view_host_manager.h" |
#include "content/common/content_export.h" |
#include "url/gurl.h" |
@@ -23,32 +24,21 @@ class RenderFrameHostImpl; |
// are frame-specific (as opposed to page-specific). |
class CONTENT_EXPORT FrameTreeNode { |
public: |
- static const int64 kInvalidFrameId; |
- |
- FrameTreeNode(int64 frame_id, const std::string& name, |
- scoped_ptr<RenderFrameHostImpl> render_frame_host); |
+ FrameTreeNode(int64 frame_tree_node_id, |
+ const std::string& name, |
+ RenderViewHostDelegate* render_view_delegate, |
+ RenderWidgetHostDelegate* render_widget_delegate, |
+ RenderViewHostManager::Delegate* manager_delegate); |
~FrameTreeNode(); |
void AddChild(scoped_ptr<FrameTreeNode> child); |
void RemoveChild(int64 child_id); |
- // 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); |
- |
- void set_frame_id(int64 frame_id) { |
- DCHECK_EQ(frame_id_, kInvalidFrameId); |
- frame_id_ = frame_id; |
- } |
- |
- int64 frame_id() const { |
- return frame_id_; |
+ // This is the browser-wide unique ID for the FrameTreeNode. If you have a |
+ // renderer-specific frame ID, you can look up the corresponding FrameTreeNode |
+ // ID using RenderViewHostImpl::GetFrameTreeNodeID(frame_id). |
+ int64 frame_tree_node_id() const { |
+ return frame_tree_node_id_; |
} |
const std::string& frame_name() const { |
@@ -71,13 +61,17 @@ class CONTENT_EXPORT FrameTreeNode { |
current_url_ = url; |
} |
+ RenderViewHostManager* render_manager() { |
+ return &render_manager_; |
+ } |
+ |
RenderFrameHostImpl* render_frame_host() const { |
- return render_frame_host_; |
+ return render_manager_.current_frame(); |
} |
private: |
- // The unique identifier for the frame in the page. |
- int64 frame_id_; |
+ // The browser-wide unique identifier for the frame in the page. |
+ int64 frame_tree_node_id_; |
// The assigned name of the frame. This name can be empty, unlike the unique |
// name generated internally in the DOM tree. |
@@ -86,21 +80,8 @@ 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 RenderViewHostManager 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_; |
+ // Manages creation and swapping of RenderFrameHosts for this frame. |
+ RenderViewHostManager render_manager_; |
// Track the current frame's last committed URL, so we can estimate the |
// process impact of out-of-process iframes. |