Chromium Code Reviews| 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; |
|
mattcary
2016/08/25 13:51:18
Do we really want a malformed experiment option to
droger
2016/08/25 13:56:24
Probably same for line 634 below.
pasko
2016/08/25 14:55:18
I wanted a mere "ExperimentYes" (without a date) t
|
| + } |
| + 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)) |