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 |