Chromium Code Reviews| Index: chrome/browser/precache/precache_util.cc |
| diff --git a/chrome/browser/precache/precache_util.cc b/chrome/browser/precache/precache_util.cc |
| index 049155ba5122cea054071d7eb1b8884612c5a18d..7d4ae419ab3320faaf27e48767989ccf5f704fc8 100644 |
| --- a/chrome/browser/precache/precache_util.cc |
| +++ b/chrome/browser/precache/precache_util.cc |
| @@ -4,8 +4,10 @@ |
| #include "chrome/browser/precache/precache_util.h" |
| -#include "base/time/time.h" |
| +#include "base/metrics/field_trial.h" |
| +#include "base/strings/string_util.h" |
| #include "chrome/browser/browser_process.h" |
| +#include "chrome/browser/metrics/chrome_metrics_service_accessor.h" |
| #include "chrome/browser/precache/precache_manager_factory.h" |
| #include "chrome/browser/profiles/profile.h" |
| #include "chrome/browser/profiles/profile_manager.h" |
| @@ -21,6 +23,13 @@ class HttpResponseInfo; |
| namespace { |
| +const char kPrecacheFieldTrialName[] = "Precache"; |
| +const char kPrecacheSyntheticFieldTrialName[] = "PrecacheSynthetic"; |
| + |
| +// Users who precached in the last |kDaysForPrecacheCandidates| days will be |
| +// treated as precache candidates. |
| +const size_t kDaysForPrecacheCandidates = 15; |
| + |
| void UpdatePrecacheMetricsAndStateOnUIThread(const GURL& url, |
| const GURL& referrer, |
| base::TimeDelta latency, |
| @@ -70,4 +79,16 @@ void UpdatePrecacheMetricsAndState(const net::URLRequest* request, |
| data_use_measurement::IsUserRequest(*request), profile_id)); |
| } |
| +void RegisterPrecacheSyntheticFieldTrial(const base::Time& last_precache_time) { |
| + if (base::Time::Now() - last_precache_time <= |
| + base::TimeDelta::FromDays(kDaysForPrecacheCandidates)) { |
| + const auto& group_name = |
| + base::FieldTrialList::FindFullName(kPrecacheFieldTrialName); |
| + if (!group_name.empty()) { |
| + ChromeMetricsServiceAccessor::RegisterSyntheticFieldTrial( |
|
twifkak
2016/12/08 21:49:22
Ooh, how about a multi-group field trial? Just lea
|
| + kPrecacheSyntheticFieldTrialName, group_name); |
| + } |
| + } |
| +} |
| + |
| } // namespace precache |