| 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 |