| Index: components/variations/service/variations_service.cc
 | 
| diff --git a/components/variations/service/variations_service.cc b/components/variations/service/variations_service.cc
 | 
| index bda0338a32e59d29b7e634314785c35eaca51495..cc2e38d518a97eccaf6e0e7bbe422fdf1f2275bc 100644
 | 
| --- a/components/variations/service/variations_service.cc
 | 
| +++ b/components/variations/service/variations_service.cc
 | 
| @@ -333,22 +333,18 @@ bool VariationsService::CreateTrialsFromSeed(base::FeatureList* feature_list) {
 | 
|    if (!current_version.IsValid())
 | 
|      return false;
 | 
|  
 | 
| -  variations::Study_Channel channel =
 | 
| -      GetChannelForVariations(client_->GetChannel());
 | 
| -  UMA_HISTOGRAM_SPARSE_SLOWLY("Variations.UserChannel", channel);
 | 
| +  std::unique_ptr<ClientFilterableState> client_state =
 | 
| +      GetClientFilterableStateForVersion(current_version);
 | 
| +  UMA_HISTOGRAM_SPARSE_SLOWLY("Variations.UserChannel", client_state->channel);
 | 
|  
 | 
| -  const std::string latest_country = GetLatestCountry();
 | 
|    std::unique_ptr<const base::FieldTrial::EntropyProvider> low_entropy_provider(
 | 
|        CreateLowEntropyProvider());
 | 
|    // Note that passing |&ui_string_overrider_| via base::Unretained below is
 | 
|    // safe because the callback is executed synchronously. It is not possible
 | 
| -  // to pass UIStringOverrider itself to VariationSeedProcesor as variations
 | 
| +  // to pass UIStringOverrider itself to VariationSeedProcessor as variations
 | 
|    // components should not depends on //ui/base.
 | 
|    variations::VariationsSeedProcessor().CreateTrialsFromSeed(
 | 
| -      seed, client_->GetApplicationLocale(),
 | 
| -      GetReferenceDateForExpiryChecks(local_state_), current_version, channel,
 | 
| -      GetCurrentFormFactor(), GetHardwareClass(), latest_country,
 | 
| -      LoadPermanentConsistencyCountry(current_version, latest_country),
 | 
| +      seed, *client_state,
 | 
|        base::Bind(&UIStringOverrider::OverrideUIString,
 | 
|                   base::Unretained(&ui_string_overrider_)),
 | 
|        low_entropy_provider.get(), feature_list);
 | 
| @@ -627,6 +623,24 @@ bool VariationsService::LoadSeed(VariationsSeed* seed) {
 | 
|    return seed_store_.LoadSeed(seed);
 | 
|  }
 | 
|  
 | 
| +std::unique_ptr<ClientFilterableState>
 | 
| +VariationsService::GetClientFilterableStateForVersion(
 | 
| +    const base::Version& version) {
 | 
| +  std::unique_ptr<ClientFilterableState> state =
 | 
| +      base::MakeUnique<ClientFilterableState>();
 | 
| +  state->locale = client_->GetApplicationLocale();
 | 
| +  state->reference_date = GetReferenceDateForExpiryChecks(local_state_);
 | 
| +  state->version = version;
 | 
| +  state->channel = GetChannelForVariations(client_->GetChannel());
 | 
| +  state->form_factor = GetCurrentFormFactor();
 | 
| +  state->platform = ClientFilterableState::GetCurrentPlatform();
 | 
| +  state->hardware_class = GetHardwareClass();
 | 
| +  state->session_consistency_country = GetLatestCountry();
 | 
| +  state->permanent_consistency_country = LoadPermanentConsistencyCountry(
 | 
| +      version, state->session_consistency_country);
 | 
| +  return state;
 | 
| +}
 | 
| +
 | 
|  void VariationsService::FetchVariationsSeed() {
 | 
|    DCHECK(thread_checker_.CalledOnValidThread());
 | 
|  
 | 
| @@ -771,14 +785,10 @@ void VariationsService::PerformSimulationWithVersion(
 | 
|    variations::VariationsSeedSimulator seed_simulator(*default_provider,
 | 
|                                                       *low_provider);
 | 
|  
 | 
| -  const std::string latest_country = GetLatestCountry();
 | 
| -  const variations::VariationsSeedSimulator::Result result =
 | 
| -      seed_simulator.SimulateSeedStudies(
 | 
| -          *seed, client_->GetApplicationLocale(),
 | 
| -          GetReferenceDateForExpiryChecks(local_state_), version,
 | 
| -          GetChannelForVariations(client_->GetChannel()),
 | 
| -          GetCurrentFormFactor(), GetHardwareClass(), latest_country,
 | 
| -          LoadPermanentConsistencyCountry(version, latest_country));
 | 
| +  std::unique_ptr<ClientFilterableState> client_state =
 | 
| +      GetClientFilterableStateForVersion(version);
 | 
| +  const VariationsSeedSimulator::Result result =
 | 
| +      seed_simulator.SimulateSeedStudies(*seed, *client_state);
 | 
|  
 | 
|    UMA_HISTOGRAM_COUNTS_100("Variations.SimulateSeed.NormalChanges",
 | 
|                             result.normal_group_change_count);
 | 
| 
 |