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(); |