| Index: content/browser/frame_host/navigation_controller_impl.h
|
| diff --git a/content/browser/frame_host/navigation_controller_impl.h b/content/browser/frame_host/navigation_controller_impl.h
|
| index c7df11d36fa8b403ade443fcfea012aeda3a204b..e12516f7e110faac820873f28aa455b73a44afb8 100644
|
| --- a/content/browser/frame_host/navigation_controller_impl.h
|
| +++ b/content/browser/frame_host/navigation_controller_impl.h
|
| @@ -20,6 +20,7 @@
|
| struct FrameHostMsg_DidCommitProvisionalLoad_Params;
|
|
|
| namespace content {
|
| +class FrameTreeNode;
|
| class RenderFrameHostImpl;
|
| class NavigationEntryScreenshotManager;
|
| class SiteInstance;
|
| @@ -102,16 +103,17 @@ class CONTENT_EXPORT NavigationControllerImpl
|
| // in this NavigationController.
|
| int GetIndexOfEntry(const NavigationEntryImpl* entry) const;
|
|
|
| - // Return the index of the entry with the corresponding instance and page_id,
|
| - // or -1 if not found.
|
| - int GetEntryIndexWithPageID(SiteInstance* instance,
|
| - int32 page_id) const;
|
| + // Return the index of the entry with the corresponding page_id, or -1 if not
|
| + // found.
|
| + int GetEntryIndexWithPageID(int32 page_id) const;
|
|
|
| - // Return the entry with the corresponding instance and page_id, or NULL if
|
| - // not found.
|
| - NavigationEntryImpl* GetEntryWithPageID(
|
| - SiteInstance* instance,
|
| - int32 page_id) const;
|
| + // TODO(creis): Private? const?
|
| + int GetFrameEntryIndex(int64 frame_tree_node_id,
|
| + SiteInstance* site_instance,
|
| + int64 item_sequence_number);
|
| +
|
| + // Return the entry with the corresponding page_id, or NULL if not found.
|
| + NavigationEntryImpl* GetEntryWithPageID(int32 page_id) const;
|
|
|
| NavigationControllerDelegate* delegate() const {
|
| return delegate_;
|
| @@ -212,6 +214,9 @@ class CONTENT_EXPORT NavigationControllerImpl
|
| FRIEND_TEST_ALL_PREFIXES(TimeSmoother, ManyDuplicates);
|
| FRIEND_TEST_ALL_PREFIXES(TimeSmoother, ClockBackwardsJump);
|
|
|
| + typedef std::vector<std::pair<FrameTreeNode*, FrameNavigationEntry*> >
|
| + FrameLoadVector;
|
| +
|
| // Helper class to smooth out runs of duplicate timestamps while still
|
| // allowing time to jump backwards.
|
| class CONTENT_EXPORT TimeSmoother {
|
| @@ -226,6 +231,16 @@ class CONTENT_EXPORT NavigationControllerImpl
|
| base::Time high_water_mark_;
|
| };
|
|
|
| + // TODO(creis): Remove and share code with CreateNavigationEntry.
|
| + NavigationEntryImpl* CreateSubframeNavigationEntry(
|
| + int64 frame_tree_node_id,
|
| + const GURL& url,
|
| + const Referrer& referrer,
|
| + ui::PageTransition transition,
|
| + bool is_renderer_initiated,
|
| + const std::string& extra_headers,
|
| + BrowserContext* browser_context);
|
| +
|
| // Classifies the given renderer navigation (see the NavigationType enum).
|
| NavigationType ClassifyNavigation(
|
| RenderFrameHostImpl* rfh,
|
| @@ -291,7 +306,10 @@ class CONTENT_EXPORT NavigationControllerImpl
|
|
|
| // Inserts a new entry or replaces the current entry with a new one, removing
|
| // all entries after it. The new entry will become the active one.
|
| - void InsertOrReplaceEntry(NavigationEntryImpl* entry, bool replace);
|
| + void InsertOrReplaceEntry(RenderFrameHostImpl* render_frame_host,
|
| + NavigationEntryImpl* entry,
|
| + FrameNavigationEntry* frame_entry,
|
| + bool replace);
|
|
|
| // Removes the entry at |index|, as long as it is not the current entry.
|
| void RemoveEntryAtIndexInternal(int index);
|
| @@ -327,6 +345,19 @@ class CONTENT_EXPORT NavigationControllerImpl
|
| // specified |offset|. The index returned is not guaranteed to be valid.
|
| int GetIndexForOffset(int offset) const;
|
|
|
| + // Recursively add FrameNavigationEntry pointers for the current entries in
|
| + // each frame's session history to the tree in the top-level NavigationEntry.
|
| + void AddFramesToNavigationEntry(
|
| + NavigationEntryImpl::TreeNode* entry_node,
|
| + FrameTreeNode* frame_tree_node);
|
| +
|
| + // Recursively identifies which frames need to be navigated for the pending
|
| + // NavigationEntry, then tells each such frame to navigate.
|
| + bool NavigateToPendingEntryInternal(ReloadType reload_type);
|
| + void RecursiveNavigateToPendingEntry(FrameTreeNode* frame,
|
| + FrameLoadVector* sameDocumentLoads,
|
| + FrameLoadVector* differentDocumentLoads);
|
| +
|
| // ---------------------------------------------------------------------------
|
|
|
| // The user browser context associated with this controller.
|
| @@ -363,6 +394,10 @@ class CONTENT_EXPORT NavigationControllerImpl
|
| // setup.
|
| NavigationControllerDelegate* delegate_;
|
|
|
| + // The next available page ID, which identifies joint session history items.
|
| + // TODO(creis): Copy when cloning tabs.
|
| + int32 next_page_id_;
|
| +
|
| // The max restored page ID in this controller, if it was restored. We must
|
| // store this so that WebContentsImpl can tell any renderer in charge of one
|
| // of the restored entries to update its max page ID.
|
|
|