dummy_histogram.cc 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. // Copyright 2017 The Chromium Authors. All rights reserved.
  2. // Use of this source code is governed by a BSD-style license that can be
  3. // found in the LICENSE file.
  4. #include "base/metrics/dummy_histogram.h"
  5. #include <memory>
  6. #include "base/metrics/histogram_samples.h"
  7. #include "base/metrics/metrics_hashes.h"
  8. #include "base/no_destructor.h"
  9. #include "base/notreached.h"
  10. #include "base/values.h"
  11. namespace base {
  12. namespace {
  13. // Helper classes for DummyHistogram.
  14. class DummySampleCountIterator : public SampleCountIterator {
  15. public:
  16. DummySampleCountIterator() = default;
  17. DummySampleCountIterator(const DummySampleCountIterator&) = delete;
  18. DummySampleCountIterator& operator=(const DummySampleCountIterator&) = delete;
  19. ~DummySampleCountIterator() override = default;
  20. // SampleCountIterator:
  21. bool Done() const override { return true; }
  22. void Next() override { NOTREACHED(); }
  23. void Get(HistogramBase::Sample* min,
  24. int64_t* max,
  25. HistogramBase::Count* count) const override {
  26. NOTREACHED();
  27. }
  28. };
  29. class DummyHistogramSamples : public HistogramSamples {
  30. public:
  31. DummyHistogramSamples()
  32. : HistogramSamples(0, std::make_unique<LocalMetadata>()) {}
  33. DummyHistogramSamples(const DummyHistogramSamples&) = delete;
  34. DummyHistogramSamples& operator=(const DummyHistogramSamples&) = delete;
  35. // HistogramSamples:
  36. void Accumulate(HistogramBase::Sample value,
  37. HistogramBase::Count count) override {}
  38. HistogramBase::Count GetCount(HistogramBase::Sample value) const override {
  39. return HistogramBase::Count();
  40. }
  41. HistogramBase::Count TotalCount() const override {
  42. return HistogramBase::Count();
  43. }
  44. std::unique_ptr<SampleCountIterator> Iterator() const override {
  45. return std::make_unique<DummySampleCountIterator>();
  46. }
  47. bool AddSubtractImpl(SampleCountIterator* iter, Operator op) override {
  48. return true;
  49. }
  50. };
  51. } // namespace
  52. // static
  53. DummyHistogram* DummyHistogram::GetInstance() {
  54. static base::NoDestructor<DummyHistogram> dummy_histogram;
  55. return dummy_histogram.get();
  56. }
  57. uint64_t DummyHistogram::name_hash() const {
  58. return HashMetricName(histogram_name());
  59. }
  60. HistogramType DummyHistogram::GetHistogramType() const {
  61. return DUMMY_HISTOGRAM;
  62. }
  63. bool DummyHistogram::HasConstructionArguments(
  64. Sample expected_minimum,
  65. Sample expected_maximum,
  66. size_t expected_bucket_count) const {
  67. return true;
  68. }
  69. bool DummyHistogram::AddSamplesFromPickle(PickleIterator* iter) {
  70. return true;
  71. }
  72. std::unique_ptr<HistogramSamples> DummyHistogram::SnapshotSamples() const {
  73. return std::make_unique<DummyHistogramSamples>();
  74. }
  75. std::unique_ptr<HistogramSamples> DummyHistogram::SnapshotDelta() {
  76. return std::make_unique<DummyHistogramSamples>();
  77. }
  78. std::unique_ptr<HistogramSamples> DummyHistogram::SnapshotFinalDelta() const {
  79. return std::make_unique<DummyHistogramSamples>();
  80. }
  81. Value::Dict DummyHistogram::ToGraphDict() const {
  82. return Value::Dict();
  83. }
  84. Value::Dict DummyHistogram::GetParameters() const {
  85. return Value::Dict();
  86. }
  87. } // namespace base