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

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

Issue 2745873002: Created NavigationManager::CopyStateFromAndPrune(). (Closed)
Patch Set: Added no-op tests, addressed Eugene's comments 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 455 matching lines...) Expand 10 before | Expand all | Expand 10 after
466 [session_controller_ commitPendingItem]; 466 [session_controller_ commitPendingItem];
467 467
468 EXPECT_EQ(1U, [session_controller_ items].size()); 468 EXPECT_EQ(1U, [session_controller_ items].size());
469 EXPECT_EQ(GURL("http://www.url.com/"), 469 EXPECT_EQ(GURL("http://www.url.com/"),
470 [session_controller_ URLForItemAtIndex:0U]); 470 [session_controller_ URLForItemAtIndex:0U]);
471 EXPECT_EQ([session_controller_ items].front().get(), 471 EXPECT_EQ([session_controller_ items].front().get(),
472 [session_controller_ currentItem]); 472 [session_controller_ currentItem]);
473 } 473 }
474 474
475 // Tests inserting session controller state. 475 // Tests inserting session controller state.
476 TEST_F(CRWSessionControllerTest, InsertState) { 476 TEST_F(CRWSessionControllerTest, CopyState) {
477 // Add 1 committed and 1 pending item to target controller. 477 // Add 1 committed and 1 pending item to target controller.
478 [session_controller_ 478 [session_controller_
479 addPendingItem:GURL("http://www.url.com/2") 479 addPendingItem:GURL("http://www.url.com/2")
480 referrer:web::Referrer() 480 referrer:web::Referrer()
481 transition:ui::PAGE_TRANSITION_TYPED 481 transition:ui::PAGE_TRANSITION_TYPED
482 initiationType:web::NavigationInitiationType::USER_INITIATED]; 482 initiationType:web::NavigationInitiationType::USER_INITIATED];
483 [session_controller_ commitPendingItem]; 483 [session_controller_ commitPendingItem];
484 [session_controller_ 484 [session_controller_
485 addPendingItem:GURL("http://www.url.com/3") 485 addPendingItem:GURL("http://www.url.com/3")
486 referrer:web::Referrer() 486 referrer:web::Referrer()
(...skipping 10 matching lines...) Expand all
497 transition:ui::PAGE_TRANSITION_TYPED 497 transition:ui::PAGE_TRANSITION_TYPED
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 EXPECT_TRUE([session_controller_ canPruneAllButLastCommittedItem]);
507 [session_controller_ 508 [session_controller_
508 insertStateFromSessionController:other_session_controller.get()]; 509 copyStateFromSessionControllerAndPrune:other_session_controller.get()];
509 510
510 EXPECT_EQ(2U, [session_controller_ items].size()); 511 EXPECT_EQ(2U, [session_controller_ items].size());
511 EXPECT_EQ(1, [session_controller_ currentNavigationIndex]); 512 EXPECT_EQ(1, [session_controller_ currentNavigationIndex]);
512 EXPECT_EQ(-1, [session_controller_ previousNavigationIndex]); 513 EXPECT_EQ(-1, [session_controller_ previousNavigationIndex]);
513 EXPECT_EQ(-1, [session_controller_ pendingItemIndex]); 514 EXPECT_EQ(-1, [session_controller_ pendingItemIndex]);
514 515
515 EXPECT_EQ(GURL("http://www.url.com/0"), 516 EXPECT_EQ(GURL("http://www.url.com/0"),
516 [session_controller_ URLForItemAtIndex:0]); 517 [session_controller_ URLForItemAtIndex:0]);
517 EXPECT_EQ(GURL("http://www.url.com/2"), 518 EXPECT_EQ(GURL("http://www.url.com/2"),
518 [session_controller_ URLForItemAtIndex:1]); 519 [session_controller_ URLForItemAtIndex:1]);
519 EXPECT_EQ(GURL("http://www.url.com/3"), 520 EXPECT_EQ(GURL("http://www.url.com/3"),
520 [session_controller_ pendingItem]->GetURL()); 521 [session_controller_ pendingItem]->GetURL());
521 } 522 }
522 523
523 // Tests inserting session controller state from empty session controller. 524 // Tests inserting session controller state from empty session controller.
524 TEST_F(CRWSessionControllerTest, InsertStateFromEmptySessionController) { 525 TEST_F(CRWSessionControllerTest, CopyStateFromEmptySessionController) {
525 // Add 2 committed items to target controller. 526 // Add 2 committed items to target controller.
526 [session_controller_ 527 [session_controller_
527 addPendingItem:GURL("http://www.url.com/0") 528 addPendingItem:GURL("http://www.url.com/0")
528 referrer:web::Referrer() 529 referrer:web::Referrer()
529 transition:ui::PAGE_TRANSITION_TYPED 530 transition:ui::PAGE_TRANSITION_TYPED
530 initiationType:web::NavigationInitiationType::USER_INITIATED]; 531 initiationType:web::NavigationInitiationType::USER_INITIATED];
531 [session_controller_ commitPendingItem]; 532 [session_controller_ commitPendingItem];
532 [session_controller_ 533 [session_controller_
533 addPendingItem:GURL("http://www.url.com/1") 534 addPendingItem:GURL("http://www.url.com/1")
534 referrer:web::Referrer() 535 referrer:web::Referrer()
535 transition:ui::PAGE_TRANSITION_TYPED 536 transition:ui::PAGE_TRANSITION_TYPED
536 initiationType:web::NavigationInitiationType::USER_INITIATED]; 537 initiationType:web::NavigationInitiationType::USER_INITIATED];
537 [session_controller_ commitPendingItem]; 538 [session_controller_ commitPendingItem];
538 539
539 // Create empty source session controller. 540 // Create empty source session controller.
540 base::scoped_nsobject<CRWSessionController> other_session_controller( 541 base::scoped_nsobject<CRWSessionController> other_session_controller(
541 [[CRWSessionController alloc] initWithBrowserState:&browser_state_ 542 [[CRWSessionController alloc] initWithBrowserState:&browser_state_
542 openedByDOM:NO]); 543 openedByDOM:NO]);
543 544
544 // Insert and verify the state of target session controller. 545 // Insert and verify the state of target session controller.
546 EXPECT_TRUE([session_controller_ canPruneAllButLastCommittedItem]);
545 [session_controller_ 547 [session_controller_
546 insertStateFromSessionController:other_session_controller.get()]; 548 copyStateFromSessionControllerAndPrune:other_session_controller.get()];
547 EXPECT_EQ(2U, [session_controller_ items].size()); 549 EXPECT_EQ(2U, [session_controller_ items].size());
548 EXPECT_EQ(1, [session_controller_ currentNavigationIndex]); 550 EXPECT_EQ(1, [session_controller_ currentNavigationIndex]);
549 EXPECT_EQ(0, [session_controller_ previousNavigationIndex]); 551 EXPECT_EQ(0, [session_controller_ previousNavigationIndex]);
550 EXPECT_EQ(-1, [session_controller_ pendingItemIndex]); 552 EXPECT_EQ(-1, [session_controller_ pendingItemIndex]);
551 EXPECT_FALSE([session_controller_ pendingItem]); 553 EXPECT_FALSE([session_controller_ pendingItem]);
552 EXPECT_EQ(GURL("http://www.url.com/0"), 554 EXPECT_EQ(GURL("http://www.url.com/0"),
553 [session_controller_ URLForItemAtIndex:0]); 555 [session_controller_ URLForItemAtIndex:0]);
554 EXPECT_EQ(GURL("http://www.url.com/1"), 556 EXPECT_EQ(GURL("http://www.url.com/1"),
555 [session_controller_ URLForItemAtIndex:1]); 557 [session_controller_ URLForItemAtIndex:1]);
556 } 558 }
557 559
558 // Tests inserting session controller state to empty session controller. 560 // Tests that |-copyStateFromSessionControllerAndPrune:| is a no-op when the
559 TEST_F(CRWSessionControllerTest, InsertStateToEmptySessionController) { 561 // receiver has no last committed item.
560 // Create source session controller with 2 committed items and one 562 TEST_F(CRWSessionControllerTest, CopyStateToEmptySessionController) {
561 // pending item. 563 EXPECT_FALSE([session_controller_ canPruneAllButLastCommittedItem]);
564
565 // Create source session controller with 1 committed item.
562 base::scoped_nsobject<CRWSessionController> other_session_controller( 566 base::scoped_nsobject<CRWSessionController> other_session_controller(
563 [[CRWSessionController alloc] initWithBrowserState:&browser_state_ 567 [[CRWSessionController alloc] initWithBrowserState:&browser_state_
564 openedByDOM:NO]); 568 openedByDOM:NO]);
565 [other_session_controller 569 [other_session_controller
566 addPendingItem:GURL("http://www.url.com/0") 570 addPendingItem:GURL("http://www.url.com/0")
567 referrer:web::Referrer() 571 referrer:web::Referrer()
568 transition:ui::PAGE_TRANSITION_TYPED 572 transition:ui::PAGE_TRANSITION_TYPED
569 initiationType:web::NavigationInitiationType::USER_INITIATED]; 573 initiationType:web::NavigationInitiationType::USER_INITIATED];
570 [other_session_controller commitPendingItem]; 574 [other_session_controller commitPendingItem];
571 [other_session_controller 575 [other_session_controller
572 addPendingItem:GURL("http://www.url.com/1") 576 addPendingItem:GURL("http://www.url.com/1")
573 referrer:web::Referrer() 577 referrer:web::Referrer()
574 transition:ui::PAGE_TRANSITION_TYPED 578 transition:ui::PAGE_TRANSITION_TYPED
575 initiationType:web::NavigationInitiationType::USER_INITIATED]; 579 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 580
583 // Insert and verify the state of target session controller. 581 // Attempt to copy |other_session_controller|'s state and verify that
582 // |session_controller_| is unchanged.
584 [session_controller_ 583 [session_controller_
585 insertStateFromSessionController:other_session_controller.get()]; 584 copyStateFromSessionControllerAndPrune:other_session_controller];
586 585 EXPECT_TRUE([session_controller_ items].empty());
587 EXPECT_EQ(2U, [session_controller_ items].size()); 586 EXPECT_EQ(-1, [session_controller_ currentNavigationIndex]);
588 EXPECT_EQ(1, [session_controller_ currentNavigationIndex]);
589 EXPECT_EQ(-1, [session_controller_ previousNavigationIndex]); 587 EXPECT_EQ(-1, [session_controller_ previousNavigationIndex]);
588 EXPECT_FALSE([session_controller_ currentItem]);
589 EXPECT_FALSE([session_controller_ pendingItem]);
590 EXPECT_EQ(-1, [session_controller_ pendingItemIndex]); 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 } 591 }
597 592
598 // Tests inserting session controller state. Verifies that pending item index 593 // Tests that |-copyStateFromSessionControllerAndPrune:| is a no-op during a
599 // remains valid. 594 // pending history navigation.
600 TEST_F(CRWSessionControllerTest, 595 TEST_F(CRWSessionControllerTest, CopyStateDuringPendingHistoryNavigation) {
601 InsertStateWithPendingItemIndexInTargetController) { 596 // Add 1 committed and 1 pending item to target controller.
602 // Add 2 committed items and make the first item pending. 597 [session_controller_
598 addPendingItem:GURL("http://www.url.com/1")
599 referrer:web::Referrer()
600 transition:ui::PAGE_TRANSITION_TYPED
601 initiationType:web::NavigationInitiationType::USER_INITIATED];
602 [session_controller_ commitPendingItem];
603 [session_controller_ 603 [session_controller_
604 addPendingItem:GURL("http://www.url.com/2") 604 addPendingItem:GURL("http://www.url.com/2")
605 referrer:web::Referrer() 605 referrer:web::Referrer()
606 transition:ui::PAGE_TRANSITION_TYPED 606 transition:ui::PAGE_TRANSITION_TYPED
607 initiationType:web::NavigationInitiationType::USER_INITIATED]; 607 initiationType:web::NavigationInitiationType::USER_INITIATED];
608 [session_controller_ commitPendingItem]; 608 [session_controller_ commitPendingItem];
609
610 // Create source session controller with 1 committed item.
611 base::scoped_nsobject<CRWSessionController> other_session_controller(
612 [[CRWSessionController alloc] initWithBrowserState:&browser_state_
613 openedByDOM:NO]);
614 [other_session_controller
615 addPendingItem:GURL("http://www.url.com/0")
616 referrer:web::Referrer()
617 transition:ui::PAGE_TRANSITION_TYPED
618 initiationType:web::NavigationInitiationType::USER_INITIATED];
619 [other_session_controller commitPendingItem];
620 [other_session_controller
621 addPendingItem:GURL("http://www.url.com/1")
622 referrer:web::Referrer()
623 transition:ui::PAGE_TRANSITION_TYPED
624 initiationType:web::NavigationInitiationType::USER_INITIATED];
625
626 // Set the pending item index to the first item.
627 [session_controller_ setPendingItemIndex:0];
628 EXPECT_FALSE([session_controller_ canPruneAllButLastCommittedItem]);
629
630 // Attempt to copy |other_session_controller|'s state and verify that
631 // |session_controller_| is unchanged.
609 [session_controller_ 632 [session_controller_
610 addPendingItem:GURL("http://www.url.com/3") 633 copyStateFromSessionControllerAndPrune:other_session_controller];
634 EXPECT_EQ(2U, [session_controller_ items].size());
635 EXPECT_EQ(1, [session_controller_ currentNavigationIndex]);
636 EXPECT_EQ(0, [session_controller_ previousNavigationIndex]);
637 EXPECT_EQ(0, [session_controller_ pendingItemIndex]);
638 EXPECT_TRUE([session_controller_ pendingItem]);
639 EXPECT_EQ([session_controller_ previousItem],
640 [session_controller_ pendingItem]);
641 }
642
643 // Tests that |-copyStateFromSessionControllerAndPrune:| is a when a transient
644 // NavigationItem exists.
645 TEST_F(CRWSessionControllerTest, CopyStateWithTransientItem) {
646 // Add 1 committed and 1 pending item to target controller.
647 [session_controller_
648 addPendingItem:GURL("http://www.url.com/1")
611 referrer:web::Referrer() 649 referrer:web::Referrer()
612 transition:ui::PAGE_TRANSITION_TYPED 650 transition:ui::PAGE_TRANSITION_TYPED
613 initiationType:web::NavigationInitiationType::USER_INITIATED]; 651 initiationType:web::NavigationInitiationType::USER_INITIATED];
614 [session_controller_ commitPendingItem]; 652 [session_controller_ commitPendingItem];
615 [session_controller_ setPendingItemIndex:0]; 653 GURL second_url = GURL("http://www.url.com/2");
654 [session_controller_
655 addPendingItem:second_url
656 referrer:web::Referrer()
657 transition:ui::PAGE_TRANSITION_TYPED
658 initiationType:web::NavigationInitiationType::USER_INITIATED];
659 [session_controller_ addTransientItemWithURL:second_url];
616 660
617 // Create source session controller with 1 committed item. 661 // Create source session controller with 1 committed item.
618 base::scoped_nsobject<CRWSessionController> other_session_controller( 662 base::scoped_nsobject<CRWSessionController> other_session_controller(
619 [[CRWSessionController alloc] initWithBrowserState:&browser_state_ 663 [[CRWSessionController alloc] initWithBrowserState:&browser_state_
620 openedByDOM:NO]); 664 openedByDOM:NO]);
621 [other_session_controller 665 [other_session_controller
622 addPendingItem:GURL("http://www.url.com/0") 666 addPendingItem:GURL("http://www.url.com/0")
623 referrer:web::Referrer() 667 referrer:web::Referrer()
624 transition:ui::PAGE_TRANSITION_TYPED 668 transition:ui::PAGE_TRANSITION_TYPED
625 initiationType:web::NavigationInitiationType::USER_INITIATED]; 669 initiationType:web::NavigationInitiationType::USER_INITIATED];
626 [other_session_controller commitPendingItem]; 670 [other_session_controller commitPendingItem];
671 [other_session_controller
672 addPendingItem:GURL("http://www.url.com/1")
673 referrer:web::Referrer()
674 transition:ui::PAGE_TRANSITION_TYPED
675 initiationType:web::NavigationInitiationType::USER_INITIATED];
627 676
628 // Insert and verify the state of target session controller. 677 // Attempt to copy |other_session_controller|'s state and verify that
678 // |session_controller_| is unchanged.
679 EXPECT_FALSE([session_controller_ canPruneAllButLastCommittedItem]);
629 [session_controller_ 680 [session_controller_
630 insertStateFromSessionController:other_session_controller.get()]; 681 copyStateFromSessionControllerAndPrune:other_session_controller];
631 682 EXPECT_EQ(1U, [session_controller_ items].size());
632 EXPECT_EQ(3U, [session_controller_ items].size()); 683 EXPECT_EQ(0, [session_controller_ currentNavigationIndex]);
633 EXPECT_EQ(2, [session_controller_ currentNavigationIndex]);
634 EXPECT_EQ(-1, [session_controller_ previousNavigationIndex]); 684 EXPECT_EQ(-1, [session_controller_ previousNavigationIndex]);
635 EXPECT_EQ(1, [session_controller_ pendingItemIndex]); 685 EXPECT_EQ(-1, [session_controller_ pendingItemIndex]);
636 EXPECT_EQ(GURL("http://www.url.com/0"), 686 EXPECT_TRUE([session_controller_ pendingItem]);
637 [session_controller_ URLForItemAtIndex:0]); 687 EXPECT_TRUE([session_controller_ transientItem]);
638 EXPECT_EQ(GURL("http://www.url.com/2"), 688 EXPECT_EQ([session_controller_ transientItem],
639 [session_controller_ URLForItemAtIndex:1]); 689 [session_controller_ currentItem]);
640 EXPECT_EQ(GURL("http://www.url.com/2"),
641 [session_controller_ pendingItem]->GetURL());
642 } 690 }
643 691
644 // Tests state of an empty session controller. 692 // Tests state of an empty session controller.
645 TEST_F(CRWSessionControllerTest, EmptyController) { 693 TEST_F(CRWSessionControllerTest, EmptyController) {
646 EXPECT_TRUE([session_controller_ items].empty()); 694 EXPECT_TRUE([session_controller_ items].empty());
647 EXPECT_EQ(-1, [session_controller_ currentNavigationIndex]); 695 EXPECT_EQ(-1, [session_controller_ currentNavigationIndex]);
648 EXPECT_EQ(-1, [session_controller_ previousNavigationIndex]); 696 EXPECT_EQ(-1, [session_controller_ previousNavigationIndex]);
649 EXPECT_FALSE([session_controller_ currentItem]); 697 EXPECT_FALSE([session_controller_ currentItem]);
650 EXPECT_FALSE([session_controller_ pendingItem]); 698 EXPECT_FALSE([session_controller_ pendingItem]);
651 EXPECT_EQ(-1, [session_controller_ pendingItemIndex]); 699 EXPECT_EQ(-1, [session_controller_ pendingItemIndex]);
(...skipping 452 matching lines...) Expand 10 before | Expand all | Expand 10 after
1104 [session_controller_ 1152 [session_controller_
1105 addPendingItem:GURL("http://www.example.com/0") 1153 addPendingItem:GURL("http://www.example.com/0")
1106 referrer:MakeReferrer("http://www.example.com/b") 1154 referrer:MakeReferrer("http://www.example.com/b")
1107 transition:ui::PAGE_TRANSITION_CLIENT_REDIRECT 1155 transition:ui::PAGE_TRANSITION_CLIENT_REDIRECT
1108 initiationType:web::NavigationInitiationType::RENDERER_INITIATED]; 1156 initiationType:web::NavigationInitiationType::RENDERER_INITIATED];
1109 [session_controller_ commitPendingItem]; 1157 [session_controller_ commitPendingItem];
1110 EXPECT_EQ(0U, [session_controller_ backwardItems].size()); 1158 EXPECT_EQ(0U, [session_controller_ backwardItems].size());
1111 } 1159 }
1112 1160
1113 } // anonymous namespace 1161 } // anonymous namespace
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698