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