| 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 "chrome/browser/prerender/prerender_manager.h" | 5 #include "chrome/browser/prerender/prerender_manager.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 | 8 |
| 9 #include <algorithm> | 9 #include <algorithm> |
| 10 #include <functional> | 10 #include <functional> |
| (...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 140 : url(url), time(time), origin(origin) {} | 140 : url(url), time(time), origin(origin) {} |
| 141 | 141 |
| 142 GURL url; | 142 GURL url; |
| 143 base::TimeTicks time; | 143 base::TimeTicks time; |
| 144 Origin origin; | 144 Origin origin; |
| 145 }; | 145 }; |
| 146 | 146 |
| 147 PrerenderManager::PrerenderManager(Profile* profile) | 147 PrerenderManager::PrerenderManager(Profile* profile) |
| 148 : profile_(profile), | 148 : profile_(profile), |
| 149 prerender_contents_factory_(PrerenderContents::CreateFactory()), | 149 prerender_contents_factory_(PrerenderContents::CreateFactory()), |
| 150 last_prerender_start_time_( | |
| 151 GetCurrentTimeTicks() - | |
| 152 base::TimeDelta::FromMilliseconds(kMinTimeBetweenPrerendersMs)), | |
| 153 prerender_history_(new PrerenderHistory(kHistoryLength)), | 150 prerender_history_(new PrerenderHistory(kHistoryLength)), |
| 154 histograms_(new PrerenderHistograms()), | 151 histograms_(new PrerenderHistograms()), |
| 155 profile_network_bytes_(0), | 152 profile_network_bytes_(0), |
| 156 last_recorded_profile_network_bytes_(0), | 153 last_recorded_profile_network_bytes_(0), |
| 157 weak_factory_(this) { | 154 weak_factory_(this) { |
| 158 DCHECK_CURRENTLY_ON(BrowserThread::UI); | 155 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
| 159 | 156 |
| 157 last_prerender_start_time_ = |
| 158 GetCurrentTimeTicks() - |
| 159 base::TimeDelta::FromMilliseconds(kMinTimeBetweenPrerendersMs); |
| 160 |
| 160 // Certain experiments override our default config_ values. | 161 // Certain experiments override our default config_ values. |
| 161 switch (PrerenderManager::GetMode()) { | 162 switch (PrerenderManager::GetMode()) { |
| 162 case PrerenderManager::PRERENDER_MODE_EXPERIMENT_MULTI_PRERENDER_GROUP: | 163 case PrerenderManager::PRERENDER_MODE_EXPERIMENT_MULTI_PRERENDER_GROUP: |
| 163 config_.max_link_concurrency = 4; | 164 config_.max_link_concurrency = 4; |
| 164 config_.max_link_concurrency_per_launcher = 2; | 165 config_.max_link_concurrency_per_launcher = 2; |
| 165 break; | 166 break; |
| 166 case PrerenderManager::PRERENDER_MODE_EXPERIMENT_15MIN_TTL_GROUP: | 167 case PrerenderManager::PRERENDER_MODE_EXPERIMENT_15MIN_TTL_GROUP: |
| 167 config_.time_to_live = base::TimeDelta::FromMinutes(15); | 168 config_.time_to_live = base::TimeDelta::FromMinutes(15); |
| 168 break; | 169 break; |
| 169 default: | 170 default: |
| (...skipping 894 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1064 DCHECK(prerender_data); | 1065 DCHECK(prerender_data); |
| 1065 DCHECK(prerender_data->contents()); | 1066 DCHECK(prerender_data->contents()); |
| 1066 | 1067 |
| 1067 if (prerender_data->expiry_time() > GetCurrentTimeTicks()) | 1068 if (prerender_data->expiry_time() > GetCurrentTimeTicks()) |
| 1068 return; | 1069 return; |
| 1069 prerender_data->contents()->Destroy(FINAL_STATUS_TIMED_OUT); | 1070 prerender_data->contents()->Destroy(FINAL_STATUS_TIMED_OUT); |
| 1070 } | 1071 } |
| 1071 } | 1072 } |
| 1072 | 1073 |
| 1073 base::Time PrerenderManager::GetCurrentTime() const { | 1074 base::Time PrerenderManager::GetCurrentTime() const { |
| 1075 if (time_override_) { |
| 1076 return time_override_->GetCurrentTime(); |
| 1077 } |
| 1074 return base::Time::Now(); | 1078 return base::Time::Now(); |
| 1075 } | 1079 } |
| 1076 | 1080 |
| 1077 base::TimeTicks PrerenderManager::GetCurrentTimeTicks() const { | 1081 base::TimeTicks PrerenderManager::GetCurrentTimeTicks() const { |
| 1082 if (time_override_) { |
| 1083 return time_override_->GetCurrentTimeTicks(); |
| 1084 } |
| 1078 return base::TimeTicks::Now(); | 1085 return base::TimeTicks::Now(); |
| 1079 } | 1086 } |
| 1080 | 1087 |
| 1088 void PrerenderManager::SetTimeOverride(std::unique_ptr<TimeOverride> override) { |
| 1089 time_override_ = std::move(override); |
| 1090 } |
| 1091 |
| 1081 std::unique_ptr<PrerenderContents> PrerenderManager::CreatePrerenderContents( | 1092 std::unique_ptr<PrerenderContents> PrerenderManager::CreatePrerenderContents( |
| 1082 const GURL& url, | 1093 const GURL& url, |
| 1083 const content::Referrer& referrer, | 1094 const content::Referrer& referrer, |
| 1084 Origin origin) { | 1095 Origin origin) { |
| 1085 DCHECK_CURRENTLY_ON(BrowserThread::UI); | 1096 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
| 1086 return base::WrapUnique(prerender_contents_factory_->CreatePrerenderContents( | 1097 return base::WrapUnique(prerender_contents_factory_->CreatePrerenderContents( |
| 1087 this, profile_, url, referrer, origin)); | 1098 this, profile_, url, referrer, origin)); |
| 1088 } | 1099 } |
| 1089 | 1100 |
| 1090 void PrerenderManager::SortActivePrerenders() { | 1101 void PrerenderManager::SortActivePrerenders() { |
| (...skipping 252 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1343 DCHECK_EQ(1u, erased); | 1354 DCHECK_EQ(1u, erased); |
| 1344 } | 1355 } |
| 1345 | 1356 |
| 1346 void PrerenderManager::SetPrerenderContentsFactoryForTest( | 1357 void PrerenderManager::SetPrerenderContentsFactoryForTest( |
| 1347 PrerenderContents::Factory* prerender_contents_factory) { | 1358 PrerenderContents::Factory* prerender_contents_factory) { |
| 1348 DCHECK_CURRENTLY_ON(BrowserThread::UI); | 1359 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
| 1349 prerender_contents_factory_.reset(prerender_contents_factory); | 1360 prerender_contents_factory_.reset(prerender_contents_factory); |
| 1350 } | 1361 } |
| 1351 | 1362 |
| 1352 } // namespace prerender | 1363 } // namespace prerender |
| OLD | NEW |