1*6777b538SAndroid Build Coastguard Worker // Copyright 2017 The Chromium Authors
2*6777b538SAndroid Build Coastguard Worker // Use of this source code is governed by a BSD-style license that can be
3*6777b538SAndroid Build Coastguard Worker // found in the LICENSE file.
4*6777b538SAndroid Build Coastguard Worker
5*6777b538SAndroid Build Coastguard Worker #include "base/metrics/dummy_histogram.h"
6*6777b538SAndroid Build Coastguard Worker
7*6777b538SAndroid Build Coastguard Worker #include <memory>
8*6777b538SAndroid Build Coastguard Worker
9*6777b538SAndroid Build Coastguard Worker #include "base/metrics/histogram_samples.h"
10*6777b538SAndroid Build Coastguard Worker #include "base/metrics/metrics_hashes.h"
11*6777b538SAndroid Build Coastguard Worker #include "base/no_destructor.h"
12*6777b538SAndroid Build Coastguard Worker #include "base/notreached.h"
13*6777b538SAndroid Build Coastguard Worker #include "base/values.h"
14*6777b538SAndroid Build Coastguard Worker
15*6777b538SAndroid Build Coastguard Worker namespace base {
16*6777b538SAndroid Build Coastguard Worker
17*6777b538SAndroid Build Coastguard Worker namespace {
18*6777b538SAndroid Build Coastguard Worker
19*6777b538SAndroid Build Coastguard Worker // Helper classes for DummyHistogram.
20*6777b538SAndroid Build Coastguard Worker class DummySampleCountIterator : public SampleCountIterator {
21*6777b538SAndroid Build Coastguard Worker public:
22*6777b538SAndroid Build Coastguard Worker DummySampleCountIterator() = default;
23*6777b538SAndroid Build Coastguard Worker DummySampleCountIterator(const DummySampleCountIterator&) = delete;
24*6777b538SAndroid Build Coastguard Worker DummySampleCountIterator& operator=(const DummySampleCountIterator&) = delete;
25*6777b538SAndroid Build Coastguard Worker ~DummySampleCountIterator() override = default;
26*6777b538SAndroid Build Coastguard Worker
27*6777b538SAndroid Build Coastguard Worker // SampleCountIterator:
Done() const28*6777b538SAndroid Build Coastguard Worker bool Done() const override { return true; }
Next()29*6777b538SAndroid Build Coastguard Worker void Next() override { NOTREACHED(); }
Get(HistogramBase::Sample * min,int64_t * max,HistogramBase::Count * count)30*6777b538SAndroid Build Coastguard Worker void Get(HistogramBase::Sample* min,
31*6777b538SAndroid Build Coastguard Worker int64_t* max,
32*6777b538SAndroid Build Coastguard Worker HistogramBase::Count* count) override {
33*6777b538SAndroid Build Coastguard Worker NOTREACHED();
34*6777b538SAndroid Build Coastguard Worker }
35*6777b538SAndroid Build Coastguard Worker };
36*6777b538SAndroid Build Coastguard Worker
37*6777b538SAndroid Build Coastguard Worker class DummyHistogramSamples : public HistogramSamples {
38*6777b538SAndroid Build Coastguard Worker public:
DummyHistogramSamples()39*6777b538SAndroid Build Coastguard Worker DummyHistogramSamples()
40*6777b538SAndroid Build Coastguard Worker : HistogramSamples(0, std::make_unique<LocalMetadata>()) {}
41*6777b538SAndroid Build Coastguard Worker DummyHistogramSamples(const DummyHistogramSamples&) = delete;
42*6777b538SAndroid Build Coastguard Worker DummyHistogramSamples& operator=(const DummyHistogramSamples&) = delete;
43*6777b538SAndroid Build Coastguard Worker
44*6777b538SAndroid Build Coastguard Worker // HistogramSamples:
Accumulate(HistogramBase::Sample value,HistogramBase::Count count)45*6777b538SAndroid Build Coastguard Worker void Accumulate(HistogramBase::Sample value,
46*6777b538SAndroid Build Coastguard Worker HistogramBase::Count count) override {}
GetCount(HistogramBase::Sample value) const47*6777b538SAndroid Build Coastguard Worker HistogramBase::Count GetCount(HistogramBase::Sample value) const override {
48*6777b538SAndroid Build Coastguard Worker return HistogramBase::Count();
49*6777b538SAndroid Build Coastguard Worker }
TotalCount() const50*6777b538SAndroid Build Coastguard Worker HistogramBase::Count TotalCount() const override {
51*6777b538SAndroid Build Coastguard Worker return HistogramBase::Count();
52*6777b538SAndroid Build Coastguard Worker }
Iterator() const53*6777b538SAndroid Build Coastguard Worker std::unique_ptr<SampleCountIterator> Iterator() const override {
54*6777b538SAndroid Build Coastguard Worker return std::make_unique<DummySampleCountIterator>();
55*6777b538SAndroid Build Coastguard Worker }
ExtractingIterator()56*6777b538SAndroid Build Coastguard Worker std::unique_ptr<SampleCountIterator> ExtractingIterator() override {
57*6777b538SAndroid Build Coastguard Worker return std::make_unique<DummySampleCountIterator>();
58*6777b538SAndroid Build Coastguard Worker }
IsDefinitelyEmpty() const59*6777b538SAndroid Build Coastguard Worker bool IsDefinitelyEmpty() const override {
60*6777b538SAndroid Build Coastguard Worker NOTREACHED();
61*6777b538SAndroid Build Coastguard Worker return true;
62*6777b538SAndroid Build Coastguard Worker }
AddSubtractImpl(SampleCountIterator * iter,Operator op)63*6777b538SAndroid Build Coastguard Worker bool AddSubtractImpl(SampleCountIterator* iter, Operator op) override {
64*6777b538SAndroid Build Coastguard Worker return true;
65*6777b538SAndroid Build Coastguard Worker }
66*6777b538SAndroid Build Coastguard Worker };
67*6777b538SAndroid Build Coastguard Worker
68*6777b538SAndroid Build Coastguard Worker } // namespace
69*6777b538SAndroid Build Coastguard Worker
70*6777b538SAndroid Build Coastguard Worker // static
GetInstance()71*6777b538SAndroid Build Coastguard Worker DummyHistogram* DummyHistogram::GetInstance() {
72*6777b538SAndroid Build Coastguard Worker static base::NoDestructor<DummyHistogram> dummy_histogram;
73*6777b538SAndroid Build Coastguard Worker return dummy_histogram.get();
74*6777b538SAndroid Build Coastguard Worker }
75*6777b538SAndroid Build Coastguard Worker
name_hash() const76*6777b538SAndroid Build Coastguard Worker uint64_t DummyHistogram::name_hash() const {
77*6777b538SAndroid Build Coastguard Worker return HashMetricName(histogram_name());
78*6777b538SAndroid Build Coastguard Worker }
79*6777b538SAndroid Build Coastguard Worker
GetHistogramType() const80*6777b538SAndroid Build Coastguard Worker HistogramType DummyHistogram::GetHistogramType() const {
81*6777b538SAndroid Build Coastguard Worker return DUMMY_HISTOGRAM;
82*6777b538SAndroid Build Coastguard Worker }
83*6777b538SAndroid Build Coastguard Worker
HasConstructionArguments(Sample expected_minimum,Sample expected_maximum,size_t expected_bucket_count) const84*6777b538SAndroid Build Coastguard Worker bool DummyHistogram::HasConstructionArguments(
85*6777b538SAndroid Build Coastguard Worker Sample expected_minimum,
86*6777b538SAndroid Build Coastguard Worker Sample expected_maximum,
87*6777b538SAndroid Build Coastguard Worker size_t expected_bucket_count) const {
88*6777b538SAndroid Build Coastguard Worker return true;
89*6777b538SAndroid Build Coastguard Worker }
90*6777b538SAndroid Build Coastguard Worker
AddSamplesFromPickle(PickleIterator * iter)91*6777b538SAndroid Build Coastguard Worker bool DummyHistogram::AddSamplesFromPickle(PickleIterator* iter) {
92*6777b538SAndroid Build Coastguard Worker return true;
93*6777b538SAndroid Build Coastguard Worker }
94*6777b538SAndroid Build Coastguard Worker
SnapshotSamples() const95*6777b538SAndroid Build Coastguard Worker std::unique_ptr<HistogramSamples> DummyHistogram::SnapshotSamples() const {
96*6777b538SAndroid Build Coastguard Worker return std::make_unique<DummyHistogramSamples>();
97*6777b538SAndroid Build Coastguard Worker }
98*6777b538SAndroid Build Coastguard Worker
SnapshotUnloggedSamples() const99*6777b538SAndroid Build Coastguard Worker std::unique_ptr<HistogramSamples> DummyHistogram::SnapshotUnloggedSamples()
100*6777b538SAndroid Build Coastguard Worker const {
101*6777b538SAndroid Build Coastguard Worker return std::make_unique<DummyHistogramSamples>();
102*6777b538SAndroid Build Coastguard Worker }
103*6777b538SAndroid Build Coastguard Worker
SnapshotDelta()104*6777b538SAndroid Build Coastguard Worker std::unique_ptr<HistogramSamples> DummyHistogram::SnapshotDelta() {
105*6777b538SAndroid Build Coastguard Worker return std::make_unique<DummyHistogramSamples>();
106*6777b538SAndroid Build Coastguard Worker }
107*6777b538SAndroid Build Coastguard Worker
SnapshotFinalDelta() const108*6777b538SAndroid Build Coastguard Worker std::unique_ptr<HistogramSamples> DummyHistogram::SnapshotFinalDelta() const {
109*6777b538SAndroid Build Coastguard Worker return std::make_unique<DummyHistogramSamples>();
110*6777b538SAndroid Build Coastguard Worker }
111*6777b538SAndroid Build Coastguard Worker
ToGraphDict() const112*6777b538SAndroid Build Coastguard Worker Value::Dict DummyHistogram::ToGraphDict() const {
113*6777b538SAndroid Build Coastguard Worker return Value::Dict();
114*6777b538SAndroid Build Coastguard Worker }
115*6777b538SAndroid Build Coastguard Worker
GetParameters() const116*6777b538SAndroid Build Coastguard Worker Value::Dict DummyHistogram::GetParameters() const {
117*6777b538SAndroid Build Coastguard Worker return Value::Dict();
118*6777b538SAndroid Build Coastguard Worker }
119*6777b538SAndroid Build Coastguard Worker
120*6777b538SAndroid Build Coastguard Worker } // namespace base
121