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/feature_list.h" | 7 #include "base/feature_list.h" |
8 #include "base/macros.h" | 8 #include "base/macros.h" |
9 #include "base/time/time.h" | 9 #include "base/time/time.h" |
10 #include "build/build_config.h" | 10 #include "build/build_config.h" |
(...skipping 166 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
177 // Start a renderer-initiated non-user-initiated navigation. | 177 // Start a renderer-initiated non-user-initiated navigation. |
178 process()->sink().ClearMessages(); | 178 process()->sink().ClearMessages(); |
179 main_test_rfh()->SendRendererInitiatedNavigationRequest(kUrl2, false); | 179 main_test_rfh()->SendRendererInitiatedNavigationRequest(kUrl2, false); |
180 FrameTreeNode* node = main_test_rfh()->frame_tree_node(); | 180 FrameTreeNode* node = main_test_rfh()->frame_tree_node(); |
181 NavigationRequest* request = node->navigation_request(); | 181 NavigationRequest* request = node->navigation_request(); |
182 ASSERT_TRUE(request); | 182 ASSERT_TRUE(request); |
183 | 183 |
184 // The navigation is immediately started as there's no need to wait for | 184 // The navigation is immediately started as there's no need to wait for |
185 // beforeUnload to be executed. | 185 // beforeUnload to be executed. |
186 EXPECT_EQ(NavigationRequest::STARTED, request->state()); | 186 EXPECT_EQ(NavigationRequest::STARTED, request->state()); |
187 EXPECT_EQ(NavigationGestureAuto, request->common_params().gesture); | 187 EXPECT_FALSE(request->begin_params().has_user_gesture); |
188 EXPECT_EQ(kUrl2, request->common_params().url); | 188 EXPECT_EQ(kUrl2, request->common_params().url); |
189 EXPECT_FALSE(request->browser_initiated()); | 189 EXPECT_FALSE(request->browser_initiated()); |
190 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node)); | 190 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node)); |
191 | 191 |
192 // Have the current RenderFrameHost commit the navigation. | 192 // Have the current RenderFrameHost commit the navigation. |
193 scoped_refptr<ResourceResponse> response(new ResourceResponse); | 193 scoped_refptr<ResourceResponse> response(new ResourceResponse); |
194 GetLoaderForNavigationRequest(request)->CallOnResponseStarted( | 194 GetLoaderForNavigationRequest(request)->CallOnResponseStarted( |
195 response, MakeEmptyStream(), nullptr); | 195 response, MakeEmptyStream(), nullptr); |
196 EXPECT_TRUE(DidRenderFrameHostRequestCommit(main_test_rfh())); | 196 EXPECT_TRUE(DidRenderFrameHostRequestCommit(main_test_rfh())); |
197 EXPECT_TRUE(main_test_rfh()->is_loading()); | 197 EXPECT_TRUE(main_test_rfh()->is_loading()); |
(...skipping 24 matching lines...) Expand all Loading... |
222 // Start a renderer-initiated non-user-initiated navigation. | 222 // Start a renderer-initiated non-user-initiated navigation. |
223 process()->sink().ClearMessages(); | 223 process()->sink().ClearMessages(); |
224 main_test_rfh()->SendRendererInitiatedNavigationRequest(kUrl2, false); | 224 main_test_rfh()->SendRendererInitiatedNavigationRequest(kUrl2, false); |
225 FrameTreeNode* node = main_test_rfh()->frame_tree_node(); | 225 FrameTreeNode* node = main_test_rfh()->frame_tree_node(); |
226 NavigationRequest* request = node->navigation_request(); | 226 NavigationRequest* request = node->navigation_request(); |
227 ASSERT_TRUE(request); | 227 ASSERT_TRUE(request); |
228 | 228 |
229 // The navigation is immediately started as there's no need to wait for | 229 // The navigation is immediately started as there's no need to wait for |
230 // beforeUnload to be executed. | 230 // beforeUnload to be executed. |
231 EXPECT_EQ(NavigationRequest::STARTED, request->state()); | 231 EXPECT_EQ(NavigationRequest::STARTED, request->state()); |
232 EXPECT_EQ(NavigationGestureAuto, request->common_params().gesture); | 232 EXPECT_FALSE(request->begin_params().has_user_gesture); |
233 EXPECT_EQ(kUrl2, request->common_params().url); | 233 EXPECT_EQ(kUrl2, request->common_params().url); |
234 EXPECT_FALSE(request->browser_initiated()); | 234 EXPECT_FALSE(request->browser_initiated()); |
235 if (SiteIsolationPolicy::AreCrossProcessFramesPossible()) { | 235 if (SiteIsolationPolicy::AreCrossProcessFramesPossible()) { |
236 EXPECT_TRUE(GetSpeculativeRenderFrameHost(node)); | 236 EXPECT_TRUE(GetSpeculativeRenderFrameHost(node)); |
237 } else { | 237 } else { |
238 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node)); | 238 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node)); |
239 } | 239 } |
240 | 240 |
241 // Have the current RenderFrameHost commit the navigation. | 241 // Have the current RenderFrameHost commit the navigation. |
242 scoped_refptr<ResourceResponse> response(new ResourceResponse); | 242 scoped_refptr<ResourceResponse> response(new ResourceResponse); |
(...skipping 369 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
612 // Confirm that a speculative RenderFrameHost was created. | 612 // Confirm that a speculative RenderFrameHost was created. |
613 ASSERT_TRUE(GetSpeculativeRenderFrameHost(node)); | 613 ASSERT_TRUE(GetSpeculativeRenderFrameHost(node)); |
614 | 614 |
615 // Now receive a renderer-initiated user-initiated request. It should replace | 615 // Now receive a renderer-initiated user-initiated request. It should replace |
616 // the current NavigationRequest. | 616 // the current NavigationRequest. |
617 main_test_rfh()->SendRendererInitiatedNavigationRequest(kUrl2, true); | 617 main_test_rfh()->SendRendererInitiatedNavigationRequest(kUrl2, true); |
618 NavigationRequest* request2 = node->navigation_request(); | 618 NavigationRequest* request2 = node->navigation_request(); |
619 ASSERT_TRUE(request2); | 619 ASSERT_TRUE(request2); |
620 EXPECT_EQ(kUrl2, request2->common_params().url); | 620 EXPECT_EQ(kUrl2, request2->common_params().url); |
621 EXPECT_FALSE(request2->browser_initiated()); | 621 EXPECT_FALSE(request2->browser_initiated()); |
622 EXPECT_EQ(NavigationGestureUser, request2->common_params().gesture); | 622 EXPECT_TRUE(request2->begin_params().has_user_gesture); |
623 | 623 |
624 // Confirm that the first loader got destroyed. | 624 // Confirm that the first loader got destroyed. |
625 EXPECT_FALSE(loader1); | 625 EXPECT_FALSE(loader1); |
626 | 626 |
627 // Confirm that the speculative RenderFrameHost was destroyed in the non | 627 // Confirm that the speculative RenderFrameHost was destroyed in the non |
628 // SitePerProcess case. | 628 // SitePerProcess case. |
629 if (SiteIsolationPolicy::AreCrossProcessFramesPossible()) { | 629 if (SiteIsolationPolicy::AreCrossProcessFramesPossible()) { |
630 EXPECT_TRUE(GetSpeculativeRenderFrameHost(node)); | 630 EXPECT_TRUE(GetSpeculativeRenderFrameHost(node)); |
631 } else { | 631 } else { |
632 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node)); | 632 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node)); |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
664 contents()->NavigateAndCommit(kUrl0); | 664 contents()->NavigateAndCommit(kUrl0); |
665 FrameTreeNode* node = main_test_rfh()->frame_tree_node(); | 665 FrameTreeNode* node = main_test_rfh()->frame_tree_node(); |
666 | 666 |
667 // Start a renderer-initiated user-initiated navigation to the 1st URL. | 667 // Start a renderer-initiated user-initiated navigation to the 1st URL. |
668 process()->sink().ClearMessages(); | 668 process()->sink().ClearMessages(); |
669 main_test_rfh()->SendRendererInitiatedNavigationRequest(kUrl1, true); | 669 main_test_rfh()->SendRendererInitiatedNavigationRequest(kUrl1, true); |
670 NavigationRequest* request1 = node->navigation_request(); | 670 NavigationRequest* request1 = node->navigation_request(); |
671 ASSERT_TRUE(request1); | 671 ASSERT_TRUE(request1); |
672 EXPECT_EQ(kUrl1, request1->common_params().url); | 672 EXPECT_EQ(kUrl1, request1->common_params().url); |
673 EXPECT_FALSE(request1->browser_initiated()); | 673 EXPECT_FALSE(request1->browser_initiated()); |
674 EXPECT_EQ(NavigationGestureUser, request1->common_params().gesture); | 674 EXPECT_TRUE(request1->begin_params().has_user_gesture); |
675 if (SiteIsolationPolicy::AreCrossProcessFramesPossible()) { | 675 if (SiteIsolationPolicy::AreCrossProcessFramesPossible()) { |
676 EXPECT_TRUE(GetSpeculativeRenderFrameHost(node)); | 676 EXPECT_TRUE(GetSpeculativeRenderFrameHost(node)); |
677 } else { | 677 } else { |
678 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node)); | 678 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node)); |
679 } | 679 } |
680 | 680 |
681 // Now receive a renderer-initiated non-user-initiated request. Nothing should | 681 // Now receive a renderer-initiated non-user-initiated request. Nothing should |
682 // change. | 682 // change. |
683 main_test_rfh()->SendRendererInitiatedNavigationRequest(kUrl2, false); | 683 main_test_rfh()->SendRendererInitiatedNavigationRequest(kUrl2, false); |
684 NavigationRequest* request2 = node->navigation_request(); | 684 NavigationRequest* request2 = node->navigation_request(); |
685 ASSERT_TRUE(request2); | 685 ASSERT_TRUE(request2); |
686 EXPECT_EQ(request1, request2); | 686 EXPECT_EQ(request1, request2); |
687 EXPECT_EQ(kUrl1, request2->common_params().url); | 687 EXPECT_EQ(kUrl1, request2->common_params().url); |
688 EXPECT_FALSE(request2->browser_initiated()); | 688 EXPECT_FALSE(request2->browser_initiated()); |
689 EXPECT_EQ(NavigationGestureUser, request2->common_params().gesture); | 689 EXPECT_TRUE(request2->begin_params().has_user_gesture); |
690 if (SiteIsolationPolicy::AreCrossProcessFramesPossible()) { | 690 if (SiteIsolationPolicy::AreCrossProcessFramesPossible()) { |
691 EXPECT_TRUE(GetSpeculativeRenderFrameHost(node)); | 691 EXPECT_TRUE(GetSpeculativeRenderFrameHost(node)); |
692 } else { | 692 } else { |
693 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node)); | 693 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node)); |
694 } | 694 } |
695 | 695 |
696 // Have the RenderFrameHost commit the navigation. | 696 // Have the RenderFrameHost commit the navigation. |
697 scoped_refptr<ResourceResponse> response(new ResourceResponse); | 697 scoped_refptr<ResourceResponse> response(new ResourceResponse); |
698 GetLoaderForNavigationRequest(request2)->CallOnResponseStarted( | 698 GetLoaderForNavigationRequest(request2)->CallOnResponseStarted( |
699 response, MakeEmptyStream(), nullptr); | 699 response, MakeEmptyStream(), nullptr); |
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
770 FrameTreeNode* node = main_test_rfh()->frame_tree_node(); | 770 FrameTreeNode* node = main_test_rfh()->frame_tree_node(); |
771 int32_t site_instance_id_0 = main_test_rfh()->GetSiteInstance()->GetId(); | 771 int32_t site_instance_id_0 = main_test_rfh()->GetSiteInstance()->GetId(); |
772 | 772 |
773 // Start a renderer-initiated non-user-initiated navigation to the 1st URL. | 773 // Start a renderer-initiated non-user-initiated navigation to the 1st URL. |
774 process()->sink().ClearMessages(); | 774 process()->sink().ClearMessages(); |
775 main_test_rfh()->SendRendererInitiatedNavigationRequest(kUrl1, false); | 775 main_test_rfh()->SendRendererInitiatedNavigationRequest(kUrl1, false); |
776 NavigationRequest* request1 = node->navigation_request(); | 776 NavigationRequest* request1 = node->navigation_request(); |
777 ASSERT_TRUE(request1); | 777 ASSERT_TRUE(request1); |
778 EXPECT_EQ(kUrl1, request1->common_params().url); | 778 EXPECT_EQ(kUrl1, request1->common_params().url); |
779 EXPECT_FALSE(request1->browser_initiated()); | 779 EXPECT_FALSE(request1->browser_initiated()); |
780 EXPECT_EQ(NavigationGestureAuto, request1->common_params().gesture); | 780 EXPECT_FALSE(request1->begin_params().has_user_gesture); |
781 if (SiteIsolationPolicy::AreCrossProcessFramesPossible()) { | 781 if (SiteIsolationPolicy::AreCrossProcessFramesPossible()) { |
782 EXPECT_TRUE(GetSpeculativeRenderFrameHost(node)); | 782 EXPECT_TRUE(GetSpeculativeRenderFrameHost(node)); |
783 } else { | 783 } else { |
784 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node)); | 784 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node)); |
785 } | 785 } |
786 base::WeakPtr<TestNavigationURLLoader> loader1 = | 786 base::WeakPtr<TestNavigationURLLoader> loader1 = |
787 GetLoaderForNavigationRequest(request1)->AsWeakPtr(); | 787 GetLoaderForNavigationRequest(request1)->AsWeakPtr(); |
788 EXPECT_TRUE(loader1); | 788 EXPECT_TRUE(loader1); |
789 | 789 |
790 // Now receive a 2nd similar request that should replace the current one. | 790 // Now receive a 2nd similar request that should replace the current one. |
791 main_test_rfh()->SendRendererInitiatedNavigationRequest(kUrl2, false); | 791 main_test_rfh()->SendRendererInitiatedNavigationRequest(kUrl2, false); |
792 NavigationRequest* request2 = node->navigation_request(); | 792 NavigationRequest* request2 = node->navigation_request(); |
793 EXPECT_EQ(kUrl2, request2->common_params().url); | 793 EXPECT_EQ(kUrl2, request2->common_params().url); |
794 EXPECT_FALSE(request2->browser_initiated()); | 794 EXPECT_FALSE(request2->browser_initiated()); |
795 EXPECT_EQ(NavigationGestureAuto, request2->common_params().gesture); | 795 EXPECT_FALSE(request2->begin_params().has_user_gesture); |
796 if (SiteIsolationPolicy::AreCrossProcessFramesPossible()) { | 796 if (SiteIsolationPolicy::AreCrossProcessFramesPossible()) { |
797 EXPECT_TRUE(GetSpeculativeRenderFrameHost(node)); | 797 EXPECT_TRUE(GetSpeculativeRenderFrameHost(node)); |
798 } else { | 798 } else { |
799 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node)); | 799 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node)); |
800 } | 800 } |
801 | 801 |
802 // Confirm that the first loader got destroyed. | 802 // Confirm that the first loader got destroyed. |
803 EXPECT_FALSE(loader1); | 803 EXPECT_FALSE(loader1); |
804 | 804 |
805 // Have the RenderFrameHost commit the navigation. | 805 // Have the RenderFrameHost commit the navigation. |
(...skipping 423 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1229 | 1229 |
1230 // The first navigation commits. This should clear up the speculative RFH and | 1230 // The first navigation commits. This should clear up the speculative RFH and |
1231 // the ongoing NavigationRequest. | 1231 // the ongoing NavigationRequest. |
1232 speculative_rfh->SendNavigate(entry_id, true, kUrl2); | 1232 speculative_rfh->SendNavigate(entry_id, true, kUrl2); |
1233 EXPECT_FALSE(node->navigation_request()); | 1233 EXPECT_FALSE(node->navigation_request()); |
1234 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node)); | 1234 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node)); |
1235 EXPECT_EQ(speculative_rfh, main_test_rfh()); | 1235 EXPECT_EQ(speculative_rfh, main_test_rfh()); |
1236 } | 1236 } |
1237 | 1237 |
1238 } // namespace content | 1238 } // namespace content |
OLD | NEW |