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

Unified Diff: components/variations/variations_http_header_provider.cc

Issue 1528543003: Implement plumbing for variations in feedback reports. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Re-add function that was lost in a rebase. Created 5 years 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: components/variations/variations_http_header_provider.cc
diff --git a/components/variations/variations_http_header_provider.cc b/components/variations/variations_http_header_provider.cc
index 316fe521dc633ea5afc006c1676c9ea61445ee96..97f96b03e2e2a4e5d316666d19c098a9f27491a7 100644
--- a/components/variations/variations_http_header_provider.cc
+++ b/components/variations/variations_http_header_provider.cc
@@ -36,6 +36,23 @@ std::string VariationsHttpHeaderProvider::GetClientDataHeader() {
return variation_ids_header_copy;
}
+std::string VariationsHttpHeaderProvider::GetVariationsString() {
+ InitVariationIDsCacheIfNeeded();
+
+ // Construct a space-separated string with leading and trailing spaces from
+ // the variations set. Note: The ids in it will be in sorted order per the
+ // std::set contract.
+ std::string ids_string = " ";
+ {
+ base::AutoLock scoped_lock(lock_);
+ for (VariationID id : GetAllVariationIds()) {
+ ids_string.append(base::IntToString(id));
+ ids_string.push_back(' ');
+ }
+ }
+ return ids_string;
+}
+
bool VariationsHttpHeaderProvider::SetDefaultVariationIds(
const std::string& variation_ids) {
default_variation_ids_set_.clear();
@@ -127,16 +144,18 @@ void VariationsHttpHeaderProvider::InitVariationIDsCacheIfNeeded() {
base::FieldTrial::ActiveGroups initial_groups;
base::FieldTrialList::GetActiveFieldTrialGroups(&initial_groups);
- for (base::FieldTrial::ActiveGroups::const_iterator it =
- initial_groups.begin();
- it != initial_groups.end(); ++it) {
- const VariationID id = GetGoogleVariationID(GOOGLE_WEB_PROPERTIES,
- it->trial_name, it->group_name);
+
+ for (const auto& entry : initial_groups) {
+ const VariationID id =
+ GetGoogleVariationID(GOOGLE_WEB_PROPERTIES, entry.trial_name,
+ entry.group_name);
if (id != EMPTY_ID)
variation_ids_set_.insert(id);
- const VariationID trigger_id = GetGoogleVariationID(
- GOOGLE_WEB_PROPERTIES_TRIGGER, it->trial_name, it->group_name);
+ const VariationID trigger_id =
+ GetGoogleVariationID(GOOGLE_WEB_PROPERTIES_TRIGGER, entry.trial_name,
+ entry.group_name);
+
if (trigger_id != EMPTY_ID)
variation_trigger_ids_set_.insert(trigger_id);
}
@@ -174,13 +193,7 @@ void VariationsHttpHeaderProvider::UpdateVariationIDsHeaderValue() {
if (total_id_count > 20)
return;
- // Merge the two sets of experiment ids.
- std::set<VariationID> all_variation_ids_set = default_variation_ids_set_;
- for (VariationID id : variation_ids_set_)
- all_variation_ids_set.insert(id);
- for (VariationID id : synthetic_variation_ids_set_)
- all_variation_ids_set.insert(id);
-
+ std::set<VariationID> all_variation_ids_set = GetAllVariationIds();
std::set<VariationID> all_trigger_ids_set = default_trigger_id_set_;
for (VariationID id : variation_trigger_ids_set_)
all_trigger_ids_set.insert(id);
@@ -203,4 +216,15 @@ void VariationsHttpHeaderProvider::UpdateVariationIDsHeaderValue() {
variation_ids_header_ = hashed;
}
+std::set<VariationID> VariationsHttpHeaderProvider::GetAllVariationIds() {
+ lock_.AssertAcquired();
+
+ std::set<VariationID> all_variation_ids_set = default_variation_ids_set_;
+ for (VariationID id : variation_ids_set_)
+ all_variation_ids_set.insert(id);
+ for (VariationID id : synthetic_variation_ids_set_)
+ all_variation_ids_set.insert(id);
+ return all_variation_ids_set;
+}
+
} // namespace variations

Powered by Google App Engine
This is Rietveld 408576698