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 #include <string_view> 13 14 #include "base/base_export.h" 15 #include "base/metrics/histogram_base.h" 16 #include "base/no_destructor.h" 17 #include "base/values.h" 18 19 namespace base { 20 21 // DummyHistogram is used for mocking histogram objects for histograms that 22 // shouldn't be recorded. It doesn't do any actual processing. 23 class BASE_EXPORT DummyHistogram : public HistogramBase { 24 public: 25 static DummyHistogram* GetInstance(); 26 27 DummyHistogram(const DummyHistogram&) = delete; 28 DummyHistogram& operator=(const DummyHistogram&) = delete; 29 30 // HistogramBase: CheckName(std::string_view name)31 void CheckName(std::string_view name) const override {} 32 uint64_t name_hash() const override; 33 HistogramType GetHistogramType() const override; 34 bool HasConstructionArguments(Sample expected_minimum, 35 Sample expected_maximum, 36 size_t expected_bucket_count) const override; Add(Sample value)37 void Add(Sample value) override {} AddCount(Sample value,int count)38 void AddCount(Sample value, int count) override {} AddSamples(const HistogramSamples & samples)39 void AddSamples(const HistogramSamples& samples) override {} 40 bool AddSamplesFromPickle(PickleIterator* iter) override; 41 std::unique_ptr<HistogramSamples> SnapshotSamples() const override; 42 std::unique_ptr<HistogramSamples> SnapshotUnloggedSamples() const override; MarkSamplesAsLogged(const HistogramSamples & samples)43 void MarkSamplesAsLogged(const HistogramSamples& samples) override {} 44 std::unique_ptr<HistogramSamples> SnapshotDelta() override; 45 std::unique_ptr<HistogramSamples> SnapshotFinalDelta() const override; WriteAscii(std::string * output)46 void WriteAscii(std::string* output) const override {} 47 Value::Dict ToGraphDict() const override; 48 49 protected: 50 // HistogramBase: SerializeInfoImpl(Pickle * pickle)51 void SerializeInfoImpl(Pickle* pickle) const override {} 52 Value::Dict GetParameters() const override; 53 54 private: 55 friend class NoDestructor<DummyHistogram>; 56 DummyHistogram()57 DummyHistogram() : HistogramBase("dummy_histogram") {} ~DummyHistogram()58 ~DummyHistogram() override {} 59 }; 60 61 } // namespace base 62 63 #endif // BASE_METRICS_DUMMY_HISTOGRAM_H_ 64