Chromium Code Reviews| Index: chrome/browser/metrics/metrics_service.cc |
| =================================================================== |
| --- chrome/browser/metrics/metrics_service.cc (revision 207251) |
| +++ chrome/browser/metrics/metrics_service.cc (working copy) |
| @@ -291,9 +291,9 @@ |
| } |
| // The argument used to generate a non-identifying entropy source. We want no |
| -// more than 13 bits of entropy, so use this max to return a number between 1 |
| -// and 2^13 = 8192 as the entropy source. |
| -const uint32 kMaxLowEntropySize = (1 << 13); |
| +// more than 13 bits of entropy, so use this max to return a number in the range |
| +// [0, 7999] as the entropy source (12.97 bits of entropy). |
| +const int kMaxLowEntropySize = 8000; |
| // Default prefs value for prefs::kMetricsLowEntropySource to indicate that the |
| // value has not yet been set. |
| @@ -1043,13 +1043,17 @@ |
| // Only try to load the value from prefs if the user did not request a reset. |
| // Otherwise, skip to generating a new value. |
| if (!command_line->HasSwitch(switches::kResetVariationState)) { |
| - const int value = local_state->GetInteger(prefs::kMetricsLowEntropySource); |
| - if (value != kLowEntropySourceNotSet) { |
| - // Ensure the prefs value is in the range [0, kMaxLowEntropySize). Old |
| - // versions of the code would generate values in the range of [1, 8192], |
| - // so the below line ensures 8192 gets mapped to 0 and also guards against |
| - // the case of corrupted values. |
| - low_entropy_source_ = value % kMaxLowEntropySize; |
| + int value = local_state->GetInteger(prefs::kMetricsLowEntropySource); |
| + // Old versions of the code would generate values in the range of [1, 8192], |
| + // before the range was switched to [0, 8191] and then [0, 7999]. Map 8192 |
|
Ilya Sherman
2013/06/21 01:12:53
nit: "and then [0, 7999]" -> "and then to [0, 7999
Alexei Svitkine (slow)
2013/06/21 14:29:09
Done.
|
| + // to 0, so that the 0th bucket remains uniform, while re-generating the |
| + // low entropy source for old values in the [8000, 8191] range. |
|
Ilya Sherman
2013/06/21 01:12:53
I wonder whether it's really worth keeping this ex
Alexei Svitkine (slow)
2013/06/21 04:41:30
It is. We never migrated those users to have the n
|
| + if (value == 8192) |
| + value = 0; |
| + // If the value is outside the [0, kMaxLowEntropySize) range, re-generate |
| + // it below. |
| + if (value >= 0 && value < kMaxLowEntropySize) { |
| + low_entropy_source_ = value; |
| UMA_HISTOGRAM_BOOLEAN("UMA.GeneratedLowEntropySource", false); |
| return low_entropy_source_; |
| } |