| Index: base/metrics/field_trial_params.h
|
| diff --git a/components/variations/variations_associated_data.h b/base/metrics/field_trial_params.h
|
| similarity index 12%
|
| copy from components/variations/variations_associated_data.h
|
| copy to base/metrics/field_trial_params.h
|
| index 8b1b25f5f82a2fa584826b552f21fa0fbc7dbebc..2490149f69457cca85f9798bd192ebd194ae7bfc 100644
|
| --- a/components/variations/variations_associated_data.h
|
| +++ b/base/metrics/field_trial_params.h
|
| @@ -1,207 +1,96 @@
|
| -// Copyright 2013 The Chromium Authors. All rights reserved.
|
| +// Copyright 2017 The Chromium Authors. All rights reserved.
|
| // Use of this source code is governed by a BSD-style license that can be
|
| // found in the LICENSE file.
|
|
|
| -#ifndef COMPONENTS_VARIATIONS_VARIATIONS_ASSOCIATED_DATA_H_
|
| -#define COMPONENTS_VARIATIONS_VARIATIONS_ASSOCIATED_DATA_H_
|
| +#ifndef BASE_METRICS_FIELD_TRIAL_PARAMS_H_
|
| +#define BASE_METRICS_FIELD_TRIAL_PARAMS_H_
|
|
|
| #include <map>
|
| -#include <memory>
|
| #include <string>
|
| -#include <vector>
|
|
|
| -#include "components/variations/active_field_trials.h"
|
| -
|
| -// This file provides various helpers that extend the functionality around
|
| -// base::FieldTrial.
|
| -//
|
| -// This includes several simple APIs to handle getting and setting additional
|
| -// data related to Chrome variations, such as parameters and Google variation
|
| -// IDs. These APIs are meant to extend the base::FieldTrial APIs to offer extra
|
| -// functionality that is not offered by the simpler base::FieldTrial APIs.
|
| -//
|
| -// The AssociateGoogleVariationID and AssociateVariationParams functions are
|
| -// generally meant to be called by the VariationsService based on server-side
|
| -// variation configs, but may also be used for client-only field trials by
|
| -// invoking them directly after appending all the groups to a FieldTrial.
|
| -//
|
| -// Experiment code can then use the getter APIs to retrieve variation parameters
|
| -// or IDs:
|
| -//
|
| -// std::map<std::string, std::string> params;
|
| -// if (GetVariationParams("trial", ¶ms)) {
|
| -// // use |params|
|
| -// }
|
| -//
|
| -// std::string value = GetVariationParamValue("trial", "param_x");
|
| -// // use |value|, which will be "" if it does not exist
|
| -//
|
| -// VariationID id = GetGoogleVariationID(GOOGLE_WEB_PROPERTIES, "trial",
|
| -// "group1");
|
| -// if (id != variations::kEmptyID) {
|
| -// // use |id|
|
| -// }
|
| +#include "base/base_export.h"
|
|
|
| namespace base {
|
| -struct Feature;
|
| -} // namespace base
|
| -
|
| -namespace variations {
|
| -
|
| -typedef int VariationID;
|
| -
|
| -const VariationID EMPTY_ID = 0;
|
| -
|
| -// A key into the Associate/Get methods for VariationIDs. This is used to create
|
| -// separate ID associations for separate parties interested in VariationIDs.
|
| -enum IDCollectionKey {
|
| - // This collection is used by Google web properties, transmitted through the
|
| - // X-Client-Data header.
|
| - GOOGLE_WEB_PROPERTIES,
|
| - // This collection is used by Google web properties for signed in users only,
|
| - // transmitted through the X-Client-Data header.
|
| - GOOGLE_WEB_PROPERTIES_SIGNED_IN,
|
| - // This collection is used by Google web properties for IDs that trigger
|
| - // server side experimental behavior, transmitted through the
|
| - // X-Client-Data header.
|
| - GOOGLE_WEB_PROPERTIES_TRIGGER,
|
| - // This collection is used by Chrome Sync services, transmitted through the
|
| - // Chrome Sync experiment labels.
|
| - CHROME_SYNC_SERVICE,
|
| - // The total count of collections.
|
| - ID_COLLECTION_COUNT,
|
| -};
|
| -
|
| -// Associate a variations::VariationID value with a FieldTrial group for
|
| -// collection |key|. If an id was previously set for |trial_name| and
|
| -// |group_name|, this does nothing. The group is denoted by |trial_name| and
|
| -// |group_name|. This must be called whenever a FieldTrial is prepared (create
|
| -// the trial and append groups) and needs to have a variations::VariationID
|
| -// associated with it so Google servers can recognize the FieldTrial.
|
| -// Thread safe.
|
| -void AssociateGoogleVariationID(IDCollectionKey key,
|
| - const std::string& trial_name,
|
| - const std::string& group_name,
|
| - VariationID id);
|
| -
|
| -// As above, but overwrites any previously set id. Thread safe.
|
| -void AssociateGoogleVariationIDForce(IDCollectionKey key,
|
| - const std::string& trial_name,
|
| - const std::string& group_name,
|
| - VariationID id);
|
| -
|
| -// As above, but takes an ActiveGroupId hash pair, rather than the string names.
|
| -void AssociateGoogleVariationIDForceHashes(IDCollectionKey key,
|
| - const ActiveGroupId& active_group,
|
| - VariationID id);
|
|
|
| -// Retrieve the variations::VariationID associated with a FieldTrial group for
|
| -// collection |key|. The group is denoted by |trial_name| and |group_name|.
|
| -// This will return variations::kEmptyID if there is currently no associated ID
|
| -// for the named group. This API can be nicely combined with
|
| -// FieldTrial::GetActiveFieldTrialGroups() to enumerate the variation IDs for
|
| -// all active FieldTrial groups. Thread safe.
|
| -VariationID GetGoogleVariationID(IDCollectionKey key,
|
| - const std::string& trial_name,
|
| - const std::string& group_name);
|
| -
|
| -// Same as GetGoogleVariationID(), but takes in a hashed |active_group| rather
|
| -// than the string trial and group name.
|
| -VariationID GetGoogleVariationIDFromHashes(IDCollectionKey key,
|
| - const ActiveGroupId& active_group);
|
| +struct Feature;
|
|
|
| -// Associates the specified set of key-value |params| with the variation
|
| +// Associates the specified set of key-value |params| with the field trial
|
| // specified by |trial_name| and |group_name|. Fails and returns false if the
|
| -// specified variation already has params associated with it or the field trial
|
| +// specified field trial already has params associated with it or the trial
|
| // is already active (group() has been called on it). Thread safe.
|
| -bool AssociateVariationParams(const std::string& trial_name,
|
| - const std::string& group_name,
|
| - const std::map<std::string, std::string>& params);
|
| -
|
| -// Retrieves the set of key-value |params| for the variation associated with
|
| -// the specified field trial, based on its selected group. If the field trial
|
| -// does not exist or its selected group does not have any parameters associated
|
| -// with it, returns false and does not modify |params|. Calling this function
|
| -// will result in the field trial being marked as active if found (i.e. group()
|
| -// will be called on it), if it wasn't already. Currently, this information is
|
| -// only available from the browser process. Thread safe.
|
| -bool GetVariationParams(const std::string& trial_name,
|
| - std::map<std::string, std::string>* params);
|
| -
|
| -// Retrieves the set of key-value |params| for the variation associated with the
|
| -// specified |feature|. A feature is associated with at most one variation,
|
| -// through the variation's associated field trial, and selected group. See
|
| -// base/feature_list.h for more information on features. If the feature is not
|
| -// enabled, or if there's no associated variation params, returns false and does
|
| -// not modify |params|. Calling this function will result in the associated
|
| -// field trial being marked as active if found (i.e. group() will be called on
|
| -// it), if it wasn't already. Currently, this information is only available from
|
| -// the browser process. Thread safe.
|
| -bool GetVariationParamsByFeature(const base::Feature& feature,
|
| - std::map<std::string, std::string>* params);
|
| +BASE_EXPORT bool AssociateFieldTrialParams(
|
| + const std::string& trial_name,
|
| + const std::string& group_name,
|
| + const std::map<std::string, std::string>& params);
|
| +
|
| +// Retrieves the set of key-value |params| for the specified field trial, based
|
| +// on its selected group. If the field trial does not exist or its selected
|
| +// group does not have any parameters associated with it, returns false and
|
| +// does not modify |params|. Calling this function will result in the field
|
| +// trial being marked as active if found (i.e. group() will be called on it),
|
| +// if it wasn't already. Thread safe.
|
| +BASE_EXPORT bool GetFieldTrialParams(
|
| + const std::string& trial_name,
|
| + std::map<std::string, std::string>* params);
|
| +
|
| +// Retrieves the set of key-value |params| for the field trial associated with
|
| +// the specified |feature|. A feature is associated with at most one field
|
| +// trial and selected group. See base/feature_list.h for more information on
|
| +// features. If the feature is not enabled, or if there's no associated params,
|
| +// returns false and does not modify |params|. Calling this function will
|
| +// result in the associated field trial being marked as active if found (i.e.
|
| +// group() will be called on it), if it wasn't already. Thread safe.
|
| +BASE_EXPORT bool GetFieldTrialParamsByFeature(
|
| + const base::Feature& feature,
|
| + std::map<std::string, std::string>* params);
|
|
|
| // Retrieves a specific parameter value corresponding to |param_name| for the
|
| -// variation associated with the specified field trial, based on its selected
|
| -// group. If the field trial does not exist or the specified parameter does not
|
| -// exist, returns an empty string. Calling this function will result in the
|
| -// field trial being marked as active if found (i.e. group() will be called on
|
| -// it), if it wasn't already. Currently, this information is only available from
|
| -// the browser process. Thread safe.
|
| -std::string GetVariationParamValue(const std::string& trial_name,
|
| - const std::string& param_name);
|
| +// specified field trial, based on its selected group. If the field trial does
|
| +// not exist or the specified parameter does not exist, returns an empty
|
| +// string. Calling this function will result in the field trial being marked as
|
| +// active if found (i.e. group() will be called on it), if it wasn't already.
|
| +// Thread safe.
|
| +BASE_EXPORT std::string GetFieldTrialParamValue(const std::string& trial_name,
|
| + const std::string& param_name);
|
|
|
| // Retrieves a specific parameter value corresponding to |param_name| for the
|
| -// variation associated with the specified |feature|. A feature is associated
|
| -// with at most one variation, through the variation's associated field trial,
|
| -// and selected group. See base/feature_list.h for more information on
|
| -// features. If the feature is not enabled, or the specified parameter does not
|
| -// exist, returns an empty string. Calling this function will result in the
|
| -// associated field trial being marked as active if found (i.e. group() will be
|
| -// called on it), if it wasn't already. Currently, this information is only
|
| -// available from the browser process. Thread safe.
|
| -std::string GetVariationParamValueByFeature(const base::Feature& feature,
|
| - const std::string& param_name);
|
| -
|
| -// Same as GetVariationParamValueByFeature(). On top of that, it converts the
|
| +// field trial associated with the specified |feature|. A feature is associated
|
| +// with at most one field trial and selected group. See base/feature_list.h for
|
| +// more information on features. If the feature is not enabled, or the
|
| +// specified parameter does not exist, returns an empty string. Calling this
|
| +// function will result in the associated field trial being marked as active if
|
| +// found (i.e. group() will be called on it), if it wasn't already. Thread safe.
|
| +BASE_EXPORT std::string GetFieldTrialParamValueByFeature(
|
| + const base::Feature& feature,
|
| + const std::string& param_name);
|
| +
|
| +// Same as GetFieldTrialParamValueByFeature(). On top of that, it converts the
|
| // string value into an int using base::StringToInt() and returns it, if
|
| // successful. Otherwise, it returns |default_value|. If the string value is not
|
| // empty and the conversion does not succeed, it produces a warning to LOG.
|
| -int GetVariationParamByFeatureAsInt(const base::Feature& feature,
|
| - const std::string& param_name,
|
| - int default_value);
|
| +BASE_EXPORT int GetFieldTrialParamByFeatureAsInt(const base::Feature& feature,
|
| + const std::string& param_name,
|
| + int default_value);
|
|
|
| -// Same as GetVariationParamValueByFeature(). On top of that, it converts the
|
| +// Same as GetFieldTrialParamValueByFeature(). On top of that, it converts the
|
| // string value into a double using base::StringToDouble() and returns it, if
|
| // successful. Otherwise, it returns |default_value|. If the string value is not
|
| // empty and the conversion does not succeed, it produces a warning to LOG.
|
| -double GetVariationParamByFeatureAsDouble(const base::Feature& feature,
|
| - const std::string& param_name,
|
| - double default_value);
|
| +BASE_EXPORT double GetFieldTrialParamByFeatureAsDouble(
|
| + const base::Feature& feature,
|
| + const std::string& param_name,
|
| + double default_value);
|
|
|
| -// Same as GetVariationParamValueByFeature(). On top of that, it converts the
|
| +// Same as GetFieldTrialParamValueByFeature(). On top of that, it converts the
|
| // string value into a boolean and returns it, if successful. Otherwise, it
|
| // returns |default_value|. The only string representations accepted here are
|
| // "true" and "false". If the string value is not empty and the conversion does
|
| // not succeed, it produces a warning to LOG.
|
| -bool GetVariationParamByFeatureAsBool(const base::Feature& feature,
|
| - const std::string& param_name,
|
| - bool default_value);
|
| +BASE_EXPORT bool GetFieldTrialParamByFeatureAsBool(
|
| + const base::Feature& feature,
|
| + const std::string& param_name,
|
| + bool default_value);
|
|
|
| -// Expose some functions for testing.
|
| -namespace testing {
|
| -
|
| -// Clears all of the mapped associations. Deprecated, try to use
|
| -// VariationParamsManager instead as it does a lot of work for you
|
| -// automatically.
|
| -void ClearAllVariationIDs();
|
| -
|
| -// Clears all of the associated params. Deprecated, try to use
|
| -// VariationParamsManager instead as it does a lot of work for you
|
| -// automatically.
|
| -void ClearAllVariationParams();
|
| -
|
| -} // namespace testing
|
| -
|
| -} // namespace variations
|
| +} // namespace base
|
|
|
| -#endif // COMPONENTS_VARIATIONS_VARIATIONS_ASSOCIATED_DATA_H_
|
| +#endif // BASE_METRICS_FIELD_TRIAL_PARAMS_H_
|
|
|