Index: components/rappor/rappor_service.cc |
diff --git a/components/rappor/rappor_service.cc b/components/rappor/rappor_service.cc |
index 1abe269c2d8447fca5de7d0e0aff286d871ce379..5b7b75378db302bd7ce83f6a3c7984f19a286c42 100644 |
--- a/components/rappor/rappor_service.cc |
+++ b/components/rappor/rappor_service.cc |
@@ -4,11 +4,7 @@ |
#include "components/rappor/rappor_service.h" |
-#include "base/base64.h" |
#include "base/metrics/field_trial.h" |
-#include "base/prefs/pref_registry_simple.h" |
-#include "base/prefs/pref_service.h" |
-#include "base/rand_util.h" |
#include "base/stl_util.h" |
#include "base/time/time.h" |
#include "components/metrics/metrics_hashes.h" |
@@ -16,6 +12,7 @@ |
#include "components/rappor/proto/rappor_metric.pb.h" |
#include "components/rappor/rappor_metric.h" |
#include "components/rappor/rappor_pref_names.h" |
+#include "components/rappor/rappor_prefs.h" |
#include "components/variations/variations_associated_data.h" |
namespace rappor { |
@@ -106,8 +103,8 @@ void RapporService::Initialize(net::URLRequestContextGetter* request_context) { |
InitializeInternal(make_scoped_ptr(new LogUploader(server_url, |
kMimeType, |
request_context)), |
- LoadCohort(), |
- LoadSecret()); |
+ internal::LoadCohort(pref_service_), |
+ internal::LoadSecret(pref_service_)); |
} |
void RapporService::Update(RecordingLevel recording_level, bool may_upload) { |
@@ -137,6 +134,11 @@ void RapporService::Update(RecordingLevel recording_level, bool may_upload) { |
} |
} |
+// static |
+void RapporService::RegisterPrefs(PrefRegistrySimple* registry) { |
+ internal::RegisterPrefs(registry); |
+} |
+ |
void RapporService::InitializeInternal( |
scoped_ptr<LogUploaderInterface> uploader, |
int32_t cohort, |
@@ -180,50 +182,6 @@ void RapporService::OnLogInterval() { |
ScheduleNextLogRotation(base::TimeDelta::FromSeconds(kLogIntervalSeconds)); |
} |
-// static |
-void RapporService::RegisterPrefs(PrefRegistrySimple* registry) { |
- registry->RegisterStringPref(prefs::kRapporSecret, std::string()); |
- registry->RegisterIntegerPref(prefs::kRapporCohortDeprecated, -1); |
- registry->RegisterIntegerPref(prefs::kRapporCohortSeed, -1); |
- metrics::DailyEvent::RegisterPref(registry, prefs::kRapporLastDailySample); |
-} |
- |
-int32_t RapporService::LoadCohort() { |
- // Ignore and delete old cohort parameter. |
- pref_service_->ClearPref(prefs::kRapporCohortDeprecated); |
- |
- int32_t cohort = pref_service_->GetInteger(prefs::kRapporCohortSeed); |
- // If the user is already assigned to a valid cohort, we're done. |
- if (cohort >= 0 && cohort < RapporParameters::kMaxCohorts) |
- return cohort; |
- |
- // This is the first time the client has started the service (or their |
- // preferences were corrupted). Randomly assign them to a cohort. |
- cohort = base::RandGenerator(RapporParameters::kMaxCohorts); |
- DVLOG(2) << "Selected a new Rappor cohort: " << cohort; |
- pref_service_->SetInteger(prefs::kRapporCohortSeed, cohort); |
- return cohort; |
-} |
- |
-std::string RapporService::LoadSecret() { |
- std::string secret; |
- std::string secret_base64 = pref_service_->GetString(prefs::kRapporSecret); |
- if (!secret_base64.empty()) { |
- bool decoded = base::Base64Decode(secret_base64, &secret); |
- if (decoded && secret.size() == HmacByteVectorGenerator::kEntropyInputSize) |
- return secret; |
- // If the preference fails to decode, or is the wrong size, it must be |
- // corrupt, so continue as though it didn't exist yet and generate a new |
- // one. |
- } |
- |
- DVLOG(2) << "Generated a new Rappor secret."; |
- secret = HmacByteVectorGenerator::GenerateEntropyInput(); |
- base::Base64Encode(secret, &secret_base64); |
- pref_service_->SetString(prefs::kRapporSecret, secret_base64); |
- return secret; |
-} |
- |
bool RapporService::ExportMetrics(RapporReports* reports) { |
if (metrics_map_.empty()) { |
DVLOG(2) << "metrics_map_ is empty."; |