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

Unified Diff: chrome/browser/prerender/prerender_manager.cc

Issue 10802024: Make three simultanious prerenders the default maximum in Canary and Dev only. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fix field trial Created 8 years, 5 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/browser/prerender/prerender_manager.h ('k') | chrome/browser/prerender/prerender_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/prerender/prerender_manager.cc
diff --git a/chrome/browser/prerender/prerender_manager.cc b/chrome/browser/prerender/prerender_manager.cc
index 5e7b4c6b15d98dc8d424d615db8bf932d7f7f5f1..736792b6ba74fd9279121605b35314569a0fc474 100644
--- a/chrome/browser/prerender/prerender_manager.cc
+++ b/chrome/browser/prerender/prerender_manager.cc
@@ -69,9 +69,6 @@ const int kWindowDurationSeconds = 30;
// Time interval at which periodic cleanups are performed.
const int kPeriodicCleanupIntervalMs = 1000;
-// Time interval before a new prerender is allowed.
-const int kMinTimeBetweenPrerendersMs = 500;
-
// Valid HTTP methods for prerendering.
const char* const kValidHttpMethods[] = {
"GET",
@@ -196,6 +193,7 @@ PrerenderManager::PrerenderManager(Profile* profile,
// Any other checks simply make sure that the PrerenderManager is accessed on
// the same thread that it was created on.
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
+ config_.max_concurrency = GetMaxConcurrency();
}
PrerenderManager::~PrerenderManager() {
@@ -555,6 +553,8 @@ const char* PrerenderManager::GetModeString() {
return "_Enabled";
case PRERENDER_MODE_EXPERIMENT_CONTROL_GROUP:
return "_Control";
+ case PRERENDER_MODE_EXPERIMENT_MULTI_PRERENDER_GROUP:
+ return "_Multi";
case PRERENDER_MODE_EXPERIMENT_5MIN_TTL_GROUP:
return "_5MinTTL";
case PRERENDER_MODE_EXPERIMENT_NO_USE_GROUP:
@@ -586,6 +586,13 @@ bool PrerenderManager::IsNoUseGroup() {
return GetMode() == PRERENDER_MODE_EXPERIMENT_NO_USE_GROUP;
}
+// static
+size_t PrerenderManager::GetMaxConcurrency() {
+ if (GetMode() == PRERENDER_MODE_EXPERIMENT_MULTI_PRERENDER_GROUP)
+ return 3;
+ return 1;
+}
+
bool PrerenderManager::IsWebContentsPrerendering(
WebContents* web_contents) const {
DCHECK(CalledOnValidThread());
@@ -945,12 +952,14 @@ PrerenderHandle* PrerenderManager::AddPrerender(
session_storage_namespace,
control_group_behavior);
- while (active_prerender_list_.size() > config_.max_elements) {
+ while (active_prerender_list_.size() > config_.max_concurrency) {
prerender_contents = active_prerender_list_.front()->contents_;
DCHECK(prerender_contents);
prerender_contents->Destroy(FINAL_STATUS_EVICTED);
}
+ histograms_->RecordConcurrency(active_prerender_list_.size());
+
StartSchedulingPeriodicCleanups();
return prerender_handle;
}
« no previous file with comments | « chrome/browser/prerender/prerender_manager.h ('k') | chrome/browser/prerender/prerender_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698