1 // Copyright 2017 The Chromium Authors 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #ifndef BASE_METRICS_DUMMY_HISTOGRAM_H_ 6 #define BASE_METRICS_DUMMY_HISTOGRAM_H_ 7 8 #include <stdint.h> 9 10 #include <memory> 11 #include <string> 12 13 #include "base/base_export.h" 14 #include "base/metrics/histogram_base.h" 15 #include "base/no_destructor.h" 16 #include "base/values.h" 17 18 namespace base { 19 20 // DummyHistogram is used for mocking histogram objects for histograms that 21 // shouldn't be recorded. It doesn't do any actual processing. 22 class BASE_EXPORT DummyHistogram : public HistogramBase { 23 public: 24 static DummyHistogram* GetInstance(); 25 26 DummyHistogram(const DummyHistogram&) = delete; 27 DummyHistogram& operator=(const DummyHistogram&) = delete; 28 29 // HistogramBase: CheckName(const StringPiece & name)30 void CheckName(const StringPiece& name) const override {} 31 uint64_t name_hash() const override; 32 HistogramType GetHistogramType() const override; 33 bool HasConstructionArguments(Sample expected_minimum, 34 Sample expected_maximum, 35 size_t expected_bucket_count) const override; Add(Sample value)36 void Add(Sample value) override {} AddCount(Sample value,int count)37 void AddCount(Sample value, int count) override {} AddSamples(const HistogramSamples & samples)38 void AddSamples(const HistogramSamples& samples) override {} 39 bool AddSamplesFromPickle(PickleIterator* iter) override; 40 std::unique_ptr<HistogramSamples> SnapshotSamples() const override; 41 std::unique_ptr<HistogramSamples> SnapshotUnloggedSamples() const override; MarkSamplesAsLogged(const HistogramSamples & samples)42 void MarkSamplesAsLogged(const HistogramSamples& samples) override {} 43 std::unique_ptr<HistogramSamples> SnapshotDelta() override; 44 std::unique_ptr<HistogramSamples> SnapshotFinalDelta() const override; WriteAscii(std::string * output)45 void WriteAscii(std::string* output) const override {} 46 Value::Dict ToGraphDict() const override; 47 48 protected: 49 // HistogramBase: SerializeInfoImpl(Pickle * pickle)50 void SerializeInfoImpl(Pickle* pickle) const override {} 51 Value::Dict GetParameters() const override; 52 53 private: 54 friend class NoDestructor<DummyHistogram>; 55 DummyHistogram()56 DummyHistogram() : HistogramBase("dummy_histogram") {} ~DummyHistogram()57 ~DummyHistogram() override {} 58 }; 59 60 } // namespace base 61 62 #endif // BASE_METRICS_DUMMY_HISTOGRAM_H_ 63