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 |