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

Side by Side Diff: content/browser/frame_host/navigator_impl_unittest.cc

Issue 1722623003: PlzNavigate: use RenderFrameHostImpl::IsRendererTransferNeededForNavigation (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@navigation-policy
Patch Set: Rebase + updates to tests Created 4 years, 10 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 #include <stdint.h> 5 #include <stdint.h>
6 6
7 #include "base/macros.h" 7 #include "base/macros.h"
8 #include "base/time/time.h" 8 #include "base/time/time.h"
9 #include "build/build_config.h" 9 #include "build/build_config.h"
10 #include "content/browser/frame_host/navigation_controller_impl.h" 10 #include "content/browser/frame_host/navigation_controller_impl.h"
(...skipping 219 matching lines...) Expand 10 before | Expand all | Expand 10 after
230 FrameTreeNode* node = main_test_rfh()->frame_tree_node(); 230 FrameTreeNode* node = main_test_rfh()->frame_tree_node();
231 NavigationRequest* request = node->navigation_request(); 231 NavigationRequest* request = node->navigation_request();
232 ASSERT_TRUE(request); 232 ASSERT_TRUE(request);
233 233
234 // The navigation is immediately started as there's no need to wait for 234 // The navigation is immediately started as there's no need to wait for
235 // beforeUnload to be executed. 235 // beforeUnload to be executed.
236 EXPECT_EQ(NavigationRequest::STARTED, request->state()); 236 EXPECT_EQ(NavigationRequest::STARTED, request->state());
237 EXPECT_FALSE(request->begin_params().has_user_gesture); 237 EXPECT_FALSE(request->begin_params().has_user_gesture);
238 EXPECT_EQ(kUrl2, request->common_params().url); 238 EXPECT_EQ(kUrl2, request->common_params().url);
239 EXPECT_FALSE(request->browser_initiated()); 239 EXPECT_FALSE(request->browser_initiated());
240 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node)); 240 if (SiteIsolationPolicy::AreCrossProcessFramesPossible()) {
241 EXPECT_TRUE(GetSpeculativeRenderFrameHost(node));
242 } else {
243 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node));
244 }
241 245
242 // Have the current RenderFrameHost commit the navigation. 246 // Have the current RenderFrameHost commit the navigation.
243 scoped_refptr<ResourceResponse> response(new ResourceResponse); 247 scoped_refptr<ResourceResponse> response(new ResourceResponse);
244 GetLoaderForNavigationRequest(request) 248 GetLoaderForNavigationRequest(request)
245 ->CallOnResponseStarted(response, MakeEmptyStream()); 249 ->CallOnResponseStarted(response, MakeEmptyStream());
246 EXPECT_TRUE(DidRenderFrameHostRequestCommit(main_test_rfh())); 250 if (SiteIsolationPolicy::AreCrossProcessFramesPossible()) {
251 EXPECT_TRUE(
252 DidRenderFrameHostRequestCommit(GetSpeculativeRenderFrameHost(node)));
253 } else {
254 EXPECT_TRUE(DidRenderFrameHostRequestCommit(main_test_rfh()));
255 }
247 EXPECT_TRUE(main_test_rfh()->is_loading()); 256 EXPECT_TRUE(main_test_rfh()->is_loading());
248 EXPECT_FALSE(node->navigation_request()); 257 EXPECT_FALSE(node->navigation_request());
249 258
250 // Commit the navigation. 259 // Commit the navigation.
251 main_test_rfh()->SendNavigate(1, 0, true, kUrl2); 260 main_test_rfh()->SendNavigate(1, 0, true, kUrl2);
252 EXPECT_EQ(RenderFrameHostImpl::STATE_DEFAULT, main_test_rfh()->rfh_state()); 261 EXPECT_EQ(RenderFrameHostImpl::STATE_DEFAULT, main_test_rfh()->rfh_state());
253 EXPECT_EQ(kUrl2, contents()->GetLastCommittedURL()); 262 EXPECT_EQ(kUrl2, contents()->GetLastCommittedURL());
254 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node)); 263 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node));
255 EXPECT_FALSE(node->render_manager()->pending_frame_host()); 264 EXPECT_FALSE(node->render_manager()->pending_frame_host());
256 265
(...skipping 358 matching lines...) Expand 10 before | Expand all | Expand 10 after
615 main_test_rfh()->SendRendererInitiatedNavigationRequest(kUrl2, true); 624 main_test_rfh()->SendRendererInitiatedNavigationRequest(kUrl2, true);
616 NavigationRequest* request2 = node->navigation_request(); 625 NavigationRequest* request2 = node->navigation_request();
617 ASSERT_TRUE(request2); 626 ASSERT_TRUE(request2);
618 EXPECT_EQ(kUrl2, request2->common_params().url); 627 EXPECT_EQ(kUrl2, request2->common_params().url);
619 EXPECT_FALSE(request2->browser_initiated()); 628 EXPECT_FALSE(request2->browser_initiated());
620 EXPECT_TRUE(request2->begin_params().has_user_gesture); 629 EXPECT_TRUE(request2->begin_params().has_user_gesture);
621 630
622 // Confirm that the first loader got destroyed. 631 // Confirm that the first loader got destroyed.
623 EXPECT_FALSE(loader1); 632 EXPECT_FALSE(loader1);
624 633
625 // Confirm that the speculative RenderFrameHost was destroyed. 634 // Confirm that the speculative RenderFrameHost was destroyed in the non
626 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node)); 635 // SitePerProcess case.
636 if (SiteIsolationPolicy::AreCrossProcessFramesPossible()) {
637 EXPECT_TRUE(GetSpeculativeRenderFrameHost(node));
638 } else {
639 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node));
640 }
627 641
628 // Have the RenderFrameHost commit the navigation. 642 // Have the RenderFrameHost commit the navigation.
629 scoped_refptr<ResourceResponse> response(new ResourceResponse); 643 scoped_refptr<ResourceResponse> response(new ResourceResponse);
630 GetLoaderForNavigationRequest(request2) 644 GetLoaderForNavigationRequest(request2)
631 ->CallOnResponseStarted(response, MakeEmptyStream()); 645 ->CallOnResponseStarted(response, MakeEmptyStream());
632 EXPECT_TRUE(DidRenderFrameHostRequestCommit(main_test_rfh())); 646 if (SiteIsolationPolicy::AreCrossProcessFramesPossible()) {
647 EXPECT_TRUE(
648 DidRenderFrameHostRequestCommit(GetSpeculativeRenderFrameHost(node)));
649 } else {
650 EXPECT_TRUE(DidRenderFrameHostRequestCommit(main_test_rfh()));
651 }
633 652
634 // Commit the navigation. 653 // Commit the navigation.
635 main_test_rfh()->SendNavigate(1, 0, true, kUrl2); 654 main_test_rfh()->SendNavigate(1, 0, true, kUrl2);
636 655
637 // Confirm that the commit corresponds to the new request. 656 // Confirm that the commit corresponds to the new request.
638 ASSERT_TRUE(main_test_rfh()); 657 ASSERT_TRUE(main_test_rfh());
639 EXPECT_EQ(kUrl2, contents()->GetLastCommittedURL()); 658 EXPECT_EQ(kUrl2, contents()->GetLastCommittedURL());
640 } 659 }
641 660
642 // PlzNavigate: Test that a renderer-initiated user-initiated navigation is NOT 661 // PlzNavigate: Test that a renderer-initiated user-initiated navigation is NOT
(...skipping 10 matching lines...) Expand all
653 FrameTreeNode* node = main_test_rfh()->frame_tree_node(); 672 FrameTreeNode* node = main_test_rfh()->frame_tree_node();
654 673
655 // Start a renderer-initiated user-initiated navigation to the 1st URL. 674 // Start a renderer-initiated user-initiated navigation to the 1st URL.
656 process()->sink().ClearMessages(); 675 process()->sink().ClearMessages();
657 main_test_rfh()->SendRendererInitiatedNavigationRequest(kUrl1, true); 676 main_test_rfh()->SendRendererInitiatedNavigationRequest(kUrl1, true);
658 NavigationRequest* request1 = node->navigation_request(); 677 NavigationRequest* request1 = node->navigation_request();
659 ASSERT_TRUE(request1); 678 ASSERT_TRUE(request1);
660 EXPECT_EQ(kUrl1, request1->common_params().url); 679 EXPECT_EQ(kUrl1, request1->common_params().url);
661 EXPECT_FALSE(request1->browser_initiated()); 680 EXPECT_FALSE(request1->browser_initiated());
662 EXPECT_TRUE(request1->begin_params().has_user_gesture); 681 EXPECT_TRUE(request1->begin_params().has_user_gesture);
663 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node)); 682 if (SiteIsolationPolicy::AreCrossProcessFramesPossible()) {
683 EXPECT_TRUE(GetSpeculativeRenderFrameHost(node));
684 } else {
685 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node));
686 }
664 687
665 // Now receive a renderer-initiated non-user-initiated request. Nothing should 688 // Now receive a renderer-initiated non-user-initiated request. Nothing should
666 // change. 689 // change.
667 main_test_rfh()->SendRendererInitiatedNavigationRequest(kUrl2, false); 690 main_test_rfh()->SendRendererInitiatedNavigationRequest(kUrl2, false);
668 NavigationRequest* request2 = node->navigation_request(); 691 NavigationRequest* request2 = node->navigation_request();
669 ASSERT_TRUE(request2); 692 ASSERT_TRUE(request2);
670 EXPECT_EQ(request1, request2); 693 EXPECT_EQ(request1, request2);
671 EXPECT_EQ(kUrl1, request2->common_params().url); 694 EXPECT_EQ(kUrl1, request2->common_params().url);
672 EXPECT_FALSE(request2->browser_initiated()); 695 EXPECT_FALSE(request2->browser_initiated());
673 EXPECT_TRUE(request2->begin_params().has_user_gesture); 696 EXPECT_TRUE(request2->begin_params().has_user_gesture);
674 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node)); 697 if (SiteIsolationPolicy::AreCrossProcessFramesPossible()) {
698 EXPECT_TRUE(GetSpeculativeRenderFrameHost(node));
699 } else {
700 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node));
701 }
675 702
676 // Have the RenderFrameHost commit the navigation. 703 // Have the RenderFrameHost commit the navigation.
677 scoped_refptr<ResourceResponse> response(new ResourceResponse); 704 scoped_refptr<ResourceResponse> response(new ResourceResponse);
678 GetLoaderForNavigationRequest(request2) 705 GetLoaderForNavigationRequest(request2)
679 ->CallOnResponseStarted(response, MakeEmptyStream()); 706 ->CallOnResponseStarted(response, MakeEmptyStream());
680 EXPECT_TRUE(DidRenderFrameHostRequestCommit(main_test_rfh())); 707 if (SiteIsolationPolicy::AreCrossProcessFramesPossible()) {
708 EXPECT_TRUE(
709 DidRenderFrameHostRequestCommit(GetSpeculativeRenderFrameHost(node)));
710 } else {
711 EXPECT_TRUE(DidRenderFrameHostRequestCommit(main_test_rfh()));
712 }
681 713
682 // Commit the navigation. 714 // Commit the navigation.
683 main_test_rfh()->SendNavigate(1, 0, true, kUrl1); 715 main_test_rfh()->SendNavigate(1, 0, true, kUrl1);
684 EXPECT_EQ(kUrl1, contents()->GetLastCommittedURL()); 716 EXPECT_EQ(kUrl1, contents()->GetLastCommittedURL());
685 } 717 }
686 718
687 // PlzNavigate: Test that a browser-initiated navigation is NOT canceled if a 719 // PlzNavigate: Test that a browser-initiated navigation is NOT canceled if a
688 // renderer-initiated non-user-initiated request is issued in the meantime. 720 // renderer-initiated non-user-initiated request is issued in the meantime.
689 TEST_F(NavigatorTestWithBrowserSideNavigation, 721 TEST_F(NavigatorTestWithBrowserSideNavigation,
690 RendererNonUserInitiatedNavigationDoesntCancelBrowserInitiated) { 722 RendererNonUserInitiatedNavigationDoesntCancelBrowserInitiated) {
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
746 int32_t site_instance_id_0 = main_test_rfh()->GetSiteInstance()->GetId(); 778 int32_t site_instance_id_0 = main_test_rfh()->GetSiteInstance()->GetId();
747 779
748 // Start a renderer-initiated non-user-initiated navigation to the 1st URL. 780 // Start a renderer-initiated non-user-initiated navigation to the 1st URL.
749 process()->sink().ClearMessages(); 781 process()->sink().ClearMessages();
750 main_test_rfh()->SendRendererInitiatedNavigationRequest(kUrl1, false); 782 main_test_rfh()->SendRendererInitiatedNavigationRequest(kUrl1, false);
751 NavigationRequest* request1 = node->navigation_request(); 783 NavigationRequest* request1 = node->navigation_request();
752 ASSERT_TRUE(request1); 784 ASSERT_TRUE(request1);
753 EXPECT_EQ(kUrl1, request1->common_params().url); 785 EXPECT_EQ(kUrl1, request1->common_params().url);
754 EXPECT_FALSE(request1->browser_initiated()); 786 EXPECT_FALSE(request1->browser_initiated());
755 EXPECT_FALSE(request1->begin_params().has_user_gesture); 787 EXPECT_FALSE(request1->begin_params().has_user_gesture);
756 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node)); 788 if (SiteIsolationPolicy::AreCrossProcessFramesPossible()) {
789 EXPECT_TRUE(GetSpeculativeRenderFrameHost(node));
790 } else {
791 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node));
792 }
757 base::WeakPtr<TestNavigationURLLoader> loader1 = 793 base::WeakPtr<TestNavigationURLLoader> loader1 =
758 GetLoaderForNavigationRequest(request1)->AsWeakPtr(); 794 GetLoaderForNavigationRequest(request1)->AsWeakPtr();
759 EXPECT_TRUE(loader1); 795 EXPECT_TRUE(loader1);
760 796
761 // Now receive a 2nd similar request that should replace the current one. 797 // Now receive a 2nd similar request that should replace the current one.
762 main_test_rfh()->SendRendererInitiatedNavigationRequest(kUrl2, false); 798 main_test_rfh()->SendRendererInitiatedNavigationRequest(kUrl2, false);
763 NavigationRequest* request2 = node->navigation_request(); 799 NavigationRequest* request2 = node->navigation_request();
764 EXPECT_EQ(kUrl2, request2->common_params().url); 800 EXPECT_EQ(kUrl2, request2->common_params().url);
765 EXPECT_FALSE(request2->browser_initiated()); 801 EXPECT_FALSE(request2->browser_initiated());
766 EXPECT_FALSE(request2->begin_params().has_user_gesture); 802 EXPECT_FALSE(request2->begin_params().has_user_gesture);
767 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node)); 803 if (SiteIsolationPolicy::AreCrossProcessFramesPossible()) {
804 EXPECT_TRUE(GetSpeculativeRenderFrameHost(node));
805 } else {
806 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node));
807 }
768 808
769 // Confirm that the first loader got destroyed. 809 // Confirm that the first loader got destroyed.
770 EXPECT_FALSE(loader1); 810 EXPECT_FALSE(loader1);
771 811
772 // Have the RenderFrameHost commit the navigation. 812 // Have the RenderFrameHost commit the navigation.
773 scoped_refptr<ResourceResponse> response(new ResourceResponse); 813 scoped_refptr<ResourceResponse> response(new ResourceResponse);
774 GetLoaderForNavigationRequest(request2) 814 GetLoaderForNavigationRequest(request2)
775 ->CallOnResponseStarted(response, MakeEmptyStream()); 815 ->CallOnResponseStarted(response, MakeEmptyStream());
776 EXPECT_TRUE(DidRenderFrameHostRequestCommit(main_test_rfh())); 816 if (SiteIsolationPolicy::AreCrossProcessFramesPossible()) {
817 EXPECT_TRUE(
818 DidRenderFrameHostRequestCommit(GetSpeculativeRenderFrameHost(node)));
819 } else {
820 EXPECT_TRUE(DidRenderFrameHostRequestCommit(main_test_rfh()));
821 }
777 822
778 // Commit the navigation. 823 // Commit the navigation.
779 main_test_rfh()->SendNavigate(1, 0, true, kUrl2); 824 main_test_rfh()->SendNavigate(1, 0, true, kUrl2);
780 EXPECT_EQ(kUrl2, contents()->GetLastCommittedURL()); 825 EXPECT_EQ(kUrl2, contents()->GetLastCommittedURL());
781 826
782 // The SiteInstance did not change. 827 // The SiteInstance did not change.
783 EXPECT_EQ(site_instance_id_0, main_test_rfh()->GetSiteInstance()->GetId()); 828 EXPECT_EQ(site_instance_id_0, main_test_rfh()->GetSiteInstance()->GetId());
784 } 829 }
785 830
786 // PlzNavigate: Test that a reload navigation is properly signaled to the 831 // PlzNavigate: Test that a reload navigation is properly signaled to the
(...skipping 353 matching lines...) Expand 10 before | Expand all | Expand 10 after
1140 1185
1141 SiteInstance* converted_instance_2 = 1186 SiteInstance* converted_instance_2 =
1142 ConvertToSiteInstance(rfhm, descriptor, unrelated_instance.get()); 1187 ConvertToSiteInstance(rfhm, descriptor, unrelated_instance.get());
1143 // Should return |unrelated_instance| because its site matches and it is 1188 // Should return |unrelated_instance| because its site matches and it is
1144 // unrelated to the current SiteInstance. 1189 // unrelated to the current SiteInstance.
1145 EXPECT_EQ(unrelated_instance.get(), converted_instance_2); 1190 EXPECT_EQ(unrelated_instance.get(), converted_instance_2);
1146 } 1191 }
1147 } 1192 }
1148 1193
1149 } // namespace content 1194 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/browser_side_navigation_browsertest.cc ('k') | content/browser/frame_host/render_frame_host_manager.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698