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

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

Issue 2794723002: Create new pending item if UserAgentOverrideOption is not INHERIT. (Closed)
Patch Set: Address comments Created 3 years, 8 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 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
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 replaces the
519 // 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());
536 }
537
538 // Tests that when given a pending item, adding a new pending item with the same
539 // URL doesn't replace the existing pending item if new pending item is not a
540 // form submission.
541 TEST_F(NavigationManagerTest, NotReplaceSameUrlPendingItemIfNotFormSubmission) {
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 navigation_manager()->AddPendingItem(
553 existing_url, Referrer(), ui::PAGE_TRANSITION_LINK,
554 web::NavigationInitiationType::USER_INITIATED,
555 web::NavigationManager::UserAgentOverrideOption::INHERIT);
556 ASSERT_TRUE(navigation_manager()->GetPendingItem());
557 EXPECT_TRUE(ui::PageTransitionCoreTypeIs(
558 navigation_manager()->GetPendingItem()->GetTransitionType(),
559 ui::PAGE_TRANSITION_TYPED));
560 }
561
562 // Tests that when given a pending item, adding a new pending item with the same
563 // URL replaces the existing pending item if new pending item is a form
564 // submission while existing pending item is not.
565 TEST_F(NavigationManagerTest, ReplaceSameUrlPendingItemIfFormSubmission) {
566 GURL existing_url = GURL("http://www.existing.com");
567 navigation_manager()->AddPendingItem(
568 existing_url, Referrer(), ui::PAGE_TRANSITION_TYPED,
569 web::NavigationInitiationType::USER_INITIATED,
570 web::NavigationManager::UserAgentOverrideOption::INHERIT);
571 ASSERT_TRUE(navigation_manager()->GetPendingItem());
572 EXPECT_TRUE(ui::PageTransitionCoreTypeIs(
573 navigation_manager()->GetPendingItem()->GetTransitionType(),
574 ui::PAGE_TRANSITION_TYPED));
575
576 // Doesn't replace if new transition is not a form submission.
577 navigation_manager()->AddPendingItem(
578 existing_url, Referrer(), ui::PAGE_TRANSITION_LINK,
579 web::NavigationInitiationType::USER_INITIATED,
580 web::NavigationManager::UserAgentOverrideOption::INHERIT);
581 ASSERT_TRUE(navigation_manager()->GetPendingItem());
582 EXPECT_TRUE(ui::PageTransitionCoreTypeIs(
583 navigation_manager()->GetPendingItem()->GetTransitionType(),
584 ui::PAGE_TRANSITION_TYPED));
585
586 // Replace if new transition is a form submission.
587 navigation_manager()->AddPendingItem(
588 existing_url, Referrer(), ui::PAGE_TRANSITION_FORM_SUBMIT,
589 web::NavigationInitiationType::USER_INITIATED,
590 web::NavigationManager::UserAgentOverrideOption::INHERIT);
591 ASSERT_TRUE(navigation_manager()->GetPendingItem());
592 EXPECT_TRUE(ui::PageTransitionCoreTypeIs(
593 navigation_manager()->GetPendingItem()->GetTransitionType(),
594 ui::PAGE_TRANSITION_FORM_SUBMIT));
595 }
596
597 // Tests that when given a pending item, adding a new pending item with the same
598 // URL doesn't replace the existing pending item if the user agent override
599 // option is INHERIT.
600 TEST_F(NavigationManagerTest, NotReplaceSameUrlPendingItemIfOverrideInherit) {
601 GURL existing_url = GURL("http://www.existing.com");
602 navigation_manager()->AddPendingItem(
603 existing_url, Referrer(), ui::PAGE_TRANSITION_TYPED,
604 web::NavigationInitiationType::USER_INITIATED,
605 web::NavigationManager::UserAgentOverrideOption::INHERIT);
606 ASSERT_TRUE(navigation_manager()->GetPendingItem());
607 EXPECT_TRUE(ui::PageTransitionCoreTypeIs(
608 navigation_manager()->GetPendingItem()->GetTransitionType(),
609 ui::PAGE_TRANSITION_TYPED));
610
611 navigation_manager()->AddPendingItem(
612 existing_url, Referrer(), ui::PAGE_TRANSITION_LINK,
613 web::NavigationInitiationType::USER_INITIATED,
614 web::NavigationManager::UserAgentOverrideOption::INHERIT);
615
616 ASSERT_TRUE(navigation_manager()->GetPendingItem());
617 EXPECT_TRUE(ui::PageTransitionCoreTypeIs(
618 navigation_manager()->GetPendingItem()->GetTransitionType(),
619 ui::PAGE_TRANSITION_TYPED));
620 }
621
622 // Tests that when given a pending item, adding a new pending item with the same
623 // URL replaces the existing pending item if the user agent override option is
624 // DESKTOP.
625 TEST_F(NavigationManagerTest, ReplaceSameUrlPendingItemIfOverrideDesktop) {
626 GURL existing_url = GURL("http://www.existing.com");
627 navigation_manager()->AddPendingItem(
628 existing_url, Referrer(), ui::PAGE_TRANSITION_TYPED,
629 web::NavigationInitiationType::USER_INITIATED,
630 web::NavigationManager::UserAgentOverrideOption::MOBILE);
631 ASSERT_TRUE(navigation_manager()->GetPendingItem());
632 EXPECT_TRUE(ui::PageTransitionCoreTypeIs(
633 navigation_manager()->GetPendingItem()->GetTransitionType(),
634 ui::PAGE_TRANSITION_TYPED));
635 EXPECT_EQ(web::UserAgentType::MOBILE,
636 navigation_manager()->GetPendingItem()->GetUserAgentType());
637
638 navigation_manager()->AddPendingItem(
639 existing_url, Referrer(), ui::PAGE_TRANSITION_LINK,
640 web::NavigationInitiationType::USER_INITIATED,
641 web::NavigationManager::UserAgentOverrideOption::DESKTOP);
642
643 ASSERT_TRUE(navigation_manager()->GetPendingItem());
644 EXPECT_TRUE(ui::PageTransitionCoreTypeIs(
645 navigation_manager()->GetPendingItem()->GetTransitionType(),
646 ui::PAGE_TRANSITION_LINK));
647 }
648
649 // Tests that when given a pending item, adding a new pending item with the same
650 // URL replaces the existing pending item if the user agent override option is
651 // MOBILE.
652 TEST_F(NavigationManagerTest, ReplaceSameUrlPendingItemIfOverrideMobile) {
653 GURL existing_url = GURL("http://www.existing.com");
654 navigation_manager()->AddPendingItem(
655 existing_url, Referrer(), ui::PAGE_TRANSITION_TYPED,
656 web::NavigationInitiationType::USER_INITIATED,
657 web::NavigationManager::UserAgentOverrideOption::DESKTOP);
658 ASSERT_TRUE(navigation_manager()->GetPendingItem());
659 EXPECT_TRUE(ui::PageTransitionCoreTypeIs(
660 navigation_manager()->GetPendingItem()->GetTransitionType(),
661 ui::PAGE_TRANSITION_TYPED));
662 EXPECT_EQ(web::UserAgentType::DESKTOP,
663 navigation_manager()->GetPendingItem()->GetUserAgentType());
664
665 navigation_manager()->AddPendingItem(
666 existing_url, Referrer(), ui::PAGE_TRANSITION_LINK,
667 web::NavigationInitiationType::USER_INITIATED,
668 web::NavigationManager::UserAgentOverrideOption::MOBILE);
669
670 ASSERT_TRUE(navigation_manager()->GetPendingItem());
671 EXPECT_TRUE(ui::PageTransitionCoreTypeIs(
672 navigation_manager()->GetPendingItem()->GetTransitionType(),
673 ui::PAGE_TRANSITION_LINK));
674 }
675
676 // Tests that when the last committed item exists, adding a pending item
677 // succeeds if the new item's URL is different from the last committed item.
678 TEST_F(NavigationManagerTest, AddPendingItemIfDiffernetURL) {
679 GURL existing_url = GURL("http://www.existing.com");
680 navigation_manager()->AddPendingItem(
681 existing_url, Referrer(), ui::PAGE_TRANSITION_TYPED,
682 web::NavigationInitiationType::USER_INITIATED,
683 web::NavigationManager::UserAgentOverrideOption::INHERIT);
684 [session_controller() commitPendingItem];
685 ASSERT_TRUE(navigation_manager()->GetLastCommittedItem());
686 EXPECT_EQ(existing_url,
687 navigation_manager()->GetLastCommittedItem()->GetURL());
688
689 GURL new_url = GURL("http://www.new.com");
690 navigation_manager()->AddPendingItem(
691 new_url, Referrer(), ui::PAGE_TRANSITION_TYPED,
692 web::NavigationInitiationType::USER_INITIATED,
693 web::NavigationManager::UserAgentOverrideOption::INHERIT);
694 ASSERT_TRUE(navigation_manager()->GetPendingItem());
695 EXPECT_EQ(new_url, navigation_manager()->GetPendingItem()->GetURL());
696 }
697
698 // Tests that when the last committed item exists, adding a pending item with
699 // the same URL fails if the new item is not form submission.
700 TEST_F(NavigationManagerTest, NotAddSameUrlPendingItemIfNotFormSubmission) {
701 GURL existing_url = GURL("http://www.existing.com");
702 navigation_manager()->AddPendingItem(
703 existing_url, Referrer(), ui::PAGE_TRANSITION_TYPED,
704 web::NavigationInitiationType::USER_INITIATED,
705 web::NavigationManager::UserAgentOverrideOption::INHERIT);
706 [session_controller() commitPendingItem];
707 ASSERT_TRUE(navigation_manager()->GetLastCommittedItem());
708 EXPECT_TRUE(ui::PageTransitionCoreTypeIs(
709 navigation_manager()->GetLastCommittedItem()->GetTransitionType(),
710 ui::PAGE_TRANSITION_TYPED));
711 EXPECT_FALSE(navigation_manager()->GetPendingItem());
712
713 navigation_manager()->AddPendingItem(
714 existing_url, Referrer(), ui::PAGE_TRANSITION_LINK,
715 web::NavigationInitiationType::USER_INITIATED,
716 web::NavigationManager::UserAgentOverrideOption::INHERIT);
717 EXPECT_FALSE(navigation_manager()->GetPendingItem());
718 }
719
720 // Tests that when the last committed item exists, adding a pending item with
721 // the same URL succeeds if the new item is a form submission while the last
722 // committed item is not.
723 TEST_F(NavigationManagerTest, AddSameUrlPendingItemIfFormSubmission) {
724 GURL existing_url = GURL("http://www.existing.com");
725 navigation_manager()->AddPendingItem(
726 existing_url, Referrer(), ui::PAGE_TRANSITION_TYPED,
727 web::NavigationInitiationType::USER_INITIATED,
728 web::NavigationManager::UserAgentOverrideOption::INHERIT);
729 [session_controller() commitPendingItem];
730 ASSERT_TRUE(navigation_manager()->GetLastCommittedItem());
731 EXPECT_TRUE(ui::PageTransitionCoreTypeIs(
732 navigation_manager()->GetLastCommittedItem()->GetTransitionType(),
733 ui::PAGE_TRANSITION_TYPED));
734 EXPECT_FALSE(navigation_manager()->GetPendingItem());
735
736 // Add if new transition is a form submission.
737 navigation_manager()->AddPendingItem(
738 existing_url, Referrer(), ui::PAGE_TRANSITION_FORM_SUBMIT,
739 web::NavigationInitiationType::USER_INITIATED,
740 web::NavigationManager::UserAgentOverrideOption::INHERIT);
741 ASSERT_TRUE(navigation_manager()->GetPendingItem());
742 EXPECT_TRUE(ui::PageTransitionCoreTypeIs(
743 navigation_manager()->GetPendingItem()->GetTransitionType(),
744 ui::PAGE_TRANSITION_FORM_SUBMIT));
745 }
746
747 // Tests that when the last committed item exists, adding a pending item with
748 // the same URL fails if both the new item and the last committed item are form
749 // submissions.
750 TEST_F(NavigationManagerTest,
751 NotAddSameUrlPendingItemIfDuplicateFormSubmission) {
752 GURL existing_url = GURL("http://www.existing.com");
753 navigation_manager()->AddPendingItem(
754 existing_url, Referrer(), ui::PAGE_TRANSITION_FORM_SUBMIT,
755 web::NavigationInitiationType::USER_INITIATED,
756 web::NavigationManager::UserAgentOverrideOption::INHERIT);
757 [session_controller() commitPendingItem];
758 ASSERT_TRUE(navigation_manager()->GetLastCommittedItem());
759 EXPECT_FALSE(navigation_manager()->GetPendingItem());
760
761 navigation_manager()->AddPendingItem(
762 existing_url, Referrer(), ui::PAGE_TRANSITION_FORM_SUBMIT,
763 web::NavigationInitiationType::USER_INITIATED,
764 web::NavigationManager::UserAgentOverrideOption::INHERIT);
765 EXPECT_FALSE(navigation_manager()->GetPendingItem());
766 }
767
768 // Tests that when the last committed item exists, adding a pending item with
769 // the same URL fails if the user agent override option is INHERIT.
770 TEST_F(NavigationManagerTest, NotAddSameUrlPendingItemIfOverrideInherit) {
771 GURL existing_url = GURL("http://www.existing.com");
772 navigation_manager()->AddPendingItem(
773 existing_url, Referrer(), ui::PAGE_TRANSITION_TYPED,
774 web::NavigationInitiationType::USER_INITIATED,
775 web::NavigationManager::UserAgentOverrideOption::INHERIT);
776 [session_controller() commitPendingItem];
777 ASSERT_TRUE(navigation_manager()->GetLastCommittedItem());
778 EXPECT_TRUE(ui::PageTransitionCoreTypeIs(
779 navigation_manager()->GetLastCommittedItem()->GetTransitionType(),
780 ui::PAGE_TRANSITION_TYPED));
781
782 navigation_manager()->AddPendingItem(
783 existing_url, Referrer(), ui::PAGE_TRANSITION_LINK,
784 web::NavigationInitiationType::USER_INITIATED,
785 web::NavigationManager::UserAgentOverrideOption::INHERIT);
786
787 EXPECT_FALSE(navigation_manager()->GetPendingItem());
788 }
789
790 // Tests that when the last committed item exists, adding a pending item with
791 // the same URL succeeds if the user agent override option is DESKTOP.
792 TEST_F(NavigationManagerTest, AddSameUrlPendingItemIfOverrideDesktop) {
793 GURL existing_url = GURL("http://www.existing.com");
794 navigation_manager()->AddPendingItem(
795 existing_url, Referrer(), ui::PAGE_TRANSITION_TYPED,
796 web::NavigationInitiationType::USER_INITIATED,
797 web::NavigationManager::UserAgentOverrideOption::MOBILE);
798 [session_controller() commitPendingItem];
799 ASSERT_TRUE(navigation_manager()->GetLastCommittedItem());
800 EXPECT_TRUE(ui::PageTransitionCoreTypeIs(
801 navigation_manager()->GetLastCommittedItem()->GetTransitionType(),
802 ui::PAGE_TRANSITION_TYPED));
803 EXPECT_EQ(web::UserAgentType::MOBILE,
804 navigation_manager()->GetLastCommittedItem()->GetUserAgentType());
805
806 navigation_manager()->AddPendingItem(
807 existing_url, Referrer(), ui::PAGE_TRANSITION_LINK,
808 web::NavigationInitiationType::USER_INITIATED,
809 web::NavigationManager::UserAgentOverrideOption::DESKTOP);
810
811 ASSERT_TRUE(navigation_manager()->GetPendingItem());
812 EXPECT_TRUE(ui::PageTransitionCoreTypeIs(
813 navigation_manager()->GetPendingItem()->GetTransitionType(),
814 ui::PAGE_TRANSITION_LINK));
815 }
816
817 // Tests that when the last committed item exists, adding a pending item with
818 // the same URL succeeds if the user agent override option is MOBILE.
819 TEST_F(NavigationManagerTest, AddSameUrlPendingItemIfOverrideMobile) {
820 GURL existing_url = GURL("http://www.existing.com");
821 navigation_manager()->AddPendingItem(
822 existing_url, Referrer(), ui::PAGE_TRANSITION_TYPED,
823 web::NavigationInitiationType::USER_INITIATED,
824 web::NavigationManager::UserAgentOverrideOption::DESKTOP);
825 [session_controller() commitPendingItem];
826 ASSERT_TRUE(navigation_manager()->GetLastCommittedItem());
827 EXPECT_TRUE(ui::PageTransitionCoreTypeIs(
828 navigation_manager()->GetLastCommittedItem()->GetTransitionType(),
829 ui::PAGE_TRANSITION_TYPED));
830 EXPECT_EQ(web::UserAgentType::DESKTOP,
831 navigation_manager()->GetLastCommittedItem()->GetUserAgentType());
832
833 navigation_manager()->AddPendingItem(
834 existing_url, Referrer(), ui::PAGE_TRANSITION_LINK,
835 web::NavigationInitiationType::USER_INITIATED,
836 web::NavigationManager::UserAgentOverrideOption::MOBILE);
837
838 ASSERT_TRUE(navigation_manager()->GetPendingItem());
839 EXPECT_TRUE(ui::PageTransitionCoreTypeIs(
840 navigation_manager()->GetPendingItem()->GetTransitionType(),
841 ui::PAGE_TRANSITION_LINK));
842 }
843
518 // Tests that desktop user agent can be enforced to use for next pending item 844 // Tests that desktop user agent can be enforced to use for next pending item
519 // when UserAgentOverrideOption is DESKTOP. 845 // when UserAgentOverrideOption is DESKTOP.
520 TEST_F(NavigationManagerTest, OverrideUserAgentWithDesktop) { 846 TEST_F(NavigationManagerTest, OverrideUserAgentWithDesktop) {
521 navigation_manager()->AddPendingItem( 847 navigation_manager()->AddPendingItem(
522 GURL("http://www.1.com"), Referrer(), ui::PAGE_TRANSITION_TYPED, 848 GURL("http://www.1.com"), Referrer(), ui::PAGE_TRANSITION_TYPED,
523 web::NavigationInitiationType::USER_INITIATED, 849 web::NavigationInitiationType::USER_INITIATED,
524 web::NavigationManager::UserAgentOverrideOption::INHERIT); 850 web::NavigationManager::UserAgentOverrideOption::MOBILE);
525 [session_controller() commitPendingItem]; 851 [session_controller() commitPendingItem];
526 NavigationItem* last_committed_item = 852 NavigationItem* last_committed_item =
527 navigation_manager()->GetLastCommittedItem(); 853 navigation_manager()->GetLastCommittedItem();
528 EXPECT_EQ(UserAgentType::MOBILE, last_committed_item->GetUserAgentType()); 854 EXPECT_EQ(UserAgentType::MOBILE, last_committed_item->GetUserAgentType());
529 855
530 navigation_manager()->AddPendingItem( 856 navigation_manager()->AddPendingItem(
531 GURL("http://www.2.com"), Referrer(), ui::PAGE_TRANSITION_TYPED, 857 GURL("http://www.2.com"), Referrer(), ui::PAGE_TRANSITION_TYPED,
532 web::NavigationInitiationType::USER_INITIATED, 858 web::NavigationInitiationType::USER_INITIATED,
533 web::NavigationManager::UserAgentOverrideOption::DESKTOP); 859 web::NavigationManager::UserAgentOverrideOption::DESKTOP);
534 ASSERT_TRUE(navigation_manager()->GetPendingItem()); 860 ASSERT_TRUE(navigation_manager()->GetPendingItem());
(...skipping 419 matching lines...) Expand 10 before | Expand all | Expand 10 after
954 navigation_manager()->Reload(web::ReloadType::ORIGINAL_REQUEST_URL, 1280 navigation_manager()->Reload(web::ReloadType::ORIGINAL_REQUEST_URL,
955 false /* check_for_repost */); 1281 false /* check_for_repost */);
956 EXPECT_TRUE(navigation_manager_delegate().reload_called()); 1282 EXPECT_TRUE(navigation_manager_delegate().reload_called());
957 1283
958 ASSERT_TRUE(navigation_manager()->GetLastCommittedItem()); 1284 ASSERT_TRUE(navigation_manager()->GetLastCommittedItem());
959 EXPECT_EQ(expected_original_url, 1285 EXPECT_EQ(expected_original_url,
960 navigation_manager()->GetLastCommittedItem()->GetURL()); 1286 navigation_manager()->GetLastCommittedItem()->GetURL());
961 } 1287 }
962 1288
963 } // namespace web 1289 } // namespace web
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698