| 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.
|
|
|