diff options
Diffstat (limited to 'chrome/browser/prerender/prerender_manager.cc')
-rw-r--r-- | chrome/browser/prerender/prerender_manager.cc | 17 |
1 files changed, 13 insertions, 4 deletions
diff --git a/chrome/browser/prerender/prerender_manager.cc b/chrome/browser/prerender/prerender_manager.cc index 5e7b4c6b..736792b 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; } |