Chromium Code Reviews| Index: components/variations/net/variations_http_header_provider.cc |
| diff --git a/components/variations/net/variations_http_header_provider.cc b/components/variations/net/variations_http_header_provider.cc |
| index 1220fae1640fc55545dfd978226b677ab3ebb0f3..fa630cf78da685ffee277c10ead8e1001f2e8a1a 100644 |
| --- a/components/variations/net/variations_http_header_provider.cc |
| +++ b/components/variations/net/variations_http_header_provider.cc |
| @@ -137,6 +137,20 @@ void VariationsHttpHeaderProvider::OnFieldTrialGroupFinalized( |
| UpdateVariationIDsHeaderValue(); |
| } |
| +void VariationsHttpHeaderProvider::OnSyntheticTrialsChanged( |
| + const std::vector<metrics::SyntheticTrialGroup>& groups) { |
| + base::AutoLock scoped_lock(lock_); |
| + |
| + synthetic_variation_ids_set_.clear(); |
| + for (const metrics::SyntheticTrialGroup& group : groups) { |
| + const VariationID id = |
| + GetGoogleVariationIDFromHashes(GOOGLE_WEB_PROPERTIES, group.id); |
|
jwd
2014/10/31 18:50:26
Are there no plans to support triggering experimen
Alexei Svitkine (slow)
2014/10/31 18:51:06
Not currently. The goal is to enable analysis, not
|
| + if (id != EMPTY_ID) |
| + synthetic_variation_ids_set_.insert(id); |
| + } |
| + UpdateVariationIDsHeaderValue(); |
| +} |
| + |
| void VariationsHttpHeaderProvider::InitVariationIDsCacheIfNeeded() { |
| base::AutoLock scoped_lock(lock_); |
| if (variation_ids_cache_initialized_) |
| @@ -186,7 +200,8 @@ void VariationsHttpHeaderProvider::UpdateVariationIDsHeaderValue() { |
| variation_ids_header_.clear(); |
| if (variation_ids_set_.empty() && default_variation_ids_set_.empty() && |
| - variation_trigger_ids_set_.empty() && default_trigger_id_set_.empty()) { |
| + variation_trigger_ids_set_.empty() && default_trigger_id_set_.empty() && |
| + synthetic_variation_ids_set_.empty()) { |
| return; |
| } |
| @@ -203,26 +218,20 @@ void VariationsHttpHeaderProvider::UpdateVariationIDsHeaderValue() { |
| // Merge the two sets of experiment ids. |
| std::set<VariationID> all_variation_ids_set = default_variation_ids_set_; |
| - for (std::set<VariationID>::const_iterator it = variation_ids_set_.begin(); |
| - it != variation_ids_set_.end(); ++it) { |
| - all_variation_ids_set.insert(*it); |
| - } |
| - ClientVariations proto; |
| - for (std::set<VariationID>::const_iterator it = all_variation_ids_set.begin(); |
| - it != all_variation_ids_set.end(); ++it) { |
| - proto.add_variation_id(*it); |
| - } |
| + 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_trigger_ids_set = default_trigger_id_set_; |
| - for (std::set<VariationID>::const_iterator it = |
| - variation_trigger_ids_set_.begin(); |
| - it != variation_trigger_ids_set_.end(); ++it) { |
| - all_trigger_ids_set.insert(*it); |
| - } |
| - for (std::set<VariationID>::const_iterator it = all_trigger_ids_set.begin(); |
| - it != all_trigger_ids_set.end(); ++it) { |
| - proto.add_trigger_variation_id(*it); |
| - } |
| + for (VariationID id : variation_trigger_ids_set_) |
| + all_trigger_ids_set.insert(id); |
| + |
| + ClientVariations proto; |
| + for (VariationID id : all_variation_ids_set) |
| + proto.add_variation_id(id); |
| + for (VariationID id : all_trigger_ids_set) |
| + proto.add_trigger_variation_id(id); |
| std::string serialized; |
| proto.SerializeToString(&serialized); |