Skip to content

Commit 9965996

Browse files
jackfranklinDevtools-frontend LUCI CQ
authored andcommitted
RPP: allow trace.parse to have custom time formatters
[email protected] Bug: 441265851 Change-Id: I156666212a36b51975aceaf7950f97ab9b4651a8 Reviewed-on: https://chromium-review.googlesource.com/c/devtools/devtools-frontend/+/6954527 Commit-Queue: Alex Rudenko <[email protected]> Auto-Submit: Jack Franklin <[email protected]> Reviewed-by: Alex Rudenko <[email protected]>
1 parent 62648aa commit 9965996

File tree

3 files changed

+22
-8
lines changed

3 files changed

+22
-8
lines changed

front_end/models/trace/Processor.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -443,7 +443,7 @@ export class TraceProcessor extends EventTarget {
443443
let model: Insights.Types.InsightModel|Error;
444444
try {
445445
options.logger?.start(`insights:${name}`);
446-
model = insight.generateInsight(data, context);
446+
model = insight.generateInsight(data, context, options.insightTimeFormatters);
447447
model.frameId = context.frameId;
448448
const navId = context.navigation?.args.data?.navigationId;
449449
if (navId) {

front_end/models/trace/insights/DocumentLatency.ts

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -190,11 +190,14 @@ function finalize(partialModel: PartialInsightModel<DocumentLatencyInsightModel>
190190
}
191191

192192
export function generateInsight(
193-
data: Handlers.Types.HandlerData, context: InsightSetContext): DocumentLatencyInsightModel {
193+
data: Handlers.Types.HandlerData, context: InsightSetContext,
194+
timeFormatters?: Types.Configuration.InsightTimeFormatters): DocumentLatencyInsightModel {
194195
if (!context.navigation) {
195196
return finalize({});
196197
}
197198

199+
const millisToString = timeFormatters?.milli ?? i18n.TimeUtilities.millisToString;
200+
198201
const documentRequest = data.NetworkRequests.byId.get(context.navigationId);
199202
if (!documentRequest) {
200203
return finalize({warnings: [InsightWarning.NO_DOCUMENT_REQUEST]});
@@ -212,7 +215,8 @@ export function generateInsight(
212215
overallSavingsMs = Math.max(serverResponseTime - TARGET_MS, 0);
213216
}
214217

215-
const redirectDuration = Math.round(documentRequest.args.data.syntheticData.redirectionDuration / 1000);
218+
const redirectDuration =
219+
Math.round(documentRequest.args.data.syntheticData.redirectionDuration / 1000) as Types.Timing.Milli;
216220
overallSavingsMs += redirectDuration;
217221

218222
const metricSavings = {
@@ -237,16 +241,14 @@ export function generateInsight(
237241
noRedirects: {
238242
label: noRedirects ? i18nString(UIStrings.passingRedirects) : i18nString(UIStrings.failedRedirects, {
239243
PH1: documentRequest.args.data.redirects.length,
240-
PH2: i18n.TimeUtilities.millisToString(redirectDuration),
244+
PH2: millisToString(redirectDuration),
241245
}),
242246
value: noRedirects
243247
},
244248
serverResponseIsFast: {
245249
label: serverResponseIsFast ?
246-
i18nString(
247-
UIStrings.passingServerResponseTime, {PH1: i18n.TimeUtilities.millisToString(serverResponseTime)}) :
248-
i18nString(
249-
UIStrings.failedServerResponseTime, {PH1: i18n.TimeUtilities.millisToString(serverResponseTime)}),
250+
i18nString(UIStrings.passingServerResponseTime, {PH1: millisToString(serverResponseTime)}) :
251+
i18nString(UIStrings.failedServerResponseTime, {PH1: millisToString(serverResponseTime)}),
250252
value: serverResponseIsFast
251253
},
252254
usesCompression: {

front_end/models/trace/types/Configuration.ts

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import type * as Protocol from '../../../generated/protocol.js';
88
import type * as Lantern from '../lantern/lantern.js';
99

1010
import type * as File from './File.js';
11+
import type {Milli} from './Timing.js';
1112

1213
export interface Configuration {
1314
/**
@@ -83,6 +84,17 @@ export interface ParseOptions {
8384
end: (id: string) => void,
8485
};
8586
lanternSettings?: Omit<Lantern.Types.Simulation.Settings, 'networkAnalysis'>;
87+
/**
88+
* Used when an Insight needs to format a time to string as part of its
89+
* output. By default we use the i18n.TimeUtilities in DevTools but this
90+
* enables it to be overridden, which is useful if you are consuming the trace
91+
* engine outside of DevTools.
92+
*/
93+
insightTimeFormatters?: InsightTimeFormatters;
94+
}
95+
96+
export interface InsightTimeFormatters {
97+
milli: (x: Milli) => string;
8698
}
8799

88100
export interface ResolveSourceMapParams {

0 commit comments

Comments
 (0)