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

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

Issue 2488553004: Revert of [ios] Refactored back-forward navigation in CRWSessionController. (Closed)
Patch Set: Created 4 years, 1 month 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
« no previous file with comments | « ios/web/navigation/crw_session_controller.mm ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 356 matching lines...) Expand 10 before | Expand all | Expand 10 after
367 367
368 EXPECT_EQ(1U, [[session_controller_ entries] count]); 368 EXPECT_EQ(1U, [[session_controller_ entries] count]);
369 EXPECT_EQ( 369 EXPECT_EQ(
370 GURL("http://www.url.com/"), 370 GURL("http://www.url.com/"),
371 [session_controller_ URLForSessionAtIndex:0U]); 371 [session_controller_ URLForSessionAtIndex:0U]);
372 EXPECT_EQ( 372 EXPECT_EQ(
373 [[session_controller_ entries] objectAtIndex:0U], 373 [[session_controller_ entries] objectAtIndex:0U],
374 [session_controller_ currentEntry]); 374 [session_controller_ currentEntry]);
375 } 375 }
376 376
377 // Tests going back from the second and last entry to the first one.
378 TEST_F(CRWSessionControllerTest, GoBackFromTheEnd) { 377 TEST_F(CRWSessionControllerTest, GoBackFromTheEnd) {
379 [session_controller_ 378 [session_controller_
380 addPendingEntry:GURL("http://www.url.com") 379 addPendingEntry:GURL("http://www.url.com")
381 referrer:MakeReferrer("http://www.referer.com") 380 referrer:MakeReferrer("http://www.referer.com")
382 transition:ui::PAGE_TRANSITION_TYPED 381 transition:ui::PAGE_TRANSITION_TYPED
383 rendererInitiated:NO]; 382 rendererInitiated:NO];
384 [session_controller_ commitPendingEntry]; 383 [session_controller_ commitPendingEntry];
385 [session_controller_ 384 [session_controller_
386 addPendingEntry:GURL("http://www.url2.com") 385 addPendingEntry:GURL("http://www.url2.com")
387 referrer:MakeReferrer("http://www.referer.com") 386 referrer:MakeReferrer("http://www.referer.com")
388 transition:ui::PAGE_TRANSITION_TYPED 387 transition:ui::PAGE_TRANSITION_TYPED
389 rendererInitiated:NO]; 388 rendererInitiated:NO];
390 [session_controller_ commitPendingEntry]; 389 [session_controller_ commitPendingEntry];
391 390
392 [session_controller_ goBack]; 391 [session_controller_ goBack];
393 392
394 ASSERT_EQ(2U, [[session_controller_ entries] count]); 393 EXPECT_EQ(2U, [[session_controller_ entries] count]);
395 EXPECT_EQ( 394 EXPECT_EQ(
396 GURL("http://www.url.com/"), 395 GURL("http://www.url.com/"),
397 [session_controller_ URLForSessionAtIndex:0U]); 396 [session_controller_ URLForSessionAtIndex:0U]);
398 EXPECT_EQ( 397 EXPECT_EQ(
399 GURL("http://www.url2.com/"), 398 GURL("http://www.url2.com/"),
400 [session_controller_ URLForSessionAtIndex:1U]); 399 [session_controller_ URLForSessionAtIndex:1U]);
401 EXPECT_EQ( 400 EXPECT_EQ(
402 [[session_controller_ entries] objectAtIndex:0U], 401 [[session_controller_ entries] objectAtIndex:0U],
403 [session_controller_ currentEntry]); 402 [session_controller_ currentEntry]);
404 EXPECT_EQ([[session_controller_ entries] objectAtIndex:1U],
405 [session_controller_ previousEntry]);
406 } 403 }
407 404
408 // Tests going back twice from the second and last entry to the first one.
409 TEST_F(CRWSessionControllerTest, GoBackFromTheBeginning) { 405 TEST_F(CRWSessionControllerTest, GoBackFromTheBeginning) {
410 [session_controller_ 406 [session_controller_
411 addPendingEntry:GURL("http://www.url.com") 407 addPendingEntry:GURL("http://www.url.com")
412 referrer:MakeReferrer("http://www.referer.com") 408 referrer:MakeReferrer("http://www.referer.com")
413 transition:ui::PAGE_TRANSITION_TYPED 409 transition:ui::PAGE_TRANSITION_TYPED
414 rendererInitiated:NO]; 410 rendererInitiated:NO];
415 [session_controller_ commitPendingEntry]; 411 [session_controller_ commitPendingEntry];
416 [session_controller_ 412 [session_controller_
417 addPendingEntry:GURL("http://www.url2.com") 413 addPendingEntry:GURL("http://www.url2.com")
418 referrer:MakeReferrer("http://www.referer.com") 414 referrer:MakeReferrer("http://www.referer.com")
419 transition:ui::PAGE_TRANSITION_TYPED 415 transition:ui::PAGE_TRANSITION_TYPED
420 rendererInitiated:NO]; 416 rendererInitiated:NO];
421 [session_controller_ commitPendingEntry]; 417 [session_controller_ commitPendingEntry];
422 418
423 [session_controller_ goBack]; 419 [session_controller_ goBack];
424 [session_controller_ goBack]; 420 [session_controller_ goBack];
425 421
426 EXPECT_EQ(2U, [[session_controller_ entries] count]); 422 EXPECT_EQ(2U, [[session_controller_ entries] count]);
427 EXPECT_EQ( 423 EXPECT_EQ(
428 GURL("http://www.url.com/"), 424 GURL("http://www.url.com/"),
429 [session_controller_ URLForSessionAtIndex:0U]); 425 [session_controller_ URLForSessionAtIndex:0U]);
430 EXPECT_EQ( 426 EXPECT_EQ(
431 GURL("http://www.url2.com/"), 427 GURL("http://www.url2.com/"),
432 [session_controller_ URLForSessionAtIndex:1U]); 428 [session_controller_ URLForSessionAtIndex:1U]);
433 EXPECT_EQ( 429 EXPECT_EQ(
434 [[session_controller_ entries] objectAtIndex:0U], 430 [[session_controller_ entries] objectAtIndex:0U],
435 [session_controller_ currentEntry]); 431 [session_controller_ currentEntry]);
436 EXPECT_EQ([[session_controller_ entries] objectAtIndex:1U],
437 [session_controller_ previousEntry]);
438 } 432 }
439 433
440 TEST_F(CRWSessionControllerTest, GoBackFromTheMiddle) { 434 TEST_F(CRWSessionControllerTest, GoBackFromTheMiddle) {
441 [session_controller_ 435 [session_controller_
442 addPendingEntry:GURL("http://www.url.com") 436 addPendingEntry:GURL("http://www.url.com")
443 referrer:MakeReferrer("http://www.referer.com") 437 referrer:MakeReferrer("http://www.referer.com")
444 transition:ui::PAGE_TRANSITION_TYPED 438 transition:ui::PAGE_TRANSITION_TYPED
445 rendererInitiated:NO]; 439 rendererInitiated:NO];
446 [session_controller_ commitPendingEntry]; 440 [session_controller_ commitPendingEntry];
447 [session_controller_ 441 [session_controller_
(...skipping 27 matching lines...) Expand all
475 [session_controller_ URLForSessionAtIndex:1U]); 469 [session_controller_ URLForSessionAtIndex:1U]);
476 EXPECT_EQ( 470 EXPECT_EQ(
477 GURL("http://www.url3.com/"), 471 GURL("http://www.url3.com/"),
478 [session_controller_ URLForSessionAtIndex:2U]); 472 [session_controller_ URLForSessionAtIndex:2U]);
479 EXPECT_EQ( 473 EXPECT_EQ(
480 GURL("http://www.url4.com/"), 474 GURL("http://www.url4.com/"),
481 [session_controller_ URLForSessionAtIndex:3U]); 475 [session_controller_ URLForSessionAtIndex:3U]);
482 EXPECT_EQ( 476 EXPECT_EQ(
483 [[session_controller_ entries] objectAtIndex:1U], 477 [[session_controller_ entries] objectAtIndex:1U],
484 [session_controller_ currentEntry]); 478 [session_controller_ currentEntry]);
485 EXPECT_EQ([[session_controller_ entries] objectAtIndex:2U],
486 [session_controller_ previousEntry]);
487 } 479 }
488 480
489 TEST_F(CRWSessionControllerTest, GoBackAndRemove) { 481 TEST_F(CRWSessionControllerTest, GoBackAndRemove) {
490 [session_controller_ 482 [session_controller_
491 addPendingEntry:GURL("http://www.url.com") 483 addPendingEntry:GURL("http://www.url.com")
492 referrer:MakeReferrer("http://www.referer.com") 484 referrer:MakeReferrer("http://www.referer.com")
493 transition:ui::PAGE_TRANSITION_TYPED 485 transition:ui::PAGE_TRANSITION_TYPED
494 rendererInitiated:NO]; 486 rendererInitiated:NO];
495 [session_controller_ commitPendingEntry]; 487 [session_controller_ commitPendingEntry];
496 [session_controller_ 488 [session_controller_
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
531 523
532 [session_controller_ goForward]; 524 [session_controller_ goForward];
533 525
534 EXPECT_EQ(1U, [[session_controller_ entries] count]); 526 EXPECT_EQ(1U, [[session_controller_ entries] count]);
535 EXPECT_EQ( 527 EXPECT_EQ(
536 GURL("http://www.url.com/"), 528 GURL("http://www.url.com/"),
537 [session_controller_ URLForSessionAtIndex:0U]); 529 [session_controller_ URLForSessionAtIndex:0U]);
538 EXPECT_EQ( 530 EXPECT_EQ(
539 [[session_controller_ entries] objectAtIndex:0U], 531 [[session_controller_ entries] objectAtIndex:0U],
540 [session_controller_ currentEntry]); 532 [session_controller_ currentEntry]);
541 EXPECT_EQ([[session_controller_ entries] objectAtIndex:0U],
542 [session_controller_ currentEntry]);
543 } 533 }
544 534
545 TEST_F(CRWSessionControllerTest, GoForewardFromTheEnd) { 535 TEST_F(CRWSessionControllerTest, GoForewardFromTheEnd) {
546 [session_controller_ 536 [session_controller_
547 addPendingEntry:GURL("http://www.url.com") 537 addPendingEntry:GURL("http://www.url.com")
548 referrer:MakeReferrer("http://www.referer.com") 538 referrer:MakeReferrer("http://www.referer.com")
549 transition:ui::PAGE_TRANSITION_TYPED 539 transition:ui::PAGE_TRANSITION_TYPED
550 rendererInitiated:NO]; 540 rendererInitiated:NO];
551 [session_controller_ commitPendingEntry]; 541 [session_controller_ commitPendingEntry];
552 [session_controller_ 542 [session_controller_
553 addPendingEntry:GURL("http://www.url2.com") 543 addPendingEntry:GURL("http://www.url2.com")
554 referrer:MakeReferrer("http://www.referer.com") 544 referrer:MakeReferrer("http://www.referer.com")
555 transition:ui::PAGE_TRANSITION_TYPED 545 transition:ui::PAGE_TRANSITION_TYPED
556 rendererInitiated:NO]; 546 rendererInitiated:NO];
557 [session_controller_ commitPendingEntry]; 547 [session_controller_ commitPendingEntry];
558 548
559 [session_controller_ goForward]; 549 [session_controller_ goForward];
560 550
561 EXPECT_EQ(2U, [[session_controller_ entries] count]); 551 EXPECT_EQ(2U, [[session_controller_ entries] count]);
562 EXPECT_EQ( 552 EXPECT_EQ(
563 GURL("http://www.url.com/"), 553 GURL("http://www.url.com/"),
564 [session_controller_ URLForSessionAtIndex:0U]); 554 [session_controller_ URLForSessionAtIndex:0U]);
565 EXPECT_EQ( 555 EXPECT_EQ(
566 GURL("http://www.url2.com/"), 556 GURL("http://www.url2.com/"),
567 [session_controller_ URLForSessionAtIndex:1U]); 557 [session_controller_ URLForSessionAtIndex:1U]);
568 EXPECT_EQ( 558 EXPECT_EQ(
569 [[session_controller_ entries] objectAtIndex:1U], 559 [[session_controller_ entries] objectAtIndex:1U],
570 [session_controller_ currentEntry]); 560 [session_controller_ currentEntry]);
571 EXPECT_EQ([[session_controller_ entries] objectAtIndex:1U],
572 [session_controller_ currentEntry]);
573 } 561 }
574 562
575 TEST_F(CRWSessionControllerTest, GoForewardFromTheBeginning) { 563 TEST_F(CRWSessionControllerTest, GoForewardFromTheBeginning) {
576 [session_controller_ 564 [session_controller_
577 addPendingEntry:GURL("http://www.url.com") 565 addPendingEntry:GURL("http://www.url.com")
578 referrer:MakeReferrer("http://www.referer.com") 566 referrer:MakeReferrer("http://www.referer.com")
579 transition:ui::PAGE_TRANSITION_TYPED 567 transition:ui::PAGE_TRANSITION_TYPED
580 rendererInitiated:NO]; 568 rendererInitiated:NO];
581 [session_controller_ commitPendingEntry]; 569 [session_controller_ commitPendingEntry];
582 [session_controller_ 570 [session_controller_
583 addPendingEntry:GURL("http://www.url2.com") 571 addPendingEntry:GURL("http://www.url2.com")
584 referrer:MakeReferrer("http://www.referer.com") 572 referrer:MakeReferrer("http://www.referer.com")
585 transition:ui::PAGE_TRANSITION_TYPED 573 transition:ui::PAGE_TRANSITION_TYPED
586 rendererInitiated:NO]; 574 rendererInitiated:NO];
587 [session_controller_ commitPendingEntry]; 575 [session_controller_ commitPendingEntry];
588 576
589 [session_controller_ goBack]; 577 [session_controller_ goBack];
590 [session_controller_ goForward]; 578 [session_controller_ goForward];
591 579
592 EXPECT_EQ(2U, [[session_controller_ entries] count]); 580 EXPECT_EQ(2U, [[session_controller_ entries] count]);
593 EXPECT_EQ( 581 EXPECT_EQ(
594 GURL("http://www.url.com/"), 582 GURL("http://www.url.com/"),
595 [session_controller_ URLForSessionAtIndex:0U]); 583 [session_controller_ URLForSessionAtIndex:0U]);
596 EXPECT_EQ( 584 EXPECT_EQ(
597 GURL("http://www.url2.com/"), 585 GURL("http://www.url2.com/"),
598 [session_controller_ URLForSessionAtIndex:1U]); 586 [session_controller_ URLForSessionAtIndex:1U]);
599 EXPECT_EQ( 587 EXPECT_EQ(
600 [[session_controller_ entries] objectAtIndex:1U], 588 [[session_controller_ entries] objectAtIndex:1U],
601 [session_controller_ currentEntry]); 589 [session_controller_ currentEntry]);
602 EXPECT_EQ([[session_controller_ entries] objectAtIndex:0U],
603 [session_controller_ previousEntry]);
604 } 590 }
605 591
606 TEST_F(CRWSessionControllerTest, GoForwardFromTheMiddle) { 592 TEST_F(CRWSessionControllerTest, GoForwardFromTheMiddle) {
607 [session_controller_ 593 [session_controller_
608 addPendingEntry:GURL("http://www.url.com") 594 addPendingEntry:GURL("http://www.url.com")
609 referrer:MakeReferrer("http://www.referer.com") 595 referrer:MakeReferrer("http://www.referer.com")
610 transition:ui::PAGE_TRANSITION_TYPED 596 transition:ui::PAGE_TRANSITION_TYPED
611 rendererInitiated:NO]; 597 rendererInitiated:NO];
612 [session_controller_ commitPendingEntry]; 598 [session_controller_ commitPendingEntry];
613 [session_controller_ 599 [session_controller_
(...skipping 28 matching lines...) Expand all
642 [session_controller_ URLForSessionAtIndex:1U]); 628 [session_controller_ URLForSessionAtIndex:1U]);
643 EXPECT_EQ( 629 EXPECT_EQ(
644 GURL("http://www.url3.com/"), 630 GURL("http://www.url3.com/"),
645 [session_controller_ URLForSessionAtIndex:2U]); 631 [session_controller_ URLForSessionAtIndex:2U]);
646 EXPECT_EQ( 632 EXPECT_EQ(
647 GURL("http://www.url4.com/"), 633 GURL("http://www.url4.com/"),
648 [session_controller_ URLForSessionAtIndex:3U]); 634 [session_controller_ URLForSessionAtIndex:3U]);
649 EXPECT_EQ( 635 EXPECT_EQ(
650 [[session_controller_ entries] objectAtIndex:2U], 636 [[session_controller_ entries] objectAtIndex:2U],
651 [session_controller_ currentEntry]); 637 [session_controller_ currentEntry]);
652 EXPECT_EQ([[session_controller_ entries] objectAtIndex:1U],
653 [session_controller_ previousEntry]);
654 }
655
656 // Tests going delta, including out of range cases.
657 TEST_F(CRWSessionControllerTest, GoDelta) {
658 [session_controller_ addPendingEntry:GURL("http://www.example.com/0")
659 referrer:MakeReferrer("http://www.example.com/a")
660 transition:ui::PAGE_TRANSITION_LINK
661 rendererInitiated:NO];
662 [session_controller_ commitPendingEntry];
663 [session_controller_ addPendingEntry:GURL("http://www.example.com/redirect")
664 referrer:MakeReferrer("http://www.example.com/r")
665 transition:ui::PAGE_TRANSITION_IS_REDIRECT_MASK
666 rendererInitiated:NO];
667 [session_controller_ commitPendingEntry];
668 [session_controller_ addPendingEntry:GURL("http://www.example.com/1")
669 referrer:MakeReferrer("http://www.example.com/b")
670 transition:ui::PAGE_TRANSITION_LINK
671 rendererInitiated:NO];
672 [session_controller_ commitPendingEntry];
673 [session_controller_ addPendingEntry:GURL("http://www.example.com/2")
674 referrer:MakeReferrer("http://www.example.com/c")
675 transition:ui::PAGE_TRANSITION_LINK
676 rendererInitiated:NO];
677 [session_controller_ commitPendingEntry];
678 [session_controller_ addPendingEntry:GURL("http://www.example.com/redirect")
679 referrer:MakeReferrer("http://www.example.com/r")
680 transition:ui::PAGE_TRANSITION_IS_REDIRECT_MASK
681 rendererInitiated:NO];
682 [session_controller_ commitPendingEntry];
683 ASSERT_EQ(4, [session_controller_ currentNavigationIndex]);
684 ASSERT_EQ(3, [session_controller_ previousNavigationIndex]);
685 NSArray* entries = [session_controller_ entries];
686 ASSERT_EQ(5U, entries.count);
687
688 // Try going forward, which should not be possible.
689 EXPECT_FALSE([session_controller_ canGoDelta:1]);
690 [session_controller_ goDelta:1];
691 ASSERT_EQ(4, [session_controller_ currentNavigationIndex]);
692 ASSERT_EQ(3, [session_controller_ previousNavigationIndex]);
693
694 // Try going back 3 entries, which should not be possible as there are only 2
695 // non-redirect entries.
696 EXPECT_FALSE([session_controller_ canGoDelta:-3]);
697 [session_controller_ goDelta:-3];
698 ASSERT_EQ(4, [session_controller_ currentNavigationIndex]);
699 ASSERT_EQ(3, [session_controller_ previousNavigationIndex]);
700 [session_controller_ goToEntry:entries[4]];
701
702 // Go back 2 entries.
703 EXPECT_TRUE([session_controller_ canGoDelta:-2]);
704 [session_controller_ goDelta:-2];
705 ASSERT_EQ(1, [session_controller_ currentNavigationIndex]);
706 ASSERT_EQ(4, [session_controller_ previousNavigationIndex]);
707
708 // Try going back 1 entry which should not be possible, because back entry had
709 // redirect response.
710 EXPECT_FALSE([session_controller_ canGoDelta:-1]);
711 [session_controller_ goDelta:-1];
712 ASSERT_EQ(1, [session_controller_ currentNavigationIndex]);
713 ASSERT_EQ(4, [session_controller_ previousNavigationIndex]);
714
715 // Try going forward 3 entries which should not be possible, because there are
716 // only 2 non-redirect entries in forward entries.
717 EXPECT_FALSE([session_controller_ canGoDelta:3]);
718 [session_controller_ goDelta:3];
719 ASSERT_EQ(1, [session_controller_ currentNavigationIndex]);
720 ASSERT_EQ(4, [session_controller_ previousNavigationIndex]);
721 [session_controller_ goToEntry:entries[1]];
722
723 // Go forward 2 entries.
724 EXPECT_TRUE([session_controller_ canGoDelta:2]);
725 [session_controller_ goDelta:2];
726 ASSERT_EQ(4, [session_controller_ currentNavigationIndex]);
727 ASSERT_EQ(1, [session_controller_ previousNavigationIndex]);
728
729 // Now add a transient entry and go back 2 entries.
730 [session_controller_ addTransientEntryWithURL:GURL("http://www.example.com")];
731 EXPECT_TRUE([session_controller_ canGoDelta:-2]);
732 [session_controller_ goDelta:-2];
733 ASSERT_EQ(2, [session_controller_ currentNavigationIndex]);
734 ASSERT_EQ(4, [session_controller_ previousNavigationIndex]);
735
736 // Try going back 2 entries which should not be possible, because there is
737 // only one non-redirect back entry.
738 EXPECT_FALSE([session_controller_ canGoDelta:-2]);
739 [session_controller_ goDelta:-2];
740 ASSERT_EQ(2, [session_controller_ currentNavigationIndex]);
741 ASSERT_EQ(4, [session_controller_ previousNavigationIndex]);
742 [session_controller_ goToEntry:entries[2]];
743
744 // Go back 1 entry.
745 EXPECT_TRUE([session_controller_ canGoDelta:-1]);
746 [session_controller_ goDelta:-1];
747 ASSERT_EQ(1, [session_controller_ currentNavigationIndex]);
748 ASSERT_EQ(2, [session_controller_ previousNavigationIndex]);
749
750 // Go forward 1 entry.
751 EXPECT_TRUE([session_controller_ canGoDelta:1]);
752 [session_controller_ goDelta:1];
753 ASSERT_EQ(2, [session_controller_ currentNavigationIndex]);
754 ASSERT_EQ(1, [session_controller_ previousNavigationIndex]);
755 } 638 }
756 639
757 TEST_F(CRWSessionControllerTest, CanGoBackWithoutCommitedEntry) { 640 TEST_F(CRWSessionControllerTest, CanGoBackWithoutCommitedEntry) {
758 EXPECT_FALSE([session_controller_ canGoBack]); 641 EXPECT_FALSE([session_controller_ canGoBack]);
759 EXPECT_FALSE([session_controller_ canGoDelta:-1]);
760 } 642 }
761 643
762 // Tests that |canGoBack| returns NO if there is a transient entry, but no 644 // Tests that |canGoBack| returns NO if there is a transient entry, but no
763 // committed entries. 645 // committed entries.
764 TEST_F(CRWSessionControllerTest, CanGoBackWithTransientEntry) { 646 TEST_F(CRWSessionControllerTest, CanGoBackWithTransientEntry) {
765 [session_controller_ addTransientEntryWithURL:GURL("http://www.url.com")]; 647 [session_controller_ addTransientEntryWithURL:GURL("http://www.url.com")];
766 648
767 EXPECT_FALSE([session_controller_ canGoBack]); 649 EXPECT_FALSE([session_controller_ canGoBack]);
768 } 650 }
769 651
(...skipping 12 matching lines...) Expand all
782 664
783 TEST_F(CRWSessionControllerTest, CanGoBackWithSingleCommitedEntry) { 665 TEST_F(CRWSessionControllerTest, CanGoBackWithSingleCommitedEntry) {
784 [session_controller_ 666 [session_controller_
785 addPendingEntry:GURL("http://www.url.com") 667 addPendingEntry:GURL("http://www.url.com")
786 referrer:MakeReferrer("http://www.referer.com") 668 referrer:MakeReferrer("http://www.referer.com")
787 transition:ui::PAGE_TRANSITION_TYPED 669 transition:ui::PAGE_TRANSITION_TYPED
788 rendererInitiated:NO]; 670 rendererInitiated:NO];
789 [session_controller_ commitPendingEntry]; 671 [session_controller_ commitPendingEntry];
790 672
791 EXPECT_FALSE([session_controller_ canGoBack]); 673 EXPECT_FALSE([session_controller_ canGoBack]);
792 EXPECT_FALSE([session_controller_ canGoDelta:-1]);
793 } 674 }
794 675
795 TEST_F(CRWSessionControllerTest, CanGoBackWithMultipleCommitedEntries) { 676 TEST_F(CRWSessionControllerTest, CanGoBackWithMultipleCommitedEntries) {
796 [session_controller_ 677 [session_controller_
797 addPendingEntry:GURL("http://www.url.com") 678 addPendingEntry:GURL("http://www.url.com")
798 referrer:MakeReferrer("http://www.referer.com") 679 referrer:MakeReferrer("http://www.referer.com")
799 transition:ui::PAGE_TRANSITION_TYPED 680 transition:ui::PAGE_TRANSITION_TYPED
800 rendererInitiated:NO]; 681 rendererInitiated:NO];
801 [session_controller_ commitPendingEntry]; 682 [session_controller_ commitPendingEntry];
802 [session_controller_ 683 [session_controller_
803 addPendingEntry:GURL("http://www.url1.com") 684 addPendingEntry:GURL("http://www.url1.com")
804 referrer:MakeReferrer("http://www.referer.com") 685 referrer:MakeReferrer("http://www.referer.com")
805 transition:ui::PAGE_TRANSITION_TYPED 686 transition:ui::PAGE_TRANSITION_TYPED
806 rendererInitiated:NO]; 687 rendererInitiated:NO];
807 [session_controller_ commitPendingEntry]; 688 [session_controller_ commitPendingEntry];
808 [session_controller_ 689 [session_controller_
809 addPendingEntry:GURL("http://www.url2.com") 690 addPendingEntry:GURL("http://www.url2.com")
810 referrer:MakeReferrer("http://www.referer.com") 691 referrer:MakeReferrer("http://www.referer.com")
811 transition:ui::PAGE_TRANSITION_TYPED 692 transition:ui::PAGE_TRANSITION_TYPED
812 rendererInitiated:NO]; 693 rendererInitiated:NO];
813 [session_controller_ commitPendingEntry]; 694 [session_controller_ commitPendingEntry];
814 695
815 EXPECT_TRUE([session_controller_ canGoBack]); 696 EXPECT_TRUE([session_controller_ canGoBack]);
816 EXPECT_TRUE([session_controller_ canGoDelta:-1]);
817 697
818 [session_controller_ goBack]; 698 [session_controller_ goBack];
819 EXPECT_TRUE([session_controller_ canGoBack]); 699 EXPECT_TRUE([session_controller_ canGoBack]);
820 EXPECT_TRUE([session_controller_ canGoDelta:-1]);
821 700
822 [session_controller_ goBack]; 701 [session_controller_ goBack];
823 EXPECT_FALSE([session_controller_ canGoBack]); 702 EXPECT_FALSE([session_controller_ canGoBack]);
824 EXPECT_FALSE([session_controller_ canGoDelta:-1]);
825 703
826 [session_controller_ goBack]; 704 [session_controller_ goBack];
827 EXPECT_FALSE([session_controller_ canGoBack]); 705 EXPECT_FALSE([session_controller_ canGoBack]);
828 EXPECT_FALSE([session_controller_ canGoDelta:-1]);
829 706
830 [session_controller_ goForward]; 707 [session_controller_ goForward];
831 EXPECT_TRUE([session_controller_ canGoBack]); 708 EXPECT_TRUE([session_controller_ canGoBack]);
832 EXPECT_TRUE([session_controller_ canGoDelta:-1]);
833 }
834
835 // Tests that going forward is not possible if there is a pending entry.
836 TEST_F(CRWSessionControllerTest, CanGoForwardWithPendingEntry) {
837 [session_controller_ addPendingEntry:GURL("http://www.url.com")
838 referrer:MakeReferrer("http://www.referer.com")
839 transition:ui::PAGE_TRANSITION_TYPED
840 rendererInitiated:NO];
841 [session_controller_ commitPendingEntry];
842 [session_controller_ addPendingEntry:GURL("http://www.url1.com")
843 referrer:MakeReferrer("http://www.referer.com")
844 transition:ui::PAGE_TRANSITION_TYPED
845 rendererInitiated:NO];
846 [session_controller_ commitPendingEntry];
847 [session_controller_ goBack];
848 [session_controller_ addPendingEntry:GURL("http://www.url2.com")
849 referrer:MakeReferrer("http://www.referer.com")
850 transition:ui::PAGE_TRANSITION_TYPED
851 rendererInitiated:NO];
852
853 // Pending entry should not allow going forward.
854 EXPECT_FALSE([session_controller_ canGoForward]);
855 EXPECT_FALSE([session_controller_ canGoDelta:1]);
856 } 709 }
857 710
858 TEST_F(CRWSessionControllerTest, CanGoForwardWithoutCommitedEntry) { 711 TEST_F(CRWSessionControllerTest, CanGoForwardWithoutCommitedEntry) {
859 EXPECT_FALSE([session_controller_ canGoForward]); 712 EXPECT_FALSE([session_controller_ canGoForward]);
860 EXPECT_FALSE([session_controller_ canGoDelta:1]);
861 } 713 }
862 714
863 TEST_F(CRWSessionControllerTest, CanGoForwardWithSingleCommitedEntry) { 715 TEST_F(CRWSessionControllerTest, CanGoForwardWithSingleCommitedEntry) {
864 [session_controller_ 716 [session_controller_
865 addPendingEntry:GURL("http://www.url.com") 717 addPendingEntry:GURL("http://www.url.com")
866 referrer:MakeReferrer("http://www.referer.com") 718 referrer:MakeReferrer("http://www.referer.com")
867 transition:ui::PAGE_TRANSITION_TYPED 719 transition:ui::PAGE_TRANSITION_TYPED
868 rendererInitiated:NO]; 720 rendererInitiated:NO];
869 [session_controller_ commitPendingEntry]; 721 [session_controller_ commitPendingEntry];
870 722
871 EXPECT_FALSE([session_controller_ canGoForward]); 723 EXPECT_FALSE([session_controller_ canGoForward]);
872 EXPECT_FALSE([session_controller_ canGoDelta:1]);
873 } 724 }
874 725
875 TEST_F(CRWSessionControllerTest, CanGoForwardWithMultipleCommitedEntries) { 726 TEST_F(CRWSessionControllerTest, CanGoForwardWithMultipleCommitedEntries) {
876 [session_controller_ 727 [session_controller_
877 addPendingEntry:GURL("http://www.url.com") 728 addPendingEntry:GURL("http://www.url.com")
878 referrer:MakeReferrer("http://www.referer.com") 729 referrer:MakeReferrer("http://www.referer.com")
879 transition:ui::PAGE_TRANSITION_TYPED 730 transition:ui::PAGE_TRANSITION_TYPED
880 rendererInitiated:NO]; 731 rendererInitiated:NO];
881 [session_controller_ commitPendingEntry]; 732 [session_controller_ commitPendingEntry];
882 [session_controller_ 733 [session_controller_
883 addPendingEntry:GURL("http://www.url1.com") 734 addPendingEntry:GURL("http://www.url1.com")
884 referrer:MakeReferrer("http://www.referer.com") 735 referrer:MakeReferrer("http://www.referer.com")
885 transition:ui::PAGE_TRANSITION_TYPED 736 transition:ui::PAGE_TRANSITION_TYPED
886 rendererInitiated:NO]; 737 rendererInitiated:NO];
887 [session_controller_ commitPendingEntry]; 738 [session_controller_ commitPendingEntry];
888 [session_controller_ 739 [session_controller_
889 addPendingEntry:GURL("http://www.url2.com") 740 addPendingEntry:GURL("http://www.url2.com")
890 referrer:MakeReferrer("http://www.referer.com") 741 referrer:MakeReferrer("http://www.referer.com")
891 transition:ui::PAGE_TRANSITION_TYPED 742 transition:ui::PAGE_TRANSITION_TYPED
892 rendererInitiated:NO]; 743 rendererInitiated:NO];
893 [session_controller_ commitPendingEntry]; 744 [session_controller_ commitPendingEntry];
894 745
895 EXPECT_FALSE([session_controller_ canGoForward]); 746 EXPECT_FALSE([session_controller_ canGoForward]);
896 EXPECT_FALSE([session_controller_ canGoDelta:1]);
897 747
898 [session_controller_ goBack]; 748 [session_controller_ goBack];
899 EXPECT_TRUE([session_controller_ canGoForward]); 749 EXPECT_TRUE([session_controller_ canGoForward]);
900 EXPECT_TRUE([session_controller_ canGoDelta:1]);
901 750
902 [session_controller_ goBack]; 751 [session_controller_ goBack];
903 EXPECT_TRUE([session_controller_ canGoForward]); 752 EXPECT_TRUE([session_controller_ canGoForward]);
904 EXPECT_TRUE([session_controller_ canGoDelta:1]);
905 753
906 [session_controller_ goForward]; 754 [session_controller_ goForward];
907 EXPECT_TRUE([session_controller_ canGoForward]); 755 EXPECT_TRUE([session_controller_ canGoForward]);
908 EXPECT_TRUE([session_controller_ canGoDelta:1]);
909 756
910 [session_controller_ goForward]; 757 [session_controller_ goForward];
911 EXPECT_FALSE([session_controller_ canGoForward]); 758 EXPECT_FALSE([session_controller_ canGoForward]);
912 EXPECT_FALSE([session_controller_ canGoDelta:1]);
913 } 759 }
914 760
915 // Helper to create a NavigationItem. Caller is responsible for freeing 761 // Helper to create a NavigationItem. Caller is responsible for freeing
916 // the memory. 762 // the memory.
917 web::NavigationItem* CreateNavigationItem(const std::string& url, 763 web::NavigationItem* CreateNavigationItem(const std::string& url,
918 const std::string& referrer, 764 const std::string& referrer,
919 NSString* title) { 765 NSString* title) {
920 web::Referrer referrer_object(GURL(referrer), 766 web::Referrer referrer_object(GURL(referrer),
921 web::ReferrerPolicyDefault); 767 web::ReferrerPolicyDefault);
922 web::NavigationItemImpl* navigation_item = new web::NavigationItemImpl(); 768 web::NavigationItemImpl* navigation_item = new web::NavigationItemImpl();
(...skipping 278 matching lines...) Expand 10 before | Expand all | Expand 10 after
1201 EXPECT_EQ(1, session_controller_.get().currentNavigationIndex); 1047 EXPECT_EQ(1, session_controller_.get().currentNavigationIndex);
1202 1048
1203 // Remove an entry and attempt to go it. Ensure it outlives the removal. 1049 // Remove an entry and attempt to go it. Ensure it outlives the removal.
1204 base::scoped_nsobject<CRWSessionEntry> entry3( 1050 base::scoped_nsobject<CRWSessionEntry> entry3(
1205 [[session_controller_.get().entries objectAtIndex:3] retain]); 1051 [[session_controller_.get().entries objectAtIndex:3] retain]);
1206 [session_controller_ removeEntryAtIndex:3]; 1052 [session_controller_ removeEntryAtIndex:3];
1207 [session_controller_ goToEntry:entry3]; 1053 [session_controller_ goToEntry:entry3];
1208 EXPECT_EQ(1, session_controller_.get().currentNavigationIndex); 1054 EXPECT_EQ(1, session_controller_.get().currentNavigationIndex);
1209 } 1055 }
1210 1056
1211 // Tests -[CRWSessionController indexOfEntryForDelta:] API for positive,
1212 // negative and zero delta. Tested session controller will have redirect entries
1213 // to make sure they are appropriately skipped.
1214 TEST_F(CRWSessionControllerTest, IndexOfEntryForDelta) {
1215 [session_controller_ addPendingEntry:GURL("http://www.example.com/0")
1216 referrer:MakeReferrer("http://www.example.com/a")
1217 transition:ui::PAGE_TRANSITION_LINK
1218 rendererInitiated:NO];
1219 [session_controller_ commitPendingEntry];
1220 [session_controller_ addPendingEntry:GURL("http://www.example.com/redirect")
1221 referrer:MakeReferrer("http://www.example.com/r")
1222 transition:ui::PAGE_TRANSITION_IS_REDIRECT_MASK
1223 rendererInitiated:NO];
1224 [session_controller_ commitPendingEntry];
1225 [session_controller_ addPendingEntry:GURL("http://www.example.com/1")
1226 referrer:MakeReferrer("http://www.example.com/b")
1227 transition:ui::PAGE_TRANSITION_LINK
1228 rendererInitiated:NO];
1229 [session_controller_ commitPendingEntry];
1230 [session_controller_ addPendingEntry:GURL("http://www.example.com/2")
1231 referrer:MakeReferrer("http://www.example.com/c")
1232 transition:ui::PAGE_TRANSITION_LINK
1233 rendererInitiated:NO];
1234 [session_controller_ commitPendingEntry];
1235 [session_controller_ addPendingEntry:GURL("http://www.example.com/redirect")
1236 referrer:MakeReferrer("http://www.example.com/r")
1237 transition:ui::PAGE_TRANSITION_IS_REDIRECT_MASK
1238 rendererInitiated:NO];
1239 [session_controller_ commitPendingEntry];
1240 ASSERT_EQ(4, [session_controller_ currentNavigationIndex]);
1241 ASSERT_EQ(5U, [[session_controller_ entries] count]);
1242
1243 // Go to entry at index 1 and test API from that state.
1244 NSArray* entries = [session_controller_ entries];
1245 [session_controller_ goToEntry:entries[1]];
1246 ASSERT_EQ(1, [session_controller_ currentNavigationIndex]);
1247 EXPECT_EQ(-1, [session_controller_ indexOfEntryForDelta:-1]);
1248 EXPECT_EQ(-2, [session_controller_ indexOfEntryForDelta:-2]);
1249 EXPECT_EQ(2, [session_controller_ indexOfEntryForDelta:1]);
1250 EXPECT_EQ(4, [session_controller_ indexOfEntryForDelta:2]);
1251 EXPECT_EQ(5, [session_controller_ indexOfEntryForDelta:3]);
1252
1253 // Go to entry at index 2 and test API from that state.
1254 [session_controller_ goToEntry:entries[2]];
1255 ASSERT_EQ(2, [session_controller_ currentNavigationIndex]);
1256 EXPECT_EQ(1, [session_controller_ indexOfEntryForDelta:-1]);
1257 EXPECT_EQ(-1, [session_controller_ indexOfEntryForDelta:-2]);
1258 EXPECT_EQ(4, [session_controller_ indexOfEntryForDelta:1]);
1259 EXPECT_EQ(5, [session_controller_ indexOfEntryForDelta:2]);
1260
1261 // Go to entry at index 4 and test API from that state.
1262 [session_controller_ goToEntry:entries[4]];
1263 ASSERT_EQ(4, [session_controller_ currentNavigationIndex]);
1264 EXPECT_EQ(2, [session_controller_ indexOfEntryForDelta:-1]);
1265 EXPECT_EQ(1, [session_controller_ indexOfEntryForDelta:-2]);
1266 EXPECT_EQ(5, [session_controller_ indexOfEntryForDelta:1]);
1267 EXPECT_EQ(6, [session_controller_ indexOfEntryForDelta:2]);
1268
1269 // Now try with existing transient entry.
1270 [session_controller_ addTransientEntryWithURL:GURL("http://www.example.com")];
1271 ASSERT_EQ(5U, [[session_controller_ entries] count]);
1272 ASSERT_EQ(4, [session_controller_ currentNavigationIndex]);
1273 EXPECT_EQ(4, [session_controller_ indexOfEntryForDelta:-1]);
1274 EXPECT_EQ(2, [session_controller_ indexOfEntryForDelta:-2]);
1275 EXPECT_EQ(1, [session_controller_ indexOfEntryForDelta:-3]);
1276 EXPECT_EQ(5, [session_controller_ indexOfEntryForDelta:1]);
1277 EXPECT_EQ(6, [session_controller_ indexOfEntryForDelta:2]);
1278 }
1279
1280 } // anonymous namespace 1057 } // anonymous namespace
OLDNEW
« no previous file with comments | « ios/web/navigation/crw_session_controller.mm ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698