// Copyright 2016 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. module ui.mojom; import "mojo/public/mojom/base/time.mojom"; import "ui/gfx/geometry/mojo/geometry.mojom"; enum LatencyComponentType { // ---------------------------BEGIN COMPONENT------------------------------- // BEGIN COMPONENT is when we show the latency begin in chrome://tracing. // Timestamp when the input event is sent from RenderWidgetHost to renderer. INPUT_EVENT_LATENCY_BEGIN_RWH_COMPONENT, // In threaded scrolling, main thread scroll listener update is async to // scroll processing in impl thread. This is the timestamp when we consider // the main thread scroll listener update is begun. LATENCY_BEGIN_SCROLL_LISTENER_UPDATE_MAIN_COMPONENT, // The BeginFrame::frame_time of various frame sources. LATENCY_BEGIN_FRAME_RENDERER_MAIN_COMPONENT, LATENCY_BEGIN_FRAME_RENDERER_INVALIDATE_COMPONENT, LATENCY_BEGIN_FRAME_RENDERER_COMPOSITOR_COMPONENT, LATENCY_BEGIN_FRAME_UI_MAIN_COMPONENT, LATENCY_BEGIN_FRAME_UI_COMPOSITOR_COMPONENT, LATENCY_BEGIN_FRAME_DISPLAY_COMPOSITOR_COMPONENT, // ---------------------------NORMAL COMPONENT------------------------------- // The original timestamp of the touch event which converts to scroll update. INPUT_EVENT_LATENCY_SCROLL_UPDATE_ORIGINAL_COMPONENT, // The original timestamp of the touch event which converts to the *first* // scroll update in a scroll gesture sequence. INPUT_EVENT_LATENCY_FIRST_SCROLL_UPDATE_ORIGINAL_COMPONENT, // Original timestamp for input event (e.g. timestamp from kernel). INPUT_EVENT_LATENCY_ORIGINAL_COMPONENT, // Timestamp when the UI event is created. INPUT_EVENT_LATENCY_UI_COMPONENT, // Timestamp when the event is dispatched on the main thread of the renderer. INPUT_EVENT_LATENCY_RENDERER_MAIN_COMPONENT, // This is special component indicating there is rendering scheduled for // the event associated with this LatencyInfo on main thread. INPUT_EVENT_LATENCY_RENDERING_SCHEDULED_MAIN_COMPONENT, // This is special component indicating there is rendering scheduled for // the event associated with this LatencyInfo on impl thread. INPUT_EVENT_LATENCY_RENDERING_SCHEDULED_IMPL_COMPONENT, // Timestamp when a scroll update is forwarded to the main thread. INPUT_EVENT_LATENCY_FORWARD_SCROLL_UPDATE_TO_MAIN_COMPONENT, // Timestamp when the event's ack is received by the RWH. INPUT_EVENT_LATENCY_ACK_RWH_COMPONENT, // Timestamp when the frame is swapped in renderer. INPUT_EVENT_LATENCY_RENDERER_SWAP_COMPONENT, // Timestamp of when the display compositor receives a compositor frame. // Display compositor can be either in the browser process or in Mus. DISPLAY_COMPOSITOR_RECEIVED_FRAME_COMPONENT, // Timestamp of when the gpu service began swap buffers, unlike // INPUT_EVENT_LATENCY_FRAME_SWAP_COMPONENT which measures after. INPUT_EVENT_GPU_SWAP_BUFFER_COMPONENT, // Timestamp when the frame is swapped (i.e. when the rendering caused by // input event actually takes effect). INPUT_EVENT_LATENCY_FRAME_SWAP_COMPONENT, }; enum SourceEventType { UNKNOWN, WHEEL, MOUSE, TOUCH, INERTIAL, KEY_PRESS, TOUCHPAD, FRAME, OTHER, }; // See ui/latency/latency_info.h struct LatencyInfo { string trace_name; map latency_components; int64 trace_id; int64 ukm_source_id; bool coalesced; bool began; bool terminated; SourceEventType source_event_type; };