[tracing] Hoist (over)scroll unused delta tracing
This CL removes the following arguments from InputHandlerProxy::DidOverscroll(): debug.dx debug.dy and adds the following arguments to InputHandlerProxy::HandleGestureScrollUpdate_Result instead: scroll_deltas.did_overscroll_root scroll_deltas.unused_delta_x scroll_deltas.unused_delta_y This has two benefits: 1. We will be able to get unused deltas from field traces. 2. The unused delta will be logged together with other scroll delta-related information (so less work will be required at analysis time). PERFETTO_TESTS=`autoninja -C out/Default perfetto_diff_tests && out/Default/bin/run_perfetto_diff_tests` Bug: b:394015537 Change-Id: I4db6a11cbc8c0fe5df7a6c8573e9b3f1ee0391ae Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/6225802 Commit-Queue: Petr Cermak <petrcermak@chromium.org> Auto-Submit: Petr Cermak <petrcermak@chromium.org> Commit-Queue: Jonathan Ross <jonross@chromium.org> Reviewed-by: Jonathan Ross <jonross@chromium.org> Cr-Commit-Position: refs/heads/main@{#1416157}
This commit is contained in:

committed by
Chromium LUCI CQ

parent
362b373187
commit
5a940d8407
base/tracing/protos
services/tracing/perfetto
third_party/blink/renderer/platform/widget/input
@ -1281,6 +1281,13 @@ message ScrollDeltas {
|
||||
// The array of predicted deltas of inputs which were shown together in one
|
||||
// GPU frame.
|
||||
repeated float segregated_predicted_deltas_in_gpu_frame_y = 14;
|
||||
|
||||
// Data for overscrolls.
|
||||
// Whether any of the scroll delta was unused.
|
||||
optional bool did_overscroll_root = 15;
|
||||
// The amount of the scroll delta that was not used for scrolling.
|
||||
optional float unused_delta_x = 16;
|
||||
optional float unused_delta_y = 17;
|
||||
}
|
||||
|
||||
// Debug information for system layer of audio rendering on Windows.
|
||||
|
@ -380,8 +380,8 @@ constexpr MessageInfo kTabSwitchMeasurement = {kTabSwitchMeasurementIndices,
|
||||
nullptr};
|
||||
|
||||
// Proto Message: ScrollDeltas
|
||||
constexpr int kScrollDeltasIndices[] = {1, 2, 3, 4, 5, 6, 7, 8,
|
||||
9, 10, 11, 12, 13, 14, -1};
|
||||
constexpr int kScrollDeltasIndices[] = {1, 2, 3, 4, 5, 6, 7, 8, 9,
|
||||
10, 11, 12, 13, 14, 15, 16, 17, -1};
|
||||
constexpr MessageInfo kScrollDeltas = {kScrollDeltasIndices, nullptr};
|
||||
|
||||
// Proto Message: WinRenderAudioFromSource
|
||||
|
@ -1202,17 +1202,19 @@ InputHandlerProxy::HandleGestureScrollUpdate(
|
||||
TRACE_EVENT(
|
||||
"input,input.scrolling",
|
||||
"InputHandlerProxy::HandleGestureScrollUpdate_Result",
|
||||
[trace_id, provided_delta_x, provided_delta_y,
|
||||
visual_offset_x = scroll_result.current_visual_offset.x(),
|
||||
visual_offset_y = scroll_result.current_visual_offset.y()](
|
||||
perfetto::EventContext& ctx) {
|
||||
[&](perfetto::EventContext& ctx) {
|
||||
auto* event = ctx.event<perfetto::protos::pbzero::ChromeTrackEvent>();
|
||||
auto* scroll_data = event->set_scroll_deltas();
|
||||
scroll_data->set_trace_id(trace_id);
|
||||
scroll_data->set_provided_to_compositor_delta_x(provided_delta_x);
|
||||
scroll_data->set_provided_to_compositor_delta_y(provided_delta_y);
|
||||
scroll_data->set_visual_offset_x(visual_offset_x);
|
||||
scroll_data->set_visual_offset_y(visual_offset_y);
|
||||
scroll_data->set_visual_offset_x(
|
||||
scroll_result.current_visual_offset.x());
|
||||
scroll_data->set_visual_offset_y(
|
||||
scroll_result.current_visual_offset.y());
|
||||
scroll_data->set_did_overscroll_root(scroll_result.did_overscroll_root);
|
||||
scroll_data->set_unused_delta_x(scroll_result.unused_scroll_delta.x());
|
||||
scroll_data->set_unused_delta_y(scroll_result.unused_scroll_delta.y());
|
||||
});
|
||||
|
||||
HandleOverscroll(gesture_event.PositionInWidget(), scroll_result);
|
||||
@ -1715,9 +1717,7 @@ void InputHandlerProxy::HandleOverscroll(
|
||||
if (!scroll_result.did_overscroll_root)
|
||||
return;
|
||||
|
||||
TRACE_EVENT2("input", "InputHandlerProxy::DidOverscroll", "dx",
|
||||
scroll_result.unused_scroll_delta.x(), "dy",
|
||||
scroll_result.unused_scroll_delta.y());
|
||||
TRACE_EVENT("input", "InputHandlerProxy::DidOverscroll");
|
||||
|
||||
// Bundle overscroll message with triggering event response, saving an IPC.
|
||||
current_overscroll_params_ = std::make_unique<DidOverscrollParams>();
|
||||
|
Reference in New Issue
Block a user