| Index: components/metrics/metrics_state_manager.cc
|
| diff --git a/components/metrics/metrics_state_manager.cc b/components/metrics/metrics_state_manager.cc
|
| index 0f2904e5ff036be29b872b38c05fb888402f7ee8..e71264e3912a94743555b031e07077a2b4fb4e83 100644
|
| --- a/components/metrics/metrics_state_manager.cc
|
| +++ b/components/metrics/metrics_state_manager.cc
|
| @@ -43,6 +43,12 @@ int GenerateLowEntropySource() {
|
| return base::RandInt(0, kMaxLowEntropySize - 1);
|
| }
|
|
|
| +// Records the given |low_entorpy_source_value| in a histogram.
|
| +void LogLowEntropyValue(int low_entropy_source_value) {
|
| + UMA_HISTOGRAM_SPARSE_SLOWLY("UMA.LowEntropySourceValue",
|
| + low_entropy_source_value);
|
| +}
|
| +
|
| } // namespace
|
|
|
| // static
|
| @@ -148,7 +154,7 @@ void MetricsStateManager::CheckForClonedInstall(
|
| }
|
|
|
| std::unique_ptr<const base::FieldTrial::EntropyProvider>
|
| -MetricsStateManager::CreateEntropyProvider() {
|
| +MetricsStateManager::CreateDefaultEntropyProvider() {
|
| // For metrics reporting-enabled users, we combine the client ID and low
|
| // entropy source to get the final entropy source. Otherwise, only use the low
|
| // entropy source.
|
| @@ -157,8 +163,6 @@ MetricsStateManager::CreateEntropyProvider() {
|
| // know the low entropy source.
|
| // 2) It makes the final entropy source resettable.
|
| const int low_entropy_source_value = GetLowEntropySource();
|
| - UMA_HISTOGRAM_SPARSE_SLOWLY("UMA.LowEntropySourceValue",
|
| - low_entropy_source_value);
|
| if (enabled_state_provider_->IsConsentGiven()) {
|
| UpdateEntropySourceReturnedValue(ENTROPY_SOURCE_HIGH);
|
| const std::string high_entropy_source =
|
| @@ -168,6 +172,13 @@ MetricsStateManager::CreateEntropyProvider() {
|
| }
|
|
|
| UpdateEntropySourceReturnedValue(ENTROPY_SOURCE_LOW);
|
| + return CreateLowEntropyProvider();
|
| +}
|
| +
|
| +std::unique_ptr<const base::FieldTrial::EntropyProvider>
|
| +MetricsStateManager::CreateLowEntropyProvider() {
|
| + const int low_entropy_source_value = GetLowEntropySource();
|
| +
|
| #if defined(OS_ANDROID) || defined(OS_IOS)
|
| return std::unique_ptr<const base::FieldTrial::EntropyProvider>(
|
| new CachingPermutedEntropyProvider(local_state_, low_entropy_source_value,
|
| @@ -198,8 +209,6 @@ std::unique_ptr<MetricsStateManager> MetricsStateManager::Create(
|
| // static
|
| void MetricsStateManager::RegisterPrefs(PrefRegistrySimple* registry) {
|
| registry->RegisterBooleanPref(prefs::kMetricsResetIds, false);
|
| - // registry->RegisterIntegerPref(prefs::kMetricsDefaultOptIn,
|
| - // DEFAULT_UNKNOWN);
|
| registry->RegisterStringPref(prefs::kMetricsClientID, std::string());
|
| registry->RegisterInt64Pref(prefs::kMetricsReportingEnabledTimestamp, 0);
|
| registry->RegisterIntegerPref(prefs::kMetricsLowEntropySource,
|
| @@ -274,11 +283,13 @@ void MetricsStateManager::UpdateLowEntropySource() {
|
| // it below.
|
| if (value >= 0 && value < kMaxLowEntropySize) {
|
| low_entropy_source_ = value;
|
| + LogLowEntropyValue(low_entropy_source_);
|
| return;
|
| }
|
| }
|
|
|
| low_entropy_source_ = GenerateLowEntropySource();
|
| + LogLowEntropyValue(low_entropy_source_);
|
| local_state_->SetInteger(prefs::kMetricsLowEntropySource,
|
| low_entropy_source_);
|
| CachingPermutedEntropyProvider::ClearCache(local_state_);
|
|
|