| // 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 |