Chromium Code Reviews| 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 // The SiteInstance did not change. | |
|
nasko
2015/03/16 16:22:42
nit: Empty line before the comment.
carlosk
2015/03/16 17:25:00
Done.
| |
| 239 EXPECT_EQ(site_instance_id_1, main_test_rfh()->GetSiteInstance()->GetId()); | |
| 240 } | |
| 241 | |
| 197 // PlzNavigate: Test that a beforeUnload denial cancels the navigation. | 242 // PlzNavigate: Test that a beforeUnload denial cancels the navigation. |
| 198 TEST_F(NavigatorTestWithBrowserSideNavigation, | 243 TEST_F(NavigatorTestWithBrowserSideNavigation, |
| 199 BeforeUnloadDenialCancelNavigation) { | 244 BeforeUnloadDenialCancelNavigation) { |
| 200 const GURL kUrl1("http://www.google.com/"); | 245 const GURL kUrl1("http://www.google.com/"); |
| 201 const GURL kUrl2("http://www.chromium.org/"); | 246 const GURL kUrl2("http://www.chromium.org/"); |
| 202 | 247 |
| 203 contents()->NavigateAndCommit(kUrl1); | 248 contents()->NavigateAndCommit(kUrl1); |
| 204 | 249 |
| 205 // Start a new navigation. | 250 // Start a new navigation. |
| 206 FrameTreeNode* node = main_test_rfh()->frame_tree_node(); | 251 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); | 580 RequestNavigation(node, kUrl1); |
| 536 main_test_rfh()->SendBeforeUnloadACK(true); | 581 main_test_rfh()->SendBeforeUnloadACK(true); |
| 537 NavigationRequest* request1 = GetNavigationRequestForFrameTreeNode(node); | 582 NavigationRequest* request1 = GetNavigationRequestForFrameTreeNode(node); |
| 538 ASSERT_TRUE(request1); | 583 ASSERT_TRUE(request1); |
| 539 EXPECT_EQ(kUrl1, request1->common_params().url); | 584 EXPECT_EQ(kUrl1, request1->common_params().url); |
| 540 EXPECT_TRUE(request1->browser_initiated()); | 585 EXPECT_TRUE(request1->browser_initiated()); |
| 541 base::WeakPtr<TestNavigationURLLoader> loader1 = | 586 base::WeakPtr<TestNavigationURLLoader> loader1 = |
| 542 GetLoaderForNavigationRequest(request1)->AsWeakPtr(); | 587 GetLoaderForNavigationRequest(request1)->AsWeakPtr(); |
| 543 EXPECT_TRUE(loader1); | 588 EXPECT_TRUE(loader1); |
| 544 | 589 |
| 545 // Confirm a speculative RenderFrameHost was created. | 590 // Confirm that a speculative RenderFrameHost was created. |
| 546 TestRenderFrameHost* speculative_rfh = GetSpeculativeRenderFrameHost(node); | 591 ASSERT_TRUE(GetSpeculativeRenderFrameHost(node)); |
| 547 ASSERT_TRUE(speculative_rfh); | |
| 548 int32 site_instance_id_1 = speculative_rfh->GetSiteInstance()->GetId(); | |
| 549 | 592 |
| 550 // Now receive a renderer-initiated user-initiated request. It should replace | 593 // Now receive a renderer-initiated user-initiated request. It should replace |
| 551 // the current NavigationRequest. | 594 // the current NavigationRequest. |
| 552 main_test_rfh()->SendRendererInitiatedNavigationRequest(kUrl2, true); | 595 main_test_rfh()->SendRendererInitiatedNavigationRequest(kUrl2, true); |
| 553 NavigationRequest* request2 = GetNavigationRequestForFrameTreeNode(node); | 596 NavigationRequest* request2 = GetNavigationRequestForFrameTreeNode(node); |
| 554 ASSERT_TRUE(request2); | 597 ASSERT_TRUE(request2); |
| 555 EXPECT_EQ(kUrl2, request2->common_params().url); | 598 EXPECT_EQ(kUrl2, request2->common_params().url); |
| 556 EXPECT_FALSE(request2->browser_initiated()); | 599 EXPECT_FALSE(request2->browser_initiated()); |
| 557 EXPECT_TRUE(request2->begin_params().has_user_gesture); | 600 EXPECT_TRUE(request2->begin_params().has_user_gesture); |
| 558 | 601 |
| 559 // Confirm that the first loader got destroyed. | 602 // Confirm that the first loader got destroyed. |
| 560 EXPECT_FALSE(loader1); | 603 EXPECT_FALSE(loader1); |
| 561 | 604 |
| 562 // Confirm that a new speculative RenderFrameHost was created. | 605 // Confirm that the speculative RenderFrameHost was destroyed. |
| 563 speculative_rfh = GetSpeculativeRenderFrameHost(node); | 606 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 | 607 |
| 568 // Have the RenderFrameHost commit the navigation. | 608 // Have the RenderFrameHost commit the navigation. |
| 569 scoped_refptr<ResourceResponse> response(new ResourceResponse); | 609 scoped_refptr<ResourceResponse> response(new ResourceResponse); |
| 570 GetLoaderForNavigationRequest(request2) | 610 GetLoaderForNavigationRequest(request2) |
| 571 ->CallOnResponseStarted(response, MakeEmptyStream()); | 611 ->CallOnResponseStarted(response, MakeEmptyStream()); |
| 572 EXPECT_TRUE(DidRenderFrameHostRequestCommit(speculative_rfh)); | 612 EXPECT_TRUE(DidRenderFrameHostRequestCommit(main_test_rfh())); |
| 573 EXPECT_FALSE(DidRenderFrameHostRequestCommit(main_test_rfh())); | |
| 574 | 613 |
| 575 // Commit the navigation. | 614 // Commit the navigation. |
| 576 speculative_rfh->SendNavigate(0, kUrl2); | 615 main_test_rfh()->SendNavigate(0, kUrl2); |
| 577 | 616 |
| 578 // Confirm that the commit corresponds to the new request. | 617 // Confirm that the commit corresponds to the new request. |
| 579 ASSERT_TRUE(main_test_rfh()); | 618 ASSERT_TRUE(main_test_rfh()); |
| 580 EXPECT_EQ(kUrl2, contents()->GetLastCommittedURL()); | 619 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()); | |
|
nasko
2015/03/16 16:22:42
Why did you remove this SiteInstance check? If we
carlosk
2015/03/16 17:25:00
This check was added to confirm that the RenderFra
| |
| 584 } | 620 } |
| 585 | 621 |
| 586 // PlzNavigate: Test that a renderer-initiated user-initiated navigation is NOT | 622 // 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 | 623 // canceled if a renderer-initiated non-user-initiated request is issued in the |
| 588 // meantime. | 624 // meantime. |
| 589 TEST_F(NavigatorTestWithBrowserSideNavigation, | 625 TEST_F(NavigatorTestWithBrowserSideNavigation, |
| 590 RendererNonUserInitiatedNavigationDoesntCancelRendererUserInitiated) { | 626 RendererNonUserInitiatedNavigationDoesntCancelRendererUserInitiated) { |
| 591 const GURL kUrl0("http://www.wikipedia.org/"); | 627 const GURL kUrl0("http://www.wikipedia.org/"); |
| 592 const GURL kUrl1("http://www.chromium.org/"); | 628 const GURL kUrl1("http://www.chromium.org/"); |
| 593 const GURL kUrl2("http://www.google.com/"); | 629 const GURL kUrl2("http://www.google.com/"); |
| 594 | 630 |
| 595 // Initialization. | 631 // Initialization. |
| 596 contents()->NavigateAndCommit(kUrl0); | 632 contents()->NavigateAndCommit(kUrl0); |
| 597 FrameTreeNode* node = main_test_rfh()->frame_tree_node(); | 633 FrameTreeNode* node = main_test_rfh()->frame_tree_node(); |
| 598 | 634 |
| 599 // Start a renderer-initiated user-initiated navigation to the 1st URL. | 635 // Start a renderer-initiated user-initiated navigation to the 1st URL. |
| 600 process()->sink().ClearMessages(); | 636 process()->sink().ClearMessages(); |
| 601 main_test_rfh()->SendRendererInitiatedNavigationRequest(kUrl1, true); | 637 main_test_rfh()->SendRendererInitiatedNavigationRequest(kUrl1, true); |
| 602 NavigationRequest* request1 = GetNavigationRequestForFrameTreeNode(node); | 638 NavigationRequest* request1 = GetNavigationRequestForFrameTreeNode(node); |
| 603 ASSERT_TRUE(request1); | 639 ASSERT_TRUE(request1); |
| 604 EXPECT_EQ(kUrl1, request1->common_params().url); | 640 EXPECT_EQ(kUrl1, request1->common_params().url); |
| 605 EXPECT_FALSE(request1->browser_initiated()); | 641 EXPECT_FALSE(request1->browser_initiated()); |
| 606 EXPECT_TRUE(request1->begin_params().has_user_gesture); | 642 EXPECT_TRUE(request1->begin_params().has_user_gesture); |
| 607 EXPECT_TRUE(GetSpeculativeRenderFrameHost(node)); | 643 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node)); |
| 608 | 644 |
| 609 // Now receive a renderer-initiated non-user-initiated request. Nothing should | 645 // Now receive a renderer-initiated non-user-initiated request. Nothing should |
| 610 // change. | 646 // change. |
| 611 main_test_rfh()->SendRendererInitiatedNavigationRequest(kUrl2, false); | 647 main_test_rfh()->SendRendererInitiatedNavigationRequest(kUrl2, false); |
| 612 NavigationRequest* request2 = GetNavigationRequestForFrameTreeNode(node); | 648 NavigationRequest* request2 = GetNavigationRequestForFrameTreeNode(node); |
| 613 ASSERT_TRUE(request2); | 649 ASSERT_TRUE(request2); |
| 614 EXPECT_EQ(request1, request2); | 650 EXPECT_EQ(request1, request2); |
| 615 EXPECT_EQ(kUrl1, request2->common_params().url); | 651 EXPECT_EQ(kUrl1, request2->common_params().url); |
| 616 EXPECT_FALSE(request2->browser_initiated()); | 652 EXPECT_FALSE(request2->browser_initiated()); |
| 617 EXPECT_TRUE(request2->begin_params().has_user_gesture); | 653 EXPECT_TRUE(request2->begin_params().has_user_gesture); |
| 618 TestRenderFrameHost* speculative_rfh = GetSpeculativeRenderFrameHost(node); | 654 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node)); |
| 619 ASSERT_TRUE(speculative_rfh); | |
| 620 | 655 |
| 621 // Have the RenderFrameHost commit the navigation. | 656 // Have the RenderFrameHost commit the navigation. |
| 622 scoped_refptr<ResourceResponse> response(new ResourceResponse); | 657 scoped_refptr<ResourceResponse> response(new ResourceResponse); |
| 623 GetLoaderForNavigationRequest(request2) | 658 GetLoaderForNavigationRequest(request2) |
| 624 ->CallOnResponseStarted(response, MakeEmptyStream()); | 659 ->CallOnResponseStarted(response, MakeEmptyStream()); |
| 625 EXPECT_TRUE(DidRenderFrameHostRequestCommit(speculative_rfh)); | 660 EXPECT_TRUE(DidRenderFrameHostRequestCommit(main_test_rfh())); |
| 626 EXPECT_FALSE(DidRenderFrameHostRequestCommit(main_test_rfh())); | |
| 627 | 661 |
| 628 // Commit the navigation. | 662 // Commit the navigation. |
| 629 speculative_rfh->SendNavigate(0, kUrl1); | 663 main_test_rfh()->SendNavigate(0, kUrl1); |
| 630 EXPECT_EQ(kUrl1, contents()->GetLastCommittedURL()); | 664 EXPECT_EQ(kUrl1, contents()->GetLastCommittedURL()); |
| 631 } | 665 } |
| 632 | 666 |
| 633 // PlzNavigate: Test that a browser-initiated navigation is NOT canceled if a | 667 // PlzNavigate: Test that a browser-initiated navigation is NOT canceled if a |
| 634 // renderer-initiated non-user-initiated request is issued in the meantime. | 668 // renderer-initiated non-user-initiated request is issued in the meantime. |
| 635 TEST_F(NavigatorTestWithBrowserSideNavigation, | 669 TEST_F(NavigatorTestWithBrowserSideNavigation, |
| 636 RendererNonUserInitiatedNavigationDoesntCancelBrowserInitiated) { | 670 RendererNonUserInitiatedNavigationDoesntCancelBrowserInitiated) { |
| 637 const GURL kUrl0("http://www.wikipedia.org/"); | 671 const GURL kUrl0("http://www.wikipedia.org/"); |
| 638 const GURL kUrl1("http://www.chromium.org/"); | 672 const GURL kUrl1("http://www.chromium.org/"); |
| 639 const GURL kUrl2("http://www.google.com/"); | 673 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. | 716 // canceled if a another similar request is issued in the meantime. |
| 683 TEST_F(NavigatorTestWithBrowserSideNavigation, | 717 TEST_F(NavigatorTestWithBrowserSideNavigation, |
| 684 RendererNonUserInitiatedNavigationCancelSimilarNavigation) { | 718 RendererNonUserInitiatedNavigationCancelSimilarNavigation) { |
| 685 const GURL kUrl0("http://www.wikipedia.org/"); | 719 const GURL kUrl0("http://www.wikipedia.org/"); |
| 686 const GURL kUrl1("http://www.chromium.org/"); | 720 const GURL kUrl1("http://www.chromium.org/"); |
| 687 const GURL kUrl2("http://www.google.com/"); | 721 const GURL kUrl2("http://www.google.com/"); |
| 688 | 722 |
| 689 // Initialization. | 723 // Initialization. |
| 690 contents()->NavigateAndCommit(kUrl0); | 724 contents()->NavigateAndCommit(kUrl0); |
| 691 FrameTreeNode* node = main_test_rfh()->frame_tree_node(); | 725 FrameTreeNode* node = main_test_rfh()->frame_tree_node(); |
| 726 int32 site_instance_id_0 = main_test_rfh()->GetSiteInstance()->GetId(); | |
| 692 | 727 |
| 693 // Start a renderer-initiated non-user-initiated navigation to the 1st URL. | 728 // Start a renderer-initiated non-user-initiated navigation to the 1st URL. |
| 694 process()->sink().ClearMessages(); | 729 process()->sink().ClearMessages(); |
| 695 main_test_rfh()->SendRendererInitiatedNavigationRequest(kUrl1, false); | 730 main_test_rfh()->SendRendererInitiatedNavigationRequest(kUrl1, false); |
| 696 NavigationRequest* request1 = GetNavigationRequestForFrameTreeNode(node); | 731 NavigationRequest* request1 = GetNavigationRequestForFrameTreeNode(node); |
| 697 ASSERT_TRUE(request1); | 732 ASSERT_TRUE(request1); |
| 698 EXPECT_EQ(kUrl1, request1->common_params().url); | 733 EXPECT_EQ(kUrl1, request1->common_params().url); |
| 699 EXPECT_FALSE(request1->browser_initiated()); | 734 EXPECT_FALSE(request1->browser_initiated()); |
| 700 EXPECT_FALSE(request1->begin_params().has_user_gesture); | 735 EXPECT_FALSE(request1->begin_params().has_user_gesture); |
| 701 EXPECT_TRUE(GetSpeculativeRenderFrameHost(node)); | 736 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node)); |
| 702 base::WeakPtr<TestNavigationURLLoader> loader1 = | 737 base::WeakPtr<TestNavigationURLLoader> loader1 = |
| 703 GetLoaderForNavigationRequest(request1)->AsWeakPtr(); | 738 GetLoaderForNavigationRequest(request1)->AsWeakPtr(); |
| 704 EXPECT_TRUE(loader1); | 739 EXPECT_TRUE(loader1); |
| 705 | 740 |
| 706 // Now receive a 2nd similar request that should replace the current one. | 741 // Now receive a 2nd similar request that should replace the current one. |
| 707 main_test_rfh()->SendRendererInitiatedNavigationRequest(kUrl2, false); | 742 main_test_rfh()->SendRendererInitiatedNavigationRequest(kUrl2, false); |
| 708 NavigationRequest* request2 = GetNavigationRequestForFrameTreeNode(node); | 743 NavigationRequest* request2 = GetNavigationRequestForFrameTreeNode(node); |
| 709 EXPECT_EQ(kUrl2, request2->common_params().url); | 744 EXPECT_EQ(kUrl2, request2->common_params().url); |
| 710 EXPECT_FALSE(request2->browser_initiated()); | 745 EXPECT_FALSE(request2->browser_initiated()); |
| 711 EXPECT_FALSE(request2->begin_params().has_user_gesture); | 746 EXPECT_FALSE(request2->begin_params().has_user_gesture); |
| 712 TestRenderFrameHost* speculative_rfh = GetSpeculativeRenderFrameHost(node); | 747 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node)); |
| 713 ASSERT_TRUE(speculative_rfh); | |
| 714 | 748 |
| 715 // Confirm that the first loader got destroyed. | 749 // Confirm that the first loader got destroyed. |
| 716 EXPECT_FALSE(loader1); | 750 EXPECT_FALSE(loader1); |
| 717 | 751 |
| 718 // Have the RenderFrameHost commit the navigation. | 752 // Have the RenderFrameHost commit the navigation. |
| 719 scoped_refptr<ResourceResponse> response(new ResourceResponse); | 753 scoped_refptr<ResourceResponse> response(new ResourceResponse); |
| 720 GetLoaderForNavigationRequest(request2) | 754 GetLoaderForNavigationRequest(request2) |
| 721 ->CallOnResponseStarted(response, MakeEmptyStream()); | 755 ->CallOnResponseStarted(response, MakeEmptyStream()); |
| 722 EXPECT_TRUE(DidRenderFrameHostRequestCommit(speculative_rfh)); | 756 EXPECT_TRUE(DidRenderFrameHostRequestCommit(main_test_rfh())); |
| 723 EXPECT_FALSE(DidRenderFrameHostRequestCommit(main_test_rfh())); | |
| 724 | 757 |
| 725 // Commit the navigation. | 758 // Commit the navigation. |
| 726 speculative_rfh->SendNavigate(0, kUrl2); | 759 main_test_rfh()->SendNavigate(0, kUrl2); |
| 727 EXPECT_EQ(kUrl2, contents()->GetLastCommittedURL()); | 760 EXPECT_EQ(kUrl2, contents()->GetLastCommittedURL()); |
| 761 // The SiteInstance did not change. | |
|
nasko
2015/03/16 16:22:42
nit: Empty line before comment.
carlosk
2015/03/16 17:25:00
Done.
| |
| 762 EXPECT_EQ(site_instance_id_0, main_test_rfh()->GetSiteInstance()->GetId()); | |
| 728 } | 763 } |
| 729 | 764 |
| 730 // PlzNavigate: Test that a reload navigation is properly signaled to the | 765 // PlzNavigate: Test that a reload navigation is properly signaled to the |
| 731 // RenderFrame when the navigation can commit. A speculative RenderFrameHost | 766 // RenderFrame when the navigation can commit. A speculative RenderFrameHost |
| 732 // should not be created at any step. | 767 // should not be created at any step. |
| 733 TEST_F(NavigatorTestWithBrowserSideNavigation, Reload) { | 768 TEST_F(NavigatorTestWithBrowserSideNavigation, Reload) { |
| 734 const GURL kUrl("http://www.google.com/"); | 769 const GURL kUrl("http://www.google.com/"); |
| 735 contents()->NavigateAndCommit(kUrl); | 770 contents()->NavigateAndCommit(kUrl); |
| 736 | 771 |
| 737 FrameTreeNode* node = main_test_rfh()->frame_tree_node(); | 772 FrameTreeNode* node = main_test_rfh()->frame_tree_node(); |
| (...skipping 223 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 961 | 996 |
| 962 // Do a renderer-initiated navigation to a data url. The request should not be | 997 // Do a renderer-initiated navigation to a data url. The request should not be |
| 963 // sent to the IO thread, nor committed. | 998 // sent to the IO thread, nor committed. |
| 964 TestRenderFrameHost* main_rfh = main_test_rfh(); | 999 TestRenderFrameHost* main_rfh = main_test_rfh(); |
| 965 main_rfh->SendRendererInitiatedNavigationRequest(kUrl2, true); | 1000 main_rfh->SendRendererInitiatedNavigationRequest(kUrl2, true); |
| 966 navigation_request = GetNavigationRequestForFrameTreeNode(node); | 1001 navigation_request = GetNavigationRequestForFrameTreeNode(node); |
| 967 ASSERT_TRUE(navigation_request); | 1002 ASSERT_TRUE(navigation_request); |
| 968 EXPECT_EQ(NavigationRequest::RESPONSE_STARTED, | 1003 EXPECT_EQ(NavigationRequest::RESPONSE_STARTED, |
| 969 navigation_request->state()); | 1004 navigation_request->state()); |
| 970 EXPECT_FALSE(navigation_request->loader_for_testing()); | 1005 EXPECT_FALSE(navigation_request->loader_for_testing()); |
| 971 speculative_rfh = GetSpeculativeRenderFrameHost(node); | 1006 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node)); |
| 972 ASSERT_TRUE(speculative_rfh); | |
| 973 speculative_rfh->SendNavigate(0, kUrl2); | |
| 974 EXPECT_EQ(main_test_rfh(), speculative_rfh); | |
| 975 } | 1007 } |
| 976 | 1008 |
| 977 } // namespace content | 1009 } // namespace content |
| OLD | NEW |