chrome-devtools-frontend 1.0.1512147 → 1.0.1513662
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/docs/cookbook/release_management.md +15 -13
- package/docs/get_the_code.md +114 -35
- package/front_end/Images/src/ai-explorer-badge.svg +114 -0
- package/front_end/Images/src/code-whisperer-badge.svg +166 -0
- package/front_end/Images/src/devtools-user-badge.svg +129 -0
- package/front_end/Images/src/dom-detective-badge.svg +136 -0
- package/front_end/Images/src/speedster-badge.svg +166 -0
- package/front_end/core/common/Color.ts +40 -44
- package/front_end/core/common/Console.ts +4 -4
- package/front_end/core/common/ParsedURL.ts +14 -14
- package/front_end/core/common/ResourceType.ts +20 -20
- package/front_end/core/common/SegmentedRange.ts +13 -14
- package/front_end/core/common/Settings.ts +4 -4
- package/front_end/core/common/StringOutputStream.ts +4 -4
- package/front_end/core/host/GdpClient.ts +76 -2
- package/front_end/core/host/InspectorFrontendHost.ts +4 -1
- package/front_end/core/host/InspectorFrontendHostAPI.ts +2 -0
- package/front_end/core/host/ResourceLoader.ts +2 -2
- package/front_end/core/host/UserMetrics.ts +0 -2
- package/front_end/core/i18n/NumberFormatter.ts +7 -0
- package/front_end/core/protocol_client/InspectorBackend.ts +9 -9
- package/front_end/core/root/Runtime.ts +5 -2
- package/front_end/core/sdk/AccessibilityModel.ts +48 -48
- package/front_end/core/sdk/AnimationModel.ts +78 -79
- package/front_end/core/sdk/CPUProfilerModel.ts +5 -5
- package/front_end/core/sdk/CPUThrottlingManager.ts +17 -17
- package/front_end/core/sdk/CSSMatchedStyles.ts +44 -44
- package/front_end/core/sdk/CSSMedia.ts +22 -22
- package/front_end/core/sdk/CSSModel.ts +4 -4
- package/front_end/core/sdk/CSSProperty.ts +9 -9
- package/front_end/core/sdk/CSSPropertyParser.ts +1 -2
- package/front_end/core/sdk/CSSRule.ts +3 -3
- package/front_end/core/sdk/CSSStyleDeclaration.ts +27 -28
- package/front_end/core/sdk/CSSStyleSheetHeader.ts +13 -13
- package/front_end/core/sdk/CategorizedBreakpoint.ts +4 -4
- package/front_end/core/sdk/ChildTargetManager.ts +6 -6
- package/front_end/core/sdk/CompilerSourceMappingContentProvider.ts +4 -4
- package/front_end/core/sdk/ConsoleModel.ts +24 -24
- package/front_end/core/sdk/Cookie.ts +16 -16
- package/front_end/core/sdk/CookieParser.ts +6 -6
- package/front_end/core/sdk/DOMDebuggerModel.ts +88 -89
- package/front_end/core/sdk/DOMModel.ts +113 -113
- package/front_end/core/sdk/DebuggerModel.ts +102 -103
- package/front_end/core/sdk/EmulationModel.ts +6 -6
- package/front_end/core/sdk/EventBreakpointsModel.ts +5 -5
- package/front_end/core/sdk/HeapProfilerModel.ts +5 -5
- package/front_end/core/sdk/IsolateManager.ts +26 -26
- package/front_end/core/sdk/LayerTreeBase.ts +29 -30
- package/front_end/core/sdk/OverlayModel.ts +6 -6
- package/front_end/core/sdk/Resource.ts +43 -43
- package/front_end/core/sdk/ResourceTreeModel.ts +58 -61
- package/front_end/core/sdk/RuntimeModel.ts +12 -13
- package/front_end/core/sdk/SDKModel.ts +3 -3
- package/front_end/core/sdk/Script.ts +17 -17
- package/front_end/core/sdk/SecurityOriginManager.ts +14 -14
- package/front_end/core/sdk/ServerTiming.ts +2 -2
- package/front_end/core/sdk/ServiceWorkerCacheModel.ts +15 -15
- package/front_end/core/sdk/ServiceWorkerManager.ts +19 -24
- package/front_end/core/sdk/SourceMap.ts +10 -10
- package/front_end/core/sdk/StorageKeyManager.ts +12 -12
- package/front_end/core/sdk/Target.ts +33 -34
- package/front_end/core/sdk/TargetManager.ts +20 -20
- package/front_end/entrypoints/formatter_worker/AcornTokenizer.ts +8 -8
- package/front_end/entrypoints/formatter_worker/HTMLFormatter.ts +7 -7
- package/front_end/entrypoints/heap_snapshot_worker/AllocationProfile.ts +7 -7
- package/front_end/entrypoints/heap_snapshot_worker/HeapSnapshot.ts +24 -24
- package/front_end/entrypoints/main/GlobalAiButton.ts +3 -3
- package/front_end/entrypoints/main/MainImpl.ts +16 -14
- package/front_end/entrypoints/main/main-meta.ts +1 -2
- package/front_end/generated/InspectorBackendCommands.js +3 -2
- package/front_end/generated/SupportedCSSProperties.js +20 -0
- package/front_end/generated/protocol-mapping.d.ts +4 -0
- package/front_end/generated/protocol-proxy-api.d.ts +5 -0
- package/front_end/generated/protocol.ts +20 -0
- package/front_end/models/ai_assistance/agents/PerformanceAgent.ts +18 -35
- package/front_end/models/ai_assistance/ai_assistance.ts +1 -1
- package/front_end/models/ai_assistance/data_formatters/NetworkRequestFormatter.ts +7 -6
- package/front_end/models/ai_assistance/data_formatters/PerformanceInsightFormatter.snapshot.txt +246 -119
- package/front_end/models/ai_assistance/data_formatters/PerformanceInsightFormatter.ts +187 -73
- package/front_end/models/ai_assistance/data_formatters/PerformanceTraceFormatter.snapshot.txt +106 -100
- package/front_end/models/ai_assistance/data_formatters/PerformanceTraceFormatter.ts +20 -27
- package/front_end/models/ai_assistance/data_formatters/UnitFormatters.ts +151 -0
- package/front_end/models/badges/AiExplorerBadge.ts +21 -0
- package/front_end/models/badges/Badge.ts +10 -9
- package/front_end/models/badges/CodeWhispererBadge.ts +21 -0
- package/front_end/models/badges/DOMDetectiveBadge.ts +21 -0
- package/front_end/models/badges/SpeedsterBadge.ts +7 -2
- package/front_end/models/badges/StarterBadge.ts +6 -1
- package/front_end/models/badges/UserBadges.ts +61 -9
- package/front_end/models/bindings/CSSWorkspaceBinding.ts +6 -6
- package/front_end/models/bindings/DebuggerLanguagePlugins.ts +18 -18
- package/front_end/models/bindings/FileUtils.ts +15 -15
- package/front_end/models/bindings/ResourceScriptMapping.ts +14 -14
- package/front_end/models/elements/ElementUpdateRecord.ts +11 -11
- package/front_end/models/emulation/DeviceModeModel.ts +123 -131
- package/front_end/models/emulation/EmulatedDevices.ts +22 -22
- package/front_end/models/extensions/ExtensionPanel.ts +24 -24
- package/front_end/models/extensions/ExtensionServer.ts +4 -4
- package/front_end/models/javascript_metadata/NativeFunctions.js +14 -2
- package/front_end/models/persistence/IsolatedFileSystem.ts +18 -19
- package/front_end/models/persistence/IsolatedFileSystemManager.ts +13 -13
- package/front_end/models/trace/EventsSerializer.ts +5 -5
- package/front_end/models/trace/LanternComputationData.ts +10 -10
- package/front_end/models/trace/ModelImpl.ts +32 -54
- package/front_end/models/trace/Processor.ts +28 -30
- package/front_end/models/trace/extras/FilmStrip.ts +6 -6
- package/front_end/models/trace/extras/StackTraceForEvent.ts +22 -25
- package/front_end/models/trace/extras/ThirdParties.ts +16 -17
- package/front_end/models/trace/extras/TraceFilter.ts +1 -1
- package/front_end/models/trace/handlers/Threads.ts +10 -10
- package/front_end/models/trace/handlers/helpers.ts +9 -9
- package/front_end/models/trace/handlers/types.ts +3 -3
- package/front_end/models/trace/insights/CLSCulprits.ts +12 -14
- package/front_end/models/trace/insights/Cache.ts +8 -4
- package/front_end/models/trace/insights/DOMSize.ts +8 -5
- package/front_end/models/trace/insights/DocumentLatency.ts +2 -2
- package/front_end/models/trace/insights/DuplicatedJavaScript.ts +3 -3
- package/front_end/models/trace/insights/FontDisplay.ts +3 -4
- package/front_end/models/trace/insights/ForcedReflow.ts +3 -3
- package/front_end/models/trace/insights/INPBreakdown.ts +2 -2
- package/front_end/models/trace/insights/ImageDelivery.ts +11 -11
- package/front_end/models/trace/insights/LCPBreakdown.ts +4 -4
- package/front_end/models/trace/insights/LCPDiscovery.ts +4 -4
- package/front_end/models/trace/insights/LegacyJavaScript.ts +2 -2
- package/front_end/models/trace/insights/ModernHTTP.ts +4 -5
- package/front_end/models/trace/insights/NetworkDependencyTree.ts +12 -12
- package/front_end/models/trace/insights/RenderBlocking.ts +9 -10
- package/front_end/models/trace/insights/SlowCSSSelector.ts +2 -2
- package/front_end/models/trace/insights/ThirdParties.ts +4 -5
- package/front_end/models/trace/insights/Viewport.ts +8 -5
- package/front_end/models/trace/insights/types.ts +1 -0
- package/front_end/models/trace/lantern/testing/MetricTestUtils.ts +10 -10
- package/front_end/panels/accessibility/AXBreadcrumbsPane.ts +52 -52
- package/front_end/panels/accessibility/AccessibilitySidebarView.ts +8 -8
- package/front_end/panels/animation/AnimationTimeline.ts +5 -5
- package/front_end/panels/animation/AnimationUI.ts +22 -23
- package/front_end/panels/application/ApplicationPanelSidebar.ts +12 -12
- package/front_end/panels/application/DOMStorageModel.ts +23 -23
- package/front_end/panels/application/ExtensionStorageModel.ts +31 -31
- package/front_end/panels/application/IndexedDBModel.ts +1 -0
- package/front_end/panels/application/PreloadingTreeElement.ts +8 -8
- package/front_end/panels/application/ServiceWorkersView.ts +0 -53
- package/front_end/panels/application/preloading/components/PreloadingDisabledInfobar.ts +2 -2
- package/front_end/panels/application/preloading/components/UsedPreloadingView.ts +2 -2
- package/front_end/panels/common/BadgeNotification.ts +140 -10
- package/front_end/panels/common/GdpSignUpDialog.ts +5 -0
- package/front_end/panels/common/badgeNotification.css +30 -9
- package/front_end/panels/console/ConsoleContextSelector.ts +9 -9
- package/front_end/panels/console/ConsolePrompt.ts +8 -5
- package/front_end/panels/console/ConsoleView.ts +13 -13
- package/front_end/panels/console/ConsoleViewport.ts +29 -29
- package/front_end/panels/coverage/CoverageModel.ts +22 -22
- package/front_end/panels/elements/ClassesPaneWidget.ts +1 -1
- package/front_end/panels/elements/ComputedStyleModel.ts +17 -18
- package/front_end/panels/elements/DOMPath.ts +2 -2
- package/front_end/panels/elements/ElementsPanel.ts +13 -13
- package/front_end/panels/elements/ElementsTreeElement.ts +30 -18
- package/front_end/panels/elements/ElementsTreeOutline.ts +44 -48
- package/front_end/panels/elements/ShortcutTreeElement.ts +4 -4
- package/front_end/panels/elements/StylePropertiesSection.ts +7 -4
- package/front_end/panels/elements/StylePropertyTreeElement.ts +54 -50
- package/front_end/panels/elements/StylesSidebarPane.ts +19 -19
- package/front_end/panels/emulation/DeviceModeToolbar.ts +7 -7
- package/front_end/panels/emulation/DeviceModeView.ts +6 -6
- package/front_end/panels/emulation/MediaQueryInspector.ts +18 -18
- package/front_end/panels/event_listeners/EventListenersView.ts +13 -14
- package/front_end/panels/layer_viewer/LayerTreeOutline.ts +3 -3
- package/front_end/panels/layer_viewer/LayerViewHost.ts +13 -13
- package/front_end/panels/layer_viewer/PaintProfilerView.ts +9 -10
- package/front_end/panels/layer_viewer/TransformController.ts +34 -36
- package/front_end/panels/layers/LayerTreeModel.ts +41 -40
- package/front_end/panels/lighthouse/LighthouseReportSelector.ts +13 -13
- package/front_end/panels/lighthouse/LighthouseStartView.ts +7 -7
- package/front_end/panels/media/PlayerMessagesView.ts +5 -5
- package/front_end/panels/media/TickingFlameChart.ts +24 -24
- package/front_end/panels/media/TickingFlameChartHelpers.ts +32 -32
- package/front_end/panels/network/NetworkItemView.ts +4 -4
- package/front_end/panels/network/NetworkLogViewColumns.ts +29 -29
- package/front_end/panels/network/NetworkPanel.ts +8 -5
- package/front_end/panels/network/ResourceWebSocketFrameView.ts +10 -10
- package/front_end/panels/profiler/HeapDetachedElementsView.ts +3 -3
- package/front_end/panels/profiler/HeapProfileView.ts +1 -1
- package/front_end/panels/profiler/ProfileFlameChartDataProvider.ts +3 -4
- package/front_end/panels/profiler/ProfileHeader.ts +25 -25
- package/front_end/panels/profiler/ProfileLauncherView.ts +5 -6
- package/front_end/panels/recorder/components/ReplaySection.ts +3 -1
- package/front_end/panels/security/OriginTreeElement.ts +8 -8
- package/front_end/panels/security/SecurityPanel.ts +5 -5
- package/front_end/panels/settings/SettingsScreen.ts +18 -18
- package/front_end/panels/settings/components/SyncSection.ts +26 -8
- package/front_end/panels/sources/AiCodeCompletionPlugin.ts +3 -0
- package/front_end/panels/sources/DebuggerPausedMessage.ts +8 -9
- package/front_end/panels/sources/NavigatorView.ts +43 -46
- package/front_end/panels/sources/SourcesPanel.ts +35 -35
- package/front_end/panels/sources/SourcesView.ts +13 -13
- package/front_end/panels/sources/TabbedEditorContainer.ts +19 -22
- package/front_end/panels/sources/UISourceCodeFrame.ts +4 -4
- package/front_end/panels/sources/WatchExpressionsSidebarPane.ts +34 -36
- package/front_end/panels/timeline/AnimationsTrackAppender.ts +3 -3
- package/front_end/panels/timeline/CompatibilityTracksAppender.ts +8 -8
- package/front_end/panels/timeline/CountersGraph.ts +16 -16
- package/front_end/panels/timeline/EntriesFilter.ts +4 -3
- package/front_end/panels/timeline/EventsTimelineTreeView.ts +3 -3
- package/front_end/panels/timeline/GPUTrackAppender.ts +3 -3
- package/front_end/panels/timeline/Initiators.ts +10 -10
- package/front_end/panels/timeline/InteractionsTrackAppender.ts +5 -5
- package/front_end/panels/timeline/LayoutShiftsTrackAppender.ts +7 -7
- package/front_end/panels/timeline/ModificationsManager.ts +8 -15
- package/front_end/panels/timeline/TargetForEvent.ts +2 -2
- package/front_end/panels/timeline/ThirdPartyTreeView.ts +1 -1
- package/front_end/panels/timeline/ThreadAppender.ts +13 -13
- package/front_end/panels/timeline/TimelineDetailsView.ts +6 -14
- package/front_end/panels/timeline/TimelineEventOverview.ts +27 -26
- package/front_end/panels/timeline/TimelineFilters.ts +5 -5
- package/front_end/panels/timeline/TimelineFlameChartDataProvider.ts +54 -53
- package/front_end/panels/timeline/TimelineFlameChartNetworkDataProvider.ts +34 -34
- package/front_end/panels/timeline/TimelineFlameChartView.ts +18 -31
- package/front_end/panels/timeline/TimelineHistoryManager.ts +17 -18
- package/front_end/panels/timeline/TimelineMiniMap.ts +6 -6
- package/front_end/panels/timeline/TimelinePaintProfilerView.ts +6 -6
- package/front_end/panels/timeline/TimelinePanel.ts +73 -68
- package/front_end/panels/timeline/TimelineSelectorStatsView.ts +7 -5
- package/front_end/panels/timeline/TimelineTreeView.ts +10 -10
- package/front_end/panels/timeline/TimelineUIUtils.ts +47 -46
- package/front_end/panels/timeline/TimingsTrackAppender.ts +12 -12
- package/front_end/panels/timeline/TracingLayerTree.ts +43 -43
- package/front_end/panels/timeline/TrackConfigBanner.ts +6 -6
- package/front_end/panels/timeline/TrackConfiguration.ts +1 -1
- package/front_end/panels/timeline/components/DetailsView.ts +4 -4
- package/front_end/panels/timeline/components/LayoutShiftDetails.ts +12 -21
- package/front_end/panels/timeline/components/LiveMetricsView.ts +2 -1
- package/front_end/panels/timeline/components/NetworkRequestDetails.ts +5 -5
- package/front_end/panels/timeline/components/Sidebar.ts +4 -14
- package/front_end/panels/timeline/components/SidebarInsightsTab.ts +13 -36
- package/front_end/panels/timeline/components/SidebarSingleInsightSet.ts +21 -19
- package/front_end/panels/timeline/components/insights/BaseInsightComponent.ts +1 -1
- package/front_end/panels/timeline/components/insights/Cache.ts +4 -0
- package/front_end/panels/timeline/components/insights/DOMSize.ts +5 -1
- package/front_end/panels/timeline/components/insights/Helpers.ts +19 -0
- package/front_end/panels/timeline/components/insights/NetworkDependencyTree.ts +1 -1
- package/front_end/panels/timeline/components/insights/Viewport.ts +4 -0
- package/front_end/panels/timeline/overlays/OverlaysImpl.ts +1 -1
- package/front_end/panels/timeline/utils/AICallTree.ts +11 -11
- package/front_end/panels/timeline/utils/AIContext.ts +17 -19
- package/front_end/panels/timeline/utils/EntityMapper.ts +6 -5
- package/front_end/panels/timeline/utils/EntryName.ts +2 -2
- package/front_end/panels/timeline/utils/EntryNodes.ts +5 -5
- package/front_end/panels/timeline/utils/EntryStyles.ts +4 -4
- package/front_end/panels/timeline/utils/FreshRecording.ts +3 -3
- package/front_end/panels/timeline/utils/Helpers.ts +0 -18
- package/front_end/panels/timeline/utils/InsightAIContext.ts +6 -6
- package/front_end/panels/timeline/utils/SourceMapsResolver.ts +7 -7
- package/front_end/panels/webauthn/WebauthnPane.ts +1 -0
- package/front_end/third_party/chromium/README.chromium +1 -1
- package/front_end/third_party/codemirror.next/chunk/angular.js +1 -1
- package/front_end/third_party/codemirror.next/chunk/angular.js.map +1 -1
- package/front_end/third_party/codemirror.next/chunk/codemirror.js +1 -1
- package/front_end/third_party/codemirror.next/chunk/codemirror.js.map +1 -1
- package/front_end/third_party/codemirror.next/chunk/cpp.js +1 -1
- package/front_end/third_party/codemirror.next/chunk/cpp.js.map +1 -1
- package/front_end/third_party/codemirror.next/chunk/java.js +1 -1
- package/front_end/third_party/codemirror.next/chunk/java.js.map +1 -1
- package/front_end/third_party/codemirror.next/chunk/legacy.js +1 -1
- package/front_end/third_party/codemirror.next/chunk/legacy.js.map +1 -1
- package/front_end/third_party/codemirror.next/chunk/less.js +1 -1
- package/front_end/third_party/codemirror.next/chunk/less.js.map +1 -1
- package/front_end/third_party/codemirror.next/chunk/markdown.js +1 -1
- package/front_end/third_party/codemirror.next/chunk/markdown.js.map +1 -1
- package/front_end/third_party/codemirror.next/chunk/php.js +1 -1
- package/front_end/third_party/codemirror.next/chunk/php.js.map +1 -1
- package/front_end/third_party/codemirror.next/chunk/python.js +1 -1
- package/front_end/third_party/codemirror.next/chunk/python.js.map +1 -1
- package/front_end/third_party/codemirror.next/chunk/sass.js +1 -1
- package/front_end/third_party/codemirror.next/chunk/sass.js.map +1 -1
- package/front_end/third_party/codemirror.next/chunk/svelte.js +1 -1
- package/front_end/third_party/codemirror.next/chunk/svelte.js.map +1 -1
- package/front_end/third_party/codemirror.next/chunk/vue.js +1 -1
- package/front_end/third_party/codemirror.next/chunk/vue.js.map +1 -1
- package/front_end/third_party/codemirror.next/chunk/wast.js +1 -1
- package/front_end/third_party/codemirror.next/chunk/wast.js.map +1 -1
- package/front_end/third_party/codemirror.next/chunk/xml.js +1 -1
- package/front_end/third_party/codemirror.next/chunk/xml.js.map +1 -1
- package/front_end/third_party/codemirror.next/codemirror.next.js +1 -1
- package/front_end/third_party/codemirror.next/package.json +1 -1
- package/front_end/third_party/codemirror.next/rebuild.sh +1 -1
- package/front_end/third_party/json5/rebuild.sh +1 -1
- package/front_end/third_party/legacy-javascript/{update.sh → rebuild.sh} +1 -1
- package/front_end/third_party/lit/lib/decorators.d.ts +26 -9
- package/front_end/third_party/lit/lib/decorators.js +5 -5
- package/front_end/third_party/lit/lib/decorators.js.map +1 -1
- package/front_end/third_party/lit/lib/directive.js.map +1 -1
- package/front_end/third_party/lit/lib/directives.js +8 -13
- package/front_end/third_party/lit/lib/directives.js.map +1 -1
- package/front_end/third_party/lit/lib/lit.d.ts +26 -9
- package/front_end/third_party/lit/lib/lit.js +5 -5
- package/front_end/third_party/lit/lib/lit.js.map +1 -1
- package/front_end/third_party/lit/lib/static-html.js +2 -2
- package/front_end/third_party/lit/lib/static-html.js.map +1 -1
- package/front_end/third_party/lit/rebuild.sh +1 -1
- package/front_end/third_party/third-party-web/rebuild.sh +1 -1
- package/front_end/ui/components/dialogs/Dialog.ts +6 -7
- package/front_end/ui/legacy/ActionRegistration.ts +9 -9
- package/front_end/ui/legacy/DockController.ts +18 -18
- package/front_end/ui/legacy/FilterBar.ts +7 -7
- package/front_end/ui/legacy/Fragment.ts +4 -4
- package/front_end/ui/legacy/GlassPane.ts +12 -12
- package/front_end/ui/legacy/InspectorView.ts +5 -15
- package/front_end/ui/legacy/ListControl.ts +27 -27
- package/front_end/ui/legacy/ListWidget.ts +4 -4
- package/front_end/ui/legacy/PopoverHelper.ts +4 -4
- package/front_end/ui/legacy/ShortcutRegistry.ts +17 -17
- package/front_end/ui/legacy/TabbedPane.ts +74 -75
- package/front_end/ui/legacy/TextPrompt.ts +31 -31
- package/front_end/ui/legacy/Toolbar.ts +13 -14
- package/front_end/ui/legacy/ViewManager.ts +30 -31
- package/front_end/ui/legacy/Widget.ts +6 -6
- package/front_end/ui/legacy/XLink.ts +9 -9
- package/front_end/ui/legacy/ZoomManager.ts +9 -9
- package/front_end/ui/legacy/components/color_picker/ContrastDetails.ts +27 -27
- package/front_end/ui/legacy/components/color_picker/ContrastInfo.ts +30 -32
- package/front_end/ui/legacy/components/color_picker/Spectrum.ts +15 -15
- package/front_end/ui/legacy/components/data_grid/DataGrid.ts +64 -64
- package/front_end/ui/legacy/components/data_grid/ShowMoreDataGridNode.ts +2 -2
- package/front_end/ui/legacy/components/object_ui/ObjectPropertiesSection.ts +10 -11
- package/front_end/ui/legacy/components/perf_ui/ChartViewport.ts +12 -12
- package/front_end/ui/legacy/components/perf_ui/FlameChart.ts +3 -3
- package/front_end/ui/legacy/components/perf_ui/TimelineGrid.ts +14 -14
- package/front_end/ui/legacy/components/perf_ui/TimelineOverviewPane.ts +8 -8
- package/front_end/ui/legacy/components/quick_open/CommandMenu.ts +5 -5
- package/front_end/ui/legacy/components/source_frame/ResourceSourceFrame.ts +4 -4
- package/front_end/ui/legacy/filter.css +1 -1
- package/front_end/ui/legacy/inspectorCommon.css +1 -1
- package/front_end/ui/legacy/softDropDownButton.css +1 -1
- package/front_end/ui/legacy/theme_support/ThemeSupport.ts +4 -4
- package/front_end/ui/visual_logging/KnownContextValues.ts +2 -2
- package/package.json +1 -1
- package/front_end/models/ai_assistance/data_formatters/Types.ts +0 -9
@@ -476,6 +476,9 @@ const UIStrings = {
|
|
476
476
|
const str_ = i18n.i18n.registerUIStrings('panels/timeline/TimelineUIUtils.ts', UIStrings);
|
477
477
|
const i18nString = i18n.i18n.getLocalizedString.bind(undefined, str_);
|
478
478
|
|
479
|
+
// Look for scheme:// plus text and exclude any punctuation at the end.
|
480
|
+
export const URL_REGEX = /(?:[a-zA-Z][a-zA-Z0-9+.-]{2,}:\/\/)[^\s"]{2,}[^\s"'\)\}\],:;.!?]/u;
|
481
|
+
|
479
482
|
let eventDispatchDesciptors: EventDispatchTypeDescriptor[];
|
480
483
|
|
481
484
|
let colorGenerator: Common.Color.Generator;
|
@@ -524,7 +527,7 @@ export class TimelineUIUtils {
|
|
524
527
|
}
|
525
528
|
|
526
529
|
static testContentMatching(
|
527
|
-
traceEvent: Trace.Types.Events.Event, regExp: RegExp,
|
530
|
+
traceEvent: Trace.Types.Events.Event, regExp: RegExp, handlerData?: Trace.Handlers.Types.HandlerData): boolean {
|
528
531
|
const title = TimelineUIUtils.eventStyle(traceEvent).title;
|
529
532
|
const tokens = [title];
|
530
533
|
|
@@ -535,14 +538,14 @@ export class TimelineUIUtils {
|
|
535
538
|
// legacy model which does not have a reference to the new engine's data.
|
536
539
|
// So if we are missing the data, we just fallback to the name from the
|
537
540
|
// callFrame.
|
538
|
-
if (!
|
541
|
+
if (!handlerData?.Samples) {
|
539
542
|
tokens.push(traceEvent.callFrame.functionName);
|
540
543
|
} else {
|
541
|
-
tokens.push(Trace.Handlers.ModelHandlers.Samples.getProfileCallFunctionName(
|
544
|
+
tokens.push(Trace.Handlers.ModelHandlers.Samples.getProfileCallFunctionName(handlerData.Samples, traceEvent));
|
542
545
|
}
|
543
546
|
}
|
544
|
-
if (
|
545
|
-
const url = Trace.Handlers.Helpers.getNonResolvedURL(traceEvent,
|
547
|
+
if (handlerData) {
|
548
|
+
const url = Trace.Handlers.Helpers.getNonResolvedURL(traceEvent, handlerData);
|
546
549
|
if (url) {
|
547
550
|
tokens.push(url);
|
548
551
|
}
|
@@ -648,7 +651,7 @@ export class TimelineUIUtils {
|
|
648
651
|
|
649
652
|
static async buildDetailsNodeForTraceEvent(
|
650
653
|
event: Trace.Types.Events.Event, target: SDK.Target.Target|null, linkifier: LegacyComponents.Linkifier.Linkifier,
|
651
|
-
isFreshRecording = false, parsedTrace: Trace.
|
654
|
+
isFreshRecording = false, parsedTrace: Trace.TraceModel.ParsedTrace): Promise<Node|null> {
|
652
655
|
let details: HTMLElement|HTMLSpanElement|(Element | null)|Text|null = null;
|
653
656
|
let detailsText;
|
654
657
|
// TODO(40287735): update this code with type-safe data checks.
|
@@ -669,7 +672,7 @@ export class TimelineUIUtils {
|
|
669
672
|
case Trace.Types.Events.Name.RESOURCE_RECEIVE_DATA:
|
670
673
|
case Trace.Types.Events.Name.RESOURCE_RECEIVE_RESPONSE:
|
671
674
|
case Trace.Types.Events.Name.RESOURCE_FINISH: {
|
672
|
-
const url = Trace.Handlers.Helpers.getNonResolvedURL(event, parsedTrace);
|
675
|
+
const url = Trace.Handlers.Helpers.getNonResolvedURL(event, parsedTrace.data);
|
673
676
|
if (url) {
|
674
677
|
const options = {
|
675
678
|
tabStop: true,
|
@@ -897,9 +900,7 @@ export class TimelineUIUtils {
|
|
897
900
|
* of the link is the URL, so the visible string to the user is unchanged.
|
898
901
|
*/
|
899
902
|
static parseStringForLinks(rawString: string): DocumentFragment {
|
900
|
-
|
901
|
-
const urlRegex = /(?:[a-zA-Z][a-zA-Z0-9+.-]{2,}:\/\/)[^\s"]{2,}[^\s"'\)\}\],:;.!?]/u;
|
902
|
-
const results = TextUtils.TextUtils.Utils.splitStringByRegexes(rawString, [urlRegex]);
|
903
|
+
const results = TextUtils.TextUtils.Utils.splitStringByRegexes(rawString, [URL_REGEX]);
|
903
904
|
const nodes = results.map(result => {
|
904
905
|
if (result.regexIndex === -1) {
|
905
906
|
return result.value;
|
@@ -913,7 +914,7 @@ export class TimelineUIUtils {
|
|
913
914
|
}
|
914
915
|
|
915
916
|
static async buildTraceEventDetails(
|
916
|
-
parsedTrace: Trace.
|
917
|
+
parsedTrace: Trace.TraceModel.ParsedTrace,
|
917
918
|
event: Trace.Types.Events.Event,
|
918
919
|
linkifier: LegacyComponents.Linkifier.Linkifier,
|
919
920
|
canShowPieChart: boolean,
|
@@ -932,7 +933,7 @@ export class TimelineUIUtils {
|
|
932
933
|
// @ts-expect-error TODO(crbug.com/1011811): Remove symbol usage.
|
933
934
|
if (typeof event[previewElementSymbol] === 'undefined') {
|
934
935
|
let previewElement: (Element|null)|null = null;
|
935
|
-
const url = Trace.Handlers.Helpers.getNonResolvedURL(event, parsedTrace);
|
936
|
+
const url = Trace.Handlers.Helpers.getNonResolvedURL(event, parsedTrace.data);
|
936
937
|
if (url) {
|
937
938
|
previewElement = await LegacyComponents.ImagePreview.ImagePreview.build(url, false, {
|
938
939
|
imageAltText: LegacyComponents.ImagePreview.ImagePreview.defaultAltTextForImageURL(url),
|
@@ -964,8 +965,8 @@ export class TimelineUIUtils {
|
|
964
965
|
const unsafeEventArgs = event.args as Record<string, any>;
|
965
966
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
966
967
|
const unsafeEventData = event.args?.data as Record<string, any>;
|
967
|
-
const initiator = parsedTrace.Initiators.eventToInitiator.get(event) ?? null;
|
968
|
-
const initiatorFor = parsedTrace.Initiators.initiatorToEvents.get(event) ?? null;
|
968
|
+
const initiator = parsedTrace.data.Initiators.eventToInitiator.get(event) ?? null;
|
969
|
+
const initiatorFor = parsedTrace.data.Initiators.initiatorToEvents.get(event) ?? null;
|
969
970
|
|
970
971
|
let url: Platform.DevToolsPath.UrlString|null = null;
|
971
972
|
|
@@ -1002,7 +1003,7 @@ export class TimelineUIUtils {
|
|
1002
1003
|
contentHelper.appendElementRow(i18nString(UIStrings.details), detailContainer);
|
1003
1004
|
}
|
1004
1005
|
|
1005
|
-
if (parsedTrace.Meta.traceIsGeneric) {
|
1006
|
+
if (parsedTrace.data.Meta.traceIsGeneric) {
|
1006
1007
|
TimelineUIUtils.renderEventJson(event, contentHelper);
|
1007
1008
|
return contentHelper.fragment;
|
1008
1009
|
}
|
@@ -1222,7 +1223,7 @@ export class TimelineUIUtils {
|
|
1222
1223
|
case Trace.Types.Events.Name.DECODE_IMAGE:
|
1223
1224
|
case Trace.Types.Events.Name.DRAW_LAZY_PIXEL_REF: {
|
1224
1225
|
relatedNodeLabel = i18nString(UIStrings.ownerElement);
|
1225
|
-
url = Trace.Handlers.Helpers.getNonResolvedURL(event, parsedTrace);
|
1226
|
+
url = Trace.Handlers.Helpers.getNonResolvedURL(event, parsedTrace.data);
|
1226
1227
|
if (url) {
|
1227
1228
|
const options = {
|
1228
1229
|
tabStop: true,
|
@@ -1512,7 +1513,7 @@ export class TimelineUIUtils {
|
|
1512
1513
|
const stackTrace = Trace.Helpers.Trace.getZeroIndexedStackTraceInEventPayload(event);
|
1513
1514
|
if (Trace.Types.Events.isUserTiming(event) || Trace.Types.Extensions.isSyntheticExtensionEntry(event) ||
|
1514
1515
|
Trace.Types.Events.isProfileCall(event) || initiator || initiatorFor || stackTrace ||
|
1515
|
-
parsedTrace?.Invalidations.invalidationsForEvent.get(event)) {
|
1516
|
+
parsedTrace?.data.Invalidations.invalidationsForEvent.get(event)) {
|
1516
1517
|
await TimelineUIUtils.generateCauses(event, contentHelper, parsedTrace);
|
1517
1518
|
}
|
1518
1519
|
|
@@ -1698,11 +1699,11 @@ export class TimelineUIUtils {
|
|
1698
1699
|
|
1699
1700
|
static async generateCauses(
|
1700
1701
|
event: Trace.Types.Events.Event, contentHelper: TimelineDetailsContentHelper,
|
1701
|
-
parsedTrace: Trace.
|
1702
|
+
parsedTrace: Trace.TraceModel.ParsedTrace): Promise<void> {
|
1702
1703
|
const {startTime} = Trace.Helpers.Timing.eventTimingsMilliSeconds(event);
|
1703
1704
|
let initiatorStackLabel = i18nString(UIStrings.initiatorStackTrace);
|
1704
1705
|
let stackLabel = i18nString(UIStrings.stackTrace);
|
1705
|
-
const stackTraceForEvent = Trace.Extras.StackTraceForEvent.get(event, parsedTrace);
|
1706
|
+
const stackTraceForEvent = Trace.Extras.StackTraceForEvent.get(event, parsedTrace.data);
|
1706
1707
|
if (stackTraceForEvent?.callFrames.length || stackTraceForEvent?.description || stackTraceForEvent?.parent) {
|
1707
1708
|
contentHelper.addSection(i18nString(UIStrings.stackTrace));
|
1708
1709
|
contentHelper.createChildStackTraceElement(stackTraceForEvent);
|
@@ -1735,9 +1736,9 @@ export class TimelineUIUtils {
|
|
1735
1736
|
break;
|
1736
1737
|
}
|
1737
1738
|
|
1738
|
-
const initiator = parsedTrace.Initiators.eventToInitiator.get(event);
|
1739
|
-
const initiatorFor = parsedTrace.Initiators.initiatorToEvents.get(event);
|
1740
|
-
const invalidations = parsedTrace.Invalidations.invalidationsForEvent.get(event);
|
1739
|
+
const initiator = parsedTrace.data.Initiators.eventToInitiator.get(event);
|
1740
|
+
const initiatorFor = parsedTrace.data.Initiators.initiatorToEvents.get(event);
|
1741
|
+
const invalidations = parsedTrace.data.Invalidations.invalidationsForEvent.get(event);
|
1741
1742
|
|
1742
1743
|
if (initiator) {
|
1743
1744
|
// If we have an initiator for the event, we can show its stack trace, a link to reveal the initiator,
|
@@ -1775,7 +1776,7 @@ export class TimelineUIUtils {
|
|
1775
1776
|
}
|
1776
1777
|
|
1777
1778
|
if (invalidations?.length) {
|
1778
|
-
const totalInvalidations = parsedTrace.Invalidations.invalidationCountForEvent.get(event) ??
|
1779
|
+
const totalInvalidations = parsedTrace.data.Invalidations.invalidationCountForEvent.get(event) ??
|
1779
1780
|
0; // Won't be 0, but saves us dealing with undefined.
|
1780
1781
|
contentHelper.addSection(i18nString(UIStrings.invalidations, {PH1: totalInvalidations}));
|
1781
1782
|
await TimelineUIUtils.generateInvalidationsList(invalidations, contentHelper);
|
@@ -1907,9 +1908,9 @@ export class TimelineUIUtils {
|
|
1907
1908
|
|
1908
1909
|
/** Populates the passed object then returns true/false if it makes sense to show the pie chart */
|
1909
1910
|
private static aggregatedStatsForTraceEvent(
|
1910
|
-
total: TimeRangeCategoryStats, parsedTrace: Trace.
|
1911
|
+
total: TimeRangeCategoryStats, parsedTrace: Trace.TraceModel.ParsedTrace,
|
1911
1912
|
event: Trace.Types.Events.Event): boolean {
|
1912
|
-
const node = parsedTrace.Renderer.entryToNode.get(event);
|
1913
|
+
const node = parsedTrace.data.Renderer.entryToNode.get(event);
|
1913
1914
|
if (!node) {
|
1914
1915
|
return false;
|
1915
1916
|
}
|
@@ -1958,9 +1959,9 @@ export class TimelineUIUtils {
|
|
1958
1959
|
}
|
1959
1960
|
|
1960
1961
|
static async buildPicturePreviewContent(
|
1961
|
-
parsedTrace: Trace.
|
1962
|
+
parsedTrace: Trace.TraceModel.ParsedTrace, event: Trace.Types.Events.Paint,
|
1962
1963
|
target: SDK.Target.Target): Promise<Element|null> {
|
1963
|
-
const snapshotEvent = parsedTrace.LayerTree.paintsToSnapshots.get(event);
|
1964
|
+
const snapshotEvent = parsedTrace.data.LayerTree.paintsToSnapshots.get(event);
|
1964
1965
|
if (!snapshotEvent) {
|
1965
1966
|
return null;
|
1966
1967
|
}
|
@@ -2307,7 +2308,7 @@ export class TimelineUIUtils {
|
|
2307
2308
|
}
|
2308
2309
|
|
2309
2310
|
static getOriginWithEntity(
|
2310
|
-
entityMapper: Utils.EntityMapper.EntityMapper|null, parsedTrace: Trace.
|
2311
|
+
entityMapper: Utils.EntityMapper.EntityMapper|null, parsedTrace: Trace.TraceModel.ParsedTrace,
|
2311
2312
|
event: Trace.Types.Events.Event): string|null {
|
2312
2313
|
const resolvedURL = Utils.SourceMapsResolver.SourceMapsResolver.resolvedURLForEntry(parsedTrace, event);
|
2313
2314
|
if (!resolvedURL) {
|
@@ -2346,7 +2347,7 @@ export class EventDispatchTypeDescriptor {
|
|
2346
2347
|
|
2347
2348
|
export class TimelineDetailsContentHelper {
|
2348
2349
|
fragment: DocumentFragment;
|
2349
|
-
|
2350
|
+
#linkifier: LegacyComponents.Linkifier.Linkifier|null;
|
2350
2351
|
private target: SDK.Target.Target|null;
|
2351
2352
|
element: HTMLDivElement;
|
2352
2353
|
private tableElement: HTMLElement;
|
@@ -2354,7 +2355,7 @@ export class TimelineDetailsContentHelper {
|
|
2354
2355
|
constructor(target: SDK.Target.Target|null, linkifier: LegacyComponents.Linkifier.Linkifier|null) {
|
2355
2356
|
this.fragment = document.createDocumentFragment();
|
2356
2357
|
|
2357
|
-
this
|
2358
|
+
this.#linkifier = linkifier;
|
2358
2359
|
this.target = target;
|
2359
2360
|
|
2360
2361
|
this.element = document.createElement('div');
|
@@ -2385,7 +2386,7 @@ export class TimelineDetailsContentHelper {
|
|
2385
2386
|
}
|
2386
2387
|
|
2387
2388
|
linkifier(): LegacyComponents.Linkifier.Linkifier|null {
|
2388
|
-
return this
|
2389
|
+
return this.#linkifier;
|
2389
2390
|
}
|
2390
2391
|
|
2391
2392
|
appendTextRow(title: string, value: string|number|boolean): void {
|
@@ -2415,7 +2416,7 @@ export class TimelineDetailsContentHelper {
|
|
2415
2416
|
|
2416
2417
|
appendLocationRow(
|
2417
2418
|
title: string, url: string, startLine: number, startColumn?: number, text?: string, omitOrigin?: boolean): void {
|
2418
|
-
if (!this
|
2419
|
+
if (!this.#linkifier) {
|
2419
2420
|
return;
|
2420
2421
|
}
|
2421
2422
|
|
@@ -2427,7 +2428,7 @@ export class TimelineDetailsContentHelper {
|
|
2427
2428
|
text,
|
2428
2429
|
omitOrigin,
|
2429
2430
|
};
|
2430
|
-
const link = this.
|
2431
|
+
const link = this.#linkifier.maybeLinkifyScriptLocation(
|
2431
2432
|
this.target, null, url as Platform.DevToolsPath.UrlString, startLine, options);
|
2432
2433
|
if (!link) {
|
2433
2434
|
return;
|
@@ -2436,11 +2437,11 @@ export class TimelineDetailsContentHelper {
|
|
2436
2437
|
}
|
2437
2438
|
|
2438
2439
|
appendLocationRange(title: string, url: Platform.DevToolsPath.UrlString, startLine: number, endLine?: number): void {
|
2439
|
-
if (!this
|
2440
|
+
if (!this.#linkifier || !this.target) {
|
2440
2441
|
return;
|
2441
2442
|
}
|
2442
2443
|
const locationContent = document.createElement('span');
|
2443
|
-
const link = this.
|
2444
|
+
const link = this.#linkifier.maybeLinkifyScriptLocation(
|
2444
2445
|
this.target, null, url, startLine, {tabStop: true, inlineFrameIndex: 0});
|
2445
2446
|
if (!link) {
|
2446
2447
|
return;
|
@@ -2452,7 +2453,7 @@ export class TimelineDetailsContentHelper {
|
|
2452
2453
|
}
|
2453
2454
|
|
2454
2455
|
createChildStackTraceElement(stackTrace: Protocol.Runtime.StackTrace): void {
|
2455
|
-
if (!this
|
2456
|
+
if (!this.#linkifier) {
|
2456
2457
|
return;
|
2457
2458
|
}
|
2458
2459
|
const resolvedStackTrace: Protocol.Runtime.StackTrace = structuredClone(stackTrace);
|
@@ -2470,7 +2471,7 @@ export class TimelineDetailsContentHelper {
|
|
2470
2471
|
const stackTraceElement =
|
2471
2472
|
this.tableElement.createChild('div', 'timeline-details-view-row timeline-details-stack-values');
|
2472
2473
|
const callFrameContents = new LegacyComponents.JSPresentationUtils.StackTracePreviewContent(
|
2473
|
-
undefined, this.target ?? undefined, this
|
2474
|
+
undefined, this.target ?? undefined, this.#linkifier,
|
2474
2475
|
{stackTrace: resolvedStackTrace, tabStops: true, showColumnNumber: true});
|
2475
2476
|
callFrameContents.markAsRoot();
|
2476
2477
|
callFrameContents.show(stackTraceElement);
|
@@ -2494,7 +2495,7 @@ export interface TimelineMarkerStyle {
|
|
2494
2495
|
* the LCP (for example) relative to the last navigation.
|
2495
2496
|
**/
|
2496
2497
|
export function timeStampForEventAdjustedForClosestNavigationIfPossible(
|
2497
|
-
event: Trace.Types.Events.Event, parsedTrace: Trace.
|
2498
|
+
event: Trace.Types.Events.Event, parsedTrace: Trace.TraceModel.ParsedTrace|null): Trace.Types.Timing.Milli {
|
2498
2499
|
if (!parsedTrace) {
|
2499
2500
|
const {startTime} = Trace.Helpers.Timing.eventTimingsMilliSeconds(event);
|
2500
2501
|
return startTime;
|
@@ -2502,9 +2503,9 @@ export function timeStampForEventAdjustedForClosestNavigationIfPossible(
|
|
2502
2503
|
|
2503
2504
|
const time = Trace.Helpers.Timing.timeStampForEventAdjustedByClosestNavigation(
|
2504
2505
|
event,
|
2505
|
-
parsedTrace.Meta.traceBounds,
|
2506
|
-
parsedTrace.Meta.navigationsByNavigationId,
|
2507
|
-
parsedTrace.Meta.navigationsByFrameId,
|
2506
|
+
parsedTrace.data.Meta.traceBounds,
|
2507
|
+
parsedTrace.data.Meta.navigationsByNavigationId,
|
2508
|
+
parsedTrace.data.Meta.navigationsByFrameId,
|
2508
2509
|
);
|
2509
2510
|
return Trace.Helpers.Timing.microToMilli(time);
|
2510
2511
|
}
|
@@ -2515,7 +2516,7 @@ export function timeStampForEventAdjustedForClosestNavigationIfPossible(
|
|
2515
2516
|
* the LCP time. This method does not filter out events: for example, it treats
|
2516
2517
|
* every LCP Candidate event as a potential marker event.
|
2517
2518
|
**/
|
2518
|
-
export function isMarkerEvent(parsedTrace: Trace.
|
2519
|
+
export function isMarkerEvent(parsedTrace: Trace.TraceModel.ParsedTrace, event: Trace.Types.Events.Event): boolean {
|
2519
2520
|
const {Name} = Trace.Types.Events;
|
2520
2521
|
|
2521
2522
|
if (event.name === Name.TIME_STAMP || event.name === Name.NAVIGATION_START) {
|
@@ -2523,7 +2524,7 @@ export function isMarkerEvent(parsedTrace: Trace.Handlers.Types.ParsedTrace, eve
|
|
2523
2524
|
}
|
2524
2525
|
|
2525
2526
|
if (Trace.Types.Events.isFirstContentfulPaint(event) || Trace.Types.Events.isFirstPaint(event)) {
|
2526
|
-
return event.args.frame === parsedTrace.Meta.mainFrameId;
|
2527
|
+
return event.args.frame === parsedTrace.data.Meta.mainFrameId;
|
2527
2528
|
}
|
2528
2529
|
|
2529
2530
|
if (Trace.Types.Events.isMarkDOMContent(event) || Trace.Types.Events.isMarkLoad(event) ||
|
@@ -2547,10 +2548,10 @@ export function isMarkerEvent(parsedTrace: Trace.Handlers.Types.ParsedTrace, eve
|
|
2547
2548
|
}
|
2548
2549
|
|
2549
2550
|
function getEventSelfTime(
|
2550
|
-
event: Trace.Types.Events.Event, parsedTrace: Trace.
|
2551
|
+
event: Trace.Types.Events.Event, parsedTrace: Trace.TraceModel.ParsedTrace): Trace.Types.Timing.Micro {
|
2551
2552
|
const mapToUse = Trace.Types.Extensions.isSyntheticExtensionEntry(event) ?
|
2552
|
-
parsedTrace.ExtensionTraceData.entryToNode :
|
2553
|
-
parsedTrace.Renderer.entryToNode;
|
2553
|
+
parsedTrace.data.ExtensionTraceData.entryToNode :
|
2554
|
+
parsedTrace.data.Renderer.entryToNode;
|
2554
2555
|
const selfTime = mapToUse.get(event)?.selfTime;
|
2555
2556
|
return selfTime ? selfTime : Trace.Types.Timing.Micro(0);
|
2556
2557
|
}
|
@@ -48,16 +48,16 @@ export class TimingsTrackAppender implements TrackAppender {
|
|
48
48
|
|
49
49
|
#colorGenerator: Common.Color.Generator;
|
50
50
|
#compatibilityBuilder: CompatibilityTracksAppender;
|
51
|
-
#parsedTrace: Readonly<Trace.
|
51
|
+
#parsedTrace: Readonly<Trace.TraceModel.ParsedTrace>;
|
52
52
|
#extensionMarkers: readonly Trace.Types.Extensions.SyntheticExtensionMarker[];
|
53
53
|
constructor(
|
54
|
-
compatibilityBuilder: CompatibilityTracksAppender, parsedTrace: Trace.
|
54
|
+
compatibilityBuilder: CompatibilityTracksAppender, parsedTrace: Trace.TraceModel.ParsedTrace,
|
55
55
|
colorGenerator: Common.Color.Generator) {
|
56
56
|
this.#compatibilityBuilder = compatibilityBuilder;
|
57
57
|
this.#colorGenerator = colorGenerator;
|
58
58
|
this.#parsedTrace = parsedTrace;
|
59
59
|
const extensionDataEnabled = TimelinePanel.extensionDataVisibilitySetting().get();
|
60
|
-
this.#extensionMarkers = extensionDataEnabled ? this.#parsedTrace.ExtensionTraceData.extensionMarkers : [];
|
60
|
+
this.#extensionMarkers = extensionDataEnabled ? this.#parsedTrace.data.ExtensionTraceData.extensionMarkers : [];
|
61
61
|
}
|
62
62
|
|
63
63
|
/**
|
@@ -71,14 +71,14 @@ export class TimingsTrackAppender implements TrackAppender {
|
|
71
71
|
*/
|
72
72
|
appendTrackAtLevel(trackStartLevel: number, expanded?: boolean): number {
|
73
73
|
const extensionMarkersAreEmpty = this.#extensionMarkers.length === 0;
|
74
|
-
const performanceMarks = this.#parsedTrace.UserTimings.performanceMarks.filter(
|
74
|
+
const performanceMarks = this.#parsedTrace.data.UserTimings.performanceMarks.filter(
|
75
75
|
m => !Trace.Handlers.ModelHandlers.ExtensionTraceData.extensionDataInPerformanceTiming(m).devtoolsObj);
|
76
|
-
const performanceMeasures = this.#parsedTrace.UserTimings.performanceMeasures.filter(
|
76
|
+
const performanceMeasures = this.#parsedTrace.data.UserTimings.performanceMeasures.filter(
|
77
77
|
m => !Trace.Handlers.ModelHandlers.ExtensionTraceData.extensionDataInPerformanceTiming(m).devtoolsObj);
|
78
|
-
const timestampEvents = this.#parsedTrace.UserTimings.timestampEvents.filter(
|
78
|
+
const timestampEvents = this.#parsedTrace.data.UserTimings.timestampEvents.filter(
|
79
79
|
timeStamp =>
|
80
80
|
!Trace.Handlers.ModelHandlers.ExtensionTraceData.extensionDataInConsoleTimeStamp(timeStamp).devtoolsObj);
|
81
|
-
const consoleTimings = this.#parsedTrace.UserTimings.consoleTimings;
|
81
|
+
const consoleTimings = this.#parsedTrace.data.UserTimings.consoleTimings;
|
82
82
|
if (extensionMarkersAreEmpty && performanceMarks.length === 0 && performanceMeasures.length === 0 &&
|
83
83
|
timestampEvents.length === 0 && consoleTimings.length === 0) {
|
84
84
|
return trackStartLevel;
|
@@ -101,7 +101,7 @@ export class TimingsTrackAppender implements TrackAppender {
|
|
101
101
|
* appended.
|
102
102
|
*/
|
103
103
|
#appendTrackHeaderAtLevel(currentLevel: number, expanded?: boolean): void {
|
104
|
-
const trackIsCollapsible = this.#parsedTrace.UserTimings.performanceMeasures.length > 0;
|
104
|
+
const trackIsCollapsible = this.#parsedTrace.data.UserTimings.performanceMeasures.length > 0;
|
105
105
|
const style = buildGroupStyle({useFirstLineForOverview: true, collapsible: trackIsCollapsible});
|
106
106
|
const group = buildTrackHeader(
|
107
107
|
VisualLoggingTrackName.TIMINGS, currentLevel, i18nString(UIStrings.timings), style, /* selectable= */ true,
|
@@ -127,7 +127,7 @@ export class TimingsTrackAppender implements TrackAppender {
|
|
127
127
|
this.#compatibilityBuilder.getFlameChartTimelineData().entryTotalTimes[index] = Number.NaN;
|
128
128
|
}
|
129
129
|
|
130
|
-
const minTimeMs = Trace.Helpers.Timing.microToMilli(this.#parsedTrace.Meta.traceBounds.min);
|
130
|
+
const minTimeMs = Trace.Helpers.Timing.microToMilli(this.#parsedTrace.data.Meta.traceBounds.min);
|
131
131
|
const flameChartMarkers = markers.map(marker => {
|
132
132
|
// The timestamp for user timing trace events is set to the
|
133
133
|
// start time passed by the user at the call site of the timing
|
@@ -272,9 +272,9 @@ export class TimingsTrackAppender implements TrackAppender {
|
|
272
272
|
Trace.Types.Events.isConsoleTimeStamp(event) || isExtensibilityMarker) {
|
273
273
|
const timeOfEvent = Trace.Helpers.Timing.timeStampForEventAdjustedByClosestNavigation(
|
274
274
|
event,
|
275
|
-
this.#parsedTrace.Meta.traceBounds,
|
276
|
-
this.#parsedTrace.Meta.navigationsByNavigationId,
|
277
|
-
this.#parsedTrace.Meta.navigationsByFrameId,
|
275
|
+
this.#parsedTrace.data.Meta.traceBounds,
|
276
|
+
this.#parsedTrace.data.Meta.navigationsByNavigationId,
|
277
|
+
this.#parsedTrace.data.Meta.navigationsByFrameId,
|
278
278
|
);
|
279
279
|
info.formattedTime = getDurationString(timeOfEvent);
|
280
280
|
}
|
@@ -149,61 +149,61 @@ export class TracingFrameLayerTree {
|
|
149
149
|
|
150
150
|
export class TracingLayer implements SDK.LayerTreeBase.Layer {
|
151
151
|
private parentLayerId: string|null;
|
152
|
-
|
152
|
+
parentInternal: SDK.LayerTreeBase.Layer|null;
|
153
153
|
private layerId: string;
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
154
|
+
#node: SDK.DOMModel.DOMNode|null;
|
155
|
+
#offsetX: number;
|
156
|
+
#offsetY: number;
|
157
|
+
#width: number;
|
158
|
+
#height: number;
|
159
|
+
#children: SDK.LayerTreeBase.Layer[];
|
160
|
+
#quad: number[];
|
161
|
+
#scrollRects: Protocol.LayerTree.ScrollRect[];
|
162
|
+
#gpuMemoryUsage: number;
|
163
163
|
private paints: Trace.Types.Events.LegacyLayerPaintEvent[];
|
164
164
|
private compositingReasons: string[];
|
165
165
|
private compositingReasonIds: string[];
|
166
|
-
|
166
|
+
#drawsContent: boolean;
|
167
167
|
private paintProfilerModel: SDK.PaintProfiler.PaintProfilerModel|null;
|
168
168
|
constructor(paintProfilerModel: SDK.PaintProfiler.PaintProfilerModel|null, payload: TracingLayerPayload) {
|
169
169
|
this.parentLayerId = null;
|
170
170
|
this.parentInternal = null;
|
171
171
|
this.layerId = '';
|
172
|
-
this
|
173
|
-
this
|
174
|
-
this
|
175
|
-
this
|
176
|
-
this
|
177
|
-
this
|
178
|
-
this
|
179
|
-
this
|
180
|
-
this
|
172
|
+
this.#node = null;
|
173
|
+
this.#offsetX = -1;
|
174
|
+
this.#offsetY = -1;
|
175
|
+
this.#width = -1;
|
176
|
+
this.#height = -1;
|
177
|
+
this.#children = [];
|
178
|
+
this.#quad = [];
|
179
|
+
this.#scrollRects = [];
|
180
|
+
this.#gpuMemoryUsage = -1;
|
181
181
|
this.paints = [];
|
182
182
|
this.compositingReasons = [];
|
183
183
|
this.compositingReasonIds = [];
|
184
|
-
this
|
184
|
+
this.#drawsContent = false;
|
185
185
|
|
186
186
|
this.paintProfilerModel = paintProfilerModel;
|
187
187
|
this.reset(payload);
|
188
188
|
}
|
189
189
|
|
190
190
|
reset(payload: TracingLayerPayload): void {
|
191
|
-
this
|
191
|
+
this.#node = null;
|
192
192
|
this.layerId = String(payload.layer_id);
|
193
|
-
this
|
194
|
-
this
|
195
|
-
this
|
196
|
-
this
|
197
|
-
this
|
193
|
+
this.#offsetX = payload.position[0];
|
194
|
+
this.#offsetY = payload.position[1];
|
195
|
+
this.#width = payload.bounds.width;
|
196
|
+
this.#height = payload.bounds.height;
|
197
|
+
this.#children = [];
|
198
198
|
this.parentLayerId = null;
|
199
199
|
this.parentInternal = null;
|
200
|
-
this
|
200
|
+
this.#quad = payload.layer_quad || [];
|
201
201
|
this.createScrollRects(payload);
|
202
202
|
|
203
203
|
this.compositingReasons = payload.compositing_reasons || [];
|
204
204
|
this.compositingReasonIds = payload.compositing_reason_ids || [];
|
205
|
-
this
|
206
|
-
this
|
205
|
+
this.#drawsContent = Boolean(payload.draws_content);
|
206
|
+
this.#gpuMemoryUsage = payload.gpu_memory_usage;
|
207
207
|
this.paints = [];
|
208
208
|
}
|
209
209
|
|
@@ -224,7 +224,7 @@ export class TracingLayer implements SDK.LayerTreeBase.Layer {
|
|
224
224
|
}
|
225
225
|
|
226
226
|
children(): SDK.LayerTreeBase.Layer[] {
|
227
|
-
return this
|
227
|
+
return this.#children;
|
228
228
|
}
|
229
229
|
|
230
230
|
addChild(childParam: SDK.LayerTreeBase.Layer): void {
|
@@ -232,17 +232,17 @@ export class TracingLayer implements SDK.LayerTreeBase.Layer {
|
|
232
232
|
if (child.parentInternal) {
|
233
233
|
console.assert(false, 'Child already has a parent');
|
234
234
|
}
|
235
|
-
this.
|
235
|
+
this.#children.push(child);
|
236
236
|
child.parentInternal = this;
|
237
237
|
child.parentLayerId = this.layerId;
|
238
238
|
}
|
239
239
|
|
240
240
|
setNode(node: SDK.DOMModel.DOMNode|null): void {
|
241
|
-
this
|
241
|
+
this.#node = node;
|
242
242
|
}
|
243
243
|
|
244
244
|
node(): SDK.DOMModel.DOMNode|null {
|
245
|
-
return this
|
245
|
+
return this.#node;
|
246
246
|
}
|
247
247
|
|
248
248
|
nodeForSelfOrAncestor(): SDK.DOMModel.DOMNode|null {
|
@@ -256,19 +256,19 @@ export class TracingLayer implements SDK.LayerTreeBase.Layer {
|
|
256
256
|
}
|
257
257
|
|
258
258
|
offsetX(): number {
|
259
|
-
return this
|
259
|
+
return this.#offsetX;
|
260
260
|
}
|
261
261
|
|
262
262
|
offsetY(): number {
|
263
|
-
return this
|
263
|
+
return this.#offsetY;
|
264
264
|
}
|
265
265
|
|
266
266
|
width(): number {
|
267
|
-
return this
|
267
|
+
return this.#width;
|
268
268
|
}
|
269
269
|
|
270
270
|
height(): number {
|
271
|
-
return this
|
271
|
+
return this.#height;
|
272
272
|
}
|
273
273
|
|
274
274
|
transform(): number[]|null {
|
@@ -276,7 +276,7 @@ export class TracingLayer implements SDK.LayerTreeBase.Layer {
|
|
276
276
|
}
|
277
277
|
|
278
278
|
quad(): number[] {
|
279
|
-
return this
|
279
|
+
return this.#quad;
|
280
280
|
}
|
281
281
|
|
282
282
|
anchorPoint(): number[] {
|
@@ -296,7 +296,7 @@ export class TracingLayer implements SDK.LayerTreeBase.Layer {
|
|
296
296
|
}
|
297
297
|
|
298
298
|
scrollRects(): Protocol.LayerTree.ScrollRect[] {
|
299
|
-
return this
|
299
|
+
return this.#scrollRects;
|
300
300
|
}
|
301
301
|
|
302
302
|
stickyPositionConstraint(): SDK.LayerTreeBase.StickyPositionConstraint|null {
|
@@ -305,7 +305,7 @@ export class TracingLayer implements SDK.LayerTreeBase.Layer {
|
|
305
305
|
}
|
306
306
|
|
307
307
|
gpuMemoryUsage(): number {
|
308
|
-
return this
|
308
|
+
return this.#gpuMemoryUsage;
|
309
309
|
}
|
310
310
|
|
311
311
|
snapshots(): Array<Promise<SDK.PaintProfiler.SnapshotWithRect|null>> {
|
@@ -385,7 +385,7 @@ export class TracingLayer implements SDK.LayerTreeBase.Layer {
|
|
385
385
|
// SDK.LayerBaseTree.Layer.ScrollRectType and Protocol.LayerTree.ScrollRectType are the
|
386
386
|
// same type, but we need to use the indirection of the nonPayloadScrollRects since
|
387
387
|
// the ScrollRectType is defined as a string in SDK.LayerBaseTree.Layer.ScrollRectType.
|
388
|
-
this
|
388
|
+
this.#scrollRects = nonPayloadScrollRects;
|
389
389
|
}
|
390
390
|
|
391
391
|
addPaintEvent(paint: Trace.Types.Events.LegacyLayerPaintEvent): void {
|
@@ -401,7 +401,7 @@ export class TracingLayer implements SDK.LayerTreeBase.Layer {
|
|
401
401
|
}
|
402
402
|
|
403
403
|
drawsContent(): boolean {
|
404
|
-
return this
|
404
|
+
return this.#drawsContent;
|
405
405
|
}
|
406
406
|
}
|
407
407
|
|
@@ -35,12 +35,12 @@ const i18nString = i18n.i18n.getLocalizedString.bind(undefined, str_);
|
|
35
35
|
* is no entry for a trace in this map it is assumed to be a new trace and the
|
36
36
|
* banner will be shown if the user has any hidden track config.
|
37
37
|
*/
|
38
|
-
const
|
38
|
+
const hiddenTracksInfoBarByParsedTrace = new WeakMap<Trace.TraceModel.ParsedTrace, UI.Infobar.Infobar|'DISMISSED'>();
|
39
39
|
|
40
40
|
/**
|
41
41
|
* Creates an overlay for the timeline that will show a banner informing the user that at least one track is hidden.
|
42
42
|
*
|
43
|
-
* @param
|
43
|
+
* @param parsedTrace The trace parsed data.
|
44
44
|
* @param callbacks An object containing the callback functions to be executed
|
45
45
|
* when the user interacts with the banner.
|
46
46
|
* - `onShowAllTracks`: called when the user clicks the "Unhide all" button.
|
@@ -49,12 +49,12 @@ const hiddenTracksInfoBarPerTrace = new WeakMap<Trace.Handlers.Types.ParsedTrace
|
|
49
49
|
* @returns A `Trace.Types.Overlays.Overlay` object to be rendered, or `null` if
|
50
50
|
* no banner should be shown (because the user has already seen the banner)
|
51
51
|
*/
|
52
|
-
export function createHiddenTracksOverlay(
|
52
|
+
export function createHiddenTracksOverlay(parsedTrace: Trace.TraceModel.ParsedTrace, callbacks: {
|
53
53
|
onShowAllTracks: () => void,
|
54
54
|
onShowTrackConfigurationMode: () => void,
|
55
55
|
onClose: () => void,
|
56
56
|
}): Trace.Types.Overlays.BottomInfoBar|null {
|
57
|
-
const status =
|
57
|
+
const status = hiddenTracksInfoBarByParsedTrace.get(parsedTrace);
|
58
58
|
if (status === 'DISMISSED') {
|
59
59
|
// The user has already seen the banner + dismissed it for this trace, so
|
60
60
|
// we don't need to do anything.
|
@@ -89,9 +89,9 @@ export function createHiddenTracksOverlay(trace: Trace.Handlers.Types.ParsedTrac
|
|
89
89
|
);
|
90
90
|
infobarForTrace.setCloseCallback(() => {
|
91
91
|
callbacks.onClose();
|
92
|
-
|
92
|
+
hiddenTracksInfoBarByParsedTrace.set(parsedTrace, 'DISMISSED');
|
93
93
|
});
|
94
94
|
|
95
|
-
|
95
|
+
hiddenTracksInfoBarByParsedTrace.set(parsedTrace, infobarForTrace);
|
96
96
|
return {type: 'BOTTOM_INFO_BAR', infobar: infobarForTrace};
|
97
97
|
}
|
@@ -39,6 +39,6 @@ export function buildPersistedConfig(groups: readonly PerfUI.FlameChart.Group[],
|
|
39
39
|
* trace with the exact same start time is very unlikely.
|
40
40
|
* It's not impossible, but unlikely enough that we think the min trace bounds time is a good enough value to use as a uuid.
|
41
41
|
*/
|
42
|
-
export function keyForTraceConfig(trace: Trace.Handlers.Types.
|
42
|
+
export function keyForTraceConfig(trace: Trace.Handlers.Types.HandlerData): Trace.Types.Timing.Micro {
|
43
43
|
return trace.Meta.traceBounds.min;
|
44
44
|
}
|
@@ -72,8 +72,8 @@ const str_ = i18n.i18n.registerUIStrings('panels/timeline/components/DetailsView
|
|
72
72
|
const i18nString = i18n.i18n.getLocalizedString.bind(undefined, str_);
|
73
73
|
|
74
74
|
export function buildWarningElementsForEvent(
|
75
|
-
event: Trace.Types.Events.Event, parsedTrace: Trace.
|
76
|
-
const warnings = parsedTrace.Warnings.perEvent.get(event);
|
75
|
+
event: Trace.Types.Events.Event, parsedTrace: Trace.TraceModel.ParsedTrace): HTMLSpanElement[] {
|
76
|
+
const warnings = parsedTrace.data.Warnings.perEvent.get(event);
|
77
77
|
const warningElements: HTMLSpanElement[] = [];
|
78
78
|
if (!warnings) {
|
79
79
|
return warningElements;
|
@@ -130,10 +130,10 @@ export interface DetailRow {
|
|
130
130
|
}
|
131
131
|
export function buildRowsForWebSocketEvent(
|
132
132
|
event: Trace.Types.Events.WebSocketCreate|Trace.Types.Events.WebSocketInfo|Trace.Types.Events.WebSocketTransfer,
|
133
|
-
parsedTrace: Trace.
|
133
|
+
parsedTrace: Trace.TraceModel.ParsedTrace): readonly DetailRow[] {
|
134
134
|
const rows: DetailRow[] = [];
|
135
135
|
|
136
|
-
const initiator = parsedTrace.Initiators.eventToInitiator.get(event);
|
136
|
+
const initiator = parsedTrace.data.Initiators.eventToInitiator.get(event);
|
137
137
|
if (initiator && Trace.Types.Events.isWebSocketCreate(initiator)) {
|
138
138
|
// The initiator will be a WebSocketCreate, but this check helps TypeScript to understand.
|
139
139
|
rows.push({key: i18n.i18n.lockedString('URL'), value: initiator.args.data.url});
|