| 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 147 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 158 : url(url), time(time), origin(origin) {} | 158 : url(url), time(time), origin(origin) {} |
| 159 | 159 |
| 160 GURL url; | 160 GURL url; |
| 161 base::TimeTicks time; | 161 base::TimeTicks time; |
| 162 Origin origin; | 162 Origin origin; |
| 163 }; | 163 }; |
| 164 | 164 |
| 165 PrerenderManager::PrerenderManager(Profile* profile) | 165 PrerenderManager::PrerenderManager(Profile* profile) |
| 166 : profile_(profile), | 166 : profile_(profile), |
| 167 prerender_contents_factory_(PrerenderContents::CreateFactory()), | 167 prerender_contents_factory_(PrerenderContents::CreateFactory()), |
| 168 last_prerender_start_time_( | |
| 169 GetCurrentTimeTicks() - | |
| 170 base::TimeDelta::FromMilliseconds(kMinTimeBetweenPrerendersMs)), | |
| 171 prerender_history_(new PrerenderHistory(kHistoryLength)), | 168 prerender_history_(new PrerenderHistory(kHistoryLength)), |
| 172 histograms_(new PrerenderHistograms()), | 169 histograms_(new PrerenderHistograms()), |
| 173 profile_network_bytes_(0), | 170 profile_network_bytes_(0), |
| 174 last_recorded_profile_network_bytes_(0), | 171 last_recorded_profile_network_bytes_(0), |
| 175 weak_factory_(this) { | 172 weak_factory_(this) { |
| 176 DCHECK_CURRENTLY_ON(BrowserThread::UI); | 173 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
| 177 | 174 |
| 175 last_prerender_start_time_ = |
| 176 GetCurrentTimeTicks() - |
| 177 base::TimeDelta::FromMilliseconds(kMinTimeBetweenPrerendersMs); |
| 178 |
| 178 // Certain experiments override our default config_ values. | 179 // Certain experiments override our default config_ values. |
| 179 switch (PrerenderManager::GetMode()) { | 180 switch (PrerenderManager::GetMode()) { |
| 180 case PrerenderManager::PRERENDER_MODE_EXPERIMENT_MULTI_PRERENDER_GROUP: | 181 case PrerenderManager::PRERENDER_MODE_EXPERIMENT_MULTI_PRERENDER_GROUP: |
| 181 config_.max_link_concurrency = 4; | 182 config_.max_link_concurrency = 4; |
| 182 config_.max_link_concurrency_per_launcher = 2; | 183 config_.max_link_concurrency_per_launcher = 2; |
| 183 break; | 184 break; |
| 184 case PrerenderManager::PRERENDER_MODE_EXPERIMENT_15MIN_TTL_GROUP: | 185 case PrerenderManager::PRERENDER_MODE_EXPERIMENT_15MIN_TTL_GROUP: |
| 185 config_.time_to_live = base::TimeDelta::FromMinutes(15); | 186 config_.time_to_live = base::TimeDelta::FromMinutes(15); |
| 186 break; | 187 break; |
| 187 default: | 188 default: |
| (...skipping 899 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1087 DCHECK(prerender_data); | 1088 DCHECK(prerender_data); |
| 1088 DCHECK(prerender_data->contents()); | 1089 DCHECK(prerender_data->contents()); |
| 1089 | 1090 |
| 1090 if (prerender_data->expiry_time() > GetCurrentTimeTicks()) | 1091 if (prerender_data->expiry_time() > GetCurrentTimeTicks()) |
| 1091 return; | 1092 return; |
| 1092 prerender_data->contents()->Destroy(FINAL_STATUS_TIMED_OUT); | 1093 prerender_data->contents()->Destroy(FINAL_STATUS_TIMED_OUT); |
| 1093 } | 1094 } |
| 1094 } | 1095 } |
| 1095 | 1096 |
| 1096 base::Time PrerenderManager::GetCurrentTime() const { | 1097 base::Time PrerenderManager::GetCurrentTime() const { |
| 1098 if (time_override_) { |
| 1099 return time_override_->GetCurrentTime(); |
| 1100 } |
| 1097 return base::Time::Now(); | 1101 return base::Time::Now(); |
| 1098 } | 1102 } |
| 1099 | 1103 |
| 1100 base::TimeTicks PrerenderManager::GetCurrentTimeTicks() const { | 1104 base::TimeTicks PrerenderManager::GetCurrentTimeTicks() const { |
| 1105 if (time_override_) { |
| 1106 return time_override_->GetCurrentTimeTicks(); |
| 1107 } |
| 1101 return base::TimeTicks::Now(); | 1108 return base::TimeTicks::Now(); |
| 1102 } | 1109 } |
| 1103 | 1110 |
| 1111 void PrerenderManager::SetTimeOverride(std::unique_ptr<TimeOverride> override) { |
| 1112 time_override_ = std::move(override); |
| 1113 } |
| 1114 |
| 1104 std::unique_ptr<PrerenderContents> PrerenderManager::CreatePrerenderContents( | 1115 std::unique_ptr<PrerenderContents> PrerenderManager::CreatePrerenderContents( |
| 1105 const GURL& url, | 1116 const GURL& url, |
| 1106 const content::Referrer& referrer, | 1117 const content::Referrer& referrer, |
| 1107 Origin origin) { | 1118 Origin origin) { |
| 1108 DCHECK_CURRENTLY_ON(BrowserThread::UI); | 1119 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
| 1109 return base::WrapUnique(prerender_contents_factory_->CreatePrerenderContents( | 1120 return base::WrapUnique(prerender_contents_factory_->CreatePrerenderContents( |
| 1110 this, profile_, url, referrer, origin)); | 1121 this, profile_, url, referrer, origin)); |
| 1111 } | 1122 } |
| 1112 | 1123 |
| 1113 void PrerenderManager::SortActivePrerenders() { | 1124 void PrerenderManager::SortActivePrerenders() { |
| (...skipping 252 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1366 DCHECK_EQ(1u, erased); | 1377 DCHECK_EQ(1u, erased); |
| 1367 } | 1378 } |
| 1368 | 1379 |
| 1369 void PrerenderManager::SetPrerenderContentsFactoryForTest( | 1380 void PrerenderManager::SetPrerenderContentsFactoryForTest( |
| 1370 PrerenderContents::Factory* prerender_contents_factory) { | 1381 PrerenderContents::Factory* prerender_contents_factory) { |
| 1371 DCHECK_CURRENTLY_ON(BrowserThread::UI); | 1382 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
| 1372 prerender_contents_factory_.reset(prerender_contents_factory); | 1383 prerender_contents_factory_.reset(prerender_contents_factory); |
| 1373 } | 1384 } |
| 1374 | 1385 |
| 1375 } // namespace prerender | 1386 } // namespace prerender |
| OLD | NEW |