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

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

Issue 2766063002: Remove the concept of currentItemIndex (Closed)
Patch Set: fix unit tests Created 3 years, 9 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 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
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
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
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
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
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
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
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
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
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
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
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
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
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
OLDNEW
« no previous file with comments | « ios/web/navigation/crw_session_controller+private_constructors.h ('k') | ios/web/navigation/crw_session_storage_unittest.mm » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698