| Index: base/histogram.cc
 | 
| diff --git a/base/histogram.cc b/base/histogram.cc
 | 
| index 22067561978ce1c672bdab67dfa8c641797b932e..31cc6a5ad92548da72f19e6a779db047b4b2ffd3 100644
 | 
| --- a/base/histogram.cc
 | 
| +++ b/base/histogram.cc
 | 
| @@ -84,6 +84,10 @@ Histogram::~Histogram() {
 | 
|    DCHECK(ValidateBucketRanges());
 | 
|  }
 | 
|  
 | 
| +bool Histogram::PrintEmptyBucket(size_t index) const {
 | 
| +  return true;
 | 
| +}
 | 
| +
 | 
|  void Histogram::Add(int value) {
 | 
|    if (value >= kSampleType_MAX)
 | 
|      value = kSampleType_MAX - 1;
 | 
| @@ -95,10 +99,18 @@ void Histogram::Add(int value) {
 | 
|    Accumulate(value, 1, index);
 | 
|  }
 | 
|  
 | 
| +void Histogram::AddBoolean(bool value) {
 | 
| +  DCHECK(false);
 | 
| +}
 | 
| +
 | 
|  void Histogram::AddSampleSet(const SampleSet& sample) {
 | 
|    sample_.Add(sample);
 | 
|  }
 | 
|  
 | 
| +void Histogram::SetRangeDescriptions(const DescriptionPair descriptions[]) {
 | 
| +  DCHECK(false);
 | 
| +}
 | 
| +
 | 
|  // The following methods provide a graphical histogram display.
 | 
|  void Histogram::WriteHTMLGraph(std::string* output) const {
 | 
|    // TBD(jar) Write a nice HTML bar chart, with divs an mouse-overs etc.
 | 
| @@ -290,6 +302,20 @@ void Histogram::SnapshotSample(SampleSet* sample) const {
 | 
|    *sample = sample_;
 | 
|  }
 | 
|  
 | 
| +bool Histogram::HasConstructorArguments(Sample minimum, Sample maximum,
 | 
| +                                        size_t bucket_count) {
 | 
| +  return ((minimum == declared_min_) && (maximum == declared_max_) &&
 | 
| +          (bucket_count == bucket_count_));
 | 
| +}
 | 
| +
 | 
| +bool Histogram::HasConstructorTimeDeltaArguments(base::TimeDelta minimum,
 | 
| +                                                 base::TimeDelta maximum,
 | 
| +                                                 size_t bucket_count) {
 | 
| +  return ((minimum.InMilliseconds() == declared_min_) &&
 | 
| +          (maximum.InMilliseconds() == declared_max_) &&
 | 
| +          (bucket_count == bucket_count_));
 | 
| +}
 | 
| +
 | 
|  //------------------------------------------------------------------------------
 | 
|  // Accessor methods
 | 
|  
 | 
| @@ -613,6 +639,10 @@ LinearHistogram::LinearHistogram(const std::string& name,
 | 
|    DCHECK(ValidateBucketRanges());
 | 
|  }
 | 
|  
 | 
| +Histogram::ClassType LinearHistogram::histogram_type() const {
 | 
| +  return LINEAR_HISTOGRAM;
 | 
| +}
 | 
| +
 | 
|  void LinearHistogram::SetRangeDescriptions(
 | 
|      const DescriptionPair descriptions[]) {
 | 
|    for (int i =0; descriptions[i].description; ++i) {
 | 
| @@ -671,6 +701,17 @@ scoped_refptr<Histogram> BooleanHistogram::FactoryGet(const std::string& name,
 | 
|    return histogram;
 | 
|  }
 | 
|  
 | 
| +Histogram::ClassType BooleanHistogram::histogram_type() const {
 | 
| +  return BOOLEAN_HISTOGRAM;
 | 
| +}
 | 
| +
 | 
| +void BooleanHistogram::AddBoolean(bool value) {
 | 
| +  Add(value ? 1 : 0);
 | 
| +}
 | 
| +
 | 
| +BooleanHistogram::BooleanHistogram(const std::string& name)
 | 
| +    : LinearHistogram(name, 1, 2, 3) {
 | 
| +}
 | 
|  
 | 
|  //------------------------------------------------------------------------------
 | 
|  // CustomHistogram:
 | 
| @@ -706,6 +747,10 @@ scoped_refptr<Histogram> CustomHistogram::FactoryGet(
 | 
|    return histogram;
 | 
|  }
 | 
|  
 | 
| +Histogram::ClassType CustomHistogram::histogram_type() const {
 | 
| +  return CUSTOM_HISTOGRAM;
 | 
| +}
 | 
| +
 | 
|  CustomHistogram::CustomHistogram(const std::string& name,
 | 
|      const std::vector<int>& custom_ranges)
 | 
|      : Histogram(name, custom_ranges[1], custom_ranges.back(),
 | 
| 
 |