Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(418)

Side by Side Diff: chrome/browser/prerender/prerender_manager.cc

Issue 2304953002: NoState Prefetch: nostate prefetch browser tests. (Closed)
Patch Set: Remove injection at factory Created 4 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698