| Index: content/browser/frame_host/navigation_entry_impl.h
|
| diff --git a/content/browser/frame_host/navigation_entry_impl.h b/content/browser/frame_host/navigation_entry_impl.h
|
| index d680e9bd1f381b54e169904bed4e7fd302e95541..0528da0db31bda4f4087a3beb3d0f6e105734986 100644
|
| --- a/content/browser/frame_host/navigation_entry_impl.h
|
| +++ b/content/browser/frame_host/navigation_entry_impl.h
|
| @@ -27,6 +27,25 @@ struct StartNavigationParams;
|
| class CONTENT_EXPORT NavigationEntryImpl
|
| : public NON_EXPORTED_BASE(NavigationEntry) {
|
| public:
|
| + // Represents a tree of FrameNavigationEntries that make up this joint session
|
| + // history item. The tree currently only tracks the main frame.
|
| + // TODO(creis): Populate the tree with subframe entries in --site-per-process.
|
| + struct TreeNode {
|
| + TreeNode(FrameNavigationEntry* frame_entry);
|
| + ~TreeNode();
|
| +
|
| + // Returns a deep copy of the tree with copies of each node's
|
| + // FrameNavigationEntries. We do not yet share FrameNavigationEntries
|
| + // across trees.
|
| + // TODO(creis): For --site-per-process, share FrameNavigationEntries between
|
| + // NavigationEntries of the same tab.
|
| + TreeNode* Clone() const;
|
| +
|
| + // Ref counted pointer that keeps the FrameNavigationEntry alive as long as
|
| + // it is needed by this node's NavigationEntry.
|
| + scoped_refptr<FrameNavigationEntry> frame_entry;
|
| + };
|
| +
|
| static NavigationEntryImpl* FromNavigationEntry(NavigationEntry* entry);
|
|
|
| // The value of bindings() before it is set during commit.
|
| @@ -121,7 +140,7 @@ class CONTENT_EXPORT NavigationEntryImpl
|
| // different SiteInstance.
|
| void set_site_instance(SiteInstanceImpl* site_instance);
|
| SiteInstanceImpl* site_instance() const {
|
| - return frame_entry_.site_instance();
|
| + return frame_tree_->frame_entry->site_instance();
|
| }
|
|
|
| // The |source_site_instance| is used to identify the SiteInstance of the
|
| @@ -271,9 +290,11 @@ class CONTENT_EXPORT NavigationEntryImpl
|
| // For all new fields, update |Clone| and possibly |ResetForCommit|.
|
| // WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING
|
|
|
| - // The FrameNavigationEntry for the main frame.
|
| - // TODO(creis): Make this a tree with nodes for each frame in the page.
|
| - FrameNavigationEntry frame_entry_;
|
| + // Tree of FrameNavigationEntries, one for each frame on the page.
|
| + // TODO(creis): Once FrameNavigationEntries can be shared across multiple
|
| + // NavigationEntries, we will need to update Session/Tab restore. For now,
|
| + // each NavigationEntry's tree has its own unshared FrameNavigationEntries.
|
| + scoped_ptr<TreeNode> frame_tree_;
|
|
|
| // See the accessors above for descriptions.
|
| int unique_id_;
|
|
|