xref: /aosp_15_r20/external/libchrome/base/metrics/histogram_macros_local.h (revision 635a864187cb8b6c713ff48b7e790a6b21769273)
1*635a8641SAndroid Build Coastguard Worker // Copyright 2016 The Chromium Authors. All rights reserved.
2*635a8641SAndroid Build Coastguard Worker // Use of this source code is governed by a BSD-style license that can be
3*635a8641SAndroid Build Coastguard Worker // found in the LICENSE file.
4*635a8641SAndroid Build Coastguard Worker 
5*635a8641SAndroid Build Coastguard Worker #ifndef BASE_METRICS_HISTOGRAM_MACROS_LOCAL_H_
6*635a8641SAndroid Build Coastguard Worker #define BASE_METRICS_HISTOGRAM_MACROS_LOCAL_H_
7*635a8641SAndroid Build Coastguard Worker 
8*635a8641SAndroid Build Coastguard Worker #include "base/logging.h"
9*635a8641SAndroid Build Coastguard Worker #include "base/metrics/histogram.h"
10*635a8641SAndroid Build Coastguard Worker #include "base/metrics/histogram_macros_internal.h"
11*635a8641SAndroid Build Coastguard Worker #include "base/time/time.h"
12*635a8641SAndroid Build Coastguard Worker 
13*635a8641SAndroid Build Coastguard Worker // TODO(rkaplow): Migrate all LOCAL_* usage within Chromium to include this
14*635a8641SAndroid Build Coastguard Worker // file instead of the histogram_macros.h file.
15*635a8641SAndroid Build Coastguard Worker 
16*635a8641SAndroid Build Coastguard Worker //------------------------------------------------------------------------------
17*635a8641SAndroid Build Coastguard Worker // Enumeration histograms.
18*635a8641SAndroid Build Coastguard Worker //
19*635a8641SAndroid Build Coastguard Worker // For usage details, see the equivalents in histogram_macros.h.
20*635a8641SAndroid Build Coastguard Worker 
21*635a8641SAndroid Build Coastguard Worker #define LOCAL_HISTOGRAM_ENUMERATION(name, ...)                          \
22*635a8641SAndroid Build Coastguard Worker   CR_EXPAND_ARG(INTERNAL_UMA_HISTOGRAM_ENUMERATION_GET_MACRO(           \
23*635a8641SAndroid Build Coastguard Worker       __VA_ARGS__, INTERNAL_UMA_HISTOGRAM_ENUMERATION_SPECIFY_BOUNDARY, \
24*635a8641SAndroid Build Coastguard Worker       INTERNAL_UMA_HISTOGRAM_ENUMERATION_DEDUCE_BOUNDARY)(              \
25*635a8641SAndroid Build Coastguard Worker       name, __VA_ARGS__, base::HistogramBase::kNoFlags))
26*635a8641SAndroid Build Coastguard Worker 
27*635a8641SAndroid Build Coastguard Worker #define LOCAL_HISTOGRAM_BOOLEAN(name, sample)                                  \
28*635a8641SAndroid Build Coastguard Worker     STATIC_HISTOGRAM_POINTER_BLOCK(name, AddBoolean(sample),                   \
29*635a8641SAndroid Build Coastguard Worker         base::BooleanHistogram::FactoryGet(name, base::Histogram::kNoFlags))
30*635a8641SAndroid Build Coastguard Worker 
31*635a8641SAndroid Build Coastguard Worker //------------------------------------------------------------------------------
32*635a8641SAndroid Build Coastguard Worker // Percentage histograms.
33*635a8641SAndroid Build Coastguard Worker //
34*635a8641SAndroid Build Coastguard Worker // For usage details, see the equivalents in histogram_macros.h
35*635a8641SAndroid Build Coastguard Worker 
36*635a8641SAndroid Build Coastguard Worker #define LOCAL_HISTOGRAM_PERCENTAGE(name, under_one_hundred)                    \
37*635a8641SAndroid Build Coastguard Worker     LOCAL_HISTOGRAM_ENUMERATION(name, under_one_hundred, 101)
38*635a8641SAndroid Build Coastguard Worker 
39*635a8641SAndroid Build Coastguard Worker //------------------------------------------------------------------------------
40*635a8641SAndroid Build Coastguard Worker // Count histograms. These are used for collecting numeric data. Note that we
41*635a8641SAndroid Build Coastguard Worker // have macros for more specialized use cases below (memory, time, percentages).
42*635a8641SAndroid Build Coastguard Worker // For usage details, see the equivalents in histogram_macros.h.
43*635a8641SAndroid Build Coastguard Worker 
44*635a8641SAndroid Build Coastguard Worker #define LOCAL_HISTOGRAM_COUNTS_100(name, sample)                               \
45*635a8641SAndroid Build Coastguard Worker     LOCAL_HISTOGRAM_CUSTOM_COUNTS(name, sample, 1, 100, 50)
46*635a8641SAndroid Build Coastguard Worker 
47*635a8641SAndroid Build Coastguard Worker #define LOCAL_HISTOGRAM_COUNTS_10000(name, sample)                             \
48*635a8641SAndroid Build Coastguard Worker     LOCAL_HISTOGRAM_CUSTOM_COUNTS(name, sample, 1, 10000, 50)
49*635a8641SAndroid Build Coastguard Worker 
50*635a8641SAndroid Build Coastguard Worker #define LOCAL_HISTOGRAM_COUNTS_1000000(name, sample)                           \
51*635a8641SAndroid Build Coastguard Worker     LOCAL_HISTOGRAM_CUSTOM_COUNTS(name, sample, 1, 1000000, 50)
52*635a8641SAndroid Build Coastguard Worker 
53*635a8641SAndroid Build Coastguard Worker #define LOCAL_HISTOGRAM_CUSTOM_COUNTS(name, sample, min, max, bucket_count)    \
54*635a8641SAndroid Build Coastguard Worker     INTERNAL_HISTOGRAM_CUSTOM_COUNTS_WITH_FLAG(                                \
55*635a8641SAndroid Build Coastguard Worker         name, sample, min, max, bucket_count, base::HistogramBase::kNoFlags)
56*635a8641SAndroid Build Coastguard Worker 
57*635a8641SAndroid Build Coastguard Worker //------------------------------------------------------------------------------
58*635a8641SAndroid Build Coastguard Worker // Timing histograms. These are used for collecting timing data (generally
59*635a8641SAndroid Build Coastguard Worker // latencies).
60*635a8641SAndroid Build Coastguard Worker //
61*635a8641SAndroid Build Coastguard Worker // For usage details, see the equivalents in histogram_macros.h.
62*635a8641SAndroid Build Coastguard Worker 
63*635a8641SAndroid Build Coastguard Worker #define LOCAL_HISTOGRAM_TIMES(name, sample) LOCAL_HISTOGRAM_CUSTOM_TIMES(      \
64*635a8641SAndroid Build Coastguard Worker     name, sample, base::TimeDelta::FromMilliseconds(1),                        \
65*635a8641SAndroid Build Coastguard Worker     base::TimeDelta::FromSeconds(10), 50)
66*635a8641SAndroid Build Coastguard Worker 
67*635a8641SAndroid Build Coastguard Worker #define LOCAL_HISTOGRAM_CUSTOM_TIMES(name, sample, min, max, bucket_count) \
68*635a8641SAndroid Build Coastguard Worker   STATIC_HISTOGRAM_POINTER_BLOCK(                                          \
69*635a8641SAndroid Build Coastguard Worker       name, AddTimeMillisecondsGranularity(sample),                        \
70*635a8641SAndroid Build Coastguard Worker       base::Histogram::FactoryTimeGet(name, min, max, bucket_count,        \
71*635a8641SAndroid Build Coastguard Worker                                       base::HistogramBase::kNoFlags))
72*635a8641SAndroid Build Coastguard Worker 
73*635a8641SAndroid Build Coastguard Worker //------------------------------------------------------------------------------
74*635a8641SAndroid Build Coastguard Worker // Memory histograms.
75*635a8641SAndroid Build Coastguard Worker //
76*635a8641SAndroid Build Coastguard Worker // For usage details, see the equivalents in histogram_macros.h.
77*635a8641SAndroid Build Coastguard Worker 
78*635a8641SAndroid Build Coastguard Worker #define LOCAL_HISTOGRAM_MEMORY_KB(name, sample) LOCAL_HISTOGRAM_CUSTOM_COUNTS( \
79*635a8641SAndroid Build Coastguard Worker     name, sample, 1000, 500000, 50)
80*635a8641SAndroid Build Coastguard Worker 
81*635a8641SAndroid Build Coastguard Worker //------------------------------------------------------------------------------
82*635a8641SAndroid Build Coastguard Worker // Deprecated histograms. Not recommended for current use.
83*635a8641SAndroid Build Coastguard Worker 
84*635a8641SAndroid Build Coastguard Worker // TODO(rkaplow): See if we can clean up this macro and usage.
85*635a8641SAndroid Build Coastguard Worker // Legacy non-explicit version. We suggest using LOCAL_HISTOGRAM_COUNTS_1000000
86*635a8641SAndroid Build Coastguard Worker // instead.
87*635a8641SAndroid Build Coastguard Worker #define LOCAL_HISTOGRAM_COUNTS(name, sample)                                   \
88*635a8641SAndroid Build Coastguard Worker     LOCAL_HISTOGRAM_CUSTOM_COUNTS(name, sample, 1, 1000000, 50)
89*635a8641SAndroid Build Coastguard Worker 
90*635a8641SAndroid Build Coastguard Worker #endif  // BASE_METRICS_HISTOGRAM_MACROS_LOCAL_H_
91