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

Side by Side Diff: components/variations/service/variations_service.cc

Issue 2924983003: [Variations] Refactor all state used for study filtering into a container struct. (Closed)
Patch Set: Update unit tests Created 3 years, 6 months 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 unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "components/variations/service/variations_service.h" 5 #include "components/variations/service/variations_service.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 #include <stdint.h> 8 #include <stdint.h>
9 9
10 #include <utility> 10 #include <utility>
(...skipping 315 matching lines...) Expand 10 before | Expand all | Expand 10 after
326 RecordCreateTrialsSeedExpiry(VARIATIONS_SEED_EXPIRY_EXPIRED); 326 RecordCreateTrialsSeedExpiry(VARIATIONS_SEED_EXPIRY_EXPIRED);
327 return false; 327 return false;
328 } 328 }
329 RecordCreateTrialsSeedExpiry(VARIATIONS_SEED_EXPIRY_NOT_EXPIRED); 329 RecordCreateTrialsSeedExpiry(VARIATIONS_SEED_EXPIRY_NOT_EXPIRED);
330 } 330 }
331 331
332 const base::Version current_version(version_info::GetVersionNumber()); 332 const base::Version current_version(version_info::GetVersionNumber());
333 if (!current_version.IsValid()) 333 if (!current_version.IsValid())
334 return false; 334 return false;
335 335
336 variations::Study_Channel channel = 336 std::unique_ptr<ClientFilterableState> client_state =
337 GetChannelForVariations(client_->GetChannel()); 337 GetClientFilterableStateForVersion(current_version);
338 UMA_HISTOGRAM_SPARSE_SLOWLY("Variations.UserChannel", channel); 338 UMA_HISTOGRAM_SPARSE_SLOWLY("Variations.UserChannel", client_state->channel);
339 339
340 const std::string latest_country = GetLatestCountry();
341 std::unique_ptr<const base::FieldTrial::EntropyProvider> low_entropy_provider( 340 std::unique_ptr<const base::FieldTrial::EntropyProvider> low_entropy_provider(
342 CreateLowEntropyProvider()); 341 CreateLowEntropyProvider());
343 // Note that passing |&ui_string_overrider_| via base::Unretained below is 342 // Note that passing |&ui_string_overrider_| via base::Unretained below is
344 // safe because the callback is executed synchronously. It is not possible 343 // safe because the callback is executed synchronously. It is not possible
345 // to pass UIStringOverrider itself to VariationSeedProcesor as variations 344 // to pass UIStringOverrider itself to VariationSeedProcessor as variations
346 // components should not depends on //ui/base. 345 // components should not depends on //ui/base.
347 variations::VariationsSeedProcessor().CreateTrialsFromSeed( 346 variations::VariationsSeedProcessor().CreateTrialsFromSeed(
348 seed, client_->GetApplicationLocale(), 347 seed, *client_state,
349 GetReferenceDateForExpiryChecks(local_state_), current_version, channel,
350 GetCurrentFormFactor(), GetHardwareClass(), latest_country,
351 LoadPermanentConsistencyCountry(current_version, latest_country),
352 base::Bind(&UIStringOverrider::OverrideUIString, 348 base::Bind(&UIStringOverrider::OverrideUIString,
353 base::Unretained(&ui_string_overrider_)), 349 base::Unretained(&ui_string_overrider_)),
354 low_entropy_provider.get(), feature_list); 350 low_entropy_provider.get(), feature_list);
355 351
356 const base::Time now = base::Time::Now(); 352 const base::Time now = base::Time::Now();
357 353
358 // Log the "freshness" of the seed that was just used. The freshness is the 354 // Log the "freshness" of the seed that was just used. The freshness is the
359 // time between the last successful seed download and now. 355 // time between the last successful seed download and now.
360 if (last_fetch_time_internal) { 356 if (last_fetch_time_internal) {
361 const base::TimeDelta delta = 357 const base::TimeDelta delta =
(...skipping 258 matching lines...) Expand 10 before | Expand all | Expand 10 after
620 616
621 std::unique_ptr<const base::FieldTrial::EntropyProvider> 617 std::unique_ptr<const base::FieldTrial::EntropyProvider>
622 VariationsService::CreateLowEntropyProvider() { 618 VariationsService::CreateLowEntropyProvider() {
623 return state_manager_->CreateLowEntropyProvider(); 619 return state_manager_->CreateLowEntropyProvider();
624 } 620 }
625 621
626 bool VariationsService::LoadSeed(VariationsSeed* seed) { 622 bool VariationsService::LoadSeed(VariationsSeed* seed) {
627 return seed_store_.LoadSeed(seed); 623 return seed_store_.LoadSeed(seed);
628 } 624 }
629 625
626 std::unique_ptr<ClientFilterableState>
627 VariationsService::GetClientFilterableStateForVersion(
628 const base::Version& version) {
629 const std::string latest_country = GetLatestCountry();
Alexei Svitkine (slow) 2017/06/07 15:18:08 Nit: Move closer to where it's used - above line 6
Ilya Sherman 2017/06/07 21:50:08 Done.
630
631 std::unique_ptr<ClientFilterableState> state =
632 base::MakeUnique<ClientFilterableState>();
633 variations::Study::Channel channel =
634 GetChannelForVariations(client_->GetChannel());
635 state->locale = client_->GetApplicationLocale();
636 state->reference_date = GetReferenceDateForExpiryChecks(local_state_);
637 state->version = version;
638 state->channel = channel;
639 state->form_factor = GetCurrentFormFactor();
640 state->platform = ClientFilterableState::GetCurrentPlatform();
641 state->hardware_class = GetHardwareClass();
642 state->session_consistency_country = latest_country;
643 state->permanent_consistency_country =
644 LoadPermanentConsistencyCountry(version, latest_country);
645 return state;
646 }
647
630 void VariationsService::FetchVariationsSeed() { 648 void VariationsService::FetchVariationsSeed() {
631 DCHECK(thread_checker_.CalledOnValidThread()); 649 DCHECK(thread_checker_.CalledOnValidThread());
632 650
633 const web_resource::ResourceRequestAllowedNotifier::State state = 651 const web_resource::ResourceRequestAllowedNotifier::State state =
634 resource_request_allowed_notifier_->GetResourceRequestsAllowedState(); 652 resource_request_allowed_notifier_->GetResourceRequestsAllowedState();
635 RecordRequestsAllowedHistogram(ResourceRequestStateToHistogramValue(state)); 653 RecordRequestsAllowedHistogram(ResourceRequestStateToHistogramValue(state));
636 if (state != web_resource::ResourceRequestAllowedNotifier::ALLOWED) { 654 if (state != web_resource::ResourceRequestAllowedNotifier::ALLOWED) {
637 DVLOG(1) << "Resource requests were not allowed. Waiting for notification."; 655 DVLOG(1) << "Resource requests were not allowed. Waiting for notification.";
638 return; 656 return;
639 } 657 }
(...skipping 124 matching lines...) Expand 10 before | Expand all | Expand 10 after
764 782
765 const base::ElapsedTimer timer; 783 const base::ElapsedTimer timer;
766 784
767 std::unique_ptr<const base::FieldTrial::EntropyProvider> default_provider = 785 std::unique_ptr<const base::FieldTrial::EntropyProvider> default_provider =
768 state_manager_->CreateDefaultEntropyProvider(); 786 state_manager_->CreateDefaultEntropyProvider();
769 std::unique_ptr<const base::FieldTrial::EntropyProvider> low_provider = 787 std::unique_ptr<const base::FieldTrial::EntropyProvider> low_provider =
770 state_manager_->CreateLowEntropyProvider(); 788 state_manager_->CreateLowEntropyProvider();
771 variations::VariationsSeedSimulator seed_simulator(*default_provider, 789 variations::VariationsSeedSimulator seed_simulator(*default_provider,
772 *low_provider); 790 *low_provider);
773 791
774 const std::string latest_country = GetLatestCountry(); 792 std::unique_ptr<ClientFilterableState> client_state =
775 const variations::VariationsSeedSimulator::Result result = 793 GetClientFilterableStateForVersion(version);
776 seed_simulator.SimulateSeedStudies( 794 const VariationsSeedSimulator::Result result =
777 *seed, client_->GetApplicationLocale(), 795 seed_simulator.SimulateSeedStudies(*seed, *client_state);
778 GetReferenceDateForExpiryChecks(local_state_), version,
779 GetChannelForVariations(client_->GetChannel()),
780 GetCurrentFormFactor(), GetHardwareClass(), latest_country,
781 LoadPermanentConsistencyCountry(version, latest_country));
782 796
783 UMA_HISTOGRAM_COUNTS_100("Variations.SimulateSeed.NormalChanges", 797 UMA_HISTOGRAM_COUNTS_100("Variations.SimulateSeed.NormalChanges",
784 result.normal_group_change_count); 798 result.normal_group_change_count);
785 UMA_HISTOGRAM_COUNTS_100("Variations.SimulateSeed.KillBestEffortChanges", 799 UMA_HISTOGRAM_COUNTS_100("Variations.SimulateSeed.KillBestEffortChanges",
786 result.kill_best_effort_group_change_count); 800 result.kill_best_effort_group_change_count);
787 UMA_HISTOGRAM_COUNTS_100("Variations.SimulateSeed.KillCriticalChanges", 801 UMA_HISTOGRAM_COUNTS_100("Variations.SimulateSeed.KillCriticalChanges",
788 result.kill_critical_group_change_count); 802 result.kill_critical_group_change_count);
789 803
790 UMA_HISTOGRAM_TIMES("Variations.SimulateSeed.Duration", timer.Elapsed()); 804 UMA_HISTOGRAM_TIMES("Variations.SimulateSeed.Duration", timer.Elapsed());
791 805
(...skipping 136 matching lines...) Expand 10 before | Expand all | Expand 10 after
928 std::string VariationsService::GetLatestCountry() const { 942 std::string VariationsService::GetLatestCountry() const {
929 const std::string override_country = 943 const std::string override_country =
930 base::CommandLine::ForCurrentProcess()->GetSwitchValueASCII( 944 base::CommandLine::ForCurrentProcess()->GetSwitchValueASCII(
931 switches::kVariationsOverrideCountry); 945 switches::kVariationsOverrideCountry);
932 return !override_country.empty() 946 return !override_country.empty()
933 ? override_country 947 ? override_country
934 : local_state_->GetString(prefs::kVariationsCountry); 948 : local_state_->GetString(prefs::kVariationsCountry);
935 } 949 }
936 950
937 } // namespace variations 951 } // namespace variations
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698