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