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

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

Issue 2460153002: Removed xCallbackParameters from CRWSessionController class. (Closed)
Patch Set: . Created 4 years, 1 month 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/navigation/crw_session_controller.h ('k') | no next file » | 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 #import "ios/web/navigation/crw_session_controller.h" 5 #import "ios/web/navigation/crw_session_controller.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 8
9 #include <algorithm> 9 #include <algorithm>
10 #include <utility> 10 #include <utility>
(...skipping 29 matching lines...) Expand all
40 NSString* const kCertificatePolicyManagerKey = @"certificatePolicyManager"; 40 NSString* const kCertificatePolicyManagerKey = @"certificatePolicyManager";
41 NSString* const kCurrentNavigationIndexKey = @"currentNavigationIndex"; 41 NSString* const kCurrentNavigationIndexKey = @"currentNavigationIndex";
42 NSString* const kEntriesKey = @"entries"; 42 NSString* const kEntriesKey = @"entries";
43 NSString* const kLastVisitedTimestampKey = @"lastVisitedTimestamp"; 43 NSString* const kLastVisitedTimestampKey = @"lastVisitedTimestamp";
44 NSString* const kOpenerIdKey = @"openerId"; 44 NSString* const kOpenerIdKey = @"openerId";
45 NSString* const kOpenedByDOMKey = @"openedByDOM"; 45 NSString* const kOpenedByDOMKey = @"openedByDOM";
46 NSString* const kOpenerNavigationIndexKey = @"openerNavigationIndex"; 46 NSString* const kOpenerNavigationIndexKey = @"openerNavigationIndex";
47 NSString* const kPreviousNavigationIndexKey = @"previousNavigationIndex"; 47 NSString* const kPreviousNavigationIndexKey = @"previousNavigationIndex";
48 NSString* const kTabIdKey = @"tabId"; 48 NSString* const kTabIdKey = @"tabId";
49 NSString* const kWindowNameKey = @"windowName"; 49 NSString* const kWindowNameKey = @"windowName";
50 NSString* const kXCallbackParametersKey = @"xCallbackParameters"; 50 } // namespace
51 } // anonymous namespace
52 51
53 @interface CRWSessionController () { 52 @interface CRWSessionController () {
54 // Weak pointer back to the owning NavigationManager. This is to facilitate 53 // Weak pointer back to the owning NavigationManager. This is to facilitate
55 // the incremental merging of the two classes. 54 // the incremental merging of the two classes.
56 web::NavigationManagerImpl* _navigationManager; 55 web::NavigationManagerImpl* _navigationManager;
57 56
58 NSString* _tabId; // Unique id of the tab. 57 NSString* _tabId; // Unique id of the tab.
59 NSString* _openerId; // Id of tab who opened this tab, empty/nil if none. 58 NSString* _openerId; // Id of tab who opened this tab, empty/nil if none.
60 // Navigation index of the tab which opened this tab. Do not rely on the 59 // Navigation index of the tab which opened this tab. Do not rely on the
61 // value of this member variable to indicate whether or not this tab has 60 // value of this member variable to indicate whether or not this tab has
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
96 // If |YES|, override |currentEntry.useDesktopUserAgent| and create the 95 // If |YES|, override |currentEntry.useDesktopUserAgent| and create the
97 // pending entry using the desktop user agent. 96 // pending entry using the desktop user agent.
98 BOOL _useDesktopUserAgentForNextPendingEntry; 97 BOOL _useDesktopUserAgentForNextPendingEntry;
99 98
100 // The browser state associated with this CRWSessionController; 99 // The browser state associated with this CRWSessionController;
101 web::BrowserState* _browserState; // weak 100 web::BrowserState* _browserState; // weak
102 101
103 // Time smoother for navigation entry timestamps; see comment in 102 // Time smoother for navigation entry timestamps; see comment in
104 // navigation_controller_impl.h 103 // navigation_controller_impl.h
105 web::TimeSmoother _timeSmoother; 104 web::TimeSmoother _timeSmoother;
106
107 // XCallback parameters used to create (or clobber) the tab. Can be nil.
108 XCallbackParameters* _xCallbackParameters;
109 } 105 }
110 106
111 // Redefine as readwrite. 107 // Redefine as readwrite.
112 @property(nonatomic, readwrite, assign) NSInteger currentNavigationIndex; 108 @property(nonatomic, readwrite, assign) NSInteger currentNavigationIndex;
113 109
114 // TODO(rohitrao): These properties must be redefined readwrite to work around a 110 // TODO(rohitrao): These properties must be redefined readwrite to work around a
115 // clang bug. crbug.com/228650 111 // clang bug. crbug.com/228650
116 @property(nonatomic, readwrite, copy) NSString* tabId; 112 @property(nonatomic, readwrite, copy) NSString* tabId;
117 @property(nonatomic, readwrite, strong) NSArray* entries; 113 @property(nonatomic, readwrite, strong) NSArray* entries;
118 @property(nonatomic, readwrite, strong) 114 @property(nonatomic, readwrite, strong)
(...skipping 20 matching lines...) Expand all
139 @synthesize tabId = _tabId; 135 @synthesize tabId = _tabId;
140 @synthesize currentNavigationIndex = _currentNavigationIndex; 136 @synthesize currentNavigationIndex = _currentNavigationIndex;
141 @synthesize previousNavigationIndex = _previousNavigationIndex; 137 @synthesize previousNavigationIndex = _previousNavigationIndex;
142 @synthesize entries = _entries; 138 @synthesize entries = _entries;
143 @synthesize windowName = _windowName; 139 @synthesize windowName = _windowName;
144 @synthesize lastVisitedTimestamp = _lastVisitedTimestamp; 140 @synthesize lastVisitedTimestamp = _lastVisitedTimestamp;
145 @synthesize openerId = _openerId; 141 @synthesize openerId = _openerId;
146 @synthesize openedByDOM = _openedByDOM; 142 @synthesize openedByDOM = _openedByDOM;
147 @synthesize openerNavigationIndex = _openerNavigationIndex; 143 @synthesize openerNavigationIndex = _openerNavigationIndex;
148 @synthesize sessionCertificatePolicyManager = _sessionCertificatePolicyManager; 144 @synthesize sessionCertificatePolicyManager = _sessionCertificatePolicyManager;
149 @synthesize xCallbackParameters = _xCallbackParameters;
150 145
151 - (id)initWithWindowName:(NSString*)windowName 146 - (id)initWithWindowName:(NSString*)windowName
152 openerId:(NSString*)openerId 147 openerId:(NSString*)openerId
153 openedByDOM:(BOOL)openedByDOM 148 openedByDOM:(BOOL)openedByDOM
154 openerNavigationIndex:(NSInteger)openerIndex 149 openerNavigationIndex:(NSInteger)openerIndex
155 browserState:(web::BrowserState*)browserState { 150 browserState:(web::BrowserState*)browserState {
156 self = [super init]; 151 self = [super init];
157 if (self) { 152 if (self) {
158 self.windowName = windowName; 153 self.windowName = windowName;
159 _tabId = [[self uniqueID] copy]; 154 _tabId = [[self uniqueID] copy];
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after
231 _entries = temp; 226 _entries = temp;
232 // Prior to M34, 0 was used as "no index" instead of -1; adjust for that. 227 // Prior to M34, 0 was used as "no index" instead of -1; adjust for that.
233 if (![_entries count]) 228 if (![_entries count])
234 _currentNavigationIndex = -1; 229 _currentNavigationIndex = -1;
235 _sessionCertificatePolicyManager = 230 _sessionCertificatePolicyManager =
236 [aDecoder decodeObjectForKey:kCertificatePolicyManagerKey]; 231 [aDecoder decodeObjectForKey:kCertificatePolicyManagerKey];
237 if (!_sessionCertificatePolicyManager) { 232 if (!_sessionCertificatePolicyManager) {
238 _sessionCertificatePolicyManager = 233 _sessionCertificatePolicyManager =
239 [[CRWSessionCertificatePolicyManager alloc] init]; 234 [[CRWSessionCertificatePolicyManager alloc] init];
240 } 235 }
241
242 _xCallbackParameters =
243 [aDecoder decodeObjectForKey:kXCallbackParametersKey];
244 } 236 }
245 return self; 237 return self;
246 } 238 }
247 239
248 - (void)encodeWithCoder:(NSCoder*)aCoder { 240 - (void)encodeWithCoder:(NSCoder*)aCoder {
249 [aCoder encodeObject:_tabId forKey:kTabIdKey]; 241 [aCoder encodeObject:_tabId forKey:kTabIdKey];
250 [aCoder encodeObject:_openerId forKey:kOpenerIdKey]; 242 [aCoder encodeObject:_openerId forKey:kOpenerIdKey];
251 [aCoder encodeBool:_openedByDOM forKey:kOpenedByDOMKey]; 243 [aCoder encodeBool:_openedByDOM forKey:kOpenedByDOMKey];
252 [aCoder encodeInt:_openerNavigationIndex forKey:kOpenerNavigationIndexKey]; 244 [aCoder encodeInt:_openerNavigationIndex forKey:kOpenerNavigationIndexKey];
253 [aCoder encodeObject:_windowName forKey:kWindowNameKey]; 245 [aCoder encodeObject:_windowName forKey:kWindowNameKey];
254 [aCoder encodeInt:_currentNavigationIndex forKey:kCurrentNavigationIndexKey]; 246 [aCoder encodeInt:_currentNavigationIndex forKey:kCurrentNavigationIndexKey];
255 [aCoder encodeInt:_previousNavigationIndex 247 [aCoder encodeInt:_previousNavigationIndex
256 forKey:kPreviousNavigationIndexKey]; 248 forKey:kPreviousNavigationIndexKey];
257 [aCoder encodeDouble:_lastVisitedTimestamp forKey:kLastVisitedTimestampKey]; 249 [aCoder encodeDouble:_lastVisitedTimestamp forKey:kLastVisitedTimestampKey];
258 [aCoder encodeObject:_entries forKey:kEntriesKey]; 250 [aCoder encodeObject:_entries forKey:kEntriesKey];
259 [aCoder encodeObject:_sessionCertificatePolicyManager 251 [aCoder encodeObject:_sessionCertificatePolicyManager
260 forKey:kCertificatePolicyManagerKey]; 252 forKey:kCertificatePolicyManagerKey];
261 [aCoder encodeObject:_xCallbackParameters forKey:kXCallbackParametersKey];
262 // rendererInitiated is deliberately not preserved, as upstream. 253 // rendererInitiated is deliberately not preserved, as upstream.
263 } 254 }
264 255
265 - (id)copyWithZone:(NSZone*)zone { 256 - (id)copyWithZone:(NSZone*)zone {
266 CRWSessionController* copy = [[[self class] alloc] init]; 257 CRWSessionController* copy = [[[self class] alloc] init];
267 copy->_tabId = [_tabId copy]; 258 copy->_tabId = [_tabId copy];
268 copy->_openerId = [_openerId copy]; 259 copy->_openerId = [_openerId copy];
269 copy->_openedByDOM = _openedByDOM; 260 copy->_openedByDOM = _openedByDOM;
270 copy->_openerNavigationIndex = _openerNavigationIndex; 261 copy->_openerNavigationIndex = _openerNavigationIndex;
271 copy.windowName = self.windowName; 262 copy.windowName = self.windowName;
272 copy->_currentNavigationIndex = _currentNavigationIndex; 263 copy->_currentNavigationIndex = _currentNavigationIndex;
273 copy->_previousNavigationIndex = _previousNavigationIndex; 264 copy->_previousNavigationIndex = _previousNavigationIndex;
274 copy->_lastVisitedTimestamp = _lastVisitedTimestamp; 265 copy->_lastVisitedTimestamp = _lastVisitedTimestamp;
275 copy->_entries = 266 copy->_entries =
276 [[NSMutableArray alloc] initWithArray:_entries copyItems:YES]; 267 [[NSMutableArray alloc] initWithArray:_entries copyItems:YES];
277 copy->_sessionCertificatePolicyManager = 268 copy->_sessionCertificatePolicyManager =
278 [_sessionCertificatePolicyManager copy]; 269 [_sessionCertificatePolicyManager copy];
279 copy->_xCallbackParameters = [base::mac::ObjCCastStrict<NSObject<NSCopying>>(
280 _xCallbackParameters) copy];
281 return copy; 270 return copy;
282 } 271 }
283 272
284 - (void)setCurrentNavigationIndex:(NSInteger)currentNavigationIndex { 273 - (void)setCurrentNavigationIndex:(NSInteger)currentNavigationIndex {
285 if (_currentNavigationIndex != currentNavigationIndex) { 274 if (_currentNavigationIndex != currentNavigationIndex) {
286 _currentNavigationIndex = currentNavigationIndex; 275 _currentNavigationIndex = currentNavigationIndex;
287 if (_navigationManager) 276 if (_navigationManager)
288 _navigationManager->RemoveTransientURLRewriters(); 277 _navigationManager->RemoveTransientURLRewriters();
289 } 278 }
290 } 279 }
291 280
292 - (void)setNavigationManager:(web::NavigationManagerImpl*)navigationManager { 281 - (void)setNavigationManager:(web::NavigationManagerImpl*)navigationManager {
293 _navigationManager = navigationManager; 282 _navigationManager = navigationManager;
294 if (_navigationManager) { 283 if (_navigationManager) {
295 // _browserState will be nullptr if CRWSessionController has been 284 // _browserState will be nullptr if CRWSessionController has been
296 // initialized with -initWithCoder: method. Take _browserState from 285 // initialized with -initWithCoder: method. Take _browserState from
297 // NavigationManagerImpl if that's the case. 286 // NavigationManagerImpl if that's the case.
298 if (!_browserState) { 287 if (!_browserState) {
299 _browserState = _navigationManager->GetBrowserState(); 288 _browserState = _navigationManager->GetBrowserState();
300 } 289 }
301 DCHECK_EQ(_browserState, _navigationManager->GetBrowserState()); 290 DCHECK_EQ(_browserState, _navigationManager->GetBrowserState());
302 } 291 }
303 } 292 }
304 293
305 - (NSString*)description { 294 - (NSString*)description {
306 return [NSString 295 return [NSString
307 stringWithFormat: 296 stringWithFormat:
308 @"id: %@\nname: %@\nlast visit: %f\ncurrent index: %" PRIdNS 297 @"id: %@\nname: %@\nlast visit: %f\ncurrent index: %" PRIdNS
309 @"\nprevious index: %" PRIdNS "\n%@\npending: %@\ntransient: %@\n" 298 @"\nprevious index: %" PRIdNS "\n%@\npending: %@\ntransient: %@\n",
310 @"xCallback:\n%@\n",
311 _tabId, self.windowName, _lastVisitedTimestamp, 299 _tabId, self.windowName, _lastVisitedTimestamp,
312 _currentNavigationIndex, _previousNavigationIndex, _entries, 300 _currentNavigationIndex, _previousNavigationIndex, _entries,
313 _pendingEntry.get(), _transientEntry.get(), _xCallbackParameters]; 301 _pendingEntry.get(), _transientEntry.get()];
314 } 302 }
315 303
316 // Returns the current entry in the session list, or the pending entry if there 304 // Returns the current entry in the session list, or the pending entry if there
317 // is a navigation in progress. 305 // is a navigation in progress.
318 - (CRWSessionEntry*)currentEntry { 306 - (CRWSessionEntry*)currentEntry {
319 if (_transientEntry) 307 if (_transientEntry)
320 return _transientEntry.get(); 308 return _transientEntry.get();
321 if (_pendingEntry) 309 if (_pendingEntry)
322 return _pendingEntry.get(); 310 return _pendingEntry.get();
323 return [self lastCommittedEntry]; 311 return [self lastCommittedEntry];
(...skipping 236 matching lines...) Expand 10 before | Expand all | Expand 10 after
560 } 548 }
561 549
562 - (void)copyStateFromAndPrune:(CRWSessionController*)otherSession 550 - (void)copyStateFromAndPrune:(CRWSessionController*)otherSession
563 replaceState:(BOOL)replaceState { 551 replaceState:(BOOL)replaceState {
564 DCHECK(otherSession); 552 DCHECK(otherSession);
565 if (replaceState) { 553 if (replaceState) {
566 [_entries removeAllObjects]; 554 [_entries removeAllObjects];
567 self.currentNavigationIndex = -1; 555 self.currentNavigationIndex = -1;
568 _previousNavigationIndex = -1; 556 _previousNavigationIndex = -1;
569 } 557 }
570 self.xCallbackParameters = [base::mac::ObjCCastStrict<NSObject<NSCopying>>(
571 otherSession.xCallbackParameters) copy];
572 self.windowName = otherSession.windowName; 558 self.windowName = otherSession.windowName;
573 NSInteger numInitialEntries = [_entries count]; 559 NSInteger numInitialEntries = [_entries count];
574 560
575 // Cycle through the entries from the other session and insert them before any 561 // Cycle through the entries from the other session and insert them before any
576 // entries from this session. Do not copy anything that comes after the other 562 // entries from this session. Do not copy anything that comes after the other
577 // session's current entry unless replaceState is true. 563 // session's current entry unless replaceState is true.
578 NSArray* otherEntries = [otherSession entries]; 564 NSArray* otherEntries = [otherSession entries];
579 565
580 // The other session may not have any entries, in which case there is nothing 566 // The other session may not have any entries, in which case there is nothing
581 // to copy or prune. The other session's currentNavigationEntry will be bogus 567 // to copy or prune. The other session's currentNavigationEntry will be bogus
(...skipping 293 matching lines...) Expand 10 before | Expand all | Expand 10 after
875 std::unique_ptr<web::NavigationItemImpl> item(new web::NavigationItemImpl()); 861 std::unique_ptr<web::NavigationItemImpl> item(new web::NavigationItemImpl());
876 item->SetURL(loaded_url); 862 item->SetURL(loaded_url);
877 item->SetReferrer(referrer); 863 item->SetReferrer(referrer);
878 item->SetTransitionType(transition); 864 item->SetTransitionType(transition);
879 item->SetIsOverridingUserAgent(useDesktopUserAgent); 865 item->SetIsOverridingUserAgent(useDesktopUserAgent);
880 item->set_is_renderer_initiated(rendererInitiated); 866 item->set_is_renderer_initiated(rendererInitiated);
881 return [[CRWSessionEntry alloc] initWithNavigationItem:std::move(item)]; 867 return [[CRWSessionEntry alloc] initWithNavigationItem:std::move(item)];
882 } 868 }
883 869
884 @end 870 @end
OLDNEW
« no previous file with comments | « ios/web/navigation/crw_session_controller.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698