| OLD | NEW |
| 1 // Copyright 2012 The Chromium Authors. All rights reserved. | 1 // Copyright 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #import "ios/web/navigation/crw_session_controller.h" | 5 #import "ios/web/navigation/crw_session_controller.h" |
| 6 | 6 |
| 7 #import <Foundation/Foundation.h> | 7 #import <Foundation/Foundation.h> |
| 8 | 8 |
| 9 #include <utility> | 9 #include <utility> |
| 10 | 10 |
| (...skipping 27 matching lines...) Expand all Loading... |
| 38 - (const GURL&)currentURL { | 38 - (const GURL&)currentURL { |
| 39 return self.currentItem ? self.currentItem->GetURL() : GURL::EmptyGURL(); | 39 return self.currentItem ? self.currentItem->GetURL() : GURL::EmptyGURL(); |
| 40 } | 40 } |
| 41 @end | 41 @end |
| 42 | 42 |
| 43 namespace { | 43 namespace { |
| 44 | 44 |
| 45 class CRWSessionControllerTest : public PlatformTest { | 45 class CRWSessionControllerTest : public PlatformTest { |
| 46 protected: | 46 protected: |
| 47 void SetUp() override { | 47 void SetUp() override { |
| 48 session_controller_.reset([[CRWSessionController alloc] | 48 session_controller_.reset( |
| 49 initWithBrowserState:&browser_state_ | 49 [[CRWSessionController alloc] initWithBrowserState:&browser_state_]); |
| 50 openedByDOM:NO]); | |
| 51 } | 50 } |
| 52 | 51 |
| 53 web::Referrer MakeReferrer(const std::string& url) { | 52 web::Referrer MakeReferrer(const std::string& url) { |
| 54 return web::Referrer(GURL(url), web::ReferrerPolicyDefault); | 53 return web::Referrer(GURL(url), web::ReferrerPolicyDefault); |
| 55 } | 54 } |
| 56 | 55 |
| 57 web::TestWebThreadBundle thread_bundle_; | 56 web::TestWebThreadBundle thread_bundle_; |
| 58 web::TestBrowserState browser_state_; | 57 web::TestBrowserState browser_state_; |
| 59 base::scoped_nsobject<CRWSessionController> session_controller_; | 58 base::scoped_nsobject<CRWSessionController> session_controller_; |
| 60 }; | 59 }; |
| 61 | 60 |
| 62 TEST_F(CRWSessionControllerTest, Init) { | 61 TEST_F(CRWSessionControllerTest, Init) { |
| 63 EXPECT_FALSE([session_controller_ isOpenedByDOM]); | |
| 64 EXPECT_TRUE([session_controller_ items].empty()); | 62 EXPECT_TRUE([session_controller_ items].empty()); |
| 65 EXPECT_FALSE([session_controller_ currentItem]); | 63 EXPECT_FALSE([session_controller_ currentItem]); |
| 66 } | 64 } |
| 67 | 65 |
| 68 // Tests session controller state after setting a pending index. | 66 // Tests session controller state after setting a pending index. |
| 69 TEST_F(CRWSessionControllerTest, SetPendingIndex) { | 67 TEST_F(CRWSessionControllerTest, SetPendingIndex) { |
| 70 [session_controller_ | 68 [session_controller_ |
| 71 addPendingItem:GURL("http://www.example.com") | 69 addPendingItem:GURL("http://www.example.com") |
| 72 referrer:web::Referrer() | 70 referrer:web::Referrer() |
| 73 transition:ui::PAGE_TRANSITION_TYPED | 71 transition:ui::PAGE_TRANSITION_TYPED |
| (...skipping 408 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 482 initiationType:web::NavigationInitiationType::USER_INITIATED]; | 480 initiationType:web::NavigationInitiationType::USER_INITIATED]; |
| 483 [session_controller_ commitPendingItem]; | 481 [session_controller_ commitPendingItem]; |
| 484 [session_controller_ | 482 [session_controller_ |
| 485 addPendingItem:GURL("http://www.url.com/3") | 483 addPendingItem:GURL("http://www.url.com/3") |
| 486 referrer:web::Referrer() | 484 referrer:web::Referrer() |
| 487 transition:ui::PAGE_TRANSITION_TYPED | 485 transition:ui::PAGE_TRANSITION_TYPED |
| 488 initiationType:web::NavigationInitiationType::USER_INITIATED]; | 486 initiationType:web::NavigationInitiationType::USER_INITIATED]; |
| 489 | 487 |
| 490 // Create source session controller with 1 committed item. | 488 // Create source session controller with 1 committed item. |
| 491 base::scoped_nsobject<CRWSessionController> other_session_controller( | 489 base::scoped_nsobject<CRWSessionController> other_session_controller( |
| 492 [[CRWSessionController alloc] initWithBrowserState:&browser_state_ | 490 [[CRWSessionController alloc] initWithBrowserState:&browser_state_]); |
| 493 openedByDOM:NO]); | |
| 494 [other_session_controller | 491 [other_session_controller |
| 495 addPendingItem:GURL("http://www.url.com/0") | 492 addPendingItem:GURL("http://www.url.com/0") |
| 496 referrer:web::Referrer() | 493 referrer:web::Referrer() |
| 497 transition:ui::PAGE_TRANSITION_TYPED | 494 transition:ui::PAGE_TRANSITION_TYPED |
| 498 initiationType:web::NavigationInitiationType::USER_INITIATED]; | 495 initiationType:web::NavigationInitiationType::USER_INITIATED]; |
| 499 [other_session_controller commitPendingItem]; | 496 [other_session_controller commitPendingItem]; |
| 500 [other_session_controller | 497 [other_session_controller |
| 501 addPendingItem:GURL("http://www.url.com/1") | 498 addPendingItem:GURL("http://www.url.com/1") |
| 502 referrer:web::Referrer() | 499 referrer:web::Referrer() |
| 503 transition:ui::PAGE_TRANSITION_TYPED | 500 transition:ui::PAGE_TRANSITION_TYPED |
| (...skipping 28 matching lines...) Expand all Loading... |
| 532 [session_controller_ commitPendingItem]; | 529 [session_controller_ commitPendingItem]; |
| 533 [session_controller_ | 530 [session_controller_ |
| 534 addPendingItem:GURL("http://www.url.com/1") | 531 addPendingItem:GURL("http://www.url.com/1") |
| 535 referrer:web::Referrer() | 532 referrer:web::Referrer() |
| 536 transition:ui::PAGE_TRANSITION_TYPED | 533 transition:ui::PAGE_TRANSITION_TYPED |
| 537 initiationType:web::NavigationInitiationType::USER_INITIATED]; | 534 initiationType:web::NavigationInitiationType::USER_INITIATED]; |
| 538 [session_controller_ commitPendingItem]; | 535 [session_controller_ commitPendingItem]; |
| 539 | 536 |
| 540 // Create empty source session controller. | 537 // Create empty source session controller. |
| 541 base::scoped_nsobject<CRWSessionController> other_session_controller( | 538 base::scoped_nsobject<CRWSessionController> other_session_controller( |
| 542 [[CRWSessionController alloc] initWithBrowserState:&browser_state_ | 539 [[CRWSessionController alloc] initWithBrowserState:&browser_state_]); |
| 543 openedByDOM:NO]); | |
| 544 | 540 |
| 545 // Insert and verify the state of target session controller. | 541 // Insert and verify the state of target session controller. |
| 546 EXPECT_TRUE([session_controller_ canPruneAllButLastCommittedItem]); | 542 EXPECT_TRUE([session_controller_ canPruneAllButLastCommittedItem]); |
| 547 [session_controller_ | 543 [session_controller_ |
| 548 copyStateFromSessionControllerAndPrune:other_session_controller.get()]; | 544 copyStateFromSessionControllerAndPrune:other_session_controller.get()]; |
| 549 EXPECT_EQ(2U, [session_controller_ items].size()); | 545 EXPECT_EQ(2U, [session_controller_ items].size()); |
| 550 EXPECT_EQ(1, [session_controller_ currentNavigationIndex]); | 546 EXPECT_EQ(1, [session_controller_ currentNavigationIndex]); |
| 551 EXPECT_EQ(0, [session_controller_ previousNavigationIndex]); | 547 EXPECT_EQ(0, [session_controller_ previousNavigationIndex]); |
| 552 EXPECT_EQ(-1, [session_controller_ pendingItemIndex]); | 548 EXPECT_EQ(-1, [session_controller_ pendingItemIndex]); |
| 553 EXPECT_FALSE([session_controller_ pendingItem]); | 549 EXPECT_FALSE([session_controller_ pendingItem]); |
| 554 EXPECT_EQ(GURL("http://www.url.com/0"), | 550 EXPECT_EQ(GURL("http://www.url.com/0"), |
| 555 [session_controller_ URLForItemAtIndex:0]); | 551 [session_controller_ URLForItemAtIndex:0]); |
| 556 EXPECT_EQ(GURL("http://www.url.com/1"), | 552 EXPECT_EQ(GURL("http://www.url.com/1"), |
| 557 [session_controller_ URLForItemAtIndex:1]); | 553 [session_controller_ URLForItemAtIndex:1]); |
| 558 } | 554 } |
| 559 | 555 |
| 560 // Tests that |-copyStateFromSessionControllerAndPrune:| is a no-op when the | 556 // Tests that |-copyStateFromSessionControllerAndPrune:| is a no-op when the |
| 561 // receiver has no last committed item. | 557 // receiver has no last committed item. |
| 562 TEST_F(CRWSessionControllerTest, CopyStateToEmptySessionController) { | 558 TEST_F(CRWSessionControllerTest, CopyStateToEmptySessionController) { |
| 563 EXPECT_FALSE([session_controller_ canPruneAllButLastCommittedItem]); | 559 EXPECT_FALSE([session_controller_ canPruneAllButLastCommittedItem]); |
| 564 | 560 |
| 565 // Create source session controller with 1 committed item. | 561 // Create source session controller with 1 committed item. |
| 566 base::scoped_nsobject<CRWSessionController> other_session_controller( | 562 base::scoped_nsobject<CRWSessionController> other_session_controller( |
| 567 [[CRWSessionController alloc] initWithBrowserState:&browser_state_ | 563 [[CRWSessionController alloc] initWithBrowserState:&browser_state_]); |
| 568 openedByDOM:NO]); | |
| 569 [other_session_controller | 564 [other_session_controller |
| 570 addPendingItem:GURL("http://www.url.com/0") | 565 addPendingItem:GURL("http://www.url.com/0") |
| 571 referrer:web::Referrer() | 566 referrer:web::Referrer() |
| 572 transition:ui::PAGE_TRANSITION_TYPED | 567 transition:ui::PAGE_TRANSITION_TYPED |
| 573 initiationType:web::NavigationInitiationType::USER_INITIATED]; | 568 initiationType:web::NavigationInitiationType::USER_INITIATED]; |
| 574 [other_session_controller commitPendingItem]; | 569 [other_session_controller commitPendingItem]; |
| 575 [other_session_controller | 570 [other_session_controller |
| 576 addPendingItem:GURL("http://www.url.com/1") | 571 addPendingItem:GURL("http://www.url.com/1") |
| 577 referrer:web::Referrer() | 572 referrer:web::Referrer() |
| 578 transition:ui::PAGE_TRANSITION_TYPED | 573 transition:ui::PAGE_TRANSITION_TYPED |
| (...skipping 23 matching lines...) Expand all Loading... |
| 602 [session_controller_ commitPendingItem]; | 597 [session_controller_ commitPendingItem]; |
| 603 [session_controller_ | 598 [session_controller_ |
| 604 addPendingItem:GURL("http://www.url.com/2") | 599 addPendingItem:GURL("http://www.url.com/2") |
| 605 referrer:web::Referrer() | 600 referrer:web::Referrer() |
| 606 transition:ui::PAGE_TRANSITION_TYPED | 601 transition:ui::PAGE_TRANSITION_TYPED |
| 607 initiationType:web::NavigationInitiationType::USER_INITIATED]; | 602 initiationType:web::NavigationInitiationType::USER_INITIATED]; |
| 608 [session_controller_ commitPendingItem]; | 603 [session_controller_ commitPendingItem]; |
| 609 | 604 |
| 610 // Create source session controller with 1 committed item. | 605 // Create source session controller with 1 committed item. |
| 611 base::scoped_nsobject<CRWSessionController> other_session_controller( | 606 base::scoped_nsobject<CRWSessionController> other_session_controller( |
| 612 [[CRWSessionController alloc] initWithBrowserState:&browser_state_ | 607 [[CRWSessionController alloc] initWithBrowserState:&browser_state_]); |
| 613 openedByDOM:NO]); | |
| 614 [other_session_controller | 608 [other_session_controller |
| 615 addPendingItem:GURL("http://www.url.com/0") | 609 addPendingItem:GURL("http://www.url.com/0") |
| 616 referrer:web::Referrer() | 610 referrer:web::Referrer() |
| 617 transition:ui::PAGE_TRANSITION_TYPED | 611 transition:ui::PAGE_TRANSITION_TYPED |
| 618 initiationType:web::NavigationInitiationType::USER_INITIATED]; | 612 initiationType:web::NavigationInitiationType::USER_INITIATED]; |
| 619 [other_session_controller commitPendingItem]; | 613 [other_session_controller commitPendingItem]; |
| 620 [other_session_controller | 614 [other_session_controller |
| 621 addPendingItem:GURL("http://www.url.com/1") | 615 addPendingItem:GURL("http://www.url.com/1") |
| 622 referrer:web::Referrer() | 616 referrer:web::Referrer() |
| 623 transition:ui::PAGE_TRANSITION_TYPED | 617 transition:ui::PAGE_TRANSITION_TYPED |
| (...skipping 29 matching lines...) Expand all Loading... |
| 653 GURL second_url = GURL("http://www.url.com/2"); | 647 GURL second_url = GURL("http://www.url.com/2"); |
| 654 [session_controller_ | 648 [session_controller_ |
| 655 addPendingItem:second_url | 649 addPendingItem:second_url |
| 656 referrer:web::Referrer() | 650 referrer:web::Referrer() |
| 657 transition:ui::PAGE_TRANSITION_TYPED | 651 transition:ui::PAGE_TRANSITION_TYPED |
| 658 initiationType:web::NavigationInitiationType::USER_INITIATED]; | 652 initiationType:web::NavigationInitiationType::USER_INITIATED]; |
| 659 [session_controller_ addTransientItemWithURL:second_url]; | 653 [session_controller_ addTransientItemWithURL:second_url]; |
| 660 | 654 |
| 661 // Create source session controller with 1 committed item. | 655 // Create source session controller with 1 committed item. |
| 662 base::scoped_nsobject<CRWSessionController> other_session_controller( | 656 base::scoped_nsobject<CRWSessionController> other_session_controller( |
| 663 [[CRWSessionController alloc] initWithBrowserState:&browser_state_ | 657 [[CRWSessionController alloc] initWithBrowserState:&browser_state_]); |
| 664 openedByDOM:NO]); | |
| 665 [other_session_controller | 658 [other_session_controller |
| 666 addPendingItem:GURL("http://www.url.com/0") | 659 addPendingItem:GURL("http://www.url.com/0") |
| 667 referrer:web::Referrer() | 660 referrer:web::Referrer() |
| 668 transition:ui::PAGE_TRANSITION_TYPED | 661 transition:ui::PAGE_TRANSITION_TYPED |
| 669 initiationType:web::NavigationInitiationType::USER_INITIATED]; | 662 initiationType:web::NavigationInitiationType::USER_INITIATED]; |
| 670 [other_session_controller commitPendingItem]; | 663 [other_session_controller commitPendingItem]; |
| 671 [other_session_controller | 664 [other_session_controller |
| 672 addPendingItem:GURL("http://www.url.com/1") | 665 addPendingItem:GURL("http://www.url.com/1") |
| 673 referrer:web::Referrer() | 666 referrer:web::Referrer() |
| 674 transition:ui::PAGE_TRANSITION_TYPED | 667 transition:ui::PAGE_TRANSITION_TYPED |
| (...skipping 477 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1152 [session_controller_ | 1145 [session_controller_ |
| 1153 addPendingItem:GURL("http://www.example.com/0") | 1146 addPendingItem:GURL("http://www.example.com/0") |
| 1154 referrer:MakeReferrer("http://www.example.com/b") | 1147 referrer:MakeReferrer("http://www.example.com/b") |
| 1155 transition:ui::PAGE_TRANSITION_CLIENT_REDIRECT | 1148 transition:ui::PAGE_TRANSITION_CLIENT_REDIRECT |
| 1156 initiationType:web::NavigationInitiationType::RENDERER_INITIATED]; | 1149 initiationType:web::NavigationInitiationType::RENDERER_INITIATED]; |
| 1157 [session_controller_ commitPendingItem]; | 1150 [session_controller_ commitPendingItem]; |
| 1158 EXPECT_EQ(0U, [session_controller_ backwardItems].size()); | 1151 EXPECT_EQ(0U, [session_controller_ backwardItems].size()); |
| 1159 } | 1152 } |
| 1160 | 1153 |
| 1161 } // anonymous namespace | 1154 } // anonymous namespace |
| OLD | NEW |