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 #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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 |
OLD | NEW |