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->OnCancel(); |
725 EXPECT_FALSE(pending_prerender_handle->IsValid()); | 719 EXPECT_FALSE(pending_prerender_handle->IsPrerendering()); |
726 | 720 |
727 ASSERT_EQ(prerender_contents, prerender_manager()->FindAndUseEntry(url)); | 721 ASSERT_EQ(prerender_contents, prerender_manager()->FindAndUseEntry(url)); |
728 } | 722 } |
729 | 723 |
730 // Tests that a PrerenderManager created for a browser session in the control | 724 // Tests that a PrerenderManager created for a browser session in the control |
731 // group works as expected. | 725 // group works as expected. |
732 TEST_F(PrerenderTest, ControlGroup) { | 726 TEST_F(PrerenderTest, ControlGroup) { |
733 RestorePrerenderMode restore_prerender_mode; | 727 RestorePrerenderMode restore_prerender_mode; |
734 PrerenderManager::SetMode( | 728 PrerenderManager::SetMode( |
735 PrerenderManager::PRERENDER_MODE_EXPERIMENT_CONTROL_GROUP); | 729 PrerenderManager::PRERENDER_MODE_EXPERIMENT_CONTROL_GROUP); |
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
786 } | 780 } |
787 | 781 |
788 // Tests that our PPLT dummy prerender gets created properly. | 782 // Tests that our PPLT dummy prerender gets created properly. |
789 TEST_F(PrerenderTest, PPLTDummy) { | 783 TEST_F(PrerenderTest, PPLTDummy) { |
790 GURL url("http://www.google.com/"); | 784 GURL url("http://www.google.com/"); |
791 DummyPrerenderContents* prerender_contents = | 785 DummyPrerenderContents* prerender_contents = |
792 prerender_manager()->CreateNextPrerenderContents( | 786 prerender_manager()->CreateNextPrerenderContents( |
793 url, FINAL_STATUS_UNSUPPORTED_SCHEME); | 787 url, FINAL_STATUS_UNSUPPORTED_SCHEME); |
794 EXPECT_TRUE(AddSimplePrerender(url)); | 788 EXPECT_TRUE(AddSimplePrerender(url)); |
795 EXPECT_TRUE(prerender_contents->prerendering_has_started()); | 789 EXPECT_TRUE(prerender_contents->prerendering_has_started()); |
| 790 EXPECT_FALSE(IsEmptyPrerenderLinkManager()); |
796 | 791 |
797 DummyPrerenderContents* pplt_dummy_contents = | 792 DummyPrerenderContents* pplt_dummy_contents = |
798 prerender_manager()->CreateNextPrerenderContents(url, | 793 prerender_manager()->CreateNextPrerenderContents(url, |
799 FINAL_STATUS_USED); | 794 FINAL_STATUS_USED); |
800 GURL ftp_url("ftp://ftp.google.com/"); | 795 GURL ftp_url("ftp://ftp.google.com/"); |
801 // Adding this ftp URL will force the expected unsupported scheme error. | 796 // Adding this ftp URL will force the expected unsupported scheme error. |
802 prerender_contents->AddAliasURL(ftp_url); | 797 prerender_contents->AddAliasURL(ftp_url); |
| 798 EXPECT_FALSE(IsEmptyPrerenderLinkManager()); |
803 | 799 |
804 ASSERT_EQ(pplt_dummy_contents, prerender_manager()->FindAndUseEntry(url)); | 800 ASSERT_EQ(pplt_dummy_contents, prerender_manager()->FindAndUseEntry(url)); |
| 801 EXPECT_TRUE(IsEmptyPrerenderLinkManager()); |
805 } | 802 } |
806 | 803 |
807 // Tests that our PPLT dummy prerender gets created properly, even | 804 // Tests that our PPLT dummy prerender gets created properly, even |
808 // when navigating to a page that has been recently navigated to. | 805 // when navigating to a page that has been recently navigated to. |
809 TEST_F(PrerenderTest, RecentlyVisitedPPLTDummy) { | 806 TEST_F(PrerenderTest, RecentlyVisitedPPLTDummy) { |
810 GURL url("http://www.google.com/"); | 807 GURL url("http://www.google.com/"); |
811 DummyPrerenderContents* prerender_contents = | 808 DummyPrerenderContents* prerender_contents = |
812 prerender_manager()->CreateNextPrerenderContents( | 809 prerender_manager()->CreateNextPrerenderContents( |
813 url, FINAL_STATUS_UNSUPPORTED_SCHEME); | 810 url, FINAL_STATUS_UNSUPPORTED_SCHEME); |
814 EXPECT_TRUE(AddSimplePrerender(url)); | 811 EXPECT_TRUE(AddSimplePrerender(url)); |
(...skipping 17 matching lines...) Expand all Loading... |
832 EXPECT_TRUE(AddSimplePrerender(url)); | 829 EXPECT_TRUE(AddSimplePrerender(url)); |
833 EXPECT_TRUE(prerender_contents->prerendering_has_started()); | 830 EXPECT_TRUE(prerender_contents->prerendering_has_started()); |
834 // Force the creation of a match complete dummy. | 831 // Force the creation of a match complete dummy. |
835 DummyPrerenderContents* duplicate_prerender_contents = | 832 DummyPrerenderContents* duplicate_prerender_contents = |
836 prerender_manager()->CreateNextPrerenderContents(url, | 833 prerender_manager()->CreateNextPrerenderContents(url, |
837 FINAL_STATUS_CANCELLED); | 834 FINAL_STATUS_CANCELLED); |
838 ASSERT_EQ(prerender_contents, prerender_manager()->FindEntry(url)); | 835 ASSERT_EQ(prerender_contents, prerender_manager()->FindEntry(url)); |
839 prerender_contents->Destroy(FINAL_STATUS_JAVASCRIPT_ALERT); | 836 prerender_contents->Destroy(FINAL_STATUS_JAVASCRIPT_ALERT); |
840 ASSERT_EQ(duplicate_prerender_contents, prerender_manager()->FindEntry(url)); | 837 ASSERT_EQ(duplicate_prerender_contents, prerender_manager()->FindEntry(url)); |
841 | 838 |
| 839 // Make sure that events on prerender handles propogate to the match |
| 840 // complete replacement. |
| 841 DummyPrerenderContents* null = NULL; |
842 prerender_link_manager()->OnCancelPrerender(kDefaultChildId, | 842 prerender_link_manager()->OnCancelPrerender(kDefaultChildId, |
843 last_prerender_id()); | 843 last_prerender_id()); |
844 DummyPrerenderContents* null = NULL; | |
845 ASSERT_EQ(null, prerender_manager()->FindEntry(url)); | 844 ASSERT_EQ(null, prerender_manager()->FindEntry(url)); |
846 } | 845 } |
847 | 846 |
848 | |
849 // Tests that the prerender manager matches include the fragment. | 847 // Tests that the prerender manager matches include the fragment. |
850 TEST_F(PrerenderTest, FragmentMatchesTest) { | 848 TEST_F(PrerenderTest, FragmentMatchesTest) { |
851 GURL fragment_url("http://www.google.com/#test"); | 849 GURL fragment_url("http://www.google.com/#test"); |
852 | 850 |
853 DummyPrerenderContents* prerender_contents = | 851 DummyPrerenderContents* prerender_contents = |
854 prerender_manager()->CreateNextPrerenderContents(fragment_url, | 852 prerender_manager()->CreateNextPrerenderContents(fragment_url, |
855 FINAL_STATUS_USED); | 853 FINAL_STATUS_USED); |
856 EXPECT_TRUE(AddSimplePrerender(fragment_url)); | 854 EXPECT_TRUE(AddSimplePrerender(fragment_url)); |
857 EXPECT_TRUE(prerender_contents->prerendering_has_started()); | 855 EXPECT_TRUE(prerender_contents->prerendering_has_started()); |
858 ASSERT_EQ(prerender_contents, | 856 ASSERT_EQ(prerender_contents, |
(...skipping 120 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
979 | 977 |
980 EXPECT_TRUE(prerender_contents->prerendering_has_started()); | 978 EXPECT_TRUE(prerender_contents->prerendering_has_started()); |
981 EXPECT_FALSE(prerender_contents->prerendering_has_been_cancelled()); | 979 EXPECT_FALSE(prerender_contents->prerendering_has_been_cancelled()); |
982 ASSERT_EQ(prerender_contents, prerender_manager()->FindEntry(url)); | 980 ASSERT_EQ(prerender_contents, prerender_manager()->FindEntry(url)); |
983 EXPECT_FALSE(IsEmptyPrerenderLinkManager()); | 981 EXPECT_FALSE(IsEmptyPrerenderLinkManager()); |
984 prerender_link_manager()->OnAbandonPrerender(kDefaultChildId, | 982 prerender_link_manager()->OnAbandonPrerender(kDefaultChildId, |
985 last_prerender_id()); | 983 last_prerender_id()); |
986 | 984 |
987 EXPECT_FALSE(prerender_contents->prerendering_has_been_cancelled()); | 985 EXPECT_FALSE(prerender_contents->prerendering_has_been_cancelled()); |
988 ASSERT_EQ(prerender_contents, prerender_manager()->FindAndUseEntry(url)); | 986 ASSERT_EQ(prerender_contents, prerender_manager()->FindAndUseEntry(url)); |
989 EXPECT_TRUE(IsEmptyPrerenderLinkManager()); | |
990 } | 987 } |
991 | 988 |
992 TEST_F(PrerenderTest, LinkManagerCancelTwice) { | 989 TEST_F(PrerenderTest, LinkManagerCancelTwice) { |
993 EXPECT_TRUE(IsEmptyPrerenderLinkManager()); | 990 EXPECT_TRUE(IsEmptyPrerenderLinkManager()); |
994 GURL url("http://www.myexample.com"); | 991 GURL url("http://www.myexample.com"); |
995 DummyPrerenderContents* prerender_contents = | 992 DummyPrerenderContents* prerender_contents = |
996 prerender_manager()->CreateNextPrerenderContents( | 993 prerender_manager()->CreateNextPrerenderContents( |
997 url, FINAL_STATUS_CANCELLED); | 994 url, FINAL_STATUS_CANCELLED); |
998 | 995 |
999 EXPECT_TRUE(AddSimplePrerender(url)); | 996 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()); | 1106 EXPECT_FALSE(prerender_contents->prerendering_has_been_cancelled()); |
1110 ASSERT_EQ(prerender_contents, prerender_manager()->FindEntry(url)); | 1107 ASSERT_EQ(prerender_contents, prerender_manager()->FindEntry(url)); |
1111 prerender_link_manager()->OnAbandonPrerender(kDefaultChildId, | 1108 prerender_link_manager()->OnAbandonPrerender(kDefaultChildId, |
1112 first_prerender_id); | 1109 first_prerender_id); |
1113 | 1110 |
1114 EXPECT_FALSE(prerender_contents->prerendering_has_been_cancelled()); | 1111 EXPECT_FALSE(prerender_contents->prerendering_has_been_cancelled()); |
1115 ASSERT_EQ(prerender_contents, prerender_manager()->FindEntry(url)); | 1112 ASSERT_EQ(prerender_contents, prerender_manager()->FindEntry(url)); |
1116 prerender_link_manager()->OnAbandonPrerender(kDefaultChildId, | 1113 prerender_link_manager()->OnAbandonPrerender(kDefaultChildId, |
1117 second_prerender_id); | 1114 second_prerender_id); |
1118 | 1115 |
1119 EXPECT_TRUE(IsEmptyPrerenderLinkManager()); | |
1120 EXPECT_FALSE(prerender_contents->prerendering_has_been_cancelled()); | 1116 EXPECT_FALSE(prerender_contents->prerendering_has_been_cancelled()); |
1121 ASSERT_EQ(prerender_contents, prerender_manager()->FindAndUseEntry(url)); | 1117 ASSERT_EQ(prerender_contents, prerender_manager()->FindAndUseEntry(url)); |
1122 } | 1118 } |
1123 | 1119 |
1124 // TODO(gavinp): After abandon shortens the expire time on a Prerender, | 1120 // 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 | 1121 // add a series of tests testing advancing the time by either the abandon |
1126 // or normal expire, and verifying the expected behaviour with groups | 1122 // or normal expire, and verifying the expected behaviour with groups |
1127 // of links. | 1123 // of links. |
1128 TEST_F(PrerenderTest, LinkManagerExpireThenCancel) { | 1124 TEST_F(PrerenderTest, LinkManagerExpireThenCancel) { |
1129 EXPECT_TRUE(IsEmptyPrerenderLinkManager()); | 1125 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)); | 1161 prerender_manager()->config().time_to_live + TimeDelta::FromSeconds(1)); |
1166 DummyPrerenderContents* null = NULL; | 1162 DummyPrerenderContents* null = NULL; |
1167 ASSERT_EQ(null, prerender_manager()->FindEntry(url)); | 1163 ASSERT_EQ(null, prerender_manager()->FindEntry(url)); |
1168 DummyPrerenderContents* second_prerender_contents = | 1164 DummyPrerenderContents* second_prerender_contents = |
1169 prerender_manager()->CreateNextPrerenderContents( | 1165 prerender_manager()->CreateNextPrerenderContents( |
1170 url, FINAL_STATUS_USED); | 1166 url, FINAL_STATUS_USED); |
1171 EXPECT_TRUE(AddSimplePrerender(url)); | 1167 EXPECT_TRUE(AddSimplePrerender(url)); |
1172 EXPECT_TRUE(second_prerender_contents->prerendering_has_started()); | 1168 EXPECT_TRUE(second_prerender_contents->prerendering_has_started()); |
1173 ASSERT_EQ(second_prerender_contents, | 1169 ASSERT_EQ(second_prerender_contents, |
1174 prerender_manager()->FindAndUseEntry(url)); | 1170 prerender_manager()->FindAndUseEntry(url)); |
1175 // The PrerenderLinkManager is not empty since we never removed the first | |
1176 // prerender. | |
1177 EXPECT_FALSE(IsEmptyPrerenderLinkManager()); | |
1178 } | 1171 } |
1179 | 1172 |
1180 TEST_F(PrerenderTest, LinkManagerCancelThenAddAgain) { | 1173 TEST_F(PrerenderTest, LinkManagerCancelThenAddAgain) { |
1181 EXPECT_TRUE(IsEmptyPrerenderLinkManager()); | 1174 EXPECT_TRUE(IsEmptyPrerenderLinkManager()); |
1182 GURL url("http://www.myexample.com"); | 1175 GURL url("http://www.myexample.com"); |
1183 DummyPrerenderContents* first_prerender_contents = | 1176 DummyPrerenderContents* first_prerender_contents = |
1184 prerender_manager()->CreateNextPrerenderContents( | 1177 prerender_manager()->CreateNextPrerenderContents( |
1185 url, FINAL_STATUS_CANCELLED); | 1178 url, FINAL_STATUS_CANCELLED); |
1186 EXPECT_TRUE(AddSimplePrerender(url)); | 1179 EXPECT_TRUE(AddSimplePrerender(url)); |
1187 EXPECT_TRUE(first_prerender_contents->prerendering_has_started()); | 1180 EXPECT_TRUE(first_prerender_contents->prerendering_has_started()); |
1188 EXPECT_FALSE(first_prerender_contents->prerendering_has_been_cancelled()); | 1181 EXPECT_FALSE(first_prerender_contents->prerendering_has_been_cancelled()); |
1189 ASSERT_EQ(first_prerender_contents, prerender_manager()->FindEntry(url)); | 1182 ASSERT_EQ(first_prerender_contents, prerender_manager()->FindEntry(url)); |
1190 prerender_link_manager()->OnCancelPrerender(kDefaultChildId, | 1183 prerender_link_manager()->OnCancelPrerender(kDefaultChildId, |
1191 last_prerender_id()); | 1184 last_prerender_id()); |
1192 EXPECT_TRUE(IsEmptyPrerenderLinkManager()); | 1185 EXPECT_TRUE(IsEmptyPrerenderLinkManager()); |
1193 EXPECT_TRUE(first_prerender_contents->prerendering_has_been_cancelled()); | 1186 EXPECT_TRUE(first_prerender_contents->prerendering_has_been_cancelled()); |
1194 DummyPrerenderContents* null = NULL; | 1187 DummyPrerenderContents* null = NULL; |
1195 ASSERT_EQ(null, prerender_manager()->FindEntry(url)); | 1188 ASSERT_EQ(null, prerender_manager()->FindEntry(url)); |
1196 DummyPrerenderContents* second_prerender_contents = | 1189 DummyPrerenderContents* second_prerender_contents = |
1197 prerender_manager()->CreateNextPrerenderContents( | 1190 prerender_manager()->CreateNextPrerenderContents( |
1198 url, FINAL_STATUS_USED); | 1191 url, FINAL_STATUS_USED); |
1199 EXPECT_TRUE(AddSimplePrerender(url)); | 1192 EXPECT_TRUE(AddSimplePrerender(url)); |
1200 EXPECT_TRUE(second_prerender_contents->prerendering_has_started()); | 1193 EXPECT_TRUE(second_prerender_contents->prerendering_has_started()); |
1201 ASSERT_EQ(second_prerender_contents, | 1194 ASSERT_EQ(second_prerender_contents, |
1202 prerender_manager()->FindAndUseEntry(url)); | 1195 prerender_manager()->FindAndUseEntry(url)); |
1203 EXPECT_FALSE(IsEmptyPrerenderLinkManager()); | |
1204 } | 1196 } |
1205 | 1197 |
1206 } // namespace prerender | 1198 } // namespace prerender |
OLD | NEW |