| Index: base/metrics/histogram.cc
|
| diff --git a/base/metrics/histogram.cc b/base/metrics/histogram.cc
|
| index ec1afddcca70668390cacd12bf23e2c40f2e84fe..2ccedc1b4d47cd23354061b53fa24b0cee27bb3f 100644
|
| --- a/base/metrics/histogram.cc
|
| +++ b/base/metrics/histogram.cc
|
| @@ -174,17 +174,6 @@ void Histogram::InitializeBucketRanges(Sample minimum,
|
| ranges->ResetChecksum();
|
| }
|
|
|
| -void Histogram::Add(int value) {
|
| - DCHECK_EQ(0, ranges(0));
|
| - DCHECK_EQ(kSampleType_MAX, ranges(bucket_count_));
|
| -
|
| - if (value > kSampleType_MAX - 1)
|
| - value = kSampleType_MAX - 1;
|
| - if (value < 0)
|
| - value = 0;
|
| - samples_->Accumulate(value, 1);
|
| -}
|
| -
|
| void Histogram::AddBoolean(bool value) {
|
| DCHECK(false);
|
| }
|
| @@ -201,18 +190,6 @@ void Histogram::SetRangeDescriptions(const DescriptionPair descriptions[]) {
|
| DCHECK(false);
|
| }
|
|
|
| -// The following methods provide a graphical histogram display.
|
| -void Histogram::WriteHTMLGraph(string* output) const {
|
| - // TBD(jar) Write a nice HTML bar chart, with divs an mouse-overs etc.
|
| - output->append("<PRE>");
|
| - WriteAsciiImpl(true, "<br>", output);
|
| - output->append("</PRE>");
|
| -}
|
| -
|
| -void Histogram::WriteAscii(string* output) const {
|
| - WriteAsciiImpl(true, "\n", output);
|
| -}
|
| -
|
| // static
|
| string Histogram::SerializeHistogramInfo(const Histogram& histogram,
|
| const HistogramSamples& snapshot) {
|
| @@ -367,17 +344,69 @@ size_t Histogram::bucket_count() const {
|
| return bucket_count_;
|
| }
|
|
|
| -scoped_ptr<HistogramSamples> Histogram::SnapshotSamples() const {
|
| - return SnapshotSampleVector().PassAs<HistogramSamples>();
|
| +// static
|
| +bool Histogram::InspectConstructionArguments(const string& name,
|
| + Sample* minimum,
|
| + Sample* maximum,
|
| + size_t* bucket_count) {
|
| + // Defensive code for backward compatibility.
|
| + if (*minimum < 1) {
|
| + DVLOG(1) << "Histogram: " << name << " has bad minimum: " << *minimum;
|
| + *minimum = 1;
|
| + }
|
| + if (*maximum >= kSampleType_MAX) {
|
| + DVLOG(1) << "Histogram: " << name << " has bad maximum: " << *maximum;
|
| + *maximum = kSampleType_MAX - 1;
|
| + }
|
| + if (*bucket_count >= kBucketCount_MAX) {
|
| + DVLOG(1) << "Histogram: " << name << " has bad bucket_count: "
|
| + << *bucket_count;
|
| + *bucket_count = kBucketCount_MAX - 1;
|
| + }
|
| +
|
| + if (*minimum >= *maximum)
|
| + return false;
|
| + if (*bucket_count < 3)
|
| + return false;
|
| + if (*bucket_count > static_cast<size_t>(*maximum - *minimum + 2))
|
| + return false;
|
| + return true;
|
| }
|
|
|
| bool Histogram::HasConstructionArguments(Sample minimum,
|
| Sample maximum,
|
| - size_t bucket_count) {
|
| + size_t bucket_count) const {
|
| return ((minimum == declared_min_) && (maximum == declared_max_) &&
|
| (bucket_count == bucket_count_));
|
| }
|
|
|
| +void Histogram::Add(int value) {
|
| + DCHECK_EQ(0, ranges(0));
|
| + DCHECK_EQ(kSampleType_MAX, ranges(bucket_count_));
|
| +
|
| + if (value > kSampleType_MAX - 1)
|
| + value = kSampleType_MAX - 1;
|
| + if (value < 0)
|
| + value = 0;
|
| + samples_->Accumulate(value, 1);
|
| +}
|
| +
|
| +scoped_ptr<HistogramSamples> Histogram::SnapshotSamples() const {
|
| + return SnapshotSampleVector().PassAs<HistogramSamples>();
|
| +}
|
| +
|
| +// The following methods provide a graphical histogram display.
|
| +void Histogram::WriteHTMLGraph(string* output) const {
|
| + // TBD(jar) Write a nice HTML bar chart, with divs an mouse-overs etc.
|
| + output->append("<PRE>");
|
| + WriteAsciiImpl(true, "<br>", output);
|
| + output->append("</PRE>");
|
| +}
|
| +
|
| +void Histogram::WriteAscii(string* output) const {
|
| + WriteAsciiImpl(true, "\n", output);
|
| +}
|
| +
|
| Histogram::Histogram(const string& name,
|
| Sample minimum,
|
| Sample maximum,
|
| @@ -400,35 +429,6 @@ Histogram::~Histogram() {
|
| }
|
| }
|
|
|
| -// static
|
| -bool Histogram::InspectConstructionArguments(const string& name,
|
| - Sample* minimum,
|
| - Sample* maximum,
|
| - size_t* bucket_count) {
|
| - // Defensive code for backward compatibility.
|
| - if (*minimum < 1) {
|
| - DVLOG(1) << "Histogram: " << name << " has bad minimum: " << *minimum;
|
| - *minimum = 1;
|
| - }
|
| - if (*maximum >= kSampleType_MAX) {
|
| - DVLOG(1) << "Histogram: " << name << " has bad maximum: " << *maximum;
|
| - *maximum = kSampleType_MAX - 1;
|
| - }
|
| - if (*bucket_count >= kBucketCount_MAX) {
|
| - DVLOG(1) << "Histogram: " << name << " has bad bucket_count: "
|
| - << *bucket_count;
|
| - *bucket_count = kBucketCount_MAX - 1;
|
| - }
|
| -
|
| - if (*minimum >= *maximum)
|
| - return false;
|
| - if (*bucket_count < 3)
|
| - return false;
|
| - if (*bucket_count > static_cast<size_t>(*maximum - *minimum + 2))
|
| - return false;
|
| - return true;
|
| -}
|
| -
|
| bool Histogram::SerializeRanges(Pickle* pickle) const {
|
| return true;
|
| }
|
|
|