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

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

Issue 2304953002: NoState Prefetch: nostate prefetch browser tests. (Closed)
Patch Set: Remove final_status.cc as it had only formatting changes. 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 147 matching lines...) Expand 10 before | Expand all | Expand 10 after
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
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
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
OLDNEW
« no previous file with comments | « chrome/browser/prerender/prerender_manager.h ('k') | chrome/browser/prerender/prerender_nostate_prefetch_browsertest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698