blob: 38a2d7852025b718a46bda46012ef87d86a4198f [file] [log] [blame]
rkaplowa1ee2052016-09-27 17:12:081// Copyright 2016 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
5#ifndef BASE_METRICS_HISTOGRAM_MACROS_LOCAL_H_
6#define BASE_METRICS_HISTOGRAM_MACROS_LOCAL_H_
7
8#include "base/logging.h"
9#include "base/metrics/histogram.h"
10#include "base/metrics/histogram_macros_internal.h"
11#include "base/time/time.h"
12
13// TODO(rkaplow): Migrate all LOCAL_* usage within Chromium to include this
14// file instead of the histogram_macros.h file.
15
16//------------------------------------------------------------------------------
17// Enumeration histograms.
18//
19// For usage details, see the equivalents in histogram_macros.h.
20
Daniel Chenga67dd552018-03-31 02:30:4621#define LOCAL_HISTOGRAM_ENUMERATION(name, ...) \
Avi Drissmanb00a9e7e2018-10-12 01:01:5622 INTERNAL_UMA_HISTOGRAM_ENUMERATION_GET_MACRO( \
Daniel Chenga67dd552018-03-31 02:30:4623 __VA_ARGS__, INTERNAL_UMA_HISTOGRAM_ENUMERATION_SPECIFY_BOUNDARY, \
Avi Drissmanb00a9e7e2018-10-12 01:01:5624 INTERNAL_UMA_HISTOGRAM_ENUMERATION_DEDUCE_BOUNDARY) \
25 (name, __VA_ARGS__, base::HistogramBase::kNoFlags)
rkaplowa1ee2052016-09-27 17:12:0826
27#define LOCAL_HISTOGRAM_BOOLEAN(name, sample) \
28 STATIC_HISTOGRAM_POINTER_BLOCK(name, AddBoolean(sample), \
29 base::BooleanHistogram::FactoryGet(name, base::Histogram::kNoFlags))
30
31//------------------------------------------------------------------------------
32// Percentage histograms.
33//
34// For usage details, see the equivalents in histogram_macros.h
35
36#define LOCAL_HISTOGRAM_PERCENTAGE(name, under_one_hundred) \
37 LOCAL_HISTOGRAM_ENUMERATION(name, under_one_hundred, 101)
38
39//------------------------------------------------------------------------------
40// Count histograms. These are used for collecting numeric data. Note that we
41// have macros for more specialized use cases below (memory, time, percentages).
42// For usage details, see the equivalents in histogram_macros.h.
43
44#define LOCAL_HISTOGRAM_COUNTS_100(name, sample) \
45 LOCAL_HISTOGRAM_CUSTOM_COUNTS(name, sample, 1, 100, 50)
46
47#define LOCAL_HISTOGRAM_COUNTS_10000(name, sample) \
48 LOCAL_HISTOGRAM_CUSTOM_COUNTS(name, sample, 1, 10000, 50)
49
50#define LOCAL_HISTOGRAM_COUNTS_1000000(name, sample) \
51 LOCAL_HISTOGRAM_CUSTOM_COUNTS(name, sample, 1, 1000000, 50)
52
53#define LOCAL_HISTOGRAM_CUSTOM_COUNTS(name, sample, min, max, bucket_count) \
54 INTERNAL_HISTOGRAM_CUSTOM_COUNTS_WITH_FLAG( \
55 name, sample, min, max, bucket_count, base::HistogramBase::kNoFlags)
56
57//------------------------------------------------------------------------------
58// Timing histograms. These are used for collecting timing data (generally
59// latencies).
60//
61// For usage details, see the equivalents in histogram_macros.h.
62
63#define LOCAL_HISTOGRAM_TIMES(name, sample) LOCAL_HISTOGRAM_CUSTOM_TIMES( \
64 name, sample, base::TimeDelta::FromMilliseconds(1), \
65 base::TimeDelta::FromSeconds(10), 50)
66
Gabriel Charette5ec205882018-05-22 18:07:3167#define LOCAL_HISTOGRAM_CUSTOM_TIMES(name, sample, min, max, bucket_count) \
68 STATIC_HISTOGRAM_POINTER_BLOCK( \
69 name, AddTimeMillisecondsGranularity(sample), \
70 base::Histogram::FactoryTimeGet(name, min, max, bucket_count, \
71 base::HistogramBase::kNoFlags))
rkaplowa1ee2052016-09-27 17:12:0872
73//------------------------------------------------------------------------------
74// Memory histograms.
75//
76// For usage details, see the equivalents in histogram_macros.h.
77
78#define LOCAL_HISTOGRAM_MEMORY_KB(name, sample) LOCAL_HISTOGRAM_CUSTOM_COUNTS( \
79 name, sample, 1000, 500000, 50)
80
81//------------------------------------------------------------------------------
82// Deprecated histograms. Not recommended for current use.
83
84// TODO(rkaplow): See if we can clean up this macro and usage.
85// Legacy non-explicit version. We suggest using LOCAL_HISTOGRAM_COUNTS_1000000
86// instead.
87#define LOCAL_HISTOGRAM_COUNTS(name, sample) \
88 LOCAL_HISTOGRAM_CUSTOM_COUNTS(name, sample, 1, 1000000, 50)
89
90#endif // BASE_METRICS_HISTOGRAM_MACROS_LOCAL_H_