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

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

Issue 1002803002: Classify navigations without page id in parallel to the existing classifier. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: unit tests 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 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
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
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
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
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
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
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
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
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
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
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
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
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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698