| 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_log.h" | 5 #include "components/metrics/metrics_log.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 | 8 |
| 9 #include <algorithm> | 9 #include <algorithm> |
| 10 #include <memory> | |
| 11 #include <string> | 10 #include <string> |
| 12 #include <vector> | |
| 13 | 11 |
| 14 #include "base/base64.h" | 12 #include "base/base64.h" |
| 15 #include "base/build_time.h" | 13 #include "base/build_time.h" |
| 16 #include "base/cpu.h" | 14 #include "base/cpu.h" |
| 17 #include "base/metrics/histogram_macros.h" | 15 #include "base/metrics/histogram_macros.h" |
| 18 #include "base/metrics/histogram_samples.h" | 16 #include "base/metrics/histogram_samples.h" |
| 19 #include "base/metrics/metrics_hashes.h" | 17 #include "base/metrics/metrics_hashes.h" |
| 20 #include "base/sha1.h" | 18 #include "base/sha1.h" |
| 21 #include "base/strings/string_number_conversions.h" | 19 #include "base/strings/string_number_conversions.h" |
| 22 #include "base/strings/string_util.h" | 20 #include "base/strings/string_util.h" |
| (...skipping 175 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 198 #endif | 196 #endif |
| 199 } | 197 } |
| 200 | 198 |
| 201 void MetricsLog::RecordHistogramDelta(const std::string& histogram_name, | 199 void MetricsLog::RecordHistogramDelta(const std::string& histogram_name, |
| 202 const base::HistogramSamples& snapshot) { | 200 const base::HistogramSamples& snapshot) { |
| 203 DCHECK(!closed_); | 201 DCHECK(!closed_); |
| 204 EncodeHistogramDelta(histogram_name, snapshot, &uma_proto_); | 202 EncodeHistogramDelta(histogram_name, snapshot, &uma_proto_); |
| 205 } | 203 } |
| 206 | 204 |
| 207 void MetricsLog::RecordStabilityMetrics( | 205 void MetricsLog::RecordStabilityMetrics( |
| 208 const std::vector<MetricsProvider*>& metrics_providers, | 206 const std::vector<std::unique_ptr<MetricsProvider>>& metrics_providers, |
| 209 base::TimeDelta incremental_uptime, | 207 base::TimeDelta incremental_uptime, |
| 210 base::TimeDelta uptime) { | 208 base::TimeDelta uptime) { |
| 211 DCHECK(!closed_); | 209 DCHECK(!closed_); |
| 212 DCHECK(HasEnvironment()); | 210 DCHECK(HasEnvironment()); |
| 213 DCHECK(!HasStabilityMetrics()); | 211 DCHECK(!HasStabilityMetrics()); |
| 214 | 212 |
| 215 PrefService* pref = local_state_; | 213 PrefService* pref = local_state_; |
| 216 DCHECK(pref); | 214 DCHECK(pref); |
| 217 | 215 |
| 218 // Get stability attributes out of Local State, zeroing out stored values. | 216 // Get stability attributes out of Local State, zeroing out stored values. |
| (...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 294 local_state_->GetInteger(prefs::kStabilityVersionMismatchCount); | 292 local_state_->GetInteger(prefs::kStabilityVersionMismatchCount); |
| 295 if (version_mismatch_count) { | 293 if (version_mismatch_count) { |
| 296 local_state_->SetInteger(prefs::kStabilityVersionMismatchCount, 0); | 294 local_state_->SetInteger(prefs::kStabilityVersionMismatchCount, 0); |
| 297 UMA_STABILITY_HISTOGRAM_COUNTS_100( | 295 UMA_STABILITY_HISTOGRAM_COUNTS_100( |
| 298 "Stability.Internals.VersionMismatchCount", | 296 "Stability.Internals.VersionMismatchCount", |
| 299 version_mismatch_count); | 297 version_mismatch_count); |
| 300 } | 298 } |
| 301 } | 299 } |
| 302 | 300 |
| 303 void MetricsLog::RecordGeneralMetrics( | 301 void MetricsLog::RecordGeneralMetrics( |
| 304 const std::vector<MetricsProvider*>& metrics_providers) { | 302 const std::vector<std::unique_ptr<MetricsProvider>>& metrics_providers) { |
| 305 if (local_state_->GetBoolean(prefs::kMetricsResetIds)) | 303 if (local_state_->GetBoolean(prefs::kMetricsResetIds)) |
| 306 UMA_HISTOGRAM_BOOLEAN("UMA.IsClonedInstall", true); | 304 UMA_HISTOGRAM_BOOLEAN("UMA.IsClonedInstall", true); |
| 307 | 305 |
| 308 for (size_t i = 0; i < metrics_providers.size(); ++i) | 306 for (size_t i = 0; i < metrics_providers.size(); ++i) |
| 309 metrics_providers[i]->ProvideGeneralMetrics(uma_proto()); | 307 metrics_providers[i]->ProvideGeneralMetrics(uma_proto()); |
| 310 } | 308 } |
| 311 | 309 |
| 312 void MetricsLog::GetFieldTrialIds( | 310 void MetricsLog::GetFieldTrialIds( |
| 313 std::vector<ActiveGroupId>* field_trial_ids) const { | 311 std::vector<ActiveGroupId>* field_trial_ids) const { |
| 314 variations::GetFieldTrialActiveGroupIds(field_trial_ids); | 312 variations::GetFieldTrialActiveGroupIds(field_trial_ids); |
| (...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 377 | 375 |
| 378 const uint64_t incremental_uptime_sec = incremental_uptime.InSeconds(); | 376 const uint64_t incremental_uptime_sec = incremental_uptime.InSeconds(); |
| 379 if (incremental_uptime_sec) | 377 if (incremental_uptime_sec) |
| 380 stability->set_incremental_uptime_sec(incremental_uptime_sec); | 378 stability->set_incremental_uptime_sec(incremental_uptime_sec); |
| 381 const uint64_t uptime_sec = uptime.InSeconds(); | 379 const uint64_t uptime_sec = uptime.InSeconds(); |
| 382 if (uptime_sec) | 380 if (uptime_sec) |
| 383 stability->set_uptime_sec(uptime_sec); | 381 stability->set_uptime_sec(uptime_sec); |
| 384 } | 382 } |
| 385 | 383 |
| 386 std::string MetricsLog::RecordEnvironment( | 384 std::string MetricsLog::RecordEnvironment( |
| 387 const std::vector<MetricsProvider*>& metrics_providers, | 385 const std::vector<std::unique_ptr<MetricsProvider>>& metrics_providers, |
| 388 const std::vector<variations::ActiveGroupId>& synthetic_trials, | 386 const std::vector<variations::ActiveGroupId>& synthetic_trials, |
| 389 int64_t install_date, | 387 int64_t install_date, |
| 390 int64_t metrics_reporting_enabled_date) { | 388 int64_t metrics_reporting_enabled_date) { |
| 391 DCHECK(!HasEnvironment()); | 389 DCHECK(!HasEnvironment()); |
| 392 | 390 |
| 393 SystemProfileProto* system_profile = uma_proto()->mutable_system_profile(); | 391 SystemProfileProto* system_profile = uma_proto()->mutable_system_profile(); |
| 394 | 392 |
| 395 WriteMetricsEnableDefault(client_->GetMetricsReportingDefaultState(), | 393 WriteMetricsEnableDefault(client_->GetMetricsReportingDefaultState(), |
| 396 system_profile); | 394 system_profile); |
| 397 | 395 |
| (...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 465 DCHECK(!closed_); | 463 DCHECK(!closed_); |
| 466 closed_ = true; | 464 closed_ = true; |
| 467 } | 465 } |
| 468 | 466 |
| 469 void MetricsLog::GetEncodedLog(std::string* encoded_log) { | 467 void MetricsLog::GetEncodedLog(std::string* encoded_log) { |
| 470 DCHECK(closed_); | 468 DCHECK(closed_); |
| 471 uma_proto_.SerializeToString(encoded_log); | 469 uma_proto_.SerializeToString(encoded_log); |
| 472 } | 470 } |
| 473 | 471 |
| 474 } // namespace metrics | 472 } // namespace metrics |
| OLD | NEW |