| 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 145 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 156 TEST_F(NavigatorTestWithBrowserSideNavigation, | 156 TEST_F(NavigatorTestWithBrowserSideNavigation, |
| 157 SimpleRendererInitiatedNavigation) { | 157 SimpleRendererInitiatedNavigation) { |
| 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()->SendBeginNavigationWithURL(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(); |
| 168 NavigationRequest* request = GetNavigationRequestForFrameTreeNode(node); | 168 NavigationRequest* request = GetNavigationRequestForFrameTreeNode(node); |
| 169 ASSERT_TRUE(request); | 169 ASSERT_TRUE(request); |
| 170 | 170 |
| 171 // The navigation is immediately started as there's no need to wait for | 171 // The navigation is immediately started as there's no need to wait for |
| 172 // beforeUnload to be executed. | 172 // beforeUnload to be executed. |
| 173 EXPECT_EQ(NavigationRequest::STARTED, request->state()); | 173 EXPECT_EQ(NavigationRequest::STARTED, request->state()); |
| 174 EXPECT_FALSE(request->begin_params().has_user_gesture); | 174 EXPECT_FALSE(request->begin_params().has_user_gesture); |
| 175 EXPECT_EQ(kUrl2, request->common_params().url); | 175 EXPECT_EQ(kUrl2, request->common_params().url); |
| 176 EXPECT_FALSE(request->browser_initiated()); | 176 EXPECT_FALSE(request->browser_initiated()); |
| (...skipping 237 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 414 | 414 |
| 415 // Navigate to a URL on the same site. | 415 // Navigate to a URL on the same site. |
| 416 process()->sink().ClearMessages(); | 416 process()->sink().ClearMessages(); |
| 417 RequestNavigation(node, kUrl1); | 417 RequestNavigation(node, kUrl1); |
| 418 main_test_rfh()->SendBeforeUnloadACK(true); | 418 main_test_rfh()->SendBeforeUnloadACK(true); |
| 419 NavigationRequest* main_request = GetNavigationRequestForFrameTreeNode(node); | 419 NavigationRequest* main_request = GetNavigationRequestForFrameTreeNode(node); |
| 420 ASSERT_TRUE(main_request); | 420 ASSERT_TRUE(main_request); |
| 421 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node)); | 421 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node)); |
| 422 | 422 |
| 423 // It then redirects to another site. | 423 // It then redirects to another site. |
| 424 net::RedirectInfo redirect_info; | 424 GetLoaderForNavigationRequest(main_request)->SimulateServerRedirect(kUrl2); |
| 425 redirect_info.status_code = 302; | |
| 426 redirect_info.new_method = "GET"; | |
| 427 redirect_info.new_url = kUrl2; | |
| 428 redirect_info.new_first_party_for_cookies = kUrl2; | |
| 429 scoped_refptr<ResourceResponse> response(new ResourceResponse); | |
| 430 GetLoaderForNavigationRequest(main_request)->CallOnRequestRedirected( | |
| 431 redirect_info, response); | |
| 432 | 425 |
| 433 // The redirect should have been followed. | 426 // The redirect should have been followed. |
| 434 EXPECT_EQ(1, GetLoaderForNavigationRequest(main_request)->redirect_count()); | 427 EXPECT_EQ(1, GetLoaderForNavigationRequest(main_request)->redirect_count()); |
| 435 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node)); | 428 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node)); |
| 436 | 429 |
| 437 // Have the RenderFrameHost commit the navigation. | 430 // Have the RenderFrameHost commit the navigation. |
| 438 response = new ResourceResponse; | 431 scoped_refptr<ResourceResponse> response(new ResourceResponse); |
| 439 GetLoaderForNavigationRequest(main_request)->CallOnResponseStarted( | 432 GetLoaderForNavigationRequest(main_request)->CallOnResponseStarted( |
| 440 response, MakeEmptyStream()); | 433 response, MakeEmptyStream()); |
| 441 TestRenderFrameHost* final_speculative_rfh = | 434 TestRenderFrameHost* final_speculative_rfh = |
| 442 GetSpeculativeRenderFrameHost(node); | 435 GetSpeculativeRenderFrameHost(node); |
| 443 EXPECT_TRUE(final_speculative_rfh); | 436 EXPECT_TRUE(final_speculative_rfh); |
| 444 EXPECT_TRUE(DidRenderFrameHostRequestCommit(final_speculative_rfh)); | 437 EXPECT_TRUE(DidRenderFrameHostRequestCommit(final_speculative_rfh)); |
| 445 | 438 |
| 446 // Commit the navigation. | 439 // Commit the navigation. |
| 447 final_speculative_rfh->SendNavigate(0, kUrl2); | 440 final_speculative_rfh->SendNavigate(0, kUrl2); |
| 448 RenderFrameHostImpl* final_rfh = main_test_rfh(); | 441 RenderFrameHostImpl* final_rfh = main_test_rfh(); |
| (...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 549 GetLoaderForNavigationRequest(request1)->AsWeakPtr(); | 542 GetLoaderForNavigationRequest(request1)->AsWeakPtr(); |
| 550 EXPECT_TRUE(loader1); | 543 EXPECT_TRUE(loader1); |
| 551 | 544 |
| 552 // Confirm a speculative RenderFrameHost was created. | 545 // Confirm a speculative RenderFrameHost was created. |
| 553 TestRenderFrameHost* speculative_rfh = GetSpeculativeRenderFrameHost(node); | 546 TestRenderFrameHost* speculative_rfh = GetSpeculativeRenderFrameHost(node); |
| 554 ASSERT_TRUE(speculative_rfh); | 547 ASSERT_TRUE(speculative_rfh); |
| 555 int32 site_instance_id_1 = speculative_rfh->GetSiteInstance()->GetId(); | 548 int32 site_instance_id_1 = speculative_rfh->GetSiteInstance()->GetId(); |
| 556 | 549 |
| 557 // Now receive a renderer-initiated user-initiated request. It should replace | 550 // Now receive a renderer-initiated user-initiated request. It should replace |
| 558 // the current NavigationRequest. | 551 // the current NavigationRequest. |
| 559 main_test_rfh()->SendBeginNavigationWithURL(kUrl2, true); | 552 main_test_rfh()->SendRendererInitiatedNavigationRequest(kUrl2, true); |
| 560 NavigationRequest* request2 = GetNavigationRequestForFrameTreeNode(node); | 553 NavigationRequest* request2 = GetNavigationRequestForFrameTreeNode(node); |
| 561 ASSERT_TRUE(request2); | 554 ASSERT_TRUE(request2); |
| 562 EXPECT_EQ(kUrl2, request2->common_params().url); | 555 EXPECT_EQ(kUrl2, request2->common_params().url); |
| 563 EXPECT_FALSE(request2->browser_initiated()); | 556 EXPECT_FALSE(request2->browser_initiated()); |
| 564 EXPECT_TRUE(request2->begin_params().has_user_gesture); | 557 EXPECT_TRUE(request2->begin_params().has_user_gesture); |
| 565 | 558 |
| 566 // Confirm that the first loader got destroyed. | 559 // Confirm that the first loader got destroyed. |
| 567 EXPECT_FALSE(loader1); | 560 EXPECT_FALSE(loader1); |
| 568 | 561 |
| 569 // Confirm that a new speculative RenderFrameHost was created. | 562 // Confirm that a new speculative RenderFrameHost was created. |
| (...skipping 28 matching lines...) Expand all Loading... |
| 598 const GURL kUrl0("http://www.wikipedia.org/"); | 591 const GURL kUrl0("http://www.wikipedia.org/"); |
| 599 const GURL kUrl1("http://www.chromium.org/"); | 592 const GURL kUrl1("http://www.chromium.org/"); |
| 600 const GURL kUrl2("http://www.google.com/"); | 593 const GURL kUrl2("http://www.google.com/"); |
| 601 | 594 |
| 602 // Initialization. | 595 // Initialization. |
| 603 contents()->NavigateAndCommit(kUrl0); | 596 contents()->NavigateAndCommit(kUrl0); |
| 604 FrameTreeNode* node = main_test_rfh()->frame_tree_node(); | 597 FrameTreeNode* node = main_test_rfh()->frame_tree_node(); |
| 605 | 598 |
| 606 // Start a renderer-initiated user-initiated navigation to the 1st URL. | 599 // Start a renderer-initiated user-initiated navigation to the 1st URL. |
| 607 process()->sink().ClearMessages(); | 600 process()->sink().ClearMessages(); |
| 608 main_test_rfh()->SendBeginNavigationWithURL(kUrl1, true); | 601 main_test_rfh()->SendRendererInitiatedNavigationRequest(kUrl1, true); |
| 609 NavigationRequest* request1 = GetNavigationRequestForFrameTreeNode(node); | 602 NavigationRequest* request1 = GetNavigationRequestForFrameTreeNode(node); |
| 610 ASSERT_TRUE(request1); | 603 ASSERT_TRUE(request1); |
| 611 EXPECT_EQ(kUrl1, request1->common_params().url); | 604 EXPECT_EQ(kUrl1, request1->common_params().url); |
| 612 EXPECT_FALSE(request1->browser_initiated()); | 605 EXPECT_FALSE(request1->browser_initiated()); |
| 613 EXPECT_TRUE(request1->begin_params().has_user_gesture); | 606 EXPECT_TRUE(request1->begin_params().has_user_gesture); |
| 614 EXPECT_TRUE(GetSpeculativeRenderFrameHost(node)); | 607 EXPECT_TRUE(GetSpeculativeRenderFrameHost(node)); |
| 615 | 608 |
| 616 // Now receive a renderer-initiated non-user-initiated request. Nothing should | 609 // Now receive a renderer-initiated non-user-initiated request. Nothing should |
| 617 // change. | 610 // change. |
| 618 main_test_rfh()->SendBeginNavigationWithURL(kUrl2, false); | 611 main_test_rfh()->SendRendererInitiatedNavigationRequest(kUrl2, false); |
| 619 NavigationRequest* request2 = GetNavigationRequestForFrameTreeNode(node); | 612 NavigationRequest* request2 = GetNavigationRequestForFrameTreeNode(node); |
| 620 ASSERT_TRUE(request2); | 613 ASSERT_TRUE(request2); |
| 621 EXPECT_EQ(request1, request2); | 614 EXPECT_EQ(request1, request2); |
| 622 EXPECT_EQ(kUrl1, request2->common_params().url); | 615 EXPECT_EQ(kUrl1, request2->common_params().url); |
| 623 EXPECT_FALSE(request2->browser_initiated()); | 616 EXPECT_FALSE(request2->browser_initiated()); |
| 624 EXPECT_TRUE(request2->begin_params().has_user_gesture); | 617 EXPECT_TRUE(request2->begin_params().has_user_gesture); |
| 625 TestRenderFrameHost* speculative_rfh = GetSpeculativeRenderFrameHost(node); | 618 TestRenderFrameHost* speculative_rfh = GetSpeculativeRenderFrameHost(node); |
| 626 ASSERT_TRUE(speculative_rfh); | 619 ASSERT_TRUE(speculative_rfh); |
| 627 | 620 |
| 628 // Have the RenderFrameHost commit the navigation. | 621 // Have the RenderFrameHost commit the navigation. |
| (...skipping 24 matching lines...) Expand all Loading... |
| 653 process()->sink().ClearMessages(); | 646 process()->sink().ClearMessages(); |
| 654 RequestNavigation(node, kUrl1); | 647 RequestNavigation(node, kUrl1); |
| 655 NavigationRequest* request1 = GetNavigationRequestForFrameTreeNode(node); | 648 NavigationRequest* request1 = GetNavigationRequestForFrameTreeNode(node); |
| 656 ASSERT_TRUE(request1); | 649 ASSERT_TRUE(request1); |
| 657 EXPECT_EQ(kUrl1, request1->common_params().url); | 650 EXPECT_EQ(kUrl1, request1->common_params().url); |
| 658 EXPECT_TRUE(request1->browser_initiated()); | 651 EXPECT_TRUE(request1->browser_initiated()); |
| 659 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node)); | 652 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node)); |
| 660 | 653 |
| 661 // Now receive a renderer-initiated non-user-initiated request. Nothing should | 654 // Now receive a renderer-initiated non-user-initiated request. Nothing should |
| 662 // change. | 655 // change. |
| 663 main_test_rfh()->SendBeginNavigationWithURL(kUrl2, false); | 656 main_test_rfh()->SendRendererInitiatedNavigationRequest(kUrl2, false); |
| 664 NavigationRequest* request2 = GetNavigationRequestForFrameTreeNode(node); | 657 NavigationRequest* request2 = GetNavigationRequestForFrameTreeNode(node); |
| 665 ASSERT_TRUE(request2); | 658 ASSERT_TRUE(request2); |
| 666 EXPECT_EQ(request1, request2); | 659 EXPECT_EQ(request1, request2); |
| 667 EXPECT_EQ(kUrl1, request2->common_params().url); | 660 EXPECT_EQ(kUrl1, request2->common_params().url); |
| 668 EXPECT_TRUE(request2->browser_initiated()); | 661 EXPECT_TRUE(request2->browser_initiated()); |
| 669 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node)); | 662 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node)); |
| 670 | 663 |
| 671 // Now receive the beforeUnload ACK from the still ongoing navigation. | 664 // Now receive the beforeUnload ACK from the still ongoing navigation. |
| 672 main_test_rfh()->SendBeforeUnloadACK(true); | 665 main_test_rfh()->SendBeforeUnloadACK(true); |
| 673 TestRenderFrameHost* speculative_rfh = GetSpeculativeRenderFrameHost(node); | 666 TestRenderFrameHost* speculative_rfh = GetSpeculativeRenderFrameHost(node); |
| (...skipping 18 matching lines...) Expand all Loading... |
| 692 const GURL kUrl0("http://www.wikipedia.org/"); | 685 const GURL kUrl0("http://www.wikipedia.org/"); |
| 693 const GURL kUrl1("http://www.chromium.org/"); | 686 const GURL kUrl1("http://www.chromium.org/"); |
| 694 const GURL kUrl2("http://www.google.com/"); | 687 const GURL kUrl2("http://www.google.com/"); |
| 695 | 688 |
| 696 // Initialization. | 689 // Initialization. |
| 697 contents()->NavigateAndCommit(kUrl0); | 690 contents()->NavigateAndCommit(kUrl0); |
| 698 FrameTreeNode* node = main_test_rfh()->frame_tree_node(); | 691 FrameTreeNode* node = main_test_rfh()->frame_tree_node(); |
| 699 | 692 |
| 700 // Start a renderer-initiated non-user-initiated navigation to the 1st URL. | 693 // Start a renderer-initiated non-user-initiated navigation to the 1st URL. |
| 701 process()->sink().ClearMessages(); | 694 process()->sink().ClearMessages(); |
| 702 main_test_rfh()->SendBeginNavigationWithURL(kUrl1, false); | 695 main_test_rfh()->SendRendererInitiatedNavigationRequest(kUrl1, false); |
| 703 NavigationRequest* request1 = GetNavigationRequestForFrameTreeNode(node); | 696 NavigationRequest* request1 = GetNavigationRequestForFrameTreeNode(node); |
| 704 ASSERT_TRUE(request1); | 697 ASSERT_TRUE(request1); |
| 705 EXPECT_EQ(kUrl1, request1->common_params().url); | 698 EXPECT_EQ(kUrl1, request1->common_params().url); |
| 706 EXPECT_FALSE(request1->browser_initiated()); | 699 EXPECT_FALSE(request1->browser_initiated()); |
| 707 EXPECT_FALSE(request1->begin_params().has_user_gesture); | 700 EXPECT_FALSE(request1->begin_params().has_user_gesture); |
| 708 EXPECT_TRUE(GetSpeculativeRenderFrameHost(node)); | 701 EXPECT_TRUE(GetSpeculativeRenderFrameHost(node)); |
| 709 base::WeakPtr<TestNavigationURLLoader> loader1 = | 702 base::WeakPtr<TestNavigationURLLoader> loader1 = |
| 710 GetLoaderForNavigationRequest(request1)->AsWeakPtr(); | 703 GetLoaderForNavigationRequest(request1)->AsWeakPtr(); |
| 711 EXPECT_TRUE(loader1); | 704 EXPECT_TRUE(loader1); |
| 712 | 705 |
| 713 // Now receive a 2nd similar request that should replace the current one. | 706 // Now receive a 2nd similar request that should replace the current one. |
| 714 main_test_rfh()->SendBeginNavigationWithURL(kUrl2, false); | 707 main_test_rfh()->SendRendererInitiatedNavigationRequest(kUrl2, false); |
| 715 NavigationRequest* request2 = GetNavigationRequestForFrameTreeNode(node); | 708 NavigationRequest* request2 = GetNavigationRequestForFrameTreeNode(node); |
| 716 EXPECT_EQ(kUrl2, request2->common_params().url); | 709 EXPECT_EQ(kUrl2, request2->common_params().url); |
| 717 EXPECT_FALSE(request2->browser_initiated()); | 710 EXPECT_FALSE(request2->browser_initiated()); |
| 718 EXPECT_FALSE(request2->begin_params().has_user_gesture); | 711 EXPECT_FALSE(request2->begin_params().has_user_gesture); |
| 719 TestRenderFrameHost* speculative_rfh = GetSpeculativeRenderFrameHost(node); | 712 TestRenderFrameHost* speculative_rfh = GetSpeculativeRenderFrameHost(node); |
| 720 ASSERT_TRUE(speculative_rfh); | 713 ASSERT_TRUE(speculative_rfh); |
| 721 | 714 |
| 722 // Confirm that the first loader got destroyed. | 715 // Confirm that the first loader got destroyed. |
| 723 EXPECT_FALSE(loader1); | 716 EXPECT_FALSE(loader1); |
| 724 | 717 |
| (...skipping 18 matching lines...) Expand all Loading... |
| 743 | 736 |
| 744 FrameTreeNode* node = main_test_rfh()->frame_tree_node(); | 737 FrameTreeNode* node = main_test_rfh()->frame_tree_node(); |
| 745 RequestNavigationWithParameters(node, kUrl, Referrer(), | 738 RequestNavigationWithParameters(node, kUrl, Referrer(), |
| 746 ui::PAGE_TRANSITION_LINK, | 739 ui::PAGE_TRANSITION_LINK, |
| 747 NavigationController::RELOAD); | 740 NavigationController::RELOAD); |
| 748 // A NavigationRequest should have been generated. | 741 // A NavigationRequest should have been generated. |
| 749 NavigationRequest* main_request = GetNavigationRequestForFrameTreeNode(node); | 742 NavigationRequest* main_request = GetNavigationRequestForFrameTreeNode(node); |
| 750 ASSERT_TRUE(main_request != NULL); | 743 ASSERT_TRUE(main_request != NULL); |
| 751 EXPECT_EQ(FrameMsg_Navigate_Type::RELOAD, | 744 EXPECT_EQ(FrameMsg_Navigate_Type::RELOAD, |
| 752 main_request->common_params().navigation_type); | 745 main_request->common_params().navigation_type); |
| 753 main_test_rfh()->PrepareForCommit(kUrl); | 746 main_test_rfh()->PrepareForCommit(); |
| 754 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node)); | 747 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node)); |
| 755 | 748 |
| 756 main_test_rfh()->SendNavigate(0, kUrl); | 749 main_test_rfh()->SendNavigate(0, kUrl); |
| 757 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node)); | 750 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node)); |
| 758 | 751 |
| 759 // Now do a shift+reload. | 752 // Now do a shift+reload. |
| 760 RequestNavigationWithParameters(node, kUrl, Referrer(), | 753 RequestNavigationWithParameters(node, kUrl, Referrer(), |
| 761 ui::PAGE_TRANSITION_LINK, | 754 ui::PAGE_TRANSITION_LINK, |
| 762 NavigationController::RELOAD_IGNORING_CACHE); | 755 NavigationController::RELOAD_IGNORING_CACHE); |
| 763 // A NavigationRequest should have been generated. | 756 // A NavigationRequest should have been generated. |
| 764 main_request = GetNavigationRequestForFrameTreeNode(node); | 757 main_request = GetNavigationRequestForFrameTreeNode(node); |
| 765 ASSERT_TRUE(main_request != NULL); | 758 ASSERT_TRUE(main_request != NULL); |
| 766 EXPECT_EQ(FrameMsg_Navigate_Type::RELOAD_IGNORING_CACHE, | 759 EXPECT_EQ(FrameMsg_Navigate_Type::RELOAD_IGNORING_CACHE, |
| 767 main_request->common_params().navigation_type); | 760 main_request->common_params().navigation_type); |
| 768 main_test_rfh()->PrepareForCommit(kUrl); | 761 main_test_rfh()->PrepareForCommit(); |
| 769 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node)); | 762 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node)); |
| 770 } | 763 } |
| 771 | 764 |
| 772 // PlzNavigate: Confirm that a speculative RenderFrameHost is used when | 765 // PlzNavigate: Confirm that a speculative RenderFrameHost is used when |
| 773 // navigating from one site to another. | 766 // navigating from one site to another. |
| 774 TEST_F(NavigatorTestWithBrowserSideNavigation, | 767 TEST_F(NavigatorTestWithBrowserSideNavigation, |
| 775 SpeculativeRendererWorksBaseCase) { | 768 SpeculativeRendererWorksBaseCase) { |
| 776 // Navigate to an initial site. | 769 // Navigate to an initial site. |
| 777 const GURL kUrlInit("http://wikipedia.org/"); | 770 const GURL kUrlInit("http://wikipedia.org/"); |
| 778 contents()->NavigateAndCommit(kUrlInit); | 771 contents()->NavigateAndCommit(kUrlInit); |
| (...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 836 EXPECT_EQ(init_site_instance_id, main_test_rfh()->GetSiteInstance()->GetId()); | 829 EXPECT_EQ(init_site_instance_id, main_test_rfh()->GetSiteInstance()->GetId()); |
| 837 ASSERT_TRUE(speculative_rfh); | 830 ASSERT_TRUE(speculative_rfh); |
| 838 EXPECT_NE(speculative_rfh, main_test_rfh()); | 831 EXPECT_NE(speculative_rfh, main_test_rfh()); |
| 839 EXPECT_EQ(SiteInstanceImpl::GetSiteForURL(browser_context(), kUrl), | 832 EXPECT_EQ(SiteInstanceImpl::GetSiteForURL(browser_context(), kUrl), |
| 840 speculative_rfh->GetSiteInstance()->GetSiteURL()); | 833 speculative_rfh->GetSiteInstance()->GetSiteURL()); |
| 841 | 834 |
| 842 // It then redirects to yet another site. | 835 // It then redirects to yet another site. |
| 843 NavigationRequest* main_request = GetNavigationRequestForFrameTreeNode(node); | 836 NavigationRequest* main_request = GetNavigationRequestForFrameTreeNode(node); |
| 844 ASSERT_TRUE(main_request); | 837 ASSERT_TRUE(main_request); |
| 845 const GURL kUrlRedirect("https://www.google.com/"); | 838 const GURL kUrlRedirect("https://www.google.com/"); |
| 846 net::RedirectInfo redirect_info; | |
| 847 redirect_info.status_code = 302; | |
| 848 redirect_info.new_method = "GET"; | |
| 849 redirect_info.new_url = kUrlRedirect; | |
| 850 redirect_info.new_first_party_for_cookies = kUrlRedirect; | |
| 851 scoped_refptr<ResourceResponse> response(new ResourceResponse); | |
| 852 GetLoaderForNavigationRequest(main_request) | 839 GetLoaderForNavigationRequest(main_request) |
| 853 ->CallOnRequestRedirected(redirect_info, response); | 840 ->SimulateServerRedirect(kUrlRedirect); |
| 854 EXPECT_EQ(init_site_instance_id, main_test_rfh()->GetSiteInstance()->GetId()); | 841 EXPECT_EQ(init_site_instance_id, main_test_rfh()->GetSiteInstance()->GetId()); |
| 855 speculative_rfh = GetSpeculativeRenderFrameHost(node); | 842 speculative_rfh = GetSpeculativeRenderFrameHost(node); |
| 856 ASSERT_TRUE(speculative_rfh); | 843 ASSERT_TRUE(speculative_rfh); |
| 857 | 844 |
| 858 // For now, ensure that the speculative RenderFrameHost does not change after | 845 // For now, ensure that the speculative RenderFrameHost does not change after |
| 859 // the redirect. | 846 // the redirect. |
| 860 // TODO(carlosk): once the speculative RenderFrameHost updates with redirects | 847 // TODO(carlosk): once the speculative RenderFrameHost updates with redirects |
| 861 // this next check will be changed to verify that it actually happens. | 848 // this next check will be changed to verify that it actually happens. |
| 862 EXPECT_EQ(site_instance_id, speculative_rfh->GetSiteInstance()->GetId()); | 849 EXPECT_EQ(site_instance_id, speculative_rfh->GetSiteInstance()->GetId()); |
| 863 | 850 |
| 864 // Commit the navigation with Navigator by simulating the call to | 851 // Commit the navigation with Navigator by simulating the call to |
| 865 // OnResponseStarted. | 852 // OnResponseStarted. |
| 866 response = new ResourceResponse; | 853 scoped_refptr<ResourceResponse> response(new ResourceResponse); |
| 867 GetLoaderForNavigationRequest(main_request) | 854 GetLoaderForNavigationRequest(main_request) |
| 868 ->CallOnResponseStarted(response, MakeEmptyStream()); | 855 ->CallOnResponseStarted(response, MakeEmptyStream()); |
| 869 speculative_rfh = GetSpeculativeRenderFrameHost(node); | 856 speculative_rfh = GetSpeculativeRenderFrameHost(node); |
| 870 EXPECT_TRUE(DidRenderFrameHostRequestCommit(speculative_rfh)); | 857 EXPECT_TRUE(DidRenderFrameHostRequestCommit(speculative_rfh)); |
| 871 EXPECT_EQ(init_site_instance_id, main_test_rfh()->GetSiteInstance()->GetId()); | 858 EXPECT_EQ(init_site_instance_id, main_test_rfh()->GetSiteInstance()->GetId()); |
| 872 | 859 |
| 873 // Once commit happens the speculative RenderFrameHost is updated to match the | 860 // Once commit happens the speculative RenderFrameHost is updated to match the |
| 874 // known final SiteInstance. | 861 // known final SiteInstance. |
| 875 ASSERT_TRUE(speculative_rfh); | 862 ASSERT_TRUE(speculative_rfh); |
| 876 EXPECT_EQ(SiteInstanceImpl::GetSiteForURL(browser_context(), kUrlRedirect), | 863 EXPECT_EQ(SiteInstanceImpl::GetSiteForURL(browser_context(), kUrlRedirect), |
| (...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 935 EXPECT_TRUE(DidRenderFrameHostRequestCommit(rfh1)); | 922 EXPECT_TRUE(DidRenderFrameHostRequestCommit(rfh1)); |
| 936 EXPECT_FALSE(DidRenderFrameHostRequestCommit(main_test_rfh())); | 923 EXPECT_FALSE(DidRenderFrameHostRequestCommit(main_test_rfh())); |
| 937 | 924 |
| 938 rfh1->SendNavigate(1, kUrl1); | 925 rfh1->SendNavigate(1, kUrl1); |
| 939 EXPECT_EQ(rfh1, main_test_rfh()); | 926 EXPECT_EQ(rfh1, main_test_rfh()); |
| 940 EXPECT_EQ(RenderFrameHostImpl::STATE_DEFAULT, rfh1->rfh_state()); | 927 EXPECT_EQ(RenderFrameHostImpl::STATE_DEFAULT, rfh1->rfh_state()); |
| 941 EXPECT_FALSE(rfhm->IsOnSwappedOutList(rfh1)); | 928 EXPECT_FALSE(rfhm->IsOnSwappedOutList(rfh1)); |
| 942 } | 929 } |
| 943 | 930 |
| 944 } // namespace content | 931 } // namespace content |
| OLD | NEW |