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

Side by Side Diff: ios/web/navigation/navigation_manager_impl_unittest.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 | « ios/web/navigation/navigation_manager_impl.mm ('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 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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/navigation_manager_impl.h"
6 6
7 #include "base/logging.h" 7 #include "base/logging.h"
8 #import "base/mac/scoped_nsobject.h" 8 #import "base/mac/scoped_nsobject.h"
9 #import "ios/web/navigation/crw_session_controller+private_constructors.h" 9 #import "ios/web/navigation/crw_session_controller+private_constructors.h"
10 #import "ios/web/navigation/navigation_manager_delegate.h" 10 #import "ios/web/navigation/navigation_manager_delegate.h"
(...skipping 441 matching lines...) Expand 10 before | Expand all | Expand 10 after
452 // Test with large values. 452 // Test with large values.
453 EXPECT_FALSE(navigation_manager()->CanGoToOffset(INT_MAX)); 453 EXPECT_FALSE(navigation_manager()->CanGoToOffset(INT_MAX));
454 EXPECT_FALSE(navigation_manager()->CanGoToOffset(INT_MIN)); 454 EXPECT_FALSE(navigation_manager()->CanGoToOffset(INT_MIN));
455 EXPECT_FALSE(navigation_manager()->CanGoToOffset(-1000000000)); 455 EXPECT_FALSE(navigation_manager()->CanGoToOffset(-1000000000));
456 EXPECT_FALSE(navigation_manager()->CanGoToOffset(1000000000)); 456 EXPECT_FALSE(navigation_manager()->CanGoToOffset(1000000000));
457 EXPECT_EQ(INT_MAX, navigation_manager()->GetIndexForOffset(INT_MAX)); 457 EXPECT_EQ(INT_MAX, navigation_manager()->GetIndexForOffset(INT_MAX));
458 EXPECT_EQ(-2147483646, navigation_manager()->GetIndexForOffset(INT_MIN)); 458 EXPECT_EQ(-2147483646, navigation_manager()->GetIndexForOffset(INT_MIN));
459 EXPECT_EQ(-999999998, navigation_manager()->GetIndexForOffset(-1000000000)); 459 EXPECT_EQ(-999999998, navigation_manager()->GetIndexForOffset(-1000000000));
460 EXPECT_EQ(1000000004, navigation_manager()->GetIndexForOffset(1000000000)); 460 EXPECT_EQ(1000000004, navigation_manager()->GetIndexForOffset(1000000000));
461 461
462 // Test with existing transient entry. 462 // Test with existing transient entry in the end of the stack.
463 [session_controller() goToEntryAtIndex:4];
464 [session_controller() setPendingEntryIndex:-1];
463 [session_controller() addTransientEntryWithURL:GURL("http://www.url.com")]; 465 [session_controller() addTransientEntryWithURL:GURL("http://www.url.com")];
464 ASSERT_EQ(5, navigation_manager()->GetItemCount()); 466 ASSERT_EQ(5, navigation_manager()->GetItemCount());
465 ASSERT_EQ(1, navigation_manager()->GetCurrentItemIndex()); 467 ASSERT_EQ(4, navigation_manager()->GetCurrentItemIndex());
466 ASSERT_EQ(4, navigation_manager()->GetPendingItemIndex()); 468 ASSERT_EQ(-1, navigation_manager()->GetPendingItemIndex());
467 EXPECT_TRUE(navigation_manager()->CanGoToOffset(-1)); 469 EXPECT_TRUE(navigation_manager()->CanGoToOffset(-1));
468 EXPECT_EQ(4, navigation_manager()->GetIndexForOffset(-1)); 470 EXPECT_EQ(4, navigation_manager()->GetIndexForOffset(-1));
469 EXPECT_TRUE(navigation_manager()->CanGoToOffset(-2)); 471 EXPECT_TRUE(navigation_manager()->CanGoToOffset(-2));
470 EXPECT_EQ(2, navigation_manager()->GetIndexForOffset(-2)); 472 EXPECT_EQ(2, navigation_manager()->GetIndexForOffset(-2));
471 EXPECT_TRUE(navigation_manager()->CanGoToOffset(-3)); 473 EXPECT_TRUE(navigation_manager()->CanGoToOffset(-3));
472 EXPECT_EQ(1, navigation_manager()->GetIndexForOffset(-3)); 474 EXPECT_EQ(1, navigation_manager()->GetIndexForOffset(-3));
473 EXPECT_FALSE(navigation_manager()->CanGoToOffset(1)); 475 EXPECT_FALSE(navigation_manager()->CanGoToOffset(1));
474 EXPECT_EQ(5, navigation_manager()->GetIndexForOffset(1)); 476 EXPECT_EQ(5, navigation_manager()->GetIndexForOffset(1));
475 EXPECT_FALSE(navigation_manager()->CanGoToOffset(2)); 477 EXPECT_FALSE(navigation_manager()->CanGoToOffset(2));
476 EXPECT_EQ(6, navigation_manager()->GetIndexForOffset(2)); 478 EXPECT_EQ(6, navigation_manager()->GetIndexForOffset(2));
477 // Test with large values. 479 // Test with large values.
478 EXPECT_FALSE(navigation_manager()->CanGoToOffset(INT_MAX)); 480 EXPECT_FALSE(navigation_manager()->CanGoToOffset(INT_MAX));
479 EXPECT_FALSE(navigation_manager()->CanGoToOffset(INT_MIN)); 481 EXPECT_FALSE(navigation_manager()->CanGoToOffset(INT_MIN));
480 EXPECT_FALSE(navigation_manager()->CanGoToOffset(-1000000000)); 482 EXPECT_FALSE(navigation_manager()->CanGoToOffset(-1000000000));
481 EXPECT_FALSE(navigation_manager()->CanGoToOffset(1000000000)); 483 EXPECT_FALSE(navigation_manager()->CanGoToOffset(1000000000));
482 EXPECT_EQ(INT_MAX, navigation_manager()->GetIndexForOffset(INT_MAX)); 484 EXPECT_EQ(INT_MAX, navigation_manager()->GetIndexForOffset(INT_MAX));
483 EXPECT_EQ(-2147483645, navigation_manager()->GetIndexForOffset(INT_MIN)); 485 EXPECT_EQ(-2147483645, navigation_manager()->GetIndexForOffset(INT_MIN));
484 EXPECT_EQ(-999999997, navigation_manager()->GetIndexForOffset(-1000000000)); 486 EXPECT_EQ(-999999997, navigation_manager()->GetIndexForOffset(-1000000000));
485 EXPECT_EQ(1000000004, navigation_manager()->GetIndexForOffset(1000000000)); 487 EXPECT_EQ(1000000004, navigation_manager()->GetIndexForOffset(1000000000));
486 } 488 }
487 489
490 // Tests offsets with pending transient entries (specifically gong back and
491 // forward from a pending navigation entry that is added to the middle of the
492 // navigation stack).
493 TEST_F(NavigationManagerTest, OffsetsWithPendingTransientEntry) {
494 // Create a transient item in the middle of the navigation stack and go back
495 // to it (pending index is 1, current index is 2).
496 [session_controller() addPendingEntry:GURL("http://www.url.com/0")
497 referrer:Referrer()
498 transition:ui::PAGE_TRANSITION_LINK
499 rendererInitiated:NO];
500 [session_controller() commitPendingEntry];
501 [session_controller() addPendingEntry:GURL("http://www.url.com/1")
502 referrer:Referrer()
503 transition:ui::PAGE_TRANSITION_LINK
504 rendererInitiated:NO];
505 [session_controller() commitPendingEntry];
506 [session_controller() addPendingEntry:GURL("http://www.url.com/2")
507 referrer:Referrer()
508 transition:ui::PAGE_TRANSITION_LINK
509 rendererInitiated:NO];
510 [session_controller() commitPendingEntry];
511 [session_controller() addTransientEntryWithURL:GURL("http://www.url.com/1")];
512 [session_controller() setPendingEntryIndex:1];
513
514 ASSERT_EQ(3, navigation_manager()->GetItemCount());
515 ASSERT_EQ(2, navigation_manager()->GetCurrentItemIndex());
516 ASSERT_EQ(1, navigation_manager()->GetPendingItemIndex());
517 EXPECT_EQ(2, navigation_manager()->GetIndexForOffset(1));
518 EXPECT_EQ(0, navigation_manager()->GetIndexForOffset(-1));
519
520 // Now go forward to that middle transient item (pending index is 1,
521 // current index is 0).
522 [session_controller() goToEntryAtIndex:0];
523 [session_controller() setPendingEntryIndex:1];
524 ASSERT_EQ(3, navigation_manager()->GetItemCount());
525 ASSERT_EQ(0, navigation_manager()->GetCurrentItemIndex());
526 ASSERT_EQ(1, navigation_manager()->GetPendingItemIndex());
527 EXPECT_EQ(2, navigation_manager()->GetIndexForOffset(1));
528 EXPECT_EQ(0, navigation_manager()->GetIndexForOffset(-1));
529 }
530
488 } // namespace web 531 } // namespace web
OLDNEW
« no previous file with comments | « ios/web/navigation/navigation_manager_impl.mm ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698