diff --git a/ui/src/plugins/com.android.PinAndroidPerfMetrics/handlers/fullTraceJankMetricHandler.ts b/ui/src/plugins/com.android.PinAndroidPerfMetrics/handlers/fullTraceJankMetricHandler.ts index 1d9afa3c302..f668537241c 100644 --- a/ui/src/plugins/com.android.PinAndroidPerfMetrics/handlers/fullTraceJankMetricHandler.ts +++ b/ui/src/plugins/com.android.PinAndroidPerfMetrics/handlers/fullTraceJankMetricHandler.ts @@ -30,16 +30,16 @@ class FullTraceJankMetricHandler implements MetricHandler { */ public match(metricKey: string): FullTraceMetricData | undefined { const matcher = - /perfetto_ft_(?.*)-missed_(?frames|sf_frames|app_frames)/; + /perfetto_ft_(?.*)-(?weighted_)?missed_(?frames|sf_frames|app_frames)/; const match = matcher.exec(metricKey); if (!match?.groups) { return undefined; } - const metricData: FullTraceMetricData = { + return { process: expandProcessName(match.groups.process), jankType: match.groups.jankType as JankType, + isWeighted: !!match.groups.jps, }; - return metricData; } /** diff --git a/ui/src/plugins/com.android.PinAndroidPerfMetrics/handlers/fullTraceJankMetricHandler_unittest.ts b/ui/src/plugins/com.android.PinAndroidPerfMetrics/handlers/fullTraceJankMetricHandler_unittest.ts index 72b97196924..f3c73592a01 100644 --- a/ui/src/plugins/com.android.PinAndroidPerfMetrics/handlers/fullTraceJankMetricHandler_unittest.ts +++ b/ui/src/plugins/com.android.PinAndroidPerfMetrics/handlers/fullTraceJankMetricHandler_unittest.ts @@ -24,6 +24,7 @@ const validMetricsTest: { expectedOutput: { process: 'com.google.android.apps.nexuslauncher', jankType: 'app_frames', + isWeighted: false, }, }, { @@ -31,6 +32,7 @@ const validMetricsTest: { expectedOutput: { process: 'com.android.systemui', jankType: 'sf_frames', + isWeighted: false, }, }, { @@ -38,6 +40,15 @@ const validMetricsTest: { expectedOutput: { process: 'com.android.systemui', jankType: 'app_frames', + isWeighted: false, + }, + }, + { + inputMetric: 'perfetto_ft_systemui-weighted_missed_app_frames-mean', + expectedOutput: { + process: 'com.android.systemui', + jankType: 'app_frames', + isWeighted: true, }, }, ]; diff --git a/ui/src/plugins/com.android.PinAndroidPerfMetrics/handlers/metricUtils.ts b/ui/src/plugins/com.android.PinAndroidPerfMetrics/handlers/metricUtils.ts index e7bac25a8c6..4a5835761f4 100644 --- a/ui/src/plugins/com.android.PinAndroidPerfMetrics/handlers/metricUtils.ts +++ b/ui/src/plugins/com.android.PinAndroidPerfMetrics/handlers/metricUtils.ts @@ -24,6 +24,9 @@ export interface FullTraceMetricData { /** Jank type (e.g., app or sf missed frame) */ jankType: JankType; + + /** Whether the metric is weighted */ + isWeighted: boolean; } /** @@ -39,6 +42,9 @@ export interface CujScopedMetricData { /** Jank type (e.g., app or sf missed frame) */ jankType: JankType; + + /** Whether the metric is weighted */ + isWeighted: boolean; } /** diff --git a/ui/src/plugins/com.android.PinAndroidPerfMetrics/handlers/pinCujMetricHandler.ts b/ui/src/plugins/com.android.PinAndroidPerfMetrics/handlers/pinCujMetricHandler.ts index dc947e88c21..b1a85c9998b 100644 --- a/ui/src/plugins/com.android.PinAndroidPerfMetrics/handlers/pinCujMetricHandler.ts +++ b/ui/src/plugins/com.android.PinAndroidPerfMetrics/handlers/pinCujMetricHandler.ts @@ -25,7 +25,8 @@ class PinCujMetricHandler implements MetricHandler { * @returns {CujMetricData | undefined} Parsed data or undefined if no match. */ public match(metricKey: string): CujMetricData | undefined { - const matcher = /perfetto_cuj_(?.*)-(?.*)-.*-missed_.*/; + const matcher = + /perfetto_cuj_(?.*)-(?.*)-.*-(?:weighted_)?missed_.*/; const match = matcher.exec(metricKey); if (!match?.groups) { return undefined; diff --git a/ui/src/plugins/com.android.PinAndroidPerfMetrics/handlers/pinCujScoped.ts b/ui/src/plugins/com.android.PinAndroidPerfMetrics/handlers/pinCujScoped.ts index 939a9035490..170d508606e 100644 --- a/ui/src/plugins/com.android.PinAndroidPerfMetrics/handlers/pinCujScoped.ts +++ b/ui/src/plugins/com.android.PinAndroidPerfMetrics/handlers/pinCujScoped.ts @@ -37,18 +37,17 @@ class PinCujScopedJank implements MetricHandler { */ public match(metricKey: string): CujScopedMetricData | undefined { const matcher = - /perfetto_cuj_(?.*)-(?.*)-.*-missed_(?frames|sf_frames|app_frames)/; + /perfetto_cuj_(?.*)-(?.*)-.*-(?weighted_)?missed_(?frames|sf_frames|app_frames)/; const match = matcher.exec(metricKey); if (!match?.groups) { return undefined; } - const metricData: CujScopedMetricData = { + return { process: expandProcessName(match.groups.process), cujName: match.groups.cujName, jankType: match.groups.jankType as JankType, + isWeighted: !!match.groups.jps, }; - return metricData; - 1; } /** @@ -83,6 +82,10 @@ class PinCujScopedJank implements MetricHandler { jankTypeFilter = ' AND sf_missed > 0'; jankTypeDisplayName = 'sf'; } + if (metricData.isWeighted) { + jankTypeFilter += ' AND jank_score > 0'; + } + const cuj = metricData.cujName; const processName = metricData.process; diff --git a/ui/src/plugins/com.android.PinAndroidPerfMetrics/handlers/pinCujScoped_unittest.ts b/ui/src/plugins/com.android.PinAndroidPerfMetrics/handlers/pinCujScoped_unittest.ts index 62fe4b84bd7..fed4be65204 100644 --- a/ui/src/plugins/com.android.PinAndroidPerfMetrics/handlers/pinCujScoped_unittest.ts +++ b/ui/src/plugins/com.android.PinAndroidPerfMetrics/handlers/pinCujScoped_unittest.ts @@ -26,6 +26,7 @@ const validMetricsTest: { process: 'com.android.systemui', cujName: 'NOTIFICATION_SHADE_EXPAND_COLLAPSE::Expand', jankType: 'app_frames', + isWeighted: false, }, }, { @@ -35,6 +36,7 @@ const validMetricsTest: { process: 'com.android.systemui', cujName: 'SHADE_DIALOG_OPEN::internet', jankType: 'sf_frames', + isWeighted: false, }, }, { @@ -44,6 +46,17 @@ const validMetricsTest: { process: 'com.google.android.apps.nexuslauncher', cujName: 'RECENTS_SCROLLING', jankType: 'sf_frames', + isWeighted: false, + }, + }, + { + inputMetric: + 'perfetto_cuj_launcher-RECENTS_SCROLLING-trace_metrics-weighted_missed_sf_frames-mean', + expectedOutput: { + process: 'com.google.android.apps.nexuslauncher', + cujName: 'RECENTS_SCROLLING', + jankType: 'sf_frames', + isWeighted: true, }, }, ];