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 91 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
968 ASSERT_TRUE(speculative_rfh); | 955 ASSERT_TRUE(speculative_rfh); |
969 speculative_rfh->SendNavigate(0, kUrl2); | 956 speculative_rfh->SendNavigate(0, kUrl2); |
970 EXPECT_EQ(main_test_rfh(), speculative_rfh); | 957 EXPECT_EQ(main_test_rfh(), speculative_rfh); |
971 | 958 |
972 // Go back to the initial site. | 959 // Go back to the initial site. |
973 contents()->NavigateAndCommit(kUrl1); | 960 contents()->NavigateAndCommit(kUrl1); |
974 | 961 |
975 // Do a renderer-initiated navigation to a data url. The request should not be | 962 // Do a renderer-initiated navigation to a data url. The request should not be |
976 // sent to the IO thread, nor committed. | 963 // sent to the IO thread, nor committed. |
977 TestRenderFrameHost* main_rfh = main_test_rfh(); | 964 TestRenderFrameHost* main_rfh = main_test_rfh(); |
978 main_rfh->SendBeginNavigationWithURL(kUrl2, true); | 965 main_rfh->SendRendererInitiatedNavigationRequest(kUrl2, true); |
979 navigation_request = GetNavigationRequestForFrameTreeNode(node); | 966 navigation_request = GetNavigationRequestForFrameTreeNode(node); |
980 ASSERT_TRUE(navigation_request); | 967 ASSERT_TRUE(navigation_request); |
981 EXPECT_EQ(NavigationRequest::RESPONSE_STARTED, | 968 EXPECT_EQ(NavigationRequest::RESPONSE_STARTED, |
982 navigation_request->state()); | 969 navigation_request->state()); |
983 EXPECT_FALSE(navigation_request->loader_for_testing()); | 970 EXPECT_FALSE(navigation_request->loader_for_testing()); |
984 speculative_rfh = GetSpeculativeRenderFrameHost(node); | 971 speculative_rfh = GetSpeculativeRenderFrameHost(node); |
985 ASSERT_TRUE(speculative_rfh); | 972 ASSERT_TRUE(speculative_rfh); |
986 speculative_rfh->SendNavigate(0, kUrl2); | 973 speculative_rfh->SendNavigate(0, kUrl2); |
987 EXPECT_EQ(main_test_rfh(), speculative_rfh); | 974 EXPECT_EQ(main_test_rfh(), speculative_rfh); |
988 } | 975 } |
989 | 976 |
990 } // namespace content | 977 } // namespace content |
OLD | NEW |