OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include <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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 |
OLD | NEW |