chromium/third_party/blink/renderer/platform/instrumentation/histogram.h

// Copyright 2016 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef THIRD_PARTY_BLINK_RENDERER_PLATFORM_INSTRUMENTATION_HISTOGRAM_H_
#define THIRD_PARTY_BLINK_RENDERER_PLATFORM_INSTRUMENTATION_HISTOGRAM_H_

#include <stdint.h>
#include "base/memory/raw_ptr.h"
#include "base/memory/raw_ref.h"
#include "base/metrics/histogram_base.h"
#include "base/metrics/histogram_macros.h"
#include "base/time/default_tick_clock.h"
#include "base/time/tick_clock.h"
#include "base/time/time.h"
#include "third_party/blink/renderer/platform/platform_export.h"
#include "third_party/blink/renderer/platform/wtf/allocator/allocator.h"

namespace base {
class HistogramBase;
}

namespace blink {

class PLATFORM_EXPORT CustomCountHistogram {};

template <typename Derived>
class ScopedUsHistogramTimerBase {};

class ScopedUsHistogramTimer
    : public ScopedUsHistogramTimerBase<ScopedUsHistogramTimer> {};

class ScopedHighResUsHistogramTimer
    : public ScopedUsHistogramTimerBase<ScopedHighResUsHistogramTimer> {};

static constexpr base::HistogramBase::Sample kTimeBasedHistogramMinSample =;
static constexpr base::HistogramBase::Sample kTimeBasedHistogramMaxSample =;
static constexpr int32_t kTimeBasedHistogramBucketCount =;

#define SCOPED_BLINK_UMA_HISTOGRAM_TIMER_IMPL(name, allow_cross_thread)

#define SCOPED_BLINK_UMA_HISTOGRAM_TIMER_HIGHRES_IMPL(name,               \
                                                      allow_cross_thread)

// Use code like this to record time, in microseconds, to execute a block of
// code:
//
// {
//     SCOPED_BLINK_UMA_HISTOGRAM_TIMER(myUmaStatName)
//     RunMyCode();
// }
// This macro records all times between 0us and 10 seconds.
// Do not change this macro without renaming all metrics that use it!
#define SCOPED_BLINK_UMA_HISTOGRAM_TIMER(name)

// Only record samples when we have a high resolution timer
#define SCOPED_BLINK_UMA_HISTOGRAM_TIMER_HIGHRES(name)

// Thread-safe variant of SCOPED_BLINK_UMA_HISTOGRAM_TIMER.
// Use if the histogram can be accessed by multiple threads.
#define SCOPED_BLINK_UMA_HISTOGRAM_TIMER_THREAD_SAFE(name)

}  // namespace blink

#endif  // THIRD_PARTY_BLINK_RENDERER_PLATFORM_INSTRUMENTATION_HISTOGRAM_H_