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

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 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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698