// Copyright 2019 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef UI_COMPOSITOR_PRESENTATION_TIME_RECORDER_H_ #define UI_COMPOSITOR_PRESENTATION_TIME_RECORDER_H_ #include <optional> #include "base/gtest_prod_util.h" #include "base/memory/raw_ptr.h" #include "base/memory/weak_ptr.h" #include "base/time/time.h" #include "ui/compositor/compositor.h" namespace ui { // PresentationTimeRecorder records the time between when an UI update is // requested, and the requested UI change has been presented to the user // (screen). This measure the longest presentation time for each commit by // skipping updates made after the last request and next commit. Use this if // you want to measure the drawing performance in continuous operation that // doesn't involve animations (such as window dragging). Call |RequestNext()| // when you made modification to UI that should expect it will be presented. class COMPOSITOR_EXPORT PresentationTimeRecorder { … }; // Creates a PresentationTimeRecorder that records timing histograms of // presentation time and (if given) max latency. The time range is 1 to 200 ms, // with 50 buckets. COMPOSITOR_EXPORT std::unique_ptr<PresentationTimeRecorder> CreatePresentationTimeHistogramRecorder( ui::Compositor* compositor, const char* presentation_time_histogram_name, const char* max_latency_histogram_name = "", base::TimeDelta maximum = base::Milliseconds(200), bool emit_trace_event = false); } // namespace ui #endif // UI_COMPOSITOR_PRESENTATION_TIME_RECORDER_H_