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

Unified Diff: base/metrics/field_trial.cc

Issue 700953002: Send all field trials from the browser. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@finch4
Patch Set: Created 6 years, 1 month 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: 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,

Powered by Google App Engine
This is Rietveld 408576698