Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(28)

Side by Side Diff: ios/web/navigation/crw_session_controller_unittest.mm

Issue 2745873002: Created NavigationManager::CopyStateFromAndPrune(). (Closed)
Patch Set: comment fix Created 3 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698