OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "components/metrics/metrics_state_manager.h" | 5 #include "components/metrics/metrics_state_manager.h" |
6 | 6 |
7 #include "base/command_line.h" | 7 #include "base/command_line.h" |
8 #include "base/guid.h" | 8 #include "base/guid.h" |
9 #include "base/metrics/histogram.h" | 9 #include "base/metrics/histogram.h" |
10 #include "base/metrics/sparse_histogram.h" | 10 #include "base/metrics/sparse_histogram.h" |
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
117 // Flush the backup back to persistent storage in case we re-generated | 117 // Flush the backup back to persistent storage in case we re-generated |
118 // missing data above. | 118 // missing data above. |
119 BackUpCurrentClientInfo(); | 119 BackUpCurrentClientInfo(); |
120 return; | 120 return; |
121 } | 121 } |
122 | 122 |
123 // Failing attempts at getting an existing client ID, generate a new one. | 123 // Failing attempts at getting an existing client ID, generate a new one. |
124 client_id_ = base::GenerateGUID(); | 124 client_id_ = base::GenerateGUID(); |
125 local_state_->SetString(prefs::kMetricsClientID, client_id_); | 125 local_state_->SetString(prefs::kMetricsClientID, client_id_); |
126 | 126 |
127 if (local_state_->GetString(prefs::kMetricsOldClientID).empty()) { | 127 // Record the timestamp of when the user opted in to UMA. |
128 // Record the timestamp of when the user opted in to UMA. | 128 local_state_->SetInt64(prefs::kMetricsReportingEnabledTimestamp, |
129 local_state_->SetInt64(prefs::kMetricsReportingEnabledTimestamp, | 129 base::Time::Now().ToTimeT()); |
130 base::Time::Now().ToTimeT()); | |
131 } else { | |
132 UMA_HISTOGRAM_BOOLEAN("UMA.ClientIdMigrated", true); | |
133 } | |
134 local_state_->ClearPref(prefs::kMetricsOldClientID); | |
135 | 130 |
136 BackUpCurrentClientInfo(); | 131 BackUpCurrentClientInfo(); |
137 } | 132 } |
138 | 133 |
139 void MetricsStateManager::CheckForClonedInstall( | 134 void MetricsStateManager::CheckForClonedInstall( |
140 scoped_refptr<base::SingleThreadTaskRunner> task_runner) { | 135 scoped_refptr<base::SingleThreadTaskRunner> task_runner) { |
141 DCHECK(!cloned_install_detector_); | 136 DCHECK(!cloned_install_detector_); |
142 | 137 |
143 MachineIdProvider* provider = MachineIdProvider::CreateInstance(); | 138 MachineIdProvider* provider = MachineIdProvider::CreateInstance(); |
144 if (!provider) | 139 if (!provider) |
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
201 // static | 196 // static |
202 void MetricsStateManager::RegisterPrefs(PrefRegistrySimple* registry) { | 197 void MetricsStateManager::RegisterPrefs(PrefRegistrySimple* registry) { |
203 registry->RegisterBooleanPref(prefs::kMetricsResetIds, false); | 198 registry->RegisterBooleanPref(prefs::kMetricsResetIds, false); |
204 registry->RegisterStringPref(prefs::kMetricsClientID, std::string()); | 199 registry->RegisterStringPref(prefs::kMetricsClientID, std::string()); |
205 registry->RegisterInt64Pref(prefs::kMetricsReportingEnabledTimestamp, 0); | 200 registry->RegisterInt64Pref(prefs::kMetricsReportingEnabledTimestamp, 0); |
206 registry->RegisterIntegerPref(prefs::kMetricsLowEntropySource, | 201 registry->RegisterIntegerPref(prefs::kMetricsLowEntropySource, |
207 kLowEntropySourceNotSet); | 202 kLowEntropySourceNotSet); |
208 | 203 |
209 ClonedInstallDetector::RegisterPrefs(registry); | 204 ClonedInstallDetector::RegisterPrefs(registry); |
210 CachingPermutedEntropyProvider::RegisterPrefs(registry); | 205 CachingPermutedEntropyProvider::RegisterPrefs(registry); |
211 | |
212 // TODO(asvitkine): Remove these once a couple of releases have passed. | |
213 // http://crbug.com/357704 | |
214 registry->RegisterStringPref(prefs::kMetricsOldClientID, std::string()); | |
215 registry->RegisterIntegerPref(prefs::kMetricsOldLowEntropySource, 0); | |
216 } | 206 } |
217 | 207 |
218 void MetricsStateManager::BackUpCurrentClientInfo() { | 208 void MetricsStateManager::BackUpCurrentClientInfo() { |
219 ClientInfo client_info; | 209 ClientInfo client_info; |
220 client_info.client_id = client_id_; | 210 client_info.client_id = client_id_; |
221 client_info.installation_date = local_state_->GetInt64(prefs::kInstallDate); | 211 client_info.installation_date = local_state_->GetInt64(prefs::kInstallDate); |
222 client_info.reporting_enabled_date = | 212 client_info.reporting_enabled_date = |
223 local_state_->GetInt64(prefs::kMetricsReportingEnabledTimestamp); | 213 local_state_->GetInt64(prefs::kMetricsReportingEnabledTimestamp); |
224 store_client_info_.Run(client_info); | 214 store_client_info_.Run(client_info); |
225 } | 215 } |
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
276 low_entropy_source_ = value; | 266 low_entropy_source_ = value; |
277 UMA_HISTOGRAM_BOOLEAN("UMA.GeneratedLowEntropySource", false); | 267 UMA_HISTOGRAM_BOOLEAN("UMA.GeneratedLowEntropySource", false); |
278 return low_entropy_source_; | 268 return low_entropy_source_; |
279 } | 269 } |
280 } | 270 } |
281 | 271 |
282 UMA_HISTOGRAM_BOOLEAN("UMA.GeneratedLowEntropySource", true); | 272 UMA_HISTOGRAM_BOOLEAN("UMA.GeneratedLowEntropySource", true); |
283 low_entropy_source_ = GenerateLowEntropySource(); | 273 low_entropy_source_ = GenerateLowEntropySource(); |
284 local_state_->SetInteger(prefs::kMetricsLowEntropySource, | 274 local_state_->SetInteger(prefs::kMetricsLowEntropySource, |
285 low_entropy_source_); | 275 low_entropy_source_); |
286 local_state_->ClearPref(prefs::kMetricsOldLowEntropySource); | |
287 CachingPermutedEntropyProvider::ClearCache(local_state_); | 276 CachingPermutedEntropyProvider::ClearCache(local_state_); |
288 | 277 |
289 return low_entropy_source_; | 278 return low_entropy_source_; |
290 } | 279 } |
291 | 280 |
292 void MetricsStateManager::UpdateEntropySourceReturnedValue( | 281 void MetricsStateManager::UpdateEntropySourceReturnedValue( |
293 EntropySourceType type) { | 282 EntropySourceType type) { |
294 if (entropy_source_returned_ != ENTROPY_SOURCE_NONE) | 283 if (entropy_source_returned_ != ENTROPY_SOURCE_NONE) |
295 return; | 284 return; |
296 | 285 |
(...skipping 13 matching lines...) Expand all Loading... |
310 | 299 |
311 local_state_->ClearPref(prefs::kMetricsClientID); | 300 local_state_->ClearPref(prefs::kMetricsClientID); |
312 local_state_->ClearPref(prefs::kMetricsLowEntropySource); | 301 local_state_->ClearPref(prefs::kMetricsLowEntropySource); |
313 local_state_->ClearPref(prefs::kMetricsResetIds); | 302 local_state_->ClearPref(prefs::kMetricsResetIds); |
314 | 303 |
315 // Also clear the backed up client info. | 304 // Also clear the backed up client info. |
316 store_client_info_.Run(ClientInfo()); | 305 store_client_info_.Run(ClientInfo()); |
317 } | 306 } |
318 | 307 |
319 } // namespace metrics | 308 } // namespace metrics |
OLD | NEW |