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

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: self review 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 should
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());
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.
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.
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::INHERIT);
607 ASSERT_TRUE(navigation_manager()->GetPendingItem());
608 EXPECT_TRUE(ui::PageTransitionCoreTypeIs(
609 navigation_manager()->GetPendingItem()->GetTransitionType(),
610 ui::PAGE_TRANSITION_TYPED));
611
612 navigation_manager()->AddPendingItem(
613 existing_url, Referrer(), ui::PAGE_TRANSITION_LINK,
614 web::NavigationInitiationType::USER_INITIATED,
615 web::NavigationManager::UserAgentOverrideOption::DESKTOP);
616
617 ASSERT_TRUE(navigation_manager()->GetPendingItem());
618 EXPECT_TRUE(ui::PageTransitionCoreTypeIs(
619 navigation_manager()->GetPendingItem()->GetTransitionType(),
620 ui::PAGE_TRANSITION_LINK));
621 }
622
623 // Tests that when given a pending item, adding a new pending item with the same
624 // URL should replace the existing pending item if the user agent override
625 // option is MOILE.
626 TEST_F(NavigationManagerTest, ReplaceSameUrlPendingItemIfOverrideMobile) {
627 GURL existing_url = GURL("http://www.existing.com");
628 navigation_manager()->AddPendingItem(
629 existing_url, Referrer(), ui::PAGE_TRANSITION_TYPED,
630 web::NavigationInitiationType::USER_INITIATED,
631 web::NavigationManager::UserAgentOverrideOption::INHERIT);
632 ASSERT_TRUE(navigation_manager()->GetPendingItem());
633 EXPECT_TRUE(ui::PageTransitionCoreTypeIs(
634 navigation_manager()->GetPendingItem()->GetTransitionType(),
635 ui::PAGE_TRANSITION_TYPED));
636
637 navigation_manager()->AddPendingItem(
638 existing_url, Referrer(), ui::PAGE_TRANSITION_LINK,
639 web::NavigationInitiationType::USER_INITIATED,
640 web::NavigationManager::UserAgentOverrideOption::MOBILE);
641
642 ASSERT_TRUE(navigation_manager()->GetPendingItem());
643 EXPECT_TRUE(ui::PageTransitionCoreTypeIs(
644 navigation_manager()->GetPendingItem()->GetTransitionType(),
645 ui::PAGE_TRANSITION_LINK));
646 }
647
648 // Tests that when the last committed item exists, adding a pending item should
649 // succeed if the pending item's URL is different from the last committed item.
650 TEST_F(NavigationManagerTest, AddPendingItemIfDiffernetURL) {
651 GURL existing_url = GURL("http://www.existing.com");
652 navigation_manager()->AddPendingItem(
653 existing_url, Referrer(), ui::PAGE_TRANSITION_TYPED,
654 web::NavigationInitiationType::USER_INITIATED,
655 web::NavigationManager::UserAgentOverrideOption::INHERIT);
656 [session_controller() commitPendingItem];
657 ASSERT_TRUE(navigation_manager()->GetLastCommittedItem());
658 EXPECT_EQ(existing_url,
659 navigation_manager()->GetLastCommittedItem()->GetURL());
660
661 GURL new_url = GURL("http://www.new.com");
662 navigation_manager()->AddPendingItem(
663 new_url, Referrer(), ui::PAGE_TRANSITION_TYPED,
664 web::NavigationInitiationType::USER_INITIATED,
665 web::NavigationManager::UserAgentOverrideOption::INHERIT);
666 ASSERT_TRUE(navigation_manager()->GetPendingItem());
667 EXPECT_EQ(new_url, navigation_manager()->GetPendingItem()->GetURL());
668 }
669
670 // Tests that when the last committed item exists, adding a pending item with
671 // the same URL should succeed if the pending item is a form submission while
672 // the last committed item is not.
673 TEST_F(NavigationManagerTest, AddSameUrlPendingItemIfFormSubmission) {
674 GURL existing_url = GURL("http://www.existing.com");
675 navigation_manager()->AddPendingItem(
676 existing_url, Referrer(), ui::PAGE_TRANSITION_TYPED,
677 web::NavigationInitiationType::USER_INITIATED,
678 web::NavigationManager::UserAgentOverrideOption::INHERIT);
679 [session_controller() commitPendingItem];
680 ASSERT_TRUE(navigation_manager()->GetLastCommittedItem());
681 EXPECT_TRUE(ui::PageTransitionCoreTypeIs(
682 navigation_manager()->GetLastCommittedItem()->GetTransitionType(),
683 ui::PAGE_TRANSITION_TYPED));
684 EXPECT_FALSE(navigation_manager()->GetPendingItem());
685
686 // Should not add if new transition is not a form submission.
687 navigation_manager()->AddPendingItem(
688 existing_url, Referrer(), ui::PAGE_TRANSITION_LINK,
689 web::NavigationInitiationType::USER_INITIATED,
690 web::NavigationManager::UserAgentOverrideOption::INHERIT);
691 EXPECT_FALSE(navigation_manager()->GetPendingItem());
692
693 // Should add if new transition is a form submission.
694 navigation_manager()->AddPendingItem(
695 existing_url, Referrer(), ui::PAGE_TRANSITION_FORM_SUBMIT,
696 web::NavigationInitiationType::USER_INITIATED,
697 web::NavigationManager::UserAgentOverrideOption::INHERIT);
698 ASSERT_TRUE(navigation_manager()->GetPendingItem());
699 EXPECT_TRUE(ui::PageTransitionCoreTypeIs(
700 navigation_manager()->GetPendingItem()->GetTransitionType(),
701 ui::PAGE_TRANSITION_FORM_SUBMIT));
702
703 // Should not add if both the last committed item and the pending item are
704 // form submissions.
705 navigation_manager()->DiscardNonCommittedItems();
706 EXPECT_FALSE(navigation_manager()->GetPendingItem());
707 ASSERT_TRUE(navigation_manager()->GetLastCommittedItem());
708 navigation_manager()->GetLastCommittedItem()->SetTransitionType(
709 ui::PAGE_TRANSITION_FORM_SUBMIT);
710 EXPECT_TRUE(ui::PageTransitionCoreTypeIs(
711 navigation_manager()->GetLastCommittedItem()->GetTransitionType(),
712 ui::PAGE_TRANSITION_FORM_SUBMIT));
713
714 navigation_manager()->AddPendingItem(
715 existing_url, Referrer(), ui::PAGE_TRANSITION_FORM_SUBMIT,
716 web::NavigationInitiationType::USER_INITIATED,
717 web::NavigationManager::UserAgentOverrideOption::INHERIT);
718 EXPECT_FALSE(navigation_manager()->GetPendingItem());
719 }
720
721 // Tests that when the last committed item exists, adding a pending item with
722 // the same URL should fail if the user agent override option is INHERIT.
723 TEST_F(NavigationManagerTest, NotAddSameUrlPendingItemIfOverrideInherit) {
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
735 navigation_manager()->AddPendingItem(
736 existing_url, Referrer(), ui::PAGE_TRANSITION_LINK,
737 web::NavigationInitiationType::USER_INITIATED,
738 web::NavigationManager::UserAgentOverrideOption::INHERIT);
739
740 EXPECT_FALSE(navigation_manager()->GetPendingItem());
741 }
742
743 // Tests that when the last committed item exists, adding a pending item with
744 // the same URL should succeed if the user agent override option is DESKTOP.
745 TEST_F(NavigationManagerTest, AddSameUrlPendingItemIfOverrideDesktop) {
746 GURL existing_url = GURL("http://www.existing.com");
747 navigation_manager()->AddPendingItem(
748 existing_url, Referrer(), ui::PAGE_TRANSITION_TYPED,
749 web::NavigationInitiationType::USER_INITIATED,
750 web::NavigationManager::UserAgentOverrideOption::INHERIT);
751 [session_controller() commitPendingItem];
752 ASSERT_TRUE(navigation_manager()->GetLastCommittedItem());
753 EXPECT_TRUE(ui::PageTransitionCoreTypeIs(
754 navigation_manager()->GetLastCommittedItem()->GetTransitionType(),
755 ui::PAGE_TRANSITION_TYPED));
756
757 navigation_manager()->AddPendingItem(
758 existing_url, Referrer(), ui::PAGE_TRANSITION_LINK,
759 web::NavigationInitiationType::USER_INITIATED,
760 web::NavigationManager::UserAgentOverrideOption::DESKTOP);
761
762 ASSERT_TRUE(navigation_manager()->GetPendingItem());
763 EXPECT_TRUE(ui::PageTransitionCoreTypeIs(
764 navigation_manager()->GetPendingItem()->GetTransitionType(),
765 ui::PAGE_TRANSITION_LINK));
766 }
767
768 // Tests that when the last committed item exists, adding a pending item with
769 // the same URL should succeed if the user agent override option is MOBILE.
770 TEST_F(NavigationManagerTest, AddSameUrlPendingItemIfOverrideMobile) {
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::MOBILE);
786
787 ASSERT_TRUE(navigation_manager()->GetPendingItem());
788 EXPECT_TRUE(ui::PageTransitionCoreTypeIs(
789 navigation_manager()->GetPendingItem()->GetTransitionType(),
790 ui::PAGE_TRANSITION_LINK));
791 }
792
518 // Tests that desktop user agent can be enforced to use for next pending item 793 // Tests that desktop user agent can be enforced to use for next pending item
519 // when UserAgentOverrideOption is DESKTOP. 794 // when UserAgentOverrideOption is DESKTOP.
520 TEST_F(NavigationManagerTest, OverrideUserAgentWithDesktop) { 795 TEST_F(NavigationManagerTest, OverrideUserAgentWithDesktop) {
521 navigation_manager()->AddPendingItem( 796 navigation_manager()->AddPendingItem(
522 GURL("http://www.1.com"), Referrer(), ui::PAGE_TRANSITION_TYPED, 797 GURL("http://www.1.com"), Referrer(), ui::PAGE_TRANSITION_TYPED,
523 web::NavigationInitiationType::USER_INITIATED, 798 web::NavigationInitiationType::USER_INITIATED,
524 web::NavigationManager::UserAgentOverrideOption::INHERIT); 799 web::NavigationManager::UserAgentOverrideOption::INHERIT);
525 [session_controller() commitPendingItem]; 800 [session_controller() commitPendingItem];
526 NavigationItem* last_committed_item = 801 NavigationItem* last_committed_item =
527 navigation_manager()->GetLastCommittedItem(); 802 navigation_manager()->GetLastCommittedItem();
(...skipping 388 matching lines...) Expand 10 before | Expand all | Expand 10 after
916 navigation_manager()->Reload(web::ReloadType::ORIGINAL_REQUEST_URL, 1191 navigation_manager()->Reload(web::ReloadType::ORIGINAL_REQUEST_URL,
917 false /* check_for_repost */); 1192 false /* check_for_repost */);
918 EXPECT_TRUE(navigation_manager_delegate().reload_called()); 1193 EXPECT_TRUE(navigation_manager_delegate().reload_called());
919 1194
920 ASSERT_TRUE(navigation_manager()->GetLastCommittedItem()); 1195 ASSERT_TRUE(navigation_manager()->GetLastCommittedItem());
921 EXPECT_EQ(expected_original_url, 1196 EXPECT_EQ(expected_original_url,
922 navigation_manager()->GetLastCommittedItem()->GetURL()); 1197 navigation_manager()->GetLastCommittedItem()->GetURL());
923 } 1198 }
924 1199
925 } // namespace web 1200 } // namespace web
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698