Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(19)

Unified Diff: chrome/browser/precache/precache_util.cc

Issue 2596093002: Create a synthetic field trial for precache. (Closed)
Patch Set: Rebase. Created 3 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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..407a5ef4583e97a2f6f94bd471466663808afdbb 100644
--- a/chrome/browser/precache/precache_util.cc
+++ b/chrome/browser/precache/precache_util.cc
@@ -4,8 +4,13 @@
#include "chrome/browser/precache/precache_util.h"
+#include <string>
+#include <vector>
+
+#include "base/metrics/field_trial.h"
#include "base/time/time.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 +26,9 @@ class HttpResponseInfo;
namespace {
+const char kPrecacheSynthetic15D[] = "PrecacheSynthetic15D";
+const char kPrecacheSynthetic1D[] = "PrecacheSynthetic1D";
+
void UpdatePrecacheMetricsAndStateOnUIThread(const GURL& url,
const GURL& referrer,
base::TimeDelta latency,
@@ -42,7 +50,8 @@ void UpdatePrecacheMetricsAndStateOnUIThread(const GURL& url,
return;
precache_manager->UpdatePrecacheMetricsAndState(
- url, referrer, latency, fetch_time, info, size, is_user_traffic);
+ url, referrer, latency, fetch_time, info, size, is_user_traffic,
+ base::Bind(&precache::RegisterPrecacheSyntheticFieldTrial));
}
} // namespace
@@ -70,4 +79,25 @@ void UpdatePrecacheMetricsAndState(const net::URLRequest* request,
data_use_measurement::IsUserRequest(*request), profile_id));
}
+// |last_precache_time| is the last time precache task was run.
+void RegisterPrecacheSyntheticFieldTrial(base::Time last_precache_time) {
+ DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
+
+ std::vector<uint32_t> groups;
+ base::TimeDelta time_ago = base::Time::Now() - last_precache_time;
+ // Look up the current group name (e.g. Control or Enabled).
+ std::string group_name =
+ base::FieldTrialList::FindFullName(kPrecacheFieldTrialName);
+ // group_name should only be empty if the Precache trial does not exist.
+ if (!group_name.empty()) {
+ // Register matching synthetic trials for 15-day and 1-day candidates.
+ if (time_ago <= base::TimeDelta::FromDays(15))
+ ChromeMetricsServiceAccessor::RegisterSyntheticFieldTrial(
+ kPrecacheSynthetic15D, group_name);
+ if (time_ago <= base::TimeDelta::FromDays(1))
+ ChromeMetricsServiceAccessor::RegisterSyntheticFieldTrial(
+ kPrecacheSynthetic1D, group_name);
+ }
+}
+
} // namespace precache
« no previous file with comments | « chrome/browser/metrics/chrome_metrics_service_accessor.h ('k') | components/precache/content/precache_manager.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698