Chromium Code Reviews| Index: components/metrics/metrics_log.cc |
| diff --git a/components/metrics/metrics_log.cc b/components/metrics/metrics_log.cc |
| index 05233728ca900905655beb5fccf1b46a16310eda..521ffc6e0afbd0dfabba9e3fd88a9c887ca4c812 100644 |
| --- a/components/metrics/metrics_log.cc |
| +++ b/components/metrics/metrics_log.cc |
| @@ -11,8 +11,11 @@ |
| #include "base/build_time.h" |
| #include "base/cpu.h" |
| +#include "base/metrics/histogram_base.h" |
| +#include "base/metrics/histogram_flattener.h" |
| #include "base/metrics/histogram_macros.h" |
| #include "base/metrics/histogram_samples.h" |
| +#include "base/metrics/histogram_snapshot_manager.h" |
| #include "base/metrics/metrics_hashes.h" |
| #include "base/sys_info.h" |
| #include "base/time/time.h" |
| @@ -51,6 +54,25 @@ extern const int kUserActionEventLimit = 5000; |
| namespace { |
| +class IndependentFlattener : public base::HistogramFlattener { |
|
Alexei Svitkine (slow)
2017/06/08 23:59:30
Nit: Short comment please
bcwhite
2017/06/09 15:09:27
Done.
|
| + public: |
| + IndependentFlattener(MetricsLog* log) : log_(log) {} |
|
Alexei Svitkine (slow)
2017/06/08 23:59:30
explicit
bcwhite
2017/06/09 15:09:27
Done.
|
| + |
| + // base::HistogramFlattener: |
| + void RecordDelta(const base::HistogramBase& histogram, |
| + const base::HistogramSamples& snapshot) override { |
| + log_->RecordHistogramDelta(histogram.histogram_name(), snapshot); |
| + } |
| + void InconsistencyDetected( |
| + base::HistogramBase::Inconsistency problem) override {} |
| + void UniqueInconsistencyDetected( |
| + base::HistogramBase::Inconsistency problem) override {} |
| + void InconsistencyDetectedInLoggedCount(int amount) override {} |
| + |
| + private: |
| + MetricsLog* const log_; |
| +}; |
|
Alexei Svitkine (slow)
2017/06/08 23:59:30
Nit: DISALLOW
bcwhite
2017/06/09 15:09:27
I always forget that!
Done.
|
| + |
| // Any id less than 16 bytes is considered to be a testing id. |
| bool IsTestingID(const std::string& id) { |
| return id.size() < 16; |
| @@ -319,6 +341,15 @@ std::string MetricsLog::RecordEnvironment( |
| return serialized_proto; |
| } |
| +bool MetricsLog::LoadIndependentMetrics(MetricsProvider* metrics_provider) { |
| + SystemProfileProto* system_profile = uma_proto()->mutable_system_profile(); |
| + IndependentFlattener flattener(this); |
| + base::HistogramSnapshotManager snapshot_manager(&flattener); |
| + |
| + return metrics_provider->ProvideIndependentMetrics(system_profile, |
| + &snapshot_manager); |
| +} |
| + |
| bool MetricsLog::LoadSavedEnvironmentFromPrefs(std::string* app_version) { |
| DCHECK(app_version); |
| app_version->clear(); |