| Index: base/metrics/field_trial.cc
|
| diff --git a/base/metrics/field_trial.cc b/base/metrics/field_trial.cc
|
| index 7efca7a3ef53cdaa8093b880b44d7e469bebc27d..e03c94c5969950bc7a82122b2f7602d540aeccb8 100644
|
| --- a/base/metrics/field_trial.cc
|
| +++ b/base/metrics/field_trial.cc
|
| @@ -223,6 +223,20 @@ bool FieldTrial::GetActiveGroup(ActiveGroup* active_group) const {
|
| return true;
|
| }
|
|
|
| +bool FieldTrial::GetState(FieldTrialState* field_trial_state) const {
|
| + if (!enable_field_trial_)
|
| + return false;
|
| + field_trial_state->trial_name = trial_name_;
|
| + // If the group name is empty (hasn't been finalized yet), use the default
|
| + // group name instead.
|
| + if (!group_name_.empty())
|
| + field_trial_state->group_name = group_name_;
|
| + else
|
| + field_trial_state->group_name = default_group_name_;
|
| + field_trial_state->activated = group_reported_;
|
| + return true;
|
| +}
|
| +
|
| //------------------------------------------------------------------------------
|
| // FieldTrialList methods and members.
|
|
|
| @@ -387,6 +401,29 @@ void FieldTrialList::StatesToString(std::string* output) {
|
| }
|
|
|
| // static
|
| +void FieldTrialList::AllStatesToString(std::string* output) {
|
| + if (!global_)
|
| + return;
|
| + AutoLock auto_lock(global_->lock_);
|
| +
|
| + for (const auto& registered : global_->registered_) {
|
| + FieldTrial::FieldTrialState trial;
|
| + if (!registered.second->GetState(&trial))
|
| + continue;
|
| + DCHECK_EQ(std::string::npos,
|
| + trial.trial_name.find(kPersistentStringSeparator));
|
| + DCHECK_EQ(std::string::npos,
|
| + trial.group_name.find(kPersistentStringSeparator));
|
| + if (trial.activated)
|
| + output->append(1, kActivationMarker);
|
| + output->append(trial.trial_name);
|
| + output->append(1, kPersistentStringSeparator);
|
| + output->append(trial.group_name);
|
| + output->append(1, kPersistentStringSeparator);
|
| + }
|
| +}
|
| +
|
| +// static
|
| void FieldTrialList::GetActiveFieldTrialGroups(
|
| FieldTrial::ActiveGroups* active_groups) {
|
| DCHECK(active_groups->empty());
|
|
|