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

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

Issue 2304953002: NoState Prefetch: nostate prefetch browser tests. (Closed)
Patch Set: Remove final_status.cc as it had only formatting changes. 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
« no previous file with comments | « chrome/browser/prerender/prerender_test_utils.cc ('k') | chrome/test/BUILD.gn » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 {
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 128 matching lines...) Expand 10 before | Expand all | Expand 10 after
1123 EXPECT_FALSE(prerender_handle); 1129 EXPECT_FALSE(prerender_handle);
1124 EXPECT_FALSE(prerender_contents->prerendering_has_started()); 1130 EXPECT_FALSE(prerender_contents->prerendering_has_started());
1125 } 1131 }
1126 1132
1127 // Checks that the "PrerenderSilence experiment does not disable offline 1133 // Checks that the "PrerenderSilence experiment does not disable offline
1128 // prerendering. 1134 // prerendering.
1129 TEST_F(PrerenderTest, PrerenderSilenceAllowsOffline) { 1135 TEST_F(PrerenderTest, PrerenderSilenceAllowsOffline) {
1130 // Set the time to 30 seconds before the experiment expires. 1136 // Set the time to 30 seconds before the experiment expires.
1131 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial( 1137 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial(
1132 "PrerenderSilence", "ExperimentYes_expires_2016-12-20T00:01:00Z")); 1138 "PrerenderSilence", "ExperimentYes_expires_2016-12-20T00:01:00Z"));
1133 ASSERT_TRUE(prerender_manager()->SetTime("2016-12-20T00:00:30Z")); 1139 ASSERT_TRUE(
1140 prerender_manager()->unittest_time()->SetTime("2016-12-20T00:00:30Z"));
1134 GURL url("http://www.google.com/"); 1141 GURL url("http://www.google.com/");
1135 DummyPrerenderContents* prerender_contents = 1142 DummyPrerenderContents* prerender_contents =
1136 prerender_manager()->CreateNextPrerenderContents( 1143 prerender_manager()->CreateNextPrerenderContents(
1137 url, ORIGIN_OFFLINE, FINAL_STATUS_MANAGER_SHUTDOWN); 1144 url, ORIGIN_OFFLINE, FINAL_STATUS_MANAGER_SHUTDOWN);
1138 std::unique_ptr<PrerenderHandle> prerender_handle = 1145 std::unique_ptr<PrerenderHandle> prerender_handle =
1139 prerender_manager()->AddPrerenderForOffline(url, nullptr, kSize); 1146 prerender_manager()->AddPrerenderForOffline(url, nullptr, kSize);
1140 EXPECT_TRUE(prerender_handle); 1147 EXPECT_TRUE(prerender_handle);
1141 EXPECT_TRUE(prerender_handle->IsPrerendering()); 1148 EXPECT_TRUE(prerender_handle->IsPrerendering());
1142 EXPECT_TRUE(prerender_contents->prerendering_has_started()); 1149 EXPECT_TRUE(prerender_contents->prerendering_has_started());
1143 EXPECT_EQ(prerender_contents, prerender_handle->contents()); 1150 EXPECT_EQ(prerender_contents, prerender_handle->contents());
1144 EXPECT_EQ(ORIGIN_OFFLINE, prerender_handle->contents()->origin()); 1151 EXPECT_EQ(ORIGIN_OFFLINE, prerender_handle->contents()->origin());
1145 } 1152 }
1146 1153
1147 // Checks that the "PrerenderSilence" experiment disables prerendering. 1154 // Checks that the "PrerenderSilence" experiment disables prerendering.
1148 TEST_F(PrerenderTest, PrerenderSilenceDisallowsNonOffline) { 1155 TEST_F(PrerenderTest, PrerenderSilenceDisallowsNonOffline) {
1149 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial( 1156 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial(
1150 "PrerenderSilence", "ExperimentYes_expires_2016-12-20T00:02:00Z")); 1157 "PrerenderSilence", "ExperimentYes_expires_2016-12-20T00:02:00Z"));
1151 const Origin origins[] = { 1158 const Origin origins[] = {
1152 ORIGIN_GWS_PRERENDER, 1159 ORIGIN_GWS_PRERENDER,
1153 ORIGIN_OMNIBOX, 1160 ORIGIN_OMNIBOX,
1154 ORIGIN_NONE, 1161 ORIGIN_NONE,
1155 ORIGIN_LINK_REL_PRERENDER_SAMEDOMAIN, 1162 ORIGIN_LINK_REL_PRERENDER_SAMEDOMAIN,
1156 ORIGIN_LINK_REL_PRERENDER_CROSSDOMAIN, 1163 ORIGIN_LINK_REL_PRERENDER_CROSSDOMAIN,
1157 ORIGIN_EXTERNAL_REQUEST, 1164 ORIGIN_EXTERNAL_REQUEST,
1158 ORIGIN_INSTANT, 1165 ORIGIN_INSTANT,
1159 ORIGIN_LINK_REL_NEXT, 1166 ORIGIN_LINK_REL_NEXT,
1160 ORIGIN_EXTERNAL_REQUEST_FORCED_CELLULAR, 1167 ORIGIN_EXTERNAL_REQUEST_FORCED_CELLULAR,
1161 }; 1168 };
1162 ASSERT_TRUE(prerender_manager()->SetTime("2016-12-20T00:01:00Z")); 1169 ASSERT_TRUE(
1170 prerender_manager()->unittest_time()->SetTime("2016-12-20T00:01:00Z"));
1163 for (const Origin& origin : origins) { 1171 for (const Origin& origin : origins) {
1164 EXPECT_TRUE( 1172 EXPECT_TRUE(
1165 prerender_manager()->IsPrerenderSilenceExperimentForTesting(origin)); 1173 prerender_manager()->IsPrerenderSilenceExperimentForTesting(origin));
1166 } 1174 }
1167 } 1175 }
1168 1176
1169 // Checks that prerendering is enabled after expiration of the 1177 // Checks that prerendering is enabled after expiration of the
1170 // "PrerenderSilence" experiment. 1178 // "PrerenderSilence" experiment.
1171 TEST_F(PrerenderTest, PrerenderSilenceAllowsAfterExpiration) { 1179 TEST_F(PrerenderTest, PrerenderSilenceAllowsAfterExpiration) {
1172 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial( 1180 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial(
1173 "PrerenderSilence", "ExperimentYes_expires_2016-12-20T00:02:00Z")); 1181 "PrerenderSilence", "ExperimentYes_expires_2016-12-20T00:02:00Z"));
1174 GURL url("http://www.google.com/"); 1182 GURL url("http://www.google.com/");
1175 ASSERT_TRUE(prerender_manager()->SetTime("2016-12-20T00:01:00Z")); 1183 ASSERT_TRUE(
1176 prerender_manager()->AdvanceTime(TimeDelta::FromSeconds(60)); 1184 prerender_manager()->unittest_time()->SetTime("2016-12-20T00:01:00Z"));
1185 prerender_manager()->unittest_time()->AdvanceTime(TimeDelta::FromSeconds(60));
1177 DummyPrerenderContents* prerender_contents = 1186 DummyPrerenderContents* prerender_contents =
1178 prerender_manager()->CreateNextPrerenderContents(url, FINAL_STATUS_USED); 1187 prerender_manager()->CreateNextPrerenderContents(url, FINAL_STATUS_USED);
1179 EXPECT_TRUE(AddSimplePrerender(url)); 1188 EXPECT_TRUE(AddSimplePrerender(url));
1180 EXPECT_TRUE(prerender_contents->prerendering_has_started()); 1189 EXPECT_TRUE(prerender_contents->prerendering_has_started());
1181 std::unique_ptr<PrerenderContents> entry = 1190 std::unique_ptr<PrerenderContents> entry =
1182 prerender_manager()->FindAndUseEntry(url); 1191 prerender_manager()->FindAndUseEntry(url);
1183 ASSERT_EQ(prerender_contents, entry.get()); 1192 ASSERT_EQ(prerender_contents, entry.get());
1184 } 1193 }
1185 1194
1186 TEST_F(PrerenderTest, PrerenderAllowedForOfflineAndForcedCellular) { 1195 TEST_F(PrerenderTest, PrerenderAllowedForOfflineAndForcedCellular) {
(...skipping 274 matching lines...) Expand 10 before | Expand all | Expand 10 after
1461 GURL url("http://www.myexample.com"); 1470 GURL url("http://www.myexample.com");
1462 DummyPrerenderContents* prerender_contents = 1471 DummyPrerenderContents* prerender_contents =
1463 prerender_manager()->CreateNextPrerenderContents( 1472 prerender_manager()->CreateNextPrerenderContents(
1464 url, FINAL_STATUS_TIMED_OUT); 1473 url, FINAL_STATUS_TIMED_OUT);
1465 1474
1466 EXPECT_TRUE(AddSimplePrerender(url)); 1475 EXPECT_TRUE(AddSimplePrerender(url));
1467 1476
1468 EXPECT_TRUE(prerender_contents->prerendering_has_started()); 1477 EXPECT_TRUE(prerender_contents->prerendering_has_started());
1469 EXPECT_FALSE(prerender_contents->prerendering_has_been_cancelled()); 1478 EXPECT_FALSE(prerender_contents->prerendering_has_been_cancelled());
1470 ASSERT_EQ(prerender_contents, prerender_manager()->FindEntry(url)); 1479 ASSERT_EQ(prerender_contents, prerender_manager()->FindEntry(url));
1471 prerender_manager()->AdvanceTimeTicks( 1480 prerender_manager()->unittest_time()->AdvanceTimeTicks(
1472 prerender_manager()->config().time_to_live + TimeDelta::FromSeconds(1)); 1481 prerender_manager()->config().time_to_live + TimeDelta::FromSeconds(1));
1473 1482
1474 EXPECT_FALSE(IsEmptyPrerenderLinkManager()); 1483 EXPECT_FALSE(IsEmptyPrerenderLinkManager());
1475 ASSERT_FALSE(prerender_manager()->FindEntry(url)); 1484 ASSERT_FALSE(prerender_manager()->FindEntry(url));
1476 prerender_link_manager()->OnCancelPrerender(kDefaultChildId, 1485 prerender_link_manager()->OnCancelPrerender(kDefaultChildId,
1477 last_prerender_id()); 1486 last_prerender_id());
1478 1487
1479 EXPECT_TRUE(IsEmptyPrerenderLinkManager()); 1488 EXPECT_TRUE(IsEmptyPrerenderLinkManager());
1480 ASSERT_FALSE(prerender_manager()->FindEntry(url)); 1489 ASSERT_FALSE(prerender_manager()->FindEntry(url));
1481 } 1490 }
1482 1491
1483 TEST_F(PrerenderTest, LinkManagerExpireThenAddAgain) { 1492 TEST_F(PrerenderTest, LinkManagerExpireThenAddAgain) {
1484 EXPECT_TRUE(IsEmptyPrerenderLinkManager()); 1493 EXPECT_TRUE(IsEmptyPrerenderLinkManager());
1485 GURL url("http://www.myexample.com"); 1494 GURL url("http://www.myexample.com");
1486 DummyPrerenderContents* first_prerender_contents = 1495 DummyPrerenderContents* first_prerender_contents =
1487 prerender_manager()->CreateNextPrerenderContents( 1496 prerender_manager()->CreateNextPrerenderContents(
1488 url, FINAL_STATUS_TIMED_OUT); 1497 url, FINAL_STATUS_TIMED_OUT);
1489 EXPECT_TRUE(AddSimplePrerender(url)); 1498 EXPECT_TRUE(AddSimplePrerender(url));
1490 EXPECT_TRUE(first_prerender_contents->prerendering_has_started()); 1499 EXPECT_TRUE(first_prerender_contents->prerendering_has_started());
1491 EXPECT_FALSE(first_prerender_contents->prerendering_has_been_cancelled()); 1500 EXPECT_FALSE(first_prerender_contents->prerendering_has_been_cancelled());
1492 ASSERT_EQ(first_prerender_contents, 1501 ASSERT_EQ(first_prerender_contents,
1493 prerender_manager()->FindEntry(url)); 1502 prerender_manager()->FindEntry(url));
1494 prerender_manager()->AdvanceTimeTicks( 1503 prerender_manager()->unittest_time()->AdvanceTimeTicks(
1495 prerender_manager()->config().time_to_live + TimeDelta::FromSeconds(1)); 1504 prerender_manager()->config().time_to_live + TimeDelta::FromSeconds(1));
1496 ASSERT_FALSE(prerender_manager()->FindEntry(url)); 1505 ASSERT_FALSE(prerender_manager()->FindEntry(url));
1497 DummyPrerenderContents* second_prerender_contents = 1506 DummyPrerenderContents* second_prerender_contents =
1498 prerender_manager()->CreateNextPrerenderContents( 1507 prerender_manager()->CreateNextPrerenderContents(
1499 url, FINAL_STATUS_USED); 1508 url, FINAL_STATUS_USED);
1500 EXPECT_TRUE(AddSimplePrerender(url)); 1509 EXPECT_TRUE(AddSimplePrerender(url));
1501 EXPECT_TRUE(second_prerender_contents->prerendering_has_started()); 1510 EXPECT_TRUE(second_prerender_contents->prerendering_has_started());
1502 std::unique_ptr<PrerenderContents> entry = 1511 std::unique_ptr<PrerenderContents> entry =
1503 prerender_manager()->FindAndUseEntry(url); 1512 prerender_manager()->FindAndUseEntry(url);
1504 ASSERT_EQ(second_prerender_contents, entry.get()); 1513 ASSERT_EQ(second_prerender_contents, entry.get());
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
1536 prerender_manager()->CreateNextPrerenderContents( 1545 prerender_manager()->CreateNextPrerenderContents(
1537 url, FINAL_STATUS_TIMED_OUT); 1546 url, FINAL_STATUS_TIMED_OUT);
1538 1547
1539 EXPECT_TRUE(AddSimplePrerender(url)); 1548 EXPECT_TRUE(AddSimplePrerender(url));
1540 EXPECT_TRUE(prerender_contents->prerendering_has_started()); 1549 EXPECT_TRUE(prerender_contents->prerendering_has_started());
1541 EXPECT_FALSE(prerender_contents->prerendering_has_been_cancelled()); 1550 EXPECT_FALSE(prerender_contents->prerendering_has_been_cancelled());
1542 ASSERT_EQ(prerender_contents, prerender_manager()->FindEntry(url)); 1551 ASSERT_EQ(prerender_contents, prerender_manager()->FindEntry(url));
1543 1552
1544 prerender_link_manager()->OnChannelClosing(kDefaultChildId); 1553 prerender_link_manager()->OnChannelClosing(kDefaultChildId);
1545 1554
1546 prerender_manager()->AdvanceTimeTicks( 1555 prerender_manager()->unittest_time()->AdvanceTimeTicks(
1547 prerender_manager()->config().abandon_time_to_live + 1556 prerender_manager()->config().abandon_time_to_live +
1548 TimeDelta::FromSeconds(1)); 1557 TimeDelta::FromSeconds(1));
1549 1558
1550 EXPECT_FALSE(prerender_manager()->FindEntry(url)); 1559 EXPECT_FALSE(prerender_manager()->FindEntry(url));
1551 EXPECT_TRUE(IsEmptyPrerenderLinkManager()); 1560 EXPECT_TRUE(IsEmptyPrerenderLinkManager());
1552 } 1561 }
1553 1562
1554 // Creates two prerenders, one of which should be blocked by the 1563 // Creates two prerenders, one of which should be blocked by the
1555 // max_link_concurrency; abandons both of them and waits to make sure both 1564 // max_link_concurrency; abandons both of them and waits to make sure both
1556 // are cleared from the PrerenderLinkManager. 1565 // are cleared from the PrerenderLinkManager.
(...skipping 15 matching lines...) Expand all
1572 EXPECT_FALSE(IsEmptyPrerenderLinkManager()); 1581 EXPECT_FALSE(IsEmptyPrerenderLinkManager());
1573 1582
1574 EXPECT_EQ(prerender_contents, prerender_manager()->FindEntry(first_url)); 1583 EXPECT_EQ(prerender_contents, prerender_manager()->FindEntry(first_url));
1575 EXPECT_FALSE(prerender_manager()->FindEntry(second_url)); 1584 EXPECT_FALSE(prerender_manager()->FindEntry(second_url));
1576 1585
1577 prerender_link_manager()->OnAbandonPrerender(kDefaultChildId, 1586 prerender_link_manager()->OnAbandonPrerender(kDefaultChildId,
1578 first_prerender_id); 1587 first_prerender_id);
1579 prerender_link_manager()->OnAbandonPrerender(kDefaultChildId, 1588 prerender_link_manager()->OnAbandonPrerender(kDefaultChildId,
1580 second_prerender_id); 1589 second_prerender_id);
1581 1590
1582 prerender_manager()->AdvanceTimeTicks( 1591 prerender_manager()->unittest_time()->AdvanceTimeTicks(
1583 prerender_manager()->config().abandon_time_to_live + 1592 prerender_manager()->config().abandon_time_to_live +
1584 TimeDelta::FromSeconds(1)); 1593 TimeDelta::FromSeconds(1));
1585 EXPECT_FALSE(prerender_manager()->FindEntry(first_url)); 1594 EXPECT_FALSE(prerender_manager()->FindEntry(first_url));
1586 EXPECT_FALSE(prerender_manager()->FindEntry(second_url)); 1595 EXPECT_FALSE(prerender_manager()->FindEntry(second_url));
1587 EXPECT_TRUE(IsEmptyPrerenderLinkManager()); 1596 EXPECT_TRUE(IsEmptyPrerenderLinkManager());
1588 } 1597 }
1589 1598
1590 // Creates two prerenders, the second one started by the first, both of which 1599 // Creates two prerenders, the second one started by the first, both of which
1591 // should be blocked by max_concurrency; abandons both of them and waits to make 1600 // should be blocked by max_concurrency; abandons both of them and waits to make
1592 // sure both are cleared from the PrerenderLinkManager. 1601 // sure both are cleared from the PrerenderLinkManager.
(...skipping 22 matching lines...) Expand all
1615 EXPECT_FALSE(IsEmptyPrerenderLinkManager()); 1624 EXPECT_FALSE(IsEmptyPrerenderLinkManager());
1616 1625
1617 EXPECT_EQ(prerender_contents, prerender_manager()->FindEntry(first_url)); 1626 EXPECT_EQ(prerender_contents, prerender_manager()->FindEntry(first_url));
1618 EXPECT_FALSE(prerender_manager()->FindEntry(pending_url)); 1627 EXPECT_FALSE(prerender_manager()->FindEntry(pending_url));
1619 1628
1620 prerender_link_manager()->OnAbandonPrerender(kDefaultChildId, 1629 prerender_link_manager()->OnAbandonPrerender(kDefaultChildId,
1621 first_prerender_id); 1630 first_prerender_id);
1622 prerender_link_manager()->OnAbandonPrerender(kDefaultChildId, 1631 prerender_link_manager()->OnAbandonPrerender(kDefaultChildId,
1623 second_prerender_id); 1632 second_prerender_id);
1624 1633
1625 prerender_manager()->AdvanceTimeTicks( 1634 prerender_manager()->unittest_time()->AdvanceTimeTicks(
1626 prerender_manager()->config().abandon_time_to_live + 1635 prerender_manager()->config().abandon_time_to_live +
1627 TimeDelta::FromSeconds(1)); 1636 TimeDelta::FromSeconds(1));
1628 EXPECT_FALSE(prerender_manager()->FindEntry(first_url)); 1637 EXPECT_FALSE(prerender_manager()->FindEntry(first_url));
1629 EXPECT_FALSE(prerender_manager()->FindEntry(pending_url)); 1638 EXPECT_FALSE(prerender_manager()->FindEntry(pending_url));
1630 EXPECT_TRUE(IsEmptyPrerenderLinkManager()); 1639 EXPECT_TRUE(IsEmptyPrerenderLinkManager());
1631 } 1640 }
1632 1641
1633 // Creates two prerenders, one of which should be blocked by the 1642 // Creates two prerenders, one of which should be blocked by the
1634 // max_link_concurrency; uses one after the max wait to launch, and 1643 // max_link_concurrency; uses one after the max wait to launch, and
1635 // ensures the second prerender does not start. 1644 // ensures the second prerender does not start.
1636 TEST_F(PrerenderTest, LinkManagerWaitToLaunchNotLaunched) { 1645 TEST_F(PrerenderTest, LinkManagerWaitToLaunchNotLaunched) {
1637 SetConcurrency(1); 1646 SetConcurrency(1);
1638 ASSERT_LT(prerender_manager()->config().max_wait_to_launch, 1647 ASSERT_LT(prerender_manager()->config().max_wait_to_launch,
1639 prerender_manager()->config().time_to_live); 1648 prerender_manager()->config().time_to_live);
1640 GURL first_url("http://www.myexample.com"); 1649 GURL first_url("http://www.myexample.com");
1641 DummyPrerenderContents* prerender_contents = 1650 DummyPrerenderContents* prerender_contents =
1642 prerender_manager()->CreateNextPrerenderContents( 1651 prerender_manager()->CreateNextPrerenderContents(
1643 first_url, FINAL_STATUS_USED); 1652 first_url, FINAL_STATUS_USED);
1644 EXPECT_TRUE(AddSimplePrerender(first_url)); 1653 EXPECT_TRUE(AddSimplePrerender(first_url));
1645 1654
1646 GURL second_url("http://www.neverlaunched.com"); 1655 GURL second_url("http://www.neverlaunched.com");
1647 EXPECT_FALSE(AddSimplePrerender(second_url)); 1656 EXPECT_FALSE(AddSimplePrerender(second_url));
1648 1657
1649 EXPECT_FALSE(IsEmptyPrerenderLinkManager()); 1658 EXPECT_FALSE(IsEmptyPrerenderLinkManager());
1650 1659
1651 EXPECT_EQ(prerender_contents, prerender_manager()->FindEntry(first_url)); 1660 EXPECT_EQ(prerender_contents, prerender_manager()->FindEntry(first_url));
1652 EXPECT_FALSE(prerender_manager()->FindEntry(second_url)); 1661 EXPECT_FALSE(prerender_manager()->FindEntry(second_url));
1653 1662
1654 prerender_manager()->AdvanceTimeTicks( 1663 prerender_manager()->unittest_time()->AdvanceTimeTicks(
1655 prerender_manager()->config().max_wait_to_launch + 1664 prerender_manager()->config().max_wait_to_launch +
1656 TimeDelta::FromSeconds(1)); 1665 TimeDelta::FromSeconds(1));
1657 EXPECT_EQ(prerender_contents, prerender_manager()->FindEntry(first_url)); 1666 EXPECT_EQ(prerender_contents, prerender_manager()->FindEntry(first_url));
1658 EXPECT_FALSE(prerender_manager()->FindEntry(second_url)); 1667 EXPECT_FALSE(prerender_manager()->FindEntry(second_url));
1659 1668
1660 std::unique_ptr<PrerenderContents> entry = 1669 std::unique_ptr<PrerenderContents> entry =
1661 prerender_manager()->FindAndUseEntry(first_url); 1670 prerender_manager()->FindAndUseEntry(first_url);
1662 EXPECT_EQ(prerender_contents, entry.get()); 1671 EXPECT_EQ(prerender_contents, entry.get());
1663 1672
1664 EXPECT_FALSE(prerender_manager()->FindEntry(first_url)); 1673 EXPECT_FALSE(prerender_manager()->FindEntry(first_url));
(...skipping 24 matching lines...) Expand all
1689 const TimeDelta wait_for_first_prerender_to_expire = 1698 const TimeDelta wait_for_first_prerender_to_expire =
1690 prerender_manager()->config().time_to_live - 1699 prerender_manager()->config().time_to_live -
1691 wait_to_launch_second_prerender + 1700 wait_to_launch_second_prerender +
1692 TimeDelta::FromSeconds(1); 1701 TimeDelta::FromSeconds(1);
1693 ASSERT_LT(prerender_manager()->config().time_to_live, 1702 ASSERT_LT(prerender_manager()->config().time_to_live,
1694 wait_to_launch_second_prerender + 1703 wait_to_launch_second_prerender +
1695 wait_for_first_prerender_to_expire); 1704 wait_for_first_prerender_to_expire);
1696 ASSERT_GT(prerender_manager()->config().max_wait_to_launch.InSeconds(), 1705 ASSERT_GT(prerender_manager()->config().max_wait_to_launch.InSeconds(),
1697 wait_for_first_prerender_to_expire.InSeconds()); 1706 wait_for_first_prerender_to_expire.InSeconds());
1698 1707
1699 prerender_manager()->AdvanceTimeTicks(wait_to_launch_second_prerender); 1708 prerender_manager()->unittest_time()->AdvanceTimeTicks(
1709 wait_to_launch_second_prerender);
1700 GURL second_url("http://www.willlaunch.com"); 1710 GURL second_url("http://www.willlaunch.com");
1701 DummyPrerenderContents* second_prerender_contents = 1711 DummyPrerenderContents* second_prerender_contents =
1702 prerender_manager()->CreateNextPrerenderContents( 1712 prerender_manager()->CreateNextPrerenderContents(
1703 second_url, FINAL_STATUS_USED); 1713 second_url, FINAL_STATUS_USED);
1704 EXPECT_FALSE(AddSimplePrerender(second_url)); 1714 EXPECT_FALSE(AddSimplePrerender(second_url));
1705 1715
1706 // The first prerender is still running, but the second has not yet launched. 1716 // The first prerender is still running, but the second has not yet launched.
1707 EXPECT_EQ(first_prerender_contents, 1717 EXPECT_EQ(first_prerender_contents,
1708 prerender_manager()->FindEntry(first_url)); 1718 prerender_manager()->FindEntry(first_url));
1709 EXPECT_FALSE(prerender_manager()->FindEntry(second_url)); 1719 EXPECT_FALSE(prerender_manager()->FindEntry(second_url));
1710 1720
1711 // The first prerender should have died, giving life to the second one. 1721 // The first prerender should have died, giving life to the second one.
1712 prerender_manager()->AdvanceTimeTicks(wait_for_first_prerender_to_expire); 1722 prerender_manager()->unittest_time()->AdvanceTimeTicks(
1723 wait_for_first_prerender_to_expire);
1713 EXPECT_FALSE(prerender_manager()->FindEntry(first_url)); 1724 EXPECT_FALSE(prerender_manager()->FindEntry(first_url));
1714 std::unique_ptr<PrerenderContents> entry = 1725 std::unique_ptr<PrerenderContents> entry =
1715 prerender_manager()->FindAndUseEntry(second_url); 1726 prerender_manager()->FindAndUseEntry(second_url);
1716 EXPECT_EQ(second_prerender_contents, entry.get()); 1727 EXPECT_EQ(second_prerender_contents, entry.get());
1717 } 1728 }
1718 1729
1719 TEST_F(PrerenderTest, InstantSearchNotAllowedWhenDisabled) { 1730 TEST_F(PrerenderTest, InstantSearchNotAllowedWhenDisabled) {
1720 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial( 1731 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial(
1721 "EmbeddedSearch", 1732 "EmbeddedSearch",
1722 "Group82 espv:8 use_cacheable_ntp:1 prefetch_results:1")); 1733 "Group82 espv:8 use_cacheable_ntp:1 prefetch_results:1"));
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
1762 prerender_contents->SetPrerenderMode(PREFETCH_ONLY); 1773 prerender_contents->SetPrerenderMode(PREFETCH_ONLY);
1763 EXPECT_TRUE(prerender_contents->IsValidHttpMethod("GET")); 1774 EXPECT_TRUE(prerender_contents->IsValidHttpMethod("GET"));
1764 EXPECT_TRUE(prerender_contents->IsValidHttpMethod("HEAD")); 1775 EXPECT_TRUE(prerender_contents->IsValidHttpMethod("HEAD"));
1765 EXPECT_FALSE(prerender_contents->IsValidHttpMethod("OPTIONS")); 1776 EXPECT_FALSE(prerender_contents->IsValidHttpMethod("OPTIONS"));
1766 EXPECT_FALSE(prerender_contents->IsValidHttpMethod("POST")); 1777 EXPECT_FALSE(prerender_contents->IsValidHttpMethod("POST"));
1767 EXPECT_FALSE(prerender_contents->IsValidHttpMethod("TRACE")); 1778 EXPECT_FALSE(prerender_contents->IsValidHttpMethod("TRACE"));
1768 EXPECT_FALSE(prerender_contents->IsValidHttpMethod("WHATEVER")); 1779 EXPECT_FALSE(prerender_contents->IsValidHttpMethod("WHATEVER"));
1769 } 1780 }
1770 1781
1771 } // namespace prerender 1782 } // namespace prerender
OLDNEW
« no previous file with comments | « chrome/browser/prerender/prerender_test_utils.cc ('k') | chrome/test/BUILD.gn » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698