| // Copyright 2017 The Chromium Authors. All rights reserved. | 
 | // Use of this source code is governed by a BSD-style license that can be | 
 | // found in the LICENSE file. | 
 |  | 
 | #include "base/metrics/dummy_histogram.h" | 
 |  | 
 | #include <memory> | 
 |  | 
 | #include "base/logging.h" | 
 | #include "base/metrics/histogram_samples.h" | 
 | #include "base/metrics/metrics_hashes.h" | 
 |  | 
 | namespace base { | 
 |  | 
 | namespace { | 
 |  | 
 | // Helper classes for DummyHistogram. | 
 | class DummySampleCountIterator : public SampleCountIterator { | 
 |  public: | 
 |   DummySampleCountIterator() {} | 
 |   ~DummySampleCountIterator() override {} | 
 |  | 
 |   // SampleCountIterator: | 
 |   bool Done() const override { return true; } | 
 |   void Next() override { NOTREACHED(); } | 
 |   void Get(HistogramBase::Sample* min, | 
 |            int64_t* max, | 
 |            HistogramBase::Count* count) const override { | 
 |     NOTREACHED(); | 
 |   } | 
 |  | 
 |  private: | 
 |   DISALLOW_COPY_AND_ASSIGN(DummySampleCountIterator); | 
 | }; | 
 |  | 
 | class DummyHistogramSamples : public HistogramSamples { | 
 |  public: | 
 |   explicit DummyHistogramSamples() : HistogramSamples(0, new LocalMetadata()) {} | 
 |   ~DummyHistogramSamples() override { | 
 |     delete static_cast<LocalMetadata*>(meta()); | 
 |   } | 
 |  | 
 |   // HistogramSamples: | 
 |   void Accumulate(HistogramBase::Sample value, | 
 |                   HistogramBase::Count count) override {} | 
 |   HistogramBase::Count GetCount(HistogramBase::Sample value) const override { | 
 |     return HistogramBase::Count(); | 
 |   } | 
 |   HistogramBase::Count TotalCount() const override { | 
 |     return HistogramBase::Count(); | 
 |   } | 
 |   std::unique_ptr<SampleCountIterator> Iterator() const override { | 
 |     return std::make_unique<DummySampleCountIterator>(); | 
 |   } | 
 |   bool AddSubtractImpl(SampleCountIterator* iter, Operator op) override { | 
 |     return true; | 
 |   } | 
 |  | 
 |  private: | 
 |   DISALLOW_COPY_AND_ASSIGN(DummyHistogramSamples); | 
 | }; | 
 |  | 
 | }  // namespace | 
 |  | 
 | // static | 
 | DummyHistogram* DummyHistogram::GetInstance() { | 
 |   static base::NoDestructor<DummyHistogram> dummy_histogram; | 
 |   return dummy_histogram.get(); | 
 | } | 
 |  | 
 | uint64_t DummyHistogram::name_hash() const { | 
 |   return HashMetricName(histogram_name()); | 
 | } | 
 |  | 
 | HistogramType DummyHistogram::GetHistogramType() const { | 
 |   return DUMMY_HISTOGRAM; | 
 | } | 
 |  | 
 | bool DummyHistogram::HasConstructionArguments( | 
 |     Sample expected_minimum, | 
 |     Sample expected_maximum, | 
 |     uint32_t expected_bucket_count) const { | 
 |   return true; | 
 | } | 
 |  | 
 | bool DummyHistogram::AddSamplesFromPickle(PickleIterator* iter) { | 
 |   return true; | 
 | } | 
 |  | 
 | std::unique_ptr<HistogramSamples> DummyHistogram::SnapshotSamples() const { | 
 |   return std::make_unique<DummyHistogramSamples>(); | 
 | } | 
 |  | 
 | std::unique_ptr<HistogramSamples> DummyHistogram::SnapshotDelta() { | 
 |   return std::make_unique<DummyHistogramSamples>(); | 
 | } | 
 |  | 
 | std::unique_ptr<HistogramSamples> DummyHistogram::SnapshotFinalDelta() const { | 
 |   return std::make_unique<DummyHistogramSamples>(); | 
 | } | 
 |  | 
 | }  // namespace base |