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

Unified Diff: base/metrics/field_trial.h

Issue 6213001: disable field trials if the build is 30 days or older (Closed) Base URL: http://src.chromium.org/svn/trunk/src/
Patch Set: '' Created 9 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
« no previous file with comments | « no previous file | base/metrics/field_trial.cc » ('j') | net/disk_cache/backend_impl.cc » ('J')
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: base/metrics/field_trial.h
===================================================================
--- base/metrics/field_trial.h (revision 70854)
+++ base/metrics/field_trial.h (working copy)
@@ -67,6 +67,7 @@
#include <string>
#include "base/lock.h"
+#include "base/logging.h"
#include "base/ref_counted.h"
#include "base/time.h"
@@ -110,8 +111,18 @@
// If the field trial is not in an experiment, this returns the empty string.
// if the group's name is empty, a name of "_" concatenated with the group
// number is used as the group name.
- std::string group_name() const { return group_name_; }
+ std::string group_name() const {
+ DCHECK(all_remaining_probability_set_);
+ return group_name_;
+ }
+ // Set the usage_timeout from build time of the module to disable Field Trial.
+ void SetUsageTimeout(const base::TimeDelta& usage_timeout);
+
+ base::TimeDelta usageTimeout() const {
+ return usage_timeout_;
+ }
+
// Helper function for the most common use: as an argument to specifiy the
// name of a HISTOGRAM. Use the original histogram name as the name_prefix.
static std::string MakeName(const std::string& name_prefix,
@@ -125,6 +136,17 @@
virtual ~FieldTrial();
+ // Determine if the field trial is to be disabled or not based on
+ // usage_timeout_, build time of the module and Now(). This method sets
+ // disable_field_trial_ to true, if the difference between build time of the
+ // module and Now() is greater than usage_timeout_. If disable_field_trial_ is
+ // true then the field trial reverts to the 'default' bucket.
+ static bool ShouldFieldTrialBeDisabled(
+ const base::TimeDelta& usage_timeout);
+
+ // Get build time.
+ static Time GetBuildTime();
+
// The name of the field trial, as can be found via the FieldTrialList.
// This is empty of the trial is not in the experiment.
const std::string name_;
@@ -151,6 +173,18 @@
// If this Trial is not a member of an group, this string is empty.
std::string group_name_;
+ // Used to assert that kAllRemainingProbability is beig used.
+ // bucket.
+ bool all_remaining_probability_set_;
+
+ // The default value (all remaining probabilities) can be selected after the
+ // usage_timeout, which is based on the build time of the module.
+ base::TimeDelta usage_timeout_;
+
+ // When disable_field_trial_ is true, field trial reverts to the 'default'
+ // bucket.
+ bool disable_field_trial_;
+
// When benchmarking is enabled, field trials all revert to the 'default'
// bucket.
static bool enable_benchmarking_;
« no previous file with comments | « no previous file | base/metrics/field_trial.cc » ('j') | net/disk_cache/backend_impl.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698