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

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

Issue 953503002: PlzNavigate: test updates post beforeUnload IPC refactor. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "base/command_line.h" 5 #include "base/command_line.h"
6 #include "base/macros.h" 6 #include "base/macros.h"
7 #include "base/time/time.h" 7 #include "base/time/time.h"
8 #include "content/browser/frame_host/navigation_controller_impl.h" 8 #include "content/browser/frame_host/navigation_controller_impl.h"
9 #include "content/browser/frame_host/navigation_entry_impl.h" 9 #include "content/browser/frame_host/navigation_entry_impl.h"
10 #include "content/browser/frame_host/navigation_request.h" 10 #include "content/browser/frame_host/navigation_request.h"
(...skipping 403 matching lines...) Expand 10 before | Expand all | Expand 10 after
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 294 matching lines...) Expand 10 before | Expand all | Expand 10 after
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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698