Add additional tables for compatibility with earlier android_jank_cuj.
diff --git a/src/trace_processor/metrics/sql/android/android_jank_cuj.sql b/src/trace_processor/metrics/sql/android/android_jank_cuj.sql
index 21c1d33..f0dfffb 100644
--- a/src/trace_processor/metrics/sql/android/android_jank_cuj.sql
+++ b/src/trace_processor/metrics/sql/android/android_jank_cuj.sql
@@ -172,6 +172,23 @@
  ROW_NUMBER() OVER (PARTITION BY cuj_id ORDER BY vsync ASC) AS frame_number
 FROM android_jank_cuj_sf_frame_base;
 
+-- Intermediate table to keep the ts and dur in sync with the original implementation
+-- in android_jank_cuj_boundary, which was earlier used for metric calculation.
+DROP TABLE IF EXISTS android_jank_cuj_legacy_boundary;
+CREATE PERFETTO TABLE android_jank_cuj_legacy_boundary AS
+WITH cuj_frame_based_boundary AS (
+SELECT cuj_id,
+    min(ts) AS ts,
+    MAX(ts_end) AS ts_end
+FROM android_jank_cuj_frame_trace_data
+GROUP BY cuj_id)
+SELECT frame_boundary.cuj_id,
+    frame_boundary.ts,
+    MAX(frame_boundary.ts_end, cuj.ts_end) AS ts_end,
+    (MAX(frame_boundary.ts_end, cuj.ts_end) - frame_boundary.ts) AS dur
+FROM cuj_frame_based_boundary frame_boundary
+JOIN android_jank_cuj cuj USING(cuj_id);
+
 -- Table captures various missed frames and callbacks counters from counter tracks in a process.
 DROP TABLE IF EXISTS android_jank_cuj_counter_metrics;
 CREATE PERFETTO TABLE android_jank_cuj_counter_metrics AS
@@ -195,7 +212,7 @@
       ELSE MAX(ts, ts_end - 4000000)
     END AS ts_earliest_allowed_counter,
     LEAD(ts_end) OVER (PARTITION BY cuj_name ORDER BY ts_end ASC) AS ts_end_next_cuj
-  FROM android_sysui_jank_cujs
+  FROM android_jank_cuj
 )
 SELECT
   cuj_id,
@@ -221,8 +238,8 @@
           'name', cuj_name,
           'process', process_metadata_proto(cuj.upid),
           'layer_name', layer_name,
-          'ts', cuj.ts,
-          'dur', cuj.dur,
+          'ts', COALESCE(boundary.ts, cuj.ts),
+          'dur', COALESCE(boundary.dur, cuj.dur),
           'counter_metrics', (
             SELECT AndroidJankCujMetric_Metrics(
               'total_frames', total_frames,
@@ -303,5 +320,7 @@
             WHERE f.cuj_id = cuj.cuj_id
             ORDER BY frame_number ASC)
         ))
-      FROM android_sysui_jank_cujs cuj
+      FROM android_jank_cuj cuj
+      LEFT JOIN android_jank_cuj_legacy_boundary boundary USING(cuj_id)
+      LEFT JOIN _android_jank_cuj_layer USING(cuj_id)
       ORDER BY cuj.cuj_id ASC));
diff --git a/src/trace_processor/perfetto_sql/stdlib/android/cujs/base.sql b/src/trace_processor/perfetto_sql/stdlib/android/cujs/base.sql
index bc1dc15..135e267 100644
--- a/src/trace_processor/perfetto_sql/stdlib/android/cujs/base.sql
+++ b/src/trace_processor/perfetto_sql/stdlib/android/cujs/base.sql
@@ -367,3 +367,18 @@
   )
 ORDER BY
   ts ASC;
+
+-- Captures the layer information associated with a CUJ.
+CREATE PERFETTO VIEW _android_jank_cuj_layer AS
+SELECT
+  cuj_id,
+  layer_id,
+  layer_name
+FROM android_jank_cuj AS cujs
+JOIN actual_frame_timeline_slice AS timeline
+  USING (upid)
+WHERE
+  cujs.layer_id = CAST(str_split(timeline.layer_name, '#', 1) AS INTEGER)
+GROUP BY
+  cuj_id,
+  layer_id;
diff --git a/test/trace_processor/diff_tests/metrics/graphics/android_jank_cuj.out b/test/trace_processor/diff_tests/metrics/graphics/android_jank_cuj.out
index 8da2a2e..ab4cbbb 100644
--- a/test/trace_processor/diff_tests/metrics/graphics/android_jank_cuj.out
+++ b/test/trace_processor/diff_tests/metrics/graphics/android_jank_cuj.out
@@ -16,7 +16,7 @@
       is_kernel_task: false
     }
     ts: 0
-    dur: 115000000
+    dur: 123000000
     frame {
       frame_number: 1
       vsync: 10
@@ -194,7 +194,7 @@
       is_kernel_task: false
     }
     ts: 0
-    dur: 702000000
+    dur: 901000010
     frame {
       frame_number: 1
       vsync: 10