Handle null next doFrame slice gracefully
diff --git a/src/trace_processor/perfetto_sql/stdlib/android/frame_blocking_calls/blocking_calls_aggregation.sql b/src/trace_processor/perfetto_sql/stdlib/android/frame_blocking_calls/blocking_calls_aggregation.sql index 432f7d9..8450c8e 100644 --- a/src/trace_processor/perfetto_sql/stdlib/android/frame_blocking_calls/blocking_calls_aggregation.sql +++ b/src/trace_processor/perfetto_sql/stdlib/android/frame_blocking_calls/blocking_calls_aggregation.sql
@@ -65,7 +65,12 @@ cuj_name, -- Earliest of (Next Frame Start, Next doFrame Start). -- Fallback to original ts_end only if both are NULL. - coalesce(min(next_do_slice_after_frame, next_frame_start), original_ts_end) AS ts_end + coalesce( + min(next_do_slice_after_frame, next_frame_start), + next_do_slice_after_frame, + next_frame_start, + original_ts_end + ) AS ts_end FROM _frames_with_extension_options ORDER BY frame_id;
diff --git a/test/trace_processor/diff_tests/metrics/android/android_blocking_calls_cuj_per_frame_metric.out b/test/trace_processor/diff_tests/metrics/android/android_blocking_calls_cuj_per_frame_metric.out index 4ff1a18..c665552 100644 --- a/test/trace_processor/diff_tests/metrics/android/android_blocking_calls_cuj_per_frame_metric.out +++ b/test/trace_processor/diff_tests/metrics/android/android_blocking_calls_cuj_per_frame_metric.out
@@ -38,12 +38,12 @@ } blocking_calls { name: "animation" - max_dur_per_frame_ms: 1 - max_dur_per_frame_ns: 1000000 - mean_dur_per_frame_ms: 0 - mean_dur_per_frame_ns: 500000 + max_dur_per_frame_ms: 11 + max_dur_per_frame_ns: 11000000 + mean_dur_per_frame_ms: 5 + mean_dur_per_frame_ns: 5500000 max_cnt_per_frame: 1 mean_cnt_per_frame: 0.5 } } -} +} \ No newline at end of file