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

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

Issue 2745873002: Created NavigationManager::CopyStateFromAndPrune(). (Closed)
Patch Set: Added no-op tests, addressed Eugene's comments 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
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
(...skipping 23 matching lines...) Expand all
34 @property(nonatomic, readonly, assign) NSInteger previousNavigationIndex; 34 @property(nonatomic, readonly, assign) NSInteger previousNavigationIndex;
35 // 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|
36 // corresponds with a new navigation (created by addPendingItem:). 36 // corresponds with a new navigation (created by addPendingItem:).
37 @property(nonatomic, readwrite, assign) NSInteger pendingItemIndex; 37 @property(nonatomic, readwrite, assign) NSInteger pendingItemIndex;
38 // 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|
39 // JavaScript call or by clicking a link with |_blank| target). 39 // JavaScript call or by clicking a link with |_blank| target).
40 @property(nonatomic, readonly, getter=isOpenedByDOM) BOOL openedByDOM; 40 @property(nonatomic, readonly, getter=isOpenedByDOM) BOOL openedByDOM;
41 @property(nonatomic, readonly, strong) 41 @property(nonatomic, readonly, strong)
42 CRWSessionCertificatePolicyManager* sessionCertificatePolicyManager; 42 CRWSessionCertificatePolicyManager* sessionCertificatePolicyManager;
43 43
44 // Whether the CRWSessionController can prune all but the last committed item.
45 // This is true when all the following conditions are met:
46 // - There is a last committed NavigationItem
47 // - There is not currently a pending history navigation
48 // - There is no transient NavigationItem.
49 @property(nonatomic, readonly) BOOL canPruneAllButLastCommittedItem;
50
44 // The ScopedNavigationItemImplList used to store the NavigationItemImpls for 51 // The ScopedNavigationItemImplList used to store the NavigationItemImpls for
45 // this session. 52 // this session.
46 @property(nonatomic, readonly) const web::ScopedNavigationItemImplList& items; 53 @property(nonatomic, readonly) const web::ScopedNavigationItemImplList& items;
47 // The current NavigationItem. During a pending navigation, returns the 54 // The current NavigationItem. During a pending navigation, returns the
48 // NavigationItem for that navigation. If a transient NavigationItem exists, 55 // NavigationItem for that navigation. If a transient NavigationItem exists,
49 // this NavigationItem will be returned. 56 // this NavigationItem will be returned.
50 @property(nonatomic, readonly) web::NavigationItemImpl* currentItem; 57 @property(nonatomic, readonly) web::NavigationItemImpl* currentItem;
51 // Returns the NavigationItem whose URL should be displayed to the user. 58 // Returns the NavigationItem whose URL should be displayed to the user.
52 @property(nonatomic, readonly) web::NavigationItemImpl* visibleItem; 59 @property(nonatomic, readonly) web::NavigationItemImpl* visibleItem;
53 // Returns the NavigationItem corresponding to a load for which no data has yet 60 // Returns the NavigationItem corresponding to a load for which no data has yet
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
112 stateObject:(NSString*)stateObject 119 stateObject:(NSString*)stateObject
113 transition:(ui::PageTransition)transition; 120 transition:(ui::PageTransition)transition;
114 121
115 // Updates the URL and state object for the current item. 122 // Updates the URL and state object for the current item.
116 - (void)updateCurrentItemWithURL:(const GURL&)url 123 - (void)updateCurrentItemWithURL:(const GURL&)url
117 stateObject:(NSString*)stateObject; 124 stateObject:(NSString*)stateObject;
118 125
119 // Removes the pending and transient NavigationItems. 126 // Removes the pending and transient NavigationItems.
120 - (void)discardNonCommittedItems; 127 - (void)discardNonCommittedItems;
121 128
122 // Inserts history state from |otherController| to the front of |items|. This 129 // Removes all items from this except the last committed item, and inserts
123 // function will create copies of |otherController|'s NavigationItems. 130 // copies of all items from |source| at the beginning of the session history.
124 - (void)insertStateFromSessionController:(CRWSessionController*)otherController; 131 //
132 // For example:
133 // source: A B *C* D
134 // this: E F *G*
135 // result: A B C *G*
136 //
137 // If there is a pending item after *G* in |this|, it is also preserved.
138 // This ignores any pending or transient entries in |source|. No-op if
139 // |canPruneAllButLastCommittedItem| is false.
140 - (void)copyStateFromSessionControllerAndPrune:(CRWSessionController*)source;
125 141
126 // Sets |currentNavigationIndex_| to the |index| if it's in the entries bounds. 142 // Sets |currentNavigationIndex_| to the |index| if it's in the entries bounds.
127 - (void)goToItemAtIndex:(NSInteger)index; 143 - (void)goToItemAtIndex:(NSInteger)index;
128 144
129 // Removes the item at |index| after discarding any noncomitted entries. 145 // Removes the item at |index| after discarding any noncomitted entries.
130 // |index| must not be the index of the last committed item, or a noncomitted 146 // |index| must not be the index of the last committed item, or a noncomitted
131 // item. 147 // item.
132 - (void)removeItemAtIndex:(NSInteger)index; 148 - (void)removeItemAtIndex:(NSInteger)index;
133 149
134 // Determines whether a navigation between |firstEntry| and |secondEntry| is a 150 // Determines whether a navigation between |firstEntry| and |secondEntry| is a
135 // same-document navigation. Entries can be passed in any order. 151 // same-document navigation. Entries can be passed in any order.
136 - (BOOL)isSameDocumentNavigationBetweenItem:(web::NavigationItem*)firstItem 152 - (BOOL)isSameDocumentNavigationBetweenItem:(web::NavigationItem*)firstItem
137 andItem:(web::NavigationItem*)secondItem; 153 andItem:(web::NavigationItem*)secondItem;
138 154
139 // Returns the index of |item| in |items|. 155 // Returns the index of |item| in |items|.
140 - (NSInteger)indexOfItem:(const web::NavigationItem*)item; 156 - (NSInteger)indexOfItem:(const web::NavigationItem*)item;
141 157
142 // Returns the item at |index| in |items|. 158 // Returns the item at |index| in |items|.
143 - (web::NavigationItemImpl*)itemAtIndex:(NSInteger)index; 159 - (web::NavigationItemImpl*)itemAtIndex:(NSInteger)index;
144 160
145 @end 161 @end
146 162
147 #endif // IOS_WEB_NAVIGATION_CRW_SESSION_CONTROLLER_H_ 163 #endif // IOS_WEB_NAVIGATION_CRW_SESSION_CONTROLLER_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698