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

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

Issue 2499313003: Set user_gesture bit at NavigationHandle creation time. (Closed)
Patch Set: rebase Created 4 years 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/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
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
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
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
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
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
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
OLDNEW
« no previous file with comments | « content/browser/frame_host/navigator_impl.cc ('k') | content/browser/frame_host/render_frame_host_impl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698