Index: base/metrics/field_trial.cc |
diff --git a/base/metrics/field_trial.cc b/base/metrics/field_trial.cc |
index 7efca7a3ef53cdaa8093b880b44d7e469bebc27d..b7812d935d9fade9aedc40fbdc210862ae98aca0 100644 |
--- a/base/metrics/field_trial.cc |
+++ b/base/metrics/field_trial.cc |
@@ -223,6 +223,15 @@ bool FieldTrial::GetActiveGroup(ActiveGroup* active_group) const { |
return true; |
} |
+bool FieldTrial::GetAllGroup(AllGroup* all_group) const { |
+ if (!enable_field_trial_) |
+ return false; |
+ all_group->trial_name = trial_name_; |
+ all_group->group_name = group_name_; |
+ all_group->activated = group_reported_; |
+ return true; |
+} |
+ |
//------------------------------------------------------------------------------ |
// FieldTrialList methods and members. |
@@ -387,6 +396,25 @@ void FieldTrialList::StatesToString(std::string* output) { |
} |
// static |
+void FieldTrialList::AllStatesToString(std::string* output) { |
+ FieldTrial::AllGroups all_groups; |
+ GetAllFieldTrialGroups(&all_groups); |
+ for (FieldTrial::AllGroups::const_iterator it = all_groups.begin(); |
+ it != all_groups.end(); ++it) { |
Alexei Svitkine (slow)
2014/11/05 16:17:13
Nit: We now support C++11, so this can be:
for (c
Georges Khalil
2014/11/05 20:00:12
Done.
|
+ DCHECK_EQ(std::string::npos, |
+ it->trial_name.find(kPersistentStringSeparator)); |
+ DCHECK_EQ(std::string::npos, |
+ it->group_name.find(kPersistentStringSeparator)); |
+ if (it->activated) |
+ output->append(1, kActivationMarker); |
+ output->append(it->trial_name); |
+ output->append(1, kPersistentStringSeparator); |
+ output->append(it->group_name); |
+ output->append(1, kPersistentStringSeparator); |
+ } |
+} |
+ |
+// static |
void FieldTrialList::GetActiveFieldTrialGroups( |
FieldTrial::ActiveGroups* active_groups) { |
DCHECK(active_groups->empty()); |
@@ -403,6 +431,22 @@ void FieldTrialList::GetActiveFieldTrialGroups( |
} |
// static |
+void FieldTrialList::GetAllFieldTrialGroups( |
+ FieldTrial::AllGroups* all_groups) { |
+ DCHECK(all_groups->empty()); |
+ if (!global_) |
+ return; |
+ AutoLock auto_lock(global_->lock_); |
+ |
+ for (RegistrationMap::iterator it = global_->registered_.begin(); |
+ it != global_->registered_.end(); ++it) { |
+ FieldTrial::AllGroup all_group; |
+ if (it->second->GetAllGroup(&all_group)) |
+ all_groups->push_back(all_group); |
+ } |
+} |
+ |
+// static |
bool FieldTrialList::CreateTrialsFromString( |
const std::string& trials_string, |
FieldTrialActivationMode mode, |