Chromium Code Reviews| 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 |