Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(29)

Side by Side Diff: ios/web/navigation/wk_based_navigation_manager_impl.h

Issue 2957163002: [Navigation Experiment] Add WKBasedNavigationManagerImpl. (Closed)
Patch Set: Patch for landing Created 3 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright 2017 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #ifndef IOS_WEB_NAVIGATION_WK_BASED_NAVIGATION_MANAGER_IMPL_H_
6 #define IOS_WEB_NAVIGATION_WK_BASED_NAVIGATION_MANAGER_IMPL_H_
7
8 #include <stddef.h>
9
10 #include <memory>
11 #include <vector>
12
13 #import "base/mac/scoped_nsobject.h"
14 #include "base/macros.h"
15 #import "ios/web/navigation/navigation_item_impl.h"
16 #import "ios/web/navigation/navigation_manager_impl.h"
17 #include "ios/web/public/reload_type.h"
18 #include "ui/base/page_transition_types.h"
19 #include "url/gurl.h"
20
21 namespace web {
22 class BrowserState;
23 class NavigationItem;
24 struct Referrer;
25 class NavigationManagerDelegate;
26 class SessionStorageBuilder;
27
28 // WKBackForwardList based implementation of NavigationManagerImpl.
29 // This class relies on the following WKWebView APIs, defined by the
30 // CRWWebViewNavigationProxy protocol:
31 // @property backForwardList
32 // @property canGoBack
33 // @property canGoForward
34 // - goBack
35 // - goForward
36 // - goToBackForwardListItem:
37 class WKBasedNavigationManagerImpl : public NavigationManagerImpl {
38 public:
39 WKBasedNavigationManagerImpl();
40 ~WKBasedNavigationManagerImpl() override;
41
42 // NavigationManagerImpl:
43 void SetDelegate(NavigationManagerDelegate* delegate) override;
44 void SetBrowserState(BrowserState* browser_state) override;
45 void SetSessionController(CRWSessionController* session_controller) override;
46 void InitializeSession() override;
47 void ReplaceSessionHistory(std::vector<std::unique_ptr<NavigationItem>> items,
48 int current_index) override;
49 void OnNavigationItemsPruned(size_t pruned_item_count) override;
50 void OnNavigationItemChanged() override;
51 void OnNavigationItemCommitted() override;
52 CRWSessionController* GetSessionController() const override;
53 void AddTransientItem(const GURL& url) override;
54 void AddPendingItem(
55 const GURL& url,
56 const web::Referrer& referrer,
57 ui::PageTransition navigation_type,
58 NavigationInitiationType initiation_type,
59 UserAgentOverrideOption user_agent_override_option) override;
60 void CommitPendingItem() override;
61 std::unique_ptr<std::vector<BrowserURLRewriter::URLRewriter>>
62 GetTransientURLRewriters() override;
63 void RemoveTransientURLRewriters() override;
64 int GetIndexForOffset(int offset) const override;
65 int GetPreviousItemIndex() const override;
66
67 // NavigationManager:
68 BrowserState* GetBrowserState() const override;
69 WebState* GetWebState() const override;
70 NavigationItem* GetVisibleItem() const override;
71 NavigationItem* GetLastCommittedItem() const override;
72 NavigationItem* GetPendingItem() const override;
73 NavigationItem* GetTransientItem() const override;
74 void DiscardNonCommittedItems() override;
75 void LoadURLWithParams(const NavigationManager::WebLoadParams&) override;
76 void AddTransientURLRewriter(
77 BrowserURLRewriter::URLRewriter rewriter) override;
78 int GetItemCount() const override;
79 NavigationItem* GetItemAtIndex(size_t index) const override;
80 int GetIndexOfItem(const NavigationItem* item) const override;
81 int GetPendingItemIndex() const override;
82 int GetLastCommittedItemIndex() const override;
83 bool RemoveItemAtIndex(int index) override;
84 bool CanGoBack() const override;
85 bool CanGoForward() const override;
86 bool CanGoToOffset(int offset) const override;
87 void GoBack() override;
88 void GoForward() override;
89 void GoToIndex(int index) override;
90 void Reload(ReloadType reload_type, bool check_for_reposts) override;
91 NavigationItemList GetBackwardItems() const override;
92 NavigationItemList GetForwardItems() const override;
93 void CopyStateFromAndPrune(const NavigationManager* source) override;
94 bool CanPruneAllButLastCommittedItem() const override;
95
96 private:
97 // The SessionStorageBuilder functions require access to private variables of
98 // NavigationManagerImpl.
99 friend SessionStorageBuilder;
100
101 // NavigationManagerImpl methods used by SessionStorageBuilder.
102 NavigationItemImpl* GetNavigationItemImplAtIndex(size_t index) const override;
103
104 // The primary delegate for this manager.
105 NavigationManagerDelegate* delegate_;
106
107 // The BrowserState that is associated with this instance.
108 BrowserState* browser_state_;
109
110 // List of transient url rewriters added by |AddTransientURLRewriter()|.
111 std::unique_ptr<std::vector<BrowserURLRewriter::URLRewriter>>
112 transient_url_rewriters_;
113
114 DISALLOW_COPY_AND_ASSIGN(WKBasedNavigationManagerImpl);
115 };
116
117 } // namespace web
118
119 #endif // IOS_WEB_NAVIGATION_WK_BASED_NAVIGATION_MANAGER_IMPL_H_
OLDNEW
« no previous file with comments | « ios/web/navigation/session_storage_builder.mm ('k') | ios/web/navigation/wk_based_navigation_manager_impl.mm » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698