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 |