Index: base/metrics/statistics_recorder.h |
diff --git a/base/metrics/statistics_recorder.h b/base/metrics/statistics_recorder.h |
index b1d182e93e44f8a46a941c80a3edc8befaed9b01..1fe932952b652dd84957386dbe3489df68a6275b 100644 |
--- a/base/metrics/statistics_recorder.h |
+++ b/base/metrics/statistics_recorder.h |
@@ -30,9 +30,42 @@ class BucketRanges; |
class Lock; |
class BASE_EXPORT StatisticsRecorder { |
+ // We keep all registered histograms in a map, indexed by the hash of the |
+ // name of the histogram. |
+ typedef std::map<uint64_t, HistogramBase*> HistogramMap; |
Alexei Svitkine (slow)
2016/01/18 19:25:36
Nit: Move this below the public: block.
bcwhite
2016/01/22 15:24:53
Done.
|
+ |
public: |
typedef std::vector<HistogramBase*> Histograms; |
+ // A class for iterating over the histograms held within this global resource. |
+ class BASE_EXPORT HistogramIterator { |
+ public: |
+ HistogramIterator(const HistogramMap::iterator& iter, |
+ bool include_persistent); |
+ |
+ // STL Iterators must be copyable. |
+ HistogramIterator(const HistogramIterator& rhs); |
+ |
+ HistogramIterator& operator++(); |
+ HistogramIterator operator++(int) { |
+ HistogramIterator tmp(*this); |
+ operator++(); |
+ return tmp; |
+ } |
+ |
+ bool operator==(const HistogramIterator& rhs) const { |
+ return iter_ == rhs.iter_; |
+ } |
+ bool operator!=(const HistogramIterator& rhs) const { |
+ return iter_ != rhs.iter_; |
+ } |
+ HistogramBase* operator*() { return iter_->second; } |
+ |
+ private: |
+ HistogramMap::iterator iter_; |
+ const bool include_persistent_; |
+ }; |
+ |
// Initializes the StatisticsRecorder system. Safe to call multiple times. |
static void Initialize(); |
@@ -72,6 +105,10 @@ class BASE_EXPORT StatisticsRecorder { |
// safe. It returns NULL if a matching histogram is not found. |
static HistogramBase* FindHistogram(const std::string& name); |
+ // Support for iterating over known histograms. |
+ static HistogramIterator begin(bool include_persistent); |
+ static HistogramIterator end(); |
+ |
// GetSnapshot copies some of the pointers to registered histograms into the |
// caller supplied vector (Histograms). Only histograms which have |query| as |
// a substring are copied (an empty string will process all registered |
@@ -97,10 +134,6 @@ class BASE_EXPORT StatisticsRecorder { |
static OnSampleCallback FindCallback(const std::string& histogram_name); |
private: |
- // We keep all registered histograms in a map, indexed by the hash of the |
- // name of the histogram. |
- typedef std::map<uint64_t, HistogramBase*> HistogramMap; |
- |
// We keep a map of callbacks to histograms, so that as histograms are |
// created, we can set the callback properly. |
typedef std::map<std::string, OnSampleCallback> CallbackMap; |
@@ -115,6 +148,7 @@ class BASE_EXPORT StatisticsRecorder { |
friend class HistogramSnapshotManagerTest; |
friend class HistogramTest; |
friend class JsonPrefStoreTest; |
+ friend class SharedHistogramTest; |
friend class SparseHistogramTest; |
friend class StatisticsRecorderTest; |
FRIEND_TEST_ALL_PREFIXES(HistogramDeltaSerializationTest, |