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

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

Issue 2600263002: [ios] Fixed GetIndexForOffset for pending transient items. (Closed)
Patch Set: Fixed tests Created 3 years, 11 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 | « no previous file | ios/web/navigation/navigation_manager_impl_unittest.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 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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 #include "ios/web/navigation/navigation_manager_impl.h" 5 #include "ios/web/navigation/navigation_manager_impl.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 8
9 #include <utility> 9 #include <utility>
10 10
(...skipping 326 matching lines...) Expand 10 before | Expand all | Expand 10 after
337 NavigationManagerImpl* navigation_manager) { 337 NavigationManagerImpl* navigation_manager) {
338 SetSessionController([navigation_manager->GetSessionController() copy]); 338 SetSessionController([navigation_manager->GetSessionController() copy]);
339 } 339 }
340 340
341 int NavigationManagerImpl::GetIndexForOffset(int offset) const { 341 int NavigationManagerImpl::GetIndexForOffset(int offset) const {
342 int result = [session_controller_ pendingEntryIndex] == -1 342 int result = [session_controller_ pendingEntryIndex] == -1
343 ? GetCurrentItemIndex() 343 ? GetCurrentItemIndex()
344 : static_cast<int>([session_controller_ pendingEntryIndex]); 344 : static_cast<int>([session_controller_ pendingEntryIndex]);
345 345
346 if (offset < 0) { 346 if (offset < 0) {
347 if (GetTransientItem()) { 347 if (GetTransientItem() && [session_controller_ pendingEntryIndex] == -1) {
348 // Going back from transient item is a matter of discarding it and there 348 // Going back from transient item that added to the end navigation stack
349 // is no need to move navigation index back. 349 // is a matter of discarding it as there is no need to move navigation
350 // index back.
350 offset++; 351 offset++;
351 } 352 }
352 353
353 while (offset < 0 && result > 0) { 354 while (offset < 0 && result > 0) {
354 // To stop the user getting 'stuck' on redirecting pages they weren't 355 // To stop the user getting 'stuck' on redirecting pages they weren't
355 // even aware existed, it is necessary to pass over pages that would 356 // even aware existed, it is necessary to pass over pages that would
356 // immediately result in a redirect (the item *before* the redirected 357 // immediately result in a redirect (the item *before* the redirected
357 // page). 358 // page).
358 while (result > 0 && IsRedirectItemAtIndex(result)) { 359 while (result > 0 && IsRedirectItemAtIndex(result)) {
359 --result; 360 --result;
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
396 } 397 }
397 398
398 bool NavigationManagerImpl::IsRedirectItemAtIndex(int index) const { 399 bool NavigationManagerImpl::IsRedirectItemAtIndex(int index) const {
399 DCHECK_GT(index, 0); 400 DCHECK_GT(index, 0);
400 DCHECK_LT(index, GetItemCount()); 401 DCHECK_LT(index, GetItemCount());
401 ui::PageTransition transition = GetItemAtIndex(index)->GetTransitionType(); 402 ui::PageTransition transition = GetItemAtIndex(index)->GetTransitionType();
402 return transition & ui::PAGE_TRANSITION_IS_REDIRECT_MASK; 403 return transition & ui::PAGE_TRANSITION_IS_REDIRECT_MASK;
403 } 404 }
404 405
405 } // namespace web 406 } // namespace web
OLDNEW
« no previous file with comments | « no previous file | ios/web/navigation/navigation_manager_impl_unittest.mm » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698