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

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

Issue 10553029: Handle interface to prerenders. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | 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/time.h" 8 #include "base/time.h"
9 #include "chrome/browser/prerender/prerender_contents.h" 9 #include "chrome/browser/prerender/prerender_contents.h"
10 #include "chrome/browser/prerender/prerender_link_manager.h" 10 #include "chrome/browser/prerender/prerender_link_manager.h"
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
71 bool prerendering_has_been_cancelled() const { 71 bool prerendering_has_been_cancelled() const {
72 return PrerenderContents::prerendering_has_been_cancelled(); 72 return PrerenderContents::prerendering_has_been_cancelled();
73 } 73 }
74 74
75 private: 75 private:
76 FinalStatus expected_final_status_; 76 FinalStatus expected_final_status_;
77 }; 77 };
78 78
79 class TestPrerenderManager : public PrerenderManager { 79 class TestPrerenderManager : public PrerenderManager {
80 public: 80 public:
81 using PrerenderManager::FindPrerender;
82
81 explicit TestPrerenderManager(PrerenderTracker* prerender_tracker) 83 explicit TestPrerenderManager(PrerenderTracker* prerender_tracker)
82 : PrerenderManager(&profile_, prerender_tracker), 84 : PrerenderManager(&profile_, prerender_tracker),
83 time_(base::Time::Now()), 85 time_(base::Time::Now()),
84 time_ticks_(base::TimeTicks::Now()), 86 time_ticks_(base::TimeTicks::Now()),
85 next_prerender_contents_(NULL), 87 next_prerender_contents_(NULL),
86 prerender_tracker_(prerender_tracker) { 88 prerender_tracker_(prerender_tracker) {
87 set_rate_limit_enabled(false); 89 set_rate_limit_enabled(false);
88 } 90 }
89 91
90 virtual ~TestPrerenderManager() { 92 virtual ~TestPrerenderManager() {
91 if (next_prerender_contents()) { 93 if (next_prerender_contents()) {
92 next_prerender_contents_.release()->Destroy( 94 next_prerender_contents_.release()->Destroy(
93 FINAL_STATUS_MANAGER_SHUTDOWN); 95 FINAL_STATUS_MANAGER_SHUTDOWN);
94 } 96 }
97 #if 0
95 // Set the final status for all PrerenderContents with an expected final 98 // Set the final status for all PrerenderContents with an expected final
96 // status of FINAL_STATUS_USED. These values are normally set when the 99 // status of FINAL_STATUS_USED. These values are normally set when the
97 // prerendered RVH is swapped into a tab, which doesn't happen in these 100 // prerendered RVH is swapped into a tab, which doesn't happen in these
98 // unit tests. 101 // unit tests.
99 for (ScopedVector<PrerenderContents>::iterator it = 102 for (ScopedVector<PrerenderContents>::iterator it =
100 used_prerender_contents_.begin(); 103 used_prerender_contents_.begin();
101 it != used_prerender_contents_.end(); ++it) { 104 it != used_prerender_contents_.end(); ++it) {
102 (*it)->set_final_status(FINAL_STATUS_USED); 105 (*it)->set_final_status(FINAL_STATUS_USED);
103 } 106 }
107 #endif
104 DoShutdown(); 108 DoShutdown();
105 } 109 }
106 110
107 void AdvanceTime(base::TimeDelta delta) { 111 void AdvanceTime(base::TimeDelta delta) {
108 time_ += delta; 112 time_ += delta;
109 } 113 }
110 114
111 void AdvanceTimeTicks(base::TimeDelta delta) { 115 void AdvanceTimeTicks(base::TimeDelta delta) {
112 time_ticks_ += delta; 116 time_ticks_ += delta;
113 } 117 }
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
152 } 156 }
153 157
154 void set_rate_limit_enabled(bool enabled) { 158 void set_rate_limit_enabled(bool enabled) {
155 mutable_config().rate_limit_enabled = enabled; 159 mutable_config().rate_limit_enabled = enabled;
156 } 160 }
157 161
158 PrerenderContents* next_prerender_contents() { 162 PrerenderContents* next_prerender_contents() {
159 return next_prerender_contents_.get(); 163 return next_prerender_contents_.get();
160 } 164 }
161 165
166 PrerenderContents* GetEntry(const GURL& url) {
167 // We don't need a valid web_contents, but we do need it to be distinct
168 // from the NULL value it was created with.
169 static int an_integer;
170 content::WebContents* not_really_web_contents =
171 reinterpret_cast<content::WebContents*>(&an_integer);
172 return ClaimPrerender(not_really_web_contents, url, NULL);
173 }
174
162 private: 175 private:
163 void SetNextPrerenderContents(DummyPrerenderContents* prerender_contents) { 176 void SetNextPrerenderContents(DummyPrerenderContents* prerender_contents) {
164 DCHECK(!next_prerender_contents_.get()); 177 DCHECK(!next_prerender_contents_.get());
165 next_prerender_contents_.reset(prerender_contents); 178 next_prerender_contents_.reset(prerender_contents);
166 if (prerender_contents->expected_final_status() == FINAL_STATUS_USED) 179 if (prerender_contents->expected_final_status() == FINAL_STATUS_USED)
167 used_prerender_contents_.push_back(prerender_contents); 180 used_prerender_contents_.push_back(prerender_contents);
168 } 181 }
169 182
170 virtual base::Time GetCurrentTime() const OVERRIDE { 183 virtual base::Time GetCurrentTime() const OVERRIDE {
171 return time_; 184 return time_;
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
240 } 253 }
241 254
242 int last_prerender_id() const { 255 int last_prerender_id() const {
243 return last_prerender_id_; 256 return last_prerender_id_;
244 } 257 }
245 258
246 int GetNextPrerenderID() { 259 int GetNextPrerenderID() {
247 return ++last_prerender_id_; 260 return ++last_prerender_id_;
248 } 261 }
249 262
250 // Shorthand to add a simple preload with a reasonable source. 263 // Shorthand to add a simple prerender with a reasonable source.
251 bool AddSimplePrerender(const GURL& url) { 264 bool AddSimplePrerender(const GURL& url) {
252 return prerender_link_manager()->OnAddPrerender( 265 return prerender_link_manager()->OnAddPrerender(
253 kDefaultChildId, GetNextPrerenderID(), 266 kDefaultChildId, GetNextPrerenderID(),
254 url, content::Referrer(), 267 url, content::Referrer(),
255 gfx::Size(), kDefaultRenderViewRouteId); 268 gfx::Size(), kDefaultRenderViewRouteId);
256 } 269 }
257 270
258 private: 271 private:
259 PrerenderTracker* prerender_tracker() { 272 PrerenderTracker* prerender_tracker() {
260 return g_browser_process->prerender_tracker(); 273 return g_browser_process->prerender_tracker();
261 } 274 }
262 275
263 // Needed to pass PrerenderManager's DCHECKs. 276 // Needed to pass PrerenderManager's DCHECKs.
264 MessageLoop message_loop_; 277 MessageLoop message_loop_;
265 content::TestBrowserThread ui_thread_; 278 content::TestBrowserThread ui_thread_;
266 scoped_ptr<TestPrerenderManager> prerender_manager_; 279 scoped_ptr<TestPrerenderManager> prerender_manager_;
267 scoped_ptr<PrerenderLinkManager> prerender_link_manager_; 280 scoped_ptr<PrerenderLinkManager> prerender_link_manager_;
268 int last_prerender_id_; 281 int last_prerender_id_;
269 }; 282 };
270 283
271 TEST_F(PrerenderTest, EmptyTest) {
272 EXPECT_FALSE(prerender_manager()->MaybeUsePrerenderedPage(
273 NULL,
274 GURL("http://www.google.com/")));
275 }
276
277 TEST_F(PrerenderTest, FoundTest) { 284 TEST_F(PrerenderTest, FoundTest) {
278 GURL url("http://www.google.com/"); 285 GURL url("http://www.google.com/");
279 DummyPrerenderContents* prerender_contents = 286 DummyPrerenderContents* prerender_contents =
280 prerender_manager()->CreateNextPrerenderContents( 287 prerender_manager()->CreateNextPrerenderContents(
281 url, 288 url,
282 FINAL_STATUS_USED); 289 FINAL_STATUS_USED);
283 EXPECT_TRUE(AddSimplePrerender(url)); 290 EXPECT_TRUE(AddSimplePrerender(url));
284 EXPECT_TRUE(prerender_contents->prerendering_has_started()); 291 EXPECT_TRUE(prerender_contents->prerendering_has_started());
285 ASSERT_EQ(prerender_contents, prerender_manager()->GetEntry(url)); 292 ASSERT_EQ(prerender_contents, prerender_manager()->FindPrerender(url));
286 } 293 }
287 294
288 // Make sure that if queue a request, and a second prerender request for the 295 // Make sure that if queue a request, and a second prerender request for the
289 // same URL comes in, that we drop the second request and keep the first one. 296 // same URL comes in, that we drop the second request and keep the first one.
290 TEST_F(PrerenderTest, DropSecondRequestTest) { 297 TEST_F(PrerenderTest, DropSecondRequestTest) {
291 GURL url("http://www.google.com/"); 298 GURL url("http://www.google.com/");
292 DummyPrerenderContents* prerender_contents = 299 DummyPrerenderContents* prerender_contents =
293 prerender_manager()->CreateNextPrerenderContents( 300 prerender_manager()->CreateNextPrerenderContents(
294 url, 301 url,
295 FINAL_STATUS_USED); 302 FINAL_STATUS_USED);
(...skipping 186 matching lines...) Expand 10 before | Expand all | Expand 10 after
482 FINAL_STATUS_USED); 489 FINAL_STATUS_USED);
483 EXPECT_TRUE(AddSimplePrerender(url)); 490 EXPECT_TRUE(AddSimplePrerender(url));
484 491
485 int child_id; 492 int child_id;
486 int route_id; 493 int route_id;
487 ASSERT_TRUE(prerender_contents->GetChildId(&child_id)); 494 ASSERT_TRUE(prerender_contents->GetChildId(&child_id));
488 ASSERT_TRUE(prerender_contents->GetRouteId(&route_id)); 495 ASSERT_TRUE(prerender_contents->GetRouteId(&route_id));
489 496
490 GURL pending_url("http://news.google.com/"); 497 GURL pending_url("http://news.google.com/");
491 498
492 EXPECT_TRUE(prerender_manager()->AddPrerenderFromLinkRelPrerender( 499 PrerenderHandle prerender =
493 child_id, route_id, 500 prerender_manager()->AddPrerenderFromLinkRelPrerender(
494 pending_url, Referrer(url, WebKit::WebReferrerPolicyDefault), 501 child_id, route_id,
495 gfx::Size())); 502 pending_url, Referrer(url, WebKit::WebReferrerPolicyDefault),
503 gfx::Size());
504 EXPECT_TRUE(prerender);
496 505
497 EXPECT_TRUE(prerender_manager()->IsPendingEntry(pending_url)); 506 EXPECT_TRUE(prerender->IsPending());
498 EXPECT_TRUE(prerender_contents->prerendering_has_started()); 507 EXPECT_TRUE(prerender_contents->prerendering_has_started());
499 ASSERT_EQ(prerender_contents, prerender_manager()->GetEntry(url)); 508 ASSERT_EQ(prerender_contents, prerender_manager()->GetEntry(url));
500 } 509 }
501 510
502 // Tests that a PrerenderManager created for a browser session in the control 511 // Tests that a PrerenderManager created for a browser session in the control
503 // group works as expected. 512 // group works as expected.
504 TEST_F(PrerenderTest, ControlGroup) { 513 TEST_F(PrerenderTest, ControlGroup) {
505 RestorePrerenderMode restore_prerender_mode; 514 RestorePrerenderMode restore_prerender_mode;
506 PrerenderManager::SetMode( 515 PrerenderManager::SetMode(
507 PrerenderManager::PRERENDER_MODE_EXPERIMENT_CONTROL_GROUP); 516 PrerenderManager::PRERENDER_MODE_EXPERIMENT_CONTROL_GROUP);
(...skipping 139 matching lines...) Expand 10 before | Expand all | Expand 10 after
647 TEST_F(PrerenderTest, ClearTest) { 656 TEST_F(PrerenderTest, ClearTest) {
648 GURL url("http://www.google.com/"); 657 GURL url("http://www.google.com/");
649 DummyPrerenderContents* prerender_contents = 658 DummyPrerenderContents* prerender_contents =
650 prerender_manager()->CreateNextPrerenderContents( 659 prerender_manager()->CreateNextPrerenderContents(
651 url, 660 url,
652 FINAL_STATUS_CACHE_OR_HISTORY_CLEARED); 661 FINAL_STATUS_CACHE_OR_HISTORY_CLEARED);
653 EXPECT_TRUE(AddSimplePrerender(url)); 662 EXPECT_TRUE(AddSimplePrerender(url));
654 EXPECT_TRUE(prerender_contents->prerendering_has_started()); 663 EXPECT_TRUE(prerender_contents->prerendering_has_started());
655 prerender_manager()->ClearData(PrerenderManager::CLEAR_PRERENDER_CONTENTS); 664 prerender_manager()->ClearData(PrerenderManager::CLEAR_PRERENDER_CONTENTS);
656 DummyPrerenderContents* null = NULL; 665 DummyPrerenderContents* null = NULL;
657 EXPECT_EQ(null, prerender_manager()->FindEntry(url)); 666 EXPECT_EQ(null, prerender_manager()->GetEntry(url));
658 } 667 }
659 668
660 // Make sure canceling works as expected. 669 // Make sure canceling works as expected.
661 TEST_F(PrerenderTest, CancelAllTest) { 670 TEST_F(PrerenderTest, CancelAllTest) {
662 GURL url("http://www.google.com/"); 671 GURL url("http://www.google.com/");
663 DummyPrerenderContents* prerender_contents = 672 DummyPrerenderContents* prerender_contents =
664 prerender_manager()->CreateNextPrerenderContents( 673 prerender_manager()->CreateNextPrerenderContents(
665 url, FINAL_STATUS_CANCELLED); 674 url, FINAL_STATUS_CANCELLED);
666 EXPECT_TRUE(AddSimplePrerender(url)); 675 EXPECT_TRUE(AddSimplePrerender(url));
667 EXPECT_TRUE(prerender_contents->prerendering_has_started()); 676 EXPECT_TRUE(prerender_contents->prerendering_has_started());
668 prerender_manager()->CancelAllPrerenders(); 677 prerender_manager()->CancelAllPrerenders();
669 const DummyPrerenderContents* null = NULL; 678 const DummyPrerenderContents* null = NULL;
670 EXPECT_EQ(null, prerender_manager()->FindEntry(url)); 679 EXPECT_EQ(null, prerender_manager()->GetEntry(url));
671 }
672
673 // Make sure canceling for omnibox works as expected.
674 TEST_F(PrerenderTest, CancelOmniboxRemovesOmniboxTest) {
675 // Check canceling removes the Omnibox url.
676 GURL url("http://www.google.com/");
677 DummyPrerenderContents* prerender_contents =
678 prerender_manager()->CreateNextPrerenderContents(
679 url, ORIGIN_OMNIBOX, FINAL_STATUS_CANCELLED);
680 EXPECT_TRUE(prerender_manager()->AddPrerenderFromOmnibox(url, NULL));
681 EXPECT_TRUE(prerender_contents->prerendering_has_started());
682 prerender_manager()->CancelOmniboxPrerenders();
683 const DummyPrerenderContents* null = NULL;
684 EXPECT_EQ(null, prerender_manager()->FindEntry(url));
685 }
686
687 TEST_F(PrerenderTest, CancelOmniboxDoesNotRemoveLinkTest) {
688 GURL url("http://www.google.com/");
689 DummyPrerenderContents* prerender_contents =
690 prerender_manager()->CreateNextPrerenderContents(
691 url, ORIGIN_LINK_REL_PRERENDER, FINAL_STATUS_MANAGER_SHUTDOWN);
692 EXPECT_TRUE(AddSimplePrerender(url));
693 EXPECT_TRUE(prerender_contents->prerendering_has_started());
694 prerender_manager()->CancelOmniboxPrerenders();
695 const DummyPrerenderContents* null = NULL;
696 EXPECT_NE(null, prerender_manager()->FindEntry(url));
697 } 680 }
698 681
699 TEST_F(PrerenderTest, OmniboxNotAllowedWhenDisabled) { 682 TEST_F(PrerenderTest, OmniboxNotAllowedWhenDisabled) {
700 prerender_manager()->set_enabled(false); 683 prerender_manager()->set_enabled(false);
701 EXPECT_FALSE(prerender_manager()->AddPrerenderFromOmnibox( 684 EXPECT_FALSE(prerender_manager()->AddPrerenderFromOmnibox(
702 GURL("http://www.example.com"), NULL)); 685 GURL("http://www.example.com"), NULL));
703 } 686 }
704 687
705 TEST_F(PrerenderTest, LinkRelNotAllowedWhenDisabled) { 688 TEST_F(PrerenderTest, LinkRelNotAllowedWhenDisabled) {
706 prerender_manager()->set_enabled(false); 689 prerender_manager()->set_enabled(false);
707 EXPECT_FALSE(AddSimplePrerender( 690 EXPECT_FALSE(AddSimplePrerender(
708 GURL("http://www.example.com"))); 691 GURL("http://www.example.com")));
709 } 692 }
710 693
711 TEST_F(PrerenderTest, LinkManagerCancel) { 694 TEST_F(PrerenderTest, LinkManagerCancel) {
712 EXPECT_TRUE(IsEmptyPrerenderLinkManager()); 695 EXPECT_TRUE(IsEmptyPrerenderLinkManager());
713 GURL url("http://www.myexample.com"); 696 GURL url("http://www.myexample.com");
714 DummyPrerenderContents* prerender_contents = 697 DummyPrerenderContents* prerender_contents =
715 prerender_manager()->CreateNextPrerenderContents( 698 prerender_manager()->CreateNextPrerenderContents(
716 url, FINAL_STATUS_CANCELLED); 699 url, FINAL_STATUS_CANCELLED);
717 700
718 EXPECT_TRUE(AddSimplePrerender(url)); 701 EXPECT_TRUE(AddSimplePrerender(url));
719 702
720 EXPECT_TRUE(prerender_contents->prerendering_has_started()); 703 EXPECT_TRUE(prerender_contents->prerendering_has_started());
721 EXPECT_FALSE(prerender_contents->prerendering_has_been_cancelled()); 704 EXPECT_FALSE(prerender_contents->prerendering_has_been_cancelled());
722 ASSERT_EQ(prerender_contents, prerender_manager()->FindEntry(url)); 705 ASSERT_EQ(prerender_contents, prerender_manager()->FindPrerender(url));
723 EXPECT_FALSE(IsEmptyPrerenderLinkManager()); 706 EXPECT_FALSE(IsEmptyPrerenderLinkManager());
724 prerender_link_manager()->OnCancelPrerender(kDefaultChildId, 707 prerender_link_manager()->OnCancelPrerender(kDefaultChildId,
725 last_prerender_id()); 708 last_prerender_id());
726 709
727 EXPECT_TRUE(prerender_contents->prerendering_has_been_cancelled()); 710 EXPECT_TRUE(prerender_contents->prerendering_has_been_cancelled());
728 DummyPrerenderContents* null = NULL; 711 DummyPrerenderContents* null = NULL;
729 ASSERT_EQ(null, prerender_manager()->GetEntry(url)); 712 ASSERT_EQ(null, prerender_manager()->GetEntry(url));
730 EXPECT_TRUE(IsEmptyPrerenderLinkManager()); 713 EXPECT_TRUE(IsEmptyPrerenderLinkManager());
731 } 714 }
732 715
733 TEST_F(PrerenderTest, LinkManagerCancelThenAbandon) { 716 TEST_F(PrerenderTest, LinkManagerCancelThenAbandon) {
734 EXPECT_TRUE(IsEmptyPrerenderLinkManager()); 717 EXPECT_TRUE(IsEmptyPrerenderLinkManager());
735 GURL url("http://www.myexample.com"); 718 GURL url("http://www.myexample.com");
736 DummyPrerenderContents* prerender_contents = 719 DummyPrerenderContents* prerender_contents =
737 prerender_manager()->CreateNextPrerenderContents( 720 prerender_manager()->CreateNextPrerenderContents(
738 url, FINAL_STATUS_CANCELLED); 721 url, FINAL_STATUS_CANCELLED);
739 722
740 EXPECT_TRUE(AddSimplePrerender(url)); 723 EXPECT_TRUE(AddSimplePrerender(url));
741 724
742 EXPECT_TRUE(prerender_contents->prerendering_has_started()); 725 EXPECT_TRUE(prerender_contents->prerendering_has_started());
743 EXPECT_FALSE(prerender_contents->prerendering_has_been_cancelled()); 726 EXPECT_FALSE(prerender_contents->prerendering_has_been_cancelled());
744 ASSERT_EQ(prerender_contents, prerender_manager()->FindEntry(url)); 727 ASSERT_EQ(prerender_contents, prerender_manager()->FindPrerender(url));
745 EXPECT_FALSE(IsEmptyPrerenderLinkManager()); 728 EXPECT_FALSE(IsEmptyPrerenderLinkManager());
746 prerender_link_manager()->OnCancelPrerender(kDefaultChildId, 729 prerender_link_manager()->OnCancelPrerender(kDefaultChildId,
747 last_prerender_id()); 730 last_prerender_id());
748 731
749 EXPECT_TRUE(IsEmptyPrerenderLinkManager()); 732 EXPECT_TRUE(IsEmptyPrerenderLinkManager());
750 EXPECT_TRUE(prerender_contents->prerendering_has_been_cancelled()); 733 EXPECT_TRUE(prerender_contents->prerendering_has_been_cancelled());
751 prerender_link_manager()->OnAbandonPrerender(kDefaultChildId, 734 prerender_link_manager()->OnAbandonPrerender(kDefaultChildId,
752 last_prerender_id()); 735 last_prerender_id());
753 736
754 EXPECT_TRUE(IsEmptyPrerenderLinkManager()); 737 EXPECT_TRUE(IsEmptyPrerenderLinkManager());
755 EXPECT_TRUE(prerender_contents->prerendering_has_been_cancelled()); 738 EXPECT_TRUE(prerender_contents->prerendering_has_been_cancelled());
756 DummyPrerenderContents* null = NULL; 739 DummyPrerenderContents* null = NULL;
757 ASSERT_EQ(null, prerender_manager()->GetEntry(url)); 740 ASSERT_EQ(null, prerender_manager()->GetEntry(url));
758 } 741 }
759 742
760 // TODO(gavinp): Update this test after abandon has an effect on Prerenders, 743 // TODO(gavinp): Update this test after abandon has an effect on Prerenders,
761 // like shortening the timeouts. 744 // like shortening the timeouts.
762 TEST_F(PrerenderTest, LinkManagerAbandon) { 745 TEST_F(PrerenderTest, LinkManagerAbandon) {
763 EXPECT_TRUE(IsEmptyPrerenderLinkManager()); 746 EXPECT_TRUE(IsEmptyPrerenderLinkManager());
764 GURL url("http://www.myexample.com"); 747 GURL url("http://www.myexample.com");
765 DummyPrerenderContents* prerender_contents = 748 DummyPrerenderContents* prerender_contents =
766 prerender_manager()->CreateNextPrerenderContents( 749 prerender_manager()->CreateNextPrerenderContents(
767 url, FINAL_STATUS_USED); 750 url, FINAL_STATUS_USED);
768 751
769 EXPECT_TRUE(AddSimplePrerender(url)); 752 EXPECT_TRUE(AddSimplePrerender(url));
770 753
771 EXPECT_TRUE(prerender_contents->prerendering_has_started()); 754 EXPECT_TRUE(prerender_contents->prerendering_has_started());
772 EXPECT_FALSE(prerender_contents->prerendering_has_been_cancelled()); 755 EXPECT_FALSE(prerender_contents->prerendering_has_been_cancelled());
773 ASSERT_EQ(prerender_contents, prerender_manager()->FindEntry(url)); 756 ASSERT_EQ(prerender_contents, prerender_manager()->FindPrerender(url));
774 EXPECT_FALSE(IsEmptyPrerenderLinkManager()); 757 EXPECT_FALSE(IsEmptyPrerenderLinkManager());
775 prerender_link_manager()->OnAbandonPrerender(kDefaultChildId, 758 prerender_link_manager()->OnAbandonPrerender(kDefaultChildId,
776 last_prerender_id()); 759 last_prerender_id());
777 760
778 EXPECT_FALSE(prerender_contents->prerendering_has_been_cancelled()); 761 EXPECT_FALSE(prerender_contents->prerendering_has_been_cancelled());
779 ASSERT_EQ(prerender_contents, prerender_manager()->GetEntry(url)); 762 ASSERT_EQ(prerender_contents, prerender_manager()->GetEntry(url));
780 EXPECT_TRUE(IsEmptyPrerenderLinkManager()); 763 EXPECT_TRUE(IsEmptyPrerenderLinkManager());
781 } 764 }
782 765
783 TEST_F(PrerenderTest, LinkManagerCancelTwice) { 766 TEST_F(PrerenderTest, LinkManagerCancelTwice) {
784 EXPECT_TRUE(IsEmptyPrerenderLinkManager()); 767 EXPECT_TRUE(IsEmptyPrerenderLinkManager());
785 GURL url("http://www.myexample.com"); 768 GURL url("http://www.myexample.com");
786 DummyPrerenderContents* prerender_contents = 769 DummyPrerenderContents* prerender_contents =
787 prerender_manager()->CreateNextPrerenderContents( 770 prerender_manager()->CreateNextPrerenderContents(
788 url, FINAL_STATUS_CANCELLED); 771 url, FINAL_STATUS_CANCELLED);
789 772
790 EXPECT_TRUE(AddSimplePrerender(url)); 773 EXPECT_TRUE(AddSimplePrerender(url));
791 EXPECT_TRUE(prerender_contents->prerendering_has_started()); 774 EXPECT_TRUE(prerender_contents->prerendering_has_started());
792 EXPECT_FALSE(prerender_contents->prerendering_has_been_cancelled()); 775 EXPECT_FALSE(prerender_contents->prerendering_has_been_cancelled());
793 ASSERT_EQ(prerender_contents, prerender_manager()->FindEntry(url)); 776 ASSERT_EQ(prerender_contents, prerender_manager()->FindPrerender(url));
794 prerender_link_manager()->OnCancelPrerender(kDefaultChildId, 777 prerender_link_manager()->OnCancelPrerender(kDefaultChildId,
795 last_prerender_id()); 778 last_prerender_id());
796 779
797 EXPECT_TRUE(IsEmptyPrerenderLinkManager()); 780 EXPECT_TRUE(IsEmptyPrerenderLinkManager());
798 EXPECT_TRUE(prerender_contents->prerendering_has_been_cancelled()); 781 EXPECT_TRUE(prerender_contents->prerendering_has_been_cancelled());
799 DummyPrerenderContents* null = NULL; 782 DummyPrerenderContents* null = NULL;
800 ASSERT_EQ(null, prerender_manager()->GetEntry(url)); 783 ASSERT_EQ(null, prerender_manager()->GetEntry(url));
801 prerender_link_manager()->OnCancelPrerender(kDefaultChildId, 784 prerender_link_manager()->OnCancelPrerender(kDefaultChildId,
802 last_prerender_id()); 785 last_prerender_id());
803 } 786 }
804 787
805 TEST_F(PrerenderTest, LinkManagerAddTwiceCancelTwice) { 788 TEST_F(PrerenderTest, LinkManagerAddTwiceCancelTwice) {
806 EXPECT_TRUE(IsEmptyPrerenderLinkManager()); 789 EXPECT_TRUE(IsEmptyPrerenderLinkManager());
807 GURL url("http://www.myexample.com"); 790 GURL url("http://www.myexample.com");
808 DummyPrerenderContents* prerender_contents = 791 DummyPrerenderContents* prerender_contents =
809 prerender_manager()->CreateNextPrerenderContents( 792 prerender_manager()->CreateNextPrerenderContents(
810 url, FINAL_STATUS_CANCELLED); 793 url, FINAL_STATUS_CANCELLED);
811 794
812 EXPECT_TRUE(AddSimplePrerender(url)); 795 EXPECT_TRUE(AddSimplePrerender(url));
813 796
814 const int first_prerender_id = last_prerender_id(); 797 const int first_prerender_id = last_prerender_id();
815 EXPECT_TRUE(prerender_contents->prerendering_has_started()); 798 EXPECT_TRUE(prerender_contents->prerendering_has_started());
816 EXPECT_FALSE(prerender_contents->prerendering_has_been_cancelled()); 799 EXPECT_FALSE(prerender_contents->prerendering_has_been_cancelled());
817 ASSERT_EQ(prerender_contents, prerender_manager()->FindEntry(url)); 800 ASSERT_EQ(prerender_contents, prerender_manager()->FindPrerender(url));
818 EXPECT_TRUE(AddSimplePrerender(url)); 801 EXPECT_TRUE(AddSimplePrerender(url));
819 802
820 const int second_prerender_id = last_prerender_id(); 803 const int second_prerender_id = last_prerender_id();
821 EXPECT_TRUE(prerender_contents->prerendering_has_started()); 804 EXPECT_TRUE(prerender_contents->prerendering_has_started());
822 EXPECT_FALSE(prerender_contents->prerendering_has_been_cancelled()); 805 EXPECT_FALSE(prerender_contents->prerendering_has_been_cancelled());
823 ASSERT_EQ(prerender_contents, prerender_manager()->FindEntry(url)); 806 ASSERT_EQ(prerender_contents, prerender_manager()->FindPrerender(url));
824 prerender_link_manager()->OnCancelPrerender(kDefaultChildId, 807 prerender_link_manager()->OnCancelPrerender(kDefaultChildId,
825 first_prerender_id); 808 first_prerender_id);
826 809
827 EXPECT_FALSE(prerender_contents->prerendering_has_been_cancelled()); 810 EXPECT_FALSE(prerender_contents->prerendering_has_been_cancelled());
828 ASSERT_EQ(prerender_contents, prerender_manager()->FindEntry(url)); 811 ASSERT_EQ(prerender_contents, prerender_manager()->FindPrerender(url));
829 prerender_link_manager()->OnCancelPrerender(kDefaultChildId, 812 prerender_link_manager()->OnCancelPrerender(kDefaultChildId,
830 second_prerender_id); 813 second_prerender_id);
831 814
832 EXPECT_TRUE(IsEmptyPrerenderLinkManager()); 815 EXPECT_TRUE(IsEmptyPrerenderLinkManager());
833 EXPECT_TRUE(prerender_contents->prerendering_has_been_cancelled()); 816 EXPECT_TRUE(prerender_contents->prerendering_has_been_cancelled());
834 DummyPrerenderContents* null = NULL; 817 DummyPrerenderContents* null = NULL;
835 ASSERT_EQ(null, prerender_manager()->GetEntry(url)); 818 ASSERT_EQ(null, prerender_manager()->GetEntry(url));
836 } 819 }
837 820
838 TEST_F(PrerenderTest, LinkManagerAddTwiceCancelTwiceThenAbandonTwice) { 821 TEST_F(PrerenderTest, LinkManagerAddTwiceCancelTwiceThenAbandonTwice) {
839 EXPECT_TRUE(IsEmptyPrerenderLinkManager()); 822 EXPECT_TRUE(IsEmptyPrerenderLinkManager());
840 GURL url("http://www.myexample.com"); 823 GURL url("http://www.myexample.com");
841 DummyPrerenderContents* prerender_contents = 824 DummyPrerenderContents* prerender_contents =
842 prerender_manager()->CreateNextPrerenderContents( 825 prerender_manager()->CreateNextPrerenderContents(
843 url, FINAL_STATUS_CANCELLED); 826 url, FINAL_STATUS_CANCELLED);
844 827
845 EXPECT_TRUE(AddSimplePrerender(url)); 828 EXPECT_TRUE(AddSimplePrerender(url));
846 829
847 const int first_prerender_id = last_prerender_id(); 830 const int first_prerender_id = last_prerender_id();
848 EXPECT_TRUE(prerender_contents->prerendering_has_started()); 831 EXPECT_TRUE(prerender_contents->prerendering_has_started());
849 EXPECT_FALSE(prerender_contents->prerendering_has_been_cancelled()); 832 EXPECT_FALSE(prerender_contents->prerendering_has_been_cancelled());
850 ASSERT_EQ(prerender_contents, prerender_manager()->FindEntry(url)); 833 ASSERT_EQ(prerender_contents, prerender_manager()->FindPrerender(url));
851 EXPECT_TRUE(AddSimplePrerender(url)); 834 EXPECT_TRUE(AddSimplePrerender(url));
852 835
853 const int second_prerender_id = last_prerender_id(); 836 const int second_prerender_id = last_prerender_id();
854 EXPECT_TRUE(prerender_contents->prerendering_has_started()); 837 EXPECT_TRUE(prerender_contents->prerendering_has_started());
855 EXPECT_FALSE(prerender_contents->prerendering_has_been_cancelled()); 838 EXPECT_FALSE(prerender_contents->prerendering_has_been_cancelled());
856 ASSERT_EQ(prerender_contents, prerender_manager()->FindEntry(url)); 839 ASSERT_EQ(prerender_contents, prerender_manager()->FindPrerender(url));
857 prerender_link_manager()->OnCancelPrerender(kDefaultChildId, 840 prerender_link_manager()->OnCancelPrerender(kDefaultChildId,
858 first_prerender_id); 841 first_prerender_id);
859 842
860 EXPECT_FALSE(prerender_contents->prerendering_has_been_cancelled()); 843 EXPECT_FALSE(prerender_contents->prerendering_has_been_cancelled());
861 ASSERT_EQ(prerender_contents, prerender_manager()->FindEntry(url)); 844 ASSERT_EQ(prerender_contents, prerender_manager()->FindPrerender(url));
862 prerender_link_manager()->OnCancelPrerender(kDefaultChildId, 845 prerender_link_manager()->OnCancelPrerender(kDefaultChildId,
863 second_prerender_id); 846 second_prerender_id);
864 847
865 EXPECT_TRUE(IsEmptyPrerenderLinkManager()); 848 EXPECT_TRUE(IsEmptyPrerenderLinkManager());
866 EXPECT_TRUE(prerender_contents->prerendering_has_been_cancelled()); 849 EXPECT_TRUE(prerender_contents->prerendering_has_been_cancelled());
867 prerender_link_manager()->OnAbandonPrerender(kDefaultChildId, 850 prerender_link_manager()->OnAbandonPrerender(kDefaultChildId,
868 first_prerender_id); 851 first_prerender_id);
869 852
870 EXPECT_TRUE(IsEmptyPrerenderLinkManager()); 853 EXPECT_TRUE(IsEmptyPrerenderLinkManager());
871 EXPECT_TRUE(prerender_contents->prerendering_has_been_cancelled()); 854 EXPECT_TRUE(prerender_contents->prerendering_has_been_cancelled());
(...skipping 13 matching lines...) Expand all
885 GURL url("http://www.myexample.com"); 868 GURL url("http://www.myexample.com");
886 DummyPrerenderContents* prerender_contents = 869 DummyPrerenderContents* prerender_contents =
887 prerender_manager()->CreateNextPrerenderContents( 870 prerender_manager()->CreateNextPrerenderContents(
888 url, FINAL_STATUS_USED); 871 url, FINAL_STATUS_USED);
889 872
890 EXPECT_TRUE(AddSimplePrerender(url)); 873 EXPECT_TRUE(AddSimplePrerender(url));
891 874
892 const int first_prerender_id = last_prerender_id(); 875 const int first_prerender_id = last_prerender_id();
893 EXPECT_TRUE(prerender_contents->prerendering_has_started()); 876 EXPECT_TRUE(prerender_contents->prerendering_has_started());
894 EXPECT_FALSE(prerender_contents->prerendering_has_been_cancelled()); 877 EXPECT_FALSE(prerender_contents->prerendering_has_been_cancelled());
895 ASSERT_EQ(prerender_contents, prerender_manager()->FindEntry(url)); 878 ASSERT_EQ(prerender_contents, prerender_manager()->FindPrerender(url));
896 EXPECT_TRUE(AddSimplePrerender(url)); 879 EXPECT_TRUE(AddSimplePrerender(url));
897 880
898 const int second_prerender_id = last_prerender_id(); 881 const int second_prerender_id = last_prerender_id();
899 EXPECT_TRUE(prerender_contents->prerendering_has_started()); 882 EXPECT_TRUE(prerender_contents->prerendering_has_started());
900 EXPECT_FALSE(prerender_contents->prerendering_has_been_cancelled()); 883 EXPECT_FALSE(prerender_contents->prerendering_has_been_cancelled());
901 ASSERT_EQ(prerender_contents, prerender_manager()->FindEntry(url)); 884 ASSERT_EQ(prerender_contents, prerender_manager()->FindPrerender(url));
902 prerender_link_manager()->OnAbandonPrerender(kDefaultChildId, 885 prerender_link_manager()->OnAbandonPrerender(kDefaultChildId,
903 first_prerender_id); 886 first_prerender_id);
904 887
905 EXPECT_FALSE(prerender_contents->prerendering_has_been_cancelled()); 888 EXPECT_FALSE(prerender_contents->prerendering_has_been_cancelled());
906 ASSERT_EQ(prerender_contents, prerender_manager()->FindEntry(url)); 889 ASSERT_EQ(prerender_contents, prerender_manager()->FindPrerender(url));
907 prerender_link_manager()->OnAbandonPrerender(kDefaultChildId, 890 prerender_link_manager()->OnAbandonPrerender(kDefaultChildId,
908 second_prerender_id); 891 second_prerender_id);
909 892
910 EXPECT_TRUE(IsEmptyPrerenderLinkManager()); 893 EXPECT_TRUE(IsEmptyPrerenderLinkManager());
911 EXPECT_FALSE(prerender_contents->prerendering_has_been_cancelled()); 894 EXPECT_FALSE(prerender_contents->prerendering_has_been_cancelled());
912 ASSERT_EQ(prerender_contents, prerender_manager()->GetEntry(url)); 895 ASSERT_EQ(prerender_contents, prerender_manager()->GetEntry(url));
913 } 896 }
914 897
915 // TODO(gavinp): After abandon shortens the expire time on a Prerender, 898 // TODO(gavinp): After abandon shortens the expire time on a Prerender,
916 // add a series of tests testing advancing the time by either the abandon 899 // add a series of tests testing advancing the time by either the abandon
917 // or normal expire, and verifying the expected behaviour with groups 900 // or normal expire, and verifying the expected behaviour with groups
918 // of links. 901 // of links.
919 TEST_F(PrerenderTest, LinkManagerExpireThenCancel) { 902 TEST_F(PrerenderTest, LinkManagerExpireThenCancel) {
920 EXPECT_TRUE(IsEmptyPrerenderLinkManager()); 903 EXPECT_TRUE(IsEmptyPrerenderLinkManager());
921 GURL url("http://www.myexample.com"); 904 GURL url("http://www.myexample.com");
922 DummyPrerenderContents* prerender_contents = 905 DummyPrerenderContents* prerender_contents =
923 prerender_manager()->CreateNextPrerenderContents( 906 prerender_manager()->CreateNextPrerenderContents(
924 url, FINAL_STATUS_TIMED_OUT); 907 url, FINAL_STATUS_TIMED_OUT);
925 908
926 EXPECT_TRUE(AddSimplePrerender(url)); 909 EXPECT_TRUE(AddSimplePrerender(url));
927 910
928 EXPECT_TRUE(prerender_contents->prerendering_has_started()); 911 EXPECT_TRUE(prerender_contents->prerendering_has_started());
929 EXPECT_FALSE(prerender_contents->prerendering_has_been_cancelled()); 912 EXPECT_FALSE(prerender_contents->prerendering_has_been_cancelled());
930 ASSERT_EQ(prerender_contents, prerender_manager()->FindEntry(url)); 913 ASSERT_EQ(prerender_contents, prerender_manager()->FindPrerender(url));
931 prerender_manager()->AdvanceTime(prerender_manager()->GetMaxAge() + 914 prerender_manager()->AdvanceTime(prerender_manager()->GetMaxAge() +
932 base::TimeDelta::FromSeconds(1)); 915 base::TimeDelta::FromSeconds(1));
933 916
934 EXPECT_FALSE(IsEmptyPrerenderLinkManager()); 917 EXPECT_FALSE(IsEmptyPrerenderLinkManager());
935 DummyPrerenderContents* null = NULL; 918 DummyPrerenderContents* null = NULL;
936 ASSERT_EQ(null, prerender_manager()->GetEntry(url)); 919 ASSERT_EQ(null, prerender_manager()->GetEntry(url));
937 prerender_link_manager()->OnCancelPrerender(kDefaultChildId, 920 prerender_link_manager()->OnCancelPrerender(kDefaultChildId,
938 last_prerender_id()); 921 last_prerender_id());
939 922
940 EXPECT_TRUE(IsEmptyPrerenderLinkManager()); 923 EXPECT_TRUE(IsEmptyPrerenderLinkManager());
941 ASSERT_EQ(null, prerender_manager()->GetEntry(url)); 924 ASSERT_EQ(null, prerender_manager()->GetEntry(url));
942 } 925 }
943 926
944 TEST_F(PrerenderTest, LinkManagerExpireThenAddAgain) { 927 TEST_F(PrerenderTest, LinkManagerExpireThenAddAgain) {
945 EXPECT_TRUE(IsEmptyPrerenderLinkManager()); 928 EXPECT_TRUE(IsEmptyPrerenderLinkManager());
946 GURL url("http://www.myexample.com"); 929 GURL url("http://www.myexample.com");
947 DummyPrerenderContents* first_prerender_contents = 930 DummyPrerenderContents* first_prerender_contents =
948 prerender_manager()->CreateNextPrerenderContents( 931 prerender_manager()->CreateNextPrerenderContents(
949 url, FINAL_STATUS_TIMED_OUT); 932 url, FINAL_STATUS_TIMED_OUT);
950 EXPECT_TRUE(AddSimplePrerender(url)); 933 EXPECT_TRUE(AddSimplePrerender(url));
951 EXPECT_TRUE(first_prerender_contents->prerendering_has_started()); 934 EXPECT_TRUE(first_prerender_contents->prerendering_has_started());
952 EXPECT_FALSE(first_prerender_contents->prerendering_has_been_cancelled()); 935 EXPECT_FALSE(first_prerender_contents->prerendering_has_been_cancelled());
953 ASSERT_EQ(first_prerender_contents, prerender_manager()->FindEntry(url)); 936 ASSERT_EQ(first_prerender_contents, prerender_manager()->FindPrerender(url));
954 prerender_manager()->AdvanceTime(prerender_manager()->GetMaxAge() + 937 prerender_manager()->AdvanceTime(prerender_manager()->GetMaxAge() +
955 base::TimeDelta::FromSeconds(1)); 938 base::TimeDelta::FromSeconds(1));
956 DummyPrerenderContents* null = NULL; 939 DummyPrerenderContents* null = NULL;
957 ASSERT_EQ(null, prerender_manager()->GetEntry(url)); 940 ASSERT_EQ(null, prerender_manager()->GetEntry(url));
958 DummyPrerenderContents* second_prerender_contents = 941 DummyPrerenderContents* second_prerender_contents =
959 prerender_manager()->CreateNextPrerenderContents( 942 prerender_manager()->CreateNextPrerenderContents(
960 url, FINAL_STATUS_USED); 943 url, FINAL_STATUS_USED);
961 EXPECT_TRUE(AddSimplePrerender(url)); 944 EXPECT_TRUE(AddSimplePrerender(url));
962 EXPECT_TRUE(second_prerender_contents->prerendering_has_started()); 945 EXPECT_TRUE(second_prerender_contents->prerendering_has_started());
963 ASSERT_EQ(second_prerender_contents, prerender_manager()->GetEntry(url)); 946 ASSERT_EQ(second_prerender_contents, prerender_manager()->GetEntry(url));
964 // The PrerenderLinkManager is not empty since we never removed the first 947 // The PrerenderLinkManager is not empty since we never removed the first
965 // prerender. 948 // prerender.
966 EXPECT_FALSE(IsEmptyPrerenderLinkManager()); 949 EXPECT_FALSE(IsEmptyPrerenderLinkManager());
967 } 950 }
968 951
969 TEST_F(PrerenderTest, LinkManagerCancelThenAddAgain) { 952 TEST_F(PrerenderTest, LinkManagerCancelThenAddAgain) {
970 EXPECT_TRUE(IsEmptyPrerenderLinkManager()); 953 EXPECT_TRUE(IsEmptyPrerenderLinkManager());
971 GURL url("http://www.myexample.com"); 954 GURL url("http://www.myexample.com");
972 DummyPrerenderContents* first_prerender_contents = 955 DummyPrerenderContents* first_prerender_contents =
973 prerender_manager()->CreateNextPrerenderContents( 956 prerender_manager()->CreateNextPrerenderContents(
974 url, FINAL_STATUS_CANCELLED); 957 url, FINAL_STATUS_CANCELLED);
975 EXPECT_TRUE(AddSimplePrerender(url)); 958 EXPECT_TRUE(AddSimplePrerender(url));
976 EXPECT_TRUE(first_prerender_contents->prerendering_has_started()); 959 EXPECT_TRUE(first_prerender_contents->prerendering_has_started());
977 EXPECT_FALSE(first_prerender_contents->prerendering_has_been_cancelled()); 960 EXPECT_FALSE(first_prerender_contents->prerendering_has_been_cancelled());
978 ASSERT_EQ(first_prerender_contents, prerender_manager()->FindEntry(url)); 961 ASSERT_EQ(first_prerender_contents, prerender_manager()->FindPrerender(url));
979 prerender_link_manager()->OnCancelPrerender(kDefaultChildId, 962 prerender_link_manager()->OnCancelPrerender(kDefaultChildId,
980 last_prerender_id()); 963 last_prerender_id());
981 EXPECT_TRUE(IsEmptyPrerenderLinkManager()); 964 EXPECT_TRUE(IsEmptyPrerenderLinkManager());
982 EXPECT_TRUE(first_prerender_contents->prerendering_has_been_cancelled()); 965 EXPECT_TRUE(first_prerender_contents->prerendering_has_been_cancelled());
983 DummyPrerenderContents* null = NULL; 966 DummyPrerenderContents* null = NULL;
984 ASSERT_EQ(null, prerender_manager()->GetEntry(url)); 967 ASSERT_EQ(null, prerender_manager()->GetEntry(url));
985 DummyPrerenderContents* second_prerender_contents = 968 DummyPrerenderContents* second_prerender_contents =
986 prerender_manager()->CreateNextPrerenderContents( 969 prerender_manager()->CreateNextPrerenderContents(
987 url, FINAL_STATUS_USED); 970 url, FINAL_STATUS_USED);
988 EXPECT_TRUE(AddSimplePrerender(url)); 971 EXPECT_TRUE(AddSimplePrerender(url));
989 EXPECT_TRUE(second_prerender_contents->prerendering_has_started()); 972 EXPECT_TRUE(second_prerender_contents->prerendering_has_started());
990 ASSERT_EQ(second_prerender_contents, prerender_manager()->GetEntry(url)); 973 ASSERT_EQ(second_prerender_contents, prerender_manager()->GetEntry(url));
991 EXPECT_FALSE(IsEmptyPrerenderLinkManager()); 974 EXPECT_FALSE(IsEmptyPrerenderLinkManager());
992 } 975 }
993 976
994 } // namespace prerender 977 } // namespace prerender
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698