| Index: chrome/common/metrics/metrics_log_base.cc
|
| ===================================================================
|
| --- chrome/common/metrics/metrics_log_base.cc (revision 155400)
|
| +++ chrome/common/metrics/metrics_log_base.cc (working copy)
|
| @@ -7,6 +7,8 @@
|
| #include "base/base64.h"
|
| #include "base/basictypes.h"
|
| #include "base/md5.h"
|
| +#include "base/metrics/histogram_base.h"
|
| +#include "base/metrics/histogram_samples.h"
|
| #include "base/perftimer.h"
|
| #include "base/string_number_conversions.h"
|
| #include "base/sys_byteorder.h"
|
| @@ -23,6 +25,9 @@
|
| #define OPEN_ELEMENT_FOR_SCOPE(name) ScopedElement scoped_element(this, name)
|
|
|
| using base::Histogram;
|
| +using base::HistogramBase;
|
| +using base::HistogramSamples;
|
| +using base::SampleCountIterator;
|
| using base::Time;
|
| using base::TimeDelta;
|
| using metrics::HistogramEventProto;
|
| @@ -449,10 +454,9 @@
|
| // the same infrastructure for logging StatsCounters, RatesCounters, etc.
|
| void MetricsLogBase::RecordHistogramDelta(
|
| const Histogram& histogram,
|
| - const Histogram::SampleSet& snapshot) {
|
| + const HistogramSamples& snapshot) {
|
| DCHECK(!locked_);
|
| DCHECK_NE(0, snapshot.TotalCount());
|
| - DCHECK_EQ(histogram.bucket_count(), snapshot.size());
|
|
|
| // We will ignore the MAX_INT/infinite value in the last element of range[].
|
|
|
| @@ -471,13 +475,17 @@
|
| // TODO(jar): Remove sumsquares when protobuffer accepts this as optional.
|
| WriteInt64Attribute("sumsquares", 0);
|
|
|
| - for (size_t i = 0; i < histogram.bucket_count(); i++) {
|
| - if (snapshot.counts(i)) {
|
| - OPEN_ELEMENT_FOR_SCOPE("histogrambucket");
|
| - WriteIntAttribute("min", histogram.ranges(i));
|
| - WriteIntAttribute("max", histogram.ranges(i + 1));
|
| - WriteIntAttribute("count", snapshot.counts(i));
|
| - }
|
| + for (scoped_ptr<SampleCountIterator> it = snapshot.Iterator();
|
| + !it->Done();
|
| + it->Next()) {
|
| + OPEN_ELEMENT_FOR_SCOPE("histogrambucket");
|
| + HistogramBase::Sample min;
|
| + HistogramBase::Sample max;
|
| + HistogramBase::Count count;
|
| + it->Get(&min, &max, &count);
|
| + WriteIntAttribute("min", min);
|
| + WriteIntAttribute("max", max);
|
| + WriteIntAttribute("count", count);
|
| }
|
|
|
| // Write the protobuf version.
|
| @@ -485,13 +493,20 @@
|
| histogram_proto->set_name_hash(numeric_name_hash);
|
| histogram_proto->set_sum(snapshot.sum());
|
|
|
| - for (size_t i = 0; i < histogram.bucket_count(); ++i) {
|
| - if (snapshot.counts(i)) {
|
| - HistogramEventProto::Bucket* bucket = histogram_proto->add_bucket();
|
| - bucket->set_min(histogram.ranges(i));
|
| - bucket->set_max(histogram.ranges(i + 1));
|
| - bucket->set_bucket_index(i);
|
| - bucket->set_count(snapshot.counts(i));
|
| - }
|
| + for (scoped_ptr<SampleCountIterator> it = snapshot.Iterator();
|
| + !it->Done();
|
| + it->Next()) {
|
| + HistogramBase::Sample min;
|
| + HistogramBase::Sample max;
|
| + HistogramBase::Count count;
|
| + it->Get(&min, &max, &count);
|
| + HistogramEventProto::Bucket* bucket = histogram_proto->add_bucket();
|
| + bucket->set_min(min);
|
| + bucket->set_max(max);
|
| + bucket->set_count(count);
|
| +
|
| + size_t index;
|
| + if (it->GetBucketIndex(&index))
|
| + bucket->set_bucket_index(index);
|
| }
|
| }
|
|
|