| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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/memory/scoped_vector.h" | 6 #include "base/memory/scoped_vector.h" |
| 7 #include "base/message_loop.h" | 7 #include "base/message_loop.h" |
| 8 #include "base/stringprintf.h" | 8 #include "base/stringprintf.h" |
| 9 #include "base/time.h" | 9 #include "base/time.h" |
| 10 #include "chrome/browser/prerender/prerender_contents.h" | 10 #include "chrome/browser/prerender/prerender_contents.h" |
| (...skipping 117 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 128 PrerenderData* prerender_data = FindPrerenderData(url, NULL); | 128 PrerenderData* prerender_data = FindPrerenderData(url, NULL); |
| 129 if (!prerender_data) | 129 if (!prerender_data) |
| 130 return NULL; | 130 return NULL; |
| 131 ScopedVector<PrerenderData>::iterator to_erase = | 131 ScopedVector<PrerenderData>::iterator to_erase = |
| 132 FindIteratorForPrerenderContents(prerender_data->contents()); | 132 FindIteratorForPrerenderContents(prerender_data->contents()); |
| 133 CHECK(to_erase != active_prerenders_.end()); | 133 CHECK(to_erase != active_prerenders_.end()); |
| 134 PrerenderContents* prerender_contents = prerender_data->ReleaseContents(); | 134 PrerenderContents* prerender_contents = prerender_data->ReleaseContents(); |
| 135 active_prerenders_.erase(to_erase); | 135 active_prerenders_.erase(to_erase); |
| 136 | 136 |
| 137 prerender_contents->SetFinalStatus(FINAL_STATUS_USED); | 137 prerender_contents->SetFinalStatus(FINAL_STATUS_USED); |
| 138 prerender_contents->StartPendingPrerenders(); | 138 prerender_contents->PrepareForUse(); |
| 139 return prerender_contents; | 139 return prerender_contents; |
| 140 } | 140 } |
| 141 | 141 |
| 142 void AdvanceTime(TimeDelta delta) { | 142 void AdvanceTime(TimeDelta delta) { |
| 143 time_ += delta; | 143 time_ += delta; |
| 144 } | 144 } |
| 145 | 145 |
| 146 void AdvanceTimeTicks(TimeDelta delta) { | 146 void AdvanceTimeTicks(TimeDelta delta) { |
| 147 time_ticks_ += delta; | 147 time_ticks_ += delta; |
| 148 } | 148 } |
| (...skipping 206 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 355 url, | 355 url, |
| 356 FINAL_STATUS_USED); | 356 FINAL_STATUS_USED); |
| 357 EXPECT_TRUE(AddSimplePrerender(url)); | 357 EXPECT_TRUE(AddSimplePrerender(url)); |
| 358 EXPECT_TRUE(prerender_contents->prerendering_has_started()); | 358 EXPECT_TRUE(prerender_contents->prerendering_has_started()); |
| 359 | 359 |
| 360 scoped_ptr<PrerenderHandle> duplicate_prerender_handle( | 360 scoped_ptr<PrerenderHandle> duplicate_prerender_handle( |
| 361 prerender_manager()->AddPrerenderFromLinkRelPrerender( | 361 prerender_manager()->AddPrerenderFromLinkRelPrerender( |
| 362 kDefaultChildId, kDefaultRenderViewRouteId, url, | 362 kDefaultChildId, kDefaultRenderViewRouteId, url, |
| 363 Referrer(url, WebKit::WebReferrerPolicyDefault), kSize)); | 363 Referrer(url, WebKit::WebReferrerPolicyDefault), kSize)); |
| 364 | 364 |
| 365 EXPECT_TRUE(duplicate_prerender_handle->IsValid()); | |
| 366 EXPECT_TRUE(duplicate_prerender_handle->IsPrerendering()); | 365 EXPECT_TRUE(duplicate_prerender_handle->IsPrerendering()); |
| 367 | 366 |
| 368 ASSERT_EQ(prerender_contents, prerender_manager()->FindAndUseEntry(url)); | 367 ASSERT_EQ(prerender_contents, prerender_manager()->FindAndUseEntry(url)); |
| 369 | 368 |
| 370 EXPECT_FALSE(duplicate_prerender_handle->IsValid()); | |
| 371 EXPECT_FALSE(duplicate_prerender_handle->IsPrerendering()); | 369 EXPECT_FALSE(duplicate_prerender_handle->IsPrerendering()); |
| 372 } | 370 } |
| 373 | 371 |
| 374 // Make sure that if queue a request, and a second prerender request for the | 372 // Make sure that if queue a request, and a second prerender request for the |
| 375 // same URL comes in, that we drop the second request and keep the first one. | 373 // same URL comes in, that we drop the second request and keep the first one. |
| 376 TEST_F(PrerenderTest, DropSecondRequestTest) { | 374 TEST_F(PrerenderTest, DropSecondRequestTest) { |
| 377 GURL url("http://www.google.com/"); | 375 GURL url("http://www.google.com/"); |
| 378 DummyPrerenderContents* prerender_contents = | 376 DummyPrerenderContents* prerender_contents = |
| 379 prerender_manager()->CreateNextPrerenderContents( | 377 prerender_manager()->CreateNextPrerenderContents( |
| 380 url, | 378 url, |
| (...skipping 261 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 642 DummyPrerenderContents* pending_prerender_contents = | 640 DummyPrerenderContents* pending_prerender_contents = |
| 643 prerender_manager()->CreateNextPrerenderContents( | 641 prerender_manager()->CreateNextPrerenderContents( |
| 644 pending_url, | 642 pending_url, |
| 645 ORIGIN_GWS_PRERENDER, | 643 ORIGIN_GWS_PRERENDER, |
| 646 FINAL_STATUS_USED); | 644 FINAL_STATUS_USED); |
| 647 scoped_ptr<PrerenderHandle> pending_prerender_handle( | 645 scoped_ptr<PrerenderHandle> pending_prerender_handle( |
| 648 prerender_manager()->AddPrerenderFromLinkRelPrerender( | 646 prerender_manager()->AddPrerenderFromLinkRelPrerender( |
| 649 child_id, route_id, pending_url, | 647 child_id, route_id, pending_url, |
| 650 Referrer(url, WebKit::WebReferrerPolicyDefault), kSize)); | 648 Referrer(url, WebKit::WebReferrerPolicyDefault), kSize)); |
| 651 CHECK(pending_prerender_handle.get()); | 649 CHECK(pending_prerender_handle.get()); |
| 652 EXPECT_TRUE(pending_prerender_handle->IsValid()); | 650 EXPECT_FALSE(pending_prerender_handle->IsPrerendering()); |
| 653 EXPECT_TRUE(pending_prerender_handle->IsPending()); | |
| 654 | 651 |
| 655 EXPECT_TRUE(prerender_contents->prerendering_has_started()); | 652 EXPECT_TRUE(prerender_contents->prerendering_has_started()); |
| 656 ASSERT_EQ(prerender_contents, prerender_manager()->FindAndUseEntry(url)); | 653 ASSERT_EQ(prerender_contents, prerender_manager()->FindAndUseEntry(url)); |
| 657 | 654 |
| 658 EXPECT_FALSE(pending_prerender_handle->IsPending()); | 655 EXPECT_TRUE(pending_prerender_handle->IsPrerendering()); |
| 659 ASSERT_EQ(pending_prerender_contents, | 656 ASSERT_EQ(pending_prerender_contents, |
| 660 prerender_manager()->FindAndUseEntry(pending_url)); | 657 prerender_manager()->FindAndUseEntry(pending_url)); |
| 661 } | 658 } |
| 662 | 659 |
| 663 TEST_F(PrerenderTest, InvalidPendingPrerenderTest) { | 660 TEST_F(PrerenderTest, InvalidPendingPrerenderTest) { |
| 664 GURL url("http://www.google.com/"); | 661 GURL url("http://www.google.com/"); |
| 665 DummyPrerenderContents* prerender_contents = | 662 DummyPrerenderContents* prerender_contents = |
| 666 prerender_manager()->CreateNextPrerenderContents( | 663 prerender_manager()->CreateNextPrerenderContents( |
| 667 url, | 664 url, |
| 668 FINAL_STATUS_USED); | 665 FINAL_STATUS_USED); |
| (...skipping 10 matching lines...) Expand all Loading... |
| 679 | 676 |
| 680 prerender_manager()->CreateNextPrerenderContents( | 677 prerender_manager()->CreateNextPrerenderContents( |
| 681 pending_url, | 678 pending_url, |
| 682 ORIGIN_GWS_PRERENDER, | 679 ORIGIN_GWS_PRERENDER, |
| 683 FINAL_STATUS_UNSUPPORTED_SCHEME); | 680 FINAL_STATUS_UNSUPPORTED_SCHEME); |
| 684 scoped_ptr<PrerenderHandle> pending_prerender_handle( | 681 scoped_ptr<PrerenderHandle> pending_prerender_handle( |
| 685 prerender_manager()->AddPrerenderFromLinkRelPrerender( | 682 prerender_manager()->AddPrerenderFromLinkRelPrerender( |
| 686 child_id, route_id, pending_url, | 683 child_id, route_id, pending_url, |
| 687 Referrer(url, WebKit::WebReferrerPolicyDefault), kSize)); | 684 Referrer(url, WebKit::WebReferrerPolicyDefault), kSize)); |
| 688 DCHECK(pending_prerender_handle.get()); | 685 DCHECK(pending_prerender_handle.get()); |
| 689 EXPECT_TRUE(pending_prerender_handle->IsValid()); | 686 EXPECT_FALSE(pending_prerender_handle->IsPrerendering()); |
| 690 EXPECT_TRUE(pending_prerender_handle->IsPending()); | |
| 691 | 687 |
| 692 EXPECT_TRUE(prerender_contents->prerendering_has_started()); | 688 EXPECT_TRUE(prerender_contents->prerendering_has_started()); |
| 693 ASSERT_EQ(prerender_contents, prerender_manager()->FindAndUseEntry(url)); | 689 ASSERT_EQ(prerender_contents, prerender_manager()->FindAndUseEntry(url)); |
| 694 | 690 |
| 695 EXPECT_FALSE(pending_prerender_handle->IsValid()); | 691 EXPECT_FALSE(pending_prerender_handle->IsPrerendering()); |
| 696 EXPECT_FALSE(pending_prerender_handle->IsPending()); | |
| 697 } | 692 } |
| 698 | 693 |
| 699 TEST_F(PrerenderTest, CancelPendingPrerenderTest) { | 694 TEST_F(PrerenderTest, CancelPendingPrerenderTest) { |
| 700 GURL url("http://www.google.com/"); | 695 GURL url("http://www.google.com/"); |
| 701 DummyPrerenderContents* prerender_contents = | 696 DummyPrerenderContents* prerender_contents = |
| 702 prerender_manager()->CreateNextPrerenderContents( | 697 prerender_manager()->CreateNextPrerenderContents( |
| 703 url, | 698 url, |
| 704 FINAL_STATUS_USED); | 699 FINAL_STATUS_USED); |
| 705 EXPECT_TRUE(AddSimplePrerender(url)); | 700 EXPECT_TRUE(AddSimplePrerender(url)); |
| 706 | 701 |
| 707 int child_id; | 702 int child_id; |
| 708 int route_id; | 703 int route_id; |
| 709 ASSERT_TRUE(prerender_contents->GetChildId(&child_id)); | 704 ASSERT_TRUE(prerender_contents->GetChildId(&child_id)); |
| 710 ASSERT_TRUE(prerender_contents->GetRouteId(&route_id)); | 705 ASSERT_TRUE(prerender_contents->GetRouteId(&route_id)); |
| 711 | 706 |
| 712 GURL pending_url("http://news.google.com/"); | 707 GURL pending_url("http://news.google.com/"); |
| 713 | 708 |
| 714 scoped_ptr<PrerenderHandle> pending_prerender_handle( | 709 scoped_ptr<PrerenderHandle> pending_prerender_handle( |
| 715 prerender_manager()->AddPrerenderFromLinkRelPrerender( | 710 prerender_manager()->AddPrerenderFromLinkRelPrerender( |
| 716 child_id, route_id, pending_url, | 711 child_id, route_id, pending_url, |
| 717 Referrer(url, WebKit::WebReferrerPolicyDefault), kSize)); | 712 Referrer(url, WebKit::WebReferrerPolicyDefault), kSize)); |
| 718 CHECK(pending_prerender_handle.get()); | 713 CHECK(pending_prerender_handle.get()); |
| 719 EXPECT_TRUE(pending_prerender_handle->IsValid()); | 714 EXPECT_FALSE(pending_prerender_handle->IsPrerendering()); |
| 720 EXPECT_TRUE(pending_prerender_handle->IsPending()); | |
| 721 | 715 |
| 722 EXPECT_TRUE(prerender_contents->prerendering_has_started()); | 716 EXPECT_TRUE(prerender_contents->prerendering_has_started()); |
| 723 | 717 |
| 724 pending_prerender_handle->OnCancel(); | 718 pending_prerender_handle.reset(); |
| 725 EXPECT_FALSE(pending_prerender_handle->IsValid()); | |
| 726 | 719 |
| 727 ASSERT_EQ(prerender_contents, prerender_manager()->FindAndUseEntry(url)); | 720 ASSERT_EQ(prerender_contents, prerender_manager()->FindAndUseEntry(url)); |
| 728 } | 721 } |
| 729 | 722 |
| 730 // Tests that a PrerenderManager created for a browser session in the control | 723 // Tests that a PrerenderManager created for a browser session in the control |
| 731 // group works as expected. | 724 // group works as expected. |
| 732 TEST_F(PrerenderTest, ControlGroup) { | 725 TEST_F(PrerenderTest, ControlGroup) { |
| 733 RestorePrerenderMode restore_prerender_mode; | 726 RestorePrerenderMode restore_prerender_mode; |
| 734 PrerenderManager::SetMode( | 727 PrerenderManager::SetMode( |
| 735 PrerenderManager::PRERENDER_MODE_EXPERIMENT_CONTROL_GROUP); | 728 PrerenderManager::PRERENDER_MODE_EXPERIMENT_CONTROL_GROUP); |
| (...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 786 } | 779 } |
| 787 | 780 |
| 788 // Tests that our PPLT dummy prerender gets created properly. | 781 // Tests that our PPLT dummy prerender gets created properly. |
| 789 TEST_F(PrerenderTest, PPLTDummy) { | 782 TEST_F(PrerenderTest, PPLTDummy) { |
| 790 GURL url("http://www.google.com/"); | 783 GURL url("http://www.google.com/"); |
| 791 DummyPrerenderContents* prerender_contents = | 784 DummyPrerenderContents* prerender_contents = |
| 792 prerender_manager()->CreateNextPrerenderContents( | 785 prerender_manager()->CreateNextPrerenderContents( |
| 793 url, FINAL_STATUS_UNSUPPORTED_SCHEME); | 786 url, FINAL_STATUS_UNSUPPORTED_SCHEME); |
| 794 EXPECT_TRUE(AddSimplePrerender(url)); | 787 EXPECT_TRUE(AddSimplePrerender(url)); |
| 795 EXPECT_TRUE(prerender_contents->prerendering_has_started()); | 788 EXPECT_TRUE(prerender_contents->prerendering_has_started()); |
| 789 EXPECT_FALSE(IsEmptyPrerenderLinkManager()); |
| 796 | 790 |
| 797 DummyPrerenderContents* pplt_dummy_contents = | 791 DummyPrerenderContents* pplt_dummy_contents = |
| 798 prerender_manager()->CreateNextPrerenderContents(url, | 792 prerender_manager()->CreateNextPrerenderContents(url, |
| 799 FINAL_STATUS_USED); | 793 FINAL_STATUS_USED); |
| 800 GURL ftp_url("ftp://ftp.google.com/"); | 794 GURL ftp_url("ftp://ftp.google.com/"); |
| 801 // Adding this ftp URL will force the expected unsupported scheme error. | 795 // Adding this ftp URL will force the expected unsupported scheme error. |
| 802 prerender_contents->AddAliasURL(ftp_url); | 796 prerender_contents->AddAliasURL(ftp_url); |
| 797 EXPECT_FALSE(IsEmptyPrerenderLinkManager()); |
| 803 | 798 |
| 804 ASSERT_EQ(pplt_dummy_contents, prerender_manager()->FindAndUseEntry(url)); | 799 ASSERT_EQ(pplt_dummy_contents, prerender_manager()->FindAndUseEntry(url)); |
| 800 EXPECT_TRUE(IsEmptyPrerenderLinkManager()); |
| 805 } | 801 } |
| 806 | 802 |
| 807 // Tests that our PPLT dummy prerender gets created properly, even | 803 // Tests that our PPLT dummy prerender gets created properly, even |
| 808 // when navigating to a page that has been recently navigated to. | 804 // when navigating to a page that has been recently navigated to. |
| 809 TEST_F(PrerenderTest, RecentlyVisitedPPLTDummy) { | 805 TEST_F(PrerenderTest, RecentlyVisitedPPLTDummy) { |
| 810 GURL url("http://www.google.com/"); | 806 GURL url("http://www.google.com/"); |
| 811 DummyPrerenderContents* prerender_contents = | 807 DummyPrerenderContents* prerender_contents = |
| 812 prerender_manager()->CreateNextPrerenderContents( | 808 prerender_manager()->CreateNextPrerenderContents( |
| 813 url, FINAL_STATUS_UNSUPPORTED_SCHEME); | 809 url, FINAL_STATUS_UNSUPPORTED_SCHEME); |
| 814 EXPECT_TRUE(AddSimplePrerender(url)); | 810 EXPECT_TRUE(AddSimplePrerender(url)); |
| (...skipping 17 matching lines...) Expand all Loading... |
| 832 EXPECT_TRUE(AddSimplePrerender(url)); | 828 EXPECT_TRUE(AddSimplePrerender(url)); |
| 833 EXPECT_TRUE(prerender_contents->prerendering_has_started()); | 829 EXPECT_TRUE(prerender_contents->prerendering_has_started()); |
| 834 // Force the creation of a match complete dummy. | 830 // Force the creation of a match complete dummy. |
| 835 DummyPrerenderContents* duplicate_prerender_contents = | 831 DummyPrerenderContents* duplicate_prerender_contents = |
| 836 prerender_manager()->CreateNextPrerenderContents(url, | 832 prerender_manager()->CreateNextPrerenderContents(url, |
| 837 FINAL_STATUS_CANCELLED); | 833 FINAL_STATUS_CANCELLED); |
| 838 ASSERT_EQ(prerender_contents, prerender_manager()->FindEntry(url)); | 834 ASSERT_EQ(prerender_contents, prerender_manager()->FindEntry(url)); |
| 839 prerender_contents->Destroy(FINAL_STATUS_JAVASCRIPT_ALERT); | 835 prerender_contents->Destroy(FINAL_STATUS_JAVASCRIPT_ALERT); |
| 840 ASSERT_EQ(duplicate_prerender_contents, prerender_manager()->FindEntry(url)); | 836 ASSERT_EQ(duplicate_prerender_contents, prerender_manager()->FindEntry(url)); |
| 841 | 837 |
| 838 // Make sure that events on prerender handles propogate to the match |
| 839 // complete replacement. |
| 840 DummyPrerenderContents* null = NULL; |
| 842 prerender_link_manager()->OnCancelPrerender(kDefaultChildId, | 841 prerender_link_manager()->OnCancelPrerender(kDefaultChildId, |
| 843 last_prerender_id()); | 842 last_prerender_id()); |
| 844 DummyPrerenderContents* null = NULL; | |
| 845 ASSERT_EQ(null, prerender_manager()->FindEntry(url)); | 843 ASSERT_EQ(null, prerender_manager()->FindEntry(url)); |
| 846 } | 844 } |
| 847 | 845 |
| 848 | |
| 849 // Tests that the prerender manager matches include the fragment. | 846 // Tests that the prerender manager matches include the fragment. |
| 850 TEST_F(PrerenderTest, FragmentMatchesTest) { | 847 TEST_F(PrerenderTest, FragmentMatchesTest) { |
| 851 GURL fragment_url("http://www.google.com/#test"); | 848 GURL fragment_url("http://www.google.com/#test"); |
| 852 | 849 |
| 853 DummyPrerenderContents* prerender_contents = | 850 DummyPrerenderContents* prerender_contents = |
| 854 prerender_manager()->CreateNextPrerenderContents(fragment_url, | 851 prerender_manager()->CreateNextPrerenderContents(fragment_url, |
| 855 FINAL_STATUS_USED); | 852 FINAL_STATUS_USED); |
| 856 EXPECT_TRUE(AddSimplePrerender(fragment_url)); | 853 EXPECT_TRUE(AddSimplePrerender(fragment_url)); |
| 857 EXPECT_TRUE(prerender_contents->prerendering_has_started()); | 854 EXPECT_TRUE(prerender_contents->prerendering_has_started()); |
| 858 ASSERT_EQ(prerender_contents, | 855 ASSERT_EQ(prerender_contents, |
| (...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 959 EXPECT_TRUE(prerender_contents->prerendering_has_been_cancelled()); | 956 EXPECT_TRUE(prerender_contents->prerendering_has_been_cancelled()); |
| 960 prerender_link_manager()->OnAbandonPrerender(kDefaultChildId, | 957 prerender_link_manager()->OnAbandonPrerender(kDefaultChildId, |
| 961 last_prerender_id()); | 958 last_prerender_id()); |
| 962 | 959 |
| 963 EXPECT_TRUE(IsEmptyPrerenderLinkManager()); | 960 EXPECT_TRUE(IsEmptyPrerenderLinkManager()); |
| 964 EXPECT_TRUE(prerender_contents->prerendering_has_been_cancelled()); | 961 EXPECT_TRUE(prerender_contents->prerendering_has_been_cancelled()); |
| 965 DummyPrerenderContents* null = NULL; | 962 DummyPrerenderContents* null = NULL; |
| 966 ASSERT_EQ(null, prerender_manager()->FindEntry(url)); | 963 ASSERT_EQ(null, prerender_manager()->FindEntry(url)); |
| 967 } | 964 } |
| 968 | 965 |
| 969 // TODO(gavinp): Re-enabmed this test after abandon has an effect on Prerenders, | |
| 970 // like shortening the timeouts. | |
| 971 TEST_F(PrerenderTest, LinkManagerAbandon) { | 966 TEST_F(PrerenderTest, LinkManagerAbandon) { |
| 972 EXPECT_TRUE(IsEmptyPrerenderLinkManager()); | 967 EXPECT_TRUE(IsEmptyPrerenderLinkManager()); |
| 973 GURL url("http://www.myexample.com"); | 968 GURL url("http://www.myexample.com"); |
| 974 DummyPrerenderContents* prerender_contents = | 969 DummyPrerenderContents* prerender_contents = |
| 975 prerender_manager()->CreateNextPrerenderContents( | 970 prerender_manager()->CreateNextPrerenderContents( |
| 976 url, FINAL_STATUS_USED); | 971 url, FINAL_STATUS_USED); |
| 977 | 972 |
| 978 EXPECT_TRUE(AddSimplePrerender(url)); | 973 EXPECT_TRUE(AddSimplePrerender(url)); |
| 979 | 974 |
| 980 EXPECT_TRUE(prerender_contents->prerendering_has_started()); | 975 EXPECT_TRUE(prerender_contents->prerendering_has_started()); |
| 981 EXPECT_FALSE(prerender_contents->prerendering_has_been_cancelled()); | 976 EXPECT_FALSE(prerender_contents->prerendering_has_been_cancelled()); |
| 982 ASSERT_EQ(prerender_contents, prerender_manager()->FindEntry(url)); | 977 ASSERT_EQ(prerender_contents, prerender_manager()->FindEntry(url)); |
| 983 EXPECT_FALSE(IsEmptyPrerenderLinkManager()); | 978 EXPECT_FALSE(IsEmptyPrerenderLinkManager()); |
| 984 prerender_link_manager()->OnAbandonPrerender(kDefaultChildId, | 979 prerender_link_manager()->OnAbandonPrerender(kDefaultChildId, |
| 985 last_prerender_id()); | 980 last_prerender_id()); |
| 986 | 981 |
| 987 EXPECT_FALSE(prerender_contents->prerendering_has_been_cancelled()); | 982 EXPECT_FALSE(prerender_contents->prerendering_has_been_cancelled()); |
| 988 ASSERT_EQ(prerender_contents, prerender_manager()->FindAndUseEntry(url)); | 983 ASSERT_EQ(prerender_contents, prerender_manager()->FindAndUseEntry(url)); |
| 984 } |
| 985 |
| 986 TEST_F(PrerenderTest, LinkManagerAbandonThenCancel) { |
| 989 EXPECT_TRUE(IsEmptyPrerenderLinkManager()); | 987 EXPECT_TRUE(IsEmptyPrerenderLinkManager()); |
| 988 GURL url("http://www.myexample.com"); |
| 989 DummyPrerenderContents* prerender_contents = |
| 990 prerender_manager()->CreateNextPrerenderContents( |
| 991 url, FINAL_STATUS_CANCELLED); |
| 992 |
| 993 EXPECT_TRUE(AddSimplePrerender(url)); |
| 994 |
| 995 EXPECT_TRUE(prerender_contents->prerendering_has_started()); |
| 996 EXPECT_FALSE(prerender_contents->prerendering_has_been_cancelled()); |
| 997 ASSERT_EQ(prerender_contents, prerender_manager()->FindEntry(url)); |
| 998 EXPECT_FALSE(IsEmptyPrerenderLinkManager()); |
| 999 prerender_link_manager()->OnAbandonPrerender(kDefaultChildId, |
| 1000 last_prerender_id()); |
| 1001 |
| 1002 EXPECT_FALSE(prerender_contents->prerendering_has_been_cancelled()); |
| 1003 ASSERT_EQ(prerender_contents, prerender_manager()->FindEntry(url)); |
| 1004 |
| 1005 prerender_link_manager()->OnCancelPrerender(kDefaultChildId, |
| 1006 last_prerender_id()); |
| 1007 EXPECT_TRUE(IsEmptyPrerenderLinkManager()); |
| 1008 EXPECT_TRUE(prerender_contents->prerendering_has_been_cancelled()); |
| 1009 DummyPrerenderContents* null = NULL; |
| 1010 ASSERT_EQ(null, prerender_manager()->FindEntry(url)); |
| 990 } | 1011 } |
| 991 | 1012 |
| 992 TEST_F(PrerenderTest, LinkManagerCancelTwice) { | 1013 TEST_F(PrerenderTest, LinkManagerCancelTwice) { |
| 993 EXPECT_TRUE(IsEmptyPrerenderLinkManager()); | 1014 EXPECT_TRUE(IsEmptyPrerenderLinkManager()); |
| 994 GURL url("http://www.myexample.com"); | 1015 GURL url("http://www.myexample.com"); |
| 995 DummyPrerenderContents* prerender_contents = | 1016 DummyPrerenderContents* prerender_contents = |
| 996 prerender_manager()->CreateNextPrerenderContents( | 1017 prerender_manager()->CreateNextPrerenderContents( |
| 997 url, FINAL_STATUS_CANCELLED); | 1018 url, FINAL_STATUS_CANCELLED); |
| 998 | 1019 |
| 999 EXPECT_TRUE(AddSimplePrerender(url)); | 1020 EXPECT_TRUE(AddSimplePrerender(url)); |
| (...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1109 EXPECT_FALSE(prerender_contents->prerendering_has_been_cancelled()); | 1130 EXPECT_FALSE(prerender_contents->prerendering_has_been_cancelled()); |
| 1110 ASSERT_EQ(prerender_contents, prerender_manager()->FindEntry(url)); | 1131 ASSERT_EQ(prerender_contents, prerender_manager()->FindEntry(url)); |
| 1111 prerender_link_manager()->OnAbandonPrerender(kDefaultChildId, | 1132 prerender_link_manager()->OnAbandonPrerender(kDefaultChildId, |
| 1112 first_prerender_id); | 1133 first_prerender_id); |
| 1113 | 1134 |
| 1114 EXPECT_FALSE(prerender_contents->prerendering_has_been_cancelled()); | 1135 EXPECT_FALSE(prerender_contents->prerendering_has_been_cancelled()); |
| 1115 ASSERT_EQ(prerender_contents, prerender_manager()->FindEntry(url)); | 1136 ASSERT_EQ(prerender_contents, prerender_manager()->FindEntry(url)); |
| 1116 prerender_link_manager()->OnAbandonPrerender(kDefaultChildId, | 1137 prerender_link_manager()->OnAbandonPrerender(kDefaultChildId, |
| 1117 second_prerender_id); | 1138 second_prerender_id); |
| 1118 | 1139 |
| 1119 EXPECT_TRUE(IsEmptyPrerenderLinkManager()); | |
| 1120 EXPECT_FALSE(prerender_contents->prerendering_has_been_cancelled()); | 1140 EXPECT_FALSE(prerender_contents->prerendering_has_been_cancelled()); |
| 1121 ASSERT_EQ(prerender_contents, prerender_manager()->FindAndUseEntry(url)); | 1141 ASSERT_EQ(prerender_contents, prerender_manager()->FindAndUseEntry(url)); |
| 1122 } | 1142 } |
| 1123 | 1143 |
| 1124 // TODO(gavinp): After abandon shortens the expire time on a Prerender, | 1144 // TODO(gavinp): After abandon shortens the expire time on a Prerender, |
| 1125 // add a series of tests testing advancing the time by either the abandon | 1145 // add a series of tests testing advancing the time by either the abandon |
| 1126 // or normal expire, and verifying the expected behaviour with groups | 1146 // or normal expire, and verifying the expected behaviour with groups |
| 1127 // of links. | 1147 // of links. |
| 1128 TEST_F(PrerenderTest, LinkManagerExpireThenCancel) { | 1148 TEST_F(PrerenderTest, LinkManagerExpireThenCancel) { |
| 1129 EXPECT_TRUE(IsEmptyPrerenderLinkManager()); | 1149 EXPECT_TRUE(IsEmptyPrerenderLinkManager()); |
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1165 prerender_manager()->config().time_to_live + TimeDelta::FromSeconds(1)); | 1185 prerender_manager()->config().time_to_live + TimeDelta::FromSeconds(1)); |
| 1166 DummyPrerenderContents* null = NULL; | 1186 DummyPrerenderContents* null = NULL; |
| 1167 ASSERT_EQ(null, prerender_manager()->FindEntry(url)); | 1187 ASSERT_EQ(null, prerender_manager()->FindEntry(url)); |
| 1168 DummyPrerenderContents* second_prerender_contents = | 1188 DummyPrerenderContents* second_prerender_contents = |
| 1169 prerender_manager()->CreateNextPrerenderContents( | 1189 prerender_manager()->CreateNextPrerenderContents( |
| 1170 url, FINAL_STATUS_USED); | 1190 url, FINAL_STATUS_USED); |
| 1171 EXPECT_TRUE(AddSimplePrerender(url)); | 1191 EXPECT_TRUE(AddSimplePrerender(url)); |
| 1172 EXPECT_TRUE(second_prerender_contents->prerendering_has_started()); | 1192 EXPECT_TRUE(second_prerender_contents->prerendering_has_started()); |
| 1173 ASSERT_EQ(second_prerender_contents, | 1193 ASSERT_EQ(second_prerender_contents, |
| 1174 prerender_manager()->FindAndUseEntry(url)); | 1194 prerender_manager()->FindAndUseEntry(url)); |
| 1175 // The PrerenderLinkManager is not empty since we never removed the first | |
| 1176 // prerender. | |
| 1177 EXPECT_FALSE(IsEmptyPrerenderLinkManager()); | |
| 1178 } | 1195 } |
| 1179 | 1196 |
| 1180 TEST_F(PrerenderTest, LinkManagerCancelThenAddAgain) { | 1197 TEST_F(PrerenderTest, LinkManagerCancelThenAddAgain) { |
| 1181 EXPECT_TRUE(IsEmptyPrerenderLinkManager()); | 1198 EXPECT_TRUE(IsEmptyPrerenderLinkManager()); |
| 1182 GURL url("http://www.myexample.com"); | 1199 GURL url("http://www.myexample.com"); |
| 1183 DummyPrerenderContents* first_prerender_contents = | 1200 DummyPrerenderContents* first_prerender_contents = |
| 1184 prerender_manager()->CreateNextPrerenderContents( | 1201 prerender_manager()->CreateNextPrerenderContents( |
| 1185 url, FINAL_STATUS_CANCELLED); | 1202 url, FINAL_STATUS_CANCELLED); |
| 1186 EXPECT_TRUE(AddSimplePrerender(url)); | 1203 EXPECT_TRUE(AddSimplePrerender(url)); |
| 1187 EXPECT_TRUE(first_prerender_contents->prerendering_has_started()); | 1204 EXPECT_TRUE(first_prerender_contents->prerendering_has_started()); |
| 1188 EXPECT_FALSE(first_prerender_contents->prerendering_has_been_cancelled()); | 1205 EXPECT_FALSE(first_prerender_contents->prerendering_has_been_cancelled()); |
| 1189 ASSERT_EQ(first_prerender_contents, prerender_manager()->FindEntry(url)); | 1206 ASSERT_EQ(first_prerender_contents, prerender_manager()->FindEntry(url)); |
| 1190 prerender_link_manager()->OnCancelPrerender(kDefaultChildId, | 1207 prerender_link_manager()->OnCancelPrerender(kDefaultChildId, |
| 1191 last_prerender_id()); | 1208 last_prerender_id()); |
| 1192 EXPECT_TRUE(IsEmptyPrerenderLinkManager()); | 1209 EXPECT_TRUE(IsEmptyPrerenderLinkManager()); |
| 1193 EXPECT_TRUE(first_prerender_contents->prerendering_has_been_cancelled()); | 1210 EXPECT_TRUE(first_prerender_contents->prerendering_has_been_cancelled()); |
| 1194 DummyPrerenderContents* null = NULL; | 1211 DummyPrerenderContents* null = NULL; |
| 1195 ASSERT_EQ(null, prerender_manager()->FindEntry(url)); | 1212 ASSERT_EQ(null, prerender_manager()->FindEntry(url)); |
| 1196 DummyPrerenderContents* second_prerender_contents = | 1213 DummyPrerenderContents* second_prerender_contents = |
| 1197 prerender_manager()->CreateNextPrerenderContents( | 1214 prerender_manager()->CreateNextPrerenderContents( |
| 1198 url, FINAL_STATUS_USED); | 1215 url, FINAL_STATUS_USED); |
| 1199 EXPECT_TRUE(AddSimplePrerender(url)); | 1216 EXPECT_TRUE(AddSimplePrerender(url)); |
| 1200 EXPECT_TRUE(second_prerender_contents->prerendering_has_started()); | 1217 EXPECT_TRUE(second_prerender_contents->prerendering_has_started()); |
| 1201 ASSERT_EQ(second_prerender_contents, | 1218 ASSERT_EQ(second_prerender_contents, |
| 1202 prerender_manager()->FindAndUseEntry(url)); | 1219 prerender_manager()->FindAndUseEntry(url)); |
| 1203 EXPECT_FALSE(IsEmptyPrerenderLinkManager()); | |
| 1204 } | 1220 } |
| 1205 | 1221 |
| 1206 } // namespace prerender | 1222 } // namespace prerender |
| OLD | NEW |