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 { | |
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 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 112 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
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 Loading... | |
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 Loading... | |
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 Loading... | |
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 Loading... | |
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 Loading... | |
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 Loading... | |
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 |
OLD | NEW |