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

Side by Side Diff: chrome/browser/prerender/prerender_unittest.cc

Issue 11316311: Make PrerenderHandle an observer of PrerenderContents. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: signal stop on match complete Created 8 years 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 | Annotate | Revision Log
OLDNEW
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
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
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
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
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 EXPECT_FALSE(pending_prerender_handle->IsPrerendering());
mmenke 2012/12/13 18:27:16 nit: No need to check this twice (Though suppose
gavinp 2012/12/13 20:45:34 Done.
725 EXPECT_FALSE(pending_prerender_handle->IsValid()); 719 pending_prerender_handle.reset();
726 720
727 ASSERT_EQ(prerender_contents, prerender_manager()->FindAndUseEntry(url)); 721 ASSERT_EQ(prerender_contents, prerender_manager()->FindAndUseEntry(url));
722 // We succeed if we don't crash here; if the pending prerender wasn't canceled
723 // then CreateNextPrerenderContents will fail an assertion.
724 SUCCEED();
mmenke 2012/12/13 18:27:16 I'm not following this.
gavinp 2012/12/13 20:45:34 Done.
728 } 725 }
729 726
730 // Tests that a PrerenderManager created for a browser session in the control 727 // Tests that a PrerenderManager created for a browser session in the control
731 // group works as expected. 728 // group works as expected.
732 TEST_F(PrerenderTest, ControlGroup) { 729 TEST_F(PrerenderTest, ControlGroup) {
733 RestorePrerenderMode restore_prerender_mode; 730 RestorePrerenderMode restore_prerender_mode;
734 PrerenderManager::SetMode( 731 PrerenderManager::SetMode(
735 PrerenderManager::PRERENDER_MODE_EXPERIMENT_CONTROL_GROUP); 732 PrerenderManager::PRERENDER_MODE_EXPERIMENT_CONTROL_GROUP);
736 GURL url("http://www.google.com/"); 733 GURL url("http://www.google.com/");
737 DummyPrerenderContents* prerender_contents = 734 DummyPrerenderContents* prerender_contents =
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
786 } 783 }
787 784
788 // Tests that our PPLT dummy prerender gets created properly. 785 // Tests that our PPLT dummy prerender gets created properly.
789 TEST_F(PrerenderTest, PPLTDummy) { 786 TEST_F(PrerenderTest, PPLTDummy) {
790 GURL url("http://www.google.com/"); 787 GURL url("http://www.google.com/");
791 DummyPrerenderContents* prerender_contents = 788 DummyPrerenderContents* prerender_contents =
792 prerender_manager()->CreateNextPrerenderContents( 789 prerender_manager()->CreateNextPrerenderContents(
793 url, FINAL_STATUS_UNSUPPORTED_SCHEME); 790 url, FINAL_STATUS_UNSUPPORTED_SCHEME);
794 EXPECT_TRUE(AddSimplePrerender(url)); 791 EXPECT_TRUE(AddSimplePrerender(url));
795 EXPECT_TRUE(prerender_contents->prerendering_has_started()); 792 EXPECT_TRUE(prerender_contents->prerendering_has_started());
793 EXPECT_FALSE(IsEmptyPrerenderLinkManager());
796 794
797 DummyPrerenderContents* pplt_dummy_contents = 795 DummyPrerenderContents* pplt_dummy_contents =
798 prerender_manager()->CreateNextPrerenderContents(url, 796 prerender_manager()->CreateNextPrerenderContents(url,
799 FINAL_STATUS_USED); 797 FINAL_STATUS_USED);
800 GURL ftp_url("ftp://ftp.google.com/"); 798 GURL ftp_url("ftp://ftp.google.com/");
801 // Adding this ftp URL will force the expected unsupported scheme error. 799 // Adding this ftp URL will force the expected unsupported scheme error.
802 prerender_contents->AddAliasURL(ftp_url); 800 prerender_contents->AddAliasURL(ftp_url);
801 EXPECT_FALSE(IsEmptyPrerenderLinkManager());
803 802
804 ASSERT_EQ(pplt_dummy_contents, prerender_manager()->FindAndUseEntry(url)); 803 ASSERT_EQ(pplt_dummy_contents, prerender_manager()->FindAndUseEntry(url));
804 EXPECT_TRUE(IsEmptyPrerenderLinkManager());
805 } 805 }
806 806
807 // Tests that our PPLT dummy prerender gets created properly, even 807 // Tests that our PPLT dummy prerender gets created properly, even
808 // when navigating to a page that has been recently navigated to. 808 // when navigating to a page that has been recently navigated to.
809 TEST_F(PrerenderTest, RecentlyVisitedPPLTDummy) { 809 TEST_F(PrerenderTest, RecentlyVisitedPPLTDummy) {
810 GURL url("http://www.google.com/"); 810 GURL url("http://www.google.com/");
811 DummyPrerenderContents* prerender_contents = 811 DummyPrerenderContents* prerender_contents =
812 prerender_manager()->CreateNextPrerenderContents( 812 prerender_manager()->CreateNextPrerenderContents(
813 url, FINAL_STATUS_UNSUPPORTED_SCHEME); 813 url, FINAL_STATUS_UNSUPPORTED_SCHEME);
814 EXPECT_TRUE(AddSimplePrerender(url)); 814 EXPECT_TRUE(AddSimplePrerender(url));
(...skipping 17 matching lines...) Expand all
832 EXPECT_TRUE(AddSimplePrerender(url)); 832 EXPECT_TRUE(AddSimplePrerender(url));
833 EXPECT_TRUE(prerender_contents->prerendering_has_started()); 833 EXPECT_TRUE(prerender_contents->prerendering_has_started());
834 // Force the creation of a match complete dummy. 834 // Force the creation of a match complete dummy.
835 DummyPrerenderContents* duplicate_prerender_contents = 835 DummyPrerenderContents* duplicate_prerender_contents =
836 prerender_manager()->CreateNextPrerenderContents(url, 836 prerender_manager()->CreateNextPrerenderContents(url,
837 FINAL_STATUS_CANCELLED); 837 FINAL_STATUS_CANCELLED);
838 ASSERT_EQ(prerender_contents, prerender_manager()->FindEntry(url)); 838 ASSERT_EQ(prerender_contents, prerender_manager()->FindEntry(url));
839 prerender_contents->Destroy(FINAL_STATUS_JAVASCRIPT_ALERT); 839 prerender_contents->Destroy(FINAL_STATUS_JAVASCRIPT_ALERT);
840 ASSERT_EQ(duplicate_prerender_contents, prerender_manager()->FindEntry(url)); 840 ASSERT_EQ(duplicate_prerender_contents, prerender_manager()->FindEntry(url));
841 841
842 // Make sure that events on prerender handles propogate to the match
843 // complete replacement.
844 DummyPrerenderContents* null = NULL;
842 prerender_link_manager()->OnCancelPrerender(kDefaultChildId, 845 prerender_link_manager()->OnCancelPrerender(kDefaultChildId,
843 last_prerender_id()); 846 last_prerender_id());
844 DummyPrerenderContents* null = NULL;
845 ASSERT_EQ(null, prerender_manager()->FindEntry(url)); 847 ASSERT_EQ(null, prerender_manager()->FindEntry(url));
846 } 848 }
847 849
848
849 // Tests that the prerender manager matches include the fragment. 850 // Tests that the prerender manager matches include the fragment.
850 TEST_F(PrerenderTest, FragmentMatchesTest) { 851 TEST_F(PrerenderTest, FragmentMatchesTest) {
851 GURL fragment_url("http://www.google.com/#test"); 852 GURL fragment_url("http://www.google.com/#test");
852 853
853 DummyPrerenderContents* prerender_contents = 854 DummyPrerenderContents* prerender_contents =
854 prerender_manager()->CreateNextPrerenderContents(fragment_url, 855 prerender_manager()->CreateNextPrerenderContents(fragment_url,
855 FINAL_STATUS_USED); 856 FINAL_STATUS_USED);
856 EXPECT_TRUE(AddSimplePrerender(fragment_url)); 857 EXPECT_TRUE(AddSimplePrerender(fragment_url));
857 EXPECT_TRUE(prerender_contents->prerendering_has_started()); 858 EXPECT_TRUE(prerender_contents->prerendering_has_started());
858 ASSERT_EQ(prerender_contents, 859 ASSERT_EQ(prerender_contents,
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after
959 EXPECT_TRUE(prerender_contents->prerendering_has_been_cancelled()); 960 EXPECT_TRUE(prerender_contents->prerendering_has_been_cancelled());
960 prerender_link_manager()->OnAbandonPrerender(kDefaultChildId, 961 prerender_link_manager()->OnAbandonPrerender(kDefaultChildId,
961 last_prerender_id()); 962 last_prerender_id());
962 963
963 EXPECT_TRUE(IsEmptyPrerenderLinkManager()); 964 EXPECT_TRUE(IsEmptyPrerenderLinkManager());
964 EXPECT_TRUE(prerender_contents->prerendering_has_been_cancelled()); 965 EXPECT_TRUE(prerender_contents->prerendering_has_been_cancelled());
965 DummyPrerenderContents* null = NULL; 966 DummyPrerenderContents* null = NULL;
966 ASSERT_EQ(null, prerender_manager()->FindEntry(url)); 967 ASSERT_EQ(null, prerender_manager()->FindEntry(url));
967 } 968 }
968 969
969 // TODO(gavinp): Re-enabmed this test after abandon has an effect on Prerenders, 970 // TODO(gavinp): Re-enabmed this test after abandon has an effect on Prerenders,
mmenke 2012/12/13 18:27:16 nit: while you're here, "re-enbalmed"... Or mayb
gavinp 2012/12/13 20:45:34 Done.
970 // like shortening the timeouts. 971 // like shortening the timeouts.
971 TEST_F(PrerenderTest, LinkManagerAbandon) { 972 TEST_F(PrerenderTest, LinkManagerAbandon) {
972 EXPECT_TRUE(IsEmptyPrerenderLinkManager()); 973 EXPECT_TRUE(IsEmptyPrerenderLinkManager());
973 GURL url("http://www.myexample.com"); 974 GURL url("http://www.myexample.com");
974 DummyPrerenderContents* prerender_contents = 975 DummyPrerenderContents* prerender_contents =
975 prerender_manager()->CreateNextPrerenderContents( 976 prerender_manager()->CreateNextPrerenderContents(
976 url, FINAL_STATUS_USED); 977 url, FINAL_STATUS_USED);
977 978
978 EXPECT_TRUE(AddSimplePrerender(url)); 979 EXPECT_TRUE(AddSimplePrerender(url));
979 980
980 EXPECT_TRUE(prerender_contents->prerendering_has_started()); 981 EXPECT_TRUE(prerender_contents->prerendering_has_started());
981 EXPECT_FALSE(prerender_contents->prerendering_has_been_cancelled()); 982 EXPECT_FALSE(prerender_contents->prerendering_has_been_cancelled());
982 ASSERT_EQ(prerender_contents, prerender_manager()->FindEntry(url)); 983 ASSERT_EQ(prerender_contents, prerender_manager()->FindEntry(url));
983 EXPECT_FALSE(IsEmptyPrerenderLinkManager()); 984 EXPECT_FALSE(IsEmptyPrerenderLinkManager());
984 prerender_link_manager()->OnAbandonPrerender(kDefaultChildId, 985 prerender_link_manager()->OnAbandonPrerender(kDefaultChildId,
985 last_prerender_id()); 986 last_prerender_id());
986 987
987 EXPECT_FALSE(prerender_contents->prerendering_has_been_cancelled()); 988 EXPECT_FALSE(prerender_contents->prerendering_has_been_cancelled());
988 ASSERT_EQ(prerender_contents, prerender_manager()->FindAndUseEntry(url)); 989 ASSERT_EQ(prerender_contents, prerender_manager()->FindAndUseEntry(url));
mmenke 2012/12/13 18:27:16 I don't think we have a test with a cancel after a
gavinp 2012/12/13 20:45:34 The abandon tests do try and use the prerender. I
989 EXPECT_TRUE(IsEmptyPrerenderLinkManager());
990 } 990 }
991 991
992 TEST_F(PrerenderTest, LinkManagerCancelTwice) { 992 TEST_F(PrerenderTest, LinkManagerCancelTwice) {
993 EXPECT_TRUE(IsEmptyPrerenderLinkManager()); 993 EXPECT_TRUE(IsEmptyPrerenderLinkManager());
994 GURL url("http://www.myexample.com"); 994 GURL url("http://www.myexample.com");
995 DummyPrerenderContents* prerender_contents = 995 DummyPrerenderContents* prerender_contents =
996 prerender_manager()->CreateNextPrerenderContents( 996 prerender_manager()->CreateNextPrerenderContents(
997 url, FINAL_STATUS_CANCELLED); 997 url, FINAL_STATUS_CANCELLED);
998 998
999 EXPECT_TRUE(AddSimplePrerender(url)); 999 EXPECT_TRUE(AddSimplePrerender(url));
(...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after
1109 EXPECT_FALSE(prerender_contents->prerendering_has_been_cancelled()); 1109 EXPECT_FALSE(prerender_contents->prerendering_has_been_cancelled());
1110 ASSERT_EQ(prerender_contents, prerender_manager()->FindEntry(url)); 1110 ASSERT_EQ(prerender_contents, prerender_manager()->FindEntry(url));
1111 prerender_link_manager()->OnAbandonPrerender(kDefaultChildId, 1111 prerender_link_manager()->OnAbandonPrerender(kDefaultChildId,
1112 first_prerender_id); 1112 first_prerender_id);
1113 1113
1114 EXPECT_FALSE(prerender_contents->prerendering_has_been_cancelled()); 1114 EXPECT_FALSE(prerender_contents->prerendering_has_been_cancelled());
1115 ASSERT_EQ(prerender_contents, prerender_manager()->FindEntry(url)); 1115 ASSERT_EQ(prerender_contents, prerender_manager()->FindEntry(url));
1116 prerender_link_manager()->OnAbandonPrerender(kDefaultChildId, 1116 prerender_link_manager()->OnAbandonPrerender(kDefaultChildId,
1117 second_prerender_id); 1117 second_prerender_id);
1118 1118
1119 EXPECT_TRUE(IsEmptyPrerenderLinkManager());
1120 EXPECT_FALSE(prerender_contents->prerendering_has_been_cancelled()); 1119 EXPECT_FALSE(prerender_contents->prerendering_has_been_cancelled());
1121 ASSERT_EQ(prerender_contents, prerender_manager()->FindAndUseEntry(url)); 1120 ASSERT_EQ(prerender_contents, prerender_manager()->FindAndUseEntry(url));
1122 } 1121 }
1123 1122
1124 // TODO(gavinp): After abandon shortens the expire time on a Prerender, 1123 // 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 1124 // add a series of tests testing advancing the time by either the abandon
1126 // or normal expire, and verifying the expected behaviour with groups 1125 // or normal expire, and verifying the expected behaviour with groups
1127 // of links. 1126 // of links.
1128 TEST_F(PrerenderTest, LinkManagerExpireThenCancel) { 1127 TEST_F(PrerenderTest, LinkManagerExpireThenCancel) {
1129 EXPECT_TRUE(IsEmptyPrerenderLinkManager()); 1128 EXPECT_TRUE(IsEmptyPrerenderLinkManager());
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
1165 prerender_manager()->config().time_to_live + TimeDelta::FromSeconds(1)); 1164 prerender_manager()->config().time_to_live + TimeDelta::FromSeconds(1));
1166 DummyPrerenderContents* null = NULL; 1165 DummyPrerenderContents* null = NULL;
1167 ASSERT_EQ(null, prerender_manager()->FindEntry(url)); 1166 ASSERT_EQ(null, prerender_manager()->FindEntry(url));
1168 DummyPrerenderContents* second_prerender_contents = 1167 DummyPrerenderContents* second_prerender_contents =
1169 prerender_manager()->CreateNextPrerenderContents( 1168 prerender_manager()->CreateNextPrerenderContents(
1170 url, FINAL_STATUS_USED); 1169 url, FINAL_STATUS_USED);
1171 EXPECT_TRUE(AddSimplePrerender(url)); 1170 EXPECT_TRUE(AddSimplePrerender(url));
1172 EXPECT_TRUE(second_prerender_contents->prerendering_has_started()); 1171 EXPECT_TRUE(second_prerender_contents->prerendering_has_started());
1173 ASSERT_EQ(second_prerender_contents, 1172 ASSERT_EQ(second_prerender_contents,
1174 prerender_manager()->FindAndUseEntry(url)); 1173 prerender_manager()->FindAndUseEntry(url));
1175 // The PrerenderLinkManager is not empty since we never removed the first
1176 // prerender.
1177 EXPECT_FALSE(IsEmptyPrerenderLinkManager());
1178 } 1174 }
1179 1175
1180 TEST_F(PrerenderTest, LinkManagerCancelThenAddAgain) { 1176 TEST_F(PrerenderTest, LinkManagerCancelThenAddAgain) {
1181 EXPECT_TRUE(IsEmptyPrerenderLinkManager()); 1177 EXPECT_TRUE(IsEmptyPrerenderLinkManager());
1182 GURL url("http://www.myexample.com"); 1178 GURL url("http://www.myexample.com");
1183 DummyPrerenderContents* first_prerender_contents = 1179 DummyPrerenderContents* first_prerender_contents =
1184 prerender_manager()->CreateNextPrerenderContents( 1180 prerender_manager()->CreateNextPrerenderContents(
1185 url, FINAL_STATUS_CANCELLED); 1181 url, FINAL_STATUS_CANCELLED);
1186 EXPECT_TRUE(AddSimplePrerender(url)); 1182 EXPECT_TRUE(AddSimplePrerender(url));
1187 EXPECT_TRUE(first_prerender_contents->prerendering_has_started()); 1183 EXPECT_TRUE(first_prerender_contents->prerendering_has_started());
1188 EXPECT_FALSE(first_prerender_contents->prerendering_has_been_cancelled()); 1184 EXPECT_FALSE(first_prerender_contents->prerendering_has_been_cancelled());
1189 ASSERT_EQ(first_prerender_contents, prerender_manager()->FindEntry(url)); 1185 ASSERT_EQ(first_prerender_contents, prerender_manager()->FindEntry(url));
1190 prerender_link_manager()->OnCancelPrerender(kDefaultChildId, 1186 prerender_link_manager()->OnCancelPrerender(kDefaultChildId,
1191 last_prerender_id()); 1187 last_prerender_id());
1192 EXPECT_TRUE(IsEmptyPrerenderLinkManager()); 1188 EXPECT_TRUE(IsEmptyPrerenderLinkManager());
1193 EXPECT_TRUE(first_prerender_contents->prerendering_has_been_cancelled()); 1189 EXPECT_TRUE(first_prerender_contents->prerendering_has_been_cancelled());
1194 DummyPrerenderContents* null = NULL; 1190 DummyPrerenderContents* null = NULL;
1195 ASSERT_EQ(null, prerender_manager()->FindEntry(url)); 1191 ASSERT_EQ(null, prerender_manager()->FindEntry(url));
1196 DummyPrerenderContents* second_prerender_contents = 1192 DummyPrerenderContents* second_prerender_contents =
1197 prerender_manager()->CreateNextPrerenderContents( 1193 prerender_manager()->CreateNextPrerenderContents(
1198 url, FINAL_STATUS_USED); 1194 url, FINAL_STATUS_USED);
1199 EXPECT_TRUE(AddSimplePrerender(url)); 1195 EXPECT_TRUE(AddSimplePrerender(url));
1200 EXPECT_TRUE(second_prerender_contents->prerendering_has_started()); 1196 EXPECT_TRUE(second_prerender_contents->prerendering_has_started());
1201 ASSERT_EQ(second_prerender_contents, 1197 ASSERT_EQ(second_prerender_contents,
1202 prerender_manager()->FindAndUseEntry(url)); 1198 prerender_manager()->FindAndUseEntry(url));
1203 EXPECT_FALSE(IsEmptyPrerenderLinkManager());
1204 } 1199 }
1205 1200
1206 } // namespace prerender 1201 } // namespace prerender
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698