OLD | NEW |
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 Loading... |
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 |
OLD | NEW |