// 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 #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(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 Iterator() const override { return std::make_unique(); } bool AddSubtractImpl(SampleCountIterator* iter, Operator op) override { return true; } private: DISALLOW_COPY_AND_ASSIGN(DummyHistogramSamples); }; } // namespace // static DummyHistogram* DummyHistogram::GetInstance() { static base::NoDestructor 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 DummyHistogram::SnapshotSamples() const { return std::make_unique(); } std::unique_ptr DummyHistogram::SnapshotDelta() { return std::make_unique(); } std::unique_ptr DummyHistogram::SnapshotFinalDelta() const { return std::make_unique(); } } // namespace base