chrome-devtools-frontend 1.0.1376716 → 1.0.1380117
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/config/gni/devtools_grd_files.gni +15 -7
- package/config/gni/devtools_image_files.gni +2 -0
- package/front_end/Images/src/animation.svg +3 -0
- package/front_end/Images/src/brush-2.svg +3 -0
- package/front_end/core/common/SettingRegistration.ts +1 -1
- package/front_end/core/host/AidaClient.ts +1 -0
- package/front_end/core/host/InspectorFrontendHost.ts +4 -0
- package/front_end/core/i18n/ByteUtilities.test.ts +34 -0
- package/front_end/core/i18n/ByteUtilities.ts +65 -0
- package/front_end/core/i18n/NumberFormatter.ts +75 -0
- package/front_end/core/i18n/i18n.ts +4 -0
- package/front_end/core/i18n/time-utilities.test.ts +20 -2
- package/front_end/core/i18n/time-utilities.ts +125 -86
- package/front_end/core/platform/NumberUtilities.test.ts +3 -26
- package/front_end/core/platform/NumberUtilities.ts +0 -20
- package/front_end/core/root/Runtime.ts +6 -3
- package/front_end/core/sdk/CPUThrottlingManager.ts +4 -0
- package/front_end/core/sdk/CSSContainerQuery.test.ts +10 -16
- package/front_end/core/sdk/CSSContainerQuery.ts +3 -15
- package/front_end/core/sdk/CSSMatchedStyles.test.ts +4 -0
- package/front_end/core/sdk/CSSMatchedStyles.ts +5 -5
- package/front_end/core/sdk/CSSModel.ts +18 -0
- package/front_end/core/sdk/CSSPropertyParser.test.ts +16 -1
- package/front_end/core/sdk/CSSPropertyParser.ts +2 -2
- package/front_end/core/sdk/sdk-meta.ts +8 -0
- package/front_end/entrypoints/heap_snapshot_worker/HeapSnapshot.ts +3 -3
- package/front_end/generated/ARIAProperties.js +4 -0
- package/front_end/generated/InspectorBackendCommands.js +8 -6
- package/front_end/generated/SupportedCSSProperties.js +17 -4
- package/front_end/generated/protocol-mapping.d.ts +15 -1
- package/front_end/generated/protocol-proxy-api.d.ts +14 -1
- package/front_end/generated/protocol.ts +26 -2
- package/front_end/models/extensions/ExtensionAPI.ts +9 -1
- package/front_end/models/heap_snapshot_model/HeapSnapshotModel.ts +2 -0
- package/front_end/models/javascript_metadata/NativeFunctions.js +8 -21
- package/front_end/models/live-metrics/web-vitals-injected/{rollup.config.js → rollup.config.mjs} +1 -1
- package/front_end/models/persistence/EditFileSystemView.ts +19 -9
- package/front_end/models/persistence/WorkspaceSettingsTab.ts +50 -54
- package/front_end/models/persistence/editFileSystemView.css +35 -15
- package/front_end/models/persistence/workspaceSettingsTab.css +21 -87
- package/front_end/models/timeline_model/timeline_model.ts +0 -6
- package/front_end/models/trace/Processor.test.ts +18 -17
- package/front_end/models/trace/Processor.ts +10 -14
- package/front_end/models/trace/README.md +0 -1
- package/front_end/models/{timeline_model → trace/extras}/TimelineJSProfile.ts +19 -29
- package/front_end/models/{timeline_model/TimelineModelFilter.test.ts → trace/extras/TraceFilter.test.ts} +15 -17
- package/front_end/models/trace/extras/TraceFilter.ts +62 -0
- package/front_end/models/{timeline_model/TimelineProfileTree.test.ts → trace/extras/TraceTree.test.ts} +44 -43
- package/front_end/models/{timeline_model/TimelineProfileTree.ts → trace/extras/TraceTree.ts} +65 -59
- package/front_end/models/trace/extras/extras.ts +3 -0
- package/front_end/models/trace/handlers/AnimationHandler.ts +0 -8
- package/front_end/models/trace/handlers/ExtensionTraceDataHandler.ts +1 -11
- package/front_end/models/trace/handlers/FramesHandler.test.ts +1 -6
- package/front_end/models/trace/handlers/FramesHandler.ts +1 -14
- package/front_end/models/trace/handlers/GPUHandler.test.ts +0 -2
- package/front_end/models/trace/handlers/GPUHandler.ts +1 -25
- package/front_end/models/trace/handlers/ImagePaintingHandler.ts +3 -0
- package/front_end/models/trace/handlers/InitiatorsHandler.test.ts +0 -1
- package/front_end/models/trace/handlers/InitiatorsHandler.ts +0 -20
- package/front_end/models/trace/handlers/InvalidationsHandler.test.ts +0 -1
- package/front_end/models/trace/handlers/InvalidationsHandler.ts +0 -18
- package/front_end/models/trace/handlers/LargestImagePaintHandler.test.ts +2 -2
- package/front_end/models/trace/handlers/LargestImagePaintHandler.ts +63 -3
- package/front_end/models/trace/handlers/LargestTextPaintHandler.ts +3 -0
- package/front_end/models/trace/handlers/LayerTreeHandler.test.ts +0 -2
- package/front_end/models/trace/handlers/LayerTreeHandler.ts +1 -18
- package/front_end/models/trace/handlers/LayoutShiftsHandler.test.ts +0 -3
- package/front_end/models/trace/handlers/LayoutShiftsHandler.ts +1 -20
- package/front_end/models/trace/handlers/MemoryHandler.test.ts +0 -1
- package/front_end/models/trace/handlers/MemoryHandler.ts +3 -0
- package/front_end/models/trace/handlers/MetaHandler.test.ts +1 -32
- package/front_end/models/trace/handlers/MetaHandler.ts +2 -30
- package/front_end/models/trace/handlers/NetworkRequestsHandler.test.ts +0 -26
- package/front_end/models/trace/handlers/NetworkRequestsHandler.ts +4 -23
- package/front_end/models/trace/handlers/PageFramesHandler.ts +3 -0
- package/front_end/models/trace/handlers/RendererHandler.test.ts +0 -4
- package/front_end/models/trace/handlers/RendererHandler.ts +1 -24
- package/front_end/models/trace/handlers/SamplesHandler.test.ts +0 -5
- package/front_end/models/trace/handlers/SamplesHandler.ts +0 -26
- package/front_end/models/trace/handlers/ScreenshotsHandler.test.ts +0 -1
- package/front_end/models/trace/handlers/SelectorStatsHandler.ts +3 -0
- package/front_end/models/trace/handlers/ServerTimingsHandler.ts +1 -16
- package/front_end/models/trace/handlers/Threads.test.ts +1 -2
- package/front_end/models/trace/handlers/UserInteractionsHandler.test.ts +4 -27
- package/front_end/models/trace/handlers/UserInteractionsHandler.ts +16 -25
- package/front_end/models/trace/handlers/UserTimingsHandler.ts +0 -17
- package/front_end/models/trace/handlers/WorkersHandler.test.ts +0 -1
- package/front_end/models/trace/handlers/WorkersHandler.ts +0 -23
- package/front_end/models/trace/handlers/types.ts +1 -8
- package/front_end/models/trace/insights/{CumulativeLayoutShift.test.ts → CLSCulprits.test.ts} +21 -21
- package/front_end/models/trace/insights/{CumulativeLayoutShift.ts → CLSCulprits.ts} +24 -5
- package/front_end/models/trace/insights/Common.ts +5 -55
- package/front_end/models/trace/insights/DocumentLatency.test.ts +2 -2
- package/front_end/models/trace/insights/DocumentLatency.ts +26 -6
- package/front_end/models/trace/insights/FontDisplay.ts +24 -5
- package/front_end/models/trace/insights/InteractionToNextPaint.test.ts +1 -1
- package/front_end/models/trace/insights/InteractionToNextPaint.ts +26 -6
- package/front_end/models/trace/insights/LCPDiscovery.test.ts +58 -0
- package/front_end/models/trace/insights/LCPDiscovery.ts +101 -0
- package/front_end/models/trace/insights/{LargestContentfulPaint.test.ts → LCPPhases.test.ts} +6 -28
- package/front_end/models/trace/insights/{LargestContentfulPaint.ts → LCPPhases.ts} +37 -38
- package/front_end/models/trace/insights/{InsightRunners.ts → Models.ts} +4 -3
- package/front_end/models/trace/insights/RenderBlocking.test.ts +1 -1
- package/front_end/models/trace/insights/RenderBlocking.ts +33 -28
- package/front_end/models/trace/insights/SlowCSSSelector.ts +26 -5
- package/front_end/models/trace/insights/{ThirdPartyWeb.test.ts → ThirdParties.test.ts} +3 -3
- package/front_end/models/trace/insights/{ThirdPartyWeb.ts → ThirdParties.ts} +24 -5
- package/front_end/models/trace/insights/Viewport.test.ts +1 -1
- package/front_end/models/trace/insights/Viewport.ts +27 -9
- package/front_end/models/trace/insights/insights.ts +1 -1
- package/front_end/models/trace/insights/types.ts +11 -9
- package/front_end/models/trace/types/TraceEvents.ts +51 -22
- package/front_end/panels/application/SharedStorageItemsView.test.ts +3 -3
- package/front_end/panels/application/SharedStorageItemsView.ts +5 -3
- package/front_end/panels/application/StorageView.ts +3 -3
- package/front_end/panels/application/components/StorageMetadataView.ts +1 -2
- package/front_end/panels/browser_debugger/XHRBreakpointsSidebarPane.ts +34 -31
- package/front_end/panels/coverage/CoverageView.ts +3 -3
- package/front_end/panels/elements/ComputedStyleModel.ts +9 -2
- package/front_end/panels/elements/ComputedStyleWidget.test.ts +72 -0
- package/front_end/panels/elements/ComputedStyleWidget.ts +12 -0
- package/front_end/panels/elements/ElementStatePaneWidget.test.ts +84 -30
- package/front_end/panels/elements/ElementStatePaneWidget.ts +42 -24
- package/front_end/panels/elements/ElementsTreeElement.ts +24 -11
- package/front_end/panels/elements/MetricsSidebarPane.ts +12 -7
- package/front_end/panels/elements/PropertyMatchers.ts +3 -0
- package/front_end/panels/elements/StylePropertiesSection.ts +15 -6
- package/front_end/panels/elements/StylePropertyTreeElement.test.ts +3 -1
- package/front_end/panels/elements/StylePropertyTreeElement.ts +8 -3
- package/front_end/panels/elements/stylePropertiesTreeOutline.css +2 -2
- package/front_end/panels/explain/components/ConsoleInsight.ts +8 -18
- package/front_end/panels/freestyler/AiAgent.test.ts +58 -1
- package/front_end/panels/freestyler/AiAgent.ts +58 -3
- package/front_end/panels/freestyler/DrJonesFileAgent.test.ts +99 -23
- package/front_end/panels/freestyler/DrJonesFileAgent.ts +53 -20
- package/front_end/panels/freestyler/DrJonesNetworkAgent.test.ts +15 -7
- package/front_end/panels/freestyler/DrJonesNetworkAgent.ts +36 -15
- package/front_end/panels/freestyler/DrJonesPerformanceAgent.test.ts +6 -6
- package/front_end/panels/freestyler/DrJonesPerformanceAgent.ts +48 -8
- package/front_end/panels/freestyler/FreestylerAgent.test.ts +15 -14
- package/front_end/panels/freestyler/FreestylerAgent.ts +52 -8
- package/front_end/panels/freestyler/FreestylerPanel.test.ts +539 -39
- package/front_end/panels/freestyler/FreestylerPanel.ts +349 -215
- package/front_end/panels/freestyler/components/FreestylerChatUi.test.ts +126 -34
- package/front_end/panels/freestyler/components/FreestylerChatUi.ts +320 -268
- package/front_end/panels/freestyler/components/UserActionRow.ts +156 -47
- package/front_end/panels/freestyler/components/freestylerChatUi.css +69 -34
- package/front_end/panels/freestyler/components/userActionRow.css +40 -67
- package/front_end/panels/freestyler/freestyler-meta.ts +3 -11
- package/front_end/panels/issues/components/HideIssuesMenu.ts +2 -11
- package/front_end/panels/layer_viewer/LayerDetailsView.ts +1 -2
- package/front_end/panels/layer_viewer/PaintProfilerView.ts +5 -5
- package/front_end/panels/lighthouse/LighthouseReportRenderer.ts +46 -0
- package/front_end/panels/mobile_throttling/ThrottlingSettingsTab.ts +26 -17
- package/front_end/panels/mobile_throttling/throttlingSettingsTab.css +25 -19
- package/front_end/panels/network/BinaryResourceView.ts +6 -7
- package/front_end/panels/network/EventSourceMessagesView.ts +1 -1
- package/front_end/panels/network/NetworkDataGridNode.ts +3 -3
- package/front_end/panels/network/NetworkLogView.ts +7 -8
- package/front_end/panels/network/RequestTimingView.test.ts +35 -1
- package/front_end/panels/network/RequestTimingView.ts +96 -0
- package/front_end/panels/network/ResourceWebSocketFrameView.ts +2 -2
- package/front_end/panels/network/networkTimingTable.css +2 -1
- package/front_end/panels/performance_monitor/PerformanceMonitor.ts +1 -1
- package/front_end/panels/profiler/HeapProfileView.ts +3 -3
- package/front_end/panels/profiler/HeapSnapshotView.ts +2 -2
- package/front_end/panels/profiler/HeapTimelineOverview.ts +12 -12
- package/front_end/panels/profiler/IsolateSelector.ts +3 -4
- package/front_end/panels/profiler/ProfileFlameChartDataProvider.ts +1 -1
- package/front_end/panels/profiler/ProfileSidebarTreeElement.ts +7 -6
- package/front_end/panels/profiler/ProfileView.ts +1 -1
- package/front_end/panels/recorder/components/RecordingView.ts +2 -2
- package/front_end/panels/recorder/injected/{rollup.config.js → rollup.config.mjs} +1 -1
- package/front_end/panels/recorder/recorderController.css +0 -4
- package/front_end/panels/security/CookieReportTreeElement.ts +1 -9
- package/front_end/panels/security/CookieReportView.ts +120 -0
- package/front_end/panels/security/SecurityPanel.ts +8 -2
- package/front_end/panels/security/cookieReportView.css +46 -0
- package/front_end/panels/security/sidebar.css +1 -2
- package/front_end/panels/sensors/LocationsSettingsTab.ts +26 -11
- package/front_end/panels/sensors/locationsSettingsTab.css +18 -18
- package/front_end/panels/settings/AISettingsTab.ts +6 -15
- package/front_end/panels/settings/KeybindsSettingsTab.ts +1 -1
- package/front_end/panels/settings/SettingsScreen.ts +61 -56
- package/front_end/panels/settings/aiSettingsTab.css +3 -14
- package/front_end/panels/settings/components/SyncSection.ts +1 -2
- package/front_end/panels/settings/components/syncSection.css +0 -10
- package/front_end/panels/settings/frameworkIgnoreListSettingsTab.css +3 -1
- package/front_end/panels/settings/keybindsSettingsTab.css +7 -10
- package/front_end/panels/settings/settingsScreen.css +27 -125
- package/front_end/panels/sources/DebuggerPlugin.ts +9 -4
- package/front_end/panels/sources/NavigatorView.ts +11 -13
- package/front_end/panels/timeline/ActiveFilters.ts +3 -4
- package/front_end/panels/timeline/AnimationsTrackAppender.ts +1 -2
- package/front_end/panels/timeline/CountersGraph.ts +2 -4
- package/front_end/panels/timeline/EventsTimelineTreeView.ts +7 -8
- package/front_end/panels/timeline/README.md +2 -1
- package/front_end/panels/timeline/TimelineController.ts +14 -4
- package/front_end/panels/timeline/TimelineEventOverview.ts +3 -4
- package/front_end/panels/timeline/TimelineFilters.ts +3 -4
- package/front_end/panels/timeline/TimelineFlameChartDataProvider.test.ts +1 -1
- package/front_end/panels/timeline/TimelineFlameChartDataProvider.ts +3 -10
- package/front_end/panels/timeline/TimelineFlameChartNetworkDataProvider.ts +1 -2
- package/front_end/panels/timeline/TimelineFlameChartView.ts +21 -12
- package/front_end/panels/timeline/TimelineLoader.test.ts +1 -2
- package/front_end/panels/timeline/TimelineLoader.ts +3 -4
- package/front_end/panels/timeline/TimelineMiniMap.ts +10 -0
- package/front_end/panels/timeline/TimelinePanel.ts +20 -8
- package/front_end/panels/timeline/TimelineTreeView.test.ts +12 -13
- package/front_end/panels/timeline/TimelineTreeView.ts +35 -40
- package/front_end/panels/timeline/TimelineUIUtils.test.ts +2 -2
- package/front_end/panels/timeline/TimelineUIUtils.ts +12 -14
- package/front_end/panels/timeline/components/LayoutShiftDetails.ts +6 -7
- package/front_end/panels/timeline/components/LiveMetricsView.test.ts +3 -3
- package/front_end/panels/timeline/components/LiveMetricsView.ts +14 -26
- package/front_end/panels/timeline/components/MetricCard.test.ts +1 -1
- package/front_end/panels/timeline/components/MetricCard.ts +46 -0
- package/front_end/panels/timeline/components/NetworkRequestDetails.ts +3 -4
- package/front_end/panels/timeline/components/SidebarSingleInsightSet.test.ts +2 -0
- package/front_end/panels/timeline/components/SidebarSingleInsightSet.ts +41 -36
- package/front_end/panels/timeline/components/insights/CLSCulprits.ts +19 -33
- package/front_end/panels/timeline/components/insights/DocumentLatency.ts +29 -40
- package/front_end/panels/timeline/components/insights/FontDisplay.ts +17 -23
- package/front_end/panels/timeline/components/insights/Helpers.ts +12 -16
- package/front_end/panels/timeline/components/insights/InteractionToNextPaint.ts +14 -26
- package/front_end/panels/timeline/components/insights/LCPDiscovery.ts +25 -37
- package/front_end/panels/timeline/components/insights/LCPPhases.ts +20 -47
- package/front_end/panels/timeline/components/insights/RenderBlocking.ts +19 -28
- package/front_end/panels/timeline/components/insights/SidebarInsight.ts +1 -2
- package/front_end/panels/timeline/components/insights/SlowCSSSelector.ts +18 -31
- package/front_end/panels/timeline/components/insights/Table.ts +5 -3
- package/front_end/panels/timeline/components/insights/ThirdParties.ts +18 -25
- package/front_end/panels/timeline/components/insights/Viewport.ts +14 -25
- package/front_end/panels/timeline/components/liveMetricsView.css +5 -13
- package/front_end/panels/timeline/components/metricCard.css +11 -0
- package/front_end/panels/timeline/components/sidebarInsightsTab.css +1 -1
- package/front_end/panels/timeline/overlays/OverlaysImpl.test.ts +5 -5
- package/front_end/panels/timeline/overlays/OverlaysImpl.ts +13 -12
- package/front_end/panels/timeline/timelineFlameChartView.css +1 -1
- package/front_end/panels/timeline/utils/AICallTree.test.ts +105 -0
- package/front_end/panels/timeline/utils/AICallTree.ts +25 -24
- package/front_end/testing/EnvironmentHelpers.ts +5 -18
- package/front_end/testing/InsightHelpers.ts +4 -4
- package/front_end/testing/TraceHelpers.ts +1 -1
- package/front_end/third_party/puppeteer/README.chromium +2 -2
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Browser.d.ts +2 -3
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Browser.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Browser.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/ElementHandle.d.ts +14 -3
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/ElementHandle.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/ElementHandle.js +16 -2
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/ElementHandle.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Input.d.ts +34 -5
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Input.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Input.js +51 -2
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Input.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/ElementHandle.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/ElementHandle.js +10 -8
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/ElementHandle.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Frame.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Frame.js +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Frame.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Input.d.ts +14 -4
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Input.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Input.js +57 -23
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Input.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/ElementHandle.d.ts +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/ElementHandle.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/ElementHandle.js +13 -10
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/ElementHandle.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Input.d.ts +15 -4
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Input.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Input.js +55 -26
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Input.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/CallbackRegistry.d.ts +0 -8
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/CallbackRegistry.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/CallbackRegistry.js +2 -11
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/CallbackRegistry.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/ConsoleMessage.d.ts +2 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/ConsoleMessage.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/ConsoleMessage.js +5 -2
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/ConsoleMessage.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/Errors.d.ts +7 -0
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/Errors.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/Errors.js +9 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/Errors.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/WaitTask.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/WaitTask.js +5 -3
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/WaitTask.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/environment.d.ts +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/environment.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/environment.js +0 -3
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/environment.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/generated/injected.d.ts +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/generated/injected.js +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/generated/version.d.ts +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/generated/version.js +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/injected/injected.d.ts +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/revisions.d.ts +3 -3
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/revisions.js +3 -3
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/revisions.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/util/Mutex.d.ts +2 -2
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/util/incremental-id-generator.d.ts +14 -0
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/util/incremental-id-generator.d.ts.map +1 -0
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/util/incremental-id-generator.js +18 -0
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/util/incremental-id-generator.js.map +1 -0
- package/front_end/third_party/puppeteer/package/lib/es5-iife/puppeteer-core-browser.d.ts +51 -10
- package/front_end/third_party/puppeteer/package/lib/es5-iife/puppeteer-core-browser.js +215 -97
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Browser.d.ts +2 -3
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Browser.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Browser.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/ElementHandle.d.ts +14 -3
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/ElementHandle.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/ElementHandle.js +16 -2
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/ElementHandle.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Input.d.ts +34 -5
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Input.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Input.js +51 -2
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Input.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/ElementHandle.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/ElementHandle.js +10 -8
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/ElementHandle.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Frame.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Frame.js +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Frame.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Input.d.ts +14 -4
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Input.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Input.js +57 -23
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Input.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/ElementHandle.d.ts +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/ElementHandle.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/ElementHandle.js +13 -10
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/ElementHandle.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Input.d.ts +15 -4
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Input.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Input.js +55 -26
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Input.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/CallbackRegistry.d.ts +0 -8
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/CallbackRegistry.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/CallbackRegistry.js +1 -9
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/CallbackRegistry.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/ConsoleMessage.d.ts +2 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/ConsoleMessage.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/ConsoleMessage.js +5 -2
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/ConsoleMessage.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/Errors.d.ts +7 -0
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/Errors.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/Errors.js +7 -0
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/Errors.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/WaitTask.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/WaitTask.js +5 -3
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/WaitTask.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/environment.d.ts +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/environment.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/environment.js +0 -3
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/environment.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/generated/injected.d.ts +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/generated/injected.js +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/generated/version.d.ts +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/generated/version.js +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/revisions.d.ts +3 -3
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/revisions.js +3 -3
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/revisions.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/util/incremental-id-generator.d.ts +14 -0
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/util/incremental-id-generator.d.ts.map +1 -0
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/util/incremental-id-generator.js +15 -0
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/util/incremental-id-generator.js.map +1 -0
- package/front_end/third_party/puppeteer/package/lib/types.d.ts +51 -10
- package/front_end/third_party/puppeteer/package/package.json +4 -4
- package/front_end/third_party/puppeteer/package/src/api/Browser.ts +2 -3
- package/front_end/third_party/puppeteer/package/src/api/ElementHandle.ts +21 -3
- package/front_end/third_party/puppeteer/package/src/api/Input.ts +57 -8
- package/front_end/third_party/puppeteer/package/src/bidi/ElementHandle.ts +9 -7
- package/front_end/third_party/puppeteer/package/src/bidi/Frame.ts +1 -0
- package/front_end/third_party/puppeteer/package/src/bidi/Input.ts +72 -31
- package/front_end/third_party/puppeteer/package/src/cdp/ElementHandle.ts +14 -9
- package/front_end/third_party/puppeteer/package/src/cdp/Input.ts +71 -26
- package/front_end/third_party/puppeteer/package/src/common/CallbackRegistry.ts +1 -15
- package/front_end/third_party/puppeteer/package/src/common/ConsoleMessage.ts +8 -1
- package/front_end/third_party/puppeteer/package/src/common/Errors.ts +7 -0
- package/front_end/third_party/puppeteer/package/src/common/WaitTask.ts +9 -9
- package/front_end/third_party/puppeteer/package/src/environment.ts +1 -4
- package/front_end/third_party/puppeteer/package/src/generated/injected.ts +1 -1
- package/front_end/third_party/puppeteer/package/src/generated/version.ts +1 -1
- package/front_end/third_party/puppeteer/package/src/revisions.ts +3 -3
- package/front_end/third_party/puppeteer/package/src/util/incremental-id-generator.ts +20 -0
- package/front_end/third_party/puppeteer/puppeteer-tsconfig.json +1 -0
- package/front_end/ui/components/buttons/Button.test.ts +14 -0
- package/front_end/ui/components/buttons/Button.ts +27 -4
- package/front_end/ui/components/cards/card.css +7 -4
- package/front_end/ui/components/dialogs/Dialog.ts +2 -4
- package/front_end/ui/components/dialogs/ShortcutDialog.ts +15 -13
- package/front_end/ui/components/dialogs/dialog.css +2 -6
- package/front_end/ui/components/dialogs/shortcutDialog.css +33 -41
- package/front_end/ui/components/docs/freestyler/basic.ts +6 -8
- package/front_end/ui/components/docs/freestyler/empty_state.ts +6 -8
- package/front_end/ui/components/docs/performance_panel/track_example.html +1 -1
- package/front_end/ui/components/markdown_view/MarkdownView.test.ts +39 -17
- package/front_end/ui/components/markdown_view/MarkdownView.ts +77 -14
- package/front_end/ui/components/markdown_view/markdownView.css +15 -0
- package/front_end/ui/components/settings/SettingCheckbox.ts +3 -2
- package/front_end/ui/legacy/ContextMenu.ts +2 -2
- package/front_end/ui/legacy/InplaceEditor.ts +18 -14
- package/front_end/ui/legacy/TabbedPane.ts +0 -14
- package/front_end/ui/legacy/UIUtils.ts +0 -7
- package/front_end/ui/legacy/components/cookie_table/CookiesTable.ts +7 -2
- package/front_end/ui/legacy/components/data_grid/DataGrid.ts +8 -4
- package/front_end/ui/legacy/components/data_grid/ViewportDataGrid.ts +20 -11
- package/front_end/ui/legacy/components/inline_editor/LinkSwatch.test.ts +19 -0
- package/front_end/ui/legacy/components/inline_editor/LinkSwatch.ts +1 -1
- package/front_end/ui/legacy/components/object_ui/ObjectPropertiesSection.ts +1 -1
- package/front_end/ui/legacy/components/perf_ui/FlameChart.ts +5 -22
- package/front_end/ui/legacy/components/perf_ui/OverviewGrid.ts +129 -100
- package/front_end/ui/legacy/components/perf_ui/TimelineGrid.ts +4 -2
- package/front_end/ui/legacy/components/perf_ui/TimelineOverviewCalculator.test.ts +9 -4
- package/front_end/ui/legacy/components/perf_ui/TimelineOverviewCalculator.ts +6 -6
- package/front_end/ui/legacy/components/perf_ui/TimelineOverviewPane.ts +22 -4
- package/front_end/ui/legacy/components/perf_ui/flameChart.css +0 -2
- package/front_end/ui/legacy/components/source_frame/BinaryResourceViewFactory.test.ts +49 -0
- package/front_end/ui/legacy/components/source_frame/BinaryResourceViewFactory.ts +23 -46
- package/front_end/ui/legacy/components/source_frame/ImageView.ts +1 -1
- package/front_end/ui/legacy/components/utils/ImagePreview.ts +1 -1
- package/front_end/ui/legacy/textPrompt.css +1 -1
- package/front_end/ui/legacy/toolbar.css +4 -5
- package/front_end/ui/visual_logging/KnownContextValues.ts +174 -0
- package/front_end/ui/visual_logging/LoggingConfig.ts +6 -2
- package/package.json +7 -6
- package/scripts/build/ninja/bundle.gni +3 -3
- package/scripts/build/{rollup.config.js → rollup.config.mjs} +4 -4
- package/scripts/devtools_paths.py +8 -4
- package/scripts/eslint_rules/tests/check_test_definitions_test.js +8 -3
- package/scripts/tools/update_goldens_v2.py +1 -1
- package/front_end/models/timeline_model/TimelineModelFilter.ts +0 -61
- /package/front_end/Images/{rollup.config.js → rollup.config.mjs} +0 -0
@@ -6,8 +6,6 @@ import * as Platform from '../../../core/platform/platform.js';
|
|
6
6
|
import * as Helpers from '../helpers/helpers.js';
|
7
7
|
import * as Types from '../types/types.js';
|
8
8
|
|
9
|
-
import {HandlerState} from './types.js';
|
10
|
-
|
11
9
|
// We track the renderer processes we see in each frame on the way through the trace.
|
12
10
|
const rendererProcessesByFrameId: FrameProcessData = new Map();
|
13
11
|
|
@@ -67,7 +65,6 @@ const eventPhasesOfInterestForTraceBounds = new Set([
|
|
67
65
|
Types.Events.Phase.INSTANT,
|
68
66
|
]);
|
69
67
|
|
70
|
-
let handlerState = HandlerState.UNINITIALIZED;
|
71
68
|
// Tracks if the trace is a generic trace, which here means that it did not come from athe DevTools Performance Panel recording.
|
72
69
|
// We assume a trace is generic, and mark it as not generic if we see any of:
|
73
70
|
// - TracingStartedInPage
|
@@ -104,16 +101,6 @@ export function reset(): void {
|
|
104
101
|
traceStartedTimeFromTracingStartedEvent = Types.Timing.MicroSeconds(-1);
|
105
102
|
|
106
103
|
traceIsGeneric = true;
|
107
|
-
|
108
|
-
handlerState = HandlerState.UNINITIALIZED;
|
109
|
-
}
|
110
|
-
|
111
|
-
export function initialize(): void {
|
112
|
-
if (handlerState !== HandlerState.UNINITIALIZED) {
|
113
|
-
throw new Error('Meta Handler was not reset');
|
114
|
-
}
|
115
|
-
|
116
|
-
handlerState = HandlerState.INITIALIZED;
|
117
104
|
}
|
118
105
|
|
119
106
|
function updateRendererProcessByFrame(event: Types.Events.Event, frame: Types.Events.TraceFrame): void {
|
@@ -147,10 +134,6 @@ function updateRendererProcessByFrame(event: Types.Events.Event, frame: Types.Ev
|
|
147
134
|
}
|
148
135
|
|
149
136
|
export function handleEvent(event: Types.Events.Event): void {
|
150
|
-
if (handlerState !== HandlerState.INITIALIZED) {
|
151
|
-
throw new Error('Meta Handler is not initialized');
|
152
|
-
}
|
153
|
-
|
154
137
|
if (traceIsGeneric && CHROME_WEB_TRACE_EVENTS.has(event.name as Types.Events.Name)) {
|
155
138
|
traceIsGeneric = false;
|
156
139
|
}
|
@@ -311,9 +294,8 @@ export function handleEvent(event: Types.Events.Event): void {
|
|
311
294
|
// Track all navigation events. Note that there can be navigation start events
|
312
295
|
// but where the documentLoaderURL is empty. As far as the trace rendering is
|
313
296
|
// concerned, these events are noise so we filter them out here.
|
314
|
-
// (The filtering of empty URLs is done in the
|
315
|
-
|
316
|
-
if (Types.Events.isNavigationStartWithURL(event) && event.args.data) {
|
297
|
+
// (The filtering of empty URLs is done in the isNavigationStart check)
|
298
|
+
if (Types.Events.isNavigationStart(event) && event.args.data) {
|
317
299
|
const navigationId = event.args.data.navigationId;
|
318
300
|
if (navigationsByNavigationId.has(navigationId)) {
|
319
301
|
// We have only ever seen this situation once, in crbug.com/1503982, where the user ran:
|
@@ -336,10 +318,6 @@ export function handleEvent(event: Types.Events.Event): void {
|
|
336
318
|
}
|
337
319
|
|
338
320
|
export async function finalize(): Promise<void> {
|
339
|
-
if (handlerState !== HandlerState.INITIALIZED) {
|
340
|
-
throw new Error('Handler is not initialized');
|
341
|
-
}
|
342
|
-
|
343
321
|
// We try to set the minimum time by finding the event with the smallest
|
344
322
|
// timestamp. However, if we also got a timestamp from the
|
345
323
|
// TracingStartedInBrowser event, we should always use that.
|
@@ -412,8 +390,6 @@ export async function finalize(): Promise<void> {
|
|
412
390
|
mainFrameURL = firstMainFrameNav.args.data.documentLoaderURL;
|
413
391
|
}
|
414
392
|
}
|
415
|
-
|
416
|
-
handlerState = HandlerState.FINALIZED;
|
417
393
|
}
|
418
394
|
|
419
395
|
export type MetaHandlerData = {
|
@@ -464,10 +440,6 @@ export type FrameProcessData =
|
|
464
440
|
Map<Types.Events.ProcessID, {frame: Types.Events.TraceFrame, window: Types.Timing.TraceWindowMicroSeconds}[]>>;
|
465
441
|
|
466
442
|
export function data(): MetaHandlerData {
|
467
|
-
if (handlerState !== HandlerState.FINALIZED) {
|
468
|
-
throw new Error('Meta Handler is not finalized');
|
469
|
-
}
|
470
|
-
|
471
443
|
return {
|
472
444
|
traceBounds: {...traceBounds},
|
473
445
|
browserProcessId,
|
@@ -11,29 +11,9 @@ type DataArgsMap = Map<keyof DataArgs, DataArgs[keyof DataArgs]>;
|
|
11
11
|
type DataArgsProcessedDataMap = Map<keyof DataArgsProcessedData, DataArgsProcessedData[keyof DataArgsProcessedData]>;
|
12
12
|
|
13
13
|
describe('NetworkRequestsHandler', function() {
|
14
|
-
describe('error handling', () => {
|
15
|
-
it('throws if handleEvent is called before it is initialized', () => {
|
16
|
-
assert.throws(() => {
|
17
|
-
Trace.Handlers.ModelHandlers.NetworkRequests.handleEvent({} as Trace.Types.Events.Event);
|
18
|
-
}, 'Network Request handler is not initialized');
|
19
|
-
});
|
20
|
-
|
21
|
-
it('throws if finalize is called before initialize', async () => {
|
22
|
-
let thrown: Error|null = null;
|
23
|
-
try {
|
24
|
-
await Trace.Handlers.ModelHandlers.NetworkRequests.finalize();
|
25
|
-
} catch (e) {
|
26
|
-
thrown = e as Error;
|
27
|
-
}
|
28
|
-
assert.strictEqual(thrown?.message, 'Network Request handler is not initialized');
|
29
|
-
});
|
30
|
-
});
|
31
|
-
|
32
14
|
describe('network requests calculations', () => {
|
33
15
|
beforeEach(() => {
|
34
16
|
Trace.Handlers.ModelHandlers.Meta.reset();
|
35
|
-
Trace.Handlers.ModelHandlers.Meta.initialize();
|
36
|
-
Trace.Handlers.ModelHandlers.NetworkRequests.initialize();
|
37
17
|
});
|
38
18
|
|
39
19
|
it('calculates network requests correctly', async function() {
|
@@ -200,8 +180,6 @@ describe('NetworkRequestsHandler', function() {
|
|
200
180
|
describe('parses the change priority request', () => {
|
201
181
|
beforeEach(() => {
|
202
182
|
Trace.Handlers.ModelHandlers.Meta.reset();
|
203
|
-
Trace.Handlers.ModelHandlers.Meta.initialize();
|
204
|
-
Trace.Handlers.ModelHandlers.NetworkRequests.initialize();
|
205
183
|
});
|
206
184
|
|
207
185
|
it('changes priority of the resouce', async function() {
|
@@ -232,8 +210,6 @@ describe('NetworkRequestsHandler', function() {
|
|
232
210
|
describe('redirects', () => {
|
233
211
|
beforeEach(() => {
|
234
212
|
Trace.Handlers.ModelHandlers.Meta.reset();
|
235
|
-
Trace.Handlers.ModelHandlers.Meta.initialize();
|
236
|
-
Trace.Handlers.ModelHandlers.NetworkRequests.initialize();
|
237
213
|
});
|
238
214
|
|
239
215
|
it('calculates redirects correctly (navigations)', async function() {
|
@@ -306,8 +282,6 @@ describe('NetworkRequestsHandler', function() {
|
|
306
282
|
describe('initiators', () => {
|
307
283
|
beforeEach(() => {
|
308
284
|
Trace.Handlers.ModelHandlers.Meta.reset();
|
309
|
-
Trace.Handlers.ModelHandlers.Meta.initialize();
|
310
|
-
Trace.Handlers.ModelHandlers.NetworkRequests.initialize();
|
311
285
|
});
|
312
286
|
|
313
287
|
it('calculate the initiator by `initiator` field correctly', async function() {
|
@@ -8,7 +8,7 @@ import * as Helpers from '../helpers/helpers.js';
|
|
8
8
|
import * as Types from '../types/types.js';
|
9
9
|
|
10
10
|
import {data as metaHandlerData} from './MetaHandler.js';
|
11
|
-
import
|
11
|
+
import type {HandlerName} from './types.js';
|
12
12
|
|
13
13
|
const MILLISECONDS_TO_MICROSECONDS = 1000;
|
14
14
|
const SECONDS_TO_MICROSECONDS = 1000000;
|
@@ -103,8 +103,6 @@ function firstPositiveValueInList(entries: number[]): number {
|
|
103
103
|
return 0;
|
104
104
|
}
|
105
105
|
|
106
|
-
let handlerState = HandlerState.UNINITIALIZED;
|
107
|
-
|
108
106
|
export function reset(): void {
|
109
107
|
requestsById.clear();
|
110
108
|
requestsByOrigin.clear();
|
@@ -113,19 +111,9 @@ export function reset(): void {
|
|
113
111
|
networkRequestEventByInitiatorUrl.clear();
|
114
112
|
eventToInitiatorMap.clear();
|
115
113
|
webSocketData.clear();
|
116
|
-
|
117
|
-
handlerState = HandlerState.UNINITIALIZED;
|
118
|
-
}
|
119
|
-
|
120
|
-
export function initialize(): void {
|
121
|
-
handlerState = HandlerState.INITIALIZED;
|
122
114
|
}
|
123
115
|
|
124
116
|
export function handleEvent(event: Types.Events.Event): void {
|
125
|
-
if (handlerState !== HandlerState.INITIALIZED) {
|
126
|
-
throw new Error('Network Request handler is not initialized');
|
127
|
-
}
|
128
|
-
|
129
117
|
if (Types.Events.isResourceChangePriority(event)) {
|
130
118
|
storeTraceEventWithRequestId(event.args.data.requestId, 'changePriority', event);
|
131
119
|
return;
|
@@ -187,10 +175,6 @@ export function handleEvent(event: Types.Events.Event): void {
|
|
187
175
|
}
|
188
176
|
|
189
177
|
export async function finalize(): Promise<void> {
|
190
|
-
if (handlerState !== HandlerState.INITIALIZED) {
|
191
|
-
throw new Error('Network Request handler is not initialized');
|
192
|
-
}
|
193
|
-
|
194
178
|
const {rendererProcessesByFrame} = metaHandlerData();
|
195
179
|
for (const [requestId, request] of requestMap.entries()) {
|
196
180
|
// If we have an incomplete set of events here, we choose to drop the network
|
@@ -271,6 +255,9 @@ export async function finalize(): Promise<void> {
|
|
271
255
|
finalPriority = request.changePriority.args.data.priority;
|
272
256
|
}
|
273
257
|
|
258
|
+
// Network timings are complicated.
|
259
|
+
// https://raw.githubusercontent.com/GoogleChrome/lighthouse/main/docs/Network-Timings.svg is generally correct, but.. less so for navigations/redirects/etc.
|
260
|
+
|
274
261
|
// Start time
|
275
262
|
// =======================
|
276
263
|
// The time where the request started, which is either the first willSendRequest
|
@@ -504,15 +491,9 @@ export async function finalize(): Promise<void> {
|
|
504
491
|
}
|
505
492
|
}
|
506
493
|
finalizeWebSocketData();
|
507
|
-
|
508
|
-
handlerState = HandlerState.FINALIZED;
|
509
494
|
}
|
510
495
|
|
511
496
|
export function data(): NetworkRequestData {
|
512
|
-
if (handlerState !== HandlerState.FINALIZED) {
|
513
|
-
throw new Error('Network Request handler is not finalized');
|
514
|
-
}
|
515
|
-
|
516
497
|
return {
|
517
498
|
byId: requestsById,
|
518
499
|
byOrigin: requestsByOrigin,
|
@@ -663,7 +663,6 @@ describeWithEnvironment('RendererHandler', function() {
|
|
663
663
|
],
|
664
664
|
]);
|
665
665
|
|
666
|
-
Trace.Handlers.ModelHandlers.Samples.initialize();
|
667
666
|
await Trace.Handlers.ModelHandlers.Samples.finalize();
|
668
667
|
Trace.Handlers.ModelHandlers.Renderer.buildHierarchy(processes, {filter: {has: () => true}});
|
669
668
|
|
@@ -796,9 +795,6 @@ describeWithEnvironment('RendererHandler', function() {
|
|
796
795
|
Trace.Handlers.ModelHandlers.Renderer.reset();
|
797
796
|
Trace.Handlers.ModelHandlers.Meta.reset();
|
798
797
|
Trace.Handlers.ModelHandlers.Samples.reset();
|
799
|
-
Trace.Handlers.ModelHandlers.Meta.initialize();
|
800
|
-
Trace.Handlers.ModelHandlers.Samples.initialize();
|
801
|
-
Trace.Handlers.ModelHandlers.Renderer.initialize();
|
802
798
|
|
803
799
|
for (const event of traceEvents) {
|
804
800
|
Trace.Handlers.ModelHandlers.Meta.handleEvent(event);
|
@@ -9,7 +9,7 @@ import * as Types from '../types/types.js';
|
|
9
9
|
import {data as auctionWorkletsData} from './AuctionWorkletsHandler.js';
|
10
10
|
import {data as metaHandlerData, type FrameProcessData} from './MetaHandler.js';
|
11
11
|
import {data as samplesHandlerData} from './SamplesHandler.js';
|
12
|
-
import
|
12
|
+
import type {HandlerName} from './types.js';
|
13
13
|
|
14
14
|
/**
|
15
15
|
* This handler builds the hierarchy of trace events and profile calls
|
@@ -37,7 +37,6 @@ let allTraceEntries: Types.Events.Event[] = [];
|
|
37
37
|
|
38
38
|
const completeEventStack: (Types.Events.SyntheticComplete)[] = [];
|
39
39
|
|
40
|
-
let handlerState = HandlerState.UNINITIALIZED;
|
41
40
|
let config: Types.Configuration.Configuration = Types.Configuration.defaults();
|
42
41
|
|
43
42
|
const makeRendererProcess = (): RendererProcess => ({
|
@@ -71,22 +70,9 @@ export function reset(): void {
|
|
71
70
|
allTraceEntries.length = 0;
|
72
71
|
completeEventStack.length = 0;
|
73
72
|
compositorTileWorkers.length = 0;
|
74
|
-
handlerState = HandlerState.UNINITIALIZED;
|
75
|
-
}
|
76
|
-
|
77
|
-
export function initialize(): void {
|
78
|
-
if (handlerState !== HandlerState.UNINITIALIZED) {
|
79
|
-
throw new Error('Renderer Handler was not reset');
|
80
|
-
}
|
81
|
-
|
82
|
-
handlerState = HandlerState.INITIALIZED;
|
83
73
|
}
|
84
74
|
|
85
75
|
export function handleEvent(event: Types.Events.Event): void {
|
86
|
-
if (handlerState !== HandlerState.INITIALIZED) {
|
87
|
-
throw new Error('Renderer Handler is not initialized');
|
88
|
-
}
|
89
|
-
|
90
76
|
if (Types.Events.isThreadName(event) && event.args.name?.startsWith('CompositorTileWorker')) {
|
91
77
|
compositorTileWorkers.push({
|
92
78
|
pid: event.pid,
|
@@ -115,24 +101,15 @@ export function handleEvent(event: Types.Events.Event): void {
|
|
115
101
|
}
|
116
102
|
|
117
103
|
export async function finalize(): Promise<void> {
|
118
|
-
if (handlerState !== HandlerState.INITIALIZED) {
|
119
|
-
throw new Error('Renderer Handler is not initialized');
|
120
|
-
}
|
121
|
-
|
122
104
|
const {mainFrameId, rendererProcessesByFrame, threadsInProcess} = metaHandlerData();
|
123
105
|
assignMeta(processes, mainFrameId, rendererProcessesByFrame, threadsInProcess);
|
124
106
|
sanitizeProcesses(processes);
|
125
107
|
buildHierarchy(processes);
|
126
108
|
sanitizeThreads(processes);
|
127
109
|
Helpers.Trace.sortTraceEventsInPlace(allTraceEntries);
|
128
|
-
handlerState = HandlerState.FINALIZED;
|
129
110
|
}
|
130
111
|
|
131
112
|
export function data(): RendererHandlerData {
|
132
|
-
if (handlerState !== HandlerState.FINALIZED) {
|
133
|
-
throw new Error('Renderer Handler is not finalized');
|
134
|
-
}
|
135
|
-
|
136
113
|
return {
|
137
114
|
processes: new Map(processes),
|
138
115
|
compositorTileWorkers: new Map(gatherCompositorThreads()),
|
@@ -14,9 +14,6 @@ async function handleEventsFromTraceFile(context: Mocha.Context|Mocha.Suite|null
|
|
14
14
|
Trace.Handlers.ModelHandlers.Meta.reset();
|
15
15
|
Trace.Handlers.ModelHandlers.Samples.reset();
|
16
16
|
|
17
|
-
Trace.Handlers.ModelHandlers.Meta.initialize();
|
18
|
-
Trace.Handlers.ModelHandlers.Samples.initialize();
|
19
|
-
|
20
17
|
for (const event of traceEvents) {
|
21
18
|
Trace.Handlers.ModelHandlers.Meta.handleEvent(event);
|
22
19
|
Trace.Handlers.ModelHandlers.Samples.handleEvent(event);
|
@@ -141,8 +138,6 @@ describeWithEnvironment('SamplesHandler', function() {
|
|
141
138
|
];
|
142
139
|
Trace.Handlers.ModelHandlers.Samples.reset();
|
143
140
|
|
144
|
-
Trace.Handlers.ModelHandlers.Samples.initialize();
|
145
|
-
|
146
141
|
for (const event of [mockProfileEvent, ...mockChunks]) {
|
147
142
|
Trace.Handlers.ModelHandlers.Samples.handleEvent(event);
|
148
143
|
}
|
@@ -8,8 +8,6 @@ import * as CPUProfile from '../../cpu_profile/cpu_profile.js';
|
|
8
8
|
import * as Helpers from '../helpers/helpers.js';
|
9
9
|
import * as Types from '../types/types.js';
|
10
10
|
|
11
|
-
import {HandlerState} from './types.js';
|
12
|
-
|
13
11
|
const events = new Map<Types.Events.ProcessID, Map<Types.Events.ThreadID, Types.Events.Complete[]>>();
|
14
12
|
|
15
13
|
const profilesInProcess = new Map<Types.Events.ProcessID, Map<Types.Events.ThreadID, ProfileData>>();
|
@@ -26,8 +24,6 @@ const entryToNode = new Map<Types.Events.Event, Helpers.TreeHelpers.TraceEntryNo
|
|
26
24
|
// events matched by thread id.
|
27
25
|
const preprocessedData = new Map<Types.Events.ProcessID, Map<Types.Events.ProfileID, PreprocessedData>>();
|
28
26
|
|
29
|
-
let handlerState = HandlerState.UNINITIALIZED;
|
30
|
-
|
31
27
|
function buildProfileCalls(): void {
|
32
28
|
for (const [processId, profiles] of preprocessedData) {
|
33
29
|
for (const [profileId, preProcessedData] of profiles) {
|
@@ -110,22 +106,9 @@ export function reset(): void {
|
|
110
106
|
preprocessedData.clear();
|
111
107
|
profilesInProcess.clear();
|
112
108
|
entryToNode.clear();
|
113
|
-
handlerState = HandlerState.UNINITIALIZED;
|
114
|
-
}
|
115
|
-
|
116
|
-
export function initialize(): void {
|
117
|
-
if (handlerState !== HandlerState.UNINITIALIZED) {
|
118
|
-
throw new Error('Samples Handler was not reset');
|
119
|
-
}
|
120
|
-
|
121
|
-
handlerState = HandlerState.INITIALIZED;
|
122
109
|
}
|
123
110
|
|
124
111
|
export function handleEvent(event: Types.Events.Event): void {
|
125
|
-
if (handlerState !== HandlerState.INITIALIZED) {
|
126
|
-
throw new Error('Samples Handler is not initialized');
|
127
|
-
}
|
128
|
-
|
129
112
|
/**
|
130
113
|
* A fake trace event created to support CDP.Profiler.Profiles in the
|
131
114
|
* trace engine.
|
@@ -201,19 +184,10 @@ export function handleEvent(event: Types.Events.Event): void {
|
|
201
184
|
}
|
202
185
|
|
203
186
|
export async function finalize(): Promise<void> {
|
204
|
-
if (handlerState !== HandlerState.INITIALIZED) {
|
205
|
-
throw new Error('Samples Handler is not initialized');
|
206
|
-
}
|
207
187
|
buildProfileCalls();
|
208
|
-
|
209
|
-
handlerState = HandlerState.FINALIZED;
|
210
188
|
}
|
211
189
|
|
212
190
|
export function data(): SamplesHandlerData {
|
213
|
-
if (handlerState !== HandlerState.FINALIZED) {
|
214
|
-
throw new Error('Samples Handler is not finalized');
|
215
|
-
}
|
216
|
-
|
217
191
|
return {
|
218
192
|
profilesInProcess,
|
219
193
|
entryToNode,
|
@@ -28,7 +28,6 @@ describe('ScreenshotsHandler', function() {
|
|
28
28
|
// and later we will pass events to the meta handler, otherwise the
|
29
29
|
// screenshots handler will fail.
|
30
30
|
Trace.Handlers.ModelHandlers.Meta.reset();
|
31
|
-
Trace.Handlers.ModelHandlers.Meta.initialize();
|
32
31
|
|
33
32
|
Trace.Handlers.ModelHandlers.Screenshots.reset();
|
34
33
|
});
|
@@ -29,6 +29,9 @@ export function handleEvent(event: Types.Events.Event): void {
|
|
29
29
|
}
|
30
30
|
}
|
31
31
|
|
32
|
+
export async function finalize(): Promise<void> {
|
33
|
+
}
|
34
|
+
|
32
35
|
export interface SelectorStatsData {
|
33
36
|
dataForUpdateLayoutEvent: Map<Types.Events.UpdateLayoutTree, {
|
34
37
|
timings: Types.Events.SelectorTiming[],
|
@@ -7,19 +7,12 @@ import * as Helpers from '../helpers/helpers.js';
|
|
7
7
|
import * as Types from '../types/types.js';
|
8
8
|
|
9
9
|
import {data as networkData} from './NetworkRequestsHandler.js';
|
10
|
-
import
|
10
|
+
import type {HandlerName} from './types.js';
|
11
11
|
|
12
12
|
const serverTimings: Types.Events.SyntheticServerTiming[] = [];
|
13
13
|
|
14
|
-
let handlerState = HandlerState.UNINITIALIZED;
|
15
|
-
|
16
14
|
export function reset(): void {
|
17
15
|
serverTimings.length = 0;
|
18
|
-
handlerState = HandlerState.UNINITIALIZED;
|
19
|
-
}
|
20
|
-
|
21
|
-
export function initialize(): void {
|
22
|
-
handlerState = HandlerState.INITIALIZED;
|
23
16
|
}
|
24
17
|
|
25
18
|
export function handleEvent(_event: Types.Events.Event): void {
|
@@ -27,12 +20,8 @@ export function handleEvent(_event: Types.Events.Event): void {
|
|
27
20
|
}
|
28
21
|
|
29
22
|
export async function finalize(): Promise<void> {
|
30
|
-
if (handlerState !== HandlerState.INITIALIZED) {
|
31
|
-
throw new Error('Server Timings handler is not initialized');
|
32
|
-
}
|
33
23
|
extractServerTimings();
|
34
24
|
Helpers.Trace.sortTraceEventsInPlace(serverTimings);
|
35
|
-
handlerState = HandlerState.FINALIZED;
|
36
25
|
}
|
37
26
|
|
38
27
|
const RESPONSE_START_METRIC_NAME = 'response-start';
|
@@ -124,10 +113,6 @@ function createSyntheticServerTiming(
|
|
124
113
|
}
|
125
114
|
|
126
115
|
export function data(): {serverTimings: Types.Events.SyntheticServerTiming[]} {
|
127
|
-
if (handlerState !== HandlerState.FINALIZED) {
|
128
|
-
throw new Error('Server Timing handler is not finalized');
|
129
|
-
}
|
130
|
-
|
131
116
|
return {
|
132
117
|
serverTimings,
|
133
118
|
};
|
@@ -2,7 +2,6 @@
|
|
2
2
|
// Use of this source code is governed by a BSD-style license that can be
|
3
3
|
// found in the LICENSE file.
|
4
4
|
|
5
|
-
import * as TimelineModel from '../../../models/timeline_model/timeline_model.js';
|
6
5
|
import {describeWithEnvironment} from '../../../testing/EnvironmentHelpers.js';
|
7
6
|
import {TraceLoader} from '../../../testing/TraceLoader.js';
|
8
7
|
import * as Trace from '../trace.js';
|
@@ -40,7 +39,7 @@ describeWithEnvironment('Handler Threads helper', function() {
|
|
40
39
|
// it takes the CDP Profile and wraps it in fake trace events, before then
|
41
40
|
// passing that through to the new engine.
|
42
41
|
const rawEvents = await TraceLoader.rawCPUProfile(this, 'node-fibonacci-website.cpuprofile.gz');
|
43
|
-
const events =
|
42
|
+
const events = Trace.Extras.TimelineJSProfile.TimelineJSProfileProcessor.createFakeTraceFromCpuProfile(
|
44
43
|
rawEvents,
|
45
44
|
Trace.Types.Events.ThreadID(1),
|
46
45
|
);
|
@@ -8,7 +8,6 @@ import * as Trace from '../trace.js';
|
|
8
8
|
async function processTrace(context: Mocha.Suite|Mocha.Context|null, path: string): Promise<void> {
|
9
9
|
const traceEvents = await TraceLoader.rawEvents(context, path);
|
10
10
|
Trace.Handlers.ModelHandlers.Meta.reset();
|
11
|
-
Trace.Handlers.ModelHandlers.Meta.initialize();
|
12
11
|
for (const event of traceEvents) {
|
13
12
|
Trace.Handlers.ModelHandlers.Meta.handleEvent(event);
|
14
13
|
Trace.Handlers.ModelHandlers.UserInteractions.handleEvent(event);
|
@@ -19,7 +18,6 @@ async function processTrace(context: Mocha.Suite|Mocha.Context|null, path: strin
|
|
19
18
|
|
20
19
|
beforeEach(() => {
|
21
20
|
Trace.Handlers.ModelHandlers.Meta.reset();
|
22
|
-
Trace.Handlers.ModelHandlers.Meta.initialize();
|
23
21
|
});
|
24
22
|
|
25
23
|
describe('UserInteractionsHandler', function() {
|
@@ -43,23 +41,6 @@ describe('UserInteractionsHandler', function() {
|
|
43
41
|
return event as unknown as Trace.Types.Events.SyntheticInteractionPair;
|
44
42
|
}
|
45
43
|
|
46
|
-
describe('error handling', () => {
|
47
|
-
it('throws if not initialized', async () => {
|
48
|
-
Trace.Handlers.ModelHandlers.Meta.reset();
|
49
|
-
Trace.Handlers.ModelHandlers.Meta.initialize();
|
50
|
-
|
51
|
-
// Finalize the handler by calling data and then finalize on it.
|
52
|
-
Trace.Handlers.ModelHandlers.UserInteractions.data();
|
53
|
-
await Trace.Handlers.ModelHandlers.Meta.finalize();
|
54
|
-
await Trace.Handlers.ModelHandlers.UserInteractions.finalize();
|
55
|
-
|
56
|
-
assert.throws(() => {
|
57
|
-
const fakeEvent = {} as Trace.Types.Events.Event;
|
58
|
-
Trace.Handlers.ModelHandlers.UserInteractions.handleEvent(fakeEvent);
|
59
|
-
}, 'Handler is not initialized');
|
60
|
-
});
|
61
|
-
});
|
62
|
-
|
63
44
|
it('returns all user interactions', async function() {
|
64
45
|
const traceEvents = await TraceLoader.rawEvents(this, 'slow-interaction-button-click.json.gz');
|
65
46
|
for (const event of traceEvents) {
|
@@ -67,11 +48,7 @@ describe('UserInteractionsHandler', function() {
|
|
67
48
|
}
|
68
49
|
|
69
50
|
const data = Trace.Handlers.ModelHandlers.UserInteractions.data();
|
70
|
-
const clicks = data.allEvents.filter(event => {
|
71
|
-
if (!event.args.data) {
|
72
|
-
return false;
|
73
|
-
}
|
74
|
-
|
51
|
+
const clicks = data.allEvents.filter(Trace.Types.Events.isEventTimingStart).filter(event => {
|
75
52
|
return event.args.data.type === 'click';
|
76
53
|
});
|
77
54
|
|
@@ -184,8 +161,8 @@ describe('UserInteractionsHandler', function() {
|
|
184
161
|
it('detects correct events for a click and keydown interaction', async () => {
|
185
162
|
await processTrace(this, 'slow-interaction-keydown.json.gz');
|
186
163
|
const data = Trace.Handlers.ModelHandlers.UserInteractions.data();
|
187
|
-
const foundInteractions =
|
188
|
-
|
164
|
+
const foundInteractions = data.allEvents.filter(Trace.Types.Events.isEventTimingStart)
|
165
|
+
.filter(e => e.args.data && e.args.data.duration > 1 && e.args.data.interactionId);
|
189
166
|
// We expect there to be 3 interactions:
|
190
167
|
// User clicks on input:
|
191
168
|
// 1.pointerdown, 2. pointerup, 3. click
|
@@ -276,7 +253,7 @@ describe('UserInteractionsHandler', function() {
|
|
276
253
|
},
|
277
254
|
},
|
278
255
|
},
|
279
|
-
] as unknown as Trace.Types.Events.
|
256
|
+
] as unknown as Trace.Types.Events.EventTimingBeginOrEnd[];
|
280
257
|
Trace.Handlers.ModelHandlers.UserInteractions.reset();
|
281
258
|
for (const event of events) {
|
282
259
|
Trace.Handlers.ModelHandlers.UserInteractions.handleEvent(event);
|
@@ -7,7 +7,7 @@ import * as Types from '../types/types.js';
|
|
7
7
|
|
8
8
|
import {data as metaHandlerData} from './MetaHandler.js';
|
9
9
|
import {ScoreClassification} from './PageLoadMetricsHandler.js';
|
10
|
-
import
|
10
|
+
import type {HandlerName} from './types.js';
|
11
11
|
|
12
12
|
// This handler serves two purposes. It generates a list of events that are
|
13
13
|
// used to show user clicks in the timeline. It is also used to gather
|
@@ -16,7 +16,7 @@ import {type HandlerName, HandlerState} from './types.js';
|
|
16
16
|
|
17
17
|
// We don't need to know which process / thread these events occurred in,
|
18
18
|
// because they are effectively global, so we just track all that we find.
|
19
|
-
const allEvents: Types.Events.
|
19
|
+
const allEvents: Types.Events.EventTimingBeginOrEnd[] = [];
|
20
20
|
|
21
21
|
const beginCommitCompositorFrameEvents: Types.Events.BeginCommitCompositorFrame[] = [];
|
22
22
|
const parseMetaViewportEvents: Types.Events.ParseMetaViewport[] = [];
|
@@ -28,7 +28,7 @@ const INP_MEDIUM_TIMING = Helpers.Timing.millisecondsToMicroseconds(Types.Timing
|
|
28
28
|
|
29
29
|
export interface UserInteractionsData {
|
30
30
|
/** All the user events we found in the trace */
|
31
|
-
allEvents: readonly Types.Events.
|
31
|
+
allEvents: readonly Types.Events.EventTimingBeginOrEnd[];
|
32
32
|
/** All the BeginCommitCompositorFrame events we found in the trace */
|
33
33
|
beginCommitCompositorFrameEvents: readonly Types.Events.BeginCommitCompositorFrame[];
|
34
34
|
/** All the ParseMetaViewport events we found in the trace */
|
@@ -64,7 +64,6 @@ const interactionEvents: Types.Events.SyntheticInteractionPair[] = [];
|
|
64
64
|
const interactionEventsWithNoNesting: Types.Events.SyntheticInteractionPair[] = [];
|
65
65
|
const eventTimingEndEventsById = new Map<string, Types.Events.EventTimingEnd>();
|
66
66
|
const eventTimingStartEventsForInteractions: Types.Events.EventTimingBegin[] = [];
|
67
|
-
let handlerState = HandlerState.UNINITIALIZED;
|
68
67
|
|
69
68
|
export function reset(): void {
|
70
69
|
allEvents.length = 0;
|
@@ -75,14 +74,9 @@ export function reset(): void {
|
|
75
74
|
eventTimingEndEventsById.clear();
|
76
75
|
interactionEventsWithNoNesting.length = 0;
|
77
76
|
longestInteractionEvent = null;
|
78
|
-
handlerState = HandlerState.INITIALIZED;
|
79
77
|
}
|
80
78
|
|
81
79
|
export function handleEvent(event: Types.Events.Event): void {
|
82
|
-
if (handlerState !== HandlerState.INITIALIZED) {
|
83
|
-
throw new Error('Handler is not initialized');
|
84
|
-
}
|
85
|
-
|
86
80
|
if (Types.Events.isBeginCommitCompositorFrame(event)) {
|
87
81
|
beginCommitCompositorFrameEvents.push(event);
|
88
82
|
return;
|
@@ -279,18 +273,16 @@ export async function finalize(): Promise<void> {
|
|
279
273
|
// If we cannot find an end event, bail and drop this event.
|
280
274
|
continue;
|
281
275
|
}
|
282
|
-
|
283
|
-
|
284
|
-
// pointerdown, keyup).
|
285
|
-
//
|
286
|
-
// We also need to ensure it has an interactionId. We already checked
|
287
|
-
// this in the handleEvent() function, but we do it here also to satisfy
|
288
|
-
// TypeScript.
|
276
|
+
const {type, interactionId, timeStamp, processingStart, processingEnd} = interactionStartEvent.args.data;
|
277
|
+
if (!type || !interactionId || !timeStamp || !processingStart || !processingEnd) {
|
278
|
+
// A valid interaction event that we care about has to have a type (e.g. pointerdown, keyup).
|
279
|
+
// We also need to ensure it has an interactionId and various timings. There are edge cases where these aren't included in the trace event.
|
289
280
|
continue;
|
290
281
|
}
|
291
282
|
|
292
|
-
// In the future we will add microsecond timestamps to the trace events
|
293
|
-
//
|
283
|
+
// In the future we will add microsecond timestamps to the trace events…
|
284
|
+
// (See https://source.chromium.org/chromium/chromium/src/+/main:third_party/blink/renderer/core/timing/window_performance.cc;l=900-901;drc=b503c262e425eae59ced4a80d59d176ed07152c7 )
|
285
|
+
// …but until then we can use the millisecond precision values that are in
|
294
286
|
// the trace event. To adjust them to be relative to the event.ts and the
|
295
287
|
// trace timestamps, for both processingStart and processingEnd we subtract
|
296
288
|
// the event timestamp (NOT event.ts, but the timeStamp millisecond value
|
@@ -299,17 +291,17 @@ export async function finalize(): Promise<void> {
|
|
299
291
|
// that is relative to event.ts, and can be used when drawing boxes.
|
300
292
|
// There is some inaccuracy here as we are converting milliseconds to microseconds, but it is good enough until the backend emits more accurate numbers.
|
301
293
|
const processingStartRelativeToTraceTime = Types.Timing.MicroSeconds(
|
302
|
-
Helpers.Timing.millisecondsToMicroseconds(
|
303
|
-
Helpers.Timing.millisecondsToMicroseconds(
|
304
|
-
interactionStartEvent.ts,
|
294
|
+
Helpers.Timing.millisecondsToMicroseconds(processingStart) -
|
295
|
+
Helpers.Timing.millisecondsToMicroseconds(timeStamp) + interactionStartEvent.ts,
|
305
296
|
);
|
306
297
|
|
307
298
|
const processingEndRelativeToTraceTime = Types.Timing.MicroSeconds(
|
308
|
-
(Helpers.Timing.millisecondsToMicroseconds(
|
309
|
-
Helpers.Timing.millisecondsToMicroseconds(
|
299
|
+
(Helpers.Timing.millisecondsToMicroseconds(processingEnd) -
|
300
|
+
Helpers.Timing.millisecondsToMicroseconds(timeStamp)) +
|
310
301
|
interactionStartEvent.ts);
|
311
302
|
|
312
|
-
|
303
|
+
// Ultimate frameId fallback only needed for TSC, see comments in the type.
|
304
|
+
const frameId = interactionStartEvent.args.frame ?? interactionStartEvent.args.data.frame ?? '';
|
313
305
|
const navigation = Helpers.Trace.getNavigationForTraceEvent(interactionStartEvent, frameId, navigationsByFrameId);
|
314
306
|
const navigationId = navigation?.args.data?.navigationId;
|
315
307
|
const interactionEvent =
|
@@ -345,7 +337,6 @@ export async function finalize(): Promise<void> {
|
|
345
337
|
interactionEvents.push(interactionEvent);
|
346
338
|
}
|
347
339
|
|
348
|
-
handlerState = HandlerState.FINALIZED;
|
349
340
|
interactionEventsWithNoNesting.push(...removeNestedInteractions(interactionEvents));
|
350
341
|
|
351
342
|
// Pick the longest interactions from the set that were not nested, as we
|