OLD | NEW |
---|---|
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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/navigation_manager_impl.h" | 5 #import "ios/web/navigation/navigation_manager_impl.h" |
6 | 6 |
7 #include "base/logging.h" | 7 #include "base/logging.h" |
8 #import "base/mac/scoped_nsobject.h" | 8 #import "base/mac/scoped_nsobject.h" |
9 #import "ios/web/navigation/crw_session_controller+private_constructors.h" | 9 #import "ios/web/navigation/crw_session_controller+private_constructors.h" |
10 #import "ios/web/navigation/navigation_manager_delegate.h" | 10 #import "ios/web/navigation/navigation_manager_delegate.h" |
(...skipping 497 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
508 // current index is 0). | 508 // current index is 0). |
509 [session_controller() goToItemAtIndex:0]; | 509 [session_controller() goToItemAtIndex:0]; |
510 [session_controller() setPendingItemIndex:1]; | 510 [session_controller() setPendingItemIndex:1]; |
511 ASSERT_EQ(3, navigation_manager()->GetItemCount()); | 511 ASSERT_EQ(3, navigation_manager()->GetItemCount()); |
512 ASSERT_EQ(0, navigation_manager()->GetLastCommittedItemIndex()); | 512 ASSERT_EQ(0, navigation_manager()->GetLastCommittedItemIndex()); |
513 ASSERT_EQ(1, navigation_manager()->GetPendingItemIndex()); | 513 ASSERT_EQ(1, navigation_manager()->GetPendingItemIndex()); |
514 EXPECT_EQ(2, navigation_manager()->GetIndexForOffset(1)); | 514 EXPECT_EQ(2, navigation_manager()->GetIndexForOffset(1)); |
515 EXPECT_EQ(0, navigation_manager()->GetIndexForOffset(-1)); | 515 EXPECT_EQ(0, navigation_manager()->GetIndexForOffset(-1)); |
516 } | 516 } |
517 | 517 |
518 // Tests that when given a pending item, adding a new pending item should | |
Eugene But (OOO till 7-30)
2017/04/06 22:53:17
s/should replace/replaces ?
liaoyuke
2017/04/07 15:49:08
Done.
| |
519 // replace the existing pending item if their URLs are different. | |
520 TEST_F(NavigationManagerTest, ReplacePendingItemIfDiffernetURL) { | |
521 GURL existing_url = GURL("http://www.existing.com"); | |
522 navigation_manager()->AddPendingItem( | |
523 existing_url, Referrer(), ui::PAGE_TRANSITION_TYPED, | |
524 web::NavigationInitiationType::USER_INITIATED, | |
525 web::NavigationManager::UserAgentOverrideOption::INHERIT); | |
526 ASSERT_TRUE(navigation_manager()->GetPendingItem()); | |
527 EXPECT_EQ(existing_url, navigation_manager()->GetPendingItem()->GetURL()); | |
528 | |
529 GURL new_url = GURL("http://www.new.com"); | |
530 navigation_manager()->AddPendingItem( | |
531 new_url, Referrer(), ui::PAGE_TRANSITION_TYPED, | |
532 web::NavigationInitiationType::USER_INITIATED, | |
533 web::NavigationManager::UserAgentOverrideOption::INHERIT); | |
534 ASSERT_TRUE(navigation_manager()->GetPendingItem()); | |
535 EXPECT_EQ(new_url, navigation_manager()->GetPendingItem()->GetURL()); | |
Eugene But (OOO till 7-30)
2017/04/06 22:53:17
Do you want to verify that ItemCount has changed?
liaoyuke
2017/04/07 15:49:08
Actually, ItemCount will not change because GetIte
Eugene But (OOO till 7-30)
2017/04/07 16:16:40
Verifying that count does not change seems useful.
| |
536 } | |
537 | |
538 // Tests that when given a pending item, adding a new pending item with the same | |
539 // URL should replace the existing pending item if new pending item is a form | |
540 // submission while existing pending item is not. | |
541 TEST_F(NavigationManagerTest, ReplaceSameUrlPendingItemIfFormSubmission) { | |
542 GURL existing_url = GURL("http://www.existing.com"); | |
543 navigation_manager()->AddPendingItem( | |
544 existing_url, Referrer(), ui::PAGE_TRANSITION_TYPED, | |
545 web::NavigationInitiationType::USER_INITIATED, | |
546 web::NavigationManager::UserAgentOverrideOption::INHERIT); | |
547 ASSERT_TRUE(navigation_manager()->GetPendingItem()); | |
548 EXPECT_TRUE(ui::PageTransitionCoreTypeIs( | |
549 navigation_manager()->GetPendingItem()->GetTransitionType(), | |
550 ui::PAGE_TRANSITION_TYPED)); | |
551 | |
552 // Should not replace if new transition is not a form submission. | |
553 navigation_manager()->AddPendingItem( | |
554 existing_url, Referrer(), ui::PAGE_TRANSITION_LINK, | |
555 web::NavigationInitiationType::USER_INITIATED, | |
556 web::NavigationManager::UserAgentOverrideOption::INHERIT); | |
557 ASSERT_TRUE(navigation_manager()->GetPendingItem()); | |
558 EXPECT_TRUE(ui::PageTransitionCoreTypeIs( | |
559 navigation_manager()->GetPendingItem()->GetTransitionType(), | |
560 ui::PAGE_TRANSITION_TYPED)); | |
561 | |
562 // Should replace if new transition is a form submission. | |
Eugene But (OOO till 7-30)
2017/04/06 22:53:17
This looks like a separate test from "form submiss
liaoyuke
2017/04/07 15:49:08
Done.
| |
563 navigation_manager()->AddPendingItem( | |
564 existing_url, Referrer(), ui::PAGE_TRANSITION_FORM_SUBMIT, | |
565 web::NavigationInitiationType::USER_INITIATED, | |
566 web::NavigationManager::UserAgentOverrideOption::INHERIT); | |
567 ASSERT_TRUE(navigation_manager()->GetPendingItem()); | |
568 EXPECT_TRUE(ui::PageTransitionCoreTypeIs( | |
569 navigation_manager()->GetPendingItem()->GetTransitionType(), | |
570 ui::PAGE_TRANSITION_FORM_SUBMIT)); | |
571 } | |
572 | |
573 // Tests that when given a pending item, adding a new pending item with the same | |
574 // URL should not replace the existing pending item if the user agent override | |
575 // option is INHERIT. | |
576 TEST_F(NavigationManagerTest, NotReplaceSameUrlPendingItemIfOverrideInherit) { | |
577 GURL existing_url = GURL("http://www.existing.com"); | |
578 navigation_manager()->AddPendingItem( | |
579 existing_url, Referrer(), ui::PAGE_TRANSITION_TYPED, | |
580 web::NavigationInitiationType::USER_INITIATED, | |
581 web::NavigationManager::UserAgentOverrideOption::INHERIT); | |
582 ASSERT_TRUE(navigation_manager()->GetPendingItem()); | |
583 EXPECT_TRUE(ui::PageTransitionCoreTypeIs( | |
584 navigation_manager()->GetPendingItem()->GetTransitionType(), | |
585 ui::PAGE_TRANSITION_TYPED)); | |
586 | |
587 navigation_manager()->AddPendingItem( | |
588 existing_url, Referrer(), ui::PAGE_TRANSITION_LINK, | |
589 web::NavigationInitiationType::USER_INITIATED, | |
590 web::NavigationManager::UserAgentOverrideOption::INHERIT); | |
591 | |
592 ASSERT_TRUE(navigation_manager()->GetPendingItem()); | |
593 EXPECT_TRUE(ui::PageTransitionCoreTypeIs( | |
594 navigation_manager()->GetPendingItem()->GetTransitionType(), | |
595 ui::PAGE_TRANSITION_TYPED)); | |
596 } | |
597 | |
598 // Tests that when given a pending item, adding a new pending item with the same | |
599 // URL should replace the existing pending item if the user agent override | |
600 // option is DESKTOP, and user agent type of existing item is not desktop. | |
601 TEST_F(NavigationManagerTest, ReplaceSameUrlPendingItemIfOverrideDesktop) { | |
602 GURL existing_url = GURL("http://www.existing.com"); | |
603 navigation_manager()->AddPendingItem( | |
604 existing_url, Referrer(), ui::PAGE_TRANSITION_TYPED, | |
605 web::NavigationInitiationType::USER_INITIATED, | |
606 web::NavigationManager::UserAgentOverrideOption::MOBILE); | |
607 ASSERT_TRUE(navigation_manager()->GetPendingItem()); | |
608 EXPECT_TRUE(ui::PageTransitionCoreTypeIs( | |
609 navigation_manager()->GetPendingItem()->GetTransitionType(), | |
610 ui::PAGE_TRANSITION_TYPED)); | |
611 EXPECT_NE(web::UserAgentType::DESKTOP, | |
612 navigation_manager()->GetPendingItem()->GetUserAgentType()); | |
613 | |
614 navigation_manager()->AddPendingItem( | |
615 existing_url, Referrer(), ui::PAGE_TRANSITION_LINK, | |
616 web::NavigationInitiationType::USER_INITIATED, | |
617 web::NavigationManager::UserAgentOverrideOption::DESKTOP); | |
618 | |
619 ASSERT_TRUE(navigation_manager()->GetPendingItem()); | |
620 EXPECT_TRUE(ui::PageTransitionCoreTypeIs( | |
621 navigation_manager()->GetPendingItem()->GetTransitionType(), | |
622 ui::PAGE_TRANSITION_LINK)); | |
623 } | |
624 | |
625 // Tests that when given a pending item, adding a new pending item with the same | |
626 // URL should replace the existing pending item if the user agent override | |
627 // option is MOILE. | |
628 TEST_F(NavigationManagerTest, ReplaceSameUrlPendingItemIfOverrideMobile) { | |
629 GURL existing_url = GURL("http://www.existing.com"); | |
630 navigation_manager()->AddPendingItem( | |
631 existing_url, Referrer(), ui::PAGE_TRANSITION_TYPED, | |
632 web::NavigationInitiationType::USER_INITIATED, | |
633 web::NavigationManager::UserAgentOverrideOption::DESKTOP); | |
634 ASSERT_TRUE(navigation_manager()->GetPendingItem()); | |
635 EXPECT_TRUE(ui::PageTransitionCoreTypeIs( | |
636 navigation_manager()->GetPendingItem()->GetTransitionType(), | |
637 ui::PAGE_TRANSITION_TYPED)); | |
638 EXPECT_NE(web::UserAgentType::MOBILE, | |
639 navigation_manager()->GetPendingItem()->GetUserAgentType()); | |
640 | |
641 navigation_manager()->AddPendingItem( | |
642 existing_url, Referrer(), ui::PAGE_TRANSITION_LINK, | |
643 web::NavigationInitiationType::USER_INITIATED, | |
644 web::NavigationManager::UserAgentOverrideOption::MOBILE); | |
645 | |
646 ASSERT_TRUE(navigation_manager()->GetPendingItem()); | |
647 EXPECT_TRUE(ui::PageTransitionCoreTypeIs( | |
648 navigation_manager()->GetPendingItem()->GetTransitionType(), | |
649 ui::PAGE_TRANSITION_LINK)); | |
650 } | |
651 | |
652 // Tests that when the last committed item exists, adding a pending item should | |
653 // succeed if the pending item's URL is different from the last committed item. | |
654 TEST_F(NavigationManagerTest, AddPendingItemIfDiffernetURL) { | |
655 GURL existing_url = GURL("http://www.existing.com"); | |
656 navigation_manager()->AddPendingItem( | |
657 existing_url, Referrer(), ui::PAGE_TRANSITION_TYPED, | |
658 web::NavigationInitiationType::USER_INITIATED, | |
659 web::NavigationManager::UserAgentOverrideOption::INHERIT); | |
660 [session_controller() commitPendingItem]; | |
661 ASSERT_TRUE(navigation_manager()->GetLastCommittedItem()); | |
662 EXPECT_EQ(existing_url, | |
663 navigation_manager()->GetLastCommittedItem()->GetURL()); | |
664 | |
665 GURL new_url = GURL("http://www.new.com"); | |
666 navigation_manager()->AddPendingItem( | |
667 new_url, Referrer(), ui::PAGE_TRANSITION_TYPED, | |
668 web::NavigationInitiationType::USER_INITIATED, | |
669 web::NavigationManager::UserAgentOverrideOption::INHERIT); | |
670 ASSERT_TRUE(navigation_manager()->GetPendingItem()); | |
671 EXPECT_EQ(new_url, navigation_manager()->GetPendingItem()->GetURL()); | |
672 } | |
673 | |
674 // Tests that when the last committed item exists, adding a pending item with | |
675 // the same URL should succeed if the pending item is a form submission while | |
676 // the last committed item is not. | |
677 TEST_F(NavigationManagerTest, AddSameUrlPendingItemIfFormSubmission) { | |
678 GURL existing_url = GURL("http://www.existing.com"); | |
679 navigation_manager()->AddPendingItem( | |
680 existing_url, Referrer(), ui::PAGE_TRANSITION_TYPED, | |
681 web::NavigationInitiationType::USER_INITIATED, | |
682 web::NavigationManager::UserAgentOverrideOption::INHERIT); | |
683 [session_controller() commitPendingItem]; | |
684 ASSERT_TRUE(navigation_manager()->GetLastCommittedItem()); | |
685 EXPECT_TRUE(ui::PageTransitionCoreTypeIs( | |
686 navigation_manager()->GetLastCommittedItem()->GetTransitionType(), | |
687 ui::PAGE_TRANSITION_TYPED)); | |
688 EXPECT_FALSE(navigation_manager()->GetPendingItem()); | |
689 | |
690 // Should not add if new transition is not a form submission. | |
691 navigation_manager()->AddPendingItem( | |
692 existing_url, Referrer(), ui::PAGE_TRANSITION_LINK, | |
693 web::NavigationInitiationType::USER_INITIATED, | |
694 web::NavigationManager::UserAgentOverrideOption::INHERIT); | |
695 EXPECT_FALSE(navigation_manager()->GetPendingItem()); | |
696 | |
697 // Should add if new transition is a form submission. | |
698 navigation_manager()->AddPendingItem( | |
699 existing_url, Referrer(), ui::PAGE_TRANSITION_FORM_SUBMIT, | |
700 web::NavigationInitiationType::USER_INITIATED, | |
701 web::NavigationManager::UserAgentOverrideOption::INHERIT); | |
702 ASSERT_TRUE(navigation_manager()->GetPendingItem()); | |
703 EXPECT_TRUE(ui::PageTransitionCoreTypeIs( | |
704 navigation_manager()->GetPendingItem()->GetTransitionType(), | |
705 ui::PAGE_TRANSITION_FORM_SUBMIT)); | |
706 | |
707 // Should not add if both the last committed item and the pending item are | |
Eugene But (OOO till 7-30)
2017/04/06 22:53:17
This looks like a separate test from "form submiss
liaoyuke
2017/04/07 15:49:08
Done.
| |
708 // form submissions. | |
709 navigation_manager()->DiscardNonCommittedItems(); | |
710 EXPECT_FALSE(navigation_manager()->GetPendingItem()); | |
711 ASSERT_TRUE(navigation_manager()->GetLastCommittedItem()); | |
712 navigation_manager()->GetLastCommittedItem()->SetTransitionType( | |
713 ui::PAGE_TRANSITION_FORM_SUBMIT); | |
714 EXPECT_TRUE(ui::PageTransitionCoreTypeIs( | |
715 navigation_manager()->GetLastCommittedItem()->GetTransitionType(), | |
716 ui::PAGE_TRANSITION_FORM_SUBMIT)); | |
717 | |
718 navigation_manager()->AddPendingItem( | |
719 existing_url, Referrer(), ui::PAGE_TRANSITION_FORM_SUBMIT, | |
720 web::NavigationInitiationType::USER_INITIATED, | |
721 web::NavigationManager::UserAgentOverrideOption::INHERIT); | |
722 EXPECT_FALSE(navigation_manager()->GetPendingItem()); | |
723 } | |
724 | |
725 // Tests that when the last committed item exists, adding a pending item with | |
726 // the same URL should fail if the user agent override option is INHERIT. | |
727 TEST_F(NavigationManagerTest, NotAddSameUrlPendingItemIfOverrideInherit) { | |
728 GURL existing_url = GURL("http://www.existing.com"); | |
729 navigation_manager()->AddPendingItem( | |
730 existing_url, Referrer(), ui::PAGE_TRANSITION_TYPED, | |
731 web::NavigationInitiationType::USER_INITIATED, | |
732 web::NavigationManager::UserAgentOverrideOption::INHERIT); | |
733 [session_controller() commitPendingItem]; | |
734 ASSERT_TRUE(navigation_manager()->GetLastCommittedItem()); | |
735 EXPECT_TRUE(ui::PageTransitionCoreTypeIs( | |
736 navigation_manager()->GetLastCommittedItem()->GetTransitionType(), | |
737 ui::PAGE_TRANSITION_TYPED)); | |
738 | |
739 navigation_manager()->AddPendingItem( | |
740 existing_url, Referrer(), ui::PAGE_TRANSITION_LINK, | |
741 web::NavigationInitiationType::USER_INITIATED, | |
742 web::NavigationManager::UserAgentOverrideOption::INHERIT); | |
743 | |
744 EXPECT_FALSE(navigation_manager()->GetPendingItem()); | |
745 } | |
746 | |
747 // Tests that when the last committed item exists, adding a pending item with | |
748 // the same URL should succeed if the user agent override option is DESKTOP. | |
749 TEST_F(NavigationManagerTest, AddSameUrlPendingItemIfOverrideDesktop) { | |
750 GURL existing_url = GURL("http://www.existing.com"); | |
751 navigation_manager()->AddPendingItem( | |
752 existing_url, Referrer(), ui::PAGE_TRANSITION_TYPED, | |
753 web::NavigationInitiationType::USER_INITIATED, | |
754 web::NavigationManager::UserAgentOverrideOption::MOBILE); | |
755 [session_controller() commitPendingItem]; | |
756 ASSERT_TRUE(navigation_manager()->GetLastCommittedItem()); | |
757 EXPECT_TRUE(ui::PageTransitionCoreTypeIs( | |
758 navigation_manager()->GetLastCommittedItem()->GetTransitionType(), | |
759 ui::PAGE_TRANSITION_TYPED)); | |
760 EXPECT_NE(web::UserAgentType::DESKTOP, | |
761 navigation_manager()->GetLastCommittedItem()->GetUserAgentType()); | |
762 | |
763 navigation_manager()->AddPendingItem( | |
764 existing_url, Referrer(), ui::PAGE_TRANSITION_LINK, | |
765 web::NavigationInitiationType::USER_INITIATED, | |
766 web::NavigationManager::UserAgentOverrideOption::DESKTOP); | |
767 | |
768 ASSERT_TRUE(navigation_manager()->GetPendingItem()); | |
769 EXPECT_TRUE(ui::PageTransitionCoreTypeIs( | |
770 navigation_manager()->GetPendingItem()->GetTransitionType(), | |
771 ui::PAGE_TRANSITION_LINK)); | |
772 } | |
773 | |
774 // Tests that when the last committed item exists, adding a pending item with | |
775 // the same URL should succeed if the user agent override option is MOBILE. | |
776 TEST_F(NavigationManagerTest, AddSameUrlPendingItemIfOverrideMobile) { | |
777 GURL existing_url = GURL("http://www.existing.com"); | |
778 navigation_manager()->AddPendingItem( | |
779 existing_url, Referrer(), ui::PAGE_TRANSITION_TYPED, | |
780 web::NavigationInitiationType::USER_INITIATED, | |
781 web::NavigationManager::UserAgentOverrideOption::DESKTOP); | |
782 [session_controller() commitPendingItem]; | |
783 ASSERT_TRUE(navigation_manager()->GetLastCommittedItem()); | |
784 EXPECT_TRUE(ui::PageTransitionCoreTypeIs( | |
785 navigation_manager()->GetLastCommittedItem()->GetTransitionType(), | |
786 ui::PAGE_TRANSITION_TYPED)); | |
787 EXPECT_NE(web::UserAgentType::MOBILE, | |
788 navigation_manager()->GetLastCommittedItem()->GetUserAgentType()); | |
789 | |
790 navigation_manager()->AddPendingItem( | |
791 existing_url, Referrer(), ui::PAGE_TRANSITION_LINK, | |
792 web::NavigationInitiationType::USER_INITIATED, | |
793 web::NavigationManager::UserAgentOverrideOption::MOBILE); | |
794 | |
795 ASSERT_TRUE(navigation_manager()->GetPendingItem()); | |
796 EXPECT_TRUE(ui::PageTransitionCoreTypeIs( | |
797 navigation_manager()->GetPendingItem()->GetTransitionType(), | |
798 ui::PAGE_TRANSITION_LINK)); | |
799 } | |
800 | |
518 // Tests that desktop user agent can be enforced to use for next pending item | 801 // Tests that desktop user agent can be enforced to use for next pending item |
519 // when UserAgentOverrideOption is DESKTOP. | 802 // when UserAgentOverrideOption is DESKTOP. |
520 TEST_F(NavigationManagerTest, OverrideUserAgentWithDesktop) { | 803 TEST_F(NavigationManagerTest, OverrideUserAgentWithDesktop) { |
521 navigation_manager()->AddPendingItem( | 804 navigation_manager()->AddPendingItem( |
522 GURL("http://www.1.com"), Referrer(), ui::PAGE_TRANSITION_TYPED, | 805 GURL("http://www.1.com"), Referrer(), ui::PAGE_TRANSITION_TYPED, |
523 web::NavigationInitiationType::USER_INITIATED, | 806 web::NavigationInitiationType::USER_INITIATED, |
524 web::NavigationManager::UserAgentOverrideOption::INHERIT); | 807 web::NavigationManager::UserAgentOverrideOption::INHERIT); |
525 [session_controller() commitPendingItem]; | 808 [session_controller() commitPendingItem]; |
526 NavigationItem* last_committed_item = | 809 NavigationItem* last_committed_item = |
527 navigation_manager()->GetLastCommittedItem(); | 810 navigation_manager()->GetLastCommittedItem(); |
(...skipping 388 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
916 navigation_manager()->Reload(web::ReloadType::ORIGINAL_REQUEST_URL, | 1199 navigation_manager()->Reload(web::ReloadType::ORIGINAL_REQUEST_URL, |
917 false /* check_for_repost */); | 1200 false /* check_for_repost */); |
918 EXPECT_TRUE(navigation_manager_delegate().reload_called()); | 1201 EXPECT_TRUE(navigation_manager_delegate().reload_called()); |
919 | 1202 |
920 ASSERT_TRUE(navigation_manager()->GetLastCommittedItem()); | 1203 ASSERT_TRUE(navigation_manager()->GetLastCommittedItem()); |
921 EXPECT_EQ(expected_original_url, | 1204 EXPECT_EQ(expected_original_url, |
922 navigation_manager()->GetLastCommittedItem()->GetURL()); | 1205 navigation_manager()->GetLastCommittedItem()->GetURL()); |
923 } | 1206 } |
924 | 1207 |
925 } // namespace web | 1208 } // namespace web |
OLD | NEW |