Index: base/metrics/statistics_recorder.cc |
diff --git a/base/metrics/statistics_recorder.cc b/base/metrics/statistics_recorder.cc |
index 84ebbc58dbc37fb7724180b34d157b22021ae222..5553a5681a23480d90330d3ca558b942e05dae62 100644 |
--- a/base/metrics/statistics_recorder.cc |
+++ b/base/metrics/statistics_recorder.cc |
@@ -24,6 +24,22 @@ base::LazyInstance<base::StatisticsRecorder>::Leaky g_statistics_recorder_ = |
namespace base { |
+StatisticsRecorder::HistogramIterator& |
+StatisticsRecorder::HistogramIterator::operator++() { |
+ const HistogramMap::iterator histograms_end = histograms_->end(); |
+ while (iter_ != histograms_end) { |
+ ++iter_; |
+ if (iter_ == histograms_end) |
+ break; |
+ if (!include_persistent_ && (iter_->second->flags() & |
+ HistogramBase::kIsPersistent)) { |
+ continue; |
+ } |
+ break; |
+ } |
+ return *this; |
+} |
+ |
// static |
void StatisticsRecorder::Initialize() { |
// Ensure that an instance of the StatisticsRecorder object is created. |
@@ -59,10 +75,10 @@ HistogramBase* StatisticsRecorder::RegisterOrDeleteDuplicate( |
histogram_to_return = histogram; |
} else { |
const std::string& name = histogram->histogram_name(); |
- uint64_t id = histogram->name_hash(); |
- HistogramMap::iterator it = histograms_->find(id); |
+ uint64_t hash = histogram->name_hash(); |
+ HistogramMap::iterator it = histograms_->find(hash); |
if (histograms_->end() == it) { |
- (*histograms_)[id] = histogram; |
+ (*histograms_)[hash] = histogram; |
ANNOTATE_LEAKING_OBJECT_PTR(histogram); // see crbug.com/79322 |
// If there are callbacks for this histogram, we set the kCallbackExists |
// flag. |
@@ -296,7 +312,18 @@ StatisticsRecorder::OnSampleCallback StatisticsRecorder::FindCallback( |
: OnSampleCallback(); |
} |
-// private static |
+// static |
+StatisticsRecorder::HistogramIterator StatisticsRecorder::begin( |
+ bool include_persistent) { |
+ return HistogramIterator(histograms_->begin(), include_persistent); |
+} |
+ |
+// static |
+StatisticsRecorder::HistogramIterator StatisticsRecorder::end() { |
+ return HistogramIterator(histograms_->end(), true); |
+} |
+ |
+// static |
void StatisticsRecorder::GetSnapshot(const std::string& query, |
Histograms* snapshot) { |
if (lock_ == NULL) |