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

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

Issue 2673963003: Prepare to turn on AreCrossProcessFramesPossible by default. (Closed)
Patch Set: Created 3 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
« no previous file with comments | « no previous file | content/browser/frame_host/render_frame_host_manager.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 214 matching lines...) Expand 10 before | Expand all | Expand 10 after
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_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 (AreAllSitesIsolatedForTesting()) {
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);
243 GetLoaderForNavigationRequest(request)->CallOnResponseStarted( 243 GetLoaderForNavigationRequest(request)->CallOnResponseStarted(
244 response, MakeEmptyStream(), nullptr); 244 response, MakeEmptyStream(), nullptr);
245 if (SiteIsolationPolicy::AreCrossProcessFramesPossible()) { 245 if (AreAllSitesIsolatedForTesting()) {
246 EXPECT_TRUE( 246 EXPECT_TRUE(
247 DidRenderFrameHostRequestCommit(GetSpeculativeRenderFrameHost(node))); 247 DidRenderFrameHostRequestCommit(GetSpeculativeRenderFrameHost(node)));
248 } else { 248 } else {
249 EXPECT_TRUE(DidRenderFrameHostRequestCommit(main_test_rfh())); 249 EXPECT_TRUE(DidRenderFrameHostRequestCommit(main_test_rfh()));
250 } 250 }
251 EXPECT_TRUE(main_test_rfh()->is_loading()); 251 EXPECT_TRUE(main_test_rfh()->is_loading());
252 EXPECT_FALSE(node->navigation_request()); 252 EXPECT_FALSE(node->navigation_request());
253 253
254 // Commit the navigation. 254 // Commit the navigation.
255 main_test_rfh()->SendNavigate(0, true, kUrl2); 255 main_test_rfh()->SendNavigate(0, true, kUrl2);
(...skipping 368 matching lines...) Expand 10 before | Expand all | Expand 10 after
624 ASSERT_TRUE(request2); 624 ASSERT_TRUE(request2);
625 EXPECT_EQ(kUrl2, request2->common_params().url); 625 EXPECT_EQ(kUrl2, request2->common_params().url);
626 EXPECT_FALSE(request2->browser_initiated()); 626 EXPECT_FALSE(request2->browser_initiated());
627 EXPECT_TRUE(request2->begin_params().has_user_gesture); 627 EXPECT_TRUE(request2->begin_params().has_user_gesture);
628 628
629 // Confirm that the first loader got destroyed. 629 // Confirm that the first loader got destroyed.
630 EXPECT_FALSE(loader1); 630 EXPECT_FALSE(loader1);
631 631
632 // Confirm that the speculative RenderFrameHost was destroyed in the non 632 // Confirm that the speculative RenderFrameHost was destroyed in the non
633 // SitePerProcess case. 633 // SitePerProcess case.
634 if (SiteIsolationPolicy::AreCrossProcessFramesPossible()) { 634 if (AreAllSitesIsolatedForTesting()) {
635 EXPECT_TRUE(GetSpeculativeRenderFrameHost(node)); 635 EXPECT_TRUE(GetSpeculativeRenderFrameHost(node));
636 } else { 636 } else {
637 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node)); 637 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node));
638 } 638 }
639 639
640 // Have the RenderFrameHost commit the navigation. 640 // Have the RenderFrameHost commit the navigation.
641 scoped_refptr<ResourceResponse> response(new ResourceResponse); 641 scoped_refptr<ResourceResponse> response(new ResourceResponse);
642 GetLoaderForNavigationRequest(request2)->CallOnResponseStarted( 642 GetLoaderForNavigationRequest(request2)->CallOnResponseStarted(
643 response, MakeEmptyStream(), nullptr); 643 response, MakeEmptyStream(), nullptr);
644 if (SiteIsolationPolicy::AreCrossProcessFramesPossible()) { 644 if (AreAllSitesIsolatedForTesting()) {
645 EXPECT_TRUE( 645 EXPECT_TRUE(
646 DidRenderFrameHostRequestCommit(GetSpeculativeRenderFrameHost(node))); 646 DidRenderFrameHostRequestCommit(GetSpeculativeRenderFrameHost(node)));
647 } else { 647 } else {
648 EXPECT_TRUE(DidRenderFrameHostRequestCommit(main_test_rfh())); 648 EXPECT_TRUE(DidRenderFrameHostRequestCommit(main_test_rfh()));
649 } 649 }
650 650
651 // Commit the navigation. 651 // Commit the navigation.
652 main_test_rfh()->SendNavigate(0, true, kUrl2); 652 main_test_rfh()->SendNavigate(0, true, kUrl2);
653 653
654 // Confirm that the commit corresponds to the new request. 654 // Confirm that the commit corresponds to the new request.
(...skipping 15 matching lines...) Expand all
670 FrameTreeNode* node = main_test_rfh()->frame_tree_node(); 670 FrameTreeNode* node = main_test_rfh()->frame_tree_node();
671 671
672 // Start a renderer-initiated user-initiated navigation to the 1st URL. 672 // Start a renderer-initiated user-initiated navigation to the 1st URL.
673 process()->sink().ClearMessages(); 673 process()->sink().ClearMessages();
674 main_test_rfh()->SendRendererInitiatedNavigationRequest(kUrl1, true); 674 main_test_rfh()->SendRendererInitiatedNavigationRequest(kUrl1, true);
675 NavigationRequest* request1 = node->navigation_request(); 675 NavigationRequest* request1 = node->navigation_request();
676 ASSERT_TRUE(request1); 676 ASSERT_TRUE(request1);
677 EXPECT_EQ(kUrl1, request1->common_params().url); 677 EXPECT_EQ(kUrl1, request1->common_params().url);
678 EXPECT_FALSE(request1->browser_initiated()); 678 EXPECT_FALSE(request1->browser_initiated());
679 EXPECT_TRUE(request1->begin_params().has_user_gesture); 679 EXPECT_TRUE(request1->begin_params().has_user_gesture);
680 if (SiteIsolationPolicy::AreCrossProcessFramesPossible()) { 680 if (AreAllSitesIsolatedForTesting()) {
681 EXPECT_TRUE(GetSpeculativeRenderFrameHost(node)); 681 EXPECT_TRUE(GetSpeculativeRenderFrameHost(node));
682 } else { 682 } else {
683 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node)); 683 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node));
684 } 684 }
685 685
686 // Now receive a renderer-initiated non-user-initiated request. Nothing should 686 // Now receive a renderer-initiated non-user-initiated request. Nothing should
687 // change. 687 // change.
688 main_test_rfh()->SendRendererInitiatedNavigationRequest(kUrl2, false); 688 main_test_rfh()->SendRendererInitiatedNavigationRequest(kUrl2, false);
689 NavigationRequest* request2 = node->navigation_request(); 689 NavigationRequest* request2 = node->navigation_request();
690 ASSERT_TRUE(request2); 690 ASSERT_TRUE(request2);
691 EXPECT_EQ(request1, request2); 691 EXPECT_EQ(request1, request2);
692 EXPECT_EQ(kUrl1, request2->common_params().url); 692 EXPECT_EQ(kUrl1, request2->common_params().url);
693 EXPECT_FALSE(request2->browser_initiated()); 693 EXPECT_FALSE(request2->browser_initiated());
694 EXPECT_TRUE(request2->begin_params().has_user_gesture); 694 EXPECT_TRUE(request2->begin_params().has_user_gesture);
695 if (SiteIsolationPolicy::AreCrossProcessFramesPossible()) { 695 if (AreAllSitesIsolatedForTesting()) {
696 EXPECT_TRUE(GetSpeculativeRenderFrameHost(node)); 696 EXPECT_TRUE(GetSpeculativeRenderFrameHost(node));
697 } else { 697 } else {
698 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node)); 698 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node));
699 } 699 }
700 700
701 // Have the RenderFrameHost commit the navigation. 701 // Have the RenderFrameHost commit the navigation.
702 scoped_refptr<ResourceResponse> response(new ResourceResponse); 702 scoped_refptr<ResourceResponse> response(new ResourceResponse);
703 GetLoaderForNavigationRequest(request2)->CallOnResponseStarted( 703 GetLoaderForNavigationRequest(request2)->CallOnResponseStarted(
704 response, MakeEmptyStream(), nullptr); 704 response, MakeEmptyStream(), nullptr);
705 if (SiteIsolationPolicy::AreCrossProcessFramesPossible()) { 705 if (AreAllSitesIsolatedForTesting()) {
706 EXPECT_TRUE( 706 EXPECT_TRUE(
707 DidRenderFrameHostRequestCommit(GetSpeculativeRenderFrameHost(node))); 707 DidRenderFrameHostRequestCommit(GetSpeculativeRenderFrameHost(node)));
708 } else { 708 } else {
709 EXPECT_TRUE(DidRenderFrameHostRequestCommit(main_test_rfh())); 709 EXPECT_TRUE(DidRenderFrameHostRequestCommit(main_test_rfh()));
710 } 710 }
711 711
712 // Commit the navigation. 712 // Commit the navigation.
713 main_test_rfh()->SendNavigate(0, true, kUrl1); 713 main_test_rfh()->SendNavigate(0, true, kUrl1);
714 EXPECT_EQ(kUrl1, contents()->GetLastCommittedURL()); 714 EXPECT_EQ(kUrl1, contents()->GetLastCommittedURL());
715 } 715 }
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
776 int32_t site_instance_id_0 = main_test_rfh()->GetSiteInstance()->GetId(); 776 int32_t site_instance_id_0 = main_test_rfh()->GetSiteInstance()->GetId();
777 777
778 // Start a renderer-initiated non-user-initiated navigation to the 1st URL. 778 // Start a renderer-initiated non-user-initiated navigation to the 1st URL.
779 process()->sink().ClearMessages(); 779 process()->sink().ClearMessages();
780 main_test_rfh()->SendRendererInitiatedNavigationRequest(kUrl1, false); 780 main_test_rfh()->SendRendererInitiatedNavigationRequest(kUrl1, false);
781 NavigationRequest* request1 = node->navigation_request(); 781 NavigationRequest* request1 = node->navigation_request();
782 ASSERT_TRUE(request1); 782 ASSERT_TRUE(request1);
783 EXPECT_EQ(kUrl1, request1->common_params().url); 783 EXPECT_EQ(kUrl1, request1->common_params().url);
784 EXPECT_FALSE(request1->browser_initiated()); 784 EXPECT_FALSE(request1->browser_initiated());
785 EXPECT_FALSE(request1->begin_params().has_user_gesture); 785 EXPECT_FALSE(request1->begin_params().has_user_gesture);
786 if (SiteIsolationPolicy::AreCrossProcessFramesPossible()) { 786 if (AreAllSitesIsolatedForTesting()) {
787 EXPECT_TRUE(GetSpeculativeRenderFrameHost(node)); 787 EXPECT_TRUE(GetSpeculativeRenderFrameHost(node));
788 } else { 788 } else {
789 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node)); 789 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node));
790 } 790 }
791 base::WeakPtr<TestNavigationURLLoader> loader1 = 791 base::WeakPtr<TestNavigationURLLoader> loader1 =
792 GetLoaderForNavigationRequest(request1)->AsWeakPtr(); 792 GetLoaderForNavigationRequest(request1)->AsWeakPtr();
793 EXPECT_TRUE(loader1); 793 EXPECT_TRUE(loader1);
794 794
795 // Now receive a 2nd similar request that should replace the current one. 795 // Now receive a 2nd similar request that should replace the current one.
796 main_test_rfh()->SendRendererInitiatedNavigationRequest(kUrl2, false); 796 main_test_rfh()->SendRendererInitiatedNavigationRequest(kUrl2, false);
797 NavigationRequest* request2 = node->navigation_request(); 797 NavigationRequest* request2 = node->navigation_request();
798 EXPECT_EQ(kUrl2, request2->common_params().url); 798 EXPECT_EQ(kUrl2, request2->common_params().url);
799 EXPECT_FALSE(request2->browser_initiated()); 799 EXPECT_FALSE(request2->browser_initiated());
800 EXPECT_FALSE(request2->begin_params().has_user_gesture); 800 EXPECT_FALSE(request2->begin_params().has_user_gesture);
801 if (SiteIsolationPolicy::AreCrossProcessFramesPossible()) { 801 if (AreAllSitesIsolatedForTesting()) {
802 EXPECT_TRUE(GetSpeculativeRenderFrameHost(node)); 802 EXPECT_TRUE(GetSpeculativeRenderFrameHost(node));
803 } else { 803 } else {
804 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node)); 804 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node));
805 } 805 }
806 806
807 // Confirm that the first loader got destroyed. 807 // Confirm that the first loader got destroyed.
808 EXPECT_FALSE(loader1); 808 EXPECT_FALSE(loader1);
809 809
810 // Have the RenderFrameHost commit the navigation. 810 // Have the RenderFrameHost commit the navigation.
811 scoped_refptr<ResourceResponse> response(new ResourceResponse); 811 scoped_refptr<ResourceResponse> response(new ResourceResponse);
812 GetLoaderForNavigationRequest(request2)->CallOnResponseStarted( 812 GetLoaderForNavigationRequest(request2)->CallOnResponseStarted(
813 response, MakeEmptyStream(), nullptr); 813 response, MakeEmptyStream(), nullptr);
814 if (SiteIsolationPolicy::AreCrossProcessFramesPossible()) { 814 if (AreAllSitesIsolatedForTesting()) {
815 EXPECT_TRUE( 815 EXPECT_TRUE(
816 DidRenderFrameHostRequestCommit(GetSpeculativeRenderFrameHost(node))); 816 DidRenderFrameHostRequestCommit(GetSpeculativeRenderFrameHost(node)));
817 } else { 817 } else {
818 EXPECT_TRUE(DidRenderFrameHostRequestCommit(main_test_rfh())); 818 EXPECT_TRUE(DidRenderFrameHostRequestCommit(main_test_rfh()));
819 } 819 }
820 820
821 // Commit the navigation. 821 // Commit the navigation.
822 main_test_rfh()->SendNavigate(0, true, kUrl2); 822 main_test_rfh()->SendNavigate(0, true, kUrl2);
823 EXPECT_EQ(kUrl2, contents()->GetLastCommittedURL()); 823 EXPECT_EQ(kUrl2, contents()->GetLastCommittedURL());
824 824
(...skipping 409 matching lines...) Expand 10 before | Expand all | Expand 10 after
1234 1234
1235 // The first navigation commits. This should clear up the speculative RFH and 1235 // The first navigation commits. This should clear up the speculative RFH and
1236 // the ongoing NavigationRequest. 1236 // the ongoing NavigationRequest.
1237 speculative_rfh->SendNavigate(entry_id, true, kUrl2); 1237 speculative_rfh->SendNavigate(entry_id, true, kUrl2);
1238 EXPECT_FALSE(node->navigation_request()); 1238 EXPECT_FALSE(node->navigation_request());
1239 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node)); 1239 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node));
1240 EXPECT_EQ(speculative_rfh, main_test_rfh()); 1240 EXPECT_EQ(speculative_rfh, main_test_rfh());
1241 } 1241 }
1242 1242
1243 } // namespace content 1243 } // namespace content
OLDNEW
« no previous file with comments | « no previous file | content/browser/frame_host/render_frame_host_manager.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698