| // Copyright 2014 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef CHROMECAST_BASE_METRICS_CAST_HISTOGRAMS_H_ |
| #define CHROMECAST_BASE_METRICS_CAST_HISTOGRAMS_H_ |
| |
| #include "base/metrics/histogram.h" |
| |
| // STATIC_HISTOGRAM_POINTER_BLOCK only calls histogram_factory_get_invocation |
| // at the first time and uses the cached histogram_pointer for subsequent calls |
| // through base::subtle::Release_Store() and base::subtle::Acquire_Load(). |
| // If the histogram name changes between subsequent calls, use this non-cached |
| // version that always calls histogram_factory_get_invocation. |
| #define STATIC_HISTOGRAM_POINTER_BLOCK_NO_CACHE( \ |
| constant_histogram_name, histogram_add_method_invocation, \ |
| histogram_factory_get_invocation) \ |
| do { \ |
| base::HistogramBase* histogram_pointer = histogram_factory_get_invocation; \ |
| if (DCHECK_IS_ON()) \ |
| histogram_pointer->CheckName(constant_histogram_name); \ |
| histogram_pointer->histogram_add_method_invocation; \ |
| } while (0) |
| |
| #define UMA_HISTOGRAM_CUSTOM_TIMES_NO_CACHE( \ |
| name, sample, min, max, bucket_count) \ |
| STATIC_HISTOGRAM_POINTER_BLOCK_NO_CACHE(name, AddTime(sample), \ |
| base::Histogram::FactoryTimeGet(name, min, max, bucket_count, \ |
| base::Histogram::kUmaTargetedHistogramFlag)) |
| |
| #define UMA_HISTOGRAM_CUSTOM_COUNTS_NO_CACHE(name, sample, min, max, \ |
| bucket_count, count) \ |
| STATIC_HISTOGRAM_POINTER_BLOCK_NO_CACHE(name, AddCount(sample, count), \ |
| base::Histogram::FactoryGet(name, min, max, bucket_count, \ |
| base::HistogramBase::kUmaTargetedHistogramFlag)) |
| |
| #define UMA_HISTOGRAM_ENUMERATION_NO_CACHE(name, sample, boundary_value) \ |
| STATIC_HISTOGRAM_POINTER_BLOCK_NO_CACHE(name, Add(sample), \ |
| base::LinearHistogram::FactoryGet(name, 1, boundary_value, \ |
| boundary_value + 1, base::Histogram::kUmaTargetedHistogramFlag)) |
| |
| #endif // CHROMECAST_BASE_METRICS_CAST_HISTOGRAMS_H_ |