| OLD | NEW |
| 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 #import <Foundation/Foundation.h> | 7 #import <Foundation/Foundation.h> |
| 8 | 8 |
| 9 #include <utility> | 9 #include <utility> |
| 10 | 10 |
| (...skipping 341 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 352 [session_controller_ | 352 [session_controller_ |
| 353 addPendingItem:GURL("http://www.example.com/2") | 353 addPendingItem:GURL("http://www.example.com/2") |
| 354 referrer:MakeReferrer("http://www.example.com/c") | 354 referrer:MakeReferrer("http://www.example.com/c") |
| 355 transition:ui::PAGE_TRANSITION_LINK | 355 transition:ui::PAGE_TRANSITION_LINK |
| 356 initiationType:web::NavigationInitiationType::RENDERER_INITIATED]; | 356 initiationType:web::NavigationInitiationType::RENDERER_INITIATED]; |
| 357 [session_controller_ commitPendingItem]; | 357 [session_controller_ commitPendingItem]; |
| 358 | 358 |
| 359 // All forward items should go away. | 359 // All forward items should go away. |
| 360 EXPECT_EQ(2U, [session_controller_ items].size()); | 360 EXPECT_EQ(2U, [session_controller_ items].size()); |
| 361 EXPECT_EQ(0U, [session_controller_ forwardItems].size()); | 361 EXPECT_EQ(0U, [session_controller_ forwardItems].size()); |
| 362 ASSERT_EQ(1, [session_controller_ currentNavigationIndex]); | 362 ASSERT_EQ(1, [session_controller_ lastCommittedItemIndex]); |
| 363 ASSERT_EQ(0, [session_controller_ previousNavigationIndex]); | 363 ASSERT_EQ(0, [session_controller_ previousItemIndex]); |
| 364 } | 364 } |
| 365 | 365 |
| 366 // Tests committing pending item index from the middle. | 366 // Tests committing pending item index from the middle. |
| 367 TEST_F(CRWSessionControllerTest, commitPendingItemIndex) { | 367 TEST_F(CRWSessionControllerTest, commitPendingItemIndex) { |
| 368 [session_controller_ | 368 [session_controller_ |
| 369 addPendingItem:GURL("http://www.example.com/0") | 369 addPendingItem:GURL("http://www.example.com/0") |
| 370 referrer:web::Referrer() | 370 referrer:web::Referrer() |
| 371 transition:ui::PAGE_TRANSITION_TYPED | 371 transition:ui::PAGE_TRANSITION_TYPED |
| 372 initiationType:web::NavigationInitiationType::USER_INITIATED]; | 372 initiationType:web::NavigationInitiationType::USER_INITIATED]; |
| 373 [session_controller_ commitPendingItem]; | 373 [session_controller_ commitPendingItem]; |
| (...skipping 10 matching lines...) Expand all Loading... |
| 384 initiationType:web::NavigationInitiationType::USER_INITIATED]; | 384 initiationType:web::NavigationInitiationType::USER_INITIATED]; |
| 385 [session_controller_ commitPendingItem]; | 385 [session_controller_ commitPendingItem]; |
| 386 ASSERT_EQ(3U, [session_controller_ items].size()); | 386 ASSERT_EQ(3U, [session_controller_ items].size()); |
| 387 | 387 |
| 388 // Go to the middle, and commit first pending item index. | 388 // Go to the middle, and commit first pending item index. |
| 389 [session_controller_ goToItemAtIndex:1]; | 389 [session_controller_ goToItemAtIndex:1]; |
| 390 [session_controller_ setPendingItemIndex:0]; | 390 [session_controller_ setPendingItemIndex:0]; |
| 391 ASSERT_EQ(0, [session_controller_ pendingItemIndex]); | 391 ASSERT_EQ(0, [session_controller_ pendingItemIndex]); |
| 392 web::NavigationItem* pending_item = [session_controller_ pendingItem]; | 392 web::NavigationItem* pending_item = [session_controller_ pendingItem]; |
| 393 ASSERT_TRUE(pending_item); | 393 ASSERT_TRUE(pending_item); |
| 394 ASSERT_EQ(1, [session_controller_ currentNavigationIndex]); | 394 ASSERT_EQ(1, [session_controller_ lastCommittedItemIndex]); |
| 395 EXPECT_EQ(2, [session_controller_ previousNavigationIndex]); | 395 EXPECT_EQ(2, [session_controller_ previousItemIndex]); |
| 396 [session_controller_ commitPendingItem]; | 396 [session_controller_ commitPendingItem]; |
| 397 | 397 |
| 398 // Verify that pending item has been committed and current and previous item | 398 // Verify that pending item has been committed and current and previous item |
| 399 // indices updated. | 399 // indices updated. |
| 400 EXPECT_EQ(pending_item, [session_controller_ lastCommittedItem]); | 400 EXPECT_EQ(pending_item, [session_controller_ lastCommittedItem]); |
| 401 EXPECT_EQ(-1, [session_controller_ pendingItemIndex]); | 401 EXPECT_EQ(-1, [session_controller_ pendingItemIndex]); |
| 402 EXPECT_FALSE([session_controller_ pendingItem]); | 402 EXPECT_FALSE([session_controller_ pendingItem]); |
| 403 EXPECT_EQ(0, [session_controller_ currentNavigationIndex]); | 403 EXPECT_EQ(0, [session_controller_ lastCommittedItemIndex]); |
| 404 EXPECT_EQ(1, [session_controller_ previousNavigationIndex]); | 404 EXPECT_EQ(1, [session_controller_ previousItemIndex]); |
| 405 EXPECT_EQ(3U, [session_controller_ items].size()); | 405 EXPECT_EQ(3U, [session_controller_ items].size()); |
| 406 } | 406 } |
| 407 | 407 |
| 408 TEST_F(CRWSessionControllerTest, | 408 TEST_F(CRWSessionControllerTest, |
| 409 DiscardPendingItemWithoutPendingOrCommittedItem) { | 409 DiscardPendingItemWithoutPendingOrCommittedItem) { |
| 410 [session_controller_ discardNonCommittedItems]; | 410 [session_controller_ discardNonCommittedItems]; |
| 411 | 411 |
| 412 EXPECT_TRUE([session_controller_ items].empty()); | 412 EXPECT_TRUE([session_controller_ items].empty()); |
| 413 EXPECT_FALSE([session_controller_ currentItem]); | 413 EXPECT_FALSE([session_controller_ currentItem]); |
| 414 } | 414 } |
| (...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 499 referrer:web::Referrer() | 499 referrer:web::Referrer() |
| 500 transition:ui::PAGE_TRANSITION_TYPED | 500 transition:ui::PAGE_TRANSITION_TYPED |
| 501 initiationType:web::NavigationInitiationType::USER_INITIATED]; | 501 initiationType:web::NavigationInitiationType::USER_INITIATED]; |
| 502 | 502 |
| 503 // Insert and verify the state of target session controller. | 503 // Insert and verify the state of target session controller. |
| 504 EXPECT_TRUE([session_controller_ canPruneAllButLastCommittedItem]); | 504 EXPECT_TRUE([session_controller_ canPruneAllButLastCommittedItem]); |
| 505 [session_controller_ | 505 [session_controller_ |
| 506 copyStateFromSessionControllerAndPrune:other_session_controller.get()]; | 506 copyStateFromSessionControllerAndPrune:other_session_controller.get()]; |
| 507 | 507 |
| 508 EXPECT_EQ(2U, [session_controller_ items].size()); | 508 EXPECT_EQ(2U, [session_controller_ items].size()); |
| 509 EXPECT_EQ(1, [session_controller_ currentNavigationIndex]); | 509 EXPECT_EQ(1, [session_controller_ lastCommittedItemIndex]); |
| 510 EXPECT_EQ(-1, [session_controller_ previousNavigationIndex]); | 510 EXPECT_EQ(-1, [session_controller_ previousItemIndex]); |
| 511 EXPECT_EQ(-1, [session_controller_ pendingItemIndex]); | 511 EXPECT_EQ(-1, [session_controller_ pendingItemIndex]); |
| 512 | 512 |
| 513 EXPECT_EQ(GURL("http://www.url.com/0"), | 513 EXPECT_EQ(GURL("http://www.url.com/0"), |
| 514 [session_controller_ URLForItemAtIndex:0]); | 514 [session_controller_ URLForItemAtIndex:0]); |
| 515 EXPECT_EQ(GURL("http://www.url.com/2"), | 515 EXPECT_EQ(GURL("http://www.url.com/2"), |
| 516 [session_controller_ URLForItemAtIndex:1]); | 516 [session_controller_ URLForItemAtIndex:1]); |
| 517 EXPECT_EQ(GURL("http://www.url.com/3"), | 517 EXPECT_EQ(GURL("http://www.url.com/3"), |
| 518 [session_controller_ pendingItem]->GetURL()); | 518 [session_controller_ pendingItem]->GetURL()); |
| 519 } | 519 } |
| 520 | 520 |
| (...skipping 15 matching lines...) Expand all Loading... |
| 536 | 536 |
| 537 // Create empty source session controller. | 537 // Create empty source session controller. |
| 538 base::scoped_nsobject<CRWSessionController> other_session_controller( | 538 base::scoped_nsobject<CRWSessionController> other_session_controller( |
| 539 [[CRWSessionController alloc] initWithBrowserState:&browser_state_]); | 539 [[CRWSessionController alloc] initWithBrowserState:&browser_state_]); |
| 540 | 540 |
| 541 // Insert and verify the state of target session controller. | 541 // Insert and verify the state of target session controller. |
| 542 EXPECT_TRUE([session_controller_ canPruneAllButLastCommittedItem]); | 542 EXPECT_TRUE([session_controller_ canPruneAllButLastCommittedItem]); |
| 543 [session_controller_ | 543 [session_controller_ |
| 544 copyStateFromSessionControllerAndPrune:other_session_controller.get()]; | 544 copyStateFromSessionControllerAndPrune:other_session_controller.get()]; |
| 545 EXPECT_EQ(2U, [session_controller_ items].size()); | 545 EXPECT_EQ(2U, [session_controller_ items].size()); |
| 546 EXPECT_EQ(1, [session_controller_ currentNavigationIndex]); | 546 EXPECT_EQ(1, [session_controller_ lastCommittedItemIndex]); |
| 547 EXPECT_EQ(0, [session_controller_ previousNavigationIndex]); | 547 EXPECT_EQ(0, [session_controller_ previousItemIndex]); |
| 548 EXPECT_EQ(-1, [session_controller_ pendingItemIndex]); | 548 EXPECT_EQ(-1, [session_controller_ pendingItemIndex]); |
| 549 EXPECT_FALSE([session_controller_ pendingItem]); | 549 EXPECT_FALSE([session_controller_ pendingItem]); |
| 550 EXPECT_EQ(GURL("http://www.url.com/0"), | 550 EXPECT_EQ(GURL("http://www.url.com/0"), |
| 551 [session_controller_ URLForItemAtIndex:0]); | 551 [session_controller_ URLForItemAtIndex:0]); |
| 552 EXPECT_EQ(GURL("http://www.url.com/1"), | 552 EXPECT_EQ(GURL("http://www.url.com/1"), |
| 553 [session_controller_ URLForItemAtIndex:1]); | 553 [session_controller_ URLForItemAtIndex:1]); |
| 554 } | 554 } |
| 555 | 555 |
| 556 // Tests that |-copyStateFromSessionControllerAndPrune:| is a no-op when the | 556 // Tests that |-copyStateFromSessionControllerAndPrune:| is a no-op when the |
| 557 // receiver has no last committed item. | 557 // receiver has no last committed item. |
| (...skipping 13 matching lines...) Expand all Loading... |
| 571 addPendingItem:GURL("http://www.url.com/1") | 571 addPendingItem:GURL("http://www.url.com/1") |
| 572 referrer:web::Referrer() | 572 referrer:web::Referrer() |
| 573 transition:ui::PAGE_TRANSITION_TYPED | 573 transition:ui::PAGE_TRANSITION_TYPED |
| 574 initiationType:web::NavigationInitiationType::USER_INITIATED]; | 574 initiationType:web::NavigationInitiationType::USER_INITIATED]; |
| 575 | 575 |
| 576 // Attempt to copy |other_session_controller|'s state and verify that | 576 // Attempt to copy |other_session_controller|'s state and verify that |
| 577 // |session_controller_| is unchanged. | 577 // |session_controller_| is unchanged. |
| 578 [session_controller_ | 578 [session_controller_ |
| 579 copyStateFromSessionControllerAndPrune:other_session_controller]; | 579 copyStateFromSessionControllerAndPrune:other_session_controller]; |
| 580 EXPECT_TRUE([session_controller_ items].empty()); | 580 EXPECT_TRUE([session_controller_ items].empty()); |
| 581 EXPECT_EQ(-1, [session_controller_ currentNavigationIndex]); | 581 EXPECT_EQ(-1, [session_controller_ lastCommittedItemIndex]); |
| 582 EXPECT_EQ(-1, [session_controller_ previousNavigationIndex]); | 582 EXPECT_EQ(-1, [session_controller_ previousItemIndex]); |
| 583 EXPECT_FALSE([session_controller_ currentItem]); | 583 EXPECT_FALSE([session_controller_ currentItem]); |
| 584 EXPECT_FALSE([session_controller_ pendingItem]); | 584 EXPECT_FALSE([session_controller_ pendingItem]); |
| 585 EXPECT_EQ(-1, [session_controller_ pendingItemIndex]); | 585 EXPECT_EQ(-1, [session_controller_ pendingItemIndex]); |
| 586 } | 586 } |
| 587 | 587 |
| 588 // Tests that |-copyStateFromSessionControllerAndPrune:| is a no-op during a | 588 // Tests that |-copyStateFromSessionControllerAndPrune:| is a no-op during a |
| 589 // pending history navigation. | 589 // pending history navigation. |
| 590 TEST_F(CRWSessionControllerTest, CopyStateDuringPendingHistoryNavigation) { | 590 TEST_F(CRWSessionControllerTest, CopyStateDuringPendingHistoryNavigation) { |
| 591 // Add 1 committed and 1 pending item to target controller. | 591 // Add 1 committed and 1 pending item to target controller. |
| 592 [session_controller_ | 592 [session_controller_ |
| (...skipping 26 matching lines...) Expand all Loading... |
| 619 | 619 |
| 620 // Set the pending item index to the first item. | 620 // Set the pending item index to the first item. |
| 621 [session_controller_ setPendingItemIndex:0]; | 621 [session_controller_ setPendingItemIndex:0]; |
| 622 EXPECT_FALSE([session_controller_ canPruneAllButLastCommittedItem]); | 622 EXPECT_FALSE([session_controller_ canPruneAllButLastCommittedItem]); |
| 623 | 623 |
| 624 // Attempt to copy |other_session_controller|'s state and verify that | 624 // Attempt to copy |other_session_controller|'s state and verify that |
| 625 // |session_controller_| is unchanged. | 625 // |session_controller_| is unchanged. |
| 626 [session_controller_ | 626 [session_controller_ |
| 627 copyStateFromSessionControllerAndPrune:other_session_controller]; | 627 copyStateFromSessionControllerAndPrune:other_session_controller]; |
| 628 EXPECT_EQ(2U, [session_controller_ items].size()); | 628 EXPECT_EQ(2U, [session_controller_ items].size()); |
| 629 EXPECT_EQ(1, [session_controller_ currentNavigationIndex]); | 629 EXPECT_EQ(1, [session_controller_ lastCommittedItemIndex]); |
| 630 EXPECT_EQ(0, [session_controller_ previousNavigationIndex]); | 630 EXPECT_EQ(0, [session_controller_ previousItemIndex]); |
| 631 EXPECT_EQ(0, [session_controller_ pendingItemIndex]); | 631 EXPECT_EQ(0, [session_controller_ pendingItemIndex]); |
| 632 EXPECT_TRUE([session_controller_ pendingItem]); | 632 EXPECT_TRUE([session_controller_ pendingItem]); |
| 633 EXPECT_EQ([session_controller_ previousItem], | 633 EXPECT_EQ([session_controller_ previousItem], |
| 634 [session_controller_ pendingItem]); | 634 [session_controller_ pendingItem]); |
| 635 } | 635 } |
| 636 | 636 |
| 637 // Tests that |-copyStateFromSessionControllerAndPrune:| is a when a transient | 637 // Tests that |-copyStateFromSessionControllerAndPrune:| is a when a transient |
| 638 // NavigationItem exists. | 638 // NavigationItem exists. |
| 639 TEST_F(CRWSessionControllerTest, CopyStateWithTransientItem) { | 639 TEST_F(CRWSessionControllerTest, CopyStateWithTransientItem) { |
| 640 // Add 1 committed and 1 pending item to target controller. | 640 // Add 1 committed and 1 pending item to target controller. |
| (...skipping 25 matching lines...) Expand all Loading... |
| 666 referrer:web::Referrer() | 666 referrer:web::Referrer() |
| 667 transition:ui::PAGE_TRANSITION_TYPED | 667 transition:ui::PAGE_TRANSITION_TYPED |
| 668 initiationType:web::NavigationInitiationType::USER_INITIATED]; | 668 initiationType:web::NavigationInitiationType::USER_INITIATED]; |
| 669 | 669 |
| 670 // Attempt to copy |other_session_controller|'s state and verify that | 670 // Attempt to copy |other_session_controller|'s state and verify that |
| 671 // |session_controller_| is unchanged. | 671 // |session_controller_| is unchanged. |
| 672 EXPECT_FALSE([session_controller_ canPruneAllButLastCommittedItem]); | 672 EXPECT_FALSE([session_controller_ canPruneAllButLastCommittedItem]); |
| 673 [session_controller_ | 673 [session_controller_ |
| 674 copyStateFromSessionControllerAndPrune:other_session_controller]; | 674 copyStateFromSessionControllerAndPrune:other_session_controller]; |
| 675 EXPECT_EQ(1U, [session_controller_ items].size()); | 675 EXPECT_EQ(1U, [session_controller_ items].size()); |
| 676 EXPECT_EQ(0, [session_controller_ currentNavigationIndex]); | 676 EXPECT_EQ(0, [session_controller_ lastCommittedItemIndex]); |
| 677 EXPECT_EQ(-1, [session_controller_ previousNavigationIndex]); | 677 EXPECT_EQ(-1, [session_controller_ previousItemIndex]); |
| 678 EXPECT_EQ(-1, [session_controller_ pendingItemIndex]); | 678 EXPECT_EQ(-1, [session_controller_ pendingItemIndex]); |
| 679 EXPECT_TRUE([session_controller_ pendingItem]); | 679 EXPECT_TRUE([session_controller_ pendingItem]); |
| 680 EXPECT_TRUE([session_controller_ transientItem]); | 680 EXPECT_TRUE([session_controller_ transientItem]); |
| 681 EXPECT_EQ([session_controller_ transientItem], | 681 EXPECT_EQ([session_controller_ transientItem], |
| 682 [session_controller_ currentItem]); | 682 [session_controller_ currentItem]); |
| 683 } | 683 } |
| 684 | 684 |
| 685 // Tests state of an empty session controller. | 685 // Tests state of an empty session controller. |
| 686 TEST_F(CRWSessionControllerTest, EmptyController) { | 686 TEST_F(CRWSessionControllerTest, EmptyController) { |
| 687 EXPECT_TRUE([session_controller_ items].empty()); | 687 EXPECT_TRUE([session_controller_ items].empty()); |
| 688 EXPECT_EQ(-1, [session_controller_ currentNavigationIndex]); | 688 EXPECT_EQ(-1, [session_controller_ lastCommittedItemIndex]); |
| 689 EXPECT_EQ(-1, [session_controller_ previousNavigationIndex]); | 689 EXPECT_EQ(-1, [session_controller_ previousItemIndex]); |
| 690 EXPECT_FALSE([session_controller_ currentItem]); | 690 EXPECT_FALSE([session_controller_ currentItem]); |
| 691 EXPECT_FALSE([session_controller_ pendingItem]); | 691 EXPECT_FALSE([session_controller_ pendingItem]); |
| 692 EXPECT_EQ(-1, [session_controller_ pendingItemIndex]); | 692 EXPECT_EQ(-1, [session_controller_ pendingItemIndex]); |
| 693 } | 693 } |
| 694 | 694 |
| 695 // Helper to create a NavigationItem. | 695 // Helper to create a NavigationItem. |
| 696 std::unique_ptr<web::NavigationItem> CreateNavigationItem( | 696 std::unique_ptr<web::NavigationItem> CreateNavigationItem( |
| 697 const std::string& url, | 697 const std::string& url, |
| 698 const std::string& referrer, | 698 const std::string& referrer, |
| 699 NSString* title) { | 699 NSString* title) { |
| (...skipping 11 matching lines...) Expand all Loading... |
| 711 std::unique_ptr<web::NavigationItem> item( | 711 std::unique_ptr<web::NavigationItem> item( |
| 712 static_cast<web::NavigationItem*>(navigation_item.release())); | 712 static_cast<web::NavigationItem*>(navigation_item.release())); |
| 713 return item; | 713 return item; |
| 714 } | 714 } |
| 715 | 715 |
| 716 TEST_F(CRWSessionControllerTest, CreateWithEmptyNavigations) { | 716 TEST_F(CRWSessionControllerTest, CreateWithEmptyNavigations) { |
| 717 std::vector<std::unique_ptr<web::NavigationItem>> items; | 717 std::vector<std::unique_ptr<web::NavigationItem>> items; |
| 718 base::scoped_nsobject<CRWSessionController> controller( | 718 base::scoped_nsobject<CRWSessionController> controller( |
| 719 [[CRWSessionController alloc] initWithBrowserState:&browser_state_ | 719 [[CRWSessionController alloc] initWithBrowserState:&browser_state_ |
| 720 navigationItems:std::move(items) | 720 navigationItems:std::move(items) |
| 721 currentIndex:0]); | 721 lastCommittedItemIndex:0]); |
| 722 EXPECT_TRUE(controller.get().items.empty()); | 722 EXPECT_TRUE(controller.get().items.empty()); |
| 723 EXPECT_EQ(controller.get().currentNavigationIndex, -1); | 723 EXPECT_EQ(controller.get().lastCommittedItemIndex, -1); |
| 724 EXPECT_EQ(controller.get().previousNavigationIndex, -1); | 724 EXPECT_EQ(controller.get().previousItemIndex, -1); |
| 725 EXPECT_FALSE(controller.get().currentItem); | 725 EXPECT_FALSE(controller.get().currentItem); |
| 726 } | 726 } |
| 727 | 727 |
| 728 TEST_F(CRWSessionControllerTest, CreateWithNavList) { | 728 TEST_F(CRWSessionControllerTest, CreateWithNavList) { |
| 729 std::vector<std::unique_ptr<web::NavigationItem>> items; | 729 std::vector<std::unique_ptr<web::NavigationItem>> items; |
| 730 items.push_back(CreateNavigationItem("http://www.google.com", | 730 items.push_back(CreateNavigationItem("http://www.google.com", |
| 731 "http://www.referrer.com", @"Google")); | 731 "http://www.referrer.com", @"Google")); |
| 732 items.push_back(CreateNavigationItem("http://www.yahoo.com", | 732 items.push_back(CreateNavigationItem("http://www.yahoo.com", |
| 733 "http://www.google.com", @"Yahoo")); | 733 "http://www.google.com", @"Yahoo")); |
| 734 items.push_back(CreateNavigationItem("http://www.espn.com", | 734 items.push_back(CreateNavigationItem("http://www.espn.com", |
| 735 "http://www.nothing.com", @"ESPN")); | 735 "http://www.nothing.com", @"ESPN")); |
| 736 base::scoped_nsobject<CRWSessionController> controller( | 736 base::scoped_nsobject<CRWSessionController> controller( |
| 737 [[CRWSessionController alloc] initWithBrowserState:&browser_state_ | 737 [[CRWSessionController alloc] initWithBrowserState:&browser_state_ |
| 738 navigationItems:std::move(items) | 738 navigationItems:std::move(items) |
| 739 currentIndex:1]); | 739 lastCommittedItemIndex:1]); |
| 740 | 740 |
| 741 EXPECT_EQ(controller.get().items.size(), 3U); | 741 EXPECT_EQ(controller.get().items.size(), 3U); |
| 742 EXPECT_EQ(controller.get().currentNavigationIndex, 1); | 742 EXPECT_EQ(controller.get().lastCommittedItemIndex, 1); |
| 743 EXPECT_EQ(controller.get().previousNavigationIndex, -1); | 743 EXPECT_EQ(controller.get().previousItemIndex, -1); |
| 744 // Sanity check the current item, the NavigationItem unit test will ensure | 744 // Sanity check the current item, the NavigationItem unit test will ensure |
| 745 // the entire object is created properly. | 745 // the entire object is created properly. |
| 746 EXPECT_EQ([controller currentItem]->GetURL(), GURL("http://www.yahoo.com")); | 746 EXPECT_EQ([controller currentItem]->GetURL(), GURL("http://www.yahoo.com")); |
| 747 } | 747 } |
| 748 | 748 |
| 749 // Tests index of previous navigation item. | 749 // Tests index of previous navigation item. |
| 750 TEST_F(CRWSessionControllerTest, PreviousNavigationItem) { | 750 TEST_F(CRWSessionControllerTest, PreviousNavigationItem) { |
| 751 EXPECT_EQ(session_controller_.get().previousNavigationIndex, -1); | 751 EXPECT_EQ(session_controller_.get().previousItemIndex, -1); |
| 752 [session_controller_ | 752 [session_controller_ |
| 753 addPendingItem:GURL("http://www.url.com") | 753 addPendingItem:GURL("http://www.url.com") |
| 754 referrer:MakeReferrer("http://www.referer.com") | 754 referrer:MakeReferrer("http://www.referer.com") |
| 755 transition:ui::PAGE_TRANSITION_TYPED | 755 transition:ui::PAGE_TRANSITION_TYPED |
| 756 initiationType:web::NavigationInitiationType::USER_INITIATED]; | 756 initiationType:web::NavigationInitiationType::USER_INITIATED]; |
| 757 [session_controller_ commitPendingItem]; | 757 [session_controller_ commitPendingItem]; |
| 758 EXPECT_EQ(session_controller_.get().previousNavigationIndex, -1); | 758 EXPECT_EQ(session_controller_.get().previousItemIndex, -1); |
| 759 [session_controller_ | 759 [session_controller_ |
| 760 addPendingItem:GURL("http://www.url1.com") | 760 addPendingItem:GURL("http://www.url1.com") |
| 761 referrer:MakeReferrer("http://www.referer.com") | 761 referrer:MakeReferrer("http://www.referer.com") |
| 762 transition:ui::PAGE_TRANSITION_TYPED | 762 transition:ui::PAGE_TRANSITION_TYPED |
| 763 initiationType:web::NavigationInitiationType::USER_INITIATED]; | 763 initiationType:web::NavigationInitiationType::USER_INITIATED]; |
| 764 [session_controller_ commitPendingItem]; | 764 [session_controller_ commitPendingItem]; |
| 765 EXPECT_EQ(session_controller_.get().previousNavigationIndex, 0); | 765 EXPECT_EQ(session_controller_.get().previousItemIndex, 0); |
| 766 [session_controller_ | 766 [session_controller_ |
| 767 addPendingItem:GURL("http://www.url2.com") | 767 addPendingItem:GURL("http://www.url2.com") |
| 768 referrer:MakeReferrer("http://www.referer.com") | 768 referrer:MakeReferrer("http://www.referer.com") |
| 769 transition:ui::PAGE_TRANSITION_TYPED | 769 transition:ui::PAGE_TRANSITION_TYPED |
| 770 initiationType:web::NavigationInitiationType::USER_INITIATED]; | 770 initiationType:web::NavigationInitiationType::USER_INITIATED]; |
| 771 [session_controller_ commitPendingItem]; | 771 [session_controller_ commitPendingItem]; |
| 772 | 772 |
| 773 EXPECT_EQ(session_controller_.get().previousNavigationIndex, 1); | 773 EXPECT_EQ(session_controller_.get().previousItemIndex, 1); |
| 774 | 774 |
| 775 [session_controller_ goToItemAtIndex:1]; | 775 [session_controller_ goToItemAtIndex:1]; |
| 776 EXPECT_EQ(session_controller_.get().previousNavigationIndex, 2); | 776 EXPECT_EQ(session_controller_.get().previousItemIndex, 2); |
| 777 | 777 |
| 778 [session_controller_ goToItemAtIndex:0]; | 778 [session_controller_ goToItemAtIndex:0]; |
| 779 EXPECT_EQ(session_controller_.get().previousNavigationIndex, 1); | 779 EXPECT_EQ(session_controller_.get().previousItemIndex, 1); |
| 780 | 780 |
| 781 [session_controller_ goToItemAtIndex:1]; | 781 [session_controller_ goToItemAtIndex:1]; |
| 782 EXPECT_EQ(session_controller_.get().previousNavigationIndex, 0); | 782 EXPECT_EQ(session_controller_.get().previousItemIndex, 0); |
| 783 | 783 |
| 784 [session_controller_ goToItemAtIndex:2]; | 784 [session_controller_ goToItemAtIndex:2]; |
| 785 EXPECT_EQ(session_controller_.get().previousNavigationIndex, 1); | 785 EXPECT_EQ(session_controller_.get().previousItemIndex, 1); |
| 786 } | 786 } |
| 787 | 787 |
| 788 TEST_F(CRWSessionControllerTest, PushNewItem) { | 788 TEST_F(CRWSessionControllerTest, PushNewItem) { |
| 789 std::vector<std::unique_ptr<web::NavigationItem>> items; | 789 std::vector<std::unique_ptr<web::NavigationItem>> items; |
| 790 items.push_back(CreateNavigationItem("http://www.firstpage.com", | 790 items.push_back(CreateNavigationItem("http://www.firstpage.com", |
| 791 "http://www.starturl.com", @"First")); | 791 "http://www.starturl.com", @"First")); |
| 792 items.push_back(CreateNavigationItem("http://www.secondpage.com", | 792 items.push_back(CreateNavigationItem("http://www.secondpage.com", |
| 793 "http://www.firstpage.com", @"Second")); | 793 "http://www.firstpage.com", @"Second")); |
| 794 items.push_back(CreateNavigationItem("http://www.thirdpage.com", | 794 items.push_back(CreateNavigationItem("http://www.thirdpage.com", |
| 795 "http://www.secondpage.com", @"Third")); | 795 "http://www.secondpage.com", @"Third")); |
| 796 base::scoped_nsobject<CRWSessionController> controller( | 796 base::scoped_nsobject<CRWSessionController> controller( |
| 797 [[CRWSessionController alloc] initWithBrowserState:&browser_state_ | 797 [[CRWSessionController alloc] initWithBrowserState:&browser_state_ |
| 798 navigationItems:std::move(items) | 798 navigationItems:std::move(items) |
| 799 currentIndex:0]); | 799 lastCommittedItemIndex:0]); |
| 800 | 800 |
| 801 GURL pushPageGurl1("http://www.firstpage.com/#push1"); | 801 GURL pushPageGurl1("http://www.firstpage.com/#push1"); |
| 802 NSString* stateObject1 = @"{'foo': 1}"; | 802 NSString* stateObject1 = @"{'foo': 1}"; |
| 803 [controller pushNewItemWithURL:pushPageGurl1 | 803 [controller pushNewItemWithURL:pushPageGurl1 |
| 804 stateObject:stateObject1 | 804 stateObject:stateObject1 |
| 805 transition:ui::PAGE_TRANSITION_LINK]; | 805 transition:ui::PAGE_TRANSITION_LINK]; |
| 806 web::NavigationItemImpl* pushedItem = [controller currentItem]; | 806 web::NavigationItemImpl* pushedItem = [controller currentItem]; |
| 807 NSUInteger expectedCount = 2; | 807 NSUInteger expectedCount = 2; |
| 808 EXPECT_EQ(expectedCount, controller.get().items.size()); | 808 EXPECT_EQ(expectedCount, controller.get().items.size()); |
| 809 EXPECT_EQ(pushPageGurl1, pushedItem->GetURL()); | 809 EXPECT_EQ(pushPageGurl1, pushedItem->GetURL()); |
| (...skipping 28 matching lines...) Expand all Loading... |
| 838 CreateNavigationItem("http://foo.com", "http://google.com", @"Fourth")); | 838 CreateNavigationItem("http://foo.com", "http://google.com", @"Fourth")); |
| 839 // Push state navigation. | 839 // Push state navigation. |
| 840 items.push_back( | 840 items.push_back( |
| 841 CreateNavigationItem("http://foo.com/bar", "http://foo.com", @"Fifth")); | 841 CreateNavigationItem("http://foo.com/bar", "http://foo.com", @"Fifth")); |
| 842 // Push state navigation. | 842 // Push state navigation. |
| 843 items.push_back(CreateNavigationItem("http://foo.com/bar#bar", | 843 items.push_back(CreateNavigationItem("http://foo.com/bar#bar", |
| 844 "http://foo.com/bar", @"Sixth")); | 844 "http://foo.com/bar", @"Sixth")); |
| 845 base::scoped_nsobject<CRWSessionController> controller( | 845 base::scoped_nsobject<CRWSessionController> controller( |
| 846 [[CRWSessionController alloc] initWithBrowserState:&browser_state_ | 846 [[CRWSessionController alloc] initWithBrowserState:&browser_state_ |
| 847 navigationItems:std::move(items) | 847 navigationItems:std::move(items) |
| 848 currentIndex:0]); | 848 lastCommittedItemIndex:0]); |
| 849 web::NavigationItemImpl* item0 = [controller items][0].get(); | 849 web::NavigationItemImpl* item0 = [controller items][0].get(); |
| 850 web::NavigationItemImpl* item1 = [controller items][1].get(); | 850 web::NavigationItemImpl* item1 = [controller items][1].get(); |
| 851 web::NavigationItemImpl* item2 = [controller items][2].get(); | 851 web::NavigationItemImpl* item2 = [controller items][2].get(); |
| 852 web::NavigationItemImpl* item3 = [controller items][3].get(); | 852 web::NavigationItemImpl* item3 = [controller items][3].get(); |
| 853 web::NavigationItemImpl* item4 = [controller items][4].get(); | 853 web::NavigationItemImpl* item4 = [controller items][4].get(); |
| 854 web::NavigationItemImpl* item5 = [controller items][5].get(); | 854 web::NavigationItemImpl* item5 = [controller items][5].get(); |
| 855 item1->SetIsCreatedFromPushState(true); | 855 item1->SetIsCreatedFromPushState(true); |
| 856 item4->SetIsCreatedFromHashChange(true); | 856 item4->SetIsCreatedFromHashChange(true); |
| 857 item5->SetIsCreatedFromPushState(true); | 857 item5->SetIsCreatedFromPushState(true); |
| 858 | 858 |
| (...skipping 17 matching lines...) Expand all Loading... |
| 876 std::vector<std::unique_ptr<web::NavigationItem>> items; | 876 std::vector<std::unique_ptr<web::NavigationItem>> items; |
| 877 items.push_back(CreateNavigationItem("http://www.firstpage.com", | 877 items.push_back(CreateNavigationItem("http://www.firstpage.com", |
| 878 "http://www.starturl.com", @"First")); | 878 "http://www.starturl.com", @"First")); |
| 879 items.push_back(CreateNavigationItem("http://www.secondpage.com", | 879 items.push_back(CreateNavigationItem("http://www.secondpage.com", |
| 880 "http://www.firstpage.com", @"Second")); | 880 "http://www.firstpage.com", @"Second")); |
| 881 items.push_back(CreateNavigationItem("http://www.thirdpage.com", | 881 items.push_back(CreateNavigationItem("http://www.thirdpage.com", |
| 882 "http://www.secondpage.com", @"Third")); | 882 "http://www.secondpage.com", @"Third")); |
| 883 base::scoped_nsobject<CRWSessionController> controller( | 883 base::scoped_nsobject<CRWSessionController> controller( |
| 884 [[CRWSessionController alloc] initWithBrowserState:&browser_state_ | 884 [[CRWSessionController alloc] initWithBrowserState:&browser_state_ |
| 885 navigationItems:std::move(items) | 885 navigationItems:std::move(items) |
| 886 currentIndex:0]); | 886 lastCommittedItemIndex:0]); |
| 887 | 887 |
| 888 GURL replacePageGurl1("http://www.firstpage.com/#replace1"); | 888 GURL replacePageGurl1("http://www.firstpage.com/#replace1"); |
| 889 NSString* stateObject1 = @"{'foo': 1}"; | 889 NSString* stateObject1 = @"{'foo': 1}"; |
| 890 | 890 |
| 891 // Replace current item and check the size of history and fields of the | 891 // Replace current item and check the size of history and fields of the |
| 892 // modified item. | 892 // modified item. |
| 893 [controller updateCurrentItemWithURL:replacePageGurl1 | 893 [controller updateCurrentItemWithURL:replacePageGurl1 |
| 894 stateObject:stateObject1]; | 894 stateObject:stateObject1]; |
| 895 web::NavigationItemImpl* replacedItem = [controller currentItem]; | 895 web::NavigationItemImpl* replacedItem = [controller currentItem]; |
| 896 NSUInteger expectedCount = 3; | 896 NSUInteger expectedCount = 3; |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 930 transition:ui::PAGE_TRANSITION_IS_REDIRECT_MASK | 930 transition:ui::PAGE_TRANSITION_IS_REDIRECT_MASK |
| 931 initiationType:web::NavigationInitiationType::USER_INITIATED]; | 931 initiationType:web::NavigationInitiationType::USER_INITIATED]; |
| 932 [session_controller_ commitPendingItem]; | 932 [session_controller_ commitPendingItem]; |
| 933 [session_controller_ | 933 [session_controller_ |
| 934 addPendingItem:GURL("http://www.example.com/2") | 934 addPendingItem:GURL("http://www.example.com/2") |
| 935 referrer:MakeReferrer("http://www.example.com/c") | 935 referrer:MakeReferrer("http://www.example.com/c") |
| 936 transition:ui::PAGE_TRANSITION_LINK | 936 transition:ui::PAGE_TRANSITION_LINK |
| 937 initiationType:web::NavigationInitiationType::USER_INITIATED]; | 937 initiationType:web::NavigationInitiationType::USER_INITIATED]; |
| 938 [session_controller_ commitPendingItem]; | 938 [session_controller_ commitPendingItem]; |
| 939 | 939 |
| 940 EXPECT_EQ(3, session_controller_.get().currentNavigationIndex); | 940 EXPECT_EQ(3, session_controller_.get().lastCommittedItemIndex); |
| 941 web::NavigationItemList backItems = [session_controller_ backwardItems]; | 941 web::NavigationItemList backItems = [session_controller_ backwardItems]; |
| 942 EXPECT_EQ(2U, backItems.size()); | 942 EXPECT_EQ(2U, backItems.size()); |
| 943 EXPECT_TRUE([session_controller_ forwardItems].empty()); | 943 EXPECT_TRUE([session_controller_ forwardItems].empty()); |
| 944 EXPECT_EQ("http://www.example.com/redirect", backItems[0]->GetURL().spec()); | 944 EXPECT_EQ("http://www.example.com/redirect", backItems[0]->GetURL().spec()); |
| 945 | 945 |
| 946 [session_controller_ goToItemAtIndex:1]; | 946 [session_controller_ goToItemAtIndex:1]; |
| 947 EXPECT_EQ(1U, [session_controller_ backwardItems].size()); | 947 EXPECT_EQ(1U, [session_controller_ backwardItems].size()); |
| 948 EXPECT_EQ(1U, [session_controller_ forwardItems].size()); | 948 EXPECT_EQ(1U, [session_controller_ forwardItems].size()); |
| 949 | 949 |
| 950 [session_controller_ goToItemAtIndex:0]; | 950 [session_controller_ goToItemAtIndex:0]; |
| (...skipping 28 matching lines...) Expand all Loading... |
| 979 referrer:MakeReferrer("http://www.example.com/c") | 979 referrer:MakeReferrer("http://www.example.com/c") |
| 980 transition:ui::PAGE_TRANSITION_LINK | 980 transition:ui::PAGE_TRANSITION_LINK |
| 981 initiationType:web::NavigationInitiationType::USER_INITIATED]; | 981 initiationType:web::NavigationInitiationType::USER_INITIATED]; |
| 982 [session_controller_ commitPendingItem]; | 982 [session_controller_ commitPendingItem]; |
| 983 [session_controller_ | 983 [session_controller_ |
| 984 addPendingItem:GURL("http://www.example.com/3") | 984 addPendingItem:GURL("http://www.example.com/3") |
| 985 referrer:MakeReferrer("http://www.example.com/d") | 985 referrer:MakeReferrer("http://www.example.com/d") |
| 986 transition:ui::PAGE_TRANSITION_LINK | 986 transition:ui::PAGE_TRANSITION_LINK |
| 987 initiationType:web::NavigationInitiationType::USER_INITIATED]; | 987 initiationType:web::NavigationInitiationType::USER_INITIATED]; |
| 988 [session_controller_ addTransientItemWithURL:GURL("http://www.example.com")]; | 988 [session_controller_ addTransientItemWithURL:GURL("http://www.example.com")]; |
| 989 EXPECT_EQ(3, session_controller_.get().currentNavigationIndex); | 989 EXPECT_EQ(3, session_controller_.get().lastCommittedItemIndex); |
| 990 EXPECT_EQ(2, session_controller_.get().previousNavigationIndex); | 990 EXPECT_EQ(2, session_controller_.get().previousItemIndex); |
| 991 EXPECT_TRUE([session_controller_ pendingItem]); | 991 EXPECT_TRUE([session_controller_ pendingItem]); |
| 992 EXPECT_TRUE([session_controller_ transientItem]); | 992 EXPECT_TRUE([session_controller_ transientItem]); |
| 993 | 993 |
| 994 // Going back should discard transient and pending items. | 994 // Going back should discard transient and pending items. |
| 995 [session_controller_ goToItemAtIndex:1]; | 995 [session_controller_ goToItemAtIndex:1]; |
| 996 EXPECT_EQ(1, session_controller_.get().currentNavigationIndex); | 996 EXPECT_EQ(1, session_controller_.get().lastCommittedItemIndex); |
| 997 EXPECT_EQ(3, session_controller_.get().previousNavigationIndex); | 997 EXPECT_EQ(3, session_controller_.get().previousItemIndex); |
| 998 EXPECT_FALSE(session_controller_.get().pendingItem); | 998 EXPECT_FALSE(session_controller_.get().pendingItem); |
| 999 EXPECT_FALSE(session_controller_.get().transientItem); | 999 EXPECT_FALSE(session_controller_.get().transientItem); |
| 1000 | 1000 |
| 1001 // Going forward should discard transient item. | 1001 // Going forward should discard transient item. |
| 1002 [session_controller_ addTransientItemWithURL:GURL("http://www.example.com")]; | 1002 [session_controller_ addTransientItemWithURL:GURL("http://www.example.com")]; |
| 1003 EXPECT_TRUE(session_controller_.get().transientItem); | 1003 EXPECT_TRUE(session_controller_.get().transientItem); |
| 1004 [session_controller_ goToItemAtIndex:2]; | 1004 [session_controller_ goToItemAtIndex:2]; |
| 1005 EXPECT_EQ(2, session_controller_.get().currentNavigationIndex); | 1005 EXPECT_EQ(2, session_controller_.get().lastCommittedItemIndex); |
| 1006 EXPECT_EQ(1, session_controller_.get().previousNavigationIndex); | 1006 EXPECT_EQ(1, session_controller_.get().previousItemIndex); |
| 1007 EXPECT_FALSE(session_controller_.get().transientItem); | 1007 EXPECT_FALSE(session_controller_.get().transientItem); |
| 1008 | 1008 |
| 1009 // Out of bounds navigations should be no-op. | 1009 // Out of bounds navigations should be no-op. |
| 1010 [session_controller_ goToItemAtIndex:-1]; | 1010 [session_controller_ goToItemAtIndex:-1]; |
| 1011 EXPECT_EQ(2, session_controller_.get().currentNavigationIndex); | 1011 EXPECT_EQ(2, session_controller_.get().lastCommittedItemIndex); |
| 1012 EXPECT_EQ(1, session_controller_.get().previousNavigationIndex); | 1012 EXPECT_EQ(1, session_controller_.get().previousItemIndex); |
| 1013 [session_controller_ goToItemAtIndex:NSIntegerMax]; | 1013 [session_controller_ goToItemAtIndex:NSIntegerMax]; |
| 1014 EXPECT_EQ(2, session_controller_.get().currentNavigationIndex); | 1014 EXPECT_EQ(2, session_controller_.get().lastCommittedItemIndex); |
| 1015 EXPECT_EQ(1, session_controller_.get().previousNavigationIndex); | 1015 EXPECT_EQ(1, session_controller_.get().previousItemIndex); |
| 1016 | 1016 |
| 1017 // Going to current index should not change the previous index. | 1017 // Going to current index should not change the previous index. |
| 1018 [session_controller_ goToItemAtIndex:2]; | 1018 [session_controller_ goToItemAtIndex:2]; |
| 1019 EXPECT_EQ(2, session_controller_.get().currentNavigationIndex); | 1019 EXPECT_EQ(2, session_controller_.get().lastCommittedItemIndex); |
| 1020 EXPECT_EQ(1, session_controller_.get().previousNavigationIndex); | 1020 EXPECT_EQ(1, session_controller_.get().previousItemIndex); |
| 1021 } | 1021 } |
| 1022 | 1022 |
| 1023 // Tests that visible URL is the same as transient URL if there are no committed | 1023 // Tests that visible URL is the same as transient URL if there are no committed |
| 1024 // items. | 1024 // items. |
| 1025 TEST_F(CRWSessionControllerTest, VisibleItemWithSingleTransientItem) { | 1025 TEST_F(CRWSessionControllerTest, VisibleItemWithSingleTransientItem) { |
| 1026 [session_controller_ addTransientItemWithURL:GURL("http://www.example.com")]; | 1026 [session_controller_ addTransientItemWithURL:GURL("http://www.example.com")]; |
| 1027 web::NavigationItem* visible_item = [session_controller_ visibleItem]; | 1027 web::NavigationItem* visible_item = [session_controller_ visibleItem]; |
| 1028 ASSERT_TRUE(visible_item); | 1028 ASSERT_TRUE(visible_item); |
| 1029 EXPECT_EQ("http://www.example.com/", visible_item->GetURL().spec()); | 1029 EXPECT_EQ("http://www.example.com/", visible_item->GetURL().spec()); |
| 1030 } | 1030 } |
| (...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1145 [session_controller_ | 1145 [session_controller_ |
| 1146 addPendingItem:GURL("http://www.example.com/0") | 1146 addPendingItem:GURL("http://www.example.com/0") |
| 1147 referrer:MakeReferrer("http://www.example.com/b") | 1147 referrer:MakeReferrer("http://www.example.com/b") |
| 1148 transition:ui::PAGE_TRANSITION_CLIENT_REDIRECT | 1148 transition:ui::PAGE_TRANSITION_CLIENT_REDIRECT |
| 1149 initiationType:web::NavigationInitiationType::RENDERER_INITIATED]; | 1149 initiationType:web::NavigationInitiationType::RENDERER_INITIATED]; |
| 1150 [session_controller_ commitPendingItem]; | 1150 [session_controller_ commitPendingItem]; |
| 1151 EXPECT_EQ(0U, [session_controller_ backwardItems].size()); | 1151 EXPECT_EQ(0U, [session_controller_ backwardItems].size()); |
| 1152 } | 1152 } |
| 1153 | 1153 |
| 1154 } // anonymous namespace | 1154 } // anonymous namespace |
| OLD | NEW |