| 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_FALSE(request->begin_params().has_user_gesture); | 187 EXPECT_EQ(NavigationGestureAuto, request->common_params().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_FALSE(request->begin_params().has_user_gesture); | 232 EXPECT_EQ(NavigationGestureAuto, request->common_params().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_TRUE(request2->begin_params().has_user_gesture); | 622 EXPECT_EQ(NavigationGestureUser, request2->common_params().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_TRUE(request1->begin_params().has_user_gesture); | 674 EXPECT_EQ(NavigationGestureUser, request1->common_params().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_TRUE(request2->begin_params().has_user_gesture); | 689 EXPECT_EQ(NavigationGestureUser, request2->common_params().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_FALSE(request1->begin_params().has_user_gesture); | 780 EXPECT_EQ(NavigationGestureAuto, request1->common_params().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_FALSE(request2->begin_params().has_user_gesture); | 795 EXPECT_EQ(NavigationGestureAuto, request2->common_params().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 430 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1236 | 1236 |
| 1237 // The first navigation commits. This should clear up the speculative RFH and | 1237 // The first navigation commits. This should clear up the speculative RFH and |
| 1238 // the ongoing NavigationRequest. | 1238 // the ongoing NavigationRequest. |
| 1239 speculative_rfh->SendNavigate(entry_id, true, kUrl2); | 1239 speculative_rfh->SendNavigate(entry_id, true, kUrl2); |
| 1240 EXPECT_FALSE(node->navigation_request()); | 1240 EXPECT_FALSE(node->navigation_request()); |
| 1241 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node)); | 1241 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node)); |
| 1242 EXPECT_EQ(speculative_rfh, main_test_rfh()); | 1242 EXPECT_EQ(speculative_rfh, main_test_rfh()); |
| 1243 } | 1243 } |
| 1244 | 1244 |
| 1245 } // namespace content | 1245 } // namespace content |
| OLD | NEW |