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

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

Issue 2935983002: [ObjC ARC] Converts ios/web:ios_web_navigation_unittests to ARC. (Closed)
Patch Set: Created 3 years, 6 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
11 #include "base/logging.h" 11 #include "base/logging.h"
12 #import "base/mac/scoped_nsobject.h"
13 #include "base/memory/ptr_util.h" 12 #include "base/memory/ptr_util.h"
14 #include "base/strings/sys_string_conversions.h" 13 #include "base/strings/sys_string_conversions.h"
15 #import "ios/web/navigation/crw_session_controller+private_constructors.h" 14 #import "ios/web/navigation/crw_session_controller+private_constructors.h"
16 #import "ios/web/navigation/navigation_item_impl.h" 15 #import "ios/web/navigation/navigation_item_impl.h"
17 #import "ios/web/navigation/navigation_manager_impl.h" 16 #import "ios/web/navigation/navigation_manager_impl.h"
18 #include "ios/web/public/referrer.h" 17 #include "ios/web/public/referrer.h"
19 #include "ios/web/public/test/fakes/test_browser_state.h" 18 #include "ios/web/public/test/fakes/test_browser_state.h"
20 #include "ios/web/public/test/test_web_thread_bundle.h" 19 #include "ios/web/public/test/test_web_thread_bundle.h"
21 #import "net/base/mac/url_conversions.h" 20 #import "net/base/mac/url_conversions.h"
22 #include "testing/gtest/include/gtest/gtest.h" 21 #include "testing/gtest/include/gtest/gtest.h"
23 #import "testing/gtest_mac.h" 22 #import "testing/gtest_mac.h"
24 #include "testing/platform_test.h" 23 #include "testing/platform_test.h"
25 24
25 #if !defined(__has_feature) || !__has_feature(objc_arc)
26 #error "This file requires ARC support."
27 #endif
28
26 using UserAgentOverrideOption = web::NavigationManager::UserAgentOverrideOption; 29 using UserAgentOverrideOption = web::NavigationManager::UserAgentOverrideOption;
27 30
28 @interface CRWSessionController (Testing) 31 @interface CRWSessionController (Testing)
29 - (const GURL&)URLForItemAtIndex:(size_t)index; 32 - (const GURL&)URLForItemAtIndex:(size_t)index;
30 - (const GURL&)currentURL; 33 - (const GURL&)currentURL;
31 @end 34 @end
32 35
33 @implementation CRWSessionController (Testing) 36 @implementation CRWSessionController (Testing)
34 - (const GURL&)URLForItemAtIndex:(size_t)index { 37 - (const GURL&)URLForItemAtIndex:(size_t)index {
35 if (index < self.items.size()) 38 if (index < self.items.size())
36 return self.items[index]->GetURL(); 39 return self.items[index]->GetURL();
37 return GURL::EmptyGURL(); 40 return GURL::EmptyGURL();
38 } 41 }
39 42
40 - (const GURL&)currentURL { 43 - (const GURL&)currentURL {
41 return self.currentItem ? self.currentItem->GetURL() : GURL::EmptyGURL(); 44 return self.currentItem ? self.currentItem->GetURL() : GURL::EmptyGURL();
42 } 45 }
43 @end 46 @end
44 47
45 namespace { 48 namespace {
46 49
47 class CRWSessionControllerTest : public PlatformTest { 50 class CRWSessionControllerTest : public PlatformTest {
48 protected: 51 protected:
49 void SetUp() override { 52 void SetUp() override {
50 session_controller_.reset( 53 session_controller_ =
51 [[CRWSessionController alloc] initWithBrowserState:&browser_state_]); 54 [[CRWSessionController alloc] initWithBrowserState:&browser_state_];
52 } 55 }
53 56
54 web::Referrer MakeReferrer(const std::string& url) { 57 web::Referrer MakeReferrer(const std::string& url) {
55 return web::Referrer(GURL(url), web::ReferrerPolicyDefault); 58 return web::Referrer(GURL(url), web::ReferrerPolicyDefault);
56 } 59 }
57 60
58 web::TestWebThreadBundle thread_bundle_; 61 web::TestWebThreadBundle thread_bundle_;
59 web::TestBrowserState browser_state_; 62 web::TestBrowserState browser_state_;
60 base::scoped_nsobject<CRWSessionController> session_controller_; 63 CRWSessionController* session_controller_;
61 }; 64 };
62 65
63 TEST_F(CRWSessionControllerTest, Init) { 66 TEST_F(CRWSessionControllerTest, Init) {
64 EXPECT_TRUE([session_controller_ items].empty()); 67 EXPECT_TRUE([session_controller_ items].empty());
65 EXPECT_FALSE([session_controller_ currentItem]); 68 EXPECT_FALSE([session_controller_ currentItem]);
66 } 69 }
67 70
68 // Tests session controller state after setting a pending index. 71 // Tests session controller state after setting a pending index.
69 TEST_F(CRWSessionControllerTest, SetPendingIndex) { 72 TEST_F(CRWSessionControllerTest, SetPendingIndex) {
70 [session_controller_ 73 [session_controller_
(...skipping 443 matching lines...) Expand 10 before | Expand all | Expand 10 after
514 userAgentOverrideOption:UserAgentOverrideOption::INHERIT]; 517 userAgentOverrideOption:UserAgentOverrideOption::INHERIT];
515 [session_controller_ commitPendingItem]; 518 [session_controller_ commitPendingItem];
516 [session_controller_ 519 [session_controller_
517 addPendingItem:GURL("http://www.url.com/3") 520 addPendingItem:GURL("http://www.url.com/3")
518 referrer:web::Referrer() 521 referrer:web::Referrer()
519 transition:ui::PAGE_TRANSITION_TYPED 522 transition:ui::PAGE_TRANSITION_TYPED
520 initiationType:web::NavigationInitiationType::USER_INITIATED 523 initiationType:web::NavigationInitiationType::USER_INITIATED
521 userAgentOverrideOption:UserAgentOverrideOption::INHERIT]; 524 userAgentOverrideOption:UserAgentOverrideOption::INHERIT];
522 525
523 // Create source session controller with 1 committed item. 526 // Create source session controller with 1 committed item.
524 base::scoped_nsobject<CRWSessionController> other_session_controller( 527 CRWSessionController* other_session_controller =
525 [[CRWSessionController alloc] initWithBrowserState:&browser_state_]); 528 [[CRWSessionController alloc] initWithBrowserState:&browser_state_];
526 [other_session_controller 529 [other_session_controller
527 addPendingItem:GURL("http://www.url.com/0") 530 addPendingItem:GURL("http://www.url.com/0")
528 referrer:web::Referrer() 531 referrer:web::Referrer()
529 transition:ui::PAGE_TRANSITION_TYPED 532 transition:ui::PAGE_TRANSITION_TYPED
530 initiationType:web::NavigationInitiationType::USER_INITIATED 533 initiationType:web::NavigationInitiationType::USER_INITIATED
531 userAgentOverrideOption:UserAgentOverrideOption::INHERIT]; 534 userAgentOverrideOption:UserAgentOverrideOption::INHERIT];
532 [other_session_controller commitPendingItem]; 535 [other_session_controller commitPendingItem];
533 [other_session_controller 536 [other_session_controller
534 addPendingItem:GURL("http://www.url.com/1") 537 addPendingItem:GURL("http://www.url.com/1")
535 referrer:web::Referrer() 538 referrer:web::Referrer()
536 transition:ui::PAGE_TRANSITION_TYPED 539 transition:ui::PAGE_TRANSITION_TYPED
537 initiationType:web::NavigationInitiationType::USER_INITIATED 540 initiationType:web::NavigationInitiationType::USER_INITIATED
538 userAgentOverrideOption:UserAgentOverrideOption::INHERIT]; 541 userAgentOverrideOption:UserAgentOverrideOption::INHERIT];
539 542
540 // Insert and verify the state of target session controller. 543 // Insert and verify the state of target session controller.
541 EXPECT_TRUE([session_controller_ canPruneAllButLastCommittedItem]); 544 EXPECT_TRUE([session_controller_ canPruneAllButLastCommittedItem]);
542 [session_controller_ 545 [session_controller_
543 copyStateFromSessionControllerAndPrune:other_session_controller.get()]; 546 copyStateFromSessionControllerAndPrune:other_session_controller];
544 547
545 EXPECT_EQ(2U, [session_controller_ items].size()); 548 EXPECT_EQ(2U, [session_controller_ items].size());
546 EXPECT_EQ(1, [session_controller_ lastCommittedItemIndex]); 549 EXPECT_EQ(1, [session_controller_ lastCommittedItemIndex]);
547 EXPECT_EQ(-1, [session_controller_ previousItemIndex]); 550 EXPECT_EQ(-1, [session_controller_ previousItemIndex]);
548 EXPECT_EQ(-1, [session_controller_ pendingItemIndex]); 551 EXPECT_EQ(-1, [session_controller_ pendingItemIndex]);
549 552
550 EXPECT_EQ(GURL("http://www.url.com/0"), 553 EXPECT_EQ(GURL("http://www.url.com/0"),
551 [session_controller_ URLForItemAtIndex:0]); 554 [session_controller_ URLForItemAtIndex:0]);
552 EXPECT_EQ(GURL("http://www.url.com/2"), 555 EXPECT_EQ(GURL("http://www.url.com/2"),
553 [session_controller_ URLForItemAtIndex:1]); 556 [session_controller_ URLForItemAtIndex:1]);
(...skipping 13 matching lines...) Expand all
567 [session_controller_ commitPendingItem]; 570 [session_controller_ commitPendingItem];
568 [session_controller_ 571 [session_controller_
569 addPendingItem:GURL("http://www.url.com/1") 572 addPendingItem:GURL("http://www.url.com/1")
570 referrer:web::Referrer() 573 referrer:web::Referrer()
571 transition:ui::PAGE_TRANSITION_TYPED 574 transition:ui::PAGE_TRANSITION_TYPED
572 initiationType:web::NavigationInitiationType::USER_INITIATED 575 initiationType:web::NavigationInitiationType::USER_INITIATED
573 userAgentOverrideOption:UserAgentOverrideOption::INHERIT]; 576 userAgentOverrideOption:UserAgentOverrideOption::INHERIT];
574 [session_controller_ commitPendingItem]; 577 [session_controller_ commitPendingItem];
575 578
576 // Create empty source session controller. 579 // Create empty source session controller.
577 base::scoped_nsobject<CRWSessionController> other_session_controller( 580 CRWSessionController* other_session_controller =
578 [[CRWSessionController alloc] initWithBrowserState:&browser_state_]); 581 [[CRWSessionController alloc] initWithBrowserState:&browser_state_];
579 582
580 // Insert and verify the state of target session controller. 583 // Insert and verify the state of target session controller.
581 EXPECT_TRUE([session_controller_ canPruneAllButLastCommittedItem]); 584 EXPECT_TRUE([session_controller_ canPruneAllButLastCommittedItem]);
582 [session_controller_ 585 [session_controller_
583 copyStateFromSessionControllerAndPrune:other_session_controller.get()]; 586 copyStateFromSessionControllerAndPrune:other_session_controller];
584 EXPECT_EQ(2U, [session_controller_ items].size()); 587 EXPECT_EQ(2U, [session_controller_ items].size());
585 EXPECT_EQ(1, [session_controller_ lastCommittedItemIndex]); 588 EXPECT_EQ(1, [session_controller_ lastCommittedItemIndex]);
586 EXPECT_EQ(0, [session_controller_ previousItemIndex]); 589 EXPECT_EQ(0, [session_controller_ previousItemIndex]);
587 EXPECT_EQ(-1, [session_controller_ pendingItemIndex]); 590 EXPECT_EQ(-1, [session_controller_ pendingItemIndex]);
588 EXPECT_FALSE([session_controller_ pendingItem]); 591 EXPECT_FALSE([session_controller_ pendingItem]);
589 EXPECT_EQ(GURL("http://www.url.com/0"), 592 EXPECT_EQ(GURL("http://www.url.com/0"),
590 [session_controller_ URLForItemAtIndex:0]); 593 [session_controller_ URLForItemAtIndex:0]);
591 EXPECT_EQ(GURL("http://www.url.com/1"), 594 EXPECT_EQ(GURL("http://www.url.com/1"),
592 [session_controller_ URLForItemAtIndex:1]); 595 [session_controller_ URLForItemAtIndex:1]);
593 } 596 }
594 597
595 // Tests that |-copyStateFromSessionControllerAndPrune:| is a no-op when the 598 // Tests that |-copyStateFromSessionControllerAndPrune:| is a no-op when the
596 // receiver has no last committed item. 599 // receiver has no last committed item.
597 TEST_F(CRWSessionControllerTest, CopyStateToEmptySessionController) { 600 TEST_F(CRWSessionControllerTest, CopyStateToEmptySessionController) {
598 EXPECT_FALSE([session_controller_ canPruneAllButLastCommittedItem]); 601 EXPECT_FALSE([session_controller_ canPruneAllButLastCommittedItem]);
599 602
600 // Create source session controller with 1 committed item. 603 // Create source session controller with 1 committed item.
601 base::scoped_nsobject<CRWSessionController> other_session_controller( 604 CRWSessionController* other_session_controller =
602 [[CRWSessionController alloc] initWithBrowserState:&browser_state_]); 605 [[CRWSessionController alloc] initWithBrowserState:&browser_state_];
603 [other_session_controller 606 [other_session_controller
604 addPendingItem:GURL("http://www.url.com/0") 607 addPendingItem:GURL("http://www.url.com/0")
605 referrer:web::Referrer() 608 referrer:web::Referrer()
606 transition:ui::PAGE_TRANSITION_TYPED 609 transition:ui::PAGE_TRANSITION_TYPED
607 initiationType:web::NavigationInitiationType::USER_INITIATED 610 initiationType:web::NavigationInitiationType::USER_INITIATED
608 userAgentOverrideOption:UserAgentOverrideOption::INHERIT]; 611 userAgentOverrideOption:UserAgentOverrideOption::INHERIT];
609 [other_session_controller commitPendingItem]; 612 [other_session_controller commitPendingItem];
610 [other_session_controller 613 [other_session_controller
611 addPendingItem:GURL("http://www.url.com/1") 614 addPendingItem:GURL("http://www.url.com/1")
612 referrer:web::Referrer() 615 referrer:web::Referrer()
(...skipping 26 matching lines...) Expand all
639 [session_controller_ commitPendingItem]; 642 [session_controller_ commitPendingItem];
640 [session_controller_ 643 [session_controller_
641 addPendingItem:GURL("http://www.url.com/2") 644 addPendingItem:GURL("http://www.url.com/2")
642 referrer:web::Referrer() 645 referrer:web::Referrer()
643 transition:ui::PAGE_TRANSITION_TYPED 646 transition:ui::PAGE_TRANSITION_TYPED
644 initiationType:web::NavigationInitiationType::USER_INITIATED 647 initiationType:web::NavigationInitiationType::USER_INITIATED
645 userAgentOverrideOption:UserAgentOverrideOption::INHERIT]; 648 userAgentOverrideOption:UserAgentOverrideOption::INHERIT];
646 [session_controller_ commitPendingItem]; 649 [session_controller_ commitPendingItem];
647 650
648 // Create source session controller with 1 committed item. 651 // Create source session controller with 1 committed item.
649 base::scoped_nsobject<CRWSessionController> other_session_controller( 652 CRWSessionController* other_session_controller =
650 [[CRWSessionController alloc] initWithBrowserState:&browser_state_]); 653 [[CRWSessionController alloc] initWithBrowserState:&browser_state_];
651 [other_session_controller 654 [other_session_controller
652 addPendingItem:GURL("http://www.url.com/0") 655 addPendingItem:GURL("http://www.url.com/0")
653 referrer:web::Referrer() 656 referrer:web::Referrer()
654 transition:ui::PAGE_TRANSITION_TYPED 657 transition:ui::PAGE_TRANSITION_TYPED
655 initiationType:web::NavigationInitiationType::USER_INITIATED 658 initiationType:web::NavigationInitiationType::USER_INITIATED
656 userAgentOverrideOption:UserAgentOverrideOption::INHERIT]; 659 userAgentOverrideOption:UserAgentOverrideOption::INHERIT];
657 [other_session_controller commitPendingItem]; 660 [other_session_controller commitPendingItem];
658 [other_session_controller 661 [other_session_controller
659 addPendingItem:GURL("http://www.url.com/1") 662 addPendingItem:GURL("http://www.url.com/1")
660 referrer:web::Referrer() 663 referrer:web::Referrer()
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
693 GURL second_url = GURL("http://www.url.com/2"); 696 GURL second_url = GURL("http://www.url.com/2");
694 [session_controller_ 697 [session_controller_
695 addPendingItem:second_url 698 addPendingItem:second_url
696 referrer:web::Referrer() 699 referrer:web::Referrer()
697 transition:ui::PAGE_TRANSITION_TYPED 700 transition:ui::PAGE_TRANSITION_TYPED
698 initiationType:web::NavigationInitiationType::USER_INITIATED 701 initiationType:web::NavigationInitiationType::USER_INITIATED
699 userAgentOverrideOption:UserAgentOverrideOption::INHERIT]; 702 userAgentOverrideOption:UserAgentOverrideOption::INHERIT];
700 [session_controller_ addTransientItemWithURL:second_url]; 703 [session_controller_ addTransientItemWithURL:second_url];
701 704
702 // Create source session controller with 1 committed item. 705 // Create source session controller with 1 committed item.
703 base::scoped_nsobject<CRWSessionController> other_session_controller( 706 CRWSessionController* other_session_controller =
704 [[CRWSessionController alloc] initWithBrowserState:&browser_state_]); 707 [[CRWSessionController alloc] initWithBrowserState:&browser_state_];
705 [other_session_controller 708 [other_session_controller
706 addPendingItem:GURL("http://www.url.com/0") 709 addPendingItem:GURL("http://www.url.com/0")
707 referrer:web::Referrer() 710 referrer:web::Referrer()
708 transition:ui::PAGE_TRANSITION_TYPED 711 transition:ui::PAGE_TRANSITION_TYPED
709 initiationType:web::NavigationInitiationType::USER_INITIATED 712 initiationType:web::NavigationInitiationType::USER_INITIATED
710 userAgentOverrideOption:UserAgentOverrideOption::INHERIT]; 713 userAgentOverrideOption:UserAgentOverrideOption::INHERIT];
711 [other_session_controller commitPendingItem]; 714 [other_session_controller commitPendingItem];
712 [other_session_controller 715 [other_session_controller
713 addPendingItem:GURL("http://www.url.com/1") 716 addPendingItem:GURL("http://www.url.com/1")
714 referrer:web::Referrer() 717 referrer:web::Referrer()
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
757 760
758 // XCode clang doesn't correctly handle implicit unique_ptr casting for 761 // XCode clang doesn't correctly handle implicit unique_ptr casting for
759 // returned values, so manually cast here. 762 // returned values, so manually cast here.
760 std::unique_ptr<web::NavigationItem> item( 763 std::unique_ptr<web::NavigationItem> item(
761 static_cast<web::NavigationItem*>(navigation_item.release())); 764 static_cast<web::NavigationItem*>(navigation_item.release()));
762 return item; 765 return item;
763 } 766 }
764 767
765 TEST_F(CRWSessionControllerTest, CreateWithEmptyNavigations) { 768 TEST_F(CRWSessionControllerTest, CreateWithEmptyNavigations) {
766 std::vector<std::unique_ptr<web::NavigationItem>> items; 769 std::vector<std::unique_ptr<web::NavigationItem>> items;
767 base::scoped_nsobject<CRWSessionController> controller( 770 CRWSessionController* controller =
768 [[CRWSessionController alloc] initWithBrowserState:&browser_state_ 771 [[CRWSessionController alloc] initWithBrowserState:&browser_state_
769 navigationItems:std::move(items) 772 navigationItems:std::move(items)
770 lastCommittedItemIndex:0]); 773 lastCommittedItemIndex:0];
771 EXPECT_TRUE(controller.get().items.empty()); 774 EXPECT_TRUE(controller.items.empty());
772 EXPECT_EQ(controller.get().lastCommittedItemIndex, -1); 775 EXPECT_EQ(controller.lastCommittedItemIndex, -1);
773 EXPECT_EQ(controller.get().previousItemIndex, -1); 776 EXPECT_EQ(controller.previousItemIndex, -1);
774 EXPECT_FALSE(controller.get().currentItem); 777 EXPECT_FALSE(controller.currentItem);
775 } 778 }
776 779
777 TEST_F(CRWSessionControllerTest, CreateWithNavList) { 780 TEST_F(CRWSessionControllerTest, CreateWithNavList) {
778 std::vector<std::unique_ptr<web::NavigationItem>> items; 781 std::vector<std::unique_ptr<web::NavigationItem>> items;
779 items.push_back(CreateNavigationItem("http://www.google.com", 782 items.push_back(CreateNavigationItem("http://www.google.com",
780 "http://www.referrer.com", @"Google")); 783 "http://www.referrer.com", @"Google"));
781 items.push_back(CreateNavigationItem("http://www.yahoo.com", 784 items.push_back(CreateNavigationItem("http://www.yahoo.com",
782 "http://www.google.com", @"Yahoo")); 785 "http://www.google.com", @"Yahoo"));
783 items.push_back(CreateNavigationItem("http://www.espn.com", 786 items.push_back(CreateNavigationItem("http://www.espn.com",
784 "http://www.nothing.com", @"ESPN")); 787 "http://www.nothing.com", @"ESPN"));
785 base::scoped_nsobject<CRWSessionController> controller( 788 CRWSessionController* controller =
786 [[CRWSessionController alloc] initWithBrowserState:&browser_state_ 789 [[CRWSessionController alloc] initWithBrowserState:&browser_state_
787 navigationItems:std::move(items) 790 navigationItems:std::move(items)
788 lastCommittedItemIndex:1]); 791 lastCommittedItemIndex:1];
789 792
790 EXPECT_EQ(controller.get().items.size(), 3U); 793 EXPECT_EQ(controller.items.size(), 3U);
791 EXPECT_EQ(controller.get().lastCommittedItemIndex, 1); 794 EXPECT_EQ(controller.lastCommittedItemIndex, 1);
792 EXPECT_EQ(controller.get().previousItemIndex, -1); 795 EXPECT_EQ(controller.previousItemIndex, -1);
793 // Sanity check the current item, the NavigationItem unit test will ensure 796 // Sanity check the current item, the NavigationItem unit test will ensure
794 // the entire object is created properly. 797 // the entire object is created properly.
795 EXPECT_EQ([controller currentItem]->GetURL(), GURL("http://www.yahoo.com")); 798 EXPECT_EQ([controller currentItem]->GetURL(), GURL("http://www.yahoo.com"));
796 } 799 }
797 800
798 // Tests index of previous navigation item. 801 // Tests index of previous navigation item.
799 TEST_F(CRWSessionControllerTest, PreviousNavigationItem) { 802 TEST_F(CRWSessionControllerTest, PreviousNavigationItem) {
800 EXPECT_EQ(session_controller_.get().previousItemIndex, -1); 803 EXPECT_EQ(session_controller_.previousItemIndex, -1);
801 [session_controller_ 804 [session_controller_
802 addPendingItem:GURL("http://www.url.com") 805 addPendingItem:GURL("http://www.url.com")
803 referrer:MakeReferrer("http://www.referer.com") 806 referrer:MakeReferrer("http://www.referer.com")
804 transition:ui::PAGE_TRANSITION_TYPED 807 transition:ui::PAGE_TRANSITION_TYPED
805 initiationType:web::NavigationInitiationType::USER_INITIATED 808 initiationType:web::NavigationInitiationType::USER_INITIATED
806 userAgentOverrideOption:UserAgentOverrideOption::INHERIT]; 809 userAgentOverrideOption:UserAgentOverrideOption::INHERIT];
807 [session_controller_ commitPendingItem]; 810 [session_controller_ commitPendingItem];
808 EXPECT_EQ(session_controller_.get().previousItemIndex, -1); 811 EXPECT_EQ(session_controller_.previousItemIndex, -1);
809 [session_controller_ 812 [session_controller_
810 addPendingItem:GURL("http://www.url1.com") 813 addPendingItem:GURL("http://www.url1.com")
811 referrer:MakeReferrer("http://www.referer.com") 814 referrer:MakeReferrer("http://www.referer.com")
812 transition:ui::PAGE_TRANSITION_TYPED 815 transition:ui::PAGE_TRANSITION_TYPED
813 initiationType:web::NavigationInitiationType::USER_INITIATED 816 initiationType:web::NavigationInitiationType::USER_INITIATED
814 userAgentOverrideOption:UserAgentOverrideOption::INHERIT]; 817 userAgentOverrideOption:UserAgentOverrideOption::INHERIT];
815 [session_controller_ commitPendingItem]; 818 [session_controller_ commitPendingItem];
816 EXPECT_EQ(session_controller_.get().previousItemIndex, 0); 819 EXPECT_EQ(session_controller_.previousItemIndex, 0);
817 [session_controller_ 820 [session_controller_
818 addPendingItem:GURL("http://www.url2.com") 821 addPendingItem:GURL("http://www.url2.com")
819 referrer:MakeReferrer("http://www.referer.com") 822 referrer:MakeReferrer("http://www.referer.com")
820 transition:ui::PAGE_TRANSITION_TYPED 823 transition:ui::PAGE_TRANSITION_TYPED
821 initiationType:web::NavigationInitiationType::USER_INITIATED 824 initiationType:web::NavigationInitiationType::USER_INITIATED
822 userAgentOverrideOption:UserAgentOverrideOption::INHERIT]; 825 userAgentOverrideOption:UserAgentOverrideOption::INHERIT];
823 [session_controller_ commitPendingItem]; 826 [session_controller_ commitPendingItem];
824 827
825 EXPECT_EQ(session_controller_.get().previousItemIndex, 1); 828 EXPECT_EQ(session_controller_.previousItemIndex, 1);
826 829
827 [session_controller_ goToItemAtIndex:1 discardNonCommittedItems:NO]; 830 [session_controller_ goToItemAtIndex:1 discardNonCommittedItems:NO];
828 EXPECT_EQ(session_controller_.get().previousItemIndex, 2); 831 EXPECT_EQ(session_controller_.previousItemIndex, 2);
829 832
830 [session_controller_ goToItemAtIndex:0 discardNonCommittedItems:NO]; 833 [session_controller_ goToItemAtIndex:0 discardNonCommittedItems:NO];
831 EXPECT_EQ(session_controller_.get().previousItemIndex, 1); 834 EXPECT_EQ(session_controller_.previousItemIndex, 1);
832 835
833 [session_controller_ goToItemAtIndex:1 discardNonCommittedItems:NO]; 836 [session_controller_ goToItemAtIndex:1 discardNonCommittedItems:NO];
834 EXPECT_EQ(session_controller_.get().previousItemIndex, 0); 837 EXPECT_EQ(session_controller_.previousItemIndex, 0);
835 838
836 [session_controller_ goToItemAtIndex:2 discardNonCommittedItems:NO]; 839 [session_controller_ goToItemAtIndex:2 discardNonCommittedItems:NO];
837 EXPECT_EQ(session_controller_.get().previousItemIndex, 1); 840 EXPECT_EQ(session_controller_.previousItemIndex, 1);
838 } 841 }
839 842
840 TEST_F(CRWSessionControllerTest, PushNewItem) { 843 TEST_F(CRWSessionControllerTest, PushNewItem) {
841 std::vector<std::unique_ptr<web::NavigationItem>> items; 844 std::vector<std::unique_ptr<web::NavigationItem>> items;
842 items.push_back(CreateNavigationItem("http://www.firstpage.com", 845 items.push_back(CreateNavigationItem("http://www.firstpage.com",
843 "http://www.starturl.com", @"First")); 846 "http://www.starturl.com", @"First"));
844 items.push_back(CreateNavigationItem("http://www.secondpage.com", 847 items.push_back(CreateNavigationItem("http://www.secondpage.com",
845 "http://www.firstpage.com", @"Second")); 848 "http://www.firstpage.com", @"Second"));
846 items.push_back(CreateNavigationItem("http://www.thirdpage.com", 849 items.push_back(CreateNavigationItem("http://www.thirdpage.com",
847 "http://www.secondpage.com", @"Third")); 850 "http://www.secondpage.com", @"Third"));
848 base::scoped_nsobject<CRWSessionController> controller( 851 CRWSessionController* controller =
849 [[CRWSessionController alloc] initWithBrowserState:&browser_state_ 852 [[CRWSessionController alloc] initWithBrowserState:&browser_state_
850 navigationItems:std::move(items) 853 navigationItems:std::move(items)
851 lastCommittedItemIndex:0]); 854 lastCommittedItemIndex:0];
852 855
853 GURL pushPageGurl1("http://www.firstpage.com/#push1"); 856 GURL pushPageGurl1("http://www.firstpage.com/#push1");
854 NSString* stateObject1 = @"{'foo': 1}"; 857 NSString* stateObject1 = @"{'foo': 1}";
855 [controller pushNewItemWithURL:pushPageGurl1 858 [controller pushNewItemWithURL:pushPageGurl1
856 stateObject:stateObject1 859 stateObject:stateObject1
857 transition:ui::PAGE_TRANSITION_LINK]; 860 transition:ui::PAGE_TRANSITION_LINK];
858 web::NavigationItemImpl* pushedItem = [controller currentItem]; 861 web::NavigationItemImpl* pushedItem = [controller currentItem];
859 NSUInteger expectedCount = 2; 862 NSUInteger expectedCount = 2;
860 EXPECT_EQ(expectedCount, controller.get().items.size()); 863 EXPECT_EQ(expectedCount, controller.items.size());
861 EXPECT_EQ(pushPageGurl1, pushedItem->GetURL()); 864 EXPECT_EQ(pushPageGurl1, pushedItem->GetURL());
862 EXPECT_TRUE(pushedItem->IsCreatedFromPushState()); 865 EXPECT_TRUE(pushedItem->IsCreatedFromPushState());
863 EXPECT_NSEQ(stateObject1, pushedItem->GetSerializedStateObject()); 866 EXPECT_NSEQ(stateObject1, pushedItem->GetSerializedStateObject());
864 EXPECT_EQ(GURL("http://www.firstpage.com/"), pushedItem->GetReferrer().url); 867 EXPECT_EQ(GURL("http://www.firstpage.com/"), pushedItem->GetReferrer().url);
865 868
866 // Add another new item and check size and fields again. 869 // Add another new item and check size and fields again.
867 GURL pushPageGurl2("http://www.firstpage.com/push2"); 870 GURL pushPageGurl2("http://www.firstpage.com/push2");
868 [controller pushNewItemWithURL:pushPageGurl2 871 [controller pushNewItemWithURL:pushPageGurl2
869 stateObject:nil 872 stateObject:nil
870 transition:ui::PAGE_TRANSITION_LINK]; 873 transition:ui::PAGE_TRANSITION_LINK];
871 pushedItem = [controller currentItem]; 874 pushedItem = [controller currentItem];
872 expectedCount = 3; 875 expectedCount = 3;
873 EXPECT_EQ(expectedCount, controller.get().items.size()); 876 EXPECT_EQ(expectedCount, controller.items.size());
874 EXPECT_EQ(pushPageGurl2, pushedItem->GetURL()); 877 EXPECT_EQ(pushPageGurl2, pushedItem->GetURL());
875 EXPECT_TRUE(pushedItem->IsCreatedFromPushState()); 878 EXPECT_TRUE(pushedItem->IsCreatedFromPushState());
876 EXPECT_EQ(nil, pushedItem->GetSerializedStateObject()); 879 EXPECT_EQ(nil, pushedItem->GetSerializedStateObject());
877 EXPECT_EQ(pushPageGurl1, pushedItem->GetReferrer().url); 880 EXPECT_EQ(pushPageGurl1, pushedItem->GetReferrer().url);
878 } 881 }
879 882
880 TEST_F(CRWSessionControllerTest, IsSameDocumentNavigation) { 883 TEST_F(CRWSessionControllerTest, IsSameDocumentNavigation) {
881 std::vector<std::unique_ptr<web::NavigationItem>> items; 884 std::vector<std::unique_ptr<web::NavigationItem>> items;
882 items.push_back( 885 items.push_back(
883 CreateNavigationItem("http://foo.com", "http://google.com", @"First")); 886 CreateNavigationItem("http://foo.com", "http://google.com", @"First"));
884 // Push state navigation. 887 // Push state navigation.
885 items.push_back( 888 items.push_back(
886 CreateNavigationItem("http://foo.com#bar", "http://foo.com", @"Second")); 889 CreateNavigationItem("http://foo.com#bar", "http://foo.com", @"Second"));
887 items.push_back(CreateNavigationItem("http://google.com", 890 items.push_back(CreateNavigationItem("http://google.com",
888 "http://foo.com#bar", @"Third")); 891 "http://foo.com#bar", @"Third"));
889 items.push_back( 892 items.push_back(
890 CreateNavigationItem("http://foo.com", "http://google.com", @"Fourth")); 893 CreateNavigationItem("http://foo.com", "http://google.com", @"Fourth"));
891 // Push state navigation. 894 // Push state navigation.
892 items.push_back( 895 items.push_back(
893 CreateNavigationItem("http://foo.com/bar", "http://foo.com", @"Fifth")); 896 CreateNavigationItem("http://foo.com/bar", "http://foo.com", @"Fifth"));
894 // Push state navigation. 897 // Push state navigation.
895 items.push_back(CreateNavigationItem("http://foo.com/bar#bar", 898 items.push_back(CreateNavigationItem("http://foo.com/bar#bar",
896 "http://foo.com/bar", @"Sixth")); 899 "http://foo.com/bar", @"Sixth"));
897 base::scoped_nsobject<CRWSessionController> controller( 900 CRWSessionController* controller =
898 [[CRWSessionController alloc] initWithBrowserState:&browser_state_ 901 [[CRWSessionController alloc] initWithBrowserState:&browser_state_
899 navigationItems:std::move(items) 902 navigationItems:std::move(items)
900 lastCommittedItemIndex:0]); 903 lastCommittedItemIndex:0];
901 web::NavigationItemImpl* item0 = [controller items][0].get(); 904 web::NavigationItemImpl* item0 = [controller items][0].get();
902 web::NavigationItemImpl* item1 = [controller items][1].get(); 905 web::NavigationItemImpl* item1 = [controller items][1].get();
903 web::NavigationItemImpl* item2 = [controller items][2].get(); 906 web::NavigationItemImpl* item2 = [controller items][2].get();
904 web::NavigationItemImpl* item3 = [controller items][3].get(); 907 web::NavigationItemImpl* item3 = [controller items][3].get();
905 web::NavigationItemImpl* item4 = [controller items][4].get(); 908 web::NavigationItemImpl* item4 = [controller items][4].get();
906 web::NavigationItemImpl* item5 = [controller items][5].get(); 909 web::NavigationItemImpl* item5 = [controller items][5].get();
907 item1->SetIsCreatedFromPushState(true); 910 item1->SetIsCreatedFromPushState(true);
908 item4->SetIsCreatedFromHashChange(true); 911 item4->SetIsCreatedFromHashChange(true);
909 item5->SetIsCreatedFromPushState(true); 912 item5->SetIsCreatedFromPushState(true);
910 913
(...skipping 14 matching lines...) Expand all
925 } 928 }
926 929
927 TEST_F(CRWSessionControllerTest, UpdateCurrentItem) { 930 TEST_F(CRWSessionControllerTest, UpdateCurrentItem) {
928 std::vector<std::unique_ptr<web::NavigationItem>> items; 931 std::vector<std::unique_ptr<web::NavigationItem>> items;
929 items.push_back(CreateNavigationItem("http://www.firstpage.com", 932 items.push_back(CreateNavigationItem("http://www.firstpage.com",
930 "http://www.starturl.com", @"First")); 933 "http://www.starturl.com", @"First"));
931 items.push_back(CreateNavigationItem("http://www.secondpage.com", 934 items.push_back(CreateNavigationItem("http://www.secondpage.com",
932 "http://www.firstpage.com", @"Second")); 935 "http://www.firstpage.com", @"Second"));
933 items.push_back(CreateNavigationItem("http://www.thirdpage.com", 936 items.push_back(CreateNavigationItem("http://www.thirdpage.com",
934 "http://www.secondpage.com", @"Third")); 937 "http://www.secondpage.com", @"Third"));
935 base::scoped_nsobject<CRWSessionController> controller( 938 CRWSessionController* controller =
936 [[CRWSessionController alloc] initWithBrowserState:&browser_state_ 939 [[CRWSessionController alloc] initWithBrowserState:&browser_state_
937 navigationItems:std::move(items) 940 navigationItems:std::move(items)
938 lastCommittedItemIndex:0]); 941 lastCommittedItemIndex:0];
939 942
940 GURL replacePageGurl1("http://www.firstpage.com/#replace1"); 943 GURL replacePageGurl1("http://www.firstpage.com/#replace1");
941 NSString* stateObject1 = @"{'foo': 1}"; 944 NSString* stateObject1 = @"{'foo': 1}";
942 945
943 // Replace current item and check the size of history and fields of the 946 // Replace current item and check the size of history and fields of the
944 // modified item. 947 // modified item.
945 [controller updateCurrentItemWithURL:replacePageGurl1 948 [controller updateCurrentItemWithURL:replacePageGurl1
946 stateObject:stateObject1]; 949 stateObject:stateObject1];
947 web::NavigationItemImpl* replacedItem = [controller currentItem]; 950 web::NavigationItemImpl* replacedItem = [controller currentItem];
948 NSUInteger expectedCount = 3; 951 NSUInteger expectedCount = 3;
949 EXPECT_EQ(expectedCount, controller.get().items.size()); 952 EXPECT_EQ(expectedCount, controller.items.size());
950 EXPECT_EQ(replacePageGurl1, replacedItem->GetURL()); 953 EXPECT_EQ(replacePageGurl1, replacedItem->GetURL());
951 EXPECT_FALSE(replacedItem->IsCreatedFromPushState()); 954 EXPECT_FALSE(replacedItem->IsCreatedFromPushState());
952 EXPECT_NSEQ(stateObject1, replacedItem->GetSerializedStateObject()); 955 EXPECT_NSEQ(stateObject1, replacedItem->GetSerializedStateObject());
953 EXPECT_EQ(GURL("http://www.starturl.com/"), replacedItem->GetReferrer().url); 956 EXPECT_EQ(GURL("http://www.starturl.com/"), replacedItem->GetReferrer().url);
954 957
955 // Replace current item and check size and fields again. 958 // Replace current item and check size and fields again.
956 GURL replacePageGurl2("http://www.firstpage.com/#replace2"); 959 GURL replacePageGurl2("http://www.firstpage.com/#replace2");
957 [controller.get() updateCurrentItemWithURL:replacePageGurl2 stateObject:nil]; 960 [controller updateCurrentItemWithURL:replacePageGurl2 stateObject:nil];
958 replacedItem = [controller currentItem]; 961 replacedItem = [controller currentItem];
959 EXPECT_EQ(expectedCount, controller.get().items.size()); 962 EXPECT_EQ(expectedCount, controller.items.size());
960 EXPECT_EQ(replacePageGurl2, replacedItem->GetURL()); 963 EXPECT_EQ(replacePageGurl2, replacedItem->GetURL());
961 EXPECT_FALSE(replacedItem->IsCreatedFromPushState()); 964 EXPECT_FALSE(replacedItem->IsCreatedFromPushState());
962 EXPECT_NSEQ(nil, replacedItem->GetSerializedStateObject()); 965 EXPECT_NSEQ(nil, replacedItem->GetSerializedStateObject());
963 EXPECT_EQ(GURL("http://www.starturl.com/"), replacedItem->GetReferrer().url); 966 EXPECT_EQ(GURL("http://www.starturl.com/"), replacedItem->GetReferrer().url);
964 } 967 }
965 968
966 TEST_F(CRWSessionControllerTest, TestBackwardForwardItems) { 969 TEST_F(CRWSessionControllerTest, TestBackwardForwardItems) {
967 [session_controller_ 970 [session_controller_
968 addPendingItem:GURL("http://www.example.com/0") 971 addPendingItem:GURL("http://www.example.com/0")
969 referrer:MakeReferrer("http://www.example.com/a") 972 referrer:MakeReferrer("http://www.example.com/a")
(...skipping 16 matching lines...) Expand all
986 userAgentOverrideOption:UserAgentOverrideOption::INHERIT]; 989 userAgentOverrideOption:UserAgentOverrideOption::INHERIT];
987 [session_controller_ commitPendingItem]; 990 [session_controller_ commitPendingItem];
988 [session_controller_ 991 [session_controller_
989 addPendingItem:GURL("http://www.example.com/2") 992 addPendingItem:GURL("http://www.example.com/2")
990 referrer:MakeReferrer("http://www.example.com/c") 993 referrer:MakeReferrer("http://www.example.com/c")
991 transition:ui::PAGE_TRANSITION_LINK 994 transition:ui::PAGE_TRANSITION_LINK
992 initiationType:web::NavigationInitiationType::USER_INITIATED 995 initiationType:web::NavigationInitiationType::USER_INITIATED
993 userAgentOverrideOption:UserAgentOverrideOption::INHERIT]; 996 userAgentOverrideOption:UserAgentOverrideOption::INHERIT];
994 [session_controller_ commitPendingItem]; 997 [session_controller_ commitPendingItem];
995 998
996 EXPECT_EQ(3, session_controller_.get().lastCommittedItemIndex); 999 EXPECT_EQ(3, session_controller_.lastCommittedItemIndex);
997 web::NavigationItemList back_items = [session_controller_ backwardItems]; 1000 web::NavigationItemList back_items = [session_controller_ backwardItems];
998 EXPECT_EQ(2U, back_items.size()); 1001 EXPECT_EQ(2U, back_items.size());
999 EXPECT_TRUE([session_controller_ forwardItems].empty()); 1002 EXPECT_TRUE([session_controller_ forwardItems].empty());
1000 EXPECT_EQ("http://www.example.com/redirect", back_items[0]->GetURL().spec()); 1003 EXPECT_EQ("http://www.example.com/redirect", back_items[0]->GetURL().spec());
1001 1004
1002 [session_controller_ goToItemAtIndex:1 discardNonCommittedItems:NO]; 1005 [session_controller_ goToItemAtIndex:1 discardNonCommittedItems:NO];
1003 EXPECT_EQ(1U, [session_controller_ backwardItems].size()); 1006 EXPECT_EQ(1U, [session_controller_ backwardItems].size());
1004 EXPECT_EQ(1U, [session_controller_ forwardItems].size()); 1007 EXPECT_EQ(1U, [session_controller_ forwardItems].size());
1005 1008
1006 [session_controller_ goToItemAtIndex:0 discardNonCommittedItems:NO]; 1009 [session_controller_ goToItemAtIndex:0 discardNonCommittedItems:NO];
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
1040 initiationType:web::NavigationInitiationType::USER_INITIATED 1043 initiationType:web::NavigationInitiationType::USER_INITIATED
1041 userAgentOverrideOption:UserAgentOverrideOption::INHERIT]; 1044 userAgentOverrideOption:UserAgentOverrideOption::INHERIT];
1042 [session_controller_ commitPendingItem]; 1045 [session_controller_ commitPendingItem];
1043 [session_controller_ 1046 [session_controller_
1044 addPendingItem:GURL("http://www.example.com/3") 1047 addPendingItem:GURL("http://www.example.com/3")
1045 referrer:MakeReferrer("http://www.example.com/d") 1048 referrer:MakeReferrer("http://www.example.com/d")
1046 transition:ui::PAGE_TRANSITION_LINK 1049 transition:ui::PAGE_TRANSITION_LINK
1047 initiationType:web::NavigationInitiationType::USER_INITIATED 1050 initiationType:web::NavigationInitiationType::USER_INITIATED
1048 userAgentOverrideOption:UserAgentOverrideOption::INHERIT]; 1051 userAgentOverrideOption:UserAgentOverrideOption::INHERIT];
1049 [session_controller_ addTransientItemWithURL:GURL("http://www.example.com")]; 1052 [session_controller_ addTransientItemWithURL:GURL("http://www.example.com")];
1050 EXPECT_EQ(3, session_controller_.get().lastCommittedItemIndex); 1053 EXPECT_EQ(3, session_controller_.lastCommittedItemIndex);
1051 EXPECT_EQ(2, session_controller_.get().previousItemIndex); 1054 EXPECT_EQ(2, session_controller_.previousItemIndex);
1052 EXPECT_TRUE([session_controller_ pendingItem]); 1055 EXPECT_TRUE([session_controller_ pendingItem]);
1053 EXPECT_TRUE([session_controller_ transientItem]); 1056 EXPECT_TRUE([session_controller_ transientItem]);
1054 1057
1055 // Going back and forth without discaring transient and pending items. 1058 // Going back and forth without discaring transient and pending items.
1056 [session_controller_ goToItemAtIndex:1 discardNonCommittedItems:NO]; 1059 [session_controller_ goToItemAtIndex:1 discardNonCommittedItems:NO];
1057 EXPECT_EQ(1, session_controller_.get().lastCommittedItemIndex); 1060 EXPECT_EQ(1, session_controller_.lastCommittedItemIndex);
1058 EXPECT_EQ(3, session_controller_.get().previousItemIndex); 1061 EXPECT_EQ(3, session_controller_.previousItemIndex);
1059 EXPECT_TRUE(session_controller_.get().pendingItem); 1062 EXPECT_TRUE(session_controller_.pendingItem);
1060 EXPECT_TRUE(session_controller_.get().transientItem); 1063 EXPECT_TRUE(session_controller_.transientItem);
1061 [session_controller_ goToItemAtIndex:3 discardNonCommittedItems:NO]; 1064 [session_controller_ goToItemAtIndex:3 discardNonCommittedItems:NO];
1062 EXPECT_EQ(3, session_controller_.get().lastCommittedItemIndex); 1065 EXPECT_EQ(3, session_controller_.lastCommittedItemIndex);
1063 EXPECT_EQ(1, session_controller_.get().previousItemIndex); 1066 EXPECT_EQ(1, session_controller_.previousItemIndex);
1064 EXPECT_TRUE(session_controller_.get().pendingItem); 1067 EXPECT_TRUE(session_controller_.pendingItem);
1065 EXPECT_TRUE(session_controller_.get().transientItem); 1068 EXPECT_TRUE(session_controller_.transientItem);
1066 1069
1067 // Going back should discard transient and pending items. 1070 // Going back should discard transient and pending items.
1068 [session_controller_ goToItemAtIndex:1 discardNonCommittedItems:YES]; 1071 [session_controller_ goToItemAtIndex:1 discardNonCommittedItems:YES];
1069 EXPECT_EQ(1, session_controller_.get().lastCommittedItemIndex); 1072 EXPECT_EQ(1, session_controller_.lastCommittedItemIndex);
1070 EXPECT_EQ(3, session_controller_.get().previousItemIndex); 1073 EXPECT_EQ(3, session_controller_.previousItemIndex);
1071 EXPECT_FALSE(session_controller_.get().pendingItem); 1074 EXPECT_FALSE(session_controller_.pendingItem);
1072 EXPECT_FALSE(session_controller_.get().transientItem); 1075 EXPECT_FALSE(session_controller_.transientItem);
1073 1076
1074 // Going forward should discard transient item. 1077 // Going forward should discard transient item.
1075 [session_controller_ addTransientItemWithURL:GURL("http://www.example.com")]; 1078 [session_controller_ addTransientItemWithURL:GURL("http://www.example.com")];
1076 EXPECT_TRUE(session_controller_.get().transientItem); 1079 EXPECT_TRUE(session_controller_.transientItem);
1077 [session_controller_ goToItemAtIndex:2 discardNonCommittedItems:YES]; 1080 [session_controller_ goToItemAtIndex:2 discardNonCommittedItems:YES];
1078 EXPECT_EQ(2, session_controller_.get().lastCommittedItemIndex); 1081 EXPECT_EQ(2, session_controller_.lastCommittedItemIndex);
1079 EXPECT_EQ(1, session_controller_.get().previousItemIndex); 1082 EXPECT_EQ(1, session_controller_.previousItemIndex);
1080 EXPECT_FALSE(session_controller_.get().transientItem); 1083 EXPECT_FALSE(session_controller_.transientItem);
1081 1084
1082 // Out of bounds navigations should be no-op. 1085 // Out of bounds navigations should be no-op.
1083 [session_controller_ goToItemAtIndex:-1 discardNonCommittedItems:NO]; 1086 [session_controller_ goToItemAtIndex:-1 discardNonCommittedItems:NO];
1084 EXPECT_EQ(2, session_controller_.get().lastCommittedItemIndex); 1087 EXPECT_EQ(2, session_controller_.lastCommittedItemIndex);
1085 EXPECT_EQ(1, session_controller_.get().previousItemIndex); 1088 EXPECT_EQ(1, session_controller_.previousItemIndex);
1086 [session_controller_ goToItemAtIndex:NSIntegerMax 1089 [session_controller_ goToItemAtIndex:NSIntegerMax
1087 discardNonCommittedItems:NO]; 1090 discardNonCommittedItems:NO];
1088 EXPECT_EQ(2, session_controller_.get().lastCommittedItemIndex); 1091 EXPECT_EQ(2, session_controller_.lastCommittedItemIndex);
1089 EXPECT_EQ(1, session_controller_.get().previousItemIndex); 1092 EXPECT_EQ(1, session_controller_.previousItemIndex);
1090 1093
1091 // Going to current index should not change the previous index. 1094 // Going to current index should not change the previous index.
1092 [session_controller_ goToItemAtIndex:2 discardNonCommittedItems:NO]; 1095 [session_controller_ goToItemAtIndex:2 discardNonCommittedItems:NO];
1093 EXPECT_EQ(2, session_controller_.get().lastCommittedItemIndex); 1096 EXPECT_EQ(2, session_controller_.lastCommittedItemIndex);
1094 EXPECT_EQ(1, session_controller_.get().previousItemIndex); 1097 EXPECT_EQ(1, session_controller_.previousItemIndex);
1095 } 1098 }
1096 1099
1097 // Tests that visible URL is the same as transient URL if there are no committed 1100 // Tests that visible URL is the same as transient URL if there are no committed
1098 // items. 1101 // items.
1099 TEST_F(CRWSessionControllerTest, VisibleItemWithSingleTransientItem) { 1102 TEST_F(CRWSessionControllerTest, VisibleItemWithSingleTransientItem) {
1100 [session_controller_ addTransientItemWithURL:GURL("http://www.example.com")]; 1103 [session_controller_ addTransientItemWithURL:GURL("http://www.example.com")];
1101 web::NavigationItem* visible_item = [session_controller_ visibleItem]; 1104 web::NavigationItem* visible_item = [session_controller_ visibleItem];
1102 ASSERT_TRUE(visible_item); 1105 ASSERT_TRUE(visible_item);
1103 EXPECT_EQ("http://www.example.com/", visible_item->GetURL().spec()); 1106 EXPECT_EQ("http://www.example.com/", visible_item->GetURL().spec());
1104 } 1107 }
(...skipping 149 matching lines...) Expand 10 before | Expand all | Expand 10 after
1254 initiationType:web::NavigationInitiationType::USER_INITIATED 1257 initiationType:web::NavigationInitiationType::USER_INITIATED
1255 userAgentOverrideOption:UserAgentOverrideOption::INHERIT]; 1258 userAgentOverrideOption:UserAgentOverrideOption::INHERIT];
1256 [session_controller_ commitPendingItem]; 1259 [session_controller_ commitPendingItem];
1257 [session_controller_ 1260 [session_controller_
1258 addPendingItem:GURL("http://www.example.com/2") 1261 addPendingItem:GURL("http://www.example.com/2")
1259 referrer:MakeReferrer("http://www.example.com/c") 1262 referrer:MakeReferrer("http://www.example.com/c")
1260 transition:ui::PAGE_TRANSITION_LINK 1263 transition:ui::PAGE_TRANSITION_LINK
1261 initiationType:web::NavigationInitiationType::USER_INITIATED 1264 initiationType:web::NavigationInitiationType::USER_INITIATED
1262 userAgentOverrideOption:UserAgentOverrideOption::INHERIT]; 1265 userAgentOverrideOption:UserAgentOverrideOption::INHERIT];
1263 1266
1264 EXPECT_EQ(1, session_controller_.get().lastCommittedItemIndex); 1267 EXPECT_EQ(1, session_controller_.lastCommittedItemIndex);
1265 EXPECT_TRUE([session_controller_ pendingItem]); 1268 EXPECT_TRUE([session_controller_ pendingItem]);
1266 EXPECT_EQ(-1, [session_controller_ pendingItemIndex]); 1269 EXPECT_EQ(-1, [session_controller_ pendingItemIndex]);
1267 EXPECT_EQ(GURL("http://www.example.com/2"), [session_controller_ currentURL]); 1270 EXPECT_EQ(GURL("http://www.example.com/2"), [session_controller_ currentURL]);
1268 1271
1269 web::NavigationItemList back_items = [session_controller_ backwardItems]; 1272 web::NavigationItemList back_items = [session_controller_ backwardItems];
1270 ASSERT_EQ(1U, back_items.size()); 1273 ASSERT_EQ(1U, back_items.size());
1271 EXPECT_EQ("http://www.example.com/0", back_items[0]->GetURL().spec()); 1274 EXPECT_EQ("http://www.example.com/0", back_items[0]->GetURL().spec());
1272 } 1275 }
1273 1276
1274 // Tests that |-backwardItems| returns all committed items if there is a 1277 // Tests that |-backwardItems| returns all committed items if there is a
1275 // transient item. This can happen if an intersitial was loaded for SSL error. 1278 // transient item. This can happen if an intersitial was loaded for SSL error.
1276 // See crbug.com/691311. 1279 // See crbug.com/691311.
1277 TEST_F(CRWSessionControllerTest, 1280 TEST_F(CRWSessionControllerTest,
1278 BackwardItemsShouldContainAllCommittedIfCurrentIsTransient) { 1281 BackwardItemsShouldContainAllCommittedIfCurrentIsTransient) {
1279 [session_controller_ 1282 [session_controller_
1280 addPendingItem:GURL("http://www.example.com/0") 1283 addPendingItem:GURL("http://www.example.com/0")
1281 referrer:MakeReferrer("http://www.example.com/a") 1284 referrer:MakeReferrer("http://www.example.com/a")
1282 transition:ui::PAGE_TRANSITION_LINK 1285 transition:ui::PAGE_TRANSITION_LINK
1283 initiationType:web::NavigationInitiationType::USER_INITIATED 1286 initiationType:web::NavigationInitiationType::USER_INITIATED
1284 userAgentOverrideOption:UserAgentOverrideOption::INHERIT]; 1287 userAgentOverrideOption:UserAgentOverrideOption::INHERIT];
1285 [session_controller_ commitPendingItem]; 1288 [session_controller_ commitPendingItem];
1286 [session_controller_ 1289 [session_controller_
1287 addTransientItemWithURL:GURL("http://www.example.com/1")]; 1290 addTransientItemWithURL:GURL("http://www.example.com/1")];
1288 1291
1289 EXPECT_EQ(0, session_controller_.get().lastCommittedItemIndex); 1292 EXPECT_EQ(0, session_controller_.lastCommittedItemIndex);
1290 EXPECT_TRUE([session_controller_ transientItem]); 1293 EXPECT_TRUE([session_controller_ transientItem]);
1291 EXPECT_EQ(GURL("http://www.example.com/1"), [session_controller_ currentURL]); 1294 EXPECT_EQ(GURL("http://www.example.com/1"), [session_controller_ currentURL]);
1292 1295
1293 web::NavigationItemList back_items = [session_controller_ backwardItems]; 1296 web::NavigationItemList back_items = [session_controller_ backwardItems];
1294 ASSERT_EQ(1U, back_items.size()); 1297 ASSERT_EQ(1U, back_items.size());
1295 EXPECT_EQ("http://www.example.com/0", back_items[0]->GetURL().spec()); 1298 EXPECT_EQ("http://www.example.com/0", back_items[0]->GetURL().spec());
1296 } 1299 }
1297 1300
1298 // Tests that |-backwardItems| works as expected when the transient item is the 1301 // Tests that |-backwardItems| works as expected when the transient item is the
1299 // only item in history. 1302 // only item in history.
1300 TEST_F(CRWSessionControllerTest, BackwardItemsShouldBeEmptyIfFirstIsTransient) { 1303 TEST_F(CRWSessionControllerTest, BackwardItemsShouldBeEmptyIfFirstIsTransient) {
1301 [session_controller_ 1304 [session_controller_
1302 addTransientItemWithURL:GURL("http://www.example.com/1")]; 1305 addTransientItemWithURL:GURL("http://www.example.com/1")];
1303 1306
1304 EXPECT_EQ(-1, session_controller_.get().lastCommittedItemIndex); 1307 EXPECT_EQ(-1, session_controller_.lastCommittedItemIndex);
1305 EXPECT_TRUE([session_controller_ transientItem]); 1308 EXPECT_TRUE([session_controller_ transientItem]);
1306 EXPECT_EQ(GURL("http://www.example.com/1"), [session_controller_ currentURL]); 1309 EXPECT_EQ(GURL("http://www.example.com/1"), [session_controller_ currentURL]);
1307 1310
1308 web::NavigationItemList back_items = [session_controller_ backwardItems]; 1311 web::NavigationItemList back_items = [session_controller_ backwardItems];
1309 EXPECT_TRUE(back_items.empty()); 1312 EXPECT_TRUE(back_items.empty());
1310 } 1313 }
1311 1314
1312 } // anonymous namespace 1315 } // anonymous namespace
OLDNEW
« no previous file with comments | « ios/web/navigation/crw_navigation_item_storage_unittest.mm ('k') | ios/web/navigation/crw_session_storage_unittest.mm » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698