[go: nahoru, domu]

Implement new Scroll jank metric.

This CL adds logic to track missed frames and vsyncs as discussed
in the [doc](http://doc/1Y0u0Tq5eUZff75nYUzQVw6JxmbZAW9m64pJidmnGWsY)

We emit two separate histograms:
1) Event.Latency.ScrollUpdate.DelayedFramesPercentage
  Tracks no. of delayed frames.
2) Event.Latency.ScrollUpdate.MissedVsyncCount
  Tracks no. of vsyncs the frames were delayed by.
The histograms gets emitted every `kHistogramEmitFrequency` reported frames.

Bug: b/276722271
Change-Id: I3a96f632e85aa03c407f2f7797674003897cdfa6
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/4430615
Reviewed-by: Jonathan Ross <jonross@chromium.org>
Reviewed-by: Omar Elmekkawy <mekk@chromium.org>
Commit-Queue: Kartar Singh <kartarsingh@google.com>
Reviewed-by: Stephen Nusko <nuskos@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1146009}
diff --git a/cc/BUILD.gn b/cc/BUILD.gn
index 3d10a7e..c55566a 100644
--- a/cc/BUILD.gn
+++ b/cc/BUILD.gn
@@ -205,6 +205,8 @@
     "metrics/lcd_text_metrics_reporter.h",
     "metrics/predictor_jank_tracker.cc",
     "metrics/predictor_jank_tracker.h",
+    "metrics/scroll_jank_dropped_frame_tracker.cc",
+    "metrics/scroll_jank_dropped_frame_tracker.h",
     "metrics/shared_metrics_buffer.h",
     "metrics/total_frame_counter.cc",
     "metrics/total_frame_counter.h",
@@ -756,6 +758,7 @@
     "metrics/jank_injector_unittest.cc",
     "metrics/jank_metrics_unittest.cc",
     "metrics/predictor_jank_tracker_unittest.cc",
+    "metrics/scroll_jank_dropped_frame_tracker_unittest.cc",
     "metrics/total_frame_counter_unittest.cc",
     "metrics/video_playback_roughness_reporter_unittest.cc",
     "mojo_embedder/async_layer_tree_frame_sink_unittest.cc",