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