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

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

Issue 2304953002: NoState Prefetch: nostate prefetch browser tests. (Closed)
Patch Set: Remove injection at factory Created 4 years, 2 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
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 <stddef.h> 5 #include <stddef.h>
6 #include <stdint.h> 6 #include <stdint.h>
7 7
8 #include <map> 8 #include <map>
9 #include <utility> 9 #include <utility>
10 10
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after
92 int DummyPrerenderContents::g_next_route_id_ = 0; 92 int DummyPrerenderContents::g_next_route_id_ = 0;
93 93
94 const gfx::Size kSize(640, 480); 94 const gfx::Size kSize(640, 480);
95 95
96 const uint32_t kDefaultRelTypes = PrerenderRelTypePrerender; 96 const uint32_t kDefaultRelTypes = PrerenderRelTypePrerender;
97 97
98 } // namespace 98 } // namespace
99 99
100 class UnitTestPrerenderManager : public PrerenderManager { 100 class UnitTestPrerenderManager : public PrerenderManager {
101 public: 101 public:
102 class UnittestTime : public TimeOverride {
pasko 2016/10/05 12:35:25 Compared to the other TimeOverride this one only a
mattcary 2016/10/10 11:54:43 I think the use of time in prerender_browsertest.c
pasko 2016/10/10 12:40:20 That does not look dangerous to me. TimeTicks and
mattcary 2016/10/10 13:56:08 Discussed offline, added todo & task to use Simple
103 public:
104 UnittestTime() : time_(Time::Now()), time_ticks_(TimeTicks::Now()) {}
105
106 base::Time GetCurrentTime() const override { return time_; }
107 base::TimeTicks GetCurrentTimeTicks() const override { return time_ticks_; }
108
109 bool SetTime(const std::string& time_string) {
110 return base::Time::FromString(time_string.c_str(), &time_);
111 }
112
113 void AdvanceTime(TimeDelta delta) { time_ += delta; }
114
115 void AdvanceTimeTicks(TimeDelta delta) { time_ticks_ += delta; }
116
117 private:
118 base::Time time_;
119 base::TimeTicks time_ticks_;
120 };
121
102 using PrerenderManager::kMinTimeBetweenPrerendersMs; 122 using PrerenderManager::kMinTimeBetweenPrerendersMs;
103 using PrerenderManager::kNavigationRecordWindowMs; 123 using PrerenderManager::kNavigationRecordWindowMs;
104 124
105 explicit UnitTestPrerenderManager(Profile* profile) 125 explicit UnitTestPrerenderManager(Profile* profile)
106 : PrerenderManager(profile), 126 : PrerenderManager(profile) {
107 time_(Time::Now()),
108 time_ticks_(TimeTicks::Now()) {
109 set_rate_limit_enabled(false); 127 set_rate_limit_enabled(false);
128 std::unique_ptr<UnittestTime> unittest_time =
129 base::MakeUnique<UnittestTime>();
130 unittest_time_ptr_ = unittest_time.get();
131 SetTimeOverride(std::move(unittest_time));
110 } 132 }
111 133
112 ~UnitTestPrerenderManager() override {} 134 ~UnitTestPrerenderManager() override {}
113 135
114 // From KeyedService, via PrererenderManager: 136 // From KeyedService, via PrererenderManager:
115 void Shutdown() override { 137 void Shutdown() override {
116 if (next_prerender_contents()) 138 if (next_prerender_contents())
117 next_prerender_contents_->Destroy(FINAL_STATUS_MANAGER_SHUTDOWN); 139 next_prerender_contents_->Destroy(FINAL_STATUS_MANAGER_SHUTDOWN);
118 PrerenderManager::Shutdown(); 140 PrerenderManager::Shutdown();
119 } 141 }
(...skipping 21 matching lines...) Expand all
141 FindIteratorForPrerenderContents(prerender_data->contents()); 163 FindIteratorForPrerenderContents(prerender_data->contents());
142 CHECK(to_erase != active_prerenders_.end()); 164 CHECK(to_erase != active_prerenders_.end());
143 std::unique_ptr<PrerenderContents> prerender_contents = 165 std::unique_ptr<PrerenderContents> prerender_contents =
144 prerender_data->ReleaseContents(); 166 prerender_data->ReleaseContents();
145 active_prerenders_.erase(to_erase); 167 active_prerenders_.erase(to_erase);
146 168
147 prerender_contents->PrepareForUse(); 169 prerender_contents->PrepareForUse();
148 return prerender_contents; 170 return prerender_contents;
149 } 171 }
150 172
151 bool SetTime(const std::string& time_string) {
152 return base::Time::FromString(time_string.c_str(), &time_);
153 }
154
155 void AdvanceTime(TimeDelta delta) {
156 time_ += delta;
157 }
158
159 void AdvanceTimeTicks(TimeDelta delta) {
160 time_ticks_ += delta;
161 }
162
163 DummyPrerenderContents* CreateNextPrerenderContents( 173 DummyPrerenderContents* CreateNextPrerenderContents(
164 const GURL& url, 174 const GURL& url,
165 FinalStatus expected_final_status) { 175 FinalStatus expected_final_status) {
166 return SetNextPrerenderContents(base::MakeUnique<DummyPrerenderContents>( 176 return SetNextPrerenderContents(base::MakeUnique<DummyPrerenderContents>(
167 this, url, ORIGIN_LINK_REL_PRERENDER_CROSSDOMAIN, 177 this, url, ORIGIN_LINK_REL_PRERENDER_CROSSDOMAIN,
168 expected_final_status)); 178 expected_final_status));
169 } 179 }
170 180
171 DummyPrerenderContents* CreateNextPrerenderContents( 181 DummyPrerenderContents* CreateNextPrerenderContents(
172 const GURL& url, 182 const GURL& url,
(...skipping 16 matching lines...) Expand all
189 } 199 }
190 200
191 void set_rate_limit_enabled(bool enabled) { 201 void set_rate_limit_enabled(bool enabled) {
192 mutable_config().rate_limit_enabled = enabled; 202 mutable_config().rate_limit_enabled = enabled;
193 } 203 }
194 204
195 PrerenderContents* next_prerender_contents() { 205 PrerenderContents* next_prerender_contents() {
196 return next_prerender_contents_.get(); 206 return next_prerender_contents_.get();
197 } 207 }
198 208
199 // from PrerenderManager
200 Time GetCurrentTime() const override { return time_; }
201
202 TimeTicks GetCurrentTimeTicks() const override { return time_ticks_; }
203
204 PrerenderContents* GetPrerenderContentsForRoute(int child_id, 209 PrerenderContents* GetPrerenderContentsForRoute(int child_id,
205 int route_id) const override { 210 int route_id) const override {
206 // Overridden for the PrerenderLinkManager's pending prerender logic. 211 // Overridden for the PrerenderLinkManager's pending prerender logic.
207 PrerenderContentsMap::const_iterator it = 212 PrerenderContentsMap::const_iterator it =
208 prerender_contents_map_.find(std::make_pair(child_id, route_id)); 213 prerender_contents_map_.find(std::make_pair(child_id, route_id));
209 return it != prerender_contents_map_.end() ? it->second : nullptr; 214 return it != prerender_contents_map_.end() ? it->second : nullptr;
210 } 215 }
211 216
212 void DummyPrerenderContentsStarted(int child_id, 217 void DummyPrerenderContentsStarted(int child_id,
213 int route_id, 218 int route_id,
214 PrerenderContents* prerender_contents) { 219 PrerenderContents* prerender_contents) {
215 prerender_contents_map_[std::make_pair(child_id, route_id)] = 220 prerender_contents_map_[std::make_pair(child_id, route_id)] =
216 prerender_contents; 221 prerender_contents;
217 } 222 }
218 223
219 void DummyPrerenderContentsDestroyed(int child_id, 224 void DummyPrerenderContentsDestroyed(int child_id,
220 int route_id) { 225 int route_id) {
221 prerender_contents_map_.erase(std::make_pair(child_id, route_id)); 226 prerender_contents_map_.erase(std::make_pair(child_id, route_id));
222 } 227 }
223 228
224 void SetIsLowEndDevice(bool is_low_end_device) { 229 void SetIsLowEndDevice(bool is_low_end_device) {
225 is_low_end_device_ = is_low_end_device; 230 is_low_end_device_ = is_low_end_device;
226 } 231 }
227 232
233 UnittestTime* unittest_time() const { return unittest_time_ptr_; }
234
228 private: 235 private:
229 bool IsLowEndDevice() const override { return is_low_end_device_; } 236 bool IsLowEndDevice() const override { return is_low_end_device_; }
230 237
231 DummyPrerenderContents* SetNextPrerenderContents( 238 DummyPrerenderContents* SetNextPrerenderContents(
232 std::unique_ptr<DummyPrerenderContents> prerender_contents) { 239 std::unique_ptr<DummyPrerenderContents> prerender_contents) {
233 CHECK(!next_prerender_contents_); 240 CHECK(!next_prerender_contents_);
234 DummyPrerenderContents* contents_ptr = prerender_contents.get(); 241 DummyPrerenderContents* contents_ptr = prerender_contents.get();
235 next_prerender_contents_ = std::move(prerender_contents); 242 next_prerender_contents_ = std::move(prerender_contents);
236 return contents_ptr; 243 return contents_ptr;
237 } 244 }
238 245
239 std::unique_ptr<PrerenderContents> CreatePrerenderContents( 246 std::unique_ptr<PrerenderContents> CreatePrerenderContents(
240 const GURL& url, 247 const GURL& url,
241 const Referrer& referrer, 248 const Referrer& referrer,
242 Origin origin) override { 249 Origin origin) override {
243 CHECK(next_prerender_contents_); 250 CHECK(next_prerender_contents_);
244 EXPECT_EQ(url, next_prerender_contents_->prerender_url()); 251 EXPECT_EQ(url, next_prerender_contents_->prerender_url());
245 EXPECT_EQ(origin, next_prerender_contents_->origin()); 252 EXPECT_EQ(origin, next_prerender_contents_->origin());
246 return std::move(next_prerender_contents_); 253 return std::move(next_prerender_contents_);
247 } 254 }
248 255
249 // Maintain a map from route pairs to PrerenderContents for 256 // Maintain a map from route pairs to PrerenderContents for
250 // GetPrerenderContentsForRoute. 257 // GetPrerenderContentsForRoute.
251 using PrerenderContentsMap = 258 using PrerenderContentsMap =
252 std::map<std::pair<int, int>, PrerenderContents*>; 259 std::map<std::pair<int, int>, PrerenderContents*>;
253 PrerenderContentsMap prerender_contents_map_; 260 PrerenderContentsMap prerender_contents_map_;
254 261
255 Time time_; 262 UnittestTime* unittest_time_ptr_;
256 TimeTicks time_ticks_;
257 std::unique_ptr<PrerenderContents> next_prerender_contents_; 263 std::unique_ptr<PrerenderContents> next_prerender_contents_;
258 bool is_low_end_device_; 264 bool is_low_end_device_;
259 }; 265 };
260 266
261 class RestorePrerenderMode { 267 class RestorePrerenderMode {
262 public: 268 public:
263 RestorePrerenderMode() : prev_mode_(PrerenderManager::GetMode()) { 269 RestorePrerenderMode() : prev_mode_(PrerenderManager::GetMode()) {
264 } 270 }
265 271
266 ~RestorePrerenderMode() { PrerenderManager::SetMode(prev_mode_); } 272 ~RestorePrerenderMode() { PrerenderManager::SetMode(prev_mode_); }
(...skipping 264 matching lines...) Expand 10 before | Expand all | Expand 10 after
531 // Ensure that we expire a prerendered page after the max. permitted time. 537 // Ensure that we expire a prerendered page after the max. permitted time.
532 TEST_F(PrerenderTest, ExpireTest) { 538 TEST_F(PrerenderTest, ExpireTest) {
533 GURL url("http://www.google.com/"); 539 GURL url("http://www.google.com/");
534 DummyPrerenderContents* prerender_contents = 540 DummyPrerenderContents* prerender_contents =
535 prerender_manager()->CreateNextPrerenderContents( 541 prerender_manager()->CreateNextPrerenderContents(
536 url, 542 url,
537 FINAL_STATUS_TIMED_OUT); 543 FINAL_STATUS_TIMED_OUT);
538 EXPECT_TRUE(AddSimplePrerender(url)); 544 EXPECT_TRUE(AddSimplePrerender(url));
539 EXPECT_FALSE(prerender_manager()->next_prerender_contents()); 545 EXPECT_FALSE(prerender_manager()->next_prerender_contents());
540 EXPECT_TRUE(prerender_contents->prerendering_has_started()); 546 EXPECT_TRUE(prerender_contents->prerendering_has_started());
541 prerender_manager()->AdvanceTimeTicks( 547 prerender_manager()->unittest_time()->AdvanceTimeTicks(
542 prerender_manager()->config().time_to_live + TimeDelta::FromSeconds(1)); 548 prerender_manager()->config().time_to_live + TimeDelta::FromSeconds(1));
543 ASSERT_FALSE(prerender_manager()->FindEntry(url)); 549 ASSERT_FALSE(prerender_manager()->FindEntry(url));
544 } 550 }
545 551
546 // Ensure that we don't launch prerenders of bad urls (in this case, a mailto: 552 // Ensure that we don't launch prerenders of bad urls (in this case, a mailto:
547 // url) 553 // url)
548 TEST_F(PrerenderTest, BadURLTest) { 554 TEST_F(PrerenderTest, BadURLTest) {
549 GURL url("mailto:test@gmail.com"); 555 GURL url("mailto:test@gmail.com");
550 DummyPrerenderContents* prerender_contents = 556 DummyPrerenderContents* prerender_contents =
551 prerender_manager()->CreateNextPrerenderContents( 557 prerender_manager()->CreateNextPrerenderContents(
(...skipping 23 matching lines...) Expand all
575 prerender_manager()->CreateNextPrerenderContents(url, 581 prerender_manager()->CreateNextPrerenderContents(url,
576 FINAL_STATUS_TIMED_OUT); 582 FINAL_STATUS_TIMED_OUT);
577 EXPECT_TRUE(AddSimplePrerender(url)); 583 EXPECT_TRUE(AddSimplePrerender(url));
578 EXPECT_TRUE(prerender_contents->prerendering_has_started()); 584 EXPECT_TRUE(prerender_contents->prerendering_has_started());
579 EXPECT_FALSE(prerender_contents->prerendering_has_been_cancelled()); 585 EXPECT_FALSE(prerender_contents->prerendering_has_been_cancelled());
580 ASSERT_EQ(prerender_contents, prerender_manager()->FindEntry(url)); 586 ASSERT_EQ(prerender_contents, prerender_manager()->FindEntry(url));
581 prerender_link_manager()->OnAbandonPrerender(kDefaultChildId, 587 prerender_link_manager()->OnAbandonPrerender(kDefaultChildId,
582 last_prerender_id()); 588 last_prerender_id());
583 EXPECT_EQ(prerender_contents, prerender_manager()->FindEntry(url)); 589 EXPECT_EQ(prerender_contents, prerender_manager()->FindEntry(url));
584 EXPECT_FALSE(prerender_manager()->next_prerender_contents()); 590 EXPECT_FALSE(prerender_manager()->next_prerender_contents());
585 prerender_manager()->AdvanceTimeTicks(test_advance); 591 prerender_manager()->unittest_time()->AdvanceTimeTicks(test_advance);
586 592
587 EXPECT_FALSE(prerender_manager()->FindEntry(url)); 593 EXPECT_FALSE(prerender_manager()->FindEntry(url));
588 } 594 }
589 595
590 // But when we navigate away very close to the original expiry of a prerender, 596 // But when we navigate away very close to the original expiry of a prerender,
591 // we shouldn't expect it to be extended. 597 // we shouldn't expect it to be extended.
592 TEST_F(PrerenderTest, LinkManagerNavigateAwayNearExpiry) { 598 TEST_F(PrerenderTest, LinkManagerNavigateAwayNearExpiry) {
593 const TimeDelta time_to_live = TimeDelta::FromSeconds(300); 599 const TimeDelta time_to_live = TimeDelta::FromSeconds(300);
594 const TimeDelta abandon_time_to_live = TimeDelta::FromSeconds(20); 600 const TimeDelta abandon_time_to_live = TimeDelta::FromSeconds(20);
595 601
(...skipping 13 matching lines...) Expand all
609 615
610 GURL url("http://example2.com"); 616 GURL url("http://example2.com");
611 DummyPrerenderContents* prerender_contents = 617 DummyPrerenderContents* prerender_contents =
612 prerender_manager()->CreateNextPrerenderContents(url, 618 prerender_manager()->CreateNextPrerenderContents(url,
613 FINAL_STATUS_TIMED_OUT); 619 FINAL_STATUS_TIMED_OUT);
614 EXPECT_TRUE(AddSimplePrerender(url)); 620 EXPECT_TRUE(AddSimplePrerender(url));
615 EXPECT_TRUE(prerender_contents->prerendering_has_started()); 621 EXPECT_TRUE(prerender_contents->prerendering_has_started());
616 EXPECT_FALSE(prerender_contents->prerendering_has_been_cancelled()); 622 EXPECT_FALSE(prerender_contents->prerendering_has_been_cancelled());
617 ASSERT_EQ(prerender_contents, prerender_manager()->FindEntry(url)); 623 ASSERT_EQ(prerender_contents, prerender_manager()->FindEntry(url));
618 624
619 prerender_manager()->AdvanceTimeTicks(first_advance); 625 prerender_manager()->unittest_time()->AdvanceTimeTicks(first_advance);
620 EXPECT_EQ(prerender_contents, prerender_manager()->FindEntry(url)); 626 EXPECT_EQ(prerender_contents, prerender_manager()->FindEntry(url));
621 627
622 prerender_link_manager()->OnAbandonPrerender(kDefaultChildId, 628 prerender_link_manager()->OnAbandonPrerender(kDefaultChildId,
623 last_prerender_id()); 629 last_prerender_id());
624 EXPECT_EQ(prerender_contents, prerender_manager()->FindEntry(url)); 630 EXPECT_EQ(prerender_contents, prerender_manager()->FindEntry(url));
625 631
626 EXPECT_FALSE(prerender_manager()->next_prerender_contents()); 632 EXPECT_FALSE(prerender_manager()->next_prerender_contents());
627 633
628 prerender_manager()->AdvanceTimeTicks(second_advance); 634 prerender_manager()->unittest_time()->AdvanceTimeTicks(second_advance);
629 EXPECT_FALSE(prerender_manager()->FindEntry(url)); 635 EXPECT_FALSE(prerender_manager()->FindEntry(url));
630 } 636 }
631 637
632 // When the user navigates away from a page, and then launches a new prerender, 638 // When the user navigates away from a page, and then launches a new prerender,
633 // the new prerender should preempt the abandoned prerender even if the 639 // the new prerender should preempt the abandoned prerender even if the
634 // abandoned prerender hasn't expired. 640 // abandoned prerender hasn't expired.
635 TEST_F(PrerenderTest, LinkManagerNavigateAwayLaunchAnother) { 641 TEST_F(PrerenderTest, LinkManagerNavigateAwayLaunchAnother) {
636 const TimeDelta time_to_live = TimeDelta::FromSeconds(300); 642 const TimeDelta time_to_live = TimeDelta::FromSeconds(300);
637 const TimeDelta abandon_time_to_live = TimeDelta::FromSeconds(20); 643 const TimeDelta abandon_time_to_live = TimeDelta::FromSeconds(20);
638 const TimeDelta test_advance = TimeDelta::FromSeconds(5); 644 const TimeDelta test_advance = TimeDelta::FromSeconds(5);
639 ASSERT_LT(test_advance, time_to_live); 645 ASSERT_LT(test_advance, time_to_live);
640 ASSERT_GT(abandon_time_to_live, test_advance); 646 ASSERT_GT(abandon_time_to_live, test_advance);
641 647
642 prerender_manager()->mutable_config().time_to_live = time_to_live; 648 prerender_manager()->mutable_config().time_to_live = time_to_live;
643 prerender_manager()->mutable_config().abandon_time_to_live = 649 prerender_manager()->mutable_config().abandon_time_to_live =
644 abandon_time_to_live; 650 abandon_time_to_live;
645 651
646 GURL url("http://example.com"); 652 GURL url("http://example.com");
647 prerender_manager()->CreateNextPrerenderContents(url, FINAL_STATUS_CANCELLED); 653 prerender_manager()->CreateNextPrerenderContents(url, FINAL_STATUS_CANCELLED);
648 EXPECT_TRUE(AddSimplePrerender(url)); 654 EXPECT_TRUE(AddSimplePrerender(url));
649 prerender_link_manager()->OnAbandonPrerender(kDefaultChildId, 655 prerender_link_manager()->OnAbandonPrerender(kDefaultChildId,
650 last_prerender_id()); 656 last_prerender_id());
651 657
652 prerender_manager()->AdvanceTimeTicks(test_advance); 658 prerender_manager()->unittest_time()->AdvanceTimeTicks(test_advance);
653 659
654 GURL second_url("http://example2.com"); 660 GURL second_url("http://example2.com");
655 DummyPrerenderContents* second_prerender_contents = 661 DummyPrerenderContents* second_prerender_contents =
656 prerender_manager()->CreateNextPrerenderContents( 662 prerender_manager()->CreateNextPrerenderContents(
657 second_url, FINAL_STATUS_MANAGER_SHUTDOWN); 663 second_url, FINAL_STATUS_MANAGER_SHUTDOWN);
658 EXPECT_TRUE(AddSimplePrerender(second_url)); 664 EXPECT_TRUE(AddSimplePrerender(second_url));
659 EXPECT_EQ(second_prerender_contents, 665 EXPECT_EQ(second_prerender_contents,
660 prerender_manager()->FindEntry(second_url)); 666 prerender_manager()->FindEntry(second_url));
661 } 667 }
662 668
(...skipping 311 matching lines...) Expand 10 before | Expand all | Expand 10 after
974 prerender_manager()->CreateNextPrerenderContents( 980 prerender_manager()->CreateNextPrerenderContents(
975 url, FINAL_STATUS_RECENTLY_VISITED); 981 url, FINAL_STATUS_RECENTLY_VISITED);
976 EXPECT_FALSE(AddSimplePrerender(url)); 982 EXPECT_FALSE(AddSimplePrerender(url));
977 EXPECT_FALSE(prerender_contents->prerendering_has_started()); 983 EXPECT_FALSE(prerender_contents->prerendering_has_started());
978 } 984 }
979 985
980 TEST_F(PrerenderTest, NotSoRecentlyVisited) { 986 TEST_F(PrerenderTest, NotSoRecentlyVisited) {
981 GURL url("http://www.google.com/"); 987 GURL url("http://www.google.com/");
982 988
983 prerender_manager()->RecordNavigation(url); 989 prerender_manager()->RecordNavigation(url);
984 prerender_manager()->AdvanceTimeTicks( 990 prerender_manager()->unittest_time()->AdvanceTimeTicks(
985 TimeDelta::FromMilliseconds( 991 TimeDelta::FromMilliseconds(
986 UnitTestPrerenderManager::kNavigationRecordWindowMs + 500)); 992 UnitTestPrerenderManager::kNavigationRecordWindowMs + 500));
987 993
988 DummyPrerenderContents* prerender_contents = 994 DummyPrerenderContents* prerender_contents =
989 prerender_manager()->CreateNextPrerenderContents( 995 prerender_manager()->CreateNextPrerenderContents(
990 url, FINAL_STATUS_USED); 996 url, FINAL_STATUS_USED);
991 EXPECT_TRUE(AddSimplePrerender(url)); 997 EXPECT_TRUE(AddSimplePrerender(url));
992 EXPECT_TRUE(prerender_contents->prerendering_has_started()); 998 EXPECT_TRUE(prerender_contents->prerendering_has_started());
993 std::unique_ptr<PrerenderContents> entry = 999 std::unique_ptr<PrerenderContents> entry =
994 prerender_manager()->FindAndUseEntry(url); 1000 prerender_manager()->FindAndUseEntry(url);
(...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after
1107 EXPECT_FALSE(prerender_handle); 1113 EXPECT_FALSE(prerender_handle);
1108 EXPECT_FALSE(prerender_contents->prerendering_has_started()); 1114 EXPECT_FALSE(prerender_contents->prerendering_has_started());
1109 } 1115 }
1110 1116
1111 // Checks that the "PrerenderSilence experiment does not disable offline 1117 // Checks that the "PrerenderSilence experiment does not disable offline
1112 // prerendering. 1118 // prerendering.
1113 TEST_F(PrerenderTest, PrerenderSilenceAllowsOffline) { 1119 TEST_F(PrerenderTest, PrerenderSilenceAllowsOffline) {
1114 // Set the time to 30 seconds before the experiment expires. 1120 // Set the time to 30 seconds before the experiment expires.
1115 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial( 1121 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial(
1116 "PrerenderSilence", "ExperimentYes_expires_2016-12-20T00:01:00Z")); 1122 "PrerenderSilence", "ExperimentYes_expires_2016-12-20T00:01:00Z"));
1117 ASSERT_TRUE(prerender_manager()->SetTime("2016-12-20T00:00:30Z")); 1123 ASSERT_TRUE(
1124 prerender_manager()->unittest_time()->SetTime("2016-12-20T00:00:30Z"));
1118 GURL url("http://www.google.com/"); 1125 GURL url("http://www.google.com/");
1119 DummyPrerenderContents* prerender_contents = 1126 DummyPrerenderContents* prerender_contents =
1120 prerender_manager()->CreateNextPrerenderContents( 1127 prerender_manager()->CreateNextPrerenderContents(
1121 url, ORIGIN_OFFLINE, FINAL_STATUS_MANAGER_SHUTDOWN); 1128 url, ORIGIN_OFFLINE, FINAL_STATUS_MANAGER_SHUTDOWN);
1122 std::unique_ptr<PrerenderHandle> prerender_handle = 1129 std::unique_ptr<PrerenderHandle> prerender_handle =
1123 prerender_manager()->AddPrerenderForOffline(url, nullptr, kSize); 1130 prerender_manager()->AddPrerenderForOffline(url, nullptr, kSize);
1124 EXPECT_TRUE(prerender_handle); 1131 EXPECT_TRUE(prerender_handle);
1125 EXPECT_TRUE(prerender_handle->IsPrerendering()); 1132 EXPECT_TRUE(prerender_handle->IsPrerendering());
1126 EXPECT_TRUE(prerender_contents->prerendering_has_started()); 1133 EXPECT_TRUE(prerender_contents->prerendering_has_started());
1127 EXPECT_EQ(prerender_contents, prerender_handle->contents()); 1134 EXPECT_EQ(prerender_contents, prerender_handle->contents());
1128 EXPECT_EQ(ORIGIN_OFFLINE, prerender_handle->contents()->origin()); 1135 EXPECT_EQ(ORIGIN_OFFLINE, prerender_handle->contents()->origin());
1129 } 1136 }
1130 1137
1131 // Checks that the "PrerenderSilence" experiment disables prerendering. 1138 // Checks that the "PrerenderSilence" experiment disables prerendering.
1132 TEST_F(PrerenderTest, PrerenderSilenceDisallowsNonOffline) { 1139 TEST_F(PrerenderTest, PrerenderSilenceDisallowsNonOffline) {
1133 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial( 1140 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial(
1134 "PrerenderSilence", "ExperimentYes_expires_2016-12-20T00:02:00Z")); 1141 "PrerenderSilence", "ExperimentYes_expires_2016-12-20T00:02:00Z"));
1135 const Origin origins[] = { 1142 const Origin origins[] = {
1136 ORIGIN_GWS_PRERENDER, 1143 ORIGIN_GWS_PRERENDER,
1137 ORIGIN_OMNIBOX, 1144 ORIGIN_OMNIBOX,
1138 ORIGIN_NONE, 1145 ORIGIN_NONE,
1139 ORIGIN_LINK_REL_PRERENDER_SAMEDOMAIN, 1146 ORIGIN_LINK_REL_PRERENDER_SAMEDOMAIN,
1140 ORIGIN_LINK_REL_PRERENDER_CROSSDOMAIN, 1147 ORIGIN_LINK_REL_PRERENDER_CROSSDOMAIN,
1141 ORIGIN_EXTERNAL_REQUEST, 1148 ORIGIN_EXTERNAL_REQUEST,
1142 ORIGIN_INSTANT, 1149 ORIGIN_INSTANT,
1143 ORIGIN_LINK_REL_NEXT, 1150 ORIGIN_LINK_REL_NEXT,
1144 ORIGIN_EXTERNAL_REQUEST_FORCED_CELLULAR, 1151 ORIGIN_EXTERNAL_REQUEST_FORCED_CELLULAR,
1145 }; 1152 };
1146 ASSERT_TRUE(prerender_manager()->SetTime("2016-12-20T00:01:00Z")); 1153 ASSERT_TRUE(
1154 prerender_manager()->unittest_time()->SetTime("2016-12-20T00:01:00Z"));
1147 for (const Origin& origin : origins) { 1155 for (const Origin& origin : origins) {
1148 EXPECT_TRUE( 1156 EXPECT_TRUE(
1149 prerender_manager()->IsPrerenderSilenceExperimentForTesting(origin)); 1157 prerender_manager()->IsPrerenderSilenceExperimentForTesting(origin));
1150 } 1158 }
1151 } 1159 }
1152 1160
1153 // Checks that prerendering is enabled after expiration of the 1161 // Checks that prerendering is enabled after expiration of the
1154 // "PrerenderSilence" experiment. 1162 // "PrerenderSilence" experiment.
1155 TEST_F(PrerenderTest, PrerenderSilenceAllowsAfterExpiration) { 1163 TEST_F(PrerenderTest, PrerenderSilenceAllowsAfterExpiration) {
1156 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial( 1164 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial(
1157 "PrerenderSilence", "ExperimentYes_expires_2016-12-20T00:02:00Z")); 1165 "PrerenderSilence", "ExperimentYes_expires_2016-12-20T00:02:00Z"));
1158 GURL url("http://www.google.com/"); 1166 GURL url("http://www.google.com/");
1159 ASSERT_TRUE(prerender_manager()->SetTime("2016-12-20T00:01:00Z")); 1167 ASSERT_TRUE(
1160 prerender_manager()->AdvanceTime(TimeDelta::FromSeconds(60)); 1168 prerender_manager()->unittest_time()->SetTime("2016-12-20T00:01:00Z"));
1169 prerender_manager()->unittest_time()->AdvanceTime(TimeDelta::FromSeconds(60));
1161 DummyPrerenderContents* prerender_contents = 1170 DummyPrerenderContents* prerender_contents =
1162 prerender_manager()->CreateNextPrerenderContents(url, FINAL_STATUS_USED); 1171 prerender_manager()->CreateNextPrerenderContents(url, FINAL_STATUS_USED);
1163 EXPECT_TRUE(AddSimplePrerender(url)); 1172 EXPECT_TRUE(AddSimplePrerender(url));
1164 EXPECT_TRUE(prerender_contents->prerendering_has_started()); 1173 EXPECT_TRUE(prerender_contents->prerendering_has_started());
1165 std::unique_ptr<PrerenderContents> entry = 1174 std::unique_ptr<PrerenderContents> entry =
1166 prerender_manager()->FindAndUseEntry(url); 1175 prerender_manager()->FindAndUseEntry(url);
1167 ASSERT_EQ(prerender_contents, entry.get()); 1176 ASSERT_EQ(prerender_contents, entry.get());
1168 } 1177 }
1169 1178
1170 TEST_F(PrerenderTest, PrerenderAllowedForOfflineAndForcedCellular) { 1179 TEST_F(PrerenderTest, PrerenderAllowedForOfflineAndForcedCellular) {
(...skipping 274 matching lines...) Expand 10 before | Expand all | Expand 10 after
1445 GURL url("http://www.myexample.com"); 1454 GURL url("http://www.myexample.com");
1446 DummyPrerenderContents* prerender_contents = 1455 DummyPrerenderContents* prerender_contents =
1447 prerender_manager()->CreateNextPrerenderContents( 1456 prerender_manager()->CreateNextPrerenderContents(
1448 url, FINAL_STATUS_TIMED_OUT); 1457 url, FINAL_STATUS_TIMED_OUT);
1449 1458
1450 EXPECT_TRUE(AddSimplePrerender(url)); 1459 EXPECT_TRUE(AddSimplePrerender(url));
1451 1460
1452 EXPECT_TRUE(prerender_contents->prerendering_has_started()); 1461 EXPECT_TRUE(prerender_contents->prerendering_has_started());
1453 EXPECT_FALSE(prerender_contents->prerendering_has_been_cancelled()); 1462 EXPECT_FALSE(prerender_contents->prerendering_has_been_cancelled());
1454 ASSERT_EQ(prerender_contents, prerender_manager()->FindEntry(url)); 1463 ASSERT_EQ(prerender_contents, prerender_manager()->FindEntry(url));
1455 prerender_manager()->AdvanceTimeTicks( 1464 prerender_manager()->unittest_time()->AdvanceTimeTicks(
1456 prerender_manager()->config().time_to_live + TimeDelta::FromSeconds(1)); 1465 prerender_manager()->config().time_to_live + TimeDelta::FromSeconds(1));
1457 1466
1458 EXPECT_FALSE(IsEmptyPrerenderLinkManager()); 1467 EXPECT_FALSE(IsEmptyPrerenderLinkManager());
1459 ASSERT_FALSE(prerender_manager()->FindEntry(url)); 1468 ASSERT_FALSE(prerender_manager()->FindEntry(url));
1460 prerender_link_manager()->OnCancelPrerender(kDefaultChildId, 1469 prerender_link_manager()->OnCancelPrerender(kDefaultChildId,
1461 last_prerender_id()); 1470 last_prerender_id());
1462 1471
1463 EXPECT_TRUE(IsEmptyPrerenderLinkManager()); 1472 EXPECT_TRUE(IsEmptyPrerenderLinkManager());
1464 ASSERT_FALSE(prerender_manager()->FindEntry(url)); 1473 ASSERT_FALSE(prerender_manager()->FindEntry(url));
1465 } 1474 }
1466 1475
1467 TEST_F(PrerenderTest, LinkManagerExpireThenAddAgain) { 1476 TEST_F(PrerenderTest, LinkManagerExpireThenAddAgain) {
1468 EXPECT_TRUE(IsEmptyPrerenderLinkManager()); 1477 EXPECT_TRUE(IsEmptyPrerenderLinkManager());
1469 GURL url("http://www.myexample.com"); 1478 GURL url("http://www.myexample.com");
1470 DummyPrerenderContents* first_prerender_contents = 1479 DummyPrerenderContents* first_prerender_contents =
1471 prerender_manager()->CreateNextPrerenderContents( 1480 prerender_manager()->CreateNextPrerenderContents(
1472 url, FINAL_STATUS_TIMED_OUT); 1481 url, FINAL_STATUS_TIMED_OUT);
1473 EXPECT_TRUE(AddSimplePrerender(url)); 1482 EXPECT_TRUE(AddSimplePrerender(url));
1474 EXPECT_TRUE(first_prerender_contents->prerendering_has_started()); 1483 EXPECT_TRUE(first_prerender_contents->prerendering_has_started());
1475 EXPECT_FALSE(first_prerender_contents->prerendering_has_been_cancelled()); 1484 EXPECT_FALSE(first_prerender_contents->prerendering_has_been_cancelled());
1476 ASSERT_EQ(first_prerender_contents, 1485 ASSERT_EQ(first_prerender_contents,
1477 prerender_manager()->FindEntry(url)); 1486 prerender_manager()->FindEntry(url));
1478 prerender_manager()->AdvanceTimeTicks( 1487 prerender_manager()->unittest_time()->AdvanceTimeTicks(
1479 prerender_manager()->config().time_to_live + TimeDelta::FromSeconds(1)); 1488 prerender_manager()->config().time_to_live + TimeDelta::FromSeconds(1));
1480 ASSERT_FALSE(prerender_manager()->FindEntry(url)); 1489 ASSERT_FALSE(prerender_manager()->FindEntry(url));
1481 DummyPrerenderContents* second_prerender_contents = 1490 DummyPrerenderContents* second_prerender_contents =
1482 prerender_manager()->CreateNextPrerenderContents( 1491 prerender_manager()->CreateNextPrerenderContents(
1483 url, FINAL_STATUS_USED); 1492 url, FINAL_STATUS_USED);
1484 EXPECT_TRUE(AddSimplePrerender(url)); 1493 EXPECT_TRUE(AddSimplePrerender(url));
1485 EXPECT_TRUE(second_prerender_contents->prerendering_has_started()); 1494 EXPECT_TRUE(second_prerender_contents->prerendering_has_started());
1486 std::unique_ptr<PrerenderContents> entry = 1495 std::unique_ptr<PrerenderContents> entry =
1487 prerender_manager()->FindAndUseEntry(url); 1496 prerender_manager()->FindAndUseEntry(url);
1488 ASSERT_EQ(second_prerender_contents, entry.get()); 1497 ASSERT_EQ(second_prerender_contents, entry.get());
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
1520 prerender_manager()->CreateNextPrerenderContents( 1529 prerender_manager()->CreateNextPrerenderContents(
1521 url, FINAL_STATUS_TIMED_OUT); 1530 url, FINAL_STATUS_TIMED_OUT);
1522 1531
1523 EXPECT_TRUE(AddSimplePrerender(url)); 1532 EXPECT_TRUE(AddSimplePrerender(url));
1524 EXPECT_TRUE(prerender_contents->prerendering_has_started()); 1533 EXPECT_TRUE(prerender_contents->prerendering_has_started());
1525 EXPECT_FALSE(prerender_contents->prerendering_has_been_cancelled()); 1534 EXPECT_FALSE(prerender_contents->prerendering_has_been_cancelled());
1526 ASSERT_EQ(prerender_contents, prerender_manager()->FindEntry(url)); 1535 ASSERT_EQ(prerender_contents, prerender_manager()->FindEntry(url));
1527 1536
1528 prerender_link_manager()->OnChannelClosing(kDefaultChildId); 1537 prerender_link_manager()->OnChannelClosing(kDefaultChildId);
1529 1538
1530 prerender_manager()->AdvanceTimeTicks( 1539 prerender_manager()->unittest_time()->AdvanceTimeTicks(
1531 prerender_manager()->config().abandon_time_to_live + 1540 prerender_manager()->config().abandon_time_to_live +
1532 TimeDelta::FromSeconds(1)); 1541 TimeDelta::FromSeconds(1));
1533 1542
1534 EXPECT_FALSE(prerender_manager()->FindEntry(url)); 1543 EXPECT_FALSE(prerender_manager()->FindEntry(url));
1535 EXPECT_TRUE(IsEmptyPrerenderLinkManager()); 1544 EXPECT_TRUE(IsEmptyPrerenderLinkManager());
1536 } 1545 }
1537 1546
1538 // Creates two prerenders, one of which should be blocked by the 1547 // Creates two prerenders, one of which should be blocked by the
1539 // max_link_concurrency; abandons both of them and waits to make sure both 1548 // max_link_concurrency; abandons both of them and waits to make sure both
1540 // are cleared from the PrerenderLinkManager. 1549 // are cleared from the PrerenderLinkManager.
(...skipping 15 matching lines...) Expand all
1556 EXPECT_FALSE(IsEmptyPrerenderLinkManager()); 1565 EXPECT_FALSE(IsEmptyPrerenderLinkManager());
1557 1566
1558 EXPECT_EQ(prerender_contents, prerender_manager()->FindEntry(first_url)); 1567 EXPECT_EQ(prerender_contents, prerender_manager()->FindEntry(first_url));
1559 EXPECT_FALSE(prerender_manager()->FindEntry(second_url)); 1568 EXPECT_FALSE(prerender_manager()->FindEntry(second_url));
1560 1569
1561 prerender_link_manager()->OnAbandonPrerender(kDefaultChildId, 1570 prerender_link_manager()->OnAbandonPrerender(kDefaultChildId,
1562 first_prerender_id); 1571 first_prerender_id);
1563 prerender_link_manager()->OnAbandonPrerender(kDefaultChildId, 1572 prerender_link_manager()->OnAbandonPrerender(kDefaultChildId,
1564 second_prerender_id); 1573 second_prerender_id);
1565 1574
1566 prerender_manager()->AdvanceTimeTicks( 1575 prerender_manager()->unittest_time()->AdvanceTimeTicks(
1567 prerender_manager()->config().abandon_time_to_live + 1576 prerender_manager()->config().abandon_time_to_live +
1568 TimeDelta::FromSeconds(1)); 1577 TimeDelta::FromSeconds(1));
1569 EXPECT_FALSE(prerender_manager()->FindEntry(first_url)); 1578 EXPECT_FALSE(prerender_manager()->FindEntry(first_url));
1570 EXPECT_FALSE(prerender_manager()->FindEntry(second_url)); 1579 EXPECT_FALSE(prerender_manager()->FindEntry(second_url));
1571 EXPECT_TRUE(IsEmptyPrerenderLinkManager()); 1580 EXPECT_TRUE(IsEmptyPrerenderLinkManager());
1572 } 1581 }
1573 1582
1574 // Creates two prerenders, the second one started by the first, both of which 1583 // Creates two prerenders, the second one started by the first, both of which
1575 // should be blocked by max_concurrency; abandons both of them and waits to make 1584 // should be blocked by max_concurrency; abandons both of them and waits to make
1576 // sure both are cleared from the PrerenderLinkManager. 1585 // sure both are cleared from the PrerenderLinkManager.
(...skipping 22 matching lines...) Expand all
1599 EXPECT_FALSE(IsEmptyPrerenderLinkManager()); 1608 EXPECT_FALSE(IsEmptyPrerenderLinkManager());
1600 1609
1601 EXPECT_EQ(prerender_contents, prerender_manager()->FindEntry(first_url)); 1610 EXPECT_EQ(prerender_contents, prerender_manager()->FindEntry(first_url));
1602 EXPECT_FALSE(prerender_manager()->FindEntry(pending_url)); 1611 EXPECT_FALSE(prerender_manager()->FindEntry(pending_url));
1603 1612
1604 prerender_link_manager()->OnAbandonPrerender(kDefaultChildId, 1613 prerender_link_manager()->OnAbandonPrerender(kDefaultChildId,
1605 first_prerender_id); 1614 first_prerender_id);
1606 prerender_link_manager()->OnAbandonPrerender(kDefaultChildId, 1615 prerender_link_manager()->OnAbandonPrerender(kDefaultChildId,
1607 second_prerender_id); 1616 second_prerender_id);
1608 1617
1609 prerender_manager()->AdvanceTimeTicks( 1618 prerender_manager()->unittest_time()->AdvanceTimeTicks(
1610 prerender_manager()->config().abandon_time_to_live + 1619 prerender_manager()->config().abandon_time_to_live +
1611 TimeDelta::FromSeconds(1)); 1620 TimeDelta::FromSeconds(1));
1612 EXPECT_FALSE(prerender_manager()->FindEntry(first_url)); 1621 EXPECT_FALSE(prerender_manager()->FindEntry(first_url));
1613 EXPECT_FALSE(prerender_manager()->FindEntry(pending_url)); 1622 EXPECT_FALSE(prerender_manager()->FindEntry(pending_url));
1614 EXPECT_TRUE(IsEmptyPrerenderLinkManager()); 1623 EXPECT_TRUE(IsEmptyPrerenderLinkManager());
1615 } 1624 }
1616 1625
1617 // Creates two prerenders, one of which should be blocked by the 1626 // Creates two prerenders, one of which should be blocked by the
1618 // max_link_concurrency; uses one after the max wait to launch, and 1627 // max_link_concurrency; uses one after the max wait to launch, and
1619 // ensures the second prerender does not start. 1628 // ensures the second prerender does not start.
1620 TEST_F(PrerenderTest, LinkManagerWaitToLaunchNotLaunched) { 1629 TEST_F(PrerenderTest, LinkManagerWaitToLaunchNotLaunched) {
1621 SetConcurrency(1); 1630 SetConcurrency(1);
1622 ASSERT_LT(prerender_manager()->config().max_wait_to_launch, 1631 ASSERT_LT(prerender_manager()->config().max_wait_to_launch,
1623 prerender_manager()->config().time_to_live); 1632 prerender_manager()->config().time_to_live);
1624 GURL first_url("http://www.myexample.com"); 1633 GURL first_url("http://www.myexample.com");
1625 DummyPrerenderContents* prerender_contents = 1634 DummyPrerenderContents* prerender_contents =
1626 prerender_manager()->CreateNextPrerenderContents( 1635 prerender_manager()->CreateNextPrerenderContents(
1627 first_url, FINAL_STATUS_USED); 1636 first_url, FINAL_STATUS_USED);
1628 EXPECT_TRUE(AddSimplePrerender(first_url)); 1637 EXPECT_TRUE(AddSimplePrerender(first_url));
1629 1638
1630 GURL second_url("http://www.neverlaunched.com"); 1639 GURL second_url("http://www.neverlaunched.com");
1631 EXPECT_FALSE(AddSimplePrerender(second_url)); 1640 EXPECT_FALSE(AddSimplePrerender(second_url));
1632 1641
1633 EXPECT_FALSE(IsEmptyPrerenderLinkManager()); 1642 EXPECT_FALSE(IsEmptyPrerenderLinkManager());
1634 1643
1635 EXPECT_EQ(prerender_contents, prerender_manager()->FindEntry(first_url)); 1644 EXPECT_EQ(prerender_contents, prerender_manager()->FindEntry(first_url));
1636 EXPECT_FALSE(prerender_manager()->FindEntry(second_url)); 1645 EXPECT_FALSE(prerender_manager()->FindEntry(second_url));
1637 1646
1638 prerender_manager()->AdvanceTimeTicks( 1647 prerender_manager()->unittest_time()->AdvanceTimeTicks(
1639 prerender_manager()->config().max_wait_to_launch + 1648 prerender_manager()->config().max_wait_to_launch +
1640 TimeDelta::FromSeconds(1)); 1649 TimeDelta::FromSeconds(1));
1641 EXPECT_EQ(prerender_contents, prerender_manager()->FindEntry(first_url)); 1650 EXPECT_EQ(prerender_contents, prerender_manager()->FindEntry(first_url));
1642 EXPECT_FALSE(prerender_manager()->FindEntry(second_url)); 1651 EXPECT_FALSE(prerender_manager()->FindEntry(second_url));
1643 1652
1644 std::unique_ptr<PrerenderContents> entry = 1653 std::unique_ptr<PrerenderContents> entry =
1645 prerender_manager()->FindAndUseEntry(first_url); 1654 prerender_manager()->FindAndUseEntry(first_url);
1646 EXPECT_EQ(prerender_contents, entry.get()); 1655 EXPECT_EQ(prerender_contents, entry.get());
1647 1656
1648 EXPECT_FALSE(prerender_manager()->FindEntry(first_url)); 1657 EXPECT_FALSE(prerender_manager()->FindEntry(first_url));
(...skipping 24 matching lines...) Expand all
1673 const TimeDelta wait_for_first_prerender_to_expire = 1682 const TimeDelta wait_for_first_prerender_to_expire =
1674 prerender_manager()->config().time_to_live - 1683 prerender_manager()->config().time_to_live -
1675 wait_to_launch_second_prerender + 1684 wait_to_launch_second_prerender +
1676 TimeDelta::FromSeconds(1); 1685 TimeDelta::FromSeconds(1);
1677 ASSERT_LT(prerender_manager()->config().time_to_live, 1686 ASSERT_LT(prerender_manager()->config().time_to_live,
1678 wait_to_launch_second_prerender + 1687 wait_to_launch_second_prerender +
1679 wait_for_first_prerender_to_expire); 1688 wait_for_first_prerender_to_expire);
1680 ASSERT_GT(prerender_manager()->config().max_wait_to_launch.InSeconds(), 1689 ASSERT_GT(prerender_manager()->config().max_wait_to_launch.InSeconds(),
1681 wait_for_first_prerender_to_expire.InSeconds()); 1690 wait_for_first_prerender_to_expire.InSeconds());
1682 1691
1683 prerender_manager()->AdvanceTimeTicks(wait_to_launch_second_prerender); 1692 prerender_manager()->unittest_time()->AdvanceTimeTicks(
1693 wait_to_launch_second_prerender);
1684 GURL second_url("http://www.willlaunch.com"); 1694 GURL second_url("http://www.willlaunch.com");
1685 DummyPrerenderContents* second_prerender_contents = 1695 DummyPrerenderContents* second_prerender_contents =
1686 prerender_manager()->CreateNextPrerenderContents( 1696 prerender_manager()->CreateNextPrerenderContents(
1687 second_url, FINAL_STATUS_USED); 1697 second_url, FINAL_STATUS_USED);
1688 EXPECT_FALSE(AddSimplePrerender(second_url)); 1698 EXPECT_FALSE(AddSimplePrerender(second_url));
1689 1699
1690 // The first prerender is still running, but the second has not yet launched. 1700 // The first prerender is still running, but the second has not yet launched.
1691 EXPECT_EQ(first_prerender_contents, 1701 EXPECT_EQ(first_prerender_contents,
1692 prerender_manager()->FindEntry(first_url)); 1702 prerender_manager()->FindEntry(first_url));
1693 EXPECT_FALSE(prerender_manager()->FindEntry(second_url)); 1703 EXPECT_FALSE(prerender_manager()->FindEntry(second_url));
1694 1704
1695 // The first prerender should have died, giving life to the second one. 1705 // The first prerender should have died, giving life to the second one.
1696 prerender_manager()->AdvanceTimeTicks(wait_for_first_prerender_to_expire); 1706 prerender_manager()->unittest_time()->AdvanceTimeTicks(
1707 wait_for_first_prerender_to_expire);
1697 EXPECT_FALSE(prerender_manager()->FindEntry(first_url)); 1708 EXPECT_FALSE(prerender_manager()->FindEntry(first_url));
1698 std::unique_ptr<PrerenderContents> entry = 1709 std::unique_ptr<PrerenderContents> entry =
1699 prerender_manager()->FindAndUseEntry(second_url); 1710 prerender_manager()->FindAndUseEntry(second_url);
1700 EXPECT_EQ(second_prerender_contents, entry.get()); 1711 EXPECT_EQ(second_prerender_contents, entry.get());
1701 } 1712 }
1702 1713
1703 TEST_F(PrerenderTest, InstantSearchNotAllowedWhenDisabled) { 1714 TEST_F(PrerenderTest, InstantSearchNotAllowedWhenDisabled) {
1704 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial( 1715 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial(
1705 "EmbeddedSearch", 1716 "EmbeddedSearch",
1706 "Group82 espv:8 use_cacheable_ntp:1 prefetch_results:1")); 1717 "Group82 espv:8 use_cacheable_ntp:1 prefetch_results:1"));
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
1746 prerender_contents->SetPrerenderMode(PREFETCH_ONLY); 1757 prerender_contents->SetPrerenderMode(PREFETCH_ONLY);
1747 EXPECT_TRUE(prerender_contents->IsValidHttpMethod("GET")); 1758 EXPECT_TRUE(prerender_contents->IsValidHttpMethod("GET"));
1748 EXPECT_TRUE(prerender_contents->IsValidHttpMethod("HEAD")); 1759 EXPECT_TRUE(prerender_contents->IsValidHttpMethod("HEAD"));
1749 EXPECT_FALSE(prerender_contents->IsValidHttpMethod("OPTIONS")); 1760 EXPECT_FALSE(prerender_contents->IsValidHttpMethod("OPTIONS"));
1750 EXPECT_FALSE(prerender_contents->IsValidHttpMethod("POST")); 1761 EXPECT_FALSE(prerender_contents->IsValidHttpMethod("POST"));
1751 EXPECT_FALSE(prerender_contents->IsValidHttpMethod("TRACE")); 1762 EXPECT_FALSE(prerender_contents->IsValidHttpMethod("TRACE"));
1752 EXPECT_FALSE(prerender_contents->IsValidHttpMethod("WHATEVER")); 1763 EXPECT_FALSE(prerender_contents->IsValidHttpMethod("WHATEVER"));
1753 } 1764 }
1754 1765
1755 } // namespace prerender 1766 } // namespace prerender
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698