chrome-devtools-frontend
Version:
Chrome DevTools UI
46 lines (36 loc) • 1.29 kB
text/typescript
// Copyright 2024 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
import * as Types from '../types/types.js';
let lastUpdateLayoutTreeEvent: Types.Events.UpdateLayoutTree|null = null;
const selectorDataForUpdateLayoutTree = new Map<Types.Events.UpdateLayoutTree, {
timings: Types.Events.SelectorTiming[],
}>();
export function reset(): void {
lastUpdateLayoutTreeEvent = null;
selectorDataForUpdateLayoutTree.clear();
}
export function handleEvent(event: Types.Events.Event): void {
if (Types.Events.isSelectorStats(event) && lastUpdateLayoutTreeEvent && event.args.selector_stats) {
selectorDataForUpdateLayoutTree.set(lastUpdateLayoutTreeEvent, {
timings: event.args.selector_stats.selector_timings,
});
return;
}
if (Types.Events.isUpdateLayoutTree(event)) {
lastUpdateLayoutTreeEvent = event;
return;
}
}
export async function finalize(): Promise<void> {
}
export interface SelectorStatsData {
dataForUpdateLayoutEvent: Map<Types.Events.UpdateLayoutTree, {
timings: Types.Events.SelectorTiming[],
}>;
}
export function data(): SelectorStatsData {
return {
dataForUpdateLayoutEvent: selectorDataForUpdateLayoutTree,
};
}