@paulirish/trace_engine 0.0.61 → 0.0.62
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.tmp/tsbuildinfo/analyze-trace.d.mts.map +1 -1
- package/.tmp/tsbuildinfo/tsconfig.tsbuildinfo +1 -1
- package/analyze-inspector-issues.mjs +1 -1
- package/analyze-trace.mjs +1 -2
- package/core/platform/ArrayUtilities.d.ts +2 -0
- package/core/platform/ArrayUtilities.js +11 -1
- package/core/platform/ArrayUtilities.js.map +1 -1
- package/core/platform/HostRuntime.d.ts +4 -0
- package/core/platform/HostRuntime.js +25 -0
- package/core/platform/HostRuntime.js.map +1 -0
- package/core/platform/KeyboardUtilities.d.ts +6 -2
- package/core/platform/KeyboardUtilities.js.map +1 -1
- package/core/platform/StringUtilities.d.ts +2 -0
- package/core/platform/StringUtilities.js +64 -13
- package/core/platform/StringUtilities.js.map +1 -1
- package/core/platform/api/HostRuntime.d.ts +36 -0
- package/core/platform/api/HostRuntime.js +5 -0
- package/core/platform/api/HostRuntime.js.map +1 -0
- package/core/platform/api/api-tsconfig.json +43 -0
- package/core/platform/api/api.d.ts +2 -0
- package/core/platform/api/api.js +6 -0
- package/core/platform/api/api.js.map +1 -0
- package/core/platform/api/api_node_typecheck-tsconfig.json +48 -0
- package/core/platform/api/bundle-tsconfig.json +1 -0
- package/core/platform/api/devtools_entrypoint-bundle-typescript-tsconfig.json +48 -0
- package/core/platform/browser/HostRuntime.d.ts +2 -0
- package/core/platform/browser/HostRuntime.js +64 -0
- package/core/platform/browser/HostRuntime.js.map +1 -0
- package/core/platform/browser/browser-tsconfig.json +48 -0
- package/core/platform/browser/browser.d.ts +2 -0
- package/core/platform/browser/browser.js +6 -0
- package/core/platform/browser/browser.js.map +1 -0
- package/core/platform/browser/bundle-tsconfig.json +1 -0
- package/core/platform/browser/devtools_entrypoint-bundle-typescript-tsconfig.json +48 -0
- package/core/platform/devtools_entrypoint-bundle-typescript-tsconfig.json +4 -3
- package/core/platform/node/HostRuntime.d.ts +2 -0
- package/core/platform/node/HostRuntime.js +73 -0
- package/core/platform/node/HostRuntime.js.map +1 -0
- package/core/platform/node/bundle-tsconfig.json +1 -0
- package/core/platform/node/devtools_entrypoint-bundle-typescript-tsconfig.json +48 -0
- package/core/platform/node/node-tsconfig.json +52 -0
- package/core/platform/node/node.d.ts +2 -0
- package/core/platform/node/node.js +6 -0
- package/core/platform/node/node.js.map +1 -0
- package/core/platform/platform-tsconfig.json +17 -5
- package/core/platform/platform.d.ts +2 -2
- package/core/platform/platform.js +2 -2
- package/core/platform/platform.js.map +1 -1
- package/core/platform/platform_node_typecheck-tsconfig.json +74 -0
- package/generated/protocol.d.ts +1507 -583
- package/locales/af.json +74 -38
- package/locales/am.json +73 -37
- package/locales/ar.json +72 -36
- package/locales/as.json +74 -38
- package/locales/az.json +73 -37
- package/locales/be.json +72 -36
- package/locales/bg.json +72 -36
- package/locales/bn.json +74 -38
- package/locales/bs.json +72 -36
- package/locales/ca.json +72 -36
- package/locales/cs.json +72 -36
- package/locales/cy.json +73 -37
- package/locales/da.json +74 -38
- package/locales/de.json +72 -36
- package/locales/el.json +73 -37
- package/locales/en-GB.json +74 -38
- package/locales/en-US.json +86 -17
- package/locales/en-XL.json +86 -17
- package/locales/es-419.json +72 -36
- package/locales/es.json +73 -37
- package/locales/et.json +74 -38
- package/locales/eu.json +72 -36
- package/locales/fa.json +73 -37
- package/locales/fi.json +72 -36
- package/locales/fil.json +74 -38
- package/locales/fr-CA.json +72 -36
- package/locales/fr.json +162 -126
- package/locales/gl.json +73 -37
- package/locales/gu.json +73 -37
- package/locales/he.json +74 -38
- package/locales/hi.json +73 -37
- package/locales/hr.json +72 -36
- package/locales/hu.json +73 -37
- package/locales/hy.json +73 -37
- package/locales/id.json +74 -38
- package/locales/is.json +73 -37
- package/locales/it.json +72 -36
- package/locales/ja.json +72 -36
- package/locales/ka.json +73 -37
- package/locales/kk.json +72 -36
- package/locales/km.json +73 -37
- package/locales/kn.json +72 -36
- package/locales/ko.json +72 -36
- package/locales/ky.json +72 -36
- package/locales/lo.json +72 -36
- package/locales/lt.json +72 -36
- package/locales/lv.json +72 -36
- package/locales/mk.json +75 -39
- package/locales/ml.json +72 -36
- package/locales/mn.json +73 -37
- package/locales/mr.json +74 -38
- package/locales/ms.json +72 -36
- package/locales/my.json +72 -36
- package/locales/ne.json +73 -37
- package/locales/nl.json +73 -37
- package/locales/no.json +72 -36
- package/locales/or.json +72 -36
- package/locales/pa.json +72 -36
- package/locales/pl.json +72 -36
- package/locales/pt-PT.json +72 -36
- package/locales/pt.json +74 -38
- package/locales/ro.json +72 -36
- package/locales/ru.json +72 -36
- package/locales/si.json +72 -36
- package/locales/sk.json +72 -36
- package/locales/sl.json +72 -36
- package/locales/sq.json +72 -36
- package/locales/sr-Latn.json +73 -37
- package/locales/sr.json +73 -37
- package/locales/sv.json +75 -39
- package/locales/sw.json +74 -38
- package/locales/ta.json +73 -37
- package/locales/te.json +72 -36
- package/locales/th.json +73 -37
- package/locales/tr.json +72 -36
- package/locales/uk.json +72 -36
- package/locales/ur.json +72 -36
- package/locales/uz.json +73 -37
- package/locales/vi.json +74 -38
- package/locales/zh-HK.json +72 -36
- package/locales/zh-TW.json +74 -38
- package/locales/zh.json +75 -39
- package/locales/zu.json +73 -37
- package/models/cpu_profile/CPUProfileDataModel.d.ts +9 -0
- package/models/cpu_profile/CPUProfileDataModel.js +9 -7
- package/models/cpu_profile/CPUProfileDataModel.js.map +1 -1
- package/models/cpu_profile/ProfileTreeModel.d.ts +3 -2
- package/models/cpu_profile/ProfileTreeModel.js +6 -7
- package/models/cpu_profile/ProfileTreeModel.js.map +1 -1
- package/models/cpu_profile/cpu_profile-tsconfig.json +4 -3
- package/models/cpu_profile/devtools_entrypoint-bundle-typescript-tsconfig.json +4 -3
- package/models/trace/EntityMapper.d.ts +1 -0
- package/models/trace/EntityMapper.js +10 -0
- package/models/trace/EntityMapper.js.map +1 -1
- package/models/trace/EventsSerializer.js +10 -2
- package/models/trace/EventsSerializer.js.map +1 -1
- package/models/trace/LanternComputationData.d.ts +1 -1
- package/models/trace/LanternComputationData.js +3 -8
- package/models/trace/LanternComputationData.js.map +1 -1
- package/models/trace/ModelImpl.d.ts +1 -0
- package/models/trace/ModelImpl.js +9 -6
- package/models/trace/ModelImpl.js.map +1 -1
- package/models/trace/Processor.js +23 -23
- package/models/trace/Processor.js.map +1 -1
- package/models/trace/Styles.js +13 -5
- package/models/trace/Styles.js.map +1 -1
- package/models/trace/devtools_entrypoint-bundle-typescript-tsconfig.json +4 -3
- package/models/trace/extras/Initiators.d.ts +12 -0
- package/models/trace/extras/Initiators.js +47 -0
- package/models/trace/extras/Initiators.js.map +1 -0
- package/models/trace/extras/TraceTree.js +13 -5
- package/models/trace/extras/TraceTree.js.map +1 -1
- package/models/trace/extras/devtools_entrypoint-bundle-typescript-tsconfig.json +4 -3
- package/models/trace/extras/extras-tsconfig.json +11 -3
- package/models/trace/extras/extras.d.ts +0 -1
- package/models/trace/extras/extras.js +0 -1
- package/models/trace/extras/extras.js.map +1 -1
- package/models/trace/handlers/LargestImagePaintHandler.js +2 -2
- package/models/trace/handlers/LargestImagePaintHandler.js.map +1 -1
- package/models/trace/handlers/LayoutShiftsHandler.js +1 -1
- package/models/trace/handlers/LayoutShiftsHandler.js.map +1 -1
- package/models/trace/handlers/MetaHandler.d.ts +12 -1
- package/models/trace/handlers/MetaHandler.js +10 -1
- package/models/trace/handlers/MetaHandler.js.map +1 -1
- package/models/trace/handlers/NetworkRequestsHandler.d.ts +8 -1
- package/models/trace/handlers/NetworkRequestsHandler.js +22 -4
- package/models/trace/handlers/NetworkRequestsHandler.js.map +1 -1
- package/models/trace/handlers/PageLoadMetricsHandler.d.ts +13 -3
- package/models/trace/handlers/PageLoadMetricsHandler.js +71 -27
- package/models/trace/handlers/PageLoadMetricsHandler.js.map +1 -1
- package/models/trace/handlers/SamplesHandler.js +59 -6
- package/models/trace/handlers/SamplesHandler.js.map +1 -1
- package/models/trace/handlers/ScriptsHandler.js +24 -0
- package/models/trace/handlers/ScriptsHandler.js.map +1 -1
- package/models/trace/handlers/devtools_entrypoint-bundle-typescript-tsconfig.json +4 -3
- package/models/trace/handlers/handlers-tsconfig.json +13 -3
- package/models/trace/helpers/Network.js +1 -1
- package/models/trace/helpers/Network.js.map +1 -1
- package/models/trace/helpers/SamplesIntegrator.js +1 -8
- package/models/trace/helpers/SamplesIntegrator.js.map +1 -1
- package/models/trace/helpers/Timing.d.ts +1 -1
- package/models/trace/helpers/Timing.js +9 -2
- package/models/trace/helpers/Timing.js.map +1 -1
- package/models/trace/helpers/Trace.d.ts +1 -0
- package/models/trace/helpers/Trace.js +12 -5
- package/models/trace/helpers/Trace.js.map +1 -1
- package/models/trace/helpers/devtools_entrypoint-bundle-typescript-tsconfig.json +4 -3
- package/models/trace/helpers/helpers-tsconfig.json +7 -3
- package/models/trace/insights/CharacterSet.d.ts +49 -0
- package/models/trace/insights/CharacterSet.js +132 -0
- package/models/trace/insights/CharacterSet.js.map +1 -0
- package/models/trace/insights/Common.d.ts +2 -2
- package/models/trace/insights/Common.js +1 -6
- package/models/trace/insights/Common.js.map +1 -1
- package/models/trace/insights/ForcedReflow.d.ts +1 -1
- package/models/trace/insights/ForcedReflow.js +1 -1
- package/models/trace/insights/ForcedReflow.js.map +1 -1
- package/models/trace/insights/LCPBreakdown.d.ts +1 -1
- package/models/trace/insights/LCPBreakdown.js +2 -2
- package/models/trace/insights/LCPBreakdown.js.map +1 -1
- package/models/trace/insights/LCPDiscovery.d.ts +7 -3
- package/models/trace/insights/LCPDiscovery.js +16 -10
- package/models/trace/insights/LCPDiscovery.js.map +1 -1
- package/models/trace/insights/Models.d.ts +1 -0
- package/models/trace/insights/Models.js +1 -0
- package/models/trace/insights/Models.js.map +1 -1
- package/models/trace/insights/NetworkDependencyTree.js +4 -3
- package/models/trace/insights/NetworkDependencyTree.js.map +1 -1
- package/models/trace/insights/RenderBlocking.d.ts +2 -2
- package/models/trace/insights/RenderBlocking.js +6 -6
- package/models/trace/insights/RenderBlocking.js.map +1 -1
- package/models/trace/insights/devtools_entrypoint-bundle-typescript-tsconfig.json +4 -3
- package/models/trace/insights/insights-tsconfig.json +26 -3
- package/models/trace/insights/types.d.ts +15 -5
- package/models/trace/insights/types.js +1 -0
- package/models/trace/insights/types.js.map +1 -1
- package/models/trace/lantern/core/core-tsconfig.json +4 -3
- package/models/trace/lantern/core/devtools_entrypoint-bundle-typescript-tsconfig.json +4 -3
- package/models/trace/lantern/devtools_entrypoint-bundle-typescript-tsconfig.json +4 -3
- package/models/trace/lantern/graph/devtools_entrypoint-bundle-typescript-tsconfig.json +4 -3
- package/models/trace/lantern/graph/graph-tsconfig.json +4 -3
- package/models/trace/lantern/lantern-tsconfig.json +4 -3
- package/models/trace/lantern/metrics/FirstContentfulPaint.js +6 -6
- package/models/trace/lantern/metrics/FirstContentfulPaint.js.map +1 -1
- package/models/trace/lantern/metrics/devtools_entrypoint-bundle-typescript-tsconfig.json +4 -3
- package/models/trace/lantern/metrics/metrics-tsconfig.json +4 -3
- package/models/trace/lantern/simulation/devtools_entrypoint-bundle-typescript-tsconfig.json +4 -3
- package/models/trace/lantern/simulation/simulation-tsconfig.json +4 -3
- package/models/trace/lantern/types/Lantern.d.ts +7 -7
- package/models/trace/lantern/types/Lantern.js.map +1 -1
- package/models/trace/lantern/types/devtools_entrypoint-bundle-typescript-tsconfig.json +4 -3
- package/models/trace/lantern/types/types-tsconfig.json +4 -3
- package/models/trace/trace-tsconfig.json +7 -3
- package/models/trace/types/Configuration.d.ts +1 -4
- package/models/trace/types/Configuration.js +0 -1
- package/models/trace/types/Configuration.js.map +1 -1
- package/models/trace/types/File.d.ts +8 -0
- package/models/trace/types/File.js.map +1 -1
- package/models/trace/types/TraceEvents.d.ts +97 -15
- package/models/trace/types/TraceEvents.js +44 -11
- package/models/trace/types/TraceEvents.js.map +1 -1
- package/models/trace/types/devtools_entrypoint-bundle-typescript-tsconfig.json +4 -3
- package/models/trace/types/types-tsconfig.json +10 -3
- package/package.json +1 -1
- package/test/test-trace-engine.mjs +8 -9
- package/.tmp/tsbuildinfo/models/trace/extras/polyfills.d.ts +0 -4
- package/.tmp/tsbuildinfo/models/trace/extras/polyfills.d.ts.map +0 -1
- package/core/platform/DOMUtilities.d.ts +0 -16
- package/core/platform/DOMUtilities.js +0 -123
- package/core/platform/DOMUtilities.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Styles.js","sourceRoot":"","sources":["../../../../../../front_end/models/trace/Styles.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright 2023 The Chromium Authors\n// Use of this source code is governed by a BSD-style license that can be\n// found in the LICENSE file.\n\nimport * as i18n from '../../core/i18n/i18n.js';\nimport type * as Platform from '../../core/platform/platform.js';\n\nimport * as Handlers from './handlers/handlers.js';\nimport * as Helpers from './helpers/helpers.js';\nimport * as Types from './types/types.js';\n\nconst UIStrings = {\n /**\n * @description Category in the Summary view of the Performance panel to indicate time spent to load resources\n */\n loading: 'Loading',\n /**\n * @description Text in Timeline for the Experience title\n */\n experience: 'Experience',\n /**\n * @description Category in the Summary view of the Performance panel to indicate time spent in script execution\n */\n scripting: 'Scripting',\n /**\n * @description Category in the Summary view of the Performance panel to indicate time spent in rendering the web page\n */\n rendering: 'Rendering',\n /**\n * @description Category in the Summary view of the Performance panel to indicate time spent to visually represent the web page\n */\n painting: 'Painting',\n /**\n * @description Event category in the Performance panel for time spent in the GPU\n */\n gpu: 'GPU',\n /**\n * @description Text in Timeline UIUtils of the Performance panel\n */\n async: 'Async',\n /**\n * @description Category in the Summary view of the Performance panel to indicate time spent in the rest of the system\n */\n system: 'System',\n /**\n * @description Category in the Summary view of the Performance panel to indicate idle time\n */\n idle: 'Idle',\n /**\n * @description Text in Timeline UIUtils of the Performance panel\n */\n task: 'Task',\n /**\n * @description Text in Timeline UIUtils of the Performance panel\n */\n consoleTaskRun: 'Run console task',\n /**\n * @description Text for other types of items\n */\n other: 'Other',\n /**\n * @description Text that refers to the animation of the web page\n */\n animation: 'Animation',\n /**\n * @description Text that refers to some events\n */\n event: 'Event',\n /**\n * @description Text in Timeline UIUtils of the Performance panel\n */\n requestMainThreadFrame: 'Request main thread frame',\n /**\n * @description Text in Timeline UIUtils of the Performance panel\n */\n frameStart: 'Frame start',\n /**\n * @description Text in Timeline UIUtils of the Performance panel\n */\n onMessage: 'On message',\n /**\n * @description Text in Timeline UIUtils of the Performance panel\n */\n schedulePostMessage: 'Schedule postMessage',\n /**\n * @description Text in Timeline UIUtils of the Performance panel\n */\n messaging: 'Messaging',\n /**\n * @description Text in Timeline UIUtils of the Performance panel\n */\n frameStartMainThread: 'Frame start (main thread)',\n /**\n * @description Text in Timeline UIUtils of the Performance panel\n */\n drawFrame: 'Draw frame',\n /**\n * @description Noun for an event in the Performance panel. This marks time\n * spent in an operation that only happens when the profiler is active.\n */\n profilingOverhead: 'Profiling overhead',\n /**\n * @description The process the browser uses to determine a target element for a\n *pointer event. Typically, this is determined by considering the pointer's\n *location and also the visual layout of elements on the screen.\n */\n hitTest: 'Hit test',\n /**\n * @description Noun for an event in the Performance panel. The browser has decided\n *that the styles for some elements need to be recalculated and scheduled that\n *recalculation process at some time in the future.\n */\n scheduleStyleRecalculation: 'Schedule style recalculation',\n /**\n * @description Text in Timeline UIUtils of the Performance panel\n */\n recalculateStyle: 'Recalculate style',\n /**\n * @description Text in Timeline UIUtils of the Performance panel\n */\n invalidateLayout: 'Invalidate Layout',\n /**\n * @description Noun for an event in the Performance panel. Layerize is a step\n *where we calculate which layers to create.\n */\n layerize: 'Layerize',\n /**\n * @description Text in Timeline UIUtils of the Performance panel\n */\n layout: 'Layout',\n /**\n * @description Noun for an event in the Performance panel. Paint setup is a\n *step before the 'Paint' event. A paint event is when the browser draws pixels\n *to the screen. This step is the setup beforehand.\n */\n paintSetup: 'Paint setup',\n /**\n * @description Noun for a paint event in the Performance panel, where an image\n *was being painted. A paint event is when the browser draws pixels to the\n *screen, in this case specifically for an image in a website.\n */\n paintImage: 'Paint image',\n /**\n * @description Noun for an event in the Performance panel. Pre-paint is a\n *step before the 'Paint' event. A paint event is when the browser records the\n *instructions for drawing the page. This step is the setup beforehand.\n */\n prePaint: 'Pre-paint',\n /**\n * @description Text in Timeline UIUtils of the Performance panel\n */\n updateLayer: 'Update layer',\n /**\n * @description Text in Timeline UIUtils of the Performance panel\n */\n updateLayerTree: 'Update layer tree',\n /**\n * @description Noun for a paint event in the Performance panel. A paint event is when the browser draws pixels to the screen.\n */\n paint: 'Paint',\n /**\n * @description Text in Timeline UIUtils of the Performance panel\n */\n rasterizePaint: 'Rasterize paint',\n /**\n * @description The action to scroll\n */\n scroll: 'Scroll',\n /**\n * @description Noun for an event in the Performance panel. Commit is a step\n *where we send (also known as \"commit\") layers to the compositor thread. This\n *step follows the \"Layerize\" step which is what calculates which layers to\n *create.\n */\n commit: 'Commit',\n /**\n * @description Text in Timeline UIUtils of the Performance panel\n */\n compositeLayers: 'Composite layers',\n /**\n * @description Text in Timeline UIUtils of the Performance panel\n */\n computeIntersections: 'Compute intersections',\n /**\n * @description Text in Timeline UIUtils of the Performance panel\n */\n parseHtml: 'Parse HTML',\n /**\n * @description Text in Timeline UIUtils of the Performance panel\n */\n parseStylesheet: 'Parse stylesheet',\n /**\n * @description Text in Timeline UIUtils of the Performance panel\n */\n installTimer: 'Install timer',\n /**\n * @description Text in Timeline UIUtils of the Performance panel\n */\n removeTimer: 'Remove timer',\n /**\n * @description Text in Timeline UIUtils of the Performance panel\n */\n timerFired: 'Timer fired',\n /**\n * @description Text for an event. Shown in the timeline in the Performance panel.\n * XHR refers to XmlHttpRequest, a Web API. This particular Web API has a property\n * named 'readyState' (https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/readyState). When\n * the 'readyState' property changes the text is shown.\n */\n xhrReadyStateChange: '`XHR` `readyState` change',\n /**\n * @description Text for an event. Shown in the timeline in the Performance panel.\n * XHR refers to XmlHttpRequest, a Web API. (see https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest)\n * The text is shown when a XmlHttpRequest load event happens on the inspected page.\n */\n xhrLoad: '`XHR` load',\n /**\n * @description Text in Timeline UIUtils of the Performance panel\n */\n compileScript: 'Compile script',\n /**\n * @description Text in Timeline UIUtils of the Performance panel\n */\n cacheScript: 'Cache script code',\n /**\n * @description Text in Timeline UIUtils of the Performance panel\n */\n compileCode: 'Compile code',\n /**\n * @description Text in Timeline UIUtils of the Performance panel\n */\n optimizeCode: 'Optimize code',\n /**\n * @description Text in Timeline UIUtils of the Performance panel\n */\n evaluateScript: 'Evaluate script',\n /**\n * @description Text in Timeline UIUtils of the Performance panel\n */\n compileModule: 'Compile module',\n /**\n * @description Text in Timeline UIUtils of the Performance panel\n */\n cacheModule: 'Cache module code',\n /**\n * @description Text for an event. Shown in the timeline in the Performance panel.\n * \"Module\" refers to JavaScript modules: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Modules\n * JavaScript modules are a way to organize JavaScript code.\n * \"Evaluate\" is the phase when the JavaScript code of a module is executed.\n */\n evaluateModule: 'Evaluate module',\n /**\n * @description Noun indicating that a compile task (type: streaming) happened.\n */\n streamingCompileTask: 'Streaming compile task',\n /**\n * @description Text in Timeline UIUtils of the Performance panel\n */\n waitingForNetwork: 'Waiting for network',\n /**\n * @description Text in Timeline UIUtils of the Performance panel\n */\n parseAndCompile: 'Parse and compile',\n /**\n * @description Text in Timeline UIUtils of the Performance panel.\n * \"Code Cache\" refers to JavaScript bytecode cache: https://v8.dev/blog/code-caching-for-devs\n * \"Deserialize\" refers to the process of reading the code cache.\n */\n deserializeCodeCache: 'Deserialize code cache',\n /**\n * @description Text in Timeline UIUtils of the Performance panel\n */\n streamingWasmResponse: 'Streaming Wasm response',\n /**\n * @description Text in Timeline UIUtils of the Performance panel\n */\n compiledWasmModule: 'Compiled Wasm module',\n /**\n * @description Text in Timeline UIUtils of the Performance panel\n */\n cachedWasmModule: 'Cached Wasm module',\n /**\n * @description Text in Timeline UIUtils of the Performance panel\n */\n wasmModuleCacheHit: 'Wasm module cache hit',\n /**\n * @description Text in Timeline UIUtils of the Performance panel\n */\n wasmModuleCacheInvalid: 'Wasm module cache invalid',\n /**\n * @description Text in Timeline UIUtils of the Performance panel\n */\n frameStartedLoading: 'Frame started loading',\n /**\n * @description Text in Timeline UIUtils of the Performance panel\n */\n onloadEvent: 'Onload event',\n /**\n * @description Text in Timeline UIUtils of the Performance panel\n */\n domcontentloadedEvent: 'DOMContentLoaded event',\n /**\n * @description Text in Timeline UIUtils of the Performance panel\n */\n firstPaint: 'First Paint',\n /**\n * @description Text in Timeline UIUtils of the Performance panel\n */\n firstContentfulPaint: 'First Contentful Paint',\n /**\n * @description Text in Timeline UIUtils of the Performance panel\n */\n largestContentfulPaint: 'Largest Contentful Paint',\n /**\n * @description Text for timestamps of items\n */\n timestamp: 'Timestamp',\n /**\n * @description Noun for a 'time' event that happens in the Console (a tool in\n * DevTools). The user can trigger console time events from their code, and\n * they will show up in the Performance panel. Time events are used to measure\n * the duration of something, e.g. the user will emit two time events at the\n * start and end of some interesting task.\n */\n consoleTime: 'Console time',\n /**\n * @description Text in Timeline UIUtils of the Performance panel\n */\n userTiming: 'User timing',\n /**\n * @description Name for an event shown in the Performance panel. When a network\n * request is about to be sent by the browser, the time is recorded and DevTools\n * is notified that a network request will be sent momentarily.\n */\n willSendRequest: 'Will send request',\n /**\n * @description Text in Timeline UIUtils of the Performance panel\n */\n sendRequest: 'Send request',\n /**\n * @description Text in Timeline UIUtils of the Performance panel\n */\n receiveResponse: 'Receive response',\n /**\n * @description Text in Timeline UIUtils of the Performance panel\n */\n finishLoading: 'Finish loading',\n /**\n * @description Text in Timeline UIUtils of the Performance panel\n */\n receiveData: 'Receive data',\n /**\n * @description Event category in the Performance panel for time spent to execute microtasks in JavaScript\n */\n runMicrotasks: 'Run microtasks',\n /**\n * @description Text in Timeline UIUtils of the Performance panel\n */\n functionCall: 'Function call',\n /**\n * @description Text in Timeline UIUtils of the Performance panel\n */\n gcEvent: 'GC event',\n /**\n * @description Event category in the Performance panel for time spent to perform a full Garbage Collection pass\n */\n majorGc: 'Major GC',\n /**\n * @description Event category in the Performance panel for time spent to perform a quick Garbage Collection pass\n */\n minorGc: 'Minor GC',\n /**\n * @description Text for the request animation frame event\n */\n requestAnimationFrame: 'Request animation frame',\n /**\n * @description Text to cancel the animation frame\n */\n cancelAnimationFrame: 'Cancel animation frame',\n /**\n * @description Text for the event that an animation frame is fired\n */\n animationFrameFired: 'Animation frame fired',\n /**\n * @description Text in Timeline UIUtils of the Performance panel\n */\n requestIdleCallback: 'Request idle callback',\n /**\n * @description Text in Timeline UIUtils of the Performance panel\n */\n cancelIdleCallback: 'Cancel idle callback',\n /**\n * @description Text in Timeline UIUtils of the Performance panel\n */\n fireIdleCallback: 'Fire idle callback',\n /**\n * @description Text in Timeline UIUtils of the Performance panel\n */\n createWebsocket: 'Create WebSocket',\n /**\n * @description Text in Timeline UIUtils of the Performance panel\n */\n sendWebsocketHandshake: 'Send WebSocket handshake',\n /**\n * @description Text in Timeline UIUtils of the Performance panel\n */\n receiveWebsocketHandshake: 'Receive WebSocket handshake',\n /**\n * @description Text in Timeline Flame Chart Data Provider of the Performance panel\n */\n wsMessageReceived: 'Receive WebSocket message',\n /**\n * @description Text in Timeline Flame Chart Data Provider of the Performance panel\n */\n wsMessageSent: 'Send WebSocket message',\n /**\n * @description Text in Timeline UIUtils of the Performance panel\n */\n destroyWebsocket: 'Destroy WebSocket',\n /**\n * @description Event category in the Performance panel for time spent in the embedder of the WebView\n */\n embedderCallback: 'Embedder callback',\n /**\n * @description Event category in the Performance panel for time spent decoding an image\n */\n imageDecode: 'Image decode',\n /**\n * @description Event category in the Performance panel for time spent to perform Garbage Collection for the Document Object Model\n */\n domGc: 'DOM GC',\n /**\n * @description Event category in the Performance panel for time spent to perform Garbage Collection for C++: https://chromium.googlesource.com/v8/v8/+/main/include/cppgc/README.md\n */\n cppGc: 'CPP GC',\n /**\n * @description Event category in the Performance panel for time spent to perform encryption\n */\n encrypt: 'Encrypt',\n /**\n * @description Text in Timeline UIUtils of the Performance panel\n */\n encryptReply: 'Encrypt reply',\n /**\n * @description Event category in the Performance panel for time spent to perform decryption\n */\n decrypt: 'Decrypt',\n /**\n * @description Text in Timeline UIUtils of the Performance panel\n */\n decryptReply: 'Decrypt reply',\n /**\n * @description Noun phrase meaning 'the browser was preparing the digest'.\n * Digest: https://developer.mozilla.org/en-US/docs/Glossary/Digest\n */\n digest: 'Digest',\n /**\n * @description Noun phrase meaning 'the browser was preparing the digest\n *reply'. Digest: https://developer.mozilla.org/en-US/docs/Glossary/Digest\n */\n digestReply: 'Digest reply',\n /**\n * @description The 'sign' stage of a web crypto event. Shown when displaying what the website was doing at a particular point in time.\n */\n sign: 'Sign',\n /**\n * @description Noun phrase for an event of the Web Crypto API. The event is recorded when the signing process is concluded.\n * Signature: https://developer.mozilla.org/en-US/docs/Glossary/Signature/Security\n */\n signReply: 'Sign reply',\n /**\n * @description Text in Timeline UIUtils of the Performance panel\n */\n verify: 'Verify',\n /**\n * @description Text in Timeline UIUtils of the Performance panel\n */\n verifyReply: 'Verify reply',\n /**\n * @description Text in Timeline UIUtils of the Performance panel\n */\n asyncTask: 'Async task',\n /**\n * @description Text in Timeline for Layout Shift records\n */\n layoutShift: 'Layout shift',\n /**\n * @description Text in Timeline for Layout Shift records\n */\n layoutShiftCluster: 'Layout shift cluster',\n /**\n * @description Text in Timeline for an Event Timing record\n */\n eventTiming: 'Event timing',\n /**\n * @description Event category in the Performance panel for JavaScript nodes in CPUProfile\n */\n jsFrame: 'JS frame',\n /**\n * @description Text in UIDevtools Utils of the Performance panel\n */\n rasterizing: 'Rasterizing',\n /**\n * @description Text in UIDevtools Utils of the Performance panel\n */\n drawing: 'Drawing',\n /**\n * @description Label for an event in the Performance panel indicating that a\n * callback function has been scheduled to run at a later time using the\n * postTask API.\n */\n schedulePostTaskCallback: 'Schedule postTask',\n /**\n * @description Label for an event in the Performance panel indicating that a\n * callback function that was scheduled to run using the postTask API was\n * fired (invoked).\n */\n runPostTaskCallback: 'Fire postTask',\n /**\n * @description Label for an event in the Performance panel indicating that a\n * callback function that was scheduled to run at a later time using the\n * postTask API was cancelled, so will no longer run.\n */\n abortPostTaskCallback: 'Cancel postTask',\n} as const;\n\nexport enum EventCategory {\n DRAWING = 'drawing',\n RASTERIZING = 'rasterizing',\n LAYOUT = 'layout',\n LOADING = 'loading',\n EXPERIENCE = 'experience',\n SCRIPTING = 'scripting',\n MESSAGING = 'messaging',\n RENDERING = 'rendering',\n PAINTING = 'painting',\n GPU = 'gpu',\n ASYNC = 'async',\n OTHER = 'other',\n IDLE = 'idle',\n}\n\nlet mainEventCategories: EventCategory[];\n\nconst str_ = i18n.i18n.registerUIStrings('models/trace/Styles.ts', UIStrings);\nconst i18nString = i18n.i18n.getLocalizedString.bind(undefined, str_);\n\nexport class TimelineRecordStyle {\n title: string;\n category: TimelineCategory;\n hidden: boolean;\n\n constructor(title: string, category: TimelineCategory, hidden: boolean|undefined = false) {\n this.title = title;\n this.category = category;\n this.hidden = hidden;\n }\n}\nexport class TimelineCategory {\n name: EventCategory;\n title: Platform.UIString.LocalizedString;\n visible: boolean;\n #hidden?: boolean;\n #cssVariable: `--app-color-${string}`;\n\n constructor(\n name: EventCategory, title: Platform.UIString.LocalizedString, visible: boolean,\n cssVariable: `--app-color-${string}`) {\n this.name = name;\n this.title = title;\n this.visible = visible;\n this.#cssVariable = cssVariable;\n this.hidden = false;\n }\n\n get hidden(): boolean {\n return Boolean(this.#hidden);\n }\n\n get cssVariable(): string {\n return this.#cssVariable;\n }\n\n getCSSValue(): string {\n return `var(${this.#cssVariable})`;\n }\n\n set hidden(hidden: boolean) {\n this.#hidden = hidden;\n }\n}\n\nexport type CategoryPalette = Record<EventCategory, TimelineCategory>;\n\ntype EventStylesMap = Partial<Record<Types.Events.Name, TimelineRecordStyle>>;\n\n/**\n * This object defines the styles for the categories used in the\n * timeline (loading, rendering, scripting, etc.).\n */\nlet categoryStyles: CategoryPalette|null;\n\n/**\n * This map defines the styles for events shown in the panel. This\n * includes its color (which on the event's category, the label it's\n * displayed with and flag to know weather it's visible in the flamechart\n * or not).\n * The thread appenders use this map to determine if an event should be\n * shown in the flame chart. If an event is not in the map, then it\n * won't be shown, but it also won't be shown if it's marked as \"hidden\"\n * in its styles.\n *\n * The map is also used in other places, like the event's details view.\n */\nlet eventStylesMap: EventStylesMap|null;\n\nexport function getEventStyle(eventName: Types.Events.Name): TimelineRecordStyle|undefined {\n return maybeInitSylesMap()[eventName];\n}\n\nexport function stringIsEventCategory(it: string): it is EventCategory {\n return (Object.values(EventCategory) as string[]).includes(it);\n}\n\nexport function getCategoryStyles(): CategoryPalette {\n if (categoryStyles) {\n return categoryStyles;\n }\n categoryStyles = {\n loading: new TimelineCategory(EventCategory.LOADING, i18nString(UIStrings.loading), true, '--app-color-loading'),\n experience: new TimelineCategory(\n EventCategory.EXPERIENCE, i18nString(UIStrings.experience), false, '--app-color-rendering'),\n messaging:\n new TimelineCategory(EventCategory.MESSAGING, i18nString(UIStrings.messaging), true, '--app-color-messaging'),\n scripting:\n new TimelineCategory(EventCategory.SCRIPTING, i18nString(UIStrings.scripting), true, '--app-color-scripting'),\n rendering:\n new TimelineCategory(EventCategory.RENDERING, i18nString(UIStrings.rendering), true, '--app-color-rendering'),\n painting:\n new TimelineCategory(EventCategory.PAINTING, i18nString(UIStrings.painting), true, '--app-color-painting'),\n gpu: new TimelineCategory(EventCategory.GPU, i18nString(UIStrings.gpu), false, '--app-color-painting'),\n async: new TimelineCategory(EventCategory.ASYNC, i18nString(UIStrings.async), false, '--app-color-async'),\n other: new TimelineCategory(EventCategory.OTHER, i18nString(UIStrings.system), false, '--app-color-system'),\n idle: new TimelineCategory(EventCategory.IDLE, i18nString(UIStrings.idle), false, '--app-color-idle'),\n layout: new TimelineCategory(EventCategory.LAYOUT, i18nString(UIStrings.layout), false, '--app-color-loading'),\n rasterizing: new TimelineCategory(\n EventCategory.RASTERIZING, i18nString(UIStrings.rasterizing), false, '--app-color-scripting'),\n drawing: new TimelineCategory(EventCategory.DRAWING, i18nString(UIStrings.drawing), false, '--app-color-rendering'),\n };\n return categoryStyles;\n}\n\nexport function maybeInitSylesMap(): EventStylesMap {\n if (eventStylesMap) {\n return eventStylesMap;\n }\n const defaultCategoryStyles = getCategoryStyles();\n\n eventStylesMap = {\n [Types.Events.Name.RUN_TASK]: new TimelineRecordStyle(i18nString(UIStrings.task), defaultCategoryStyles.other),\n\n [Types.Events.Name.PROFILE_CALL]:\n new TimelineRecordStyle(i18nString(UIStrings.jsFrame), defaultCategoryStyles.scripting),\n\n [Types.Events.Name.JS_SAMPLE]:\n new TimelineRecordStyle(Types.Events.Name.JS_SAMPLE, defaultCategoryStyles.scripting),\n\n [Types.Events.Name.PROGRAM]: new TimelineRecordStyle(i18nString(UIStrings.other), defaultCategoryStyles.other),\n\n [Types.Events.Name.START_PROFILING]:\n new TimelineRecordStyle(i18nString(UIStrings.profilingOverhead), defaultCategoryStyles.other),\n\n [Types.Events.Name.ANIMATION]:\n new TimelineRecordStyle(i18nString(UIStrings.animation), defaultCategoryStyles.rendering),\n\n [Types.Events.Name.EVENT_DISPATCH]:\n new TimelineRecordStyle(i18nString(UIStrings.event), defaultCategoryStyles.scripting),\n\n [Types.Events.Name.REQUEST_MAIN_THREAD_FRAME]: new TimelineRecordStyle(\n i18nString(UIStrings.requestMainThreadFrame),\n defaultCategoryStyles.rendering,\n true,\n ),\n\n [Types.Events.Name.BEGIN_FRAME]: new TimelineRecordStyle(\n i18nString(UIStrings.frameStart),\n defaultCategoryStyles.rendering,\n true,\n ),\n\n [Types.Events.Name.BEGIN_MAIN_THREAD_FRAME]: new TimelineRecordStyle(\n i18nString(UIStrings.frameStartMainThread),\n defaultCategoryStyles.rendering,\n true,\n ),\n\n [Types.Events.Name.DRAW_FRAME]: new TimelineRecordStyle(\n i18nString(UIStrings.drawFrame),\n defaultCategoryStyles.rendering,\n true,\n ),\n\n [Types.Events.Name.HIT_TEST]:\n new TimelineRecordStyle(i18nString(UIStrings.hitTest), defaultCategoryStyles.rendering),\n\n [Types.Events.Name.SCHEDULE_STYLE_RECALCULATION]: new TimelineRecordStyle(\n i18nString(UIStrings.scheduleStyleRecalculation),\n defaultCategoryStyles.rendering,\n ),\n\n [Types.Events.Name.RECALC_STYLE]:\n new TimelineRecordStyle(i18nString(UIStrings.recalculateStyle), defaultCategoryStyles.rendering),\n\n [Types.Events.Name.INVALIDATE_LAYOUT]: new TimelineRecordStyle(\n i18nString(UIStrings.invalidateLayout),\n defaultCategoryStyles.rendering,\n true,\n ),\n\n [Types.Events.Name.LAYERIZE]:\n new TimelineRecordStyle(i18nString(UIStrings.layerize), defaultCategoryStyles.rendering),\n\n [Types.Events.Name.LAYOUT]: new TimelineRecordStyle(i18nString(UIStrings.layout), defaultCategoryStyles.rendering),\n\n [Types.Events.Name.PAINT_SETUP]:\n new TimelineRecordStyle(i18nString(UIStrings.paintSetup), defaultCategoryStyles.painting),\n\n [Types.Events.Name.PAINT_IMAGE]: new TimelineRecordStyle(\n i18nString(UIStrings.paintImage),\n defaultCategoryStyles.painting,\n true,\n ),\n\n [Types.Events.Name.UPDATE_LAYER]: new TimelineRecordStyle(\n i18nString(UIStrings.updateLayer),\n defaultCategoryStyles.painting,\n true,\n ),\n\n [Types.Events.Name.UPDATE_LAYER_TREE]:\n new TimelineRecordStyle(i18nString(UIStrings.updateLayerTree), defaultCategoryStyles.rendering),\n\n [Types.Events.Name.PAINT]: new TimelineRecordStyle(i18nString(UIStrings.paint), defaultCategoryStyles.painting),\n\n [Types.Events.Name.PRE_PAINT]:\n new TimelineRecordStyle(i18nString(UIStrings.prePaint), defaultCategoryStyles.rendering),\n\n [Types.Events.Name.RASTER_TASK]:\n new TimelineRecordStyle(i18nString(UIStrings.rasterizePaint), defaultCategoryStyles.painting),\n\n [Types.Events.Name.SCROLL_LAYER]:\n new TimelineRecordStyle(i18nString(UIStrings.scroll), defaultCategoryStyles.rendering),\n\n [Types.Events.Name.COMMIT]: new TimelineRecordStyle(i18nString(UIStrings.commit), defaultCategoryStyles.painting),\n\n [Types.Events.Name.COMPOSITE_LAYERS]:\n new TimelineRecordStyle(i18nString(UIStrings.compositeLayers), defaultCategoryStyles.painting),\n\n [Types.Events.Name.COMPUTE_INTERSECTION]: new TimelineRecordStyle(\n i18nString(UIStrings.computeIntersections),\n defaultCategoryStyles.rendering,\n ),\n\n [Types.Events.Name.PARSE_HTML]:\n new TimelineRecordStyle(i18nString(UIStrings.parseHtml), defaultCategoryStyles.loading),\n\n [Types.Events.Name.PARSE_AUTHOR_STYLE_SHEET]:\n new TimelineRecordStyle(i18nString(UIStrings.parseStylesheet), defaultCategoryStyles.loading),\n\n [Types.Events.Name.TIMER_INSTALL]:\n new TimelineRecordStyle(i18nString(UIStrings.installTimer), defaultCategoryStyles.scripting),\n\n [Types.Events.Name.TIMER_REMOVE]:\n new TimelineRecordStyle(i18nString(UIStrings.removeTimer), defaultCategoryStyles.scripting),\n\n [Types.Events.Name.TIMER_FIRE]:\n new TimelineRecordStyle(i18nString(UIStrings.timerFired), defaultCategoryStyles.scripting),\n\n [Types.Events.Name.XHR_READY_STATE_CHANGED]: new TimelineRecordStyle(\n i18nString(UIStrings.xhrReadyStateChange),\n defaultCategoryStyles.scripting,\n ),\n\n [Types.Events.Name.XHR_LOAD]:\n new TimelineRecordStyle(i18nString(UIStrings.xhrLoad), defaultCategoryStyles.scripting),\n\n [Types.Events.Name.COMPILE]:\n new TimelineRecordStyle(i18nString(UIStrings.compileScript), defaultCategoryStyles.scripting),\n\n [Types.Events.Name.CACHE_SCRIPT]:\n new TimelineRecordStyle(i18nString(UIStrings.cacheScript), defaultCategoryStyles.scripting),\n\n [Types.Events.Name.COMPILE_CODE]:\n new TimelineRecordStyle(i18nString(UIStrings.compileCode), defaultCategoryStyles.scripting),\n\n [Types.Events.Name.OPTIMIZE_CODE]:\n new TimelineRecordStyle(i18nString(UIStrings.optimizeCode), defaultCategoryStyles.scripting),\n\n [Types.Events.Name.EVALUATE_SCRIPT]:\n new TimelineRecordStyle(i18nString(UIStrings.evaluateScript), defaultCategoryStyles.scripting),\n\n [Types.Events.Name.COMPILE_MODULE]:\n new TimelineRecordStyle(i18nString(UIStrings.compileModule), defaultCategoryStyles.scripting),\n\n [Types.Events.Name.CACHE_MODULE]:\n new TimelineRecordStyle(i18nString(UIStrings.cacheModule), defaultCategoryStyles.scripting),\n\n [Types.Events.Name.EVALUATE_MODULE]:\n new TimelineRecordStyle(i18nString(UIStrings.evaluateModule), defaultCategoryStyles.scripting),\n\n [Types.Events.Name.STREAMING_COMPILE_SCRIPT]:\n new TimelineRecordStyle(i18nString(UIStrings.streamingCompileTask), defaultCategoryStyles.other),\n\n [Types.Events.Name.STREAMING_COMPILE_SCRIPT_WAITING]:\n new TimelineRecordStyle(i18nString(UIStrings.waitingForNetwork), defaultCategoryStyles.idle),\n\n [Types.Events.Name.STREAMING_COMPILE_SCRIPT_PARSING]:\n new TimelineRecordStyle(i18nString(UIStrings.parseAndCompile), defaultCategoryStyles.scripting),\n\n [Types.Events.Name.BACKGROUND_DESERIALIZE]: new TimelineRecordStyle(\n i18nString(UIStrings.deserializeCodeCache),\n defaultCategoryStyles.scripting,\n ),\n\n [Types.Events.Name.FINALIZE_DESERIALIZATION]:\n new TimelineRecordStyle(i18nString(UIStrings.profilingOverhead), defaultCategoryStyles.other),\n\n [Types.Events.Name.WASM_STREAM_FROM_RESPONSE_CALLBACK]: new TimelineRecordStyle(\n i18nString(UIStrings.streamingWasmResponse),\n defaultCategoryStyles.scripting,\n ),\n\n [Types.Events.Name.WASM_COMPILED_MODULE]:\n new TimelineRecordStyle(i18nString(UIStrings.compiledWasmModule), defaultCategoryStyles.scripting),\n\n [Types.Events.Name.WASM_CACHED_MODULE]:\n new TimelineRecordStyle(i18nString(UIStrings.cachedWasmModule), defaultCategoryStyles.scripting),\n\n [Types.Events.Name.WASM_MODULE_CACHE_HIT]:\n new TimelineRecordStyle(i18nString(UIStrings.wasmModuleCacheHit), defaultCategoryStyles.scripting),\n\n [Types.Events.Name.WASM_MODULE_CACHE_INVALID]: new TimelineRecordStyle(\n i18nString(UIStrings.wasmModuleCacheInvalid),\n defaultCategoryStyles.scripting,\n ),\n\n [Types.Events.Name.FRAME_STARTED_LOADING]: new TimelineRecordStyle(\n i18nString(UIStrings.frameStartedLoading),\n defaultCategoryStyles.loading,\n true,\n ),\n\n [Types.Events.Name.MARK_LOAD]: new TimelineRecordStyle(\n i18nString(UIStrings.onloadEvent),\n defaultCategoryStyles.scripting,\n true,\n ),\n\n [Types.Events.Name.MARK_DOM_CONTENT]: new TimelineRecordStyle(\n i18nString(UIStrings.domcontentloadedEvent),\n defaultCategoryStyles.scripting,\n true,\n ),\n\n [Types.Events.Name.MARK_FIRST_PAINT]: new TimelineRecordStyle(\n i18nString(UIStrings.firstPaint),\n defaultCategoryStyles.painting,\n true,\n ),\n\n [Types.Events.Name.MARK_FCP]: new TimelineRecordStyle(\n i18nString(UIStrings.firstContentfulPaint),\n defaultCategoryStyles.rendering,\n true,\n ),\n\n [Types.Events.Name.MARK_LCP_CANDIDATE]: new TimelineRecordStyle(\n i18nString(UIStrings.largestContentfulPaint),\n defaultCategoryStyles.rendering,\n true,\n ),\n\n [Types.Events.Name.TIME_STAMP]:\n new TimelineRecordStyle(i18nString(UIStrings.timestamp), defaultCategoryStyles.scripting),\n\n [Types.Events.Name.CONSOLE_TIME]:\n new TimelineRecordStyle(i18nString(UIStrings.consoleTime), defaultCategoryStyles.scripting),\n\n [Types.Events.Name.USER_TIMING]:\n new TimelineRecordStyle(i18nString(UIStrings.userTiming), defaultCategoryStyles.scripting),\n\n [Types.Events.Name.RESOURCE_WILL_SEND_REQUEST]:\n new TimelineRecordStyle(i18nString(UIStrings.willSendRequest), defaultCategoryStyles.loading),\n\n [Types.Events.Name.RESOURCE_SEND_REQUEST]:\n new TimelineRecordStyle(i18nString(UIStrings.sendRequest), defaultCategoryStyles.loading),\n\n [Types.Events.Name.RESOURCE_RECEIVE_RESPONSE]:\n new TimelineRecordStyle(i18nString(UIStrings.receiveResponse), defaultCategoryStyles.loading),\n\n [Types.Events.Name.RESOURCE_FINISH]:\n new TimelineRecordStyle(i18nString(UIStrings.finishLoading), defaultCategoryStyles.loading),\n\n [Types.Events.Name.RESOURCE_RECEIVE_DATA]:\n new TimelineRecordStyle(i18nString(UIStrings.receiveData), defaultCategoryStyles.loading),\n\n [Types.Events.Name.RUN_MICROTASKS]:\n new TimelineRecordStyle(i18nString(UIStrings.runMicrotasks), defaultCategoryStyles.scripting),\n\n [Types.Events.Name.FUNCTION_CALL]:\n new TimelineRecordStyle(i18nString(UIStrings.functionCall), defaultCategoryStyles.scripting),\n\n [Types.Events.Name.GC]: new TimelineRecordStyle(i18nString(UIStrings.gcEvent), defaultCategoryStyles.scripting),\n\n [Types.Events.Name.MAJOR_GC]:\n new TimelineRecordStyle(i18nString(UIStrings.majorGc), defaultCategoryStyles.scripting),\n\n [Types.Events.Name.MINOR_GC]:\n new TimelineRecordStyle(i18nString(UIStrings.minorGc), defaultCategoryStyles.scripting),\n\n [Types.Events.Name.CPPGC_SWEEP]:\n new TimelineRecordStyle(i18nString(UIStrings.cppGc), defaultCategoryStyles.scripting),\n\n [Types.Events.Name.REQUEST_ANIMATION_FRAME]: new TimelineRecordStyle(\n i18nString(UIStrings.requestAnimationFrame),\n defaultCategoryStyles.scripting,\n ),\n\n [Types.Events.Name.CANCEL_ANIMATION_FRAME]: new TimelineRecordStyle(\n i18nString(UIStrings.cancelAnimationFrame),\n defaultCategoryStyles.scripting,\n ),\n\n [Types.Events.Name.FIRE_ANIMATION_FRAME]: new TimelineRecordStyle(\n i18nString(UIStrings.animationFrameFired),\n defaultCategoryStyles.scripting,\n ),\n\n [Types.Events.Name.REQUEST_IDLE_CALLBACK]: new TimelineRecordStyle(\n i18nString(UIStrings.requestIdleCallback),\n defaultCategoryStyles.scripting,\n ),\n\n [Types.Events.Name.CANCEL_IDLE_CALLBACK]:\n new TimelineRecordStyle(i18nString(UIStrings.cancelIdleCallback), defaultCategoryStyles.scripting),\n\n [Types.Events.Name.FIRE_IDLE_CALLBACK]:\n new TimelineRecordStyle(i18nString(UIStrings.fireIdleCallback), defaultCategoryStyles.scripting),\n\n [Types.Events.Name.WEB_SOCKET_CREATE]:\n new TimelineRecordStyle(i18nString(UIStrings.createWebsocket), defaultCategoryStyles.scripting),\n\n [Types.Events.Name.WEB_SOCKET_SEND_HANDSHAKE_REQUEST]: new TimelineRecordStyle(\n i18nString(UIStrings.sendWebsocketHandshake),\n defaultCategoryStyles.scripting,\n ),\n\n [Types.Events.Name.WEB_SOCKET_RECEIVE_HANDSHAKE_REQUEST]: new TimelineRecordStyle(\n i18nString(UIStrings.receiveWebsocketHandshake),\n defaultCategoryStyles.scripting,\n ),\n\n [Types.Events.Name.WEB_SOCKET_DESTROY]:\n new TimelineRecordStyle(i18nString(UIStrings.destroyWebsocket), defaultCategoryStyles.scripting),\n [Types.Events.Name.WEB_SOCKET_SEND]: new TimelineRecordStyle(\n i18nString(UIStrings.wsMessageSent),\n defaultCategoryStyles.scripting,\n ),\n [Types.Events.Name.WEB_SOCKET_RECEIVE]: new TimelineRecordStyle(\n i18nString(UIStrings.wsMessageReceived),\n defaultCategoryStyles.scripting,\n ),\n\n [Types.Events.Name.EMBEDDER_CALLBACK]:\n new TimelineRecordStyle(i18nString(UIStrings.embedderCallback), defaultCategoryStyles.scripting),\n\n [Types.Events.Name.DECODE_IMAGE]:\n new TimelineRecordStyle(i18nString(UIStrings.imageDecode), defaultCategoryStyles.painting),\n\n [Types.Events.Name.GPU_TASK]: new TimelineRecordStyle(i18nString(UIStrings.gpu), defaultCategoryStyles.gpu),\n\n [Types.Events.Name.GC_COLLECT_GARBARGE]:\n new TimelineRecordStyle(i18nString(UIStrings.domGc), defaultCategoryStyles.scripting),\n\n [Types.Events.Name.CRYPTO_DO_ENCRYPT]:\n new TimelineRecordStyle(i18nString(UIStrings.encrypt), defaultCategoryStyles.scripting),\n\n [Types.Events.Name.CRYPTO_DO_ENCRYPT_REPLY]:\n new TimelineRecordStyle(i18nString(UIStrings.encryptReply), defaultCategoryStyles.scripting),\n\n [Types.Events.Name.CRYPTO_DO_DECRYPT]:\n new TimelineRecordStyle(i18nString(UIStrings.decrypt), defaultCategoryStyles.scripting),\n\n [Types.Events.Name.CRYPTO_DO_DECRYPT_REPLY]:\n new TimelineRecordStyle(i18nString(UIStrings.decryptReply), defaultCategoryStyles.scripting),\n\n [Types.Events.Name.CRYPTO_DO_DIGEST]:\n new TimelineRecordStyle(i18nString(UIStrings.digest), defaultCategoryStyles.scripting),\n\n [Types.Events.Name.CRYPTO_DO_DIGEST_REPLY]:\n new TimelineRecordStyle(i18nString(UIStrings.digestReply), defaultCategoryStyles.scripting),\n\n [Types.Events.Name.CRYPTO_DO_SIGN]:\n new TimelineRecordStyle(i18nString(UIStrings.sign), defaultCategoryStyles.scripting),\n\n [Types.Events.Name.CRYPTO_DO_SIGN_REPLY]:\n new TimelineRecordStyle(i18nString(UIStrings.signReply), defaultCategoryStyles.scripting),\n\n [Types.Events.Name.CRYPTO_DO_VERIFY]:\n new TimelineRecordStyle(i18nString(UIStrings.verify), defaultCategoryStyles.scripting),\n\n [Types.Events.Name.CRYPTO_DO_VERIFY_REPLY]:\n new TimelineRecordStyle(i18nString(UIStrings.verifyReply), defaultCategoryStyles.scripting),\n\n [Types.Events.Name.ASYNC_TASK]:\n new TimelineRecordStyle(i18nString(UIStrings.asyncTask), defaultCategoryStyles.async),\n\n [Types.Events.Name.LAYOUT_SHIFT]: new TimelineRecordStyle(\n i18nString(UIStrings.layoutShift), defaultCategoryStyles.experience,\n /* Mark LayoutShifts as hidden; in the timeline we render\n * SyntheticLayoutShifts so those are the ones visible to the user */\n true),\n\n [Types.Events.Name.SYNTHETIC_LAYOUT_SHIFT]:\n new TimelineRecordStyle(i18nString(UIStrings.layoutShift), defaultCategoryStyles.experience),\n\n [Types.Events.Name.SYNTHETIC_LAYOUT_SHIFT_CLUSTER]:\n new TimelineRecordStyle(i18nString(UIStrings.layoutShiftCluster), defaultCategoryStyles.experience),\n\n [Types.Events.Name.EVENT_TIMING]:\n new TimelineRecordStyle(i18nString(UIStrings.eventTiming), defaultCategoryStyles.experience),\n\n [Types.Events.Name.HANDLE_POST_MESSAGE]:\n new TimelineRecordStyle(i18nString(UIStrings.onMessage), defaultCategoryStyles.messaging),\n\n [Types.Events.Name.SCHEDULE_POST_MESSAGE]:\n new TimelineRecordStyle(i18nString(UIStrings.schedulePostMessage), defaultCategoryStyles.messaging),\n\n [Types.Events.Name.SCHEDULE_POST_TASK_CALLBACK]:\n new TimelineRecordStyle(i18nString(UIStrings.schedulePostTaskCallback), defaultCategoryStyles.scripting),\n\n [Types.Events.Name.RUN_POST_TASK_CALLBACK]:\n new TimelineRecordStyle(i18nString(UIStrings.runPostTaskCallback), defaultCategoryStyles.scripting),\n\n [Types.Events.Name.ABORT_POST_TASK_CALLBACK]:\n new TimelineRecordStyle(i18nString(UIStrings.abortPostTaskCallback), defaultCategoryStyles.scripting),\n [Types.Events.Name.V8_CONSOLE_RUN_TASK]:\n new TimelineRecordStyle(i18nString(UIStrings.consoleTaskRun), defaultCategoryStyles.scripting),\n };\n\n // TODO(crbug.com/410884528): remove assertion after deduped eventStylesMap for VISIBLE_TRACE_EVENT_TYPES.\n const visibleEventStyles =\n Object.entries(eventStylesMap).filter(([, style]) => style.hidden === false).map(([\n key,\n ]) => key);\n const visibleTraceEventsComplete = visibleEventStyles.every(eventType => {\n return Helpers.Trace.VISIBLE_TRACE_EVENT_TYPES.has(eventType as Types.Events.Name);\n });\n\n const eventStylesMapKeys = Object.keys(eventStylesMap) as Types.Events.Name[];\n const eventStylesComplete = Array.from(Helpers.Trace.VISIBLE_TRACE_EVENT_TYPES).every(eventType => {\n return eventStylesMapKeys.includes(eventType);\n });\n\n if (!visibleTraceEventsComplete || !eventStylesComplete) {\n throw new Error('eventStylesMap and VISIBLE_TRACE_EVENT_TYPES are out of sync!');\n }\n return eventStylesMap;\n}\n\nexport function setEventStylesMap(eventStyles: EventStylesMap): void {\n eventStylesMap = eventStyles;\n}\n\nexport function setCategories(cats: CategoryPalette): void {\n categoryStyles = cats;\n}\n\nexport function visibleTypes(): string[] {\n const eventStyles = maybeInitSylesMap();\n const result = [];\n for (const name in eventStyles) {\n // Typescript cannot infer that `name` is a key of eventStyles\n const nameAsKey = name as keyof typeof eventStyles;\n if (!eventStyles[nameAsKey]?.hidden) {\n result.push(name);\n }\n }\n return result;\n}\n\nexport function getTimelineMainEventCategories(): EventCategory[] {\n if (mainEventCategories) {\n return mainEventCategories;\n }\n mainEventCategories = [\n EventCategory.IDLE,\n EventCategory.LOADING,\n EventCategory.PAINTING,\n EventCategory.RENDERING,\n EventCategory.SCRIPTING,\n EventCategory.OTHER,\n ];\n return mainEventCategories;\n}\n\nexport function setTimelineMainEventCategories(categories: EventCategory[]): void {\n mainEventCategories = categories;\n}\n\nexport function markerDetailsForEvent(event: Types.Events.Event): {\n color: string,\n title: string,\n} {\n let title = '';\n let color = 'var(--color-text-primary)';\n if (Types.Events.isFirstContentfulPaint(event)) {\n color = 'var(--sys-color-green-bright)';\n title = Handlers.ModelHandlers.PageLoadMetrics.MetricName.FCP;\n }\n if (Types.Events.isLargestContentfulPaintCandidate(event)) {\n color = 'var(--sys-color-green)';\n title = Handlers.ModelHandlers.PageLoadMetrics.MetricName.LCP;\n }\n if (Types.Events.isNavigationStart(event)) {\n color = 'var(--color-text-primary)';\n title = Handlers.ModelHandlers.PageLoadMetrics.MetricName.NAV;\n }\n if (Types.Events.isMarkDOMContent(event)) {\n color = 'var(--color-text-disabled)';\n title = Handlers.ModelHandlers.PageLoadMetrics.MetricName.DCL;\n }\n if (Types.Events.isMarkLoad(event)) {\n color = 'var(--color-text-disabled)';\n title = Handlers.ModelHandlers.PageLoadMetrics.MetricName.L;\n }\n return {color, title};\n}\n"]}
|
|
1
|
+
{"version":3,"file":"Styles.js","sourceRoot":"","sources":["../../../../../../front_end/models/trace/Styles.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright 2023 The Chromium Authors\n// Use of this source code is governed by a BSD-style license that can be\n// found in the LICENSE file.\n\nimport * as i18n from '../../core/i18n/i18n.js';\nimport type * as Platform from '../../core/platform/platform.js';\n\nimport * as Handlers from './handlers/handlers.js';\nimport * as Helpers from './helpers/helpers.js';\nimport * as Types from './types/types.js';\n\nconst UIStrings = {\n /**\n * @description Category in the Summary view of the Performance panel to indicate time spent to load resources\n */\n loading: 'Loading',\n /**\n * @description Text in Timeline for the Experience title\n */\n experience: 'Experience',\n /**\n * @description Category in the Summary view of the Performance panel to indicate time spent in script execution\n */\n scripting: 'Scripting',\n /**\n * @description Category in the Summary view of the Performance panel to indicate time spent in rendering the web page\n */\n rendering: 'Rendering',\n /**\n * @description Category in the Summary view of the Performance panel to indicate time spent to visually represent the web page\n */\n painting: 'Painting',\n /**\n * @description Event category in the Performance panel for time spent in the GPU\n */\n gpu: 'GPU',\n /**\n * @description Text in Timeline UIUtils of the Performance panel\n */\n async: 'Async',\n /**\n * @description Category in the Summary view of the Performance panel to indicate time spent in the rest of the system\n */\n system: 'System',\n /**\n * @description Category in the Summary view of the Performance panel to indicate idle time\n */\n idle: 'Idle',\n /**\n * @description Text in Timeline UIUtils of the Performance panel\n */\n task: 'Task',\n /**\n * @description Text in Timeline UIUtils of the Performance panel\n */\n consoleTaskRun: 'Run console task',\n /**\n * @description Text for other types of items\n */\n other: 'Other',\n /**\n * @description Text that refers to the animation of the web page\n */\n animation: 'Animation',\n /**\n * @description Text that refers to some events\n */\n event: 'Event',\n /**\n * @description Text in Timeline UIUtils of the Performance panel\n */\n requestMainThreadFrame: 'Request main thread frame',\n /**\n * @description Text in Timeline UIUtils of the Performance panel\n */\n frameStart: 'Frame start',\n /**\n * @description Text in Timeline UIUtils of the Performance panel\n */\n onMessage: 'On message',\n /**\n * @description Text in Timeline UIUtils of the Performance panel\n */\n schedulePostMessage: 'Schedule postMessage',\n /**\n * @description Text in Timeline UIUtils of the Performance panel\n */\n messaging: 'Messaging',\n /**\n * @description Text in Timeline UIUtils of the Performance panel\n */\n frameStartMainThread: 'Frame start (main thread)',\n /**\n * @description Text in Timeline UIUtils of the Performance panel\n */\n drawFrame: 'Draw frame',\n /**\n * @description Noun for an event in the Performance panel. This marks time\n * spent in an operation that only happens when the profiler is active.\n */\n profilingOverhead: 'Profiling overhead',\n /**\n * @description The process the browser uses to determine a target element for a\n *pointer event. Typically, this is determined by considering the pointer's\n *location and also the visual layout of elements on the screen.\n */\n hitTest: 'Hit test',\n /**\n * @description Noun for an event in the Performance panel. The browser has decided\n *that the styles for some elements need to be recalculated and scheduled that\n *recalculation process at some time in the future.\n */\n scheduleStyleRecalculation: 'Schedule style recalculation',\n /**\n * @description Text in Timeline UIUtils of the Performance panel\n */\n recalculateStyle: 'Recalculate style',\n /**\n * @description Text in Timeline UIUtils of the Performance panel\n */\n invalidateLayout: 'Invalidate Layout',\n /**\n * @description Noun for an event in the Performance panel. Layerize is a step\n *where we calculate which layers to create.\n */\n layerize: 'Layerize',\n /**\n * @description Text in Timeline UIUtils of the Performance panel\n */\n layout: 'Layout',\n /**\n * @description Noun for an event in the Performance panel. Paint setup is a\n *step before the 'Paint' event. A paint event is when the browser draws pixels\n *to the screen. This step is the setup beforehand.\n */\n paintSetup: 'Paint setup',\n /**\n * @description Noun for a paint event in the Performance panel, where an image\n *was being painted. A paint event is when the browser draws pixels to the\n *screen, in this case specifically for an image in a website.\n */\n paintImage: 'Paint image',\n /**\n * @description Noun for an event in the Performance panel. Pre-paint is a\n *step before the 'Paint' event. A paint event is when the browser records the\n *instructions for drawing the page. This step is the setup beforehand.\n */\n prePaint: 'Pre-paint',\n /**\n * @description Text in Timeline UIUtils of the Performance panel\n */\n updateLayer: 'Update layer',\n /**\n * @description Text in Timeline UIUtils of the Performance panel\n */\n updateLayerTree: 'Update layer tree',\n /**\n * @description Noun for a paint event in the Performance panel. A paint event is when the browser draws pixels to the screen.\n */\n paint: 'Paint',\n /**\n * @description Text in Timeline UIUtils of the Performance panel\n */\n rasterizePaint: 'Rasterize paint',\n /**\n * @description The action to scroll\n */\n scroll: 'Scroll',\n /**\n * @description Noun for an event in the Performance panel. Commit is a step\n *where we send (also known as \"commit\") layers to the compositor thread. This\n *step follows the \"Layerize\" step which is what calculates which layers to\n *create.\n */\n commit: 'Commit',\n /**\n * @description Text in Timeline UIUtils of the Performance panel\n */\n compositeLayers: 'Composite layers',\n /**\n * @description Text in Timeline UIUtils of the Performance panel\n */\n computeIntersections: 'Compute intersections',\n /**\n * @description Text in Timeline UIUtils of the Performance panel\n */\n parseHtml: 'Parse HTML',\n /**\n * @description Text in Timeline UIUtils of the Performance panel\n */\n parseStylesheet: 'Parse stylesheet',\n /**\n * @description Text in Timeline UIUtils of the Performance panel\n */\n installTimer: 'Install timer',\n /**\n * @description Text in Timeline UIUtils of the Performance panel\n */\n removeTimer: 'Remove timer',\n /**\n * @description Text in Timeline UIUtils of the Performance panel\n */\n timerFired: 'Timer fired',\n /**\n * @description Text for an event. Shown in the timeline in the Performance panel.\n * XHR refers to XmlHttpRequest, a Web API. This particular Web API has a property\n * named 'readyState' (https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/readyState). When\n * the 'readyState' property changes the text is shown.\n */\n xhrReadyStateChange: '`XHR` `readyState` change',\n /**\n * @description Text for an event. Shown in the timeline in the Performance panel.\n * XHR refers to XmlHttpRequest, a Web API. (see https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest)\n * The text is shown when a XmlHttpRequest load event happens on the inspected page.\n */\n xhrLoad: '`XHR` load',\n /**\n * @description Text in Timeline UIUtils of the Performance panel\n */\n compileScript: 'Compile script',\n /**\n * @description Text in Timeline UIUtils of the Performance panel\n */\n cacheScript: 'Cache script code',\n /**\n * @description Text in Timeline UIUtils of the Performance panel\n */\n compileCode: 'Compile code',\n /**\n * @description Text in Timeline UIUtils of the Performance panel\n */\n optimizeCode: 'Optimize code',\n /**\n * @description Text in Timeline UIUtils of the Performance panel\n */\n evaluateScript: 'Evaluate script',\n /**\n * @description Text in Timeline UIUtils of the Performance panel\n */\n compileModule: 'Compile module',\n /**\n * @description Text in Timeline UIUtils of the Performance panel\n */\n cacheModule: 'Cache module code',\n /**\n * @description Text for an event. Shown in the timeline in the Performance panel.\n * \"Module\" refers to JavaScript modules: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Modules\n * JavaScript modules are a way to organize JavaScript code.\n * \"Evaluate\" is the phase when the JavaScript code of a module is executed.\n */\n evaluateModule: 'Evaluate module',\n /**\n * @description Noun indicating that a compile task (type: streaming) happened.\n */\n streamingCompileTask: 'Streaming compile task',\n /**\n * @description Text in Timeline UIUtils of the Performance panel\n */\n waitingForNetwork: 'Waiting for network',\n /**\n * @description Text in Timeline UIUtils of the Performance panel\n */\n parseAndCompile: 'Parse and compile',\n /**\n * @description Text in Timeline UIUtils of the Performance panel.\n * \"Code Cache\" refers to JavaScript bytecode cache: https://v8.dev/blog/code-caching-for-devs\n * \"Deserialize\" refers to the process of reading the code cache.\n */\n deserializeCodeCache: 'Deserialize code cache',\n /**\n * @description Text in Timeline UIUtils of the Performance panel\n */\n streamingWasmResponse: 'Streaming Wasm response',\n /**\n * @description Text in Timeline UIUtils of the Performance panel\n */\n compiledWasmModule: 'Compiled Wasm module',\n /**\n * @description Text in Timeline UIUtils of the Performance panel\n */\n cachedWasmModule: 'Cached Wasm module',\n /**\n * @description Text in Timeline UIUtils of the Performance panel\n */\n wasmModuleCacheHit: 'Wasm module cache hit',\n /**\n * @description Text in Timeline UIUtils of the Performance panel\n */\n wasmModuleCacheInvalid: 'Wasm module cache invalid',\n /**\n * @description Text in Timeline UIUtils of the Performance panel\n */\n frameStartedLoading: 'Frame started loading',\n /**\n * @description Text in Timeline UIUtils of the Performance panel\n */\n onloadEvent: 'Onload event',\n /**\n * @description Text in Timeline UIUtils of the Performance panel\n */\n domcontentloadedEvent: 'DOMContentLoaded event',\n /**\n * @description Text in Timeline UIUtils of the Performance panel\n */\n firstPaint: 'First Paint',\n /**\n * @description Text in Timeline UIUtils of the Performance panel\n */\n firstContentfulPaint: 'First Contentful Paint',\n /**\n * @description Text in Timeline UIUtils of the Performance panel\n */\n largestContentfulPaint: 'Largest Contentful Paint',\n /**\n * @description Text in Timeline UIUtils of the Performance panel\n */\n softLargestContentfulPaint: 'Soft Largest Contentful Paint',\n /**\n * @description Text for timestamps of items\n */\n timestamp: 'Timestamp',\n /**\n * @description Noun for a 'time' event that happens in the Console (a tool in\n * DevTools). The user can trigger console time events from their code, and\n * they will show up in the Performance panel. Time events are used to measure\n * the duration of something, e.g. the user will emit two time events at the\n * start and end of some interesting task.\n */\n consoleTime: 'Console time',\n /**\n * @description Text in Timeline UIUtils of the Performance panel\n */\n userTiming: 'User timing',\n /**\n * @description Name for an event shown in the Performance panel. When a network\n * request is about to be sent by the browser, the time is recorded and DevTools\n * is notified that a network request will be sent momentarily.\n */\n willSendRequest: 'Will send request',\n /**\n * @description Text in Timeline UIUtils of the Performance panel\n */\n sendRequest: 'Send request',\n /**\n * @description Text in Timeline UIUtils of the Performance panel\n */\n receiveResponse: 'Receive response',\n /**\n * @description Text in Timeline UIUtils of the Performance panel\n */\n finishLoading: 'Finish loading',\n /**\n * @description Text in Timeline UIUtils of the Performance panel\n */\n receiveData: 'Receive data',\n /**\n * @description Event category in the Performance panel for time spent to execute microtasks in JavaScript\n */\n runMicrotasks: 'Run microtasks',\n /**\n * @description Text in Timeline UIUtils of the Performance panel\n */\n functionCall: 'Function call',\n /**\n * @description Text in Timeline UIUtils of the Performance panel\n */\n gcEvent: 'GC event',\n /**\n * @description Event category in the Performance panel for time spent to perform a full Garbage Collection pass\n */\n majorGc: 'Major GC',\n /**\n * @description Event category in the Performance panel for time spent to perform a quick Garbage Collection pass\n */\n minorGc: 'Minor GC',\n /**\n * @description Text for the request animation frame event\n */\n requestAnimationFrame: 'Request animation frame',\n /**\n * @description Text to cancel the animation frame\n */\n cancelAnimationFrame: 'Cancel animation frame',\n /**\n * @description Text for the event that an animation frame is fired\n */\n animationFrameFired: 'Animation frame fired',\n /**\n * @description Text in Timeline UIUtils of the Performance panel\n */\n requestIdleCallback: 'Request idle callback',\n /**\n * @description Text in Timeline UIUtils of the Performance panel\n */\n cancelIdleCallback: 'Cancel idle callback',\n /**\n * @description Text in Timeline UIUtils of the Performance panel\n */\n fireIdleCallback: 'Fire idle callback',\n /**\n * @description Text in Timeline UIUtils of the Performance panel\n */\n createWebsocket: 'Create WebSocket',\n /**\n * @description Text in Timeline UIUtils of the Performance panel\n */\n sendWebsocketHandshake: 'Send WebSocket handshake',\n /**\n * @description Text in Timeline UIUtils of the Performance panel\n */\n receiveWebsocketHandshake: 'Receive WebSocket handshake',\n /**\n * @description Text in Timeline Flame Chart Data Provider of the Performance panel\n */\n wsMessageReceived: 'Receive WebSocket message',\n /**\n * @description Text in Timeline Flame Chart Data Provider of the Performance panel\n */\n wsMessageSent: 'Send WebSocket message',\n /**\n * @description Text in Timeline UIUtils of the Performance panel\n */\n destroyWebsocket: 'Destroy WebSocket',\n /**\n * @description Event category in the Performance panel for time spent in the embedder of the WebView\n */\n embedderCallback: 'Embedder callback',\n /**\n * @description Event category in the Performance panel for time spent decoding an image\n */\n imageDecode: 'Image decode',\n /**\n * @description Event category in the Performance panel for time spent to perform Garbage Collection for the Document Object Model\n */\n domGc: 'DOM GC',\n /**\n * @description Event category in the Performance panel for time spent to perform Garbage Collection for C++: https://chromium.googlesource.com/v8/v8/+/main/include/cppgc/README.md\n */\n cppGc: 'C++ GC',\n /**\n * @description Event category in the Performance panel for time spent to perform encryption\n */\n encrypt: 'Encrypt',\n /**\n * @description Text in Timeline UIUtils of the Performance panel\n */\n encryptReply: 'Encrypt reply',\n /**\n * @description Event category in the Performance panel for time spent to perform decryption\n */\n decrypt: 'Decrypt',\n /**\n * @description Text in Timeline UIUtils of the Performance panel\n */\n decryptReply: 'Decrypt reply',\n /**\n * @description Noun phrase meaning 'the browser was preparing the digest'.\n * Digest: https://developer.mozilla.org/en-US/docs/Glossary/Digest\n */\n digest: 'Digest',\n /**\n * @description Noun phrase meaning 'the browser was preparing the digest\n *reply'. Digest: https://developer.mozilla.org/en-US/docs/Glossary/Digest\n */\n digestReply: 'Digest reply',\n /**\n * @description The 'sign' stage of a web crypto event. Shown when displaying what the website was doing at a particular point in time.\n */\n sign: 'Sign',\n /**\n * @description Noun phrase for an event of the Web Crypto API. The event is recorded when the signing process is concluded.\n * Signature: https://developer.mozilla.org/en-US/docs/Glossary/Signature/Security\n */\n signReply: 'Sign reply',\n /**\n * @description Text in Timeline UIUtils of the Performance panel\n */\n verify: 'Verify',\n /**\n * @description Text in Timeline UIUtils of the Performance panel\n */\n verifyReply: 'Verify reply',\n /**\n * @description Text in Timeline UIUtils of the Performance panel\n */\n asyncTask: 'Async task',\n /**\n * @description Text in Timeline for Layout Shift records\n */\n layoutShift: 'Layout shift',\n /**\n * @description Text in Timeline for Layout Shift records\n */\n layoutShiftCluster: 'Layout shift cluster',\n /**\n * @description Text in Timeline for an Event Timing record\n */\n eventTiming: 'Event timing',\n /**\n * @description Event category in the Performance panel for JavaScript nodes in CPUProfile\n */\n jsFrame: 'JS frame',\n /**\n * @description Text in UIDevtools Utils of the Performance panel\n */\n rasterizing: 'Rasterizing',\n /**\n * @description Text in UIDevtools Utils of the Performance panel\n */\n drawing: 'Drawing',\n /**\n * @description Label for an event in the Performance panel indicating that a\n * callback function has been scheduled to run at a later time using the\n * postTask API.\n */\n schedulePostTaskCallback: 'Schedule postTask',\n /**\n * @description Label for an event in the Performance panel indicating that a\n * callback function that was scheduled to run using the postTask API was\n * fired (invoked).\n */\n runPostTaskCallback: 'Fire postTask',\n /**\n * @description Label for an event in the Performance panel indicating that a\n * callback function that was scheduled to run at a later time using the\n * postTask API was cancelled, so will no longer run.\n */\n abortPostTaskCallback: 'Cancel postTask',\n} as const;\n\nexport enum EventCategory {\n DRAWING = 'drawing',\n RASTERIZING = 'rasterizing',\n LAYOUT = 'layout',\n LOADING = 'loading',\n EXPERIENCE = 'experience',\n SCRIPTING = 'scripting',\n MESSAGING = 'messaging',\n RENDERING = 'rendering',\n PAINTING = 'painting',\n GPU = 'gpu',\n ASYNC = 'async',\n OTHER = 'other',\n IDLE = 'idle',\n}\n\nlet mainEventCategories: EventCategory[];\n\nconst str_ = i18n.i18n.registerUIStrings('models/trace/Styles.ts', UIStrings);\nconst i18nString = i18n.i18n.getLocalizedString.bind(undefined, str_);\n\nexport class TimelineRecordStyle {\n title: string;\n category: TimelineCategory;\n hidden: boolean;\n\n constructor(title: string, category: TimelineCategory, hidden: boolean|undefined = false) {\n this.title = title;\n this.category = category;\n this.hidden = hidden;\n }\n}\nexport class TimelineCategory {\n name: EventCategory;\n title: Platform.UIString.LocalizedString;\n visible: boolean;\n #hidden?: boolean;\n #cssVariable: `--app-color-${string}`;\n\n constructor(\n name: EventCategory, title: Platform.UIString.LocalizedString, visible: boolean,\n cssVariable: `--app-color-${string}`) {\n this.name = name;\n this.title = title;\n this.visible = visible;\n this.#cssVariable = cssVariable;\n this.hidden = false;\n }\n\n get hidden(): boolean {\n return Boolean(this.#hidden);\n }\n\n get cssVariable(): string {\n return this.#cssVariable;\n }\n\n getCSSValue(): string {\n return `var(${this.#cssVariable})`;\n }\n\n set hidden(hidden: boolean) {\n this.#hidden = hidden;\n }\n}\n\nexport type CategoryPalette = Record<EventCategory, TimelineCategory>;\n\ntype EventStylesMap = Partial<Record<Types.Events.Name, TimelineRecordStyle>>;\n\n/**\n * This object defines the styles for the categories used in the\n * timeline (loading, rendering, scripting, etc.).\n */\nlet categoryStyles: CategoryPalette|null;\n\n/**\n * This map defines the styles for events shown in the panel. This\n * includes its color (which on the event's category, the label it's\n * displayed with and flag to know weather it's visible in the flamechart\n * or not).\n * The thread appenders use this map to determine if an event should be\n * shown in the flame chart. If an event is not in the map, then it\n * won't be shown, but it also won't be shown if it's marked as \"hidden\"\n * in its styles.\n *\n * The map is also used in other places, like the event's details view.\n */\nlet eventStylesMap: EventStylesMap|null;\n\nexport function getEventStyle(eventName: Types.Events.Name): TimelineRecordStyle|undefined {\n return maybeInitSylesMap()[eventName];\n}\n\nexport function stringIsEventCategory(it: string): it is EventCategory {\n return (Object.values(EventCategory) as string[]).includes(it);\n}\n\nexport function getCategoryStyles(): CategoryPalette {\n if (categoryStyles) {\n return categoryStyles;\n }\n categoryStyles = {\n loading: new TimelineCategory(EventCategory.LOADING, i18nString(UIStrings.loading), true, '--app-color-loading'),\n experience: new TimelineCategory(\n EventCategory.EXPERIENCE, i18nString(UIStrings.experience), false, '--app-color-rendering'),\n messaging:\n new TimelineCategory(EventCategory.MESSAGING, i18nString(UIStrings.messaging), true, '--app-color-messaging'),\n scripting:\n new TimelineCategory(EventCategory.SCRIPTING, i18nString(UIStrings.scripting), true, '--app-color-scripting'),\n rendering:\n new TimelineCategory(EventCategory.RENDERING, i18nString(UIStrings.rendering), true, '--app-color-rendering'),\n painting:\n new TimelineCategory(EventCategory.PAINTING, i18nString(UIStrings.painting), true, '--app-color-painting'),\n gpu: new TimelineCategory(EventCategory.GPU, i18nString(UIStrings.gpu), false, '--app-color-painting'),\n async: new TimelineCategory(EventCategory.ASYNC, i18nString(UIStrings.async), false, '--app-color-async'),\n other: new TimelineCategory(EventCategory.OTHER, i18nString(UIStrings.system), false, '--app-color-system'),\n idle: new TimelineCategory(EventCategory.IDLE, i18nString(UIStrings.idle), false, '--app-color-idle'),\n layout: new TimelineCategory(EventCategory.LAYOUT, i18nString(UIStrings.layout), false, '--app-color-loading'),\n rasterizing: new TimelineCategory(\n EventCategory.RASTERIZING, i18nString(UIStrings.rasterizing), false, '--app-color-scripting'),\n drawing: new TimelineCategory(EventCategory.DRAWING, i18nString(UIStrings.drawing), false, '--app-color-rendering'),\n };\n return categoryStyles;\n}\n\nexport function maybeInitSylesMap(): EventStylesMap {\n if (eventStylesMap) {\n return eventStylesMap;\n }\n const defaultCategoryStyles = getCategoryStyles();\n\n eventStylesMap = {\n [Types.Events.Name.RUN_TASK]: new TimelineRecordStyle(i18nString(UIStrings.task), defaultCategoryStyles.other),\n\n [Types.Events.Name.PROFILE_CALL]:\n new TimelineRecordStyle(i18nString(UIStrings.jsFrame), defaultCategoryStyles.scripting),\n\n [Types.Events.Name.JS_SAMPLE]:\n new TimelineRecordStyle(Types.Events.Name.JS_SAMPLE, defaultCategoryStyles.scripting),\n\n [Types.Events.Name.PROGRAM]: new TimelineRecordStyle(i18nString(UIStrings.other), defaultCategoryStyles.other),\n\n [Types.Events.Name.START_PROFILING]:\n new TimelineRecordStyle(i18nString(UIStrings.profilingOverhead), defaultCategoryStyles.other),\n\n [Types.Events.Name.ANIMATION]:\n new TimelineRecordStyle(i18nString(UIStrings.animation), defaultCategoryStyles.rendering),\n\n [Types.Events.Name.EVENT_DISPATCH]:\n new TimelineRecordStyle(i18nString(UIStrings.event), defaultCategoryStyles.scripting),\n\n [Types.Events.Name.REQUEST_MAIN_THREAD_FRAME]: new TimelineRecordStyle(\n i18nString(UIStrings.requestMainThreadFrame),\n defaultCategoryStyles.rendering,\n true,\n ),\n\n [Types.Events.Name.BEGIN_FRAME]: new TimelineRecordStyle(\n i18nString(UIStrings.frameStart),\n defaultCategoryStyles.rendering,\n true,\n ),\n\n [Types.Events.Name.BEGIN_MAIN_THREAD_FRAME]: new TimelineRecordStyle(\n i18nString(UIStrings.frameStartMainThread),\n defaultCategoryStyles.rendering,\n true,\n ),\n\n [Types.Events.Name.DRAW_FRAME]: new TimelineRecordStyle(\n i18nString(UIStrings.drawFrame),\n defaultCategoryStyles.rendering,\n true,\n ),\n\n [Types.Events.Name.HIT_TEST]:\n new TimelineRecordStyle(i18nString(UIStrings.hitTest), defaultCategoryStyles.rendering),\n\n [Types.Events.Name.SCHEDULE_STYLE_RECALCULATION]: new TimelineRecordStyle(\n i18nString(UIStrings.scheduleStyleRecalculation),\n defaultCategoryStyles.rendering,\n ),\n\n [Types.Events.Name.RECALC_STYLE]:\n new TimelineRecordStyle(i18nString(UIStrings.recalculateStyle), defaultCategoryStyles.rendering),\n\n [Types.Events.Name.INVALIDATE_LAYOUT]: new TimelineRecordStyle(\n i18nString(UIStrings.invalidateLayout),\n defaultCategoryStyles.rendering,\n true,\n ),\n\n [Types.Events.Name.LAYERIZE]:\n new TimelineRecordStyle(i18nString(UIStrings.layerize), defaultCategoryStyles.rendering),\n\n [Types.Events.Name.LAYOUT]: new TimelineRecordStyle(i18nString(UIStrings.layout), defaultCategoryStyles.rendering),\n\n [Types.Events.Name.PAINT_SETUP]:\n new TimelineRecordStyle(i18nString(UIStrings.paintSetup), defaultCategoryStyles.painting),\n\n [Types.Events.Name.PAINT_IMAGE]: new TimelineRecordStyle(\n i18nString(UIStrings.paintImage),\n defaultCategoryStyles.painting,\n true,\n ),\n\n [Types.Events.Name.UPDATE_LAYER]: new TimelineRecordStyle(\n i18nString(UIStrings.updateLayer),\n defaultCategoryStyles.painting,\n true,\n ),\n\n [Types.Events.Name.UPDATE_LAYER_TREE]:\n new TimelineRecordStyle(i18nString(UIStrings.updateLayerTree), defaultCategoryStyles.rendering),\n\n [Types.Events.Name.PAINT]: new TimelineRecordStyle(i18nString(UIStrings.paint), defaultCategoryStyles.painting),\n\n [Types.Events.Name.PRE_PAINT]:\n new TimelineRecordStyle(i18nString(UIStrings.prePaint), defaultCategoryStyles.rendering),\n\n [Types.Events.Name.RASTER_TASK]:\n new TimelineRecordStyle(i18nString(UIStrings.rasterizePaint), defaultCategoryStyles.painting),\n\n [Types.Events.Name.SCROLL_LAYER]:\n new TimelineRecordStyle(i18nString(UIStrings.scroll), defaultCategoryStyles.rendering),\n\n [Types.Events.Name.COMMIT]: new TimelineRecordStyle(i18nString(UIStrings.commit), defaultCategoryStyles.painting),\n\n [Types.Events.Name.COMPOSITE_LAYERS]:\n new TimelineRecordStyle(i18nString(UIStrings.compositeLayers), defaultCategoryStyles.painting),\n\n [Types.Events.Name.COMPUTE_INTERSECTION]: new TimelineRecordStyle(\n i18nString(UIStrings.computeIntersections),\n defaultCategoryStyles.rendering,\n ),\n\n [Types.Events.Name.PARSE_HTML]:\n new TimelineRecordStyle(i18nString(UIStrings.parseHtml), defaultCategoryStyles.loading),\n\n [Types.Events.Name.PARSE_AUTHOR_STYLE_SHEET]:\n new TimelineRecordStyle(i18nString(UIStrings.parseStylesheet), defaultCategoryStyles.loading),\n\n [Types.Events.Name.TIMER_INSTALL]:\n new TimelineRecordStyle(i18nString(UIStrings.installTimer), defaultCategoryStyles.scripting),\n\n [Types.Events.Name.TIMER_REMOVE]:\n new TimelineRecordStyle(i18nString(UIStrings.removeTimer), defaultCategoryStyles.scripting),\n\n [Types.Events.Name.TIMER_FIRE]:\n new TimelineRecordStyle(i18nString(UIStrings.timerFired), defaultCategoryStyles.scripting),\n\n [Types.Events.Name.XHR_READY_STATE_CHANGED]: new TimelineRecordStyle(\n i18nString(UIStrings.xhrReadyStateChange),\n defaultCategoryStyles.scripting,\n ),\n\n [Types.Events.Name.XHR_LOAD]:\n new TimelineRecordStyle(i18nString(UIStrings.xhrLoad), defaultCategoryStyles.scripting),\n\n [Types.Events.Name.COMPILE]:\n new TimelineRecordStyle(i18nString(UIStrings.compileScript), defaultCategoryStyles.scripting),\n\n [Types.Events.Name.CACHE_SCRIPT]:\n new TimelineRecordStyle(i18nString(UIStrings.cacheScript), defaultCategoryStyles.scripting),\n\n [Types.Events.Name.COMPILE_CODE]:\n new TimelineRecordStyle(i18nString(UIStrings.compileCode), defaultCategoryStyles.scripting),\n\n [Types.Events.Name.OPTIMIZE_CODE]:\n new TimelineRecordStyle(i18nString(UIStrings.optimizeCode), defaultCategoryStyles.scripting),\n\n [Types.Events.Name.EVALUATE_SCRIPT]:\n new TimelineRecordStyle(i18nString(UIStrings.evaluateScript), defaultCategoryStyles.scripting),\n\n [Types.Events.Name.COMPILE_MODULE]:\n new TimelineRecordStyle(i18nString(UIStrings.compileModule), defaultCategoryStyles.scripting),\n\n [Types.Events.Name.CACHE_MODULE]:\n new TimelineRecordStyle(i18nString(UIStrings.cacheModule), defaultCategoryStyles.scripting),\n\n [Types.Events.Name.EVALUATE_MODULE]:\n new TimelineRecordStyle(i18nString(UIStrings.evaluateModule), defaultCategoryStyles.scripting),\n\n [Types.Events.Name.STREAMING_COMPILE_SCRIPT]:\n new TimelineRecordStyle(i18nString(UIStrings.streamingCompileTask), defaultCategoryStyles.other),\n\n [Types.Events.Name.STREAMING_COMPILE_SCRIPT_WAITING]:\n new TimelineRecordStyle(i18nString(UIStrings.waitingForNetwork), defaultCategoryStyles.idle),\n\n [Types.Events.Name.STREAMING_COMPILE_SCRIPT_PARSING]:\n new TimelineRecordStyle(i18nString(UIStrings.parseAndCompile), defaultCategoryStyles.scripting),\n\n [Types.Events.Name.BACKGROUND_DESERIALIZE]: new TimelineRecordStyle(\n i18nString(UIStrings.deserializeCodeCache),\n defaultCategoryStyles.scripting,\n ),\n\n [Types.Events.Name.FINALIZE_DESERIALIZATION]:\n new TimelineRecordStyle(i18nString(UIStrings.profilingOverhead), defaultCategoryStyles.other),\n\n [Types.Events.Name.WASM_STREAM_FROM_RESPONSE_CALLBACK]: new TimelineRecordStyle(\n i18nString(UIStrings.streamingWasmResponse),\n defaultCategoryStyles.scripting,\n ),\n\n [Types.Events.Name.WASM_COMPILED_MODULE]:\n new TimelineRecordStyle(i18nString(UIStrings.compiledWasmModule), defaultCategoryStyles.scripting),\n\n [Types.Events.Name.WASM_CACHED_MODULE]:\n new TimelineRecordStyle(i18nString(UIStrings.cachedWasmModule), defaultCategoryStyles.scripting),\n\n [Types.Events.Name.WASM_MODULE_CACHE_HIT]:\n new TimelineRecordStyle(i18nString(UIStrings.wasmModuleCacheHit), defaultCategoryStyles.scripting),\n\n [Types.Events.Name.WASM_MODULE_CACHE_INVALID]: new TimelineRecordStyle(\n i18nString(UIStrings.wasmModuleCacheInvalid),\n defaultCategoryStyles.scripting,\n ),\n\n [Types.Events.Name.FRAME_STARTED_LOADING]: new TimelineRecordStyle(\n i18nString(UIStrings.frameStartedLoading),\n defaultCategoryStyles.loading,\n true,\n ),\n\n [Types.Events.Name.MARK_LOAD]: new TimelineRecordStyle(\n i18nString(UIStrings.onloadEvent),\n defaultCategoryStyles.scripting,\n true,\n ),\n\n [Types.Events.Name.MARK_DOM_CONTENT]: new TimelineRecordStyle(\n i18nString(UIStrings.domcontentloadedEvent),\n defaultCategoryStyles.scripting,\n true,\n ),\n\n [Types.Events.Name.MARK_FIRST_PAINT]: new TimelineRecordStyle(\n i18nString(UIStrings.firstPaint),\n defaultCategoryStyles.painting,\n true,\n ),\n\n [Types.Events.Name.MARK_FCP]: new TimelineRecordStyle(\n i18nString(UIStrings.firstContentfulPaint),\n defaultCategoryStyles.rendering,\n true,\n ),\n\n [Types.Events.Name.MARK_LCP_CANDIDATE]: new TimelineRecordStyle(\n i18nString(UIStrings.largestContentfulPaint),\n defaultCategoryStyles.rendering,\n true,\n ),\n [Types.Events.Name.MARK_LCP_CANDIDATE_FOR_SOFT_NAVIGATION]: new TimelineRecordStyle(\n i18nString(UIStrings.softLargestContentfulPaint),\n defaultCategoryStyles.rendering,\n true,\n ),\n\n [Types.Events.Name.TIME_STAMP]:\n new TimelineRecordStyle(i18nString(UIStrings.timestamp), defaultCategoryStyles.scripting),\n\n [Types.Events.Name.CONSOLE_TIME]:\n new TimelineRecordStyle(i18nString(UIStrings.consoleTime), defaultCategoryStyles.scripting),\n\n [Types.Events.Name.USER_TIMING]:\n new TimelineRecordStyle(i18nString(UIStrings.userTiming), defaultCategoryStyles.scripting),\n\n [Types.Events.Name.RESOURCE_WILL_SEND_REQUEST]:\n new TimelineRecordStyle(i18nString(UIStrings.willSendRequest), defaultCategoryStyles.loading),\n\n [Types.Events.Name.RESOURCE_SEND_REQUEST]:\n new TimelineRecordStyle(i18nString(UIStrings.sendRequest), defaultCategoryStyles.loading),\n\n [Types.Events.Name.RESOURCE_RECEIVE_RESPONSE]:\n new TimelineRecordStyle(i18nString(UIStrings.receiveResponse), defaultCategoryStyles.loading),\n\n [Types.Events.Name.RESOURCE_FINISH]:\n new TimelineRecordStyle(i18nString(UIStrings.finishLoading), defaultCategoryStyles.loading),\n\n [Types.Events.Name.RESOURCE_RECEIVE_DATA]:\n new TimelineRecordStyle(i18nString(UIStrings.receiveData), defaultCategoryStyles.loading),\n\n [Types.Events.Name.RUN_MICROTASKS]:\n new TimelineRecordStyle(i18nString(UIStrings.runMicrotasks), defaultCategoryStyles.scripting),\n\n [Types.Events.Name.FUNCTION_CALL]:\n new TimelineRecordStyle(i18nString(UIStrings.functionCall), defaultCategoryStyles.scripting),\n\n [Types.Events.Name.GC]: new TimelineRecordStyle(i18nString(UIStrings.gcEvent), defaultCategoryStyles.scripting),\n\n [Types.Events.Name.MAJOR_GC]:\n new TimelineRecordStyle(i18nString(UIStrings.majorGc), defaultCategoryStyles.scripting),\n\n [Types.Events.Name.MINOR_GC]:\n new TimelineRecordStyle(i18nString(UIStrings.minorGc), defaultCategoryStyles.scripting),\n\n [Types.Events.Name.CPPGC_SWEEP]:\n new TimelineRecordStyle(i18nString(UIStrings.cppGc), defaultCategoryStyles.scripting),\n\n [Types.Events.Name.REQUEST_ANIMATION_FRAME]: new TimelineRecordStyle(\n i18nString(UIStrings.requestAnimationFrame),\n defaultCategoryStyles.scripting,\n ),\n\n [Types.Events.Name.CANCEL_ANIMATION_FRAME]: new TimelineRecordStyle(\n i18nString(UIStrings.cancelAnimationFrame),\n defaultCategoryStyles.scripting,\n ),\n\n [Types.Events.Name.FIRE_ANIMATION_FRAME]: new TimelineRecordStyle(\n i18nString(UIStrings.animationFrameFired),\n defaultCategoryStyles.scripting,\n ),\n\n [Types.Events.Name.REQUEST_IDLE_CALLBACK]: new TimelineRecordStyle(\n i18nString(UIStrings.requestIdleCallback),\n defaultCategoryStyles.scripting,\n ),\n\n [Types.Events.Name.CANCEL_IDLE_CALLBACK]:\n new TimelineRecordStyle(i18nString(UIStrings.cancelIdleCallback), defaultCategoryStyles.scripting),\n\n [Types.Events.Name.FIRE_IDLE_CALLBACK]:\n new TimelineRecordStyle(i18nString(UIStrings.fireIdleCallback), defaultCategoryStyles.scripting),\n\n [Types.Events.Name.WEB_SOCKET_CREATE]:\n new TimelineRecordStyle(i18nString(UIStrings.createWebsocket), defaultCategoryStyles.scripting),\n\n [Types.Events.Name.WEB_SOCKET_SEND_HANDSHAKE_REQUEST]: new TimelineRecordStyle(\n i18nString(UIStrings.sendWebsocketHandshake),\n defaultCategoryStyles.scripting,\n ),\n\n [Types.Events.Name.WEB_SOCKET_RECEIVE_HANDSHAKE_REQUEST]: new TimelineRecordStyle(\n i18nString(UIStrings.receiveWebsocketHandshake),\n defaultCategoryStyles.scripting,\n ),\n\n [Types.Events.Name.WEB_SOCKET_DESTROY]:\n new TimelineRecordStyle(i18nString(UIStrings.destroyWebsocket), defaultCategoryStyles.scripting),\n [Types.Events.Name.WEB_SOCKET_SEND]: new TimelineRecordStyle(\n i18nString(UIStrings.wsMessageSent),\n defaultCategoryStyles.scripting,\n ),\n [Types.Events.Name.WEB_SOCKET_RECEIVE]: new TimelineRecordStyle(\n i18nString(UIStrings.wsMessageReceived),\n defaultCategoryStyles.scripting,\n ),\n\n [Types.Events.Name.EMBEDDER_CALLBACK]:\n new TimelineRecordStyle(i18nString(UIStrings.embedderCallback), defaultCategoryStyles.scripting),\n\n [Types.Events.Name.DECODE_IMAGE]:\n new TimelineRecordStyle(i18nString(UIStrings.imageDecode), defaultCategoryStyles.painting),\n\n [Types.Events.Name.GPU_TASK]: new TimelineRecordStyle(i18nString(UIStrings.gpu), defaultCategoryStyles.gpu),\n\n [Types.Events.Name.GC_COLLECT_GARBARGE]:\n new TimelineRecordStyle(i18nString(UIStrings.domGc), defaultCategoryStyles.scripting),\n\n [Types.Events.Name.CRYPTO_DO_ENCRYPT]:\n new TimelineRecordStyle(i18nString(UIStrings.encrypt), defaultCategoryStyles.scripting),\n\n [Types.Events.Name.CRYPTO_DO_ENCRYPT_REPLY]:\n new TimelineRecordStyle(i18nString(UIStrings.encryptReply), defaultCategoryStyles.scripting),\n\n [Types.Events.Name.CRYPTO_DO_DECRYPT]:\n new TimelineRecordStyle(i18nString(UIStrings.decrypt), defaultCategoryStyles.scripting),\n\n [Types.Events.Name.CRYPTO_DO_DECRYPT_REPLY]:\n new TimelineRecordStyle(i18nString(UIStrings.decryptReply), defaultCategoryStyles.scripting),\n\n [Types.Events.Name.CRYPTO_DO_DIGEST]:\n new TimelineRecordStyle(i18nString(UIStrings.digest), defaultCategoryStyles.scripting),\n\n [Types.Events.Name.CRYPTO_DO_DIGEST_REPLY]:\n new TimelineRecordStyle(i18nString(UIStrings.digestReply), defaultCategoryStyles.scripting),\n\n [Types.Events.Name.CRYPTO_DO_SIGN]:\n new TimelineRecordStyle(i18nString(UIStrings.sign), defaultCategoryStyles.scripting),\n\n [Types.Events.Name.CRYPTO_DO_SIGN_REPLY]:\n new TimelineRecordStyle(i18nString(UIStrings.signReply), defaultCategoryStyles.scripting),\n\n [Types.Events.Name.CRYPTO_DO_VERIFY]:\n new TimelineRecordStyle(i18nString(UIStrings.verify), defaultCategoryStyles.scripting),\n\n [Types.Events.Name.CRYPTO_DO_VERIFY_REPLY]:\n new TimelineRecordStyle(i18nString(UIStrings.verifyReply), defaultCategoryStyles.scripting),\n\n [Types.Events.Name.ASYNC_TASK]:\n new TimelineRecordStyle(i18nString(UIStrings.asyncTask), defaultCategoryStyles.async),\n\n [Types.Events.Name.LAYOUT_SHIFT]: new TimelineRecordStyle(\n i18nString(UIStrings.layoutShift), defaultCategoryStyles.experience,\n /* Mark LayoutShifts as hidden; in the timeline we render\n * SyntheticLayoutShifts so those are the ones visible to the user */\n true),\n\n [Types.Events.Name.SYNTHETIC_LAYOUT_SHIFT]:\n new TimelineRecordStyle(i18nString(UIStrings.layoutShift), defaultCategoryStyles.experience),\n\n [Types.Events.Name.SYNTHETIC_LAYOUT_SHIFT_CLUSTER]:\n new TimelineRecordStyle(i18nString(UIStrings.layoutShiftCluster), defaultCategoryStyles.experience),\n\n [Types.Events.Name.EVENT_TIMING]:\n new TimelineRecordStyle(i18nString(UIStrings.eventTiming), defaultCategoryStyles.experience),\n\n [Types.Events.Name.HANDLE_POST_MESSAGE]:\n new TimelineRecordStyle(i18nString(UIStrings.onMessage), defaultCategoryStyles.messaging),\n\n [Types.Events.Name.SCHEDULE_POST_MESSAGE]:\n new TimelineRecordStyle(i18nString(UIStrings.schedulePostMessage), defaultCategoryStyles.messaging),\n\n [Types.Events.Name.SCHEDULE_POST_TASK_CALLBACK]:\n new TimelineRecordStyle(i18nString(UIStrings.schedulePostTaskCallback), defaultCategoryStyles.scripting),\n\n [Types.Events.Name.RUN_POST_TASK_CALLBACK]:\n new TimelineRecordStyle(i18nString(UIStrings.runPostTaskCallback), defaultCategoryStyles.scripting),\n\n [Types.Events.Name.ABORT_POST_TASK_CALLBACK]:\n new TimelineRecordStyle(i18nString(UIStrings.abortPostTaskCallback), defaultCategoryStyles.scripting),\n [Types.Events.Name.V8_CONSOLE_RUN_TASK]:\n new TimelineRecordStyle(i18nString(UIStrings.consoleTaskRun), defaultCategoryStyles.scripting),\n };\n\n // TODO(crbug.com/410884528): remove assertion after deduped eventStylesMap for VISIBLE_TRACE_EVENT_TYPES.\n const visibleEventStyles =\n Object.entries(eventStylesMap).filter(([, style]) => style.hidden === false).map(([\n key,\n ]) => key);\n const visibleTraceEventsComplete = visibleEventStyles.every(eventType => {\n return Helpers.Trace.VISIBLE_TRACE_EVENT_TYPES.has(eventType as Types.Events.Name);\n });\n\n const eventStylesMapKeys = Object.keys(eventStylesMap) as Types.Events.Name[];\n const eventStylesComplete = Array.from(Helpers.Trace.VISIBLE_TRACE_EVENT_TYPES).every(eventType => {\n return eventStylesMapKeys.includes(eventType);\n });\n\n if (!visibleTraceEventsComplete || !eventStylesComplete) {\n throw new Error('eventStylesMap and VISIBLE_TRACE_EVENT_TYPES are out of sync!');\n }\n return eventStylesMap;\n}\n\nexport function setEventStylesMap(eventStyles: EventStylesMap): void {\n eventStylesMap = eventStyles;\n}\n\nexport function setCategories(cats: CategoryPalette): void {\n categoryStyles = cats;\n}\n\nexport function visibleTypes(): string[] {\n const eventStyles = maybeInitSylesMap();\n const result = [];\n for (const name in eventStyles) {\n // Typescript cannot infer that `name` is a key of eventStyles\n const nameAsKey = name as keyof typeof eventStyles;\n if (!eventStyles[nameAsKey]?.hidden) {\n result.push(name);\n }\n }\n return result;\n}\n\nexport function getTimelineMainEventCategories(): EventCategory[] {\n if (mainEventCategories) {\n return mainEventCategories;\n }\n mainEventCategories = [\n EventCategory.IDLE,\n EventCategory.LOADING,\n EventCategory.PAINTING,\n EventCategory.RENDERING,\n EventCategory.SCRIPTING,\n EventCategory.OTHER,\n ];\n return mainEventCategories;\n}\n\nexport function setTimelineMainEventCategories(categories: EventCategory[]): void {\n mainEventCategories = categories;\n}\n\nexport function markerDetailsForEvent(event: Types.Events.Event): {\n color: string,\n title: string,\n} {\n let title = '';\n let color = 'var(--color-text-primary)';\n if (Types.Events.isFirstContentfulPaint(event)) {\n color = 'var(--sys-color-green-bright)';\n title = Handlers.ModelHandlers.PageLoadMetrics.MetricName.FCP;\n }\n if (Types.Events.isAnyLargestContentfulPaintCandidate(event)) {\n color = 'var(--sys-color-green)';\n title = Types.Events.isSoftLargestContentfulPaintCandidate(event) ?\n Handlers.ModelHandlers.PageLoadMetrics.MetricName.SOFT_LCP :\n Handlers.ModelHandlers.PageLoadMetrics.MetricName.LCP;\n }\n if (Types.Events.isNavigationStart(event) || Types.Events.isSoftNavigationStart(event)) {\n color = 'var(--color-text-primary)';\n title = Types.Events.isSoftNavigationStart(event) ? Handlers.ModelHandlers.PageLoadMetrics.MetricName.SOFT_NAV :\n Handlers.ModelHandlers.PageLoadMetrics.MetricName.NAV;\n }\n if (Types.Events.isMarkDOMContent(event)) {\n color = 'var(--color-text-disabled)';\n title = Handlers.ModelHandlers.PageLoadMetrics.MetricName.DCL;\n }\n if (Types.Events.isMarkLoad(event)) {\n color = 'var(--color-text-disabled)';\n title = Handlers.ModelHandlers.PageLoadMetrics.MetricName.L;\n }\n return {color, title};\n}\n"]}
|
|
@@ -8,13 +8,13 @@
|
|
|
8
8
|
"forceConsistentCasingInFileNames": true,
|
|
9
9
|
"inlineSources": true,
|
|
10
10
|
"lib": [
|
|
11
|
+
"dom",
|
|
12
|
+
"dom.iterable",
|
|
11
13
|
"ES2023",
|
|
12
14
|
"ES2024.Promise",
|
|
13
15
|
"ESNext.Iterator",
|
|
14
16
|
"ESNext.Collection",
|
|
15
|
-
"ESNext.Array"
|
|
16
|
-
"dom",
|
|
17
|
-
"dom.iterable"
|
|
17
|
+
"ESNext.Array"
|
|
18
18
|
],
|
|
19
19
|
"module": "esnext",
|
|
20
20
|
"noEmitOnError": true,
|
|
@@ -31,6 +31,7 @@
|
|
|
31
31
|
"target": "ES2023",
|
|
32
32
|
"tsBuildInfoFile": "devtools_entrypoint-bundle-typescript-tsconfig.json.tsbuildinfo",
|
|
33
33
|
"typeRoots": [],
|
|
34
|
+
"types": [],
|
|
34
35
|
"useUnknownInCatchVariables": false
|
|
35
36
|
},
|
|
36
37
|
"files": [
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type * as Handlers from '../handlers/handlers.js';
|
|
2
|
+
import type * as Types from '../types/types.js';
|
|
3
|
+
/**
|
|
4
|
+
* There are bugs in the backend tracing that means that network requests are
|
|
5
|
+
* often incorrectly tied to an initiator. This function exists as a utility to
|
|
6
|
+
* look up an event's initiator regardless of the type of event, but also to
|
|
7
|
+
* provide a post-parsing fix for network initiators.
|
|
8
|
+
* The TL;DR is that images injected by a script will incorrectly have their
|
|
9
|
+
* initiator set to the root document. To fix this, we look at the stack trace
|
|
10
|
+
* when the request was sent, and use that.
|
|
11
|
+
*/
|
|
12
|
+
export declare function getNetworkInitiator(data: Handlers.Types.HandlerData, event: Types.Events.SyntheticNetworkRequest): Types.Events.SyntheticNetworkRequest | undefined;
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { get as getStackTrace } from './StackTraceForEvent.js';
|
|
2
|
+
/**
|
|
3
|
+
* There are bugs in the backend tracing that means that network requests are
|
|
4
|
+
* often incorrectly tied to an initiator. This function exists as a utility to
|
|
5
|
+
* look up an event's initiator regardless of the type of event, but also to
|
|
6
|
+
* provide a post-parsing fix for network initiators.
|
|
7
|
+
* The TL;DR is that images injected by a script will incorrectly have their
|
|
8
|
+
* initiator set to the root document. To fix this, we look at the stack trace
|
|
9
|
+
* when the request was sent, and use that.
|
|
10
|
+
*/
|
|
11
|
+
export function getNetworkInitiator(data, event) {
|
|
12
|
+
const networkHandlerInitiator = data.NetworkRequests.incompleteInitiator.get(event);
|
|
13
|
+
if (networkHandlerInitiator?.args.data.mimeType === 'text/css') {
|
|
14
|
+
// The bugs in tracing & initiators apply mostly to scripts; we have not
|
|
15
|
+
// seen a case where the trace events identify a CSS stylesheet as the
|
|
16
|
+
// initiator that is incorrect. Therefore, if a stylesheet is identified as
|
|
17
|
+
// the initiator, we trust that it is accurate and can exit early.
|
|
18
|
+
return networkHandlerInitiator;
|
|
19
|
+
}
|
|
20
|
+
// For network requests, it is more reliable to calculate the initiator via
|
|
21
|
+
// the stack trace if we have one.
|
|
22
|
+
// We have to use the raw source event (`ResourceSendRequest`) as that is
|
|
23
|
+
// the event with the `sampleStackId` property which is required to
|
|
24
|
+
// calculate this stacktrace correctly.
|
|
25
|
+
const stack = getStackTrace(event.rawSourceEvent, data);
|
|
26
|
+
// If the resource was injected by a script, it will have a parent call
|
|
27
|
+
// frame that points to the script. Otherwise, there is no parent and
|
|
28
|
+
// therefore we fallthrough to looking at the initiator directly on the
|
|
29
|
+
// network request.
|
|
30
|
+
const initiatorCallFrame = stack?.parent?.callFrames.at(0);
|
|
31
|
+
if (!initiatorCallFrame) {
|
|
32
|
+
return networkHandlerInitiator;
|
|
33
|
+
}
|
|
34
|
+
// Find all the requests for the URL we are searching for. Most of the time
|
|
35
|
+
// there is only 1, but there can be multiple requests for the same URL. The
|
|
36
|
+
// filtering by the timestamp ensures that we can never pick an initiator
|
|
37
|
+
// that happened after the initiated event.
|
|
38
|
+
const matchingRequestIds = data.NetworkRequests.requestIdsByURL.get(initiatorCallFrame.url) ?? [];
|
|
39
|
+
const matchingRequests = matchingRequestIds.map(id => data.NetworkRequests.byId.get(id))
|
|
40
|
+
.filter(req => req !== undefined)
|
|
41
|
+
.filter(req => req.ts < event.ts);
|
|
42
|
+
// Now we have filtered and have a list of requests that are before the
|
|
43
|
+
// event, we take the last one - the one closest to the initiated event.
|
|
44
|
+
// In the case that there are >1 requests, this is an educated guess.
|
|
45
|
+
return matchingRequests.at(-1);
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=Initiators.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Initiators.js","sourceRoot":"","sources":["../../../../../../../front_end/models/trace/extras/Initiators.ts"],"names":[],"mappings":"AAMA,OAAO,EAAC,GAAG,IAAI,aAAa,EAAC,MAAM,yBAAyB,CAAC;AAE7D;;;;;;;;GAQG;AACH,MAAM,UAAU,mBAAmB,CAAC,IAAgC,EAAE,KAA2C;IAE/G,MAAM,uBAAuB,GAAG,IAAI,CAAC,eAAe,CAAC,mBAAmB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACpF,IAAI,uBAAuB,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC;QAC/D,wEAAwE;QACxE,sEAAsE;QACtE,2EAA2E;QAC3E,kEAAkE;QAClE,OAAO,uBAAuB,CAAC;IACjC,CAAC;IAED,2EAA2E;IAC3E,kCAAkC;IAElC,yEAAyE;IACzE,mEAAmE;IACnE,uCAAuC;IACvC,MAAM,KAAK,GAAG,aAAa,CAAC,KAAK,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;IAExD,uEAAuE;IACvE,qEAAqE;IACrE,uEAAuE;IACvE,mBAAmB;IACnB,MAAM,kBAAkB,GAAG,KAAK,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC3D,IAAI,CAAC,kBAAkB,EAAE,CAAC;QACxB,OAAO,uBAAuB,CAAC;IACjC,CAAC;IAED,2EAA2E;IAC3E,4EAA4E;IAC5E,yEAAyE;IACzE,2CAA2C;IAC3C,MAAM,kBAAkB,GAAG,IAAI,CAAC,eAAe,CAAC,eAAe,CAAC,GAAG,CAAC,kBAAkB,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;IAClG,MAAM,gBAAgB,GAAG,kBAAkB,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;SAC1D,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,SAAS,CAAC;SAChC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC;IAE/D,uEAAuE;IACvE,wEAAwE;IACxE,qEAAqE;IACrE,OAAO,gBAAgB,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AACjC,CAAC","sourcesContent":["// Copyright 2026 The Chromium Authors\n// Use of this source code is governed by a BSD-style license that can be\n// found in the LICENSE file.\nimport type * as Handlers from '../handlers/handlers.js';\nimport type * as Types from '../types/types.js';\n\nimport {get as getStackTrace} from './StackTraceForEvent.js';\n\n/**\n * There are bugs in the backend tracing that means that network requests are\n * often incorrectly tied to an initiator. This function exists as a utility to\n * look up an event's initiator regardless of the type of event, but also to\n * provide a post-parsing fix for network initiators.\n * The TL;DR is that images injected by a script will incorrectly have their\n * initiator set to the root document. To fix this, we look at the stack trace\n * when the request was sent, and use that.\n */\nexport function getNetworkInitiator(data: Handlers.Types.HandlerData, event: Types.Events.SyntheticNetworkRequest):\n Types.Events.SyntheticNetworkRequest|undefined {\n const networkHandlerInitiator = data.NetworkRequests.incompleteInitiator.get(event);\n if (networkHandlerInitiator?.args.data.mimeType === 'text/css') {\n // The bugs in tracing & initiators apply mostly to scripts; we have not\n // seen a case where the trace events identify a CSS stylesheet as the\n // initiator that is incorrect. Therefore, if a stylesheet is identified as\n // the initiator, we trust that it is accurate and can exit early.\n return networkHandlerInitiator;\n }\n\n // For network requests, it is more reliable to calculate the initiator via\n // the stack trace if we have one.\n\n // We have to use the raw source event (`ResourceSendRequest`) as that is\n // the event with the `sampleStackId` property which is required to\n // calculate this stacktrace correctly.\n const stack = getStackTrace(event.rawSourceEvent, data);\n\n // If the resource was injected by a script, it will have a parent call\n // frame that points to the script. Otherwise, there is no parent and\n // therefore we fallthrough to looking at the initiator directly on the\n // network request.\n const initiatorCallFrame = stack?.parent?.callFrames.at(0);\n if (!initiatorCallFrame) {\n return networkHandlerInitiator;\n }\n\n // Find all the requests for the URL we are searching for. Most of the time\n // there is only 1, but there can be multiple requests for the same URL. The\n // filtering by the timestamp ensures that we can never pick an initiator\n // that happened after the initiated event.\n const matchingRequestIds = data.NetworkRequests.requestIdsByURL.get(initiatorCallFrame.url) ?? [];\n const matchingRequests = matchingRequestIds.map(id => data.NetworkRequests.byId.get(id))\n .filter(req => req !== undefined)\n .filter(req => req.ts < event.ts);\n\n // Now we have filtered and have a list of requests that are before the\n // event, we take the last one - the one closest to the initiated event.\n // In the case that there are >1 requests, this is an educated guess.\n return matchingRequests.at(-1);\n}\n"]}
|
|
@@ -326,6 +326,7 @@ export class BottomUpRootNode extends Node {
|
|
|
326
326
|
const root = this;
|
|
327
327
|
const startTime = this.startTime;
|
|
328
328
|
const endTime = this.endTime;
|
|
329
|
+
const idStack = [];
|
|
329
330
|
const nodeById = new Map();
|
|
330
331
|
const selfTimeStack = [endTime - startTime];
|
|
331
332
|
const firstNodeStack = [];
|
|
@@ -383,6 +384,11 @@ export class BottomUpRootNode extends Node {
|
|
|
383
384
|
if (forceGroupIdCallback && eventGroupIdCallback) {
|
|
384
385
|
id = `${id}-${eventGroupIdCallback(e)}`;
|
|
385
386
|
}
|
|
387
|
+
idStack.push(id);
|
|
388
|
+
// For an event 'X' that contains another event 'X' (resolving to the same node
|
|
389
|
+
// id), we need to measure `totalTime` from the start of the outermost 'X' to
|
|
390
|
+
// its corresponding end. This logic ensures we don't double-count the duration
|
|
391
|
+
// of the inner event.
|
|
386
392
|
const noNodeOnStack = !totalTimeById.has(id);
|
|
387
393
|
if (noNodeOnStack) {
|
|
388
394
|
totalTimeById.set(id, duration);
|
|
@@ -390,9 +396,9 @@ export class BottomUpRootNode extends Node {
|
|
|
390
396
|
firstNodeStack.push(noNodeOnStack);
|
|
391
397
|
}
|
|
392
398
|
function onEndEvent(event) {
|
|
393
|
-
|
|
394
|
-
if (
|
|
395
|
-
|
|
399
|
+
const id = idStack.pop();
|
|
400
|
+
if (!id) {
|
|
401
|
+
return;
|
|
396
402
|
}
|
|
397
403
|
let node = nodeById.get(id);
|
|
398
404
|
if (!node) {
|
|
@@ -407,7 +413,9 @@ export class BottomUpRootNode extends Node {
|
|
|
407
413
|
node.totalTime += totalTimeById.get(id) || 0;
|
|
408
414
|
totalTimeById.delete(id);
|
|
409
415
|
}
|
|
410
|
-
|
|
416
|
+
// An item on this stack means that this current node has a caller. Therefore,
|
|
417
|
+
// in a bottom-up view it has children.
|
|
418
|
+
if (idStack.length > 0) {
|
|
411
419
|
node.setHasChildren(true);
|
|
412
420
|
}
|
|
413
421
|
}
|
|
@@ -580,7 +588,7 @@ export function generateEventID(event) {
|
|
|
580
588
|
SamplesIntegrator.nativeGroup(event.callFrame.functionName) :
|
|
581
589
|
event.callFrame.functionName;
|
|
582
590
|
const location = event.callFrame.scriptId || event.callFrame.url || '';
|
|
583
|
-
return `f:${name}@${location}`;
|
|
591
|
+
return `f:${name}@${location}:${event.callFrame.lineNumber}:${event.callFrame.columnNumber}`;
|
|
584
592
|
}
|
|
585
593
|
if (Types.Events.isConsoleTimeStamp(event) && event.args.data) {
|
|
586
594
|
return `${event.name}:${event.args.data.name}`;
|