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

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

Issue 2944093002: Extract NavigationManagerImpl interface for navigation experiment. (Closed)
Patch Set: Patch for landing Created 3 years, 6 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 2013 The Chromium Authors. All rights reserved. 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 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/navigation_manager_impl.h" 5 #import "ios/web/navigation/legacy_navigation_manager_impl.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 8
9 #include <utility> 9 #include <utility>
10 10
11 #include "base/logging.h" 11 #include "base/logging.h"
12 #import "ios/web/navigation/crw_session_controller+private_constructors.h" 12 #import "ios/web/navigation/crw_session_controller+private_constructors.h"
13 #import "ios/web/navigation/crw_session_controller.h" 13 #import "ios/web/navigation/crw_session_controller.h"
14 #import "ios/web/navigation/navigation_item_impl.h" 14 #import "ios/web/navigation/navigation_item_impl.h"
15 #import "ios/web/navigation/navigation_item_impl_list.h" 15 #import "ios/web/navigation/navigation_item_impl_list.h"
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
64 referrer = other.referrer; 64 referrer = other.referrer;
65 is_renderer_initiated = other.is_renderer_initiated; 65 is_renderer_initiated = other.is_renderer_initiated;
66 transition_type = other.transition_type; 66 transition_type = other.transition_type;
67 user_agent_override_option = other.user_agent_override_option; 67 user_agent_override_option = other.user_agent_override_option;
68 extra_headers.reset([other.extra_headers copy]); 68 extra_headers.reset([other.extra_headers copy]);
69 post_data.reset([other.post_data copy]); 69 post_data.reset([other.post_data copy]);
70 70
71 return *this; 71 return *this;
72 } 72 }
73 73
74 NavigationManagerImpl::NavigationManagerImpl() 74 LegacyNavigationManagerImpl::LegacyNavigationManagerImpl()
75 : delegate_(nullptr), browser_state_(nullptr) {} 75 : delegate_(nullptr), browser_state_(nullptr) {}
76 76
77 NavigationManagerImpl::~NavigationManagerImpl() { 77 LegacyNavigationManagerImpl::~LegacyNavigationManagerImpl() {
78 [session_controller_ setNavigationManager:nullptr]; 78 [session_controller_ setNavigationManager:nullptr];
79 } 79 }
80 80
81 void NavigationManagerImpl::SetDelegate(NavigationManagerDelegate* delegate) { 81 void LegacyNavigationManagerImpl::SetDelegate(
82 NavigationManagerDelegate* delegate) {
82 delegate_ = delegate; 83 delegate_ = delegate;
83 } 84 }
84 85
85 void NavigationManagerImpl::SetBrowserState(BrowserState* browser_state) { 86 void LegacyNavigationManagerImpl::SetBrowserState(BrowserState* browser_state) {
86 browser_state_ = browser_state; 87 browser_state_ = browser_state;
87 [session_controller_ setBrowserState:browser_state]; 88 [session_controller_ setBrowserState:browser_state];
88 } 89 }
89 90
90 void NavigationManagerImpl::SetSessionController( 91 void LegacyNavigationManagerImpl::SetSessionController(
91 CRWSessionController* session_controller) { 92 CRWSessionController* session_controller) {
92 session_controller_.reset(session_controller); 93 session_controller_.reset(session_controller);
93 [session_controller_ setNavigationManager:this]; 94 [session_controller_ setNavigationManager:this];
94 } 95 }
95 96
96 void NavigationManagerImpl::InitializeSession() { 97 void LegacyNavigationManagerImpl::InitializeSession() {
97 SetSessionController( 98 SetSessionController(
98 [[CRWSessionController alloc] initWithBrowserState:browser_state_]); 99 [[CRWSessionController alloc] initWithBrowserState:browser_state_]);
99 } 100 }
100 101
101 void NavigationManagerImpl::ReplaceSessionHistory( 102 void LegacyNavigationManagerImpl::ReplaceSessionHistory(
102 std::vector<std::unique_ptr<web::NavigationItem>> items, 103 std::vector<std::unique_ptr<web::NavigationItem>> items,
103 int lastCommittedItemIndex) { 104 int lastCommittedItemIndex) {
104 SetSessionController([[CRWSessionController alloc] 105 SetSessionController([[CRWSessionController alloc]
105 initWithBrowserState:browser_state_ 106 initWithBrowserState:browser_state_
106 navigationItems:std::move(items) 107 navigationItems:std::move(items)
107 lastCommittedItemIndex:lastCommittedItemIndex]); 108 lastCommittedItemIndex:lastCommittedItemIndex]);
108 } 109 }
109 110
110 void NavigationManagerImpl::OnNavigationItemsPruned(size_t pruned_item_count) { 111 void LegacyNavigationManagerImpl::OnNavigationItemsPruned(
112 size_t pruned_item_count) {
111 delegate_->OnNavigationItemsPruned(pruned_item_count); 113 delegate_->OnNavigationItemsPruned(pruned_item_count);
112 } 114 }
113 115
114 void NavigationManagerImpl::OnNavigationItemChanged() { 116 void LegacyNavigationManagerImpl::OnNavigationItemChanged() {
115 delegate_->OnNavigationItemChanged(); 117 delegate_->OnNavigationItemChanged();
116 } 118 }
117 119
118 void NavigationManagerImpl::OnNavigationItemCommitted() { 120 void LegacyNavigationManagerImpl::OnNavigationItemCommitted() {
119 LoadCommittedDetails details; 121 LoadCommittedDetails details;
120 details.item = GetLastCommittedItem(); 122 details.item = GetLastCommittedItem();
121 DCHECK(details.item); 123 DCHECK(details.item);
122 details.previous_item_index = [session_controller_ previousItemIndex]; 124 details.previous_item_index = [session_controller_ previousItemIndex];
123 if (details.previous_item_index >= 0) { 125 if (details.previous_item_index >= 0) {
124 DCHECK([session_controller_ previousItem]); 126 DCHECK([session_controller_ previousItem]);
125 details.previous_url = [session_controller_ previousItem]->GetURL(); 127 details.previous_url = [session_controller_ previousItem]->GetURL();
126 details.is_in_page = 128 details.is_in_page =
127 AreURLsInPageNavigation(details.previous_url, details.item->GetURL()); 129 AreURLsInPageNavigation(details.previous_url, details.item->GetURL());
128 } else { 130 } else {
129 details.previous_url = GURL(); 131 details.previous_url = GURL();
130 details.is_in_page = NO; 132 details.is_in_page = NO;
131 } 133 }
132 134
133 delegate_->OnNavigationItemCommitted(details); 135 delegate_->OnNavigationItemCommitted(details);
134 } 136 }
135 137
136 CRWSessionController* NavigationManagerImpl::GetSessionController() { 138 CRWSessionController* LegacyNavigationManagerImpl::GetSessionController()
139 const {
137 return session_controller_; 140 return session_controller_;
138 } 141 }
139 142
140 void NavigationManagerImpl::AddTransientItem(const GURL& url) { 143 void LegacyNavigationManagerImpl::AddTransientItem(const GURL& url) {
141 [session_controller_ addTransientItemWithURL:url]; 144 [session_controller_ addTransientItemWithURL:url];
142 145
143 // TODO(crbug.com/676129): Transient item is only supposed to be added for 146 // TODO(crbug.com/676129): Transient item is only supposed to be added for
144 // pending non-app-specific loads, but pending item can be null because of the 147 // pending non-app-specific loads, but pending item can be null because of the
145 // bug. The workaround should be removed once the bug is fixed. 148 // bug. The workaround should be removed once the bug is fixed.
146 NavigationItem* item = GetPendingItem(); 149 NavigationItem* item = GetPendingItem();
147 if (!item) 150 if (!item)
148 item = GetLastCommittedNonAppSpecificItem(); 151 item = GetLastCommittedNonAppSpecificItem();
149 DCHECK(item->GetUserAgentType() != UserAgentType::NONE); 152 DCHECK(item->GetUserAgentType() != UserAgentType::NONE);
150 GetTransientItem()->SetUserAgentType(item->GetUserAgentType()); 153 GetTransientItem()->SetUserAgentType(item->GetUserAgentType());
151 } 154 }
152 155
153 void NavigationManagerImpl::AddPendingItem( 156 void LegacyNavigationManagerImpl::AddPendingItem(
154 const GURL& url, 157 const GURL& url,
155 const web::Referrer& referrer, 158 const web::Referrer& referrer,
156 ui::PageTransition navigation_type, 159 ui::PageTransition navigation_type,
157 NavigationInitiationType initiation_type, 160 NavigationInitiationType initiation_type,
158 UserAgentOverrideOption user_agent_override_option) { 161 UserAgentOverrideOption user_agent_override_option) {
159 [session_controller_ addPendingItem:url 162 [session_controller_ addPendingItem:url
160 referrer:referrer 163 referrer:referrer
161 transition:navigation_type 164 transition:navigation_type
162 initiationType:initiation_type 165 initiationType:initiation_type
163 userAgentOverrideOption:user_agent_override_option]; 166 userAgentOverrideOption:user_agent_override_option];
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
197 last_non_native_item->GetUserAgentType() != UserAgentType::NONE); 200 last_non_native_item->GetUserAgentType() != UserAgentType::NONE);
198 if (last_non_native_item) { 201 if (last_non_native_item) {
199 pending_item->SetUserAgentType( 202 pending_item->SetUserAgentType(
200 last_non_native_item->GetUserAgentType()); 203 last_non_native_item->GetUserAgentType());
201 } 204 }
202 break; 205 break;
203 } 206 }
204 } 207 }
205 } 208 }
206 209
207 void NavigationManagerImpl::CommitPendingItem() { 210 void LegacyNavigationManagerImpl::CommitPendingItem() {
208 [session_controller_ commitPendingItem]; 211 [session_controller_ commitPendingItem];
209 } 212 }
210 213
211 BrowserState* NavigationManagerImpl::GetBrowserState() const { 214 BrowserState* LegacyNavigationManagerImpl::GetBrowserState() const {
212 return browser_state_; 215 return browser_state_;
213 } 216 }
214 217
215 WebState* NavigationManagerImpl::GetWebState() const { 218 WebState* LegacyNavigationManagerImpl::GetWebState() const {
216 return delegate_->GetWebState(); 219 return delegate_->GetWebState();
217 } 220 }
218 221
219 NavigationItem* NavigationManagerImpl::GetVisibleItem() const { 222 NavigationItem* LegacyNavigationManagerImpl::GetVisibleItem() const {
220 return [session_controller_ visibleItem]; 223 return [session_controller_ visibleItem];
221 } 224 }
222 225
223 NavigationItem* NavigationManagerImpl::GetLastCommittedItem() const { 226 NavigationItem* LegacyNavigationManagerImpl::GetLastCommittedItem() const {
224 return [session_controller_ lastCommittedItem]; 227 return [session_controller_ lastCommittedItem];
225 } 228 }
226 229
227 NavigationItem* NavigationManagerImpl::GetPendingItem() const { 230 NavigationItem* LegacyNavigationManagerImpl::GetPendingItem() const {
228 return [session_controller_ pendingItem]; 231 return [session_controller_ pendingItem];
229 } 232 }
230 233
231 NavigationItem* NavigationManagerImpl::GetTransientItem() const { 234 NavigationItem* LegacyNavigationManagerImpl::GetTransientItem() const {
232 return [session_controller_ transientItem]; 235 return [session_controller_ transientItem];
233 } 236 }
234 237
235 void NavigationManagerImpl::DiscardNonCommittedItems() { 238 void LegacyNavigationManagerImpl::DiscardNonCommittedItems() {
236 [session_controller_ discardNonCommittedItems]; 239 [session_controller_ discardNonCommittedItems];
237 } 240 }
238 241
239 void NavigationManagerImpl::LoadURLWithParams( 242 void LegacyNavigationManagerImpl::LoadURLWithParams(
240 const NavigationManager::WebLoadParams& params) { 243 const NavigationManager::WebLoadParams& params) {
241 delegate_->LoadURLWithParams(params); 244 delegate_->LoadURLWithParams(params);
242 } 245 }
243 246
244 void NavigationManagerImpl::AddTransientURLRewriter( 247 void LegacyNavigationManagerImpl::AddTransientURLRewriter(
245 BrowserURLRewriter::URLRewriter rewriter) { 248 BrowserURLRewriter::URLRewriter rewriter) {
246 DCHECK(rewriter); 249 DCHECK(rewriter);
247 if (!transient_url_rewriters_) { 250 if (!transient_url_rewriters_) {
248 transient_url_rewriters_.reset( 251 transient_url_rewriters_.reset(
249 new std::vector<BrowserURLRewriter::URLRewriter>()); 252 new std::vector<BrowserURLRewriter::URLRewriter>());
250 } 253 }
251 transient_url_rewriters_->push_back(rewriter); 254 transient_url_rewriters_->push_back(rewriter);
252 } 255 }
253 256
254 int NavigationManagerImpl::GetItemCount() const { 257 int LegacyNavigationManagerImpl::GetItemCount() const {
255 return [session_controller_ items].size(); 258 return [session_controller_ items].size();
256 } 259 }
257 260
258 NavigationItem* NavigationManagerImpl::GetItemAtIndex(size_t index) const { 261 NavigationItem* LegacyNavigationManagerImpl::GetItemAtIndex(
262 size_t index) const {
263 return GetNavigationItemImplAtIndex(index);
264 }
265
266 NavigationItemImpl* LegacyNavigationManagerImpl::GetNavigationItemImplAtIndex(
267 size_t index) const {
259 return [session_controller_ itemAtIndex:index]; 268 return [session_controller_ itemAtIndex:index];
260 } 269 }
261 270
262 int NavigationManagerImpl::GetIndexOfItem( 271 int LegacyNavigationManagerImpl::GetIndexOfItem(
263 const web::NavigationItem* item) const { 272 const web::NavigationItem* item) const {
264 return [session_controller_ indexOfItem:item]; 273 return [session_controller_ indexOfItem:item];
265 } 274 }
266 275
267 int NavigationManagerImpl::GetPendingItemIndex() const { 276 int LegacyNavigationManagerImpl::GetPendingItemIndex() const {
268 if (GetPendingItem()) { 277 if (GetPendingItem()) {
269 if ([session_controller_ pendingItemIndex] != -1) { 278 if ([session_controller_ pendingItemIndex] != -1) {
270 return [session_controller_ pendingItemIndex]; 279 return [session_controller_ pendingItemIndex];
271 } 280 }
272 // TODO(crbug.com/665189): understand why last committed item index is 281 // TODO(crbug.com/665189): understand why last committed item index is
273 // returned here. 282 // returned here.
274 return GetLastCommittedItemIndex(); 283 return GetLastCommittedItemIndex();
275 } 284 }
276 return -1; 285 return -1;
277 } 286 }
278 287
279 int NavigationManagerImpl::GetLastCommittedItemIndex() const { 288 int LegacyNavigationManagerImpl::GetLastCommittedItemIndex() const {
280 if (GetItemCount() == 0) 289 if (GetItemCount() == 0)
281 return -1; 290 return -1;
282 return [session_controller_ lastCommittedItemIndex]; 291 return [session_controller_ lastCommittedItemIndex];
283 } 292 }
284 293
285 bool NavigationManagerImpl::RemoveItemAtIndex(int index) { 294 bool LegacyNavigationManagerImpl::RemoveItemAtIndex(int index) {
286 if (index == GetLastCommittedItemIndex() || index == GetPendingItemIndex()) 295 if (index == GetLastCommittedItemIndex() || index == GetPendingItemIndex())
287 return false; 296 return false;
288 297
289 if (index < 0 || index >= GetItemCount()) 298 if (index < 0 || index >= GetItemCount())
290 return false; 299 return false;
291 300
292 [session_controller_ removeItemAtIndex:index]; 301 [session_controller_ removeItemAtIndex:index];
293 return true; 302 return true;
294 } 303 }
295 304
296 bool NavigationManagerImpl::CanGoBack() const { 305 bool LegacyNavigationManagerImpl::CanGoBack() const {
297 return CanGoToOffset(-1); 306 return CanGoToOffset(-1);
298 } 307 }
299 308
300 bool NavigationManagerImpl::CanGoForward() const { 309 bool LegacyNavigationManagerImpl::CanGoForward() const {
301 return CanGoToOffset(1); 310 return CanGoToOffset(1);
302 } 311 }
303 312
304 bool NavigationManagerImpl::CanGoToOffset(int offset) const { 313 bool LegacyNavigationManagerImpl::CanGoToOffset(int offset) const {
305 int index = GetIndexForOffset(offset); 314 int index = GetIndexForOffset(offset);
306 return 0 <= index && index < GetItemCount(); 315 return 0 <= index && index < GetItemCount();
307 } 316 }
308 317
309 void NavigationManagerImpl::GoBack() { 318 void LegacyNavigationManagerImpl::GoBack() {
310 delegate_->GoToIndex(GetIndexForOffset(-1)); 319 delegate_->GoToIndex(GetIndexForOffset(-1));
311 } 320 }
312 321
313 void NavigationManagerImpl::GoForward() { 322 void LegacyNavigationManagerImpl::GoForward() {
314 delegate_->GoToIndex(GetIndexForOffset(1)); 323 delegate_->GoToIndex(GetIndexForOffset(1));
315 } 324 }
316 325
317 void NavigationManagerImpl::GoToIndex(int index) { 326 void LegacyNavigationManagerImpl::GoToIndex(int index) {
318 delegate_->GoToIndex(index); 327 delegate_->GoToIndex(index);
319 } 328 }
320 329
321 NavigationItemList NavigationManagerImpl::GetBackwardItems() const { 330 NavigationItemList LegacyNavigationManagerImpl::GetBackwardItems() const {
322 return [session_controller_ backwardItems]; 331 return [session_controller_ backwardItems];
323 } 332 }
324 333
325 NavigationItemList NavigationManagerImpl::GetForwardItems() const { 334 NavigationItemList LegacyNavigationManagerImpl::GetForwardItems() const {
326 return [session_controller_ forwardItems]; 335 return [session_controller_ forwardItems];
327 } 336 }
328 337
329 void NavigationManagerImpl::Reload(ReloadType reload_type, 338 void LegacyNavigationManagerImpl::Reload(ReloadType reload_type,
330 bool check_for_reposts) { 339 bool check_for_reposts) {
331 if (!GetTransientItem() && !GetPendingItem() && !GetLastCommittedItem()) 340 if (!GetTransientItem() && !GetPendingItem() && !GetLastCommittedItem())
332 return; 341 return;
333 342
334 // Reload with ORIGINAL_REQUEST_URL type should reload with the original 343 // Reload with ORIGINAL_REQUEST_URL type should reload with the original
335 // request url of the transient item, or pending item if transient doesn't 344 // request url of the transient item, or pending item if transient doesn't
336 // exist, or last committed item if both of them don't exist. The reason is 345 // exist, or last committed item if both of them don't exist. The reason is
337 // that a server side redirect may change the item's url. 346 // that a server side redirect may change the item's url.
338 // For example, the user visits www.chromium.org and is then redirected 347 // For example, the user visits www.chromium.org and is then redirected
339 // to m.chromium.org, when the user wants to refresh the page with a different 348 // to m.chromium.org, when the user wants to refresh the page with a different
340 // configuration (e.g. user agent), the user would be expecting to visit 349 // configuration (e.g. user agent), the user would be expecting to visit
341 // www.chromium.org instead of m.chromium.org. 350 // www.chromium.org instead of m.chromium.org.
342 if (reload_type == web::ReloadType::ORIGINAL_REQUEST_URL) { 351 if (reload_type == web::ReloadType::ORIGINAL_REQUEST_URL) {
343 NavigationItem* reload_item = nullptr; 352 NavigationItem* reload_item = nullptr;
344 if (GetTransientItem()) 353 if (GetTransientItem())
345 reload_item = GetTransientItem(); 354 reload_item = GetTransientItem();
346 else if (GetPendingItem()) 355 else if (GetPendingItem())
347 reload_item = GetPendingItem(); 356 reload_item = GetPendingItem();
348 else 357 else
349 reload_item = GetLastCommittedItem(); 358 reload_item = GetLastCommittedItem();
350 DCHECK(reload_item); 359 DCHECK(reload_item);
351 360
352 reload_item->SetURL(reload_item->GetOriginalRequestURL()); 361 reload_item->SetURL(reload_item->GetOriginalRequestURL());
353 } 362 }
354 363
355 delegate_->Reload(); 364 delegate_->Reload();
356 } 365 }
357 366
358 void NavigationManagerImpl::CopyStateFromAndPrune( 367 void LegacyNavigationManagerImpl::CopyStateFromAndPrune(
359 const NavigationManager* manager) { 368 const NavigationManager* manager) {
360 DCHECK(manager); 369 DCHECK(manager);
361 CRWSessionController* other_session = 370 CRWSessionController* other_session =
362 static_cast<const NavigationManagerImpl*>(manager)->session_controller_; 371 static_cast<const NavigationManagerImpl*>(manager)
372 ->GetSessionController();
363 [session_controller_ copyStateFromSessionControllerAndPrune:other_session]; 373 [session_controller_ copyStateFromSessionControllerAndPrune:other_session];
364 } 374 }
365 375
366 bool NavigationManagerImpl::CanPruneAllButLastCommittedItem() const { 376 bool LegacyNavigationManagerImpl::CanPruneAllButLastCommittedItem() const {
367 return [session_controller_ canPruneAllButLastCommittedItem]; 377 return [session_controller_ canPruneAllButLastCommittedItem];
368 } 378 }
369 379
370 std::unique_ptr<std::vector<BrowserURLRewriter::URLRewriter>> 380 std::unique_ptr<std::vector<BrowserURLRewriter::URLRewriter>>
371 NavigationManagerImpl::GetTransientURLRewriters() { 381 LegacyNavigationManagerImpl::GetTransientURLRewriters() {
372 return std::move(transient_url_rewriters_); 382 return std::move(transient_url_rewriters_);
373 } 383 }
374 384
375 void NavigationManagerImpl::RemoveTransientURLRewriters() { 385 void LegacyNavigationManagerImpl::RemoveTransientURLRewriters() {
376 transient_url_rewriters_.reset(); 386 transient_url_rewriters_.reset();
377 } 387 }
378 388
379 int NavigationManagerImpl::GetIndexForOffset(int offset) const { 389 int LegacyNavigationManagerImpl::GetIndexForOffset(int offset) const {
380 int result = [session_controller_ pendingItemIndex] == -1 390 int result = [session_controller_ pendingItemIndex] == -1
381 ? GetLastCommittedItemIndex() 391 ? GetLastCommittedItemIndex()
382 : static_cast<int>([session_controller_ pendingItemIndex]); 392 : static_cast<int>([session_controller_ pendingItemIndex]);
383 393
384 if (offset < 0) { 394 if (offset < 0) {
385 if (GetTransientItem() && [session_controller_ pendingItemIndex] == -1) { 395 if (GetTransientItem() && [session_controller_ pendingItemIndex] == -1) {
386 // Going back from transient item that added to the end navigation stack 396 // Going back from transient item that added to the end navigation stack
387 // is a matter of discarding it as there is no need to move navigation 397 // is a matter of discarding it as there is no need to move navigation
388 // index back. 398 // index back.
389 offset++; 399 offset++;
(...skipping 27 matching lines...) Expand all
417 // Result may be out of bounds, so stop trying to skip redirect items and 427 // Result may be out of bounds, so stop trying to skip redirect items and
418 // simply add the remainder. 428 // simply add the remainder.
419 result += offset; 429 result += offset;
420 if (result < 0 /* overflow */) 430 if (result < 0 /* overflow */)
421 result = INT_MAX; 431 result = INT_MAX;
422 } 432 }
423 433
424 return result; 434 return result;
425 } 435 }
426 436
427 bool NavigationManagerImpl::IsRedirectItemAtIndex(int index) const { 437 bool LegacyNavigationManagerImpl::IsRedirectItemAtIndex(int index) const {
428 DCHECK_GE(index, 0); 438 DCHECK_GE(index, 0);
429 DCHECK_LT(index, GetItemCount()); 439 DCHECK_LT(index, GetItemCount());
430 ui::PageTransition transition = GetItemAtIndex(index)->GetTransitionType(); 440 ui::PageTransition transition = GetItemAtIndex(index)->GetTransitionType();
431 return transition & ui::PAGE_TRANSITION_IS_REDIRECT_MASK; 441 return transition & ui::PAGE_TRANSITION_IS_REDIRECT_MASK;
432 } 442 }
433 443
434 NavigationItem* NavigationManagerImpl::GetLastCommittedNonAppSpecificItem() 444 NavigationItem*
435 const { 445 LegacyNavigationManagerImpl::GetLastCommittedNonAppSpecificItem() const {
436 int index = GetLastCommittedItemIndex(); 446 int index = GetLastCommittedItemIndex();
437 if (index == -1) 447 if (index == -1)
438 return nullptr; 448 return nullptr;
439 WebClient* client = GetWebClient(); 449 WebClient* client = GetWebClient();
440 const ScopedNavigationItemImplList& items = [session_controller_ items]; 450 const ScopedNavigationItemImplList& items = [session_controller_ items];
441 while (index >= 0) { 451 while (index >= 0) {
442 NavigationItem* item = items[index--].get(); 452 NavigationItem* item = items[index--].get();
443 if (!client->IsAppSpecificURL(item->GetVirtualURL())) 453 if (!client->IsAppSpecificURL(item->GetVirtualURL()))
444 return item; 454 return item;
445 } 455 }
446 return nullptr; 456 return nullptr;
447 } 457 }
448 458
459 size_t LegacyNavigationManagerImpl::GetPreviousItemIndex() const {
460 return [session_controller_ previousItemIndex];
461 }
462
449 } // namespace web 463 } // namespace web
OLDNEW
« no previous file with comments | « ios/web/navigation/legacy_navigation_manager_impl.h ('k') | ios/web/navigation/navigation_manager_impl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698