Chromium Code Reviews| 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 403 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 414 | 414 |
| 415 // Navigate to a URL on the same site. | 415 // Navigate to a URL on the same site. |
| 416 process()->sink().ClearMessages(); | 416 process()->sink().ClearMessages(); |
| 417 RequestNavigation(node, kUrl1); | 417 RequestNavigation(node, kUrl1); |
| 418 main_test_rfh()->SendBeforeUnloadACK(true); | 418 main_test_rfh()->SendBeforeUnloadACK(true); |
| 419 NavigationRequest* main_request = GetNavigationRequestForFrameTreeNode(node); | 419 NavigationRequest* main_request = GetNavigationRequestForFrameTreeNode(node); |
| 420 ASSERT_TRUE(main_request); | 420 ASSERT_TRUE(main_request); |
| 421 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node)); | 421 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node)); |
| 422 | 422 |
| 423 // It then redirects to another site. | 423 // It then redirects to another site. |
| 424 net::RedirectInfo redirect_info; | 424 GetLoaderForNavigationRequest(main_request)->SimulateServerRedirect(kUrl2); |
| 425 redirect_info.status_code = 302; | |
| 426 redirect_info.new_method = "GET"; | |
| 427 redirect_info.new_url = kUrl2; | |
| 428 redirect_info.new_first_party_for_cookies = kUrl2; | |
| 429 scoped_refptr<ResourceResponse> response(new ResourceResponse); | |
| 430 GetLoaderForNavigationRequest(main_request)->CallOnRequestRedirected( | |
| 431 redirect_info, response); | |
| 432 | 425 |
| 433 // The redirect should have been followed. | 426 // The redirect should have been followed. |
| 434 EXPECT_EQ(1, GetLoaderForNavigationRequest(main_request)->redirect_count()); | 427 EXPECT_EQ(1, GetLoaderForNavigationRequest(main_request)->redirect_count()); |
| 435 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node)); | 428 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node)); |
| 436 | 429 |
| 437 // Have the RenderFrameHost commit the navigation. | 430 // Have the RenderFrameHost commit the navigation. |
| 438 response = new ResourceResponse; | 431 scoped_refptr<ResourceResponse> response(new ResourceResponse); |
| 439 GetLoaderForNavigationRequest(main_request)->CallOnResponseStarted( | 432 GetLoaderForNavigationRequest(main_request)->CallOnResponseStarted( |
| 440 response, MakeEmptyStream()); | 433 response, MakeEmptyStream()); |
| 441 TestRenderFrameHost* final_speculative_rfh = | 434 TestRenderFrameHost* final_speculative_rfh = |
| 442 GetSpeculativeRenderFrameHost(node); | 435 GetSpeculativeRenderFrameHost(node); |
| 443 EXPECT_TRUE(final_speculative_rfh); | 436 EXPECT_TRUE(final_speculative_rfh); |
| 444 EXPECT_TRUE(DidRenderFrameHostRequestCommit(final_speculative_rfh)); | 437 EXPECT_TRUE(DidRenderFrameHostRequestCommit(final_speculative_rfh)); |
| 445 | 438 |
| 446 // Commit the navigation. | 439 // Commit the navigation. |
| 447 final_speculative_rfh->SendNavigate(0, kUrl2); | 440 final_speculative_rfh->SendNavigate(0, kUrl2); |
| 448 RenderFrameHostImpl* final_rfh = main_test_rfh(); | 441 RenderFrameHostImpl* final_rfh = main_test_rfh(); |
| (...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 543 main_test_rfh()->SendBeforeUnloadACK(true); | 536 main_test_rfh()->SendBeforeUnloadACK(true); |
| 544 NavigationRequest* request1 = GetNavigationRequestForFrameTreeNode(node); | 537 NavigationRequest* request1 = GetNavigationRequestForFrameTreeNode(node); |
| 545 ASSERT_TRUE(request1); | 538 ASSERT_TRUE(request1); |
| 546 EXPECT_EQ(kUrl1, request1->common_params().url); | 539 EXPECT_EQ(kUrl1, request1->common_params().url); |
| 547 EXPECT_TRUE(request1->browser_initiated()); | 540 EXPECT_TRUE(request1->browser_initiated()); |
| 548 base::WeakPtr<TestNavigationURLLoader> loader1 = | 541 base::WeakPtr<TestNavigationURLLoader> loader1 = |
| 549 GetLoaderForNavigationRequest(request1)->AsWeakPtr(); | 542 GetLoaderForNavigationRequest(request1)->AsWeakPtr(); |
| 550 EXPECT_TRUE(loader1); | 543 EXPECT_TRUE(loader1); |
| 551 | 544 |
| 552 // Confirm a speculative RenderFrameHost was created. | 545 // Confirm a speculative RenderFrameHost was created. |
| 553 TestRenderFrameHost* speculative_rfh = GetSpeculativeRenderFrameHost(node); | 546 ASSERT_TRUE(GetSpeculativeRenderFrameHost(node)); |
| 554 ASSERT_TRUE(speculative_rfh); | |
| 555 int32 site_instance_id_1 = speculative_rfh->GetSiteInstance()->GetId(); | |
| 556 | 547 |
| 557 // Now receive a renderer-initiated user-initiated request. It should replace | 548 // Now receive a renderer-initiated user-initiated request. It should replace |
| 558 // the current NavigationRequest. | 549 // the current NavigationRequest. |
| 559 main_test_rfh()->SendBeginNavigationWithURL(kUrl2, true); | 550 main_test_rfh()->SendBeginNavigationWithURL(kUrl2, true); |
| 560 NavigationRequest* request2 = GetNavigationRequestForFrameTreeNode(node); | 551 NavigationRequest* request2 = GetNavigationRequestForFrameTreeNode(node); |
| 561 ASSERT_TRUE(request2); | 552 ASSERT_TRUE(request2); |
| 562 EXPECT_EQ(kUrl2, request2->common_params().url); | 553 EXPECT_EQ(kUrl2, request2->common_params().url); |
| 563 EXPECT_FALSE(request2->browser_initiated()); | 554 EXPECT_FALSE(request2->browser_initiated()); |
| 564 EXPECT_TRUE(request2->begin_params().has_user_gesture); | 555 EXPECT_TRUE(request2->begin_params().has_user_gesture); |
| 565 | 556 |
| 566 // Confirm that the first loader got destroyed. | 557 // Confirm that the first loader got destroyed. |
| 567 EXPECT_FALSE(loader1); | 558 EXPECT_FALSE(loader1); |
| 568 | 559 |
| 569 // Confirm that a new speculative RenderFrameHost was created. | 560 // Confirm that a the speculative RenderFrameHost was destroyed. |
| 570 speculative_rfh = GetSpeculativeRenderFrameHost(node); | 561 // TODO(carlosk): Once OOPIF adds support for renderer-initiated cross-process |
|
clamy
2015/02/23 10:52:34
I think the TODO is not needed here. The test will
carlosk
2015/03/04 19:42:40
Done.
| |
| 571 ASSERT_TRUE(speculative_rfh); | 562 // navigations, re-add existence and update checks for the speculative RFH. |
| 572 int32 site_instance_id_2 = speculative_rfh->GetSiteInstance()->GetId(); | 563 ASSERT_FALSE(GetSpeculativeRenderFrameHost(node)); |
|
clamy
2015/02/23 10:52:34
I would use an EXPECT instead of an ASSERT here.
carlosk
2015/03/04 19:42:40
Done here and in 2 other places below.
| |
| 573 EXPECT_NE(site_instance_id_1, site_instance_id_2); | |
| 574 | 564 |
| 575 // Have the RenderFrameHost commit the navigation. | 565 // Have the RenderFrameHost commit the navigation. |
| 576 scoped_refptr<ResourceResponse> response(new ResourceResponse); | 566 scoped_refptr<ResourceResponse> response(new ResourceResponse); |
| 577 GetLoaderForNavigationRequest(request2) | 567 GetLoaderForNavigationRequest(request2) |
| 578 ->CallOnResponseStarted(response, MakeEmptyStream()); | 568 ->CallOnResponseStarted(response, MakeEmptyStream()); |
| 579 EXPECT_TRUE(DidRenderFrameHostRequestCommit(speculative_rfh)); | 569 EXPECT_TRUE(DidRenderFrameHostRequestCommit(main_test_rfh())); |
| 580 EXPECT_FALSE(DidRenderFrameHostRequestCommit(main_test_rfh())); | |
| 581 | 570 |
| 582 // Commit the navigation. | 571 // Commit the navigation. |
| 583 speculative_rfh->SendNavigate(0, kUrl2); | 572 main_test_rfh()->SendNavigate(0, kUrl2); |
| 584 | 573 |
| 585 // Confirm that the commit corresponds to the new request. | 574 // Confirm that the commit corresponds to the new request. |
| 586 ASSERT_TRUE(main_test_rfh()); | 575 ASSERT_TRUE(main_test_rfh()); |
| 587 EXPECT_EQ(kUrl2, contents()->GetLastCommittedURL()); | 576 EXPECT_EQ(kUrl2, contents()->GetLastCommittedURL()); |
| 588 | |
| 589 // Confirm that the committed RenderFrameHost is the latest speculative one. | |
| 590 EXPECT_EQ(site_instance_id_2, main_test_rfh()->GetSiteInstance()->GetId()); | |
| 591 } | 577 } |
| 592 | 578 |
| 593 // PlzNavigate: Test that a renderer-initiated user-initiated navigation is NOT | 579 // PlzNavigate: Test that a renderer-initiated user-initiated navigation is NOT |
| 594 // canceled if a renderer-initiated non-user-initiated request is issued in the | 580 // canceled if a renderer-initiated non-user-initiated request is issued in the |
| 595 // meantime. | 581 // meantime. |
| 596 TEST_F(NavigatorTestWithBrowserSideNavigation, | 582 TEST_F(NavigatorTestWithBrowserSideNavigation, |
| 597 RendererNonUserInitiatedNavigationDoesntCancelRendererUserInitiated) { | 583 RendererNonUserInitiatedNavigationDoesntCancelRendererUserInitiated) { |
| 598 const GURL kUrl0("http://www.wikipedia.org/"); | 584 const GURL kUrl0("http://www.wikipedia.org/"); |
| 599 const GURL kUrl1("http://www.chromium.org/"); | 585 const GURL kUrl1("http://www.chromium.org/"); |
| 600 const GURL kUrl2("http://www.google.com/"); | 586 const GURL kUrl2("http://www.google.com/"); |
| 601 | 587 |
| 602 // Initialization. | 588 // Initialization. |
| 603 contents()->NavigateAndCommit(kUrl0); | 589 contents()->NavigateAndCommit(kUrl0); |
| 604 FrameTreeNode* node = main_test_rfh()->frame_tree_node(); | 590 FrameTreeNode* node = main_test_rfh()->frame_tree_node(); |
| 605 | 591 |
| 606 // Start a renderer-initiated user-initiated navigation to the 1st URL. | 592 // Start a renderer-initiated user-initiated navigation to the 1st URL. |
| 607 process()->sink().ClearMessages(); | 593 process()->sink().ClearMessages(); |
| 608 main_test_rfh()->SendBeginNavigationWithURL(kUrl1, true); | 594 main_test_rfh()->SendBeginNavigationWithURL(kUrl1, true); |
| 609 NavigationRequest* request1 = GetNavigationRequestForFrameTreeNode(node); | 595 NavigationRequest* request1 = GetNavigationRequestForFrameTreeNode(node); |
| 610 ASSERT_TRUE(request1); | 596 ASSERT_TRUE(request1); |
| 611 EXPECT_EQ(kUrl1, request1->common_params().url); | 597 EXPECT_EQ(kUrl1, request1->common_params().url); |
| 612 EXPECT_FALSE(request1->browser_initiated()); | 598 EXPECT_FALSE(request1->browser_initiated()); |
| 613 EXPECT_TRUE(request1->begin_params().has_user_gesture); | 599 EXPECT_TRUE(request1->begin_params().has_user_gesture); |
| 614 EXPECT_TRUE(GetSpeculativeRenderFrameHost(node)); | 600 // TODO(carlosk): Once OOPIF adds support for renderer-initiated cross-process |
| 601 // navigations, re-add existence and update checks for the speculative RFH. | |
|
clamy
2015/02/23 10:52:34
Same here, no need for the TODO here and below.
carlosk
2015/03/04 19:42:40
Done.
| |
| 602 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node)); | |
| 615 | 603 |
| 616 // Now receive a renderer-initiated non-user-initiated request. Nothing should | 604 // Now receive a renderer-initiated non-user-initiated request. Nothing should |
| 617 // change. | 605 // change. |
| 618 main_test_rfh()->SendBeginNavigationWithURL(kUrl2, false); | 606 main_test_rfh()->SendBeginNavigationWithURL(kUrl2, false); |
| 619 NavigationRequest* request2 = GetNavigationRequestForFrameTreeNode(node); | 607 NavigationRequest* request2 = GetNavigationRequestForFrameTreeNode(node); |
| 620 ASSERT_TRUE(request2); | 608 ASSERT_TRUE(request2); |
| 621 EXPECT_EQ(request1, request2); | 609 EXPECT_EQ(request1, request2); |
| 622 EXPECT_EQ(kUrl1, request2->common_params().url); | 610 EXPECT_EQ(kUrl1, request2->common_params().url); |
| 623 EXPECT_FALSE(request2->browser_initiated()); | 611 EXPECT_FALSE(request2->browser_initiated()); |
| 624 EXPECT_TRUE(request2->begin_params().has_user_gesture); | 612 EXPECT_TRUE(request2->begin_params().has_user_gesture); |
| 625 TestRenderFrameHost* speculative_rfh = GetSpeculativeRenderFrameHost(node); | 613 ASSERT_FALSE(GetSpeculativeRenderFrameHost(node)); |
|
clamy
2015/02/23 10:52:34
I would use an EXPECT here and below.
carlosk
2015/03/04 19:42:40
Done.
| |
| 626 ASSERT_TRUE(speculative_rfh); | |
| 627 | 614 |
| 628 // Have the RenderFrameHost commit the navigation. | 615 // Have the RenderFrameHost commit the navigation. |
| 629 scoped_refptr<ResourceResponse> response(new ResourceResponse); | 616 scoped_refptr<ResourceResponse> response(new ResourceResponse); |
| 630 GetLoaderForNavigationRequest(request2) | 617 GetLoaderForNavigationRequest(request2) |
| 631 ->CallOnResponseStarted(response, MakeEmptyStream()); | 618 ->CallOnResponseStarted(response, MakeEmptyStream()); |
| 632 EXPECT_TRUE(DidRenderFrameHostRequestCommit(speculative_rfh)); | 619 EXPECT_TRUE(DidRenderFrameHostRequestCommit(main_test_rfh())); |
| 633 EXPECT_FALSE(DidRenderFrameHostRequestCommit(main_test_rfh())); | |
| 634 | 620 |
| 635 // Commit the navigation. | 621 // Commit the navigation. |
| 636 speculative_rfh->SendNavigate(0, kUrl1); | 622 main_test_rfh()->SendNavigate(0, kUrl1); |
| 637 EXPECT_EQ(kUrl1, contents()->GetLastCommittedURL()); | 623 EXPECT_EQ(kUrl1, contents()->GetLastCommittedURL()); |
| 638 } | 624 } |
| 639 | 625 |
| 640 // PlzNavigate: Test that a browser-initiated navigation is NOT canceled if a | 626 // PlzNavigate: Test that a browser-initiated navigation is NOT canceled if a |
| 641 // renderer-initiated non-user-initiated request is issued in the meantime. | 627 // renderer-initiated non-user-initiated request is issued in the meantime. |
| 642 TEST_F(NavigatorTestWithBrowserSideNavigation, | 628 TEST_F(NavigatorTestWithBrowserSideNavigation, |
| 643 RendererNonUserInitiatedNavigationDoesntCancelBrowserInitiated) { | 629 RendererNonUserInitiatedNavigationDoesntCancelBrowserInitiated) { |
| 644 const GURL kUrl0("http://www.wikipedia.org/"); | 630 const GURL kUrl0("http://www.wikipedia.org/"); |
| 645 const GURL kUrl1("http://www.chromium.org/"); | 631 const GURL kUrl1("http://www.chromium.org/"); |
| 646 const GURL kUrl2("http://www.google.com/"); | 632 const GURL kUrl2("http://www.google.com/"); |
| (...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 698 FrameTreeNode* node = main_test_rfh()->frame_tree_node(); | 684 FrameTreeNode* node = main_test_rfh()->frame_tree_node(); |
| 699 | 685 |
| 700 // Start a renderer-initiated non-user-initiated navigation to the 1st URL. | 686 // Start a renderer-initiated non-user-initiated navigation to the 1st URL. |
| 701 process()->sink().ClearMessages(); | 687 process()->sink().ClearMessages(); |
| 702 main_test_rfh()->SendBeginNavigationWithURL(kUrl1, false); | 688 main_test_rfh()->SendBeginNavigationWithURL(kUrl1, false); |
| 703 NavigationRequest* request1 = GetNavigationRequestForFrameTreeNode(node); | 689 NavigationRequest* request1 = GetNavigationRequestForFrameTreeNode(node); |
| 704 ASSERT_TRUE(request1); | 690 ASSERT_TRUE(request1); |
| 705 EXPECT_EQ(kUrl1, request1->common_params().url); | 691 EXPECT_EQ(kUrl1, request1->common_params().url); |
| 706 EXPECT_FALSE(request1->browser_initiated()); | 692 EXPECT_FALSE(request1->browser_initiated()); |
| 707 EXPECT_FALSE(request1->begin_params().has_user_gesture); | 693 EXPECT_FALSE(request1->begin_params().has_user_gesture); |
| 708 EXPECT_TRUE(GetSpeculativeRenderFrameHost(node)); | 694 // TODO(carlosk): Once OOPIF adds support for renderer-initiated cross-process |
| 695 // navigations, re-add existence and update checks for the speculative RFH. | |
| 696 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node)); | |
| 709 base::WeakPtr<TestNavigationURLLoader> loader1 = | 697 base::WeakPtr<TestNavigationURLLoader> loader1 = |
| 710 GetLoaderForNavigationRequest(request1)->AsWeakPtr(); | 698 GetLoaderForNavigationRequest(request1)->AsWeakPtr(); |
| 711 EXPECT_TRUE(loader1); | 699 EXPECT_TRUE(loader1); |
| 712 | 700 |
| 713 // Now receive a 2nd similar request that should replace the current one. | 701 // Now receive a 2nd similar request that should replace the current one. |
| 714 main_test_rfh()->SendBeginNavigationWithURL(kUrl2, false); | 702 main_test_rfh()->SendBeginNavigationWithURL(kUrl2, false); |
| 715 NavigationRequest* request2 = GetNavigationRequestForFrameTreeNode(node); | 703 NavigationRequest* request2 = GetNavigationRequestForFrameTreeNode(node); |
| 716 EXPECT_EQ(kUrl2, request2->common_params().url); | 704 EXPECT_EQ(kUrl2, request2->common_params().url); |
| 717 EXPECT_FALSE(request2->browser_initiated()); | 705 EXPECT_FALSE(request2->browser_initiated()); |
| 718 EXPECT_FALSE(request2->begin_params().has_user_gesture); | 706 EXPECT_FALSE(request2->begin_params().has_user_gesture); |
| 719 TestRenderFrameHost* speculative_rfh = GetSpeculativeRenderFrameHost(node); | 707 ASSERT_FALSE(GetSpeculativeRenderFrameHost(node)); |
| 720 ASSERT_TRUE(speculative_rfh); | |
| 721 | 708 |
| 722 // Confirm that the first loader got destroyed. | 709 // Confirm that the first loader got destroyed. |
| 723 EXPECT_FALSE(loader1); | 710 EXPECT_FALSE(loader1); |
| 724 | 711 |
| 725 // Have the RenderFrameHost commit the navigation. | 712 // Have the RenderFrameHost commit the navigation. |
| 726 scoped_refptr<ResourceResponse> response(new ResourceResponse); | 713 scoped_refptr<ResourceResponse> response(new ResourceResponse); |
| 727 GetLoaderForNavigationRequest(request2) | 714 GetLoaderForNavigationRequest(request2) |
| 728 ->CallOnResponseStarted(response, MakeEmptyStream()); | 715 ->CallOnResponseStarted(response, MakeEmptyStream()); |
| 729 EXPECT_TRUE(DidRenderFrameHostRequestCommit(speculative_rfh)); | 716 EXPECT_TRUE(DidRenderFrameHostRequestCommit(main_test_rfh())); |
| 730 EXPECT_FALSE(DidRenderFrameHostRequestCommit(main_test_rfh())); | |
| 731 | 717 |
| 732 // Commit the navigation. | 718 // Commit the navigation. |
| 733 speculative_rfh->SendNavigate(0, kUrl2); | 719 main_test_rfh()->SendNavigate(0, kUrl2); |
| 734 EXPECT_EQ(kUrl2, contents()->GetLastCommittedURL()); | 720 EXPECT_EQ(kUrl2, contents()->GetLastCommittedURL()); |
| 735 } | 721 } |
| 736 | 722 |
| 737 // PlzNavigate: Test that a reload navigation is properly signaled to the | 723 // PlzNavigate: Test that a reload navigation is properly signaled to the |
| 738 // RenderFrame when the navigation can commit. A speculative RenderFrameHost | 724 // RenderFrame when the navigation can commit. A speculative RenderFrameHost |
| 739 // should not be created at any step. | 725 // should not be created at any step. |
| 740 TEST_F(NavigatorTestWithBrowserSideNavigation, Reload) { | 726 TEST_F(NavigatorTestWithBrowserSideNavigation, Reload) { |
| 741 const GURL kUrl("http://www.google.com/"); | 727 const GURL kUrl("http://www.google.com/"); |
| 742 contents()->NavigateAndCommit(kUrl); | 728 contents()->NavigateAndCommit(kUrl); |
| 743 | 729 |
| (...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 836 EXPECT_EQ(init_site_instance_id, main_test_rfh()->GetSiteInstance()->GetId()); | 822 EXPECT_EQ(init_site_instance_id, main_test_rfh()->GetSiteInstance()->GetId()); |
| 837 ASSERT_TRUE(speculative_rfh); | 823 ASSERT_TRUE(speculative_rfh); |
| 838 EXPECT_NE(speculative_rfh, main_test_rfh()); | 824 EXPECT_NE(speculative_rfh, main_test_rfh()); |
| 839 EXPECT_EQ(SiteInstanceImpl::GetSiteForURL(browser_context(), kUrl), | 825 EXPECT_EQ(SiteInstanceImpl::GetSiteForURL(browser_context(), kUrl), |
| 840 speculative_rfh->GetSiteInstance()->GetSiteURL()); | 826 speculative_rfh->GetSiteInstance()->GetSiteURL()); |
| 841 | 827 |
| 842 // It then redirects to yet another site. | 828 // It then redirects to yet another site. |
| 843 NavigationRequest* main_request = GetNavigationRequestForFrameTreeNode(node); | 829 NavigationRequest* main_request = GetNavigationRequestForFrameTreeNode(node); |
| 844 ASSERT_TRUE(main_request); | 830 ASSERT_TRUE(main_request); |
| 845 const GURL kUrlRedirect("https://www.google.com/"); | 831 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) | 832 GetLoaderForNavigationRequest(main_request) |
| 853 ->CallOnRequestRedirected(redirect_info, response); | 833 ->SimulateServerRedirect(kUrlRedirect); |
| 854 EXPECT_EQ(init_site_instance_id, main_test_rfh()->GetSiteInstance()->GetId()); | 834 EXPECT_EQ(init_site_instance_id, main_test_rfh()->GetSiteInstance()->GetId()); |
| 855 speculative_rfh = GetSpeculativeRenderFrameHost(node); | 835 speculative_rfh = GetSpeculativeRenderFrameHost(node); |
| 856 ASSERT_TRUE(speculative_rfh); | 836 ASSERT_TRUE(speculative_rfh); |
| 857 | 837 |
| 858 // For now, ensure that the speculative RenderFrameHost does not change after | 838 // For now, ensure that the speculative RenderFrameHost does not change after |
| 859 // the redirect. | 839 // the redirect. |
| 860 // TODO(carlosk): once the speculative RenderFrameHost updates with redirects | 840 // TODO(carlosk): once the speculative RenderFrameHost updates with redirects |
| 861 // this next check will be changed to verify that it actually happens. | 841 // this next check will be changed to verify that it actually happens. |
| 862 EXPECT_EQ(site_instance_id, speculative_rfh->GetSiteInstance()->GetId()); | 842 EXPECT_EQ(site_instance_id, speculative_rfh->GetSiteInstance()->GetId()); |
| 863 | 843 |
| 864 // Commit the navigation with Navigator by simulating the call to | 844 // Commit the navigation with Navigator by simulating the call to |
| 865 // OnResponseStarted. | 845 // OnResponseStarted. |
| 866 response = new ResourceResponse; | 846 scoped_refptr<ResourceResponse> response(new ResourceResponse); |
| 867 GetLoaderForNavigationRequest(main_request) | 847 GetLoaderForNavigationRequest(main_request) |
| 868 ->CallOnResponseStarted(response, MakeEmptyStream()); | 848 ->CallOnResponseStarted(response, MakeEmptyStream()); |
| 869 speculative_rfh = GetSpeculativeRenderFrameHost(node); | 849 speculative_rfh = GetSpeculativeRenderFrameHost(node); |
| 870 EXPECT_TRUE(DidRenderFrameHostRequestCommit(speculative_rfh)); | 850 EXPECT_TRUE(DidRenderFrameHostRequestCommit(speculative_rfh)); |
| 871 EXPECT_EQ(init_site_instance_id, main_test_rfh()->GetSiteInstance()->GetId()); | 851 EXPECT_EQ(init_site_instance_id, main_test_rfh()->GetSiteInstance()->GetId()); |
| 872 | 852 |
| 873 // Once commit happens the speculative RenderFrameHost is updated to match the | 853 // Once commit happens the speculative RenderFrameHost is updated to match the |
| 874 // known final SiteInstance. | 854 // known final SiteInstance. |
| 875 ASSERT_TRUE(speculative_rfh); | 855 ASSERT_TRUE(speculative_rfh); |
| 876 EXPECT_EQ(SiteInstanceImpl::GetSiteForURL(browser_context(), kUrlRedirect), | 856 EXPECT_EQ(SiteInstanceImpl::GetSiteForURL(browser_context(), kUrlRedirect), |
| (...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 935 EXPECT_TRUE(DidRenderFrameHostRequestCommit(rfh1)); | 915 EXPECT_TRUE(DidRenderFrameHostRequestCommit(rfh1)); |
| 936 EXPECT_FALSE(DidRenderFrameHostRequestCommit(main_test_rfh())); | 916 EXPECT_FALSE(DidRenderFrameHostRequestCommit(main_test_rfh())); |
| 937 | 917 |
| 938 rfh1->SendNavigate(1, kUrl1); | 918 rfh1->SendNavigate(1, kUrl1); |
| 939 EXPECT_EQ(rfh1, main_test_rfh()); | 919 EXPECT_EQ(rfh1, main_test_rfh()); |
| 940 EXPECT_EQ(RenderFrameHostImpl::STATE_DEFAULT, rfh1->rfh_state()); | 920 EXPECT_EQ(RenderFrameHostImpl::STATE_DEFAULT, rfh1->rfh_state()); |
| 941 EXPECT_FALSE(rfhm->IsOnSwappedOutList(rfh1)); | 921 EXPECT_FALSE(rfhm->IsOnSwappedOutList(rfh1)); |
| 942 } | 922 } |
| 943 | 923 |
| 944 } // namespace content | 924 } // namespace content |
| OLD | NEW |