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

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

Issue 946543003: PlzNavigate: have renderer-initiated navigations be same-process (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Comment changes Created 5 years, 9 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
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 "base/command_line.h" 5 #include "base/command_line.h"
6 #include "base/macros.h" 6 #include "base/macros.h"
7 #include "base/time/time.h" 7 #include "base/time/time.h"
8 #include "content/browser/frame_host/navigation_controller_impl.h" 8 #include "content/browser/frame_host/navigation_controller_impl.h"
9 #include "content/browser/frame_host/navigation_entry_impl.h" 9 #include "content/browser/frame_host/navigation_entry_impl.h"
10 #include "content/browser/frame_host/navigation_request.h" 10 #include "content/browser/frame_host/navigation_request.h"
(...skipping 136 matching lines...) Expand 10 before | Expand all | Expand 10 after
147 // After a navigation is finished no speculative RenderFrameHost should 147 // After a navigation is finished no speculative RenderFrameHost should
148 // exist. 148 // exist.
149 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node)); 149 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node));
150 150
151 // With PlzNavigate enabled a pending RenderFrameHost should never exist. 151 // With PlzNavigate enabled a pending RenderFrameHost should never exist.
152 EXPECT_FALSE(node->render_manager()->pending_frame_host()); 152 EXPECT_FALSE(node->render_manager()->pending_frame_host());
153 } 153 }
154 154
155 // PlzNavigate: Test a complete renderer-initiated same-site navigation. 155 // PlzNavigate: Test a complete renderer-initiated same-site navigation.
156 TEST_F(NavigatorTestWithBrowserSideNavigation, 156 TEST_F(NavigatorTestWithBrowserSideNavigation,
157 SimpleRendererInitiatedNavigation) { 157 SimpleRendererInitiatedSameSiteNavigation) {
158 const GURL kUrl1("http://www.chromium.org/"); 158 const GURL kUrl1("http://www.chromium.org/");
159 const GURL kUrl2("http://www.chromium.org/Home"); 159 const GURL kUrl2("http://www.chromium.org/Home");
160 160
161 contents()->NavigateAndCommit(kUrl1); 161 contents()->NavigateAndCommit(kUrl1);
162 EXPECT_TRUE(main_test_rfh()->IsRenderFrameLive()); 162 EXPECT_TRUE(main_test_rfh()->IsRenderFrameLive());
163 163
164 // Start a renderer-initiated non-user-initiated navigation. 164 // Start a renderer-initiated non-user-initiated navigation.
165 process()->sink().ClearMessages(); 165 process()->sink().ClearMessages();
166 main_test_rfh()->SendRendererInitiatedNavigationRequest(kUrl2, false); 166 main_test_rfh()->SendRendererInitiatedNavigationRequest(kUrl2, false);
167 FrameTreeNode* node = main_test_rfh()->frame_tree_node(); 167 FrameTreeNode* node = main_test_rfh()->frame_tree_node();
(...skipping 19 matching lines...) Expand all
187 main_test_rfh()->SendNavigate(0, kUrl2); 187 main_test_rfh()->SendNavigate(0, kUrl2);
188 EXPECT_EQ(RenderFrameHostImpl::STATE_DEFAULT, main_test_rfh()->rfh_state()); 188 EXPECT_EQ(RenderFrameHostImpl::STATE_DEFAULT, main_test_rfh()->rfh_state());
189 EXPECT_EQ(SiteInstanceImpl::GetSiteForURL(browser_context(), kUrl2), 189 EXPECT_EQ(SiteInstanceImpl::GetSiteForURL(browser_context(), kUrl2),
190 main_test_rfh()->GetSiteInstance()->GetSiteURL()); 190 main_test_rfh()->GetSiteInstance()->GetSiteURL());
191 EXPECT_EQ(kUrl2, contents()->GetLastCommittedURL()); 191 EXPECT_EQ(kUrl2, contents()->GetLastCommittedURL());
192 EXPECT_FALSE(GetNavigationRequestForFrameTreeNode(node)); 192 EXPECT_FALSE(GetNavigationRequestForFrameTreeNode(node));
193 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node)); 193 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node));
194 EXPECT_FALSE(node->render_manager()->pending_frame_host()); 194 EXPECT_FALSE(node->render_manager()->pending_frame_host());
195 } 195 }
196 196
197 // PlzNavigate: Test a complete renderer-initiated navigation that should be
198 // cross-site but does not result in a SiteInstance swap because its
199 // renderer-initiated.
200 TEST_F(NavigatorTestWithBrowserSideNavigation,
201 SimpleRendererInitiatedCrossSiteNavigation) {
202 const GURL kUrl1("http://www.chromium.org/");
203 const GURL kUrl2("http://www.google.com");
204
205 contents()->NavigateAndCommit(kUrl1);
206 EXPECT_TRUE(main_test_rfh()->IsRenderFrameLive());
207 int32 site_instance_id_1 = main_test_rfh()->GetSiteInstance()->GetId();
208
209 // Start a renderer-initiated non-user-initiated navigation.
210 process()->sink().ClearMessages();
211 main_test_rfh()->SendRendererInitiatedNavigationRequest(kUrl2, false);
212 FrameTreeNode* node = main_test_rfh()->frame_tree_node();
213 NavigationRequest* request = GetNavigationRequestForFrameTreeNode(node);
214 ASSERT_TRUE(request);
215
216 // The navigation is immediately started as there's no need to wait for
217 // beforeUnload to be executed.
218 EXPECT_EQ(NavigationRequest::STARTED, request->state());
219 EXPECT_FALSE(request->begin_params().has_user_gesture);
220 EXPECT_EQ(kUrl2, request->common_params().url);
221 EXPECT_FALSE(request->browser_initiated());
222 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node));
223
224 // Have the current RenderFrameHost commit the navigation.
225 scoped_refptr<ResourceResponse> response(new ResourceResponse);
226 GetLoaderForNavigationRequest(request)
227 ->CallOnResponseStarted(response, MakeEmptyStream());
228 EXPECT_TRUE(DidRenderFrameHostRequestCommit(main_test_rfh()));
229 EXPECT_EQ(NavigationRequest::RESPONSE_STARTED, request->state());
230
231 // Commit the navigation.
232 main_test_rfh()->SendNavigate(0, kUrl2);
233 EXPECT_EQ(RenderFrameHostImpl::STATE_DEFAULT, main_test_rfh()->rfh_state());
234 EXPECT_EQ(kUrl2, contents()->GetLastCommittedURL());
235 EXPECT_FALSE(GetNavigationRequestForFrameTreeNode(node));
236 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node));
237 EXPECT_FALSE(node->render_manager()->pending_frame_host());
238
239 // The SiteInstance did not change.
240 EXPECT_EQ(site_instance_id_1, main_test_rfh()->GetSiteInstance()->GetId());
241 }
242
197 // PlzNavigate: Test that a beforeUnload denial cancels the navigation. 243 // PlzNavigate: Test that a beforeUnload denial cancels the navigation.
198 TEST_F(NavigatorTestWithBrowserSideNavigation, 244 TEST_F(NavigatorTestWithBrowserSideNavigation,
199 BeforeUnloadDenialCancelNavigation) { 245 BeforeUnloadDenialCancelNavigation) {
200 const GURL kUrl1("http://www.google.com/"); 246 const GURL kUrl1("http://www.google.com/");
201 const GURL kUrl2("http://www.chromium.org/"); 247 const GURL kUrl2("http://www.chromium.org/");
202 248
203 contents()->NavigateAndCommit(kUrl1); 249 contents()->NavigateAndCommit(kUrl1);
204 250
205 // Start a new navigation. 251 // Start a new navigation.
206 FrameTreeNode* node = main_test_rfh()->frame_tree_node(); 252 FrameTreeNode* node = main_test_rfh()->frame_tree_node();
(...skipping 328 matching lines...) Expand 10 before | Expand all | Expand 10 after
535 RequestNavigation(node, kUrl1); 581 RequestNavigation(node, kUrl1);
536 main_test_rfh()->SendBeforeUnloadACK(true); 582 main_test_rfh()->SendBeforeUnloadACK(true);
537 NavigationRequest* request1 = GetNavigationRequestForFrameTreeNode(node); 583 NavigationRequest* request1 = GetNavigationRequestForFrameTreeNode(node);
538 ASSERT_TRUE(request1); 584 ASSERT_TRUE(request1);
539 EXPECT_EQ(kUrl1, request1->common_params().url); 585 EXPECT_EQ(kUrl1, request1->common_params().url);
540 EXPECT_TRUE(request1->browser_initiated()); 586 EXPECT_TRUE(request1->browser_initiated());
541 base::WeakPtr<TestNavigationURLLoader> loader1 = 587 base::WeakPtr<TestNavigationURLLoader> loader1 =
542 GetLoaderForNavigationRequest(request1)->AsWeakPtr(); 588 GetLoaderForNavigationRequest(request1)->AsWeakPtr();
543 EXPECT_TRUE(loader1); 589 EXPECT_TRUE(loader1);
544 590
545 // Confirm a speculative RenderFrameHost was created. 591 // Confirm that a speculative RenderFrameHost was created.
546 TestRenderFrameHost* speculative_rfh = GetSpeculativeRenderFrameHost(node); 592 ASSERT_TRUE(GetSpeculativeRenderFrameHost(node));
547 ASSERT_TRUE(speculative_rfh);
548 int32 site_instance_id_1 = speculative_rfh->GetSiteInstance()->GetId();
549 593
550 // Now receive a renderer-initiated user-initiated request. It should replace 594 // Now receive a renderer-initiated user-initiated request. It should replace
551 // the current NavigationRequest. 595 // the current NavigationRequest.
552 main_test_rfh()->SendRendererInitiatedNavigationRequest(kUrl2, true); 596 main_test_rfh()->SendRendererInitiatedNavigationRequest(kUrl2, true);
553 NavigationRequest* request2 = GetNavigationRequestForFrameTreeNode(node); 597 NavigationRequest* request2 = GetNavigationRequestForFrameTreeNode(node);
554 ASSERT_TRUE(request2); 598 ASSERT_TRUE(request2);
555 EXPECT_EQ(kUrl2, request2->common_params().url); 599 EXPECT_EQ(kUrl2, request2->common_params().url);
556 EXPECT_FALSE(request2->browser_initiated()); 600 EXPECT_FALSE(request2->browser_initiated());
557 EXPECT_TRUE(request2->begin_params().has_user_gesture); 601 EXPECT_TRUE(request2->begin_params().has_user_gesture);
558 602
559 // Confirm that the first loader got destroyed. 603 // Confirm that the first loader got destroyed.
560 EXPECT_FALSE(loader1); 604 EXPECT_FALSE(loader1);
561 605
562 // Confirm that a new speculative RenderFrameHost was created. 606 // Confirm that the speculative RenderFrameHost was destroyed.
563 speculative_rfh = GetSpeculativeRenderFrameHost(node); 607 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node));
564 ASSERT_TRUE(speculative_rfh);
565 int32 site_instance_id_2 = speculative_rfh->GetSiteInstance()->GetId();
566 EXPECT_NE(site_instance_id_1, site_instance_id_2);
567 608
568 // Have the RenderFrameHost commit the navigation. 609 // Have the RenderFrameHost commit the navigation.
569 scoped_refptr<ResourceResponse> response(new ResourceResponse); 610 scoped_refptr<ResourceResponse> response(new ResourceResponse);
570 GetLoaderForNavigationRequest(request2) 611 GetLoaderForNavigationRequest(request2)
571 ->CallOnResponseStarted(response, MakeEmptyStream()); 612 ->CallOnResponseStarted(response, MakeEmptyStream());
572 EXPECT_TRUE(DidRenderFrameHostRequestCommit(speculative_rfh)); 613 EXPECT_TRUE(DidRenderFrameHostRequestCommit(main_test_rfh()));
573 EXPECT_FALSE(DidRenderFrameHostRequestCommit(main_test_rfh()));
574 614
575 // Commit the navigation. 615 // Commit the navigation.
576 speculative_rfh->SendNavigate(0, kUrl2); 616 main_test_rfh()->SendNavigate(0, kUrl2);
577 617
578 // Confirm that the commit corresponds to the new request. 618 // Confirm that the commit corresponds to the new request.
579 ASSERT_TRUE(main_test_rfh()); 619 ASSERT_TRUE(main_test_rfh());
580 EXPECT_EQ(kUrl2, contents()->GetLastCommittedURL()); 620 EXPECT_EQ(kUrl2, contents()->GetLastCommittedURL());
581
582 // Confirm that the committed RenderFrameHost is the latest speculative one.
583 EXPECT_EQ(site_instance_id_2, main_test_rfh()->GetSiteInstance()->GetId());
584 } 621 }
585 622
586 // PlzNavigate: Test that a renderer-initiated user-initiated navigation is NOT 623 // PlzNavigate: Test that a renderer-initiated user-initiated navigation is NOT
587 // canceled if a renderer-initiated non-user-initiated request is issued in the 624 // canceled if a renderer-initiated non-user-initiated request is issued in the
588 // meantime. 625 // meantime.
589 TEST_F(NavigatorTestWithBrowserSideNavigation, 626 TEST_F(NavigatorTestWithBrowserSideNavigation,
590 RendererNonUserInitiatedNavigationDoesntCancelRendererUserInitiated) { 627 RendererNonUserInitiatedNavigationDoesntCancelRendererUserInitiated) {
591 const GURL kUrl0("http://www.wikipedia.org/"); 628 const GURL kUrl0("http://www.wikipedia.org/");
592 const GURL kUrl1("http://www.chromium.org/"); 629 const GURL kUrl1("http://www.chromium.org/");
593 const GURL kUrl2("http://www.google.com/"); 630 const GURL kUrl2("http://www.google.com/");
594 631
595 // Initialization. 632 // Initialization.
596 contents()->NavigateAndCommit(kUrl0); 633 contents()->NavigateAndCommit(kUrl0);
597 FrameTreeNode* node = main_test_rfh()->frame_tree_node(); 634 FrameTreeNode* node = main_test_rfh()->frame_tree_node();
598 635
599 // Start a renderer-initiated user-initiated navigation to the 1st URL. 636 // Start a renderer-initiated user-initiated navigation to the 1st URL.
600 process()->sink().ClearMessages(); 637 process()->sink().ClearMessages();
601 main_test_rfh()->SendRendererInitiatedNavigationRequest(kUrl1, true); 638 main_test_rfh()->SendRendererInitiatedNavigationRequest(kUrl1, true);
602 NavigationRequest* request1 = GetNavigationRequestForFrameTreeNode(node); 639 NavigationRequest* request1 = GetNavigationRequestForFrameTreeNode(node);
603 ASSERT_TRUE(request1); 640 ASSERT_TRUE(request1);
604 EXPECT_EQ(kUrl1, request1->common_params().url); 641 EXPECT_EQ(kUrl1, request1->common_params().url);
605 EXPECT_FALSE(request1->browser_initiated()); 642 EXPECT_FALSE(request1->browser_initiated());
606 EXPECT_TRUE(request1->begin_params().has_user_gesture); 643 EXPECT_TRUE(request1->begin_params().has_user_gesture);
607 EXPECT_TRUE(GetSpeculativeRenderFrameHost(node)); 644 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node));
608 645
609 // Now receive a renderer-initiated non-user-initiated request. Nothing should 646 // Now receive a renderer-initiated non-user-initiated request. Nothing should
610 // change. 647 // change.
611 main_test_rfh()->SendRendererInitiatedNavigationRequest(kUrl2, false); 648 main_test_rfh()->SendRendererInitiatedNavigationRequest(kUrl2, false);
612 NavigationRequest* request2 = GetNavigationRequestForFrameTreeNode(node); 649 NavigationRequest* request2 = GetNavigationRequestForFrameTreeNode(node);
613 ASSERT_TRUE(request2); 650 ASSERT_TRUE(request2);
614 EXPECT_EQ(request1, request2); 651 EXPECT_EQ(request1, request2);
615 EXPECT_EQ(kUrl1, request2->common_params().url); 652 EXPECT_EQ(kUrl1, request2->common_params().url);
616 EXPECT_FALSE(request2->browser_initiated()); 653 EXPECT_FALSE(request2->browser_initiated());
617 EXPECT_TRUE(request2->begin_params().has_user_gesture); 654 EXPECT_TRUE(request2->begin_params().has_user_gesture);
618 TestRenderFrameHost* speculative_rfh = GetSpeculativeRenderFrameHost(node); 655 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node));
619 ASSERT_TRUE(speculative_rfh);
620 656
621 // Have the RenderFrameHost commit the navigation. 657 // Have the RenderFrameHost commit the navigation.
622 scoped_refptr<ResourceResponse> response(new ResourceResponse); 658 scoped_refptr<ResourceResponse> response(new ResourceResponse);
623 GetLoaderForNavigationRequest(request2) 659 GetLoaderForNavigationRequest(request2)
624 ->CallOnResponseStarted(response, MakeEmptyStream()); 660 ->CallOnResponseStarted(response, MakeEmptyStream());
625 EXPECT_TRUE(DidRenderFrameHostRequestCommit(speculative_rfh)); 661 EXPECT_TRUE(DidRenderFrameHostRequestCommit(main_test_rfh()));
626 EXPECT_FALSE(DidRenderFrameHostRequestCommit(main_test_rfh()));
627 662
628 // Commit the navigation. 663 // Commit the navigation.
629 speculative_rfh->SendNavigate(0, kUrl1); 664 main_test_rfh()->SendNavigate(0, kUrl1);
630 EXPECT_EQ(kUrl1, contents()->GetLastCommittedURL()); 665 EXPECT_EQ(kUrl1, contents()->GetLastCommittedURL());
631 } 666 }
632 667
633 // PlzNavigate: Test that a browser-initiated navigation is NOT canceled if a 668 // PlzNavigate: Test that a browser-initiated navigation is NOT canceled if a
634 // renderer-initiated non-user-initiated request is issued in the meantime. 669 // renderer-initiated non-user-initiated request is issued in the meantime.
635 TEST_F(NavigatorTestWithBrowserSideNavigation, 670 TEST_F(NavigatorTestWithBrowserSideNavigation,
636 RendererNonUserInitiatedNavigationDoesntCancelBrowserInitiated) { 671 RendererNonUserInitiatedNavigationDoesntCancelBrowserInitiated) {
637 const GURL kUrl0("http://www.wikipedia.org/"); 672 const GURL kUrl0("http://www.wikipedia.org/");
638 const GURL kUrl1("http://www.chromium.org/"); 673 const GURL kUrl1("http://www.chromium.org/");
639 const GURL kUrl2("http://www.google.com/"); 674 const GURL kUrl2("http://www.google.com/");
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
682 // canceled if a another similar request is issued in the meantime. 717 // canceled if a another similar request is issued in the meantime.
683 TEST_F(NavigatorTestWithBrowserSideNavigation, 718 TEST_F(NavigatorTestWithBrowserSideNavigation,
684 RendererNonUserInitiatedNavigationCancelSimilarNavigation) { 719 RendererNonUserInitiatedNavigationCancelSimilarNavigation) {
685 const GURL kUrl0("http://www.wikipedia.org/"); 720 const GURL kUrl0("http://www.wikipedia.org/");
686 const GURL kUrl1("http://www.chromium.org/"); 721 const GURL kUrl1("http://www.chromium.org/");
687 const GURL kUrl2("http://www.google.com/"); 722 const GURL kUrl2("http://www.google.com/");
688 723
689 // Initialization. 724 // Initialization.
690 contents()->NavigateAndCommit(kUrl0); 725 contents()->NavigateAndCommit(kUrl0);
691 FrameTreeNode* node = main_test_rfh()->frame_tree_node(); 726 FrameTreeNode* node = main_test_rfh()->frame_tree_node();
727 int32 site_instance_id_0 = main_test_rfh()->GetSiteInstance()->GetId();
692 728
693 // Start a renderer-initiated non-user-initiated navigation to the 1st URL. 729 // Start a renderer-initiated non-user-initiated navigation to the 1st URL.
694 process()->sink().ClearMessages(); 730 process()->sink().ClearMessages();
695 main_test_rfh()->SendRendererInitiatedNavigationRequest(kUrl1, false); 731 main_test_rfh()->SendRendererInitiatedNavigationRequest(kUrl1, false);
696 NavigationRequest* request1 = GetNavigationRequestForFrameTreeNode(node); 732 NavigationRequest* request1 = GetNavigationRequestForFrameTreeNode(node);
697 ASSERT_TRUE(request1); 733 ASSERT_TRUE(request1);
698 EXPECT_EQ(kUrl1, request1->common_params().url); 734 EXPECT_EQ(kUrl1, request1->common_params().url);
699 EXPECT_FALSE(request1->browser_initiated()); 735 EXPECT_FALSE(request1->browser_initiated());
700 EXPECT_FALSE(request1->begin_params().has_user_gesture); 736 EXPECT_FALSE(request1->begin_params().has_user_gesture);
701 EXPECT_TRUE(GetSpeculativeRenderFrameHost(node)); 737 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node));
702 base::WeakPtr<TestNavigationURLLoader> loader1 = 738 base::WeakPtr<TestNavigationURLLoader> loader1 =
703 GetLoaderForNavigationRequest(request1)->AsWeakPtr(); 739 GetLoaderForNavigationRequest(request1)->AsWeakPtr();
704 EXPECT_TRUE(loader1); 740 EXPECT_TRUE(loader1);
705 741
706 // Now receive a 2nd similar request that should replace the current one. 742 // Now receive a 2nd similar request that should replace the current one.
707 main_test_rfh()->SendRendererInitiatedNavigationRequest(kUrl2, false); 743 main_test_rfh()->SendRendererInitiatedNavigationRequest(kUrl2, false);
708 NavigationRequest* request2 = GetNavigationRequestForFrameTreeNode(node); 744 NavigationRequest* request2 = GetNavigationRequestForFrameTreeNode(node);
709 EXPECT_EQ(kUrl2, request2->common_params().url); 745 EXPECT_EQ(kUrl2, request2->common_params().url);
710 EXPECT_FALSE(request2->browser_initiated()); 746 EXPECT_FALSE(request2->browser_initiated());
711 EXPECT_FALSE(request2->begin_params().has_user_gesture); 747 EXPECT_FALSE(request2->begin_params().has_user_gesture);
712 TestRenderFrameHost* speculative_rfh = GetSpeculativeRenderFrameHost(node); 748 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node));
713 ASSERT_TRUE(speculative_rfh);
714 749
715 // Confirm that the first loader got destroyed. 750 // Confirm that the first loader got destroyed.
716 EXPECT_FALSE(loader1); 751 EXPECT_FALSE(loader1);
717 752
718 // Have the RenderFrameHost commit the navigation. 753 // Have the RenderFrameHost commit the navigation.
719 scoped_refptr<ResourceResponse> response(new ResourceResponse); 754 scoped_refptr<ResourceResponse> response(new ResourceResponse);
720 GetLoaderForNavigationRequest(request2) 755 GetLoaderForNavigationRequest(request2)
721 ->CallOnResponseStarted(response, MakeEmptyStream()); 756 ->CallOnResponseStarted(response, MakeEmptyStream());
722 EXPECT_TRUE(DidRenderFrameHostRequestCommit(speculative_rfh)); 757 EXPECT_TRUE(DidRenderFrameHostRequestCommit(main_test_rfh()));
723 EXPECT_FALSE(DidRenderFrameHostRequestCommit(main_test_rfh()));
724 758
725 // Commit the navigation. 759 // Commit the navigation.
726 speculative_rfh->SendNavigate(0, kUrl2); 760 main_test_rfh()->SendNavigate(0, kUrl2);
727 EXPECT_EQ(kUrl2, contents()->GetLastCommittedURL()); 761 EXPECT_EQ(kUrl2, contents()->GetLastCommittedURL());
762
763 // The SiteInstance did not change.
764 EXPECT_EQ(site_instance_id_0, main_test_rfh()->GetSiteInstance()->GetId());
728 } 765 }
729 766
730 // PlzNavigate: Test that a reload navigation is properly signaled to the 767 // PlzNavigate: Test that a reload navigation is properly signaled to the
731 // RenderFrame when the navigation can commit. A speculative RenderFrameHost 768 // RenderFrame when the navigation can commit. A speculative RenderFrameHost
732 // should not be created at any step. 769 // should not be created at any step.
733 TEST_F(NavigatorTestWithBrowserSideNavigation, Reload) { 770 TEST_F(NavigatorTestWithBrowserSideNavigation, Reload) {
734 const GURL kUrl("http://www.google.com/"); 771 const GURL kUrl("http://www.google.com/");
735 contents()->NavigateAndCommit(kUrl); 772 contents()->NavigateAndCommit(kUrl);
736 773
737 FrameTreeNode* node = main_test_rfh()->frame_tree_node(); 774 FrameTreeNode* node = main_test_rfh()->frame_tree_node();
(...skipping 223 matching lines...) Expand 10 before | Expand all | Expand 10 after
961 998
962 // Do a renderer-initiated navigation to a data url. The request should not be 999 // Do a renderer-initiated navigation to a data url. The request should not be
963 // sent to the IO thread, nor committed. 1000 // sent to the IO thread, nor committed.
964 TestRenderFrameHost* main_rfh = main_test_rfh(); 1001 TestRenderFrameHost* main_rfh = main_test_rfh();
965 main_rfh->SendRendererInitiatedNavigationRequest(kUrl2, true); 1002 main_rfh->SendRendererInitiatedNavigationRequest(kUrl2, true);
966 navigation_request = GetNavigationRequestForFrameTreeNode(node); 1003 navigation_request = GetNavigationRequestForFrameTreeNode(node);
967 ASSERT_TRUE(navigation_request); 1004 ASSERT_TRUE(navigation_request);
968 EXPECT_EQ(NavigationRequest::RESPONSE_STARTED, 1005 EXPECT_EQ(NavigationRequest::RESPONSE_STARTED,
969 navigation_request->state()); 1006 navigation_request->state());
970 EXPECT_FALSE(navigation_request->loader_for_testing()); 1007 EXPECT_FALSE(navigation_request->loader_for_testing());
971 speculative_rfh = GetSpeculativeRenderFrameHost(node); 1008 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node));
972 ASSERT_TRUE(speculative_rfh);
973 speculative_rfh->SendNavigate(0, kUrl2);
974 EXPECT_EQ(main_test_rfh(), speculative_rfh);
975 } 1009 }
976 1010
977 } // namespace content 1011 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698