| 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 487 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 498 initiationType:web::NavigationInitiationType::USER_INITIATED]; | 498 initiationType:web::NavigationInitiationType::USER_INITIATED]; |
| 499 [other_session_controller commitPendingItem]; | 499 [other_session_controller commitPendingItem]; |
| 500 [other_session_controller | 500 [other_session_controller |
| 501 addPendingItem:GURL("http://www.url.com/1") | 501 addPendingItem:GURL("http://www.url.com/1") |
| 502 referrer:web::Referrer() | 502 referrer:web::Referrer() |
| 503 transition:ui::PAGE_TRANSITION_TYPED | 503 transition:ui::PAGE_TRANSITION_TYPED |
| 504 initiationType:web::NavigationInitiationType::USER_INITIATED]; | 504 initiationType:web::NavigationInitiationType::USER_INITIATED]; |
| 505 | 505 |
| 506 // Insert and verify the state of target session controller. | 506 // Insert and verify the state of target session controller. |
| 507 [session_controller_ | 507 [session_controller_ |
| 508 insertStateFromSessionController:other_session_controller.get()]; | 508 copyStateFromSessionControllerAndPrune:other_session_controller.get()]; |
| 509 | 509 |
| 510 EXPECT_EQ(2U, [session_controller_ items].size()); | 510 EXPECT_EQ(2U, [session_controller_ items].size()); |
| 511 EXPECT_EQ(1, [session_controller_ currentNavigationIndex]); | 511 EXPECT_EQ(1, [session_controller_ currentNavigationIndex]); |
| 512 EXPECT_EQ(-1, [session_controller_ previousNavigationIndex]); | 512 EXPECT_EQ(-1, [session_controller_ previousNavigationIndex]); |
| 513 EXPECT_EQ(-1, [session_controller_ pendingItemIndex]); | 513 EXPECT_EQ(-1, [session_controller_ pendingItemIndex]); |
| 514 | 514 |
| 515 EXPECT_EQ(GURL("http://www.url.com/0"), | 515 EXPECT_EQ(GURL("http://www.url.com/0"), |
| 516 [session_controller_ URLForItemAtIndex:0]); | 516 [session_controller_ URLForItemAtIndex:0]); |
| 517 EXPECT_EQ(GURL("http://www.url.com/2"), | 517 EXPECT_EQ(GURL("http://www.url.com/2"), |
| 518 [session_controller_ URLForItemAtIndex:1]); | 518 [session_controller_ URLForItemAtIndex:1]); |
| (...skipping 17 matching lines...) Expand all Loading... |
| 536 initiationType:web::NavigationInitiationType::USER_INITIATED]; | 536 initiationType:web::NavigationInitiationType::USER_INITIATED]; |
| 537 [session_controller_ commitPendingItem]; | 537 [session_controller_ commitPendingItem]; |
| 538 | 538 |
| 539 // Create empty source session controller. | 539 // Create empty source session controller. |
| 540 base::scoped_nsobject<CRWSessionController> other_session_controller( | 540 base::scoped_nsobject<CRWSessionController> other_session_controller( |
| 541 [[CRWSessionController alloc] initWithBrowserState:&browser_state_ | 541 [[CRWSessionController alloc] initWithBrowserState:&browser_state_ |
| 542 openedByDOM:NO]); | 542 openedByDOM:NO]); |
| 543 | 543 |
| 544 // Insert and verify the state of target session controller. | 544 // Insert and verify the state of target session controller. |
| 545 [session_controller_ | 545 [session_controller_ |
| 546 insertStateFromSessionController:other_session_controller.get()]; | 546 copyStateFromSessionControllerAndPrune:other_session_controller.get()]; |
| 547 EXPECT_EQ(2U, [session_controller_ items].size()); | 547 EXPECT_EQ(2U, [session_controller_ items].size()); |
| 548 EXPECT_EQ(1, [session_controller_ currentNavigationIndex]); | 548 EXPECT_EQ(1, [session_controller_ currentNavigationIndex]); |
| 549 EXPECT_EQ(0, [session_controller_ previousNavigationIndex]); | 549 EXPECT_EQ(0, [session_controller_ previousNavigationIndex]); |
| 550 EXPECT_EQ(-1, [session_controller_ pendingItemIndex]); | 550 EXPECT_EQ(-1, [session_controller_ pendingItemIndex]); |
| 551 EXPECT_FALSE([session_controller_ pendingItem]); | 551 EXPECT_FALSE([session_controller_ pendingItem]); |
| 552 EXPECT_EQ(GURL("http://www.url.com/0"), | 552 EXPECT_EQ(GURL("http://www.url.com/0"), |
| 553 [session_controller_ URLForItemAtIndex:0]); | 553 [session_controller_ URLForItemAtIndex:0]); |
| 554 EXPECT_EQ(GURL("http://www.url.com/1"), | 554 EXPECT_EQ(GURL("http://www.url.com/1"), |
| 555 [session_controller_ URLForItemAtIndex:1]); | 555 [session_controller_ URLForItemAtIndex:1]); |
| 556 } | 556 } |
| 557 | 557 |
| 558 // Tests inserting session controller state to empty session controller. | |
| 559 TEST_F(CRWSessionControllerTest, InsertStateToEmptySessionController) { | |
| 560 // Create source session controller with 2 committed items and one | |
| 561 // pending item. | |
| 562 base::scoped_nsobject<CRWSessionController> other_session_controller( | |
| 563 [[CRWSessionController alloc] initWithBrowserState:&browser_state_ | |
| 564 openedByDOM:NO]); | |
| 565 [other_session_controller | |
| 566 addPendingItem:GURL("http://www.url.com/0") | |
| 567 referrer:web::Referrer() | |
| 568 transition:ui::PAGE_TRANSITION_TYPED | |
| 569 initiationType:web::NavigationInitiationType::USER_INITIATED]; | |
| 570 [other_session_controller commitPendingItem]; | |
| 571 [other_session_controller | |
| 572 addPendingItem:GURL("http://www.url.com/1") | |
| 573 referrer:web::Referrer() | |
| 574 transition:ui::PAGE_TRANSITION_TYPED | |
| 575 initiationType:web::NavigationInitiationType::USER_INITIATED]; | |
| 576 [other_session_controller commitPendingItem]; | |
| 577 [other_session_controller | |
| 578 addPendingItem:GURL("http://www.url.com/2") | |
| 579 referrer:web::Referrer() | |
| 580 transition:ui::PAGE_TRANSITION_TYPED | |
| 581 initiationType:web::NavigationInitiationType::USER_INITIATED]; | |
| 582 | |
| 583 // Insert and verify the state of target session controller. | |
| 584 [session_controller_ | |
| 585 insertStateFromSessionController:other_session_controller.get()]; | |
| 586 | |
| 587 EXPECT_EQ(2U, [session_controller_ items].size()); | |
| 588 EXPECT_EQ(1, [session_controller_ currentNavigationIndex]); | |
| 589 EXPECT_EQ(-1, [session_controller_ previousNavigationIndex]); | |
| 590 EXPECT_EQ(-1, [session_controller_ pendingItemIndex]); | |
| 591 EXPECT_FALSE([session_controller_ pendingItem]); | |
| 592 EXPECT_EQ(GURL("http://www.url.com/0"), | |
| 593 [session_controller_ URLForItemAtIndex:0]); | |
| 594 EXPECT_EQ(GURL("http://www.url.com/1"), | |
| 595 [session_controller_ URLForItemAtIndex:1]); | |
| 596 } | |
| 597 | |
| 598 // Tests inserting session controller state. Verifies that pending item index | |
| 599 // remains valid. | |
| 600 TEST_F(CRWSessionControllerTest, | |
| 601 InsertStateWithPendingItemIndexInTargetController) { | |
| 602 // Add 2 committed items and make the first item pending. | |
| 603 [session_controller_ | |
| 604 addPendingItem:GURL("http://www.url.com/2") | |
| 605 referrer:web::Referrer() | |
| 606 transition:ui::PAGE_TRANSITION_TYPED | |
| 607 initiationType:web::NavigationInitiationType::USER_INITIATED]; | |
| 608 [session_controller_ commitPendingItem]; | |
| 609 [session_controller_ | |
| 610 addPendingItem:GURL("http://www.url.com/3") | |
| 611 referrer:web::Referrer() | |
| 612 transition:ui::PAGE_TRANSITION_TYPED | |
| 613 initiationType:web::NavigationInitiationType::USER_INITIATED]; | |
| 614 [session_controller_ commitPendingItem]; | |
| 615 [session_controller_ setPendingItemIndex:0]; | |
| 616 | |
| 617 // Create source session controller with 1 committed item. | |
| 618 base::scoped_nsobject<CRWSessionController> other_session_controller( | |
| 619 [[CRWSessionController alloc] initWithBrowserState:&browser_state_ | |
| 620 openedByDOM:NO]); | |
| 621 [other_session_controller | |
| 622 addPendingItem:GURL("http://www.url.com/0") | |
| 623 referrer:web::Referrer() | |
| 624 transition:ui::PAGE_TRANSITION_TYPED | |
| 625 initiationType:web::NavigationInitiationType::USER_INITIATED]; | |
| 626 [other_session_controller commitPendingItem]; | |
| 627 | |
| 628 // Insert and verify the state of target session controller. | |
| 629 [session_controller_ | |
| 630 insertStateFromSessionController:other_session_controller.get()]; | |
| 631 | |
| 632 EXPECT_EQ(3U, [session_controller_ items].size()); | |
| 633 EXPECT_EQ(2, [session_controller_ currentNavigationIndex]); | |
| 634 EXPECT_EQ(-1, [session_controller_ previousNavigationIndex]); | |
| 635 EXPECT_EQ(1, [session_controller_ pendingItemIndex]); | |
| 636 EXPECT_EQ(GURL("http://www.url.com/0"), | |
| 637 [session_controller_ URLForItemAtIndex:0]); | |
| 638 EXPECT_EQ(GURL("http://www.url.com/2"), | |
| 639 [session_controller_ URLForItemAtIndex:1]); | |
| 640 EXPECT_EQ(GURL("http://www.url.com/2"), | |
| 641 [session_controller_ pendingItem]->GetURL()); | |
| 642 } | |
| 643 | |
| 644 // Tests state of an empty session controller. | 558 // Tests state of an empty session controller. |
| 645 TEST_F(CRWSessionControllerTest, EmptyController) { | 559 TEST_F(CRWSessionControllerTest, EmptyController) { |
| 646 EXPECT_TRUE([session_controller_ items].empty()); | 560 EXPECT_TRUE([session_controller_ items].empty()); |
| 647 EXPECT_EQ(-1, [session_controller_ currentNavigationIndex]); | 561 EXPECT_EQ(-1, [session_controller_ currentNavigationIndex]); |
| 648 EXPECT_EQ(-1, [session_controller_ previousNavigationIndex]); | 562 EXPECT_EQ(-1, [session_controller_ previousNavigationIndex]); |
| 649 EXPECT_FALSE([session_controller_ currentItem]); | 563 EXPECT_FALSE([session_controller_ currentItem]); |
| 650 EXPECT_FALSE([session_controller_ pendingItem]); | 564 EXPECT_FALSE([session_controller_ pendingItem]); |
| 651 EXPECT_EQ(-1, [session_controller_ pendingItemIndex]); | 565 EXPECT_EQ(-1, [session_controller_ pendingItemIndex]); |
| 652 } | 566 } |
| 653 | 567 |
| (...skipping 450 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1104 [session_controller_ | 1018 [session_controller_ |
| 1105 addPendingItem:GURL("http://www.example.com/0") | 1019 addPendingItem:GURL("http://www.example.com/0") |
| 1106 referrer:MakeReferrer("http://www.example.com/b") | 1020 referrer:MakeReferrer("http://www.example.com/b") |
| 1107 transition:ui::PAGE_TRANSITION_CLIENT_REDIRECT | 1021 transition:ui::PAGE_TRANSITION_CLIENT_REDIRECT |
| 1108 initiationType:web::NavigationInitiationType::RENDERER_INITIATED]; | 1022 initiationType:web::NavigationInitiationType::RENDERER_INITIATED]; |
| 1109 [session_controller_ commitPendingItem]; | 1023 [session_controller_ commitPendingItem]; |
| 1110 EXPECT_EQ(0U, [session_controller_ backwardItems].size()); | 1024 EXPECT_EQ(0U, [session_controller_ backwardItems].size()); |
| 1111 } | 1025 } |
| 1112 | 1026 |
| 1113 } // anonymous namespace | 1027 } // anonymous namespace |
| OLD | NEW |