| Index: chrome/browser/prerender/prerender_manager.cc
|
| diff --git a/chrome/browser/prerender/prerender_manager.cc b/chrome/browser/prerender/prerender_manager.cc
|
| index f97d9cef68fe32ccad83161c5424530b0f6eaf48..48a3c20c132b4aa3ba834929126ca6caa61738ab 100644
|
| --- a/chrome/browser/prerender/prerender_manager.cc
|
| +++ b/chrome/browser/prerender/prerender_manager.cc
|
| @@ -18,6 +18,7 @@
|
| #include "base/logging.h"
|
| #include "base/macros.h"
|
| #include "base/memory/ptr_util.h"
|
| +#include "base/metrics/field_trial.h"
|
| #include "base/metrics/histogram.h"
|
| #include "base/single_thread_task_runner.h"
|
| #include "base/sys_info.h"
|
| @@ -611,6 +612,30 @@ bool PrerenderManager::IsNoStatePrefetch() {
|
| return GetMode() == PRERENDER_MODE_NOSTATE_PREFETCH;
|
| }
|
|
|
| +bool PrerenderManager::IsPrerenderSilenceExperiment() {
|
| + // The group name should contain expiration time formatted as:
|
| + // "ExperimentYes_expires_YYYY-MM-DDTHH:MM:SSZ".
|
| + std::string group_name =
|
| + base::FieldTrialList::FindFullName("PrerenderSilence");
|
| + const char kExperimentPrefix[] = "ExperimentYes";
|
| + if (!base::StartsWith(group_name, kExperimentPrefix,
|
| + base::CompareCase::INSENSITIVE_ASCII)) {
|
| + return false;
|
| + }
|
| + const char kExperimentPrefixWithExpiration[] = "ExperimentYes_expires_";
|
| + if (!base::StartsWith(group_name, kExperimentPrefixWithExpiration,
|
| + base::CompareCase::INSENSITIVE_ASCII)) {
|
| + return true;
|
| + }
|
| + base::Time expiration_time;
|
| + if (!base::Time::FromString(
|
| + group_name.c_str() + (arraysize(kExperimentPrefixWithExpiration) - 1),
|
| + &expiration_time)) {
|
| + return true;
|
| + }
|
| + return GetCurrentTime() < expiration_time;
|
| +}
|
| +
|
| bool PrerenderManager::IsWebContentsPrerendering(
|
| const WebContents* web_contents,
|
| Origin* origin) const {
|
| @@ -882,6 +907,9 @@ std::unique_ptr<PrerenderHandle> PrerenderManager::AddPrerender(
|
| origin = ORIGIN_GWS_PRERENDER;
|
| }
|
|
|
| + if (origin != ORIGIN_OFFLINE && IsPrerenderSilenceExperiment())
|
| + return nullptr;
|
| +
|
| GURL url = url_arg;
|
| GURL alias_url;
|
| if (IsControlGroup() && MaybeGetQueryStringBasedAliasURL(url, &alias_url))
|
|
|