Index: chrome/browser/metrics/metrics_service.cc |
=================================================================== |
--- chrome/browser/metrics/metrics_service.cc (revision 151948) |
+++ chrome/browser/metrics/metrics_service.cc (working copy) |
@@ -185,6 +185,7 @@ |
#include "chrome/common/chrome_notification_types.h" |
#include "chrome/common/chrome_result_codes.h" |
#include "chrome/common/chrome_switches.h" |
+#include "chrome/common/metrics/entropy_provider.h" |
#include "chrome/common/metrics/metrics_log_manager.h" |
#include "chrome/common/net/test_server_locations.h" |
#include "chrome/common/pref_names.h" |
@@ -279,7 +280,7 @@ |
// Generates a new non-identifying entropy source used to seed persistent |
// activities. |
int GenerateLowEntropySource() { |
- return base::RandInt(1, kMaxEntropySize); |
+ return base::RandInt(0, kMaxEntropySize - 1); |
} |
// Converts an exit code into something that can be inserted into our |
@@ -344,7 +345,7 @@ |
return codes; |
} |
-} |
+} // namespace |
// static |
MetricsService::ShutdownCleanliness MetricsService::clean_shutdown_status_ = |
@@ -539,7 +540,10 @@ |
return client_id_; |
} |
-std::string MetricsService::GetEntropySource(bool reporting_will_be_enabled) { |
+base::FieldTrial::EntropyProvider* MetricsService::GetEntropyProvider( |
+ bool reporting_will_be_enabled) { |
+ const int low_entropy_source = GetLowEntropySource(); |
+ |
// 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. |
@@ -547,13 +551,16 @@ |
// 1) It makes the entropy source less identifiable for parties that do not |
// know the low entropy source. |
// 2) It makes the final entropy source resettable. |
- std::string low_entropy_source = base::IntToString(GetLowEntropySource()); |
if (reporting_will_be_enabled) { |
entropy_source_returned_ = LAST_ENTROPY_HIGH; |
- return client_id_ + low_entropy_source; |
+ const std::string high_entropy_source = |
+ client_id_ + base::IntToString(low_entropy_source); |
+ return new SHA1EntropyProvider(high_entropy_source); |
} |
+ |
entropy_source_returned_ = LAST_ENTROPY_LOW; |
- return low_entropy_source; |
+ return new PermutedEntropyProvider(GetLowEntropySource(), |
+ kMaxEntropySize); |
SteveT
2012/08/16 20:55:42
Some weirdness with the alignment here.
Alexei Svitkine (slow)
2012/08/16 21:27:11
Done.
|
} |
void MetricsService::ForceClientIdCreation() { |