| Index: content/browser/renderer_host/render_widget_host_latency_tracker.h
|
| diff --git a/content/browser/renderer_host/render_widget_host_latency_tracker.h b/content/browser/renderer_host/render_widget_host_latency_tracker.h
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..01287fbc90f61443ef381d740728cfdcf3d04c9e
|
| --- /dev/null
|
| +++ b/content/browser/renderer_host/render_widget_host_latency_tracker.h
|
| @@ -0,0 +1,64 @@
|
| +// 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 CONTENT_BROWSER_RENDERER_HOST_RENDER_WIDGET_HOST_LATENCY_TRACKER_H_
|
| +#define CONTENT_BROWSER_RENDERER_HOST_RENDER_WIDGET_HOST_LATENCY_TRACKER_H_
|
| +
|
| +#include <vector>
|
| +
|
| +#include "base/basictypes.h"
|
| +#include "content/browser/renderer_host/event_with_latency_info.h"
|
| +#include "ui/events/latency_info.h"
|
| +
|
| +namespace content {
|
| +
|
| +// Utility class for tracking the latency of events passing through
|
| +// a given RenderWidgetHost.
|
| +class RenderWidgetHostLatencyTracker {
|
| + public:
|
| + RenderWidgetHostLatencyTracker();
|
| + ~RenderWidgetHostLatencyTracker();
|
| +
|
| + // Associates the latency tracker with a given route and process.
|
| + // Called once after the RenderWidgetHost is fully initialized.
|
| + void Initialize(int routing_id, int process_id);
|
| +
|
| + // Populates the LatencyInfo with relevant entries for latency tracking.
|
| + // Called when an event is received by the RenderWidgetHost, prior to
|
| + // that event being forwarded to the renderer (via the InputRouter).
|
| + void OnInputEvent(const blink::WebInputEvent& event,
|
| + float device_scale_factor,
|
| + ui::LatencyInfo* latency);
|
| +
|
| + // Populates the LatencyInfo with relevant entries for latency tracking, also
|
| + // terminating latency tracking for events that did not trigger rendering and
|
| + // performing relevant UMA latency reporting. Called when an event is ack'ed
|
| + // to the RenderWidgetHost (from the InputRouter).
|
| + void OnInputEventAck(const blink::WebInputEvent& event,
|
| + ui::LatencyInfo* latency);
|
| +
|
| + // Populates renderer-created LatencyInfo entries with the appropriate latency
|
| + // component id. Called when the RenderWidgetHost receives a compositor swap
|
| + // update from the renderer.
|
| + void OnSwapCompositorFrame(std::vector<ui::LatencyInfo>* latencies);
|
| +
|
| + // Terminates latency tracking for events that triggered rendering, also
|
| + // performing relevant UMA latency reporting.
|
| + // Called when the RenderWidgetHost receives a swap update from the GPU.
|
| + void OnFrameSwapped(const ui::LatencyInfo& latency);
|
| +
|
| + // Returns the ID that uniquely describes this component to the latency
|
| + // subsystem.
|
| + int64 latency_component_id() const { return latency_component_id_; }
|
| +
|
| + private:
|
| + int64 last_event_id_;
|
| + int64 latency_component_id_;
|
| +
|
| + DISALLOW_COPY_AND_ASSIGN(RenderWidgetHostLatencyTracker);
|
| +};
|
| +
|
| +} // namespace content
|
| +
|
| +#endif // CONTENT_BROWSER_RENDERER_HOST_RENDER_WIDGET_HOST_LATENCY_TRACKER_H_
|
|
|