Chromium Code Reviews| 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(); |
|
Alexei Svitkine (slow)
2016/05/18 15:03:30
Nit: Move this inside the if, so that it's not don
jwd
2016/05/18 18:31:41
Done.
|
| - 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_); |