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 254 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
265 | 265 |
266 contents()->NavigateAndCommit(kUrl1); | 266 contents()->NavigateAndCommit(kUrl1); |
267 | 267 |
268 // Start a new navigation. | 268 // Start a new navigation. |
269 FrameTreeNode* node = main_test_rfh()->frame_tree_node(); | 269 FrameTreeNode* node = main_test_rfh()->frame_tree_node(); |
270 RequestNavigation(node, kUrl2); | 270 RequestNavigation(node, kUrl2); |
271 NavigationRequest* request = node->navigation_request(); | 271 NavigationRequest* request = node->navigation_request(); |
272 ASSERT_TRUE(request); | 272 ASSERT_TRUE(request); |
273 EXPECT_TRUE(request->browser_initiated()); | 273 EXPECT_TRUE(request->browser_initiated()); |
274 EXPECT_EQ(NavigationRequest::WAITING_FOR_RENDERER_RESPONSE, request->state()); | 274 EXPECT_EQ(NavigationRequest::WAITING_FOR_RENDERER_RESPONSE, request->state()); |
275 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node)); | 275 EXPECT_TRUE(GetSpeculativeRenderFrameHost(node)); |
276 | 276 |
277 // Simulate a beforeUnload denial. | 277 // Simulate a beforeUnload denial. |
278 main_test_rfh()->SendBeforeUnloadACK(false); | 278 main_test_rfh()->SendBeforeUnloadACK(false); |
279 EXPECT_FALSE(node->navigation_request()); | 279 EXPECT_FALSE(node->navigation_request()); |
280 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node)); | 280 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node)); |
281 } | 281 } |
282 | 282 |
283 // PlzNavigate: Test that a proper NavigationRequest is created by | 283 // PlzNavigate: Test that a proper NavigationRequest is created by |
284 // RequestNavigation. | 284 // RequestNavigation. |
285 TEST_F(NavigatorTestWithBrowserSideNavigation, BeginNavigation) { | 285 TEST_F(NavigatorTestWithBrowserSideNavigation, BeginNavigation) { |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
324 } else { | 324 } else { |
325 EXPECT_FALSE(GetSpeculativeRenderFrameHost(subframe_node)); | 325 EXPECT_FALSE(GetSpeculativeRenderFrameHost(subframe_node)); |
326 } | 326 } |
327 | 327 |
328 // Now start a navigation at the root node. | 328 // Now start a navigation at the root node. |
329 RequestNavigation(root_node, kUrl3); | 329 RequestNavigation(root_node, kUrl3); |
330 NavigationRequest* main_request = root_node->navigation_request(); | 330 NavigationRequest* main_request = root_node->navigation_request(); |
331 ASSERT_TRUE(main_request); | 331 ASSERT_TRUE(main_request); |
332 EXPECT_EQ(NavigationRequest::WAITING_FOR_RENDERER_RESPONSE, | 332 EXPECT_EQ(NavigationRequest::WAITING_FOR_RENDERER_RESPONSE, |
333 main_request->state()); | 333 main_request->state()); |
334 EXPECT_FALSE(GetSpeculativeRenderFrameHost(root_node)); | 334 |
335 // Main frame navigation to a different site should use a speculative | |
336 // RenderFrameHost. | |
337 EXPECT_TRUE(GetSpeculativeRenderFrameHost(root_node)); | |
335 | 338 |
336 // Simulate a BeforeUnloadACK IPC on the main frame. | 339 // Simulate a BeforeUnloadACK IPC on the main frame. |
337 main_test_rfh()->SendBeforeUnloadACK(true); | 340 main_test_rfh()->SendBeforeUnloadACK(true); |
338 TestNavigationURLLoader* main_loader = | 341 TestNavigationURLLoader* main_loader = |
339 GetLoaderForNavigationRequest(main_request); | 342 GetLoaderForNavigationRequest(main_request); |
340 EXPECT_EQ(kUrl3, main_request->common_params().url); | 343 EXPECT_EQ(kUrl3, main_request->common_params().url); |
341 EXPECT_EQ(kUrl3, main_loader->request_info()->common_params.url); | 344 EXPECT_EQ(kUrl3, main_loader->request_info()->common_params.url); |
342 EXPECT_EQ(kUrl3, main_loader->request_info()->first_party_for_cookies); | 345 EXPECT_EQ(kUrl3, main_loader->request_info()->first_party_for_cookies); |
343 EXPECT_TRUE(main_loader->request_info()->is_main_frame); | 346 EXPECT_TRUE(main_loader->request_info()->is_main_frame); |
344 EXPECT_FALSE(main_loader->request_info()->parent_is_main_frame); | 347 EXPECT_FALSE(main_loader->request_info()->parent_is_main_frame); |
345 EXPECT_TRUE(main_request->browser_initiated()); | 348 EXPECT_TRUE(main_request->browser_initiated()); |
346 // BeforeUnloadACK was received from the renderer so the navigation should | 349 // BeforeUnloadACK was received from the renderer so the navigation should |
347 // have started. | 350 // have started. |
348 EXPECT_EQ(NavigationRequest::STARTED, main_request->state()); | 351 EXPECT_EQ(NavigationRequest::STARTED, main_request->state()); |
349 | |
350 // Main frame navigation to a different site should use a speculative | |
351 // RenderFrameHost. | |
352 EXPECT_TRUE(GetSpeculativeRenderFrameHost(root_node)); | 352 EXPECT_TRUE(GetSpeculativeRenderFrameHost(root_node)); |
353 | 353 |
354 // As the main frame hasn't yet committed the subframe still exists. Thus, the | 354 // As the main frame hasn't yet committed the subframe still exists. Thus, the |
355 // above situation regarding subframe navigations is valid here. | 355 // above situation regarding subframe navigations is valid here. |
356 if (base::CommandLine::ForCurrentProcess()->HasSwitch( | 356 if (base::CommandLine::ForCurrentProcess()->HasSwitch( |
357 switches::kSitePerProcess)) { | 357 switches::kSitePerProcess)) { |
358 EXPECT_TRUE(GetSpeculativeRenderFrameHost(subframe_node)); | 358 EXPECT_TRUE(GetSpeculativeRenderFrameHost(subframe_node)); |
359 } else { | 359 } else { |
360 EXPECT_FALSE(GetSpeculativeRenderFrameHost(subframe_node)); | 360 EXPECT_FALSE(GetSpeculativeRenderFrameHost(subframe_node)); |
361 } | 361 } |
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
432 | 432 |
433 contents()->NavigateAndCommit(kUrl1); | 433 contents()->NavigateAndCommit(kUrl1); |
434 RenderFrameHostImpl* initial_rfh = main_test_rfh(); | 434 RenderFrameHostImpl* initial_rfh = main_test_rfh(); |
435 FrameTreeNode* node = main_test_rfh()->frame_tree_node(); | 435 FrameTreeNode* node = main_test_rfh()->frame_tree_node(); |
436 | 436 |
437 // Navigate to a different site. | 437 // Navigate to a different site. |
438 process()->sink().ClearMessages(); | 438 process()->sink().ClearMessages(); |
439 int entry_id = RequestNavigation(node, kUrl2); | 439 int entry_id = RequestNavigation(node, kUrl2); |
440 NavigationRequest* main_request = node->navigation_request(); | 440 NavigationRequest* main_request = node->navigation_request(); |
441 ASSERT_TRUE(main_request); | 441 ASSERT_TRUE(main_request); |
442 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node)); | 442 TestRenderFrameHost* speculative_rfh = GetSpeculativeRenderFrameHost(node); |
443 ASSERT_TRUE(speculative_rfh); | |
443 | 444 |
444 // Receive the beforeUnload ACK. | 445 // Receive the beforeUnload ACK. |
445 main_test_rfh()->SendBeforeUnloadACK(true); | 446 main_test_rfh()->SendBeforeUnloadACK(true); |
446 EXPECT_TRUE(GetSpeculativeRenderFrameHost(node)); | 447 EXPECT_EQ(speculative_rfh, GetSpeculativeRenderFrameHost(node)); |
447 EXPECT_FALSE(contents()->CrossProcessNavigationPending()); | 448 EXPECT_FALSE(contents()->CrossProcessNavigationPending()); |
448 | 449 |
449 scoped_refptr<ResourceResponse> response(new ResourceResponse); | 450 scoped_refptr<ResourceResponse> response(new ResourceResponse); |
450 GetLoaderForNavigationRequest(main_request)->CallOnResponseStarted( | 451 GetLoaderForNavigationRequest(main_request)->CallOnResponseStarted( |
451 response, MakeEmptyStream()); | 452 response, MakeEmptyStream()); |
452 TestRenderFrameHost* speculative_rfh = GetSpeculativeRenderFrameHost(node); | 453 EXPECT_EQ(speculative_rfh, GetSpeculativeRenderFrameHost(node)); |
453 ASSERT_TRUE(speculative_rfh); | |
454 EXPECT_TRUE(DidRenderFrameHostRequestCommit(speculative_rfh)); | 454 EXPECT_TRUE(DidRenderFrameHostRequestCommit(speculative_rfh)); |
455 EXPECT_FALSE(DidRenderFrameHostRequestCommit(main_test_rfh())); | 455 EXPECT_FALSE(DidRenderFrameHostRequestCommit(main_test_rfh())); |
456 EXPECT_TRUE(contents()->CrossProcessNavigationPending()); | 456 EXPECT_TRUE(contents()->CrossProcessNavigationPending()); |
457 | 457 |
458 speculative_rfh->SendNavigate(0, entry_id, true, kUrl2); | 458 speculative_rfh->SendNavigate(0, entry_id, true, kUrl2); |
459 | 459 |
460 RenderFrameHostImpl* final_rfh = main_test_rfh(); | 460 RenderFrameHostImpl* final_rfh = main_test_rfh(); |
461 EXPECT_EQ(speculative_rfh, final_rfh); | 461 EXPECT_EQ(speculative_rfh, final_rfh); |
462 EXPECT_NE(initial_rfh, final_rfh); | 462 EXPECT_NE(initial_rfh, final_rfh); |
463 EXPECT_TRUE(final_rfh->IsRenderFrameLive()); | 463 EXPECT_TRUE(final_rfh->IsRenderFrameLive()); |
(...skipping 230 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
694 contents()->NavigateAndCommit(kUrl0); | 694 contents()->NavigateAndCommit(kUrl0); |
695 FrameTreeNode* node = main_test_rfh()->frame_tree_node(); | 695 FrameTreeNode* node = main_test_rfh()->frame_tree_node(); |
696 | 696 |
697 // Start a browser-initiated navigation to the 1st URL. | 697 // Start a browser-initiated navigation to the 1st URL. |
698 process()->sink().ClearMessages(); | 698 process()->sink().ClearMessages(); |
699 int entry_id = RequestNavigation(node, kUrl1); | 699 int entry_id = RequestNavigation(node, kUrl1); |
700 NavigationRequest* request1 = node->navigation_request(); | 700 NavigationRequest* request1 = node->navigation_request(); |
701 ASSERT_TRUE(request1); | 701 ASSERT_TRUE(request1); |
702 EXPECT_EQ(kUrl1, request1->common_params().url); | 702 EXPECT_EQ(kUrl1, request1->common_params().url); |
703 EXPECT_TRUE(request1->browser_initiated()); | 703 EXPECT_TRUE(request1->browser_initiated()); |
704 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node)); | 704 EXPECT_TRUE(GetSpeculativeRenderFrameHost(node)); |
705 | 705 |
706 // Now receive a renderer-initiated non-user-initiated request. Nothing should | 706 // Now receive a renderer-initiated non-user-initiated request. Nothing should |
707 // change. | 707 // change. |
708 main_test_rfh()->SendRendererInitiatedNavigationRequest(kUrl2, false); | 708 main_test_rfh()->SendRendererInitiatedNavigationRequest(kUrl2, false); |
709 NavigationRequest* request2 = node->navigation_request(); | 709 NavigationRequest* request2 = node->navigation_request(); |
710 ASSERT_TRUE(request2); | 710 ASSERT_TRUE(request2); |
711 EXPECT_EQ(request1, request2); | 711 EXPECT_EQ(request1, request2); |
712 EXPECT_EQ(kUrl1, request2->common_params().url); | 712 EXPECT_EQ(kUrl1, request2->common_params().url); |
713 EXPECT_TRUE(request2->browser_initiated()); | 713 EXPECT_TRUE(request2->browser_initiated()); |
714 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node)); | 714 EXPECT_TRUE(GetSpeculativeRenderFrameHost(node)); |
715 | 715 |
716 // Now receive the beforeUnload ACK from the still ongoing navigation. | 716 // Now receive the beforeUnload ACK from the still ongoing navigation. |
717 main_test_rfh()->SendBeforeUnloadACK(true); | 717 main_test_rfh()->SendBeforeUnloadACK(true); |
718 TestRenderFrameHost* speculative_rfh = GetSpeculativeRenderFrameHost(node); | 718 TestRenderFrameHost* speculative_rfh = GetSpeculativeRenderFrameHost(node); |
719 ASSERT_TRUE(speculative_rfh); | 719 ASSERT_TRUE(speculative_rfh); |
720 | 720 |
721 // Have the RenderFrameHost commit the navigation. | 721 // Have the RenderFrameHost commit the navigation. |
722 scoped_refptr<ResourceResponse> response(new ResourceResponse); | 722 scoped_refptr<ResourceResponse> response(new ResourceResponse); |
723 GetLoaderForNavigationRequest(request2) | 723 GetLoaderForNavigationRequest(request2) |
724 ->CallOnResponseStarted(response, MakeEmptyStream()); | 724 ->CallOnResponseStarted(response, MakeEmptyStream()); |
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
819 SpeculativeRendererWorksBaseCase) { | 819 SpeculativeRendererWorksBaseCase) { |
820 // Navigate to an initial site. | 820 // Navigate to an initial site. |
821 const GURL kUrlInit("http://wikipedia.org/"); | 821 const GURL kUrlInit("http://wikipedia.org/"); |
822 contents()->NavigateAndCommit(kUrlInit); | 822 contents()->NavigateAndCommit(kUrlInit); |
823 FrameTreeNode* node = main_test_rfh()->frame_tree_node(); | 823 FrameTreeNode* node = main_test_rfh()->frame_tree_node(); |
824 | 824 |
825 // Begin navigating to another site. | 825 // Begin navigating to another site. |
826 const GURL kUrl("http://google.com/"); | 826 const GURL kUrl("http://google.com/"); |
827 process()->sink().ClearMessages(); | 827 process()->sink().ClearMessages(); |
828 int entry_id = RequestNavigation(node, kUrl); | 828 int entry_id = RequestNavigation(node, kUrl); |
829 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node)); | 829 TestRenderFrameHost* speculative_rfh = GetSpeculativeRenderFrameHost(node); |
830 ASSERT_TRUE(speculative_rfh); | |
831 EXPECT_NE(speculative_rfh, main_test_rfh()); | |
830 | 832 |
831 // Receive the beforeUnload ACK. | 833 // Receive the beforeUnload ACK. |
832 main_test_rfh()->SendBeforeUnloadACK(true); | 834 main_test_rfh()->SendBeforeUnloadACK(true); |
833 TestRenderFrameHost* speculative_rfh = GetSpeculativeRenderFrameHost(node); | 835 EXPECT_EQ(speculative_rfh, GetSpeculativeRenderFrameHost(node)); |
834 ASSERT_TRUE(speculative_rfh); | |
835 EXPECT_NE(speculative_rfh, main_test_rfh()); | |
836 EXPECT_EQ(SiteInstanceImpl::GetSiteForURL(browser_context(), kUrl), | 836 EXPECT_EQ(SiteInstanceImpl::GetSiteForURL(browser_context(), kUrl), |
837 speculative_rfh->GetSiteInstance()->GetSiteURL()); | 837 speculative_rfh->GetSiteInstance()->GetSiteURL()); |
838 EXPECT_FALSE(node->render_manager()->pending_frame_host()); | 838 EXPECT_FALSE(node->render_manager()->pending_frame_host()); |
839 int32 site_instance_id = speculative_rfh->GetSiteInstance()->GetId(); | 839 int32 site_instance_id = speculative_rfh->GetSiteInstance()->GetId(); |
840 | 840 |
841 // Ask Navigator to commit the navigation by simulating a call to | 841 // Ask Navigator to commit the navigation by simulating a call to |
842 // OnResponseStarted. | 842 // OnResponseStarted. |
843 scoped_refptr<ResourceResponse> response(new ResourceResponse); | 843 scoped_refptr<ResourceResponse> response(new ResourceResponse); |
844 GetLoaderForNavigationRequest(node->navigation_request()) | 844 GetLoaderForNavigationRequest(node->navigation_request()) |
845 ->CallOnResponseStarted(response, MakeEmptyStream()); | 845 ->CallOnResponseStarted(response, MakeEmptyStream()); |
846 speculative_rfh = GetSpeculativeRenderFrameHost(node); | 846 EXPECT_EQ(speculative_rfh, GetSpeculativeRenderFrameHost(node)); |
847 ASSERT_TRUE(speculative_rfh); | |
848 EXPECT_TRUE(DidRenderFrameHostRequestCommit(speculative_rfh)); | 847 EXPECT_TRUE(DidRenderFrameHostRequestCommit(speculative_rfh)); |
849 EXPECT_EQ(site_instance_id, speculative_rfh->GetSiteInstance()->GetId()); | 848 EXPECT_EQ(site_instance_id, speculative_rfh->GetSiteInstance()->GetId()); |
850 EXPECT_FALSE(node->render_manager()->pending_frame_host()); | 849 EXPECT_FALSE(node->render_manager()->pending_frame_host()); |
851 | 850 |
852 // Invoke OnDidCommitProvisionalLoad. | 851 // Invoke OnDidCommitProvisionalLoad. |
853 speculative_rfh->SendNavigate(0, entry_id, true, kUrl); | 852 speculative_rfh->SendNavigate(0, entry_id, true, kUrl); |
854 EXPECT_EQ(site_instance_id, main_test_rfh()->GetSiteInstance()->GetId()); | 853 EXPECT_EQ(site_instance_id, main_test_rfh()->GetSiteInstance()->GetId()); |
855 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node)); | 854 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node)); |
856 EXPECT_FALSE(node->render_manager()->pending_frame_host()); | 855 EXPECT_FALSE(node->render_manager()->pending_frame_host()); |
857 } | 856 } |
858 | 857 |
859 // PlzNavigate: Confirm that a speculative RenderFrameHost is thrown away when | 858 // PlzNavigate: Confirm that a speculative RenderFrameHost is thrown away when |
860 // the final URL's site differs from the initial one due to redirects. | 859 // the final URL's site differs from the initial one due to redirects. |
861 TEST_F(NavigatorTestWithBrowserSideNavigation, | 860 TEST_F(NavigatorTestWithBrowserSideNavigation, |
862 SpeculativeRendererDiscardedAfterRedirectToAnotherSite) { | 861 SpeculativeRendererDiscardedAfterRedirectToAnotherSite) { |
863 // Navigate to an initial site. | 862 // Navigate to an initial site. |
864 const GURL kUrlInit("http://wikipedia.org/"); | 863 const GURL kUrlInit("http://wikipedia.org/"); |
865 contents()->NavigateAndCommit(kUrlInit); | 864 contents()->NavigateAndCommit(kUrlInit); |
866 FrameTreeNode* node = main_test_rfh()->frame_tree_node(); | 865 FrameTreeNode* node = main_test_rfh()->frame_tree_node(); |
867 int32 init_site_instance_id = main_test_rfh()->GetSiteInstance()->GetId(); | 866 int32 init_site_instance_id = main_test_rfh()->GetSiteInstance()->GetId(); |
868 | 867 |
869 // Begin navigating to another site. | 868 // Begin navigating to another site. |
870 const GURL kUrl("http://google.com/"); | 869 const GURL kUrl("http://google.com/"); |
871 process()->sink().ClearMessages(); | 870 process()->sink().ClearMessages(); |
872 int entry_id = RequestNavigation(node, kUrl); | 871 int entry_id = RequestNavigation(node, kUrl); |
873 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node)); | |
874 | |
875 // Receive the beforeUnload ACK. | |
876 main_test_rfh()->SendBeforeUnloadACK(true); | |
877 TestRenderFrameHost* speculative_rfh = GetSpeculativeRenderFrameHost(node); | 872 TestRenderFrameHost* speculative_rfh = GetSpeculativeRenderFrameHost(node); |
873 ASSERT_TRUE(speculative_rfh); | |
878 int32 site_instance_id = speculative_rfh->GetSiteInstance()->GetId(); | 874 int32 site_instance_id = speculative_rfh->GetSiteInstance()->GetId(); |
879 EXPECT_NE(init_site_instance_id, site_instance_id); | 875 EXPECT_NE(init_site_instance_id, site_instance_id); |
880 EXPECT_EQ(init_site_instance_id, main_test_rfh()->GetSiteInstance()->GetId()); | 876 EXPECT_EQ(init_site_instance_id, main_test_rfh()->GetSiteInstance()->GetId()); |
881 ASSERT_TRUE(speculative_rfh); | |
882 EXPECT_NE(speculative_rfh, main_test_rfh()); | 877 EXPECT_NE(speculative_rfh, main_test_rfh()); |
883 EXPECT_EQ(SiteInstanceImpl::GetSiteForURL(browser_context(), kUrl), | 878 EXPECT_EQ(SiteInstanceImpl::GetSiteForURL(browser_context(), kUrl), |
884 speculative_rfh->GetSiteInstance()->GetSiteURL()); | 879 speculative_rfh->GetSiteInstance()->GetSiteURL()); |
885 | 880 |
881 // Receive the beforeUnload ACK. | |
882 main_test_rfh()->SendBeforeUnloadACK(true); | |
883 EXPECT_TRUE(GetSpeculativeRenderFrameHost(node)); | |
nasko
2015/06/12 17:22:22
You have an EXPECT_EQ in other places with this pa
carlosk
2015/06/15 19:11:54
Done.
| |
884 | |
886 // It then redirects to yet another site. | 885 // It then redirects to yet another site. |
887 NavigationRequest* main_request = node->navigation_request(); | 886 NavigationRequest* main_request = node->navigation_request(); |
888 ASSERT_TRUE(main_request); | 887 ASSERT_TRUE(main_request); |
889 const GURL kUrlRedirect("https://www.google.com/"); | 888 const GURL kUrlRedirect("https://www.google.com/"); |
890 GetLoaderForNavigationRequest(main_request) | 889 GetLoaderForNavigationRequest(main_request) |
891 ->SimulateServerRedirect(kUrlRedirect); | 890 ->SimulateServerRedirect(kUrlRedirect); |
892 EXPECT_EQ(init_site_instance_id, main_test_rfh()->GetSiteInstance()->GetId()); | 891 EXPECT_EQ(init_site_instance_id, main_test_rfh()->GetSiteInstance()->GetId()); |
893 speculative_rfh = GetSpeculativeRenderFrameHost(node); | 892 speculative_rfh = GetSpeculativeRenderFrameHost(node); |
894 ASSERT_TRUE(speculative_rfh); | 893 ASSERT_TRUE(speculative_rfh); |
895 | 894 |
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
955 ASSERT_NE(rfh1, main_test_rfh()); | 954 ASSERT_NE(rfh1, main_test_rfh()); |
956 EXPECT_NE(RenderFrameHostImpl::STATE_DEFAULT, rfh1->rfh_state()); | 955 EXPECT_NE(RenderFrameHostImpl::STATE_DEFAULT, rfh1->rfh_state()); |
957 EXPECT_EQ(RenderFrameHostImpl::STATE_DEFAULT, main_test_rfh()->rfh_state()); | 956 EXPECT_EQ(RenderFrameHostImpl::STATE_DEFAULT, main_test_rfh()->rfh_state()); |
958 EXPECT_TRUE(rfhm->IsOnSwappedOutList(rfh1)); | 957 EXPECT_TRUE(rfhm->IsOnSwappedOutList(rfh1)); |
959 | 958 |
960 // Now go back to the initial site so that the swapped out RenderFrameHost | 959 // Now go back to the initial site so that the swapped out RenderFrameHost |
961 // should be reused. | 960 // should be reused. |
962 process()->sink().ClearMessages(); | 961 process()->sink().ClearMessages(); |
963 rfh1->GetProcess()->sink().ClearMessages(); | 962 rfh1->GetProcess()->sink().ClearMessages(); |
964 int entry_id = RequestNavigation(node, kUrl1); | 963 int entry_id = RequestNavigation(node, kUrl1); |
965 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node)); | 964 EXPECT_EQ(rfh1, GetSpeculativeRenderFrameHost(node)); |
966 | 965 |
967 main_test_rfh()->SendBeforeUnloadACK(true); | 966 main_test_rfh()->SendBeforeUnloadACK(true); |
968 EXPECT_EQ(rfh1, GetSpeculativeRenderFrameHost(node)); | 967 EXPECT_EQ(rfh1, GetSpeculativeRenderFrameHost(node)); |
969 EXPECT_NE(RenderFrameHostImpl::STATE_DEFAULT, | 968 EXPECT_NE(RenderFrameHostImpl::STATE_DEFAULT, |
970 GetSpeculativeRenderFrameHost(node)->rfh_state()); | 969 GetSpeculativeRenderFrameHost(node)->rfh_state()); |
971 | 970 |
972 scoped_refptr<ResourceResponse> response(new ResourceResponse); | 971 scoped_refptr<ResourceResponse> response(new ResourceResponse); |
973 GetLoaderForNavigationRequest(node->navigation_request()) | 972 GetLoaderForNavigationRequest(node->navigation_request()) |
974 ->CallOnResponseStarted(response, MakeEmptyStream()); | 973 ->CallOnResponseStarted(response, MakeEmptyStream()); |
975 EXPECT_EQ(rfh1, GetSpeculativeRenderFrameHost(node)); | 974 EXPECT_EQ(rfh1, GetSpeculativeRenderFrameHost(node)); |
(...skipping 168 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1144 | 1143 |
1145 SiteInstance* converted_instance_2 = | 1144 SiteInstance* converted_instance_2 = |
1146 ConvertToSiteInstance(rfhm, descriptor, unrelated_instance.get()); | 1145 ConvertToSiteInstance(rfhm, descriptor, unrelated_instance.get()); |
1147 // Should return |unrelated_instance| because its site matches and it is | 1146 // Should return |unrelated_instance| because its site matches and it is |
1148 // unrelated to the current SiteInstance. | 1147 // unrelated to the current SiteInstance. |
1149 EXPECT_EQ(unrelated_instance.get(), converted_instance_2); | 1148 EXPECT_EQ(unrelated_instance.get(), converted_instance_2); |
1150 } | 1149 } |
1151 } | 1150 } |
1152 | 1151 |
1153 } // namespace content | 1152 } // namespace content |
OLD | NEW |