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 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
60 NavigationController::ReloadType reload_type) { | 60 NavigationController::ReloadType reload_type) { |
61 scoped_ptr<NavigationEntryImpl> entry( | 61 scoped_ptr<NavigationEntryImpl> entry( |
62 NavigationEntryImpl::FromNavigationEntry( | 62 NavigationEntryImpl::FromNavigationEntry( |
63 NavigationController::CreateNavigationEntry( | 63 NavigationController::CreateNavigationEntry( |
64 url, | 64 url, |
65 referrer, | 65 referrer, |
66 transition_type, | 66 transition_type, |
67 false, | 67 false, |
68 std::string(), | 68 std::string(), |
69 controller().GetBrowserContext()))); | 69 controller().GetBrowserContext()))); |
70 static_cast<NavigatorImpl*>(node->navigator())->RequestNavigation( | 70 static_cast<NavigatorImpl*>(node->navigator())->RequestNavigation( |
clamy
2015/03/16 10:39:55
As explained by mail this is likely to cause a few
| |
71 node, *entry, reload_type, base::TimeTicks::Now()); | 71 node, *entry, reload_type, base::TimeTicks::Now()); |
72 } | 72 } |
73 | 73 |
74 NavigationRequest* GetNavigationRequestForFrameTreeNode( | 74 NavigationRequest* GetNavigationRequestForFrameTreeNode( |
75 FrameTreeNode* frame_tree_node) { | 75 FrameTreeNode* frame_tree_node) { |
76 return static_cast<NavigatorImpl*>(frame_tree_node->navigator()) | 76 return static_cast<NavigatorImpl*>(frame_tree_node->navigator()) |
77 ->GetNavigationRequestForNodeForTesting(frame_tree_node); | 77 ->GetNavigationRequestForNodeForTesting(frame_tree_node); |
78 } | 78 } |
79 | 79 |
80 TestRenderFrameHost* GetSpeculativeRenderFrameHost(FrameTreeNode* node) { | 80 TestRenderFrameHost* GetSpeculativeRenderFrameHost(FrameTreeNode* node) { |
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
124 EXPECT_FALSE(node->render_manager()->pending_frame_host()); | 124 EXPECT_FALSE(node->render_manager()->pending_frame_host()); |
125 | 125 |
126 // Have the current RenderFrameHost commit the navigation. | 126 // Have the current RenderFrameHost commit the navigation. |
127 scoped_refptr<ResourceResponse> response(new ResourceResponse); | 127 scoped_refptr<ResourceResponse> response(new ResourceResponse); |
128 GetLoaderForNavigationRequest(request) | 128 GetLoaderForNavigationRequest(request) |
129 ->CallOnResponseStarted(response, MakeEmptyStream()); | 129 ->CallOnResponseStarted(response, MakeEmptyStream()); |
130 EXPECT_TRUE(DidRenderFrameHostRequestCommit(main_test_rfh())); | 130 EXPECT_TRUE(DidRenderFrameHostRequestCommit(main_test_rfh())); |
131 EXPECT_EQ(NavigationRequest::RESPONSE_STARTED, request->state()); | 131 EXPECT_EQ(NavigationRequest::RESPONSE_STARTED, request->state()); |
132 | 132 |
133 // Commit the navigation. | 133 // Commit the navigation. |
134 main_test_rfh()->SendNavigate(0, kUrl); | 134 main_test_rfh()->SendNavigate(0, 0, true, kUrl); |
135 EXPECT_EQ(RenderFrameHostImpl::STATE_DEFAULT, main_test_rfh()->rfh_state()); | 135 EXPECT_EQ(RenderFrameHostImpl::STATE_DEFAULT, main_test_rfh()->rfh_state()); |
136 EXPECT_EQ(SiteInstanceImpl::GetSiteForURL(browser_context(), kUrl), | 136 EXPECT_EQ(SiteInstanceImpl::GetSiteForURL(browser_context(), kUrl), |
137 main_test_rfh()->GetSiteInstance()->GetSiteURL()); | 137 main_test_rfh()->GetSiteInstance()->GetSiteURL()); |
138 EXPECT_EQ(kUrl, contents()->GetLastCommittedURL()); | 138 EXPECT_EQ(kUrl, contents()->GetLastCommittedURL()); |
139 EXPECT_FALSE(GetNavigationRequestForFrameTreeNode(node)); | 139 EXPECT_FALSE(GetNavigationRequestForFrameTreeNode(node)); |
140 EXPECT_FALSE(node->render_manager()->pending_frame_host()); | 140 EXPECT_FALSE(node->render_manager()->pending_frame_host()); |
141 | 141 |
142 // The main RenderFrameHost should not have been changed, and the renderer | 142 // The main RenderFrameHost should not have been changed, and the renderer |
143 // should have been initialized. | 143 // should have been initialized. |
144 EXPECT_EQ(site_instance_id, main_test_rfh()->GetSiteInstance()->GetId()); | 144 EXPECT_EQ(site_instance_id, main_test_rfh()->GetSiteInstance()->GetId()); |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
177 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node)); | 177 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node)); |
178 | 178 |
179 // Have the current RenderFrameHost commit the navigation. | 179 // Have the current RenderFrameHost commit the navigation. |
180 scoped_refptr<ResourceResponse> response(new ResourceResponse); | 180 scoped_refptr<ResourceResponse> response(new ResourceResponse); |
181 GetLoaderForNavigationRequest(request) | 181 GetLoaderForNavigationRequest(request) |
182 ->CallOnResponseStarted(response, MakeEmptyStream()); | 182 ->CallOnResponseStarted(response, MakeEmptyStream()); |
183 EXPECT_TRUE(DidRenderFrameHostRequestCommit(main_test_rfh())); | 183 EXPECT_TRUE(DidRenderFrameHostRequestCommit(main_test_rfh())); |
184 EXPECT_EQ(NavigationRequest::RESPONSE_STARTED, request->state()); | 184 EXPECT_EQ(NavigationRequest::RESPONSE_STARTED, request->state()); |
185 | 185 |
186 // Commit the navigation. | 186 // Commit the navigation. |
187 main_test_rfh()->SendNavigate(0, kUrl2); | 187 main_test_rfh()->SendNavigate(0, 0, true, 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 that a beforeUnload denial cancels the navigation. | 197 // PlzNavigate: Test that a beforeUnload denial cancels the navigation. |
(...skipping 187 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
385 EXPECT_TRUE(GetSpeculativeRenderFrameHost(node)); | 385 EXPECT_TRUE(GetSpeculativeRenderFrameHost(node)); |
386 | 386 |
387 scoped_refptr<ResourceResponse> response(new ResourceResponse); | 387 scoped_refptr<ResourceResponse> response(new ResourceResponse); |
388 GetLoaderForNavigationRequest(main_request)->CallOnResponseStarted( | 388 GetLoaderForNavigationRequest(main_request)->CallOnResponseStarted( |
389 response, MakeEmptyStream()); | 389 response, MakeEmptyStream()); |
390 TestRenderFrameHost* speculative_rfh = GetSpeculativeRenderFrameHost(node); | 390 TestRenderFrameHost* speculative_rfh = GetSpeculativeRenderFrameHost(node); |
391 ASSERT_TRUE(speculative_rfh); | 391 ASSERT_TRUE(speculative_rfh); |
392 EXPECT_TRUE(DidRenderFrameHostRequestCommit(speculative_rfh)); | 392 EXPECT_TRUE(DidRenderFrameHostRequestCommit(speculative_rfh)); |
393 EXPECT_FALSE(DidRenderFrameHostRequestCommit(main_test_rfh())); | 393 EXPECT_FALSE(DidRenderFrameHostRequestCommit(main_test_rfh())); |
394 | 394 |
395 speculative_rfh->SendNavigate(0, kUrl2); | 395 speculative_rfh->SendNavigate(0, 0, true, kUrl2); |
396 | 396 |
397 RenderFrameHostImpl* final_rfh = main_test_rfh(); | 397 RenderFrameHostImpl* final_rfh = main_test_rfh(); |
398 EXPECT_EQ(speculative_rfh, final_rfh); | 398 EXPECT_EQ(speculative_rfh, final_rfh); |
399 EXPECT_NE(initial_rfh, final_rfh); | 399 EXPECT_NE(initial_rfh, final_rfh); |
400 EXPECT_TRUE(final_rfh->IsRenderFrameLive()); | 400 EXPECT_TRUE(final_rfh->IsRenderFrameLive()); |
401 EXPECT_TRUE(final_rfh->render_view_host()->IsRenderViewLive()); | 401 EXPECT_TRUE(final_rfh->render_view_host()->IsRenderViewLive()); |
402 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node)); | 402 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node)); |
403 } | 403 } |
404 | 404 |
405 // PlzNavigate: Test that redirects are followed and the speculative | 405 // PlzNavigate: Test that redirects are followed and the speculative |
(...skipping 24 matching lines...) Expand all Loading... | |
430 // Have the RenderFrameHost commit the navigation. | 430 // Have the RenderFrameHost commit the navigation. |
431 scoped_refptr<ResourceResponse> response(new ResourceResponse); | 431 scoped_refptr<ResourceResponse> response(new ResourceResponse); |
432 GetLoaderForNavigationRequest(main_request)->CallOnResponseStarted( | 432 GetLoaderForNavigationRequest(main_request)->CallOnResponseStarted( |
433 response, MakeEmptyStream()); | 433 response, MakeEmptyStream()); |
434 TestRenderFrameHost* final_speculative_rfh = | 434 TestRenderFrameHost* final_speculative_rfh = |
435 GetSpeculativeRenderFrameHost(node); | 435 GetSpeculativeRenderFrameHost(node); |
436 EXPECT_TRUE(final_speculative_rfh); | 436 EXPECT_TRUE(final_speculative_rfh); |
437 EXPECT_TRUE(DidRenderFrameHostRequestCommit(final_speculative_rfh)); | 437 EXPECT_TRUE(DidRenderFrameHostRequestCommit(final_speculative_rfh)); |
438 | 438 |
439 // Commit the navigation. | 439 // Commit the navigation. |
440 final_speculative_rfh->SendNavigate(0, kUrl2); | 440 final_speculative_rfh->SendNavigate(0, 0, true, kUrl2); |
441 RenderFrameHostImpl* final_rfh = main_test_rfh(); | 441 RenderFrameHostImpl* final_rfh = main_test_rfh(); |
442 ASSERT_TRUE(final_rfh); | 442 ASSERT_TRUE(final_rfh); |
443 EXPECT_NE(rfh, final_rfh); | 443 EXPECT_NE(rfh, final_rfh); |
444 EXPECT_EQ(final_speculative_rfh, final_rfh); | 444 EXPECT_EQ(final_speculative_rfh, final_rfh); |
445 EXPECT_TRUE(final_rfh->IsRenderFrameLive()); | 445 EXPECT_TRUE(final_rfh->IsRenderFrameLive()); |
446 EXPECT_TRUE(final_rfh->render_view_host()->IsRenderViewLive()); | 446 EXPECT_TRUE(final_rfh->render_view_host()->IsRenderViewLive()); |
447 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node)); | 447 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node)); |
448 } | 448 } |
449 | 449 |
450 // PlzNavigate: Test that a navigation is canceled if another browser-initiated | 450 // PlzNavigate: Test that a navigation is canceled if another browser-initiated |
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
499 EXPECT_NE(site_instance_id_1, site_instance_id_2); | 499 EXPECT_NE(site_instance_id_1, site_instance_id_2); |
500 | 500 |
501 // Have the RenderFrameHost commit the navigation. | 501 // Have the RenderFrameHost commit the navigation. |
502 scoped_refptr<ResourceResponse> response(new ResourceResponse); | 502 scoped_refptr<ResourceResponse> response(new ResourceResponse); |
503 GetLoaderForNavigationRequest(request2)->CallOnResponseStarted( | 503 GetLoaderForNavigationRequest(request2)->CallOnResponseStarted( |
504 response, MakeEmptyStream()); | 504 response, MakeEmptyStream()); |
505 EXPECT_TRUE(DidRenderFrameHostRequestCommit(speculative_rfh)); | 505 EXPECT_TRUE(DidRenderFrameHostRequestCommit(speculative_rfh)); |
506 EXPECT_FALSE(DidRenderFrameHostRequestCommit(main_test_rfh())); | 506 EXPECT_FALSE(DidRenderFrameHostRequestCommit(main_test_rfh())); |
507 | 507 |
508 // Commit the navigation. | 508 // Commit the navigation. |
509 speculative_rfh->SendNavigate(0, kUrl2); | 509 speculative_rfh->SendNavigate(0, 0, true, kUrl2); |
510 | 510 |
511 // Confirm that the commit corresponds to the new request. | 511 // Confirm that the commit corresponds to the new request. |
512 ASSERT_TRUE(main_test_rfh()); | 512 ASSERT_TRUE(main_test_rfh()); |
513 EXPECT_EQ(kUrl2_site, main_test_rfh()->GetSiteInstance()->GetSiteURL()); | 513 EXPECT_EQ(kUrl2_site, main_test_rfh()->GetSiteInstance()->GetSiteURL()); |
514 EXPECT_EQ(kUrl2, contents()->GetLastCommittedURL()); | 514 EXPECT_EQ(kUrl2, contents()->GetLastCommittedURL()); |
515 | 515 |
516 // Confirm that the committed RenderFrameHost is the latest speculative one. | 516 // Confirm that the committed RenderFrameHost is the latest speculative one. |
517 EXPECT_EQ(site_instance_id_2, main_test_rfh()->GetSiteInstance()->GetId()); | 517 EXPECT_EQ(site_instance_id_2, main_test_rfh()->GetSiteInstance()->GetId()); |
518 } | 518 } |
519 | 519 |
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
566 EXPECT_NE(site_instance_id_1, site_instance_id_2); | 566 EXPECT_NE(site_instance_id_1, site_instance_id_2); |
567 | 567 |
568 // Have the RenderFrameHost commit the navigation. | 568 // Have the RenderFrameHost commit the navigation. |
569 scoped_refptr<ResourceResponse> response(new ResourceResponse); | 569 scoped_refptr<ResourceResponse> response(new ResourceResponse); |
570 GetLoaderForNavigationRequest(request2) | 570 GetLoaderForNavigationRequest(request2) |
571 ->CallOnResponseStarted(response, MakeEmptyStream()); | 571 ->CallOnResponseStarted(response, MakeEmptyStream()); |
572 EXPECT_TRUE(DidRenderFrameHostRequestCommit(speculative_rfh)); | 572 EXPECT_TRUE(DidRenderFrameHostRequestCommit(speculative_rfh)); |
573 EXPECT_FALSE(DidRenderFrameHostRequestCommit(main_test_rfh())); | 573 EXPECT_FALSE(DidRenderFrameHostRequestCommit(main_test_rfh())); |
574 | 574 |
575 // Commit the navigation. | 575 // Commit the navigation. |
576 speculative_rfh->SendNavigate(0, kUrl2); | 576 speculative_rfh->SendNavigate(0, 0, true, kUrl2); |
577 | 577 |
578 // Confirm that the commit corresponds to the new request. | 578 // Confirm that the commit corresponds to the new request. |
579 ASSERT_TRUE(main_test_rfh()); | 579 ASSERT_TRUE(main_test_rfh()); |
580 EXPECT_EQ(kUrl2, contents()->GetLastCommittedURL()); | 580 EXPECT_EQ(kUrl2, contents()->GetLastCommittedURL()); |
581 | 581 |
582 // Confirm that the committed RenderFrameHost is the latest speculative one. | 582 // Confirm that the committed RenderFrameHost is the latest speculative one. |
583 EXPECT_EQ(site_instance_id_2, main_test_rfh()->GetSiteInstance()->GetId()); | 583 EXPECT_EQ(site_instance_id_2, main_test_rfh()->GetSiteInstance()->GetId()); |
584 } | 584 } |
585 | 585 |
586 // PlzNavigate: Test that a renderer-initiated user-initiated navigation is NOT | 586 // PlzNavigate: Test that a renderer-initiated user-initiated navigation is NOT |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
619 ASSERT_TRUE(speculative_rfh); | 619 ASSERT_TRUE(speculative_rfh); |
620 | 620 |
621 // Have the RenderFrameHost commit the navigation. | 621 // Have the RenderFrameHost commit the navigation. |
622 scoped_refptr<ResourceResponse> response(new ResourceResponse); | 622 scoped_refptr<ResourceResponse> response(new ResourceResponse); |
623 GetLoaderForNavigationRequest(request2) | 623 GetLoaderForNavigationRequest(request2) |
624 ->CallOnResponseStarted(response, MakeEmptyStream()); | 624 ->CallOnResponseStarted(response, MakeEmptyStream()); |
625 EXPECT_TRUE(DidRenderFrameHostRequestCommit(speculative_rfh)); | 625 EXPECT_TRUE(DidRenderFrameHostRequestCommit(speculative_rfh)); |
626 EXPECT_FALSE(DidRenderFrameHostRequestCommit(main_test_rfh())); | 626 EXPECT_FALSE(DidRenderFrameHostRequestCommit(main_test_rfh())); |
627 | 627 |
628 // Commit the navigation. | 628 // Commit the navigation. |
629 speculative_rfh->SendNavigate(0, kUrl1); | 629 speculative_rfh->SendNavigate(0, 0, true, kUrl1); |
630 EXPECT_EQ(kUrl1, contents()->GetLastCommittedURL()); | 630 EXPECT_EQ(kUrl1, contents()->GetLastCommittedURL()); |
631 } | 631 } |
632 | 632 |
633 // PlzNavigate: Test that a browser-initiated navigation is NOT canceled if a | 633 // PlzNavigate: Test that a browser-initiated navigation is NOT canceled if a |
634 // renderer-initiated non-user-initiated request is issued in the meantime. | 634 // renderer-initiated non-user-initiated request is issued in the meantime. |
635 TEST_F(NavigatorTestWithBrowserSideNavigation, | 635 TEST_F(NavigatorTestWithBrowserSideNavigation, |
636 RendererNonUserInitiatedNavigationDoesntCancelBrowserInitiated) { | 636 RendererNonUserInitiatedNavigationDoesntCancelBrowserInitiated) { |
637 const GURL kUrl0("http://www.wikipedia.org/"); | 637 const GURL kUrl0("http://www.wikipedia.org/"); |
638 const GURL kUrl1("http://www.chromium.org/"); | 638 const GURL kUrl1("http://www.chromium.org/"); |
639 const GURL kUrl2("http://www.google.com/"); | 639 const GURL kUrl2("http://www.google.com/"); |
(...skipping 27 matching lines...) Expand all Loading... | |
667 ASSERT_TRUE(speculative_rfh); | 667 ASSERT_TRUE(speculative_rfh); |
668 | 668 |
669 // Have the RenderFrameHost commit the navigation. | 669 // Have the RenderFrameHost commit the navigation. |
670 scoped_refptr<ResourceResponse> response(new ResourceResponse); | 670 scoped_refptr<ResourceResponse> response(new ResourceResponse); |
671 GetLoaderForNavigationRequest(request2) | 671 GetLoaderForNavigationRequest(request2) |
672 ->CallOnResponseStarted(response, MakeEmptyStream()); | 672 ->CallOnResponseStarted(response, MakeEmptyStream()); |
673 EXPECT_TRUE(DidRenderFrameHostRequestCommit(speculative_rfh)); | 673 EXPECT_TRUE(DidRenderFrameHostRequestCommit(speculative_rfh)); |
674 EXPECT_FALSE(DidRenderFrameHostRequestCommit(main_test_rfh())); | 674 EXPECT_FALSE(DidRenderFrameHostRequestCommit(main_test_rfh())); |
675 | 675 |
676 // Commit the navigation. | 676 // Commit the navigation. |
677 speculative_rfh->SendNavigate(0, kUrl1); | 677 speculative_rfh->SendNavigate(0, 0, true, kUrl1); |
678 EXPECT_EQ(kUrl1, contents()->GetLastCommittedURL()); | 678 EXPECT_EQ(kUrl1, contents()->GetLastCommittedURL()); |
679 } | 679 } |
680 | 680 |
681 // PlzNavigate: Test that a renderer-initiated non-user-initiated navigation is | 681 // PlzNavigate: Test that a renderer-initiated non-user-initiated navigation is |
682 // canceled if a another similar request is issued in the meantime. | 682 // canceled if a another similar request is issued in the meantime. |
683 TEST_F(NavigatorTestWithBrowserSideNavigation, | 683 TEST_F(NavigatorTestWithBrowserSideNavigation, |
684 RendererNonUserInitiatedNavigationCancelSimilarNavigation) { | 684 RendererNonUserInitiatedNavigationCancelSimilarNavigation) { |
685 const GURL kUrl0("http://www.wikipedia.org/"); | 685 const GURL kUrl0("http://www.wikipedia.org/"); |
686 const GURL kUrl1("http://www.chromium.org/"); | 686 const GURL kUrl1("http://www.chromium.org/"); |
687 const GURL kUrl2("http://www.google.com/"); | 687 const GURL kUrl2("http://www.google.com/"); |
(...skipping 28 matching lines...) Expand all Loading... | |
716 EXPECT_FALSE(loader1); | 716 EXPECT_FALSE(loader1); |
717 | 717 |
718 // Have the RenderFrameHost commit the navigation. | 718 // Have the RenderFrameHost commit the navigation. |
719 scoped_refptr<ResourceResponse> response(new ResourceResponse); | 719 scoped_refptr<ResourceResponse> response(new ResourceResponse); |
720 GetLoaderForNavigationRequest(request2) | 720 GetLoaderForNavigationRequest(request2) |
721 ->CallOnResponseStarted(response, MakeEmptyStream()); | 721 ->CallOnResponseStarted(response, MakeEmptyStream()); |
722 EXPECT_TRUE(DidRenderFrameHostRequestCommit(speculative_rfh)); | 722 EXPECT_TRUE(DidRenderFrameHostRequestCommit(speculative_rfh)); |
723 EXPECT_FALSE(DidRenderFrameHostRequestCommit(main_test_rfh())); | 723 EXPECT_FALSE(DidRenderFrameHostRequestCommit(main_test_rfh())); |
724 | 724 |
725 // Commit the navigation. | 725 // Commit the navigation. |
726 speculative_rfh->SendNavigate(0, kUrl2); | 726 speculative_rfh->SendNavigate(0, 0, true, kUrl2); |
727 EXPECT_EQ(kUrl2, contents()->GetLastCommittedURL()); | 727 EXPECT_EQ(kUrl2, contents()->GetLastCommittedURL()); |
728 } | 728 } |
729 | 729 |
730 // PlzNavigate: Test that a reload navigation is properly signaled to the | 730 // PlzNavigate: Test that a reload navigation is properly signaled to the |
731 // RenderFrame when the navigation can commit. A speculative RenderFrameHost | 731 // RenderFrame when the navigation can commit. A speculative RenderFrameHost |
732 // should not be created at any step. | 732 // should not be created at any step. |
733 TEST_F(NavigatorTestWithBrowserSideNavigation, Reload) { | 733 TEST_F(NavigatorTestWithBrowserSideNavigation, Reload) { |
734 const GURL kUrl("http://www.google.com/"); | 734 const GURL kUrl("http://www.google.com/"); |
735 contents()->NavigateAndCommit(kUrl); | 735 contents()->NavigateAndCommit(kUrl); |
736 | 736 |
737 FrameTreeNode* node = main_test_rfh()->frame_tree_node(); | 737 FrameTreeNode* node = main_test_rfh()->frame_tree_node(); |
738 RequestNavigationWithParameters(node, kUrl, Referrer(), | 738 RequestNavigationWithParameters(node, kUrl, Referrer(), |
739 ui::PAGE_TRANSITION_LINK, | 739 ui::PAGE_TRANSITION_LINK, |
740 NavigationController::RELOAD); | 740 NavigationController::RELOAD); |
741 // A NavigationRequest should have been generated. | 741 // A NavigationRequest should have been generated. |
742 NavigationRequest* main_request = GetNavigationRequestForFrameTreeNode(node); | 742 NavigationRequest* main_request = GetNavigationRequestForFrameTreeNode(node); |
743 ASSERT_TRUE(main_request != NULL); | 743 ASSERT_TRUE(main_request != NULL); |
744 EXPECT_EQ(FrameMsg_Navigate_Type::RELOAD, | 744 EXPECT_EQ(FrameMsg_Navigate_Type::RELOAD, |
745 main_request->common_params().navigation_type); | 745 main_request->common_params().navigation_type); |
746 main_test_rfh()->PrepareForCommit(); | 746 main_test_rfh()->PrepareForCommit(); |
747 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node)); | 747 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node)); |
748 | 748 |
749 main_test_rfh()->SendNavigate(0, kUrl); | 749 main_test_rfh()->SendNavigate(0, 0, true, kUrl); |
750 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node)); | 750 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node)); |
751 | 751 |
752 // Now do a shift+reload. | 752 // Now do a shift+reload. |
753 RequestNavigationWithParameters(node, kUrl, Referrer(), | 753 RequestNavigationWithParameters(node, kUrl, Referrer(), |
754 ui::PAGE_TRANSITION_LINK, | 754 ui::PAGE_TRANSITION_LINK, |
755 NavigationController::RELOAD_IGNORING_CACHE); | 755 NavigationController::RELOAD_IGNORING_CACHE); |
756 // A NavigationRequest should have been generated. | 756 // A NavigationRequest should have been generated. |
757 main_request = GetNavigationRequestForFrameTreeNode(node); | 757 main_request = GetNavigationRequestForFrameTreeNode(node); |
758 ASSERT_TRUE(main_request != NULL); | 758 ASSERT_TRUE(main_request != NULL); |
759 EXPECT_EQ(FrameMsg_Navigate_Type::RELOAD_IGNORING_CACHE, | 759 EXPECT_EQ(FrameMsg_Navigate_Type::RELOAD_IGNORING_CACHE, |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
792 scoped_refptr<ResourceResponse> response(new ResourceResponse); | 792 scoped_refptr<ResourceResponse> response(new ResourceResponse); |
793 GetLoaderForNavigationRequest(GetNavigationRequestForFrameTreeNode(node)) | 793 GetLoaderForNavigationRequest(GetNavigationRequestForFrameTreeNode(node)) |
794 ->CallOnResponseStarted(response, MakeEmptyStream()); | 794 ->CallOnResponseStarted(response, MakeEmptyStream()); |
795 speculative_rfh = GetSpeculativeRenderFrameHost(node); | 795 speculative_rfh = GetSpeculativeRenderFrameHost(node); |
796 ASSERT_TRUE(speculative_rfh); | 796 ASSERT_TRUE(speculative_rfh); |
797 EXPECT_TRUE(DidRenderFrameHostRequestCommit(speculative_rfh)); | 797 EXPECT_TRUE(DidRenderFrameHostRequestCommit(speculative_rfh)); |
798 EXPECT_EQ(site_instance_id, speculative_rfh->GetSiteInstance()->GetId()); | 798 EXPECT_EQ(site_instance_id, speculative_rfh->GetSiteInstance()->GetId()); |
799 EXPECT_FALSE(node->render_manager()->pending_frame_host()); | 799 EXPECT_FALSE(node->render_manager()->pending_frame_host()); |
800 | 800 |
801 // Invoke OnDidCommitProvisionalLoad. | 801 // Invoke OnDidCommitProvisionalLoad. |
802 speculative_rfh->SendNavigate(0, kUrl); | 802 speculative_rfh->SendNavigate(0, 0, true, kUrl); |
803 EXPECT_EQ(site_instance_id, main_test_rfh()->GetSiteInstance()->GetId()); | 803 EXPECT_EQ(site_instance_id, main_test_rfh()->GetSiteInstance()->GetId()); |
804 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node)); | 804 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node)); |
805 EXPECT_FALSE(node->render_manager()->pending_frame_host()); | 805 EXPECT_FALSE(node->render_manager()->pending_frame_host()); |
806 } | 806 } |
807 | 807 |
808 // PlzNavigate: Confirm that a speculative RenderFrameHost is thrown away when | 808 // PlzNavigate: Confirm that a speculative RenderFrameHost is thrown away when |
809 // the final URL's site differs from the initial one due to redirects. | 809 // the final URL's site differs from the initial one due to redirects. |
810 TEST_F(NavigatorTestWithBrowserSideNavigation, | 810 TEST_F(NavigatorTestWithBrowserSideNavigation, |
811 SpeculativeRendererDiscardedAfterRedirectToAnotherSite) { | 811 SpeculativeRendererDiscardedAfterRedirectToAnotherSite) { |
812 // Navigate to an initial site. | 812 // Navigate to an initial site. |
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
860 // Once commit happens the speculative RenderFrameHost is updated to match the | 860 // Once commit happens the speculative RenderFrameHost is updated to match the |
861 // known final SiteInstance. | 861 // known final SiteInstance. |
862 ASSERT_TRUE(speculative_rfh); | 862 ASSERT_TRUE(speculative_rfh); |
863 EXPECT_EQ(SiteInstanceImpl::GetSiteForURL(browser_context(), kUrlRedirect), | 863 EXPECT_EQ(SiteInstanceImpl::GetSiteForURL(browser_context(), kUrlRedirect), |
864 speculative_rfh->GetSiteInstance()->GetSiteURL()); | 864 speculative_rfh->GetSiteInstance()->GetSiteURL()); |
865 int32 redirect_site_instance_id = speculative_rfh->GetSiteInstance()->GetId(); | 865 int32 redirect_site_instance_id = speculative_rfh->GetSiteInstance()->GetId(); |
866 EXPECT_NE(init_site_instance_id, redirect_site_instance_id); | 866 EXPECT_NE(init_site_instance_id, redirect_site_instance_id); |
867 EXPECT_NE(site_instance_id, redirect_site_instance_id); | 867 EXPECT_NE(site_instance_id, redirect_site_instance_id); |
868 | 868 |
869 // Invoke OnDidCommitProvisionalLoad. | 869 // Invoke OnDidCommitProvisionalLoad. |
870 speculative_rfh->SendNavigate(0, kUrlRedirect); | 870 speculative_rfh->SendNavigate(0, 0, false, kUrlRedirect); |
871 | 871 |
872 // Check that the speculative RenderFrameHost was swapped in. | 872 // Check that the speculative RenderFrameHost was swapped in. |
873 EXPECT_EQ(redirect_site_instance_id, | 873 EXPECT_EQ(redirect_site_instance_id, |
874 main_test_rfh()->GetSiteInstance()->GetId()); | 874 main_test_rfh()->GetSiteInstance()->GetId()); |
875 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node)); | 875 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node)); |
876 } | 876 } |
877 | 877 |
878 // PlzNavigate: Verify that a previously swapped out RenderFrameHost is | 878 // PlzNavigate: Verify that a previously swapped out RenderFrameHost is |
879 // correctly reused when spawning a speculative RenderFrameHost in a navigation | 879 // correctly reused when spawning a speculative RenderFrameHost in a navigation |
880 // using the same SiteInstance. | 880 // using the same SiteInstance. |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
915 | 915 |
916 scoped_refptr<ResourceResponse> response(new ResourceResponse); | 916 scoped_refptr<ResourceResponse> response(new ResourceResponse); |
917 GetLoaderForNavigationRequest(GetNavigationRequestForFrameTreeNode(node)) | 917 GetLoaderForNavigationRequest(GetNavigationRequestForFrameTreeNode(node)) |
918 ->CallOnResponseStarted(response, MakeEmptyStream()); | 918 ->CallOnResponseStarted(response, MakeEmptyStream()); |
919 EXPECT_EQ(rfh1, GetSpeculativeRenderFrameHost(node)); | 919 EXPECT_EQ(rfh1, GetSpeculativeRenderFrameHost(node)); |
920 EXPECT_EQ(RenderFrameHostImpl::STATE_DEFAULT, | 920 EXPECT_EQ(RenderFrameHostImpl::STATE_DEFAULT, |
921 GetSpeculativeRenderFrameHost(node)->rfh_state()); | 921 GetSpeculativeRenderFrameHost(node)->rfh_state()); |
922 EXPECT_TRUE(DidRenderFrameHostRequestCommit(rfh1)); | 922 EXPECT_TRUE(DidRenderFrameHostRequestCommit(rfh1)); |
923 EXPECT_FALSE(DidRenderFrameHostRequestCommit(main_test_rfh())); | 923 EXPECT_FALSE(DidRenderFrameHostRequestCommit(main_test_rfh())); |
924 | 924 |
925 rfh1->SendNavigate(1, kUrl1); | 925 rfh1->SendNavigate(1, 1, false, kUrl1); |
926 EXPECT_EQ(rfh1, main_test_rfh()); | 926 EXPECT_EQ(rfh1, main_test_rfh()); |
927 EXPECT_EQ(RenderFrameHostImpl::STATE_DEFAULT, rfh1->rfh_state()); | 927 EXPECT_EQ(RenderFrameHostImpl::STATE_DEFAULT, rfh1->rfh_state()); |
928 EXPECT_FALSE(rfhm->IsOnSwappedOutList(rfh1)); | 928 EXPECT_FALSE(rfhm->IsOnSwappedOutList(rfh1)); |
929 } | 929 } |
930 | 930 |
931 // PlzNavigate: Verify that data urls are properly handled. | 931 // PlzNavigate: Verify that data urls are properly handled. |
932 TEST_F(NavigatorTestWithBrowserSideNavigation, DataUrls) { | 932 TEST_F(NavigatorTestWithBrowserSideNavigation, DataUrls) { |
933 const GURL kUrl1("http://wikipedia.org/"); | 933 const GURL kUrl1("http://wikipedia.org/"); |
934 const GURL kUrl2("data:text/html,test"); | 934 const GURL kUrl2("data:text/html,test"); |
935 | 935 |
(...skipping 10 matching lines...) Expand all Loading... | |
946 navigation_request->state()); | 946 navigation_request->state()); |
947 main_test_rfh()->SendBeforeUnloadACK(true); | 947 main_test_rfh()->SendBeforeUnloadACK(true); |
948 | 948 |
949 // The request should not have been sent to the IO thread but committed | 949 // The request should not have been sent to the IO thread but committed |
950 // immediately. | 950 // immediately. |
951 EXPECT_EQ(NavigationRequest::RESPONSE_STARTED, | 951 EXPECT_EQ(NavigationRequest::RESPONSE_STARTED, |
952 navigation_request->state()); | 952 navigation_request->state()); |
953 EXPECT_FALSE(navigation_request->loader_for_testing()); | 953 EXPECT_FALSE(navigation_request->loader_for_testing()); |
954 TestRenderFrameHost* speculative_rfh = GetSpeculativeRenderFrameHost(node); | 954 TestRenderFrameHost* speculative_rfh = GetSpeculativeRenderFrameHost(node); |
955 ASSERT_TRUE(speculative_rfh); | 955 ASSERT_TRUE(speculative_rfh); |
956 speculative_rfh->SendNavigate(0, kUrl2); | 956 speculative_rfh->SendNavigate(0, 0, true, kUrl2); |
957 EXPECT_EQ(main_test_rfh(), speculative_rfh); | 957 EXPECT_EQ(main_test_rfh(), speculative_rfh); |
958 | 958 |
959 // Go back to the initial site. | 959 // Go back to the initial site. |
960 contents()->NavigateAndCommit(kUrl1); | 960 contents()->NavigateAndCommit(kUrl1); |
961 | 961 |
962 // 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 |
963 // sent to the IO thread, nor committed. | 963 // sent to the IO thread, nor committed. |
964 TestRenderFrameHost* main_rfh = main_test_rfh(); | 964 TestRenderFrameHost* main_rfh = main_test_rfh(); |
965 main_rfh->SendRendererInitiatedNavigationRequest(kUrl2, true); | 965 main_rfh->SendRendererInitiatedNavigationRequest(kUrl2, true); |
966 navigation_request = GetNavigationRequestForFrameTreeNode(node); | 966 navigation_request = GetNavigationRequestForFrameTreeNode(node); |
967 ASSERT_TRUE(navigation_request); | 967 ASSERT_TRUE(navigation_request); |
968 EXPECT_EQ(NavigationRequest::RESPONSE_STARTED, | 968 EXPECT_EQ(NavigationRequest::RESPONSE_STARTED, |
969 navigation_request->state()); | 969 navigation_request->state()); |
970 EXPECT_FALSE(navigation_request->loader_for_testing()); | 970 EXPECT_FALSE(navigation_request->loader_for_testing()); |
971 speculative_rfh = GetSpeculativeRenderFrameHost(node); | 971 speculative_rfh = GetSpeculativeRenderFrameHost(node); |
972 ASSERT_TRUE(speculative_rfh); | 972 ASSERT_TRUE(speculative_rfh); |
973 speculative_rfh->SendNavigate(0, kUrl2); | 973 speculative_rfh->SendNavigate(0, 0, true, kUrl2); |
974 EXPECT_EQ(main_test_rfh(), speculative_rfh); | 974 EXPECT_EQ(main_test_rfh(), speculative_rfh); |
975 } | 975 } |
976 | 976 |
977 } // namespace content | 977 } // namespace content |
OLD | NEW |