From 4294d5210ea44da368d226dc4fc7d9cb0d4b5d1f Mon Sep 17 00:00:00 2001 From: Alexander Timin Date: Mon, 27 Jan 2025 14:26:08 +0000 Subject: [PATCH] [ui] Fix Chrome scroll track Some time ago, the scroll ids have been switched to int64s, which are not supported as ids. Fix that, as well as displaying the offsets. Bug: 373819358 Change-Id: I1a7e3050c3d08f3df6454996976092b1d1f46018 --- .../org.chromium.ChromeScrollJank/scroll_delta_graph.ts | 6 +++--- .../org.chromium.ChromeScrollJank/scroll_details_panel.ts | 8 ++++---- .../plugins/org.chromium.ChromeScrollJank/scroll_track.ts | 8 ++++++-- 3 files changed, 13 insertions(+), 9 deletions(-) diff --git a/ui/src/plugins/org.chromium.ChromeScrollJank/scroll_delta_graph.ts b/ui/src/plugins/org.chromium.ChromeScrollJank/scroll_delta_graph.ts index 8a9d241f84..242cd014a6 100644 --- a/ui/src/plugins/org.chromium.ChromeScrollJank/scroll_delta_graph.ts +++ b/ui/src/plugins/org.chromium.ChromeScrollJank/scroll_delta_graph.ts @@ -48,7 +48,7 @@ export interface JankIntervalPlotDetails { export async function getInputScrollDeltas( engine: Engine, - scrollId: number, + scrollId: bigint, ): Promise { const queryResult = await engine.query(` INCLUDE PERFETTO MODULE chrome.scroll_jank.scroll_offsets; @@ -85,7 +85,7 @@ export async function getInputScrollDeltas( export async function getPresentedScrollDeltas( engine: Engine, - scrollId: number, + scrollId: bigint, ): Promise { const queryResult = await engine.query(` INCLUDE PERFETTO MODULE chrome.scroll_jank.scroll_offsets; @@ -126,7 +126,7 @@ export async function getPresentedScrollDeltas( export async function getPredictorJankDeltas( engine: Engine, - scrollId: number, + scrollId: bigint, ): Promise { const queryResult = await engine.query(` INCLUDE PERFETTO MODULE chrome.scroll_jank.predictor_error; diff --git a/ui/src/plugins/org.chromium.ChromeScrollJank/scroll_details_panel.ts b/ui/src/plugins/org.chromium.ChromeScrollJank/scroll_details_panel.ts index 4ef92f0f5f..602ef763a4 100644 --- a/ui/src/plugins/org.chromium.ChromeScrollJank/scroll_details_panel.ts +++ b/ui/src/plugins/org.chromium.ChromeScrollJank/scroll_details_panel.ts @@ -49,7 +49,7 @@ import {Trace} from '../../public/trace'; interface Data { // Scroll ID. - id: number; + id: bigint; // Timestamp of the beginning of this slice in nanoseconds. ts: time; // DurationWidget of this slice in nanoseconds. @@ -86,7 +86,7 @@ export class ScrollDetailsPanel implements TrackEventDetailsPanel { constructor( private readonly trace: Trace, - private readonly id: number, + private readonly id: bigint, ) {} async load() { @@ -109,7 +109,7 @@ export class ScrollDetailsPanel implements TrackEventDetailsPanel { FROM scrolls`); const iter = queryResult.firstRow({ - id: NUM, + id: LONG, ts: LONG, dur: LONG, }); @@ -385,7 +385,7 @@ export class ScrollDetailsPanel implements TrackEventDetailsPanel { } const details = dictToTreeNodes({ - 'Scroll ID': this.data.id, + 'Scroll ID': `${this.data.id}`, 'Start time': m(Timestamp, {ts: this.data.ts}), 'Duration': m(DurationWidget, {dur: this.data.dur}), 'SQL ID': m(SqlRef, {table: 'chrome_scrolls', id: this.id}), diff --git a/ui/src/plugins/org.chromium.ChromeScrollJank/scroll_track.ts b/ui/src/plugins/org.chromium.ChromeScrollJank/scroll_track.ts index 2afb9dc0c9..8a9fcf92af 100644 --- a/ui/src/plugins/org.chromium.ChromeScrollJank/scroll_track.ts +++ b/ui/src/plugins/org.chromium.ChromeScrollJank/scroll_track.ts @@ -25,17 +25,21 @@ export function createTopLevelScrollTrack(trace: Trace, uri: string) { dataset: new SourceDataset({ schema: { id: NUM, + rawId: LONG, ts: LONG, dur: LONG, name: STR, }, src: ` SELECT + ROW_NUMBER() OVER (ORDER BY ts) as id, + id as rawId, printf("Scroll %s", CAST(id AS STRING)) AS name, - * + ts, + dur FROM chrome_scrolls `, }), - detailsPanel: (row) => new ScrollDetailsPanel(trace, row.id), + detailsPanel: (row) => new ScrollDetailsPanel(trace, row.rawId), }); }