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 "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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 |
OLD | NEW |