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