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

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

Issue 2737203002: Remove CRWSessionEntry. (Closed)
Patch Set: fix XCode-clang build Created 3 years, 9 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
« no previous file with comments | « ios/web/BUILD.gn ('k') | ios/web/navigation/crw_session_controller.mm » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2012 The Chromium Authors. All rights reserved. 1 // Copyright 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef IOS_WEB_NAVIGATION_CRW_SESSION_CONTROLLER_H_ 5 #ifndef IOS_WEB_NAVIGATION_CRW_SESSION_CONTROLLER_H_
6 #define IOS_WEB_NAVIGATION_CRW_SESSION_CONTROLLER_H_ 6 #define IOS_WEB_NAVIGATION_CRW_SESSION_CONTROLLER_H_
7 7
8 #import <Foundation/Foundation.h> 8 #import <Foundation/Foundation.h>
9 #include <vector> 9 #include <vector>
10 10
11 #include "ios/web/public/navigation_item_list.h" 11 #import "ios/web/navigation/navigation_item_impl_list.h"
12 #include "ui/base/page_transition_types.h" 12 #include "ui/base/page_transition_types.h"
13 #include "url/gurl.h" 13 #include "url/gurl.h"
14 14
15 @class CRWSessionEntry;
16 @class CRWSessionCertificatePolicyManager; 15 @class CRWSessionCertificatePolicyManager;
17 16
18 namespace web { 17 namespace web {
19 class BrowserState; 18 class BrowserState;
20 class NavigationItemImpl; 19 class NavigationItemImpl;
21 class NavigationManagerImpl; 20 class NavigationManagerImpl;
22 enum class NavigationInitiationType; 21 enum class NavigationInitiationType;
23 struct Referrer; 22 struct Referrer;
24 } 23 }
25 24
26 // A CRWSessionController is similar to a NavigationController object in desktop 25 // A CRWSessionController is similar to a NavigationController object in desktop
27 // Chrome. It maintains information needed to save/restore a tab with its 26 // Chrome. It maintains information needed to save/restore a tab with its
28 // complete session history. There is one of these for each tab. 27 // complete session history. There is one of these for each tab.
29 // DEPRECATED, do not use this class and do not add any methods to it. 28 // DEPRECATED, do not use this class and do not add any methods to it.
30 // Use web::NavigationManager instead. 29 // Use web::NavigationManager instead.
31 // TODO(crbug.com/454984): Remove this class. 30 // TODO(crbug.com/454984): Remove this class.
32 @interface CRWSessionController : NSObject<NSCopying> 31 @interface CRWSessionController : NSObject<NSCopying>
33 32
34 @property(nonatomic, readonly, assign) NSInteger currentNavigationIndex; 33 @property(nonatomic, readonly, assign) NSInteger currentNavigationIndex;
35 @property(nonatomic, readonly, assign) NSInteger previousNavigationIndex; 34 @property(nonatomic, readonly, assign) NSInteger previousNavigationIndex;
36 // The index of the pending item if it is in |items|, or -1 if |pendingItem| 35 // The index of the pending item if it is in |items|, or -1 if |pendingItem|
37 // corresponds with a new navigation (created by addPendingItem:). 36 // corresponds with a new navigation (created by addPendingItem:).
38 @property(nonatomic, readwrite, assign) NSInteger pendingItemIndex; 37 @property(nonatomic, readwrite, assign) NSInteger pendingItemIndex;
39 // Indicates whether the page was opened by DOM (e.g. with |window.open| 38 // Indicates whether the page was opened by DOM (e.g. with |window.open|
40 // JavaScript call or by clicking a link with |_blank| target). 39 // JavaScript call or by clicking a link with |_blank| target).
41 @property(nonatomic, readonly, getter=isOpenedByDOM) BOOL openedByDOM; 40 @property(nonatomic, readonly, getter=isOpenedByDOM) BOOL openedByDOM;
42 @property(nonatomic, readonly, strong) 41 @property(nonatomic, readonly, strong)
43 CRWSessionCertificatePolicyManager* sessionCertificatePolicyManager; 42 CRWSessionCertificatePolicyManager* sessionCertificatePolicyManager;
44 43
45 // The list of CRWSessionEntries in |_entries|'s NavigationItemImpls. 44 // The ScopedNavigationItemImplList used to store the NavigationItemImpls for
46 @property(nonatomic, readonly) web::NavigationItemList items; 45 // this session.
47 // The number of elements in |self.items|. 46 @property(nonatomic, readonly) const web::ScopedNavigationItemImplList& items;
48 @property(nonatomic, readonly) NSUInteger itemCount;
49 // The current NavigationItem. During a pending navigation, returns the 47 // The current NavigationItem. During a pending navigation, returns the
50 // NavigationItem for that navigation. If a transient NavigationItem exists, 48 // NavigationItem for that navigation. If a transient NavigationItem exists,
51 // this NavigationItem will be returned. 49 // this NavigationItem will be returned.
52 @property(nonatomic, readonly) web::NavigationItemImpl* currentItem; 50 @property(nonatomic, readonly) web::NavigationItemImpl* currentItem;
53 // Returns the NavigationItem whose URL should be displayed to the user. 51 // Returns the NavigationItem whose URL should be displayed to the user.
54 @property(nonatomic, readonly) web::NavigationItemImpl* visibleItem; 52 @property(nonatomic, readonly) web::NavigationItemImpl* visibleItem;
55 // Returns the NavigationItem corresponding to a load for which no data has yet 53 // Returns the NavigationItem corresponding to a load for which no data has yet
56 // been received. 54 // been received.
57 @property(nonatomic, readonly) web::NavigationItemImpl* pendingItem; 55 @property(nonatomic, readonly) web::NavigationItemImpl* pendingItem;
58 // Returns the NavigationItem corresponding with a transient navigation (i.e. 56 // Returns the transient NavigationItem, if any. The transient item will be
59 // SSL interstitials). 57 // discarded on any navigation, and is used to represent interstitials in the
58 // session history.
60 @property(nonatomic, readonly) web::NavigationItemImpl* transientItem; 59 @property(nonatomic, readonly) web::NavigationItemImpl* transientItem;
61 // Returns the NavigationItem corresponding with the last committed load. 60 // Returns the NavigationItem corresponding with the last committed load.
62 @property(nonatomic, readonly) web::NavigationItemImpl* lastCommittedItem; 61 @property(nonatomic, readonly) web::NavigationItemImpl* lastCommittedItem;
63 // Returns the NavigationItem corresponding with the previously loaded page. 62 // Returns the NavigationItem corresponding with the previously loaded page.
64 @property(nonatomic, readonly) web::NavigationItemImpl* previousItem; 63 @property(nonatomic, readonly) web::NavigationItemImpl* previousItem;
65 // Returns most recent NavigationItem that is not a redirect. Returns nil if 64 // Returns most recent NavigationItem that is not a redirect. Returns nil if
66 // |items| is empty. 65 // |items| is empty.
67 @property(nonatomic, readonly) web::NavigationItemImpl* lastUserItem; 66 @property(nonatomic, readonly) web::NavigationItemImpl* lastUserItem;
68 // Returns a list of all non-redirected NavigationItems whose index precedes 67 // Returns a list of all non-redirected NavigationItems whose index precedes
69 // |currentNavigationIndex|. 68 // |currentNavigationIndex|.
70 @property(nonatomic, readonly) web::NavigationItemList backwardItems; 69 @property(nonatomic, readonly) web::NavigationItemList backwardItems;
71 // Returns a list of all non-redirected NavigationItems whose index follow 70 // Returns a list of all non-redirected NavigationItems whose index follow
72 // |currentNavigationIndex|. 71 // |currentNavigationIndex|.
73 @property(nonatomic, readonly) web::NavigationItemList forwardItems; 72 @property(nonatomic, readonly) web::NavigationItemList forwardItems;
74 73
75 // DEPRECATED: Don't add new usage of these properties. Instead, use the
76 // NavigationItem versions of these properties above.
77 @property(nonatomic, readonly, strong) NSArray* entries;
78 @property(nonatomic, readonly, strong) CRWSessionEntry* currentEntry;
79 @property(nonatomic, readonly, strong) CRWSessionEntry* visibleEntry;
80 @property(nonatomic, readonly, strong) CRWSessionEntry* pendingEntry;
81 @property(nonatomic, readonly, strong) CRWSessionEntry* transientEntry;
82 @property(nonatomic, readonly, strong) CRWSessionEntry* lastCommittedEntry;
83 @property(nonatomic, readonly, strong) CRWSessionEntry* previousEntry;
84 @property(nonatomic, readonly, strong) CRWSessionEntry* lastUserEntry;
85 @property(nonatomic, readonly, weak) NSArray* backwardEntries;
86 @property(nonatomic, readonly, weak) NSArray* forwardEntries;
87
88 // CRWSessionController doesn't have public constructors. New 74 // CRWSessionController doesn't have public constructors. New
89 // CRWSessionControllers are created by deserialization, or via a 75 // CRWSessionControllers are created by deserialization, or via a
90 // NavigationManager. 76 // NavigationManager.
91 77
92 // Sets the corresponding NavigationManager. 78 // Sets the corresponding NavigationManager.
93 - (void)setNavigationManager:(web::NavigationManagerImpl*)navigationManager; 79 - (void)setNavigationManager:(web::NavigationManagerImpl*)navigationManager;
94 // Sets the corresponding BrowserState. 80 // Sets the corresponding BrowserState.
95 - (void)setBrowserState:(web::BrowserState*)browserState; 81 - (void)setBrowserState:(web::BrowserState*)browserState;
96 82
97 // Add a new item with the given url, referrer, and navigation type, making it 83 // Add a new item with the given url, referrer, and navigation type, making it
(...skipping 13 matching lines...) Expand all
111 // this process, it is just moved from pending to committed. 97 // this process, it is just moved from pending to committed.
112 // TODO(pinkerton): Desktop Chrome broadcasts a notification here, should we? 98 // TODO(pinkerton): Desktop Chrome broadcasts a notification here, should we?
113 - (void)commitPendingItem; 99 - (void)commitPendingItem;
114 100
115 // Adds a transient item with the given URL. A transient item will be 101 // Adds a transient item with the given URL. A transient item will be
116 // discarded on any navigation. 102 // discarded on any navigation.
117 // TODO(stuartmorgan): Make this work more like upstream, where the item can 103 // TODO(stuartmorgan): Make this work more like upstream, where the item can
118 // be made from outside and then handed in. 104 // be made from outside and then handed in.
119 - (void)addTransientItemWithURL:(const GURL&)URL; 105 - (void)addTransientItemWithURL:(const GURL&)URL;
120 106
121 // Creates a new CRWSessionEntry with the given URL and state object. A state 107 // Creates a new NavigationItem with the given URL and state object. A state
122 // object is a serialized generic JavaScript object that contains details of the 108 // object is a serialized generic JavaScript object that contains details of the
123 // UI's state for a given CRWSessionEntry/URL. The current item's URL is the 109 // UI's state for a given NavigationItem/URL. The current item's URL is the
124 // new item's referrer. 110 // new item's referrer.
125 - (void)pushNewItemWithURL:(const GURL&)URL 111 - (void)pushNewItemWithURL:(const GURL&)URL
126 stateObject:(NSString*)stateObject 112 stateObject:(NSString*)stateObject
127 transition:(ui::PageTransition)transition; 113 transition:(ui::PageTransition)transition;
128 114
129 // Updates the URL and state object for the current item. 115 // Updates the URL and state object for the current item.
130 - (void)updateCurrentItemWithURL:(const GURL&)url 116 - (void)updateCurrentItemWithURL:(const GURL&)url
131 stateObject:(NSString*)stateObject; 117 stateObject:(NSString*)stateObject;
132 118
133 // Removes the pending and transient NavigationItems. 119 // Removes the pending and transient NavigationItems.
134 - (void)discardNonCommittedItems; 120 - (void)discardNonCommittedItems;
135 121
136 // Inserts history state from |otherController| to the front of |items|. This 122 // Inserts history state from |otherController| to the front of |items|. This
137 // function transfers ownership of |otherController|'s NavigationItems to the 123 // function will create copies of |otherController|'s NavigationItems.
138 // receiver.
139 - (void)insertStateFromSessionController:(CRWSessionController*)otherController; 124 - (void)insertStateFromSessionController:(CRWSessionController*)otherController;
140 125
141 // Sets |currentNavigationIndex_| to the |index| if it's in the entries bounds. 126 // Sets |currentNavigationIndex_| to the |index| if it's in the entries bounds.
142 - (void)goToItemAtIndex:(NSInteger)index; 127 - (void)goToItemAtIndex:(NSInteger)index;
143 128
144 // Removes the item at |index| after discarding any noncomitted entries. 129 // Removes the item at |index| after discarding any noncomitted entries.
145 // |index| must not be the index of the last committed item, or a noncomitted 130 // |index| must not be the index of the last committed item, or a noncomitted
146 // item. 131 // item.
147 - (void)removeItemAtIndex:(NSInteger)index; 132 - (void)removeItemAtIndex:(NSInteger)index;
148 133
149 // Determines whether a navigation between |firstEntry| and |secondEntry| is a 134 // Determines whether a navigation between |firstEntry| and |secondEntry| is a
150 // same-document navigation. Entries can be passed in any order. 135 // same-document navigation. Entries can be passed in any order.
151 - (BOOL)isSameDocumentNavigationBetweenItem:(web::NavigationItem*)firstItem 136 - (BOOL)isSameDocumentNavigationBetweenItem:(web::NavigationItem*)firstItem
152 andItem:(web::NavigationItem*)secondItem; 137 andItem:(web::NavigationItem*)secondItem;
153 138
154 // Returns the index of |item| in |items|. 139 // Returns the index of |item| in |items|.
155 - (NSInteger)indexOfItem:(const web::NavigationItem*)item; 140 - (NSInteger)indexOfItem:(const web::NavigationItem*)item;
156 141
157 // Returns the item at |index| in |items|. 142 // Returns the item at |index| in |items|.
158 - (web::NavigationItemImpl*)itemAtIndex:(NSInteger)index; 143 - (web::NavigationItemImpl*)itemAtIndex:(NSInteger)index;
159 144
160 @end 145 @end
161 146
162 #endif // IOS_WEB_NAVIGATION_CRW_SESSION_CONTROLLER_H_ 147 #endif // IOS_WEB_NAVIGATION_CRW_SESSION_CONTROLLER_H_
OLDNEW
« no previous file with comments | « ios/web/BUILD.gn ('k') | ios/web/navigation/crw_session_controller.mm » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698