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_.reset(override.release()); | |
pasko
2016/10/05 12:35:24
why not std::move?
mattcary
2016/10/10 11:54:43
Sure, why not? Nothing like an R-value reference t
| |
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 |