Chromium Code Reviews| Index: ios/web/navigation/navigation_manager_impl.h |
| diff --git a/ios/web/navigation/navigation_manager_impl.h b/ios/web/navigation/navigation_manager_impl.h |
| index fb4fc7d0dc8ee9f1d65313ca485724538da68b4a..5e5ca0207d835e008ea2fe38f87dd7571980dff0 100644 |
| --- a/ios/web/navigation/navigation_manager_impl.h |
| +++ b/ios/web/navigation/navigation_manager_impl.h |
| @@ -12,6 +12,7 @@ |
| #import "base/mac/scoped_nsobject.h" |
| #include "base/macros.h" |
| +#include "ios/web/navigation/navigation_item_impl.h" |
|
Eugene But (OOO till 7-30)
2017/06/20 22:49:03
nit: s/include/import
danyao
2017/06/20 23:00:44
Done.
|
| #import "ios/web/public/navigation_item_list.h" |
| #import "ios/web/public/navigation_manager.h" |
| #include "ios/web/public/reload_type.h" |
| @@ -23,7 +24,6 @@ |
| namespace web { |
| class BrowserState; |
| class NavigationItem; |
| -struct Referrer; |
| class NavigationManagerDelegate; |
| class SessionStorageBuilder; |
| @@ -49,12 +49,11 @@ enum class NavigationInitiationType { |
| // Generally mirrors upstream's NavigationController. |
| class NavigationManagerImpl : public NavigationManager { |
| public: |
| - NavigationManagerImpl(); |
| - ~NavigationManagerImpl() override; |
| + ~NavigationManagerImpl() override{}; |
|
Eugene But (OOO till 7-30)
2017/06/20 22:49:03
Drop ; or just |~NavigationManagerImpl() override
danyao
2017/06/20 23:00:44
Done.
|
| // Setters for NavigationManagerDelegate and BrowserState. |
| - void SetDelegate(NavigationManagerDelegate* delegate); |
| - void SetBrowserState(BrowserState* browser_state); |
| + virtual void SetDelegate(NavigationManagerDelegate* delegate) = 0; |
| + virtual void SetBrowserState(BrowserState* browser_state) = 0; |
| // Sets the CRWSessionController that backs this object. |
| // Keeps a strong reference to |session_controller|. |
| @@ -64,121 +63,80 @@ class NavigationManagerImpl : public NavigationManager { |
| // TODO(stuartmorgan): Also move deserialization of CRWSessionControllers |
| // under the control of this class, and move the bulk of CRWSessionController |
| // logic into it. |
| - void SetSessionController(CRWSessionController* session_controller); |
| + virtual void SetSessionController( |
| + CRWSessionController* session_controller) = 0; |
| // Initializes a new session history. |
| - void InitializeSession(); |
| + virtual void InitializeSession() = 0; |
| // Replace the session history with a new one, where |items| is the |
| // complete set of navigation items in the new history, and |current_index| |
| // is the index of the currently active item. |
| - void ReplaceSessionHistory(std::vector<std::unique_ptr<NavigationItem>> items, |
| - int current_index); |
| + virtual void ReplaceSessionHistory( |
| + std::vector<std::unique_ptr<NavigationItem>> items, |
| + int current_index) = 0; |
| // Helper functions for notifying WebStateObservers of changes. |
| // TODO(stuartmorgan): Make these private once the logic triggering them moves |
| // into this layer. |
| - void OnNavigationItemsPruned(size_t pruned_item_count); |
| - void OnNavigationItemChanged(); |
| - void OnNavigationItemCommitted(); |
| + virtual void OnNavigationItemsPruned(size_t pruned_item_count) = 0; |
| + virtual void OnNavigationItemChanged() = 0; |
| + virtual void OnNavigationItemCommitted() = 0; |
| // Temporary accessors and content/ class pass-throughs. |
| // TODO(stuartmorgan): Re-evaluate this list once the refactorings have |
| // settled down. |
| - CRWSessionController* GetSessionController(); |
| + virtual CRWSessionController* GetSessionController() const = 0; |
| // Adds a transient item with the given URL. A transient item will be |
| // discarded on any navigation. |
| - void AddTransientItem(const GURL& url); |
| + virtual void AddTransientItem(const GURL& url) = 0; |
| // Adds a new item with the given url, referrer, navigation type, initiation |
| // type and user agent override option, making it the pending item. If pending |
| // item is the same as the current item, this does nothing. |referrer| may be |
| // nil if there isn't one. The item starts out as pending, and will be lost |
| // unless |-commitPendingItem| is called. |
| - void AddPendingItem(const GURL& url, |
| - const web::Referrer& referrer, |
| - ui::PageTransition navigation_type, |
| - NavigationInitiationType initiation_type, |
| - UserAgentOverrideOption user_agent_override_option); |
| + virtual void AddPendingItem( |
| + const GURL& url, |
| + const web::Referrer& referrer, |
| + ui::PageTransition navigation_type, |
| + NavigationInitiationType initiation_type, |
| + UserAgentOverrideOption user_agent_override_option) = 0; |
| // Commits the pending item, if any. |
| - void CommitPendingItem(); |
| - |
| - // NavigationManager: |
| - BrowserState* GetBrowserState() const override; |
| - WebState* GetWebState() const override; |
| - NavigationItem* GetVisibleItem() const override; |
| - NavigationItem* GetLastCommittedItem() const override; |
| - NavigationItem* GetPendingItem() const override; |
| - NavigationItem* GetTransientItem() const override; |
| - void DiscardNonCommittedItems() override; |
| - void LoadURLWithParams(const NavigationManager::WebLoadParams&) override; |
| - void AddTransientURLRewriter( |
| - BrowserURLRewriter::URLRewriter rewriter) override; |
| - int GetItemCount() const override; |
| - NavigationItem* GetItemAtIndex(size_t index) const override; |
| - int GetIndexOfItem(const NavigationItem* item) const override; |
| - int GetPendingItemIndex() const override; |
| - int GetLastCommittedItemIndex() const override; |
| - bool RemoveItemAtIndex(int index) override; |
| - bool CanGoBack() const override; |
| - bool CanGoForward() const override; |
| - bool CanGoToOffset(int offset) const override; |
| - void GoBack() override; |
| - void GoForward() override; |
| - void GoToIndex(int index) override; |
| - void Reload(ReloadType reload_type, bool check_for_reposts) override; |
| - NavigationItemList GetBackwardItems() const override; |
| - NavigationItemList GetForwardItems() const override; |
| - void CopyStateFromAndPrune(const NavigationManager* source) override; |
| - bool CanPruneAllButLastCommittedItem() const override; |
| + virtual void CommitPendingItem() = 0; |
| // Returns the current list of transient url rewriters, passing ownership to |
| // the caller. |
| // TODO(crbug.com/546197): remove once NavigationItem creation occurs in this |
| // class. |
| - std::unique_ptr<std::vector<BrowserURLRewriter::URLRewriter>> |
| - GetTransientURLRewriters(); |
| + virtual std::unique_ptr<std::vector<BrowserURLRewriter::URLRewriter>> |
| + GetTransientURLRewriters() = 0; |
| // Called to reset the transient url rewriter list. |
| - void RemoveTransientURLRewriters(); |
| + virtual void RemoveTransientURLRewriters() = 0; |
| // Returns the navigation index that differs from the current item (or pending |
| // item if it exists) by the specified |offset|, skipping redirect navigation |
| // items. The index returned is not guaranteed to be valid. |
| // TODO(crbug.com/661316): Make this method private once navigation code is |
| // moved from CRWWebController to NavigationManagerImpl. |
| - int GetIndexForOffset(int offset) const; |
| + virtual int GetIndexForOffset(int offset) const = 0; |
| - private: |
| + protected: |
| // The SessionStorageBuilder functions require access to private variables of |
| // NavigationManagerImpl. |
| friend SessionStorageBuilder; |
| - // Returns true if the PageTransition for the underlying navigation item at |
| - // |index| has ui::PAGE_TRANSITION_IS_REDIRECT_MASK. |
| - bool IsRedirectItemAtIndex(int index) const; |
| + // Identical to GetItemAtIndex() but returns the underlying NavigationItemImpl |
| + // instead of the public NavigationItem interface. This is used by |
| + // SessionStorageBuilder to persist session state. |
| + virtual NavigationItemImpl* GetNavigationItemImplAtIndex( |
| + size_t index) const = 0; |
| - // Returns the most recent NavigationItem that does not have an app-specific |
| - // URL. |
| - NavigationItem* GetLastCommittedNonAppSpecificItem() const; |
| - |
| - // The primary delegate for this manager. |
| - NavigationManagerDelegate* delegate_; |
| - |
| - // The BrowserState that is associated with this instance. |
| - BrowserState* browser_state_; |
| - |
| - // CRWSessionController that backs this instance. |
| - // TODO(stuartmorgan): Fold CRWSessionController into this class. |
| - base::scoped_nsobject<CRWSessionController> session_controller_; |
| - |
| - // List of transient url rewriters added by |AddTransientURLRewriter()|. |
| - std::unique_ptr<std::vector<BrowserURLRewriter::URLRewriter>> |
| - transient_url_rewriters_; |
| - |
| - DISALLOW_COPY_AND_ASSIGN(NavigationManagerImpl); |
| + // Returns the index of the previous item. Only used by SessionStorageBuilder. |
| + virtual size_t GetPreviousItemIndex() const = 0; |
| }; |
| } // namespace web |