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
@@ -369,7 +369,7 @@ export class TimelinePanel extends Common.ObjectWrapper.eventMixin<EventTypes, t
|
|
369
369
|
);
|
370
370
|
private readonly statusPaneContainer: HTMLElement;
|
371
371
|
private readonly flameChart: TimelineFlameChartView;
|
372
|
-
|
372
|
+
readonly #searchableView: UI.SearchableView.SearchableView;
|
373
373
|
private showSettingsPaneButton!: UI.Toolbar.ToolbarSettingToggle;
|
374
374
|
private showSettingsPaneSetting!: Common.Settings.Setting<boolean>;
|
375
375
|
private settingsPane?: HTMLElement;
|
@@ -425,7 +425,7 @@ export class TimelinePanel extends Common.ObjectWrapper.eventMixin<EventTypes, t
|
|
425
425
|
'flamechart-selected-navigation', 'Classic - scroll to zoom', 'timeline.select-classic-navigation');
|
426
426
|
|
427
427
|
#onMainEntryHovered: (event: Common.EventTarget.EventTargetEvent<number>) => void;
|
428
|
-
#
|
428
|
+
#hiddenTracksInfoBarByParsedTrace = new WeakMap<Trace.TraceModel.ParsedTrace, UI.Infobar.Infobar|'DISMISSED'>();
|
429
429
|
|
430
430
|
constructor(traceModel?: Trace.TraceModel.Model) {
|
431
431
|
super('timeline');
|
@@ -536,14 +536,14 @@ export class TimelinePanel extends Common.ObjectWrapper.eventMixin<EventTypes, t
|
|
536
536
|
this.select(selection);
|
537
537
|
});
|
538
538
|
|
539
|
-
this
|
540
|
-
this.
|
541
|
-
this.
|
542
|
-
this.
|
543
|
-
this.
|
544
|
-
this.flameChart.show(this.
|
545
|
-
this.flameChart.setSearchableView(this
|
546
|
-
this.
|
539
|
+
this.#searchableView = new UI.SearchableView.SearchableView(this.flameChart, null);
|
540
|
+
this.#searchableView.setMinimumSize(0, 100);
|
541
|
+
this.#searchableView.setMinimalSearchQuerySize(2); // At 1 it can introduce a bit of jank.
|
542
|
+
this.#searchableView.element.classList.add('searchable-view');
|
543
|
+
this.#searchableView.show(this.timelinePane.element);
|
544
|
+
this.flameChart.show(this.#searchableView.element);
|
545
|
+
this.flameChart.setSearchableView(this.#searchableView);
|
546
|
+
this.#searchableView.hideWidget();
|
547
547
|
|
548
548
|
this.#splitWidget.setMainWidget(this.timelinePane);
|
549
549
|
this.#splitWidget.setSidebarWidget(this.#sideBar);
|
@@ -729,7 +729,7 @@ export class TimelinePanel extends Common.ObjectWrapper.eventMixin<EventTypes, t
|
|
729
729
|
return Common.Settings.Settings.instance().createSetting('timeline-show-extension-data', true);
|
730
730
|
}
|
731
731
|
override searchableView(): UI.SearchableView.SearchableView|null {
|
732
|
-
return this
|
732
|
+
return this.#searchableView;
|
733
733
|
}
|
734
734
|
|
735
735
|
override wasShown(): void {
|
@@ -882,7 +882,7 @@ export class TimelinePanel extends Common.ObjectWrapper.eventMixin<EventTypes, t
|
|
882
882
|
|
883
883
|
// Whilst we don't reset this, we hide it, mainly so the user cannot
|
884
884
|
// hit Ctrl/Cmd-F and try to search when it isn't visible.
|
885
|
-
this.
|
885
|
+
this.#searchableView.hideWidget();
|
886
886
|
return;
|
887
887
|
}
|
888
888
|
|
@@ -970,13 +970,13 @@ export class TimelinePanel extends Common.ObjectWrapper.eventMixin<EventTypes, t
|
|
970
970
|
* within DevTools you are warned when using the method.
|
971
971
|
* @deprecated
|
972
972
|
**/
|
973
|
-
getParsedTraceForLayoutTests(): Trace.Handlers.Types.
|
973
|
+
getParsedTraceForLayoutTests(): Trace.Handlers.Types.HandlerData {
|
974
974
|
const traceIndex = this.#activeTraceIndex();
|
975
975
|
if (traceIndex === null) {
|
976
976
|
throw new Error('No trace index active.');
|
977
977
|
}
|
978
|
-
const data = this.#traceEngineModel.parsedTrace(traceIndex);
|
979
|
-
if (data
|
978
|
+
const data = this.#traceEngineModel.parsedTrace(traceIndex)?.data;
|
979
|
+
if (!data) {
|
980
980
|
throw new Error('No trace engine data found.');
|
981
981
|
}
|
982
982
|
return data;
|
@@ -993,11 +993,11 @@ export class TimelinePanel extends Common.ObjectWrapper.eventMixin<EventTypes, t
|
|
993
993
|
if (traceIndex === null) {
|
994
994
|
throw new Error('No trace index active.');
|
995
995
|
}
|
996
|
-
const data = this.#traceEngineModel.
|
997
|
-
if (data
|
996
|
+
const data = this.#traceEngineModel.parsedTrace(traceIndex);
|
997
|
+
if (!data) {
|
998
998
|
throw new Error('No trace engine data found.');
|
999
999
|
}
|
1000
|
-
return data;
|
1000
|
+
return data.traceEvents;
|
1001
1001
|
}
|
1002
1002
|
|
1003
1003
|
#onEntryHovered(dataProvider: TimelineFlameChartDataProvider, event: Common.EventTarget.EventTargetEvent<number>):
|
@@ -1377,12 +1377,9 @@ export class TimelinePanel extends Common.ObjectWrapper.eventMixin<EventTypes, t
|
|
1377
1377
|
if (this.#viewMode.mode !== 'VIEWING_TRACE') {
|
1378
1378
|
return;
|
1379
1379
|
}
|
1380
|
-
|
1381
|
-
|
1382
|
-
|
1383
|
-
}
|
1384
|
-
let traceEvents = this.#traceEngineModel.rawTraceEvents(this.#viewMode.traceIndex);
|
1385
|
-
if (!traceEvents) {
|
1380
|
+
|
1381
|
+
const parsedTrace = this.#traceEngineModel.parsedTrace(this.#viewMode.traceIndex);
|
1382
|
+
if (!parsedTrace) {
|
1386
1383
|
return;
|
1387
1384
|
}
|
1388
1385
|
|
@@ -1394,9 +1391,7 @@ export class TimelinePanel extends Common.ObjectWrapper.eventMixin<EventTypes, t
|
|
1394
1391
|
scriptByIdMap.set(`${mapScript.isolate}.${mapScript.scriptId}`, mapScript);
|
1395
1392
|
}
|
1396
1393
|
|
1397
|
-
const
|
1398
|
-
|
1399
|
-
traceEvents = traceEvents.map(event => {
|
1394
|
+
const traceEvents = parsedTrace.traceEvents.map(event => {
|
1400
1395
|
if (Trace.Types.Events.isAnyScriptCatchupEvent(event) && event.name !== 'StubScriptCatchup') {
|
1401
1396
|
const mappedScript = scriptByIdMap.get(`${event.args.data.isolate}.${event.args.data.scriptId}`);
|
1402
1397
|
|
@@ -1422,6 +1417,7 @@ export class TimelinePanel extends Common.ObjectWrapper.eventMixin<EventTypes, t
|
|
1422
1417
|
return event;
|
1423
1418
|
});
|
1424
1419
|
|
1420
|
+
const metadata = parsedTrace.metadata;
|
1425
1421
|
metadata.modifications = config.addModifications ? ModificationsManager.activeManager()?.toJSON() : undefined;
|
1426
1422
|
|
1427
1423
|
// NOTE: we used to export the track configuration changes into the trace
|
@@ -1665,8 +1661,7 @@ export class TimelinePanel extends Common.ObjectWrapper.eventMixin<EventTypes, t
|
|
1665
1661
|
}
|
1666
1662
|
|
1667
1663
|
const parsedTrace = this.#traceEngineModel.parsedTrace(this.#viewMode.traceIndex);
|
1668
|
-
const isCpuProfile =
|
1669
|
-
Trace.Types.File.DataOrigin.CPU_PROFILE;
|
1664
|
+
const isCpuProfile = parsedTrace?.metadata.dataOrigin === Trace.Types.File.DataOrigin.CPU_PROFILE;
|
1670
1665
|
if (!parsedTrace) {
|
1671
1666
|
return;
|
1672
1667
|
}
|
@@ -2071,7 +2066,6 @@ export class TimelinePanel extends Common.ObjectWrapper.eventMixin<EventTypes, t
|
|
2071
2066
|
}
|
2072
2067
|
const {traceIndex} = this.#viewMode;
|
2073
2068
|
const parsedTrace = this.#traceEngineModel.parsedTrace(traceIndex);
|
2074
|
-
const traceMetadata = this.#traceEngineModel.metadata(traceIndex);
|
2075
2069
|
const syntheticEventsManager = this.#traceEngineModel.syntheticTraceEventsManager(traceIndex);
|
2076
2070
|
|
2077
2071
|
if (!parsedTrace || !syntheticEventsManager) {
|
@@ -2091,8 +2085,9 @@ export class TimelinePanel extends Common.ObjectWrapper.eventMixin<EventTypes, t
|
|
2091
2085
|
|
2092
2086
|
// Order is important: the bounds must be set before we initiate any UI
|
2093
2087
|
// rendering.
|
2088
|
+
const data = parsedTrace.data;
|
2094
2089
|
TraceBounds.TraceBounds.BoundsManager.instance().resetWithNewBounds(
|
2095
|
-
|
2090
|
+
data.Meta.traceBounds,
|
2096
2091
|
);
|
2097
2092
|
|
2098
2093
|
// Set up the modifications manager for the newly active trace.
|
@@ -2105,19 +2100,16 @@ export class TimelinePanel extends Common.ObjectWrapper.eventMixin<EventTypes, t
|
|
2105
2100
|
}
|
2106
2101
|
this.statusDialog?.updateProgressBar(i18nString(UIStrings.processed), 70);
|
2107
2102
|
|
2108
|
-
|
2109
|
-
this.flameChart.setInsights(traceInsightsSets, this.#eventToRelatedInsights);
|
2110
|
-
|
2111
|
-
this.flameChart.setModel(parsedTrace, traceMetadata);
|
2103
|
+
this.flameChart.setModel(parsedTrace, this.#eventToRelatedInsights);
|
2112
2104
|
this.flameChart.resizeToPreferredHeights();
|
2113
2105
|
// Reset the visual selection as we've just swapped to a new trace.
|
2114
2106
|
this.flameChart.setSelectionAndReveal(null);
|
2115
|
-
this.#sideBar.setParsedTrace(parsedTrace
|
2107
|
+
this.#sideBar.setParsedTrace(parsedTrace);
|
2116
2108
|
|
2117
|
-
this.
|
2109
|
+
this.#searchableView.showWidget();
|
2118
2110
|
|
2119
2111
|
const exclusiveFilter = this.#exclusiveFilterPerTrace.get(traceIndex) ?? null;
|
2120
|
-
this.#applyActiveFilters(parsedTrace.Meta.traceIsGeneric, exclusiveFilter);
|
2112
|
+
this.#applyActiveFilters(parsedTrace.data.Meta.traceIsGeneric, exclusiveFilter);
|
2121
2113
|
(this.saveButton.element as TimelineComponents.ExportTraceOptions.ExportTraceOptions)
|
2122
2114
|
.updateContentVisibility(currentManager ? currentManager.getAnnotations()?.length > 0 : false);
|
2123
2115
|
|
@@ -2130,7 +2122,7 @@ export class TimelinePanel extends Common.ObjectWrapper.eventMixin<EventTypes, t
|
|
2130
2122
|
this.flameChart.getMainDataProvider().compatibilityTracksAppenderInstance().threadAppenders().at(0);
|
2131
2123
|
if (topMostMainThreadAppender) {
|
2132
2124
|
const zoomedInBounds = Trace.Extras.MainThreadActivity.calculateWindow(
|
2133
|
-
parsedTrace.Meta.traceBounds, topMostMainThreadAppender.getEntries());
|
2125
|
+
parsedTrace.data.Meta.traceBounds, topMostMainThreadAppender.getEntries());
|
2134
2126
|
|
2135
2127
|
TraceBounds.TraceBounds.BoundsManager.instance().setTimelineVisibleWindow(zoomedInBounds);
|
2136
2128
|
}
|
@@ -2146,11 +2138,11 @@ export class TimelinePanel extends Common.ObjectWrapper.eventMixin<EventTypes, t
|
|
2146
2138
|
|
2147
2139
|
// Set up line level profiling with CPU profiles, if we found any.
|
2148
2140
|
PerfUI.LineLevelProfile.Performance.instance().reset();
|
2149
|
-
if (parsedTrace
|
2141
|
+
if (parsedTrace.data.Samples.profilesInProcess.size) {
|
2150
2142
|
const primaryPageTarget = SDK.TargetManager.TargetManager.instance().primaryPageTarget();
|
2151
2143
|
// Gather up all CPU Profiles we found when parsing this trace.
|
2152
2144
|
const cpuProfiles =
|
2153
|
-
Array.from(parsedTrace.Samples.profilesInProcess).flatMap(([_processId, threadsInProcess]) => {
|
2145
|
+
Array.from(parsedTrace.data.Samples.profilesInProcess).flatMap(([_processId, threadsInProcess]) => {
|
2154
2146
|
const profiles = Array.from(threadsInProcess.values()).map(profileData => profileData.parsedProfile);
|
2155
2147
|
return profiles;
|
2156
2148
|
});
|
@@ -2180,11 +2172,10 @@ export class TimelinePanel extends Common.ObjectWrapper.eventMixin<EventTypes, t
|
|
2180
2172
|
this.#maybeCreateHiddenTracksBanner(parsedTrace);
|
2181
2173
|
|
2182
2174
|
this.#setActiveInsight(null);
|
2183
|
-
this.#sideBar.setInsights(traceInsightsSets);
|
2184
2175
|
|
2185
2176
|
this.#eventToRelatedInsights.clear();
|
2186
|
-
if (
|
2187
|
-
for (const [insightSetKey, insightSet] of
|
2177
|
+
if (parsedTrace.insights) {
|
2178
|
+
for (const [insightSetKey, insightSet] of parsedTrace.insights) {
|
2188
2179
|
for (const model of Object.values(insightSet.model)) {
|
2189
2180
|
let relatedEvents = model.relatedEvents;
|
2190
2181
|
if (!relatedEvents) {
|
@@ -2295,16 +2286,16 @@ export class TimelinePanel extends Common.ObjectWrapper.eventMixin<EventTypes, t
|
|
2295
2286
|
* show a warning banner at the bottom. This can be dismissed by the user and
|
2296
2287
|
* if that happens we do not want to bring it back again.
|
2297
2288
|
*/
|
2298
|
-
#maybeCreateHiddenTracksBanner(
|
2289
|
+
#maybeCreateHiddenTracksBanner(parsedTrace: Trace.TraceModel.ParsedTrace): void {
|
2299
2290
|
const hasHiddenTracks = this.flameChart.hasHiddenTracks();
|
2300
2291
|
if (!hasHiddenTracks) {
|
2301
2292
|
return;
|
2302
2293
|
}
|
2303
2294
|
|
2304
|
-
const maybeOverlay = createHiddenTracksOverlay(
|
2295
|
+
const maybeOverlay = createHiddenTracksOverlay(parsedTrace, {
|
2305
2296
|
onClose: () => {
|
2306
2297
|
this.flameChart.overlays().removeOverlaysOfType('BOTTOM_INFO_BAR');
|
2307
|
-
this.#
|
2298
|
+
this.#hiddenTracksInfoBarByParsedTrace.set(parsedTrace, 'DISMISSED');
|
2308
2299
|
},
|
2309
2300
|
onShowAllTracks: () => {
|
2310
2301
|
this.flameChart.showAllMainChartTracks();
|
@@ -2542,9 +2533,8 @@ export class TimelinePanel extends Common.ObjectWrapper.eventMixin<EventTypes, t
|
|
2542
2533
|
parsedTraceIndex: traceIndex,
|
2543
2534
|
type: 'TRACE_INDEX',
|
2544
2535
|
},
|
2545
|
-
filmStripForPreview: Trace.Extras.FilmStrip.
|
2536
|
+
filmStripForPreview: Trace.Extras.FilmStrip.fromHandlerData(parsedTrace.data),
|
2546
2537
|
parsedTrace,
|
2547
|
-
metadata,
|
2548
2538
|
});
|
2549
2539
|
|
2550
2540
|
this.dispatchEventToListeners(Events.RECORDING_COMPLETED, {
|
@@ -2593,7 +2583,7 @@ export class TimelinePanel extends Common.ObjectWrapper.eventMixin<EventTypes, t
|
|
2593
2583
|
* subsequent attempt will work).
|
2594
2584
|
*/
|
2595
2585
|
async #retainSourceMapsForEnhancedTrace(
|
2596
|
-
parsedTrace: Trace.
|
2586
|
+
parsedTrace: Trace.TraceModel.ParsedTrace, metadata: Trace.Types.File.MetaData): Promise<void> {
|
2597
2587
|
const handleScript = async(script: Trace.Handlers.ModelHandlers.Scripts.Script): Promise<void> => {
|
2598
2588
|
if (script.sourceMapUrlElided) {
|
2599
2589
|
if (metadata.sourceMaps?.find(m => m.url === script.url)) {
|
@@ -2638,7 +2628,7 @@ export class TimelinePanel extends Common.ObjectWrapper.eventMixin<EventTypes, t
|
|
2638
2628
|
metadata.sourceMaps = [];
|
2639
2629
|
|
2640
2630
|
const promises = [];
|
2641
|
-
for (const script of parsedTrace?.Scripts.scripts.values() ?? []) {
|
2631
|
+
for (const script of parsedTrace?.data.Scripts.scripts.values() ?? []) {
|
2642
2632
|
promises.push(handleScript(script));
|
2643
2633
|
}
|
2644
2634
|
await Promise.all(promises);
|
@@ -2733,14 +2723,27 @@ export class TimelinePanel extends Common.ObjectWrapper.eventMixin<EventTypes, t
|
|
2733
2723
|
async #executeNewTrace(
|
2734
2724
|
collectedEvents: Trace.Types.Events.Event[], isFreshRecording: boolean,
|
2735
2725
|
metadata: Trace.Types.File.MetaData|null): Promise<void> {
|
2736
|
-
|
2737
|
-
|
2738
|
-
|
2739
|
-
|
2740
|
-
|
2741
|
-
|
2726
|
+
const config: Trace.Types.Configuration.ParseOptions = {
|
2727
|
+
metadata: metadata ?? undefined,
|
2728
|
+
isFreshRecording,
|
2729
|
+
resolveSourceMap: this.#createSourceMapResolver(isFreshRecording, metadata),
|
2730
|
+
};
|
2731
|
+
|
2732
|
+
if (window.location.href.includes('devtools/bundled') || window.location.search.includes('debugFrontend')) {
|
2733
|
+
// Someone is debugging DevTools, enable the logger to give timings
|
2734
|
+
// when tracing the performance panel itself.
|
2735
|
+
const times: Record<string, number> = {};
|
2736
|
+
config.logger = {
|
2737
|
+
start(id) {
|
2738
|
+
times[id] = performance.now();
|
2742
2739
|
},
|
2743
|
-
|
2740
|
+
end(id) {
|
2741
|
+
performance.measure(id, {start: times[id]});
|
2742
|
+
},
|
2743
|
+
};
|
2744
|
+
}
|
2745
|
+
|
2746
|
+
await this.#traceEngineModel.parse(collectedEvents, config);
|
2744
2747
|
|
2745
2748
|
// Store all source maps on the trace metadata.
|
2746
2749
|
// If not fresh, we can't validate the maps are still accurate.
|
@@ -2820,10 +2823,11 @@ export class TimelinePanel extends Common.ObjectWrapper.eventMixin<EventTypes, t
|
|
2820
2823
|
if (!parsedTrace) {
|
2821
2824
|
return null;
|
2822
2825
|
}
|
2826
|
+
|
2823
2827
|
const endTime = rangeForSelection(selection).max;
|
2824
2828
|
const lastFrameInSelection = Trace.Handlers.ModelHandlers.Frames
|
2825
2829
|
.framesWithinWindow(
|
2826
|
-
parsedTrace.Frames.frames,
|
2830
|
+
parsedTrace.data.Frames.frames,
|
2827
2831
|
endTime,
|
2828
2832
|
endTime,
|
2829
2833
|
)
|
@@ -2843,10 +2847,11 @@ export class TimelinePanel extends Common.ObjectWrapper.eventMixin<EventTypes, t
|
|
2843
2847
|
if (!parsedTrace) {
|
2844
2848
|
return;
|
2845
2849
|
}
|
2846
|
-
|
2850
|
+
|
2851
|
+
let index = parsedTrace.data.Frames.frames.indexOf(currentFrame);
|
2847
2852
|
console.assert(index >= 0, 'Can\'t find current frame in the frame list');
|
2848
|
-
index = Platform.NumberUtilities.clamp(index + offset, 0, parsedTrace.Frames.frames.length - 1);
|
2849
|
-
const frame = parsedTrace.Frames.frames[index];
|
2853
|
+
index = Platform.NumberUtilities.clamp(index + offset, 0, parsedTrace.data.Frames.frames.length - 1);
|
2854
|
+
const frame = parsedTrace.data.Frames.frames[index];
|
2850
2855
|
this.#revealTimeRange(
|
2851
2856
|
Trace.Helpers.Timing.microToMilli(frame.startTime), Trace.Helpers.Timing.microToMilli(frame.endTime));
|
2852
2857
|
this.select(selectionFromEvent(frame));
|
@@ -3006,16 +3011,16 @@ export class TimelinePanel extends Common.ObjectWrapper.eventMixin<EventTypes, t
|
|
3006
3011
|
message: `Error running the trace: ${eventData.errorText}`,
|
3007
3012
|
};
|
3008
3013
|
}
|
3014
|
+
|
3009
3015
|
const parsedTrace = panelInstance.model.parsedTrace(eventData.traceIndex);
|
3010
|
-
|
3011
|
-
if (!parsedTrace || !insights || insights.size === 0) {
|
3016
|
+
if (!parsedTrace || !parsedTrace.insights || parsedTrace.insights.size === 0) {
|
3012
3017
|
return {
|
3013
3018
|
type: AiAssistanceModel.ExternalRequestResponseType.ERROR,
|
3014
3019
|
message: 'The trace was loaded successfully but no Insights were detected.',
|
3015
3020
|
};
|
3016
3021
|
}
|
3017
3022
|
|
3018
|
-
const navigationId = Array.from(insights.keys()).find(k => k !== 'NO_NAVIGATION');
|
3023
|
+
const navigationId = Array.from(parsedTrace.insights.keys()).find(k => k !== 'NO_NAVIGATION');
|
3019
3024
|
if (!navigationId) {
|
3020
3025
|
return {
|
3021
3026
|
type: AiAssistanceModel.ExternalRequestResponseType.ERROR,
|
@@ -3023,7 +3028,7 @@ export class TimelinePanel extends Common.ObjectWrapper.eventMixin<EventTypes, t
|
|
3023
3028
|
};
|
3024
3029
|
}
|
3025
3030
|
|
3026
|
-
const insightsForNav = insights.get(navigationId);
|
3031
|
+
const insightsForNav = parsedTrace.insights.get(navigationId);
|
3027
3032
|
if (!insightsForNav) {
|
3028
3033
|
return {
|
3029
3034
|
type: AiAssistanceModel.ExternalRequestResponseType.ERROR,
|
@@ -3036,11 +3041,11 @@ export class TimelinePanel extends Common.ObjectWrapper.eventMixin<EventTypes, t
|
|
3036
3041
|
// bottom of the response under a heading.
|
3037
3042
|
let responseTextForPassedInsights = '';
|
3038
3043
|
|
3044
|
+
// TODO(b/442392194): use PerformanceTraceFormatter summary instead.
|
3039
3045
|
for (const modelName in insightsForNav.model) {
|
3040
3046
|
const model = modelName as keyof Trace.Insights.Types.InsightModelsType;
|
3041
3047
|
const insight = insightsForNav.model[model];
|
3042
|
-
const formatter = new AiAssistanceModel.PerformanceInsightFormatter(
|
3043
|
-
AiAssistanceModel.PERF_AGENT_UNIT_FORMATTERS, parsedTrace, insight);
|
3048
|
+
const formatter = new AiAssistanceModel.PerformanceInsightFormatter(parsedTrace, insight);
|
3044
3049
|
if (!formatter.insightIsSupported()) {
|
3045
3050
|
// Not all Insights are integrated with "Ask AI" yet, let's avoid
|
3046
3051
|
// filling up the response with those ones because there will be no
|
@@ -128,7 +128,7 @@ type View = (input: ViewInput, output: object, target: HTMLElement) => void;
|
|
128
128
|
|
129
129
|
export class TimelineSelectorStatsView extends UI.Widget.VBox {
|
130
130
|
#selectorLocations: Map<string, Protocol.CSS.SourceRange[]>;
|
131
|
-
#parsedTrace: Trace.
|
131
|
+
#parsedTrace: Trace.TraceModel.ParsedTrace|null = null;
|
132
132
|
/**
|
133
133
|
* We store the last event (or array of events) that we renderered. We do
|
134
134
|
* this because as the user zooms around the panel this view is updated,
|
@@ -141,7 +141,7 @@ export class TimelineSelectorStatsView extends UI.Widget.VBox {
|
|
141
141
|
#view: View;
|
142
142
|
#timings: SelectorTiming[] = [];
|
143
143
|
|
144
|
-
constructor(parsedTrace: Trace.
|
144
|
+
constructor(parsedTrace: Trace.TraceModel.ParsedTrace|null, view: View = (input, _, target) => {
|
145
145
|
render(
|
146
146
|
html`
|
147
147
|
<devtools-data-grid striped name=${i18nString(UIStrings.selectorStats)}
|
@@ -297,7 +297,7 @@ export class TimelineSelectorStatsView extends UI.Widget.VBox {
|
|
297
297
|
return;
|
298
298
|
}
|
299
299
|
|
300
|
-
const invalidatedNodes = this.#parsedTrace.SelectorStats.invalidatedNodeList;
|
300
|
+
const invalidatedNodes = this.#parsedTrace.data.SelectorStats.invalidatedNodeList;
|
301
301
|
const invalidatedNodeMap = new Map<string, {subtree: boolean, nodeList: Array<SDK.DOMModel.DOMNode|null>}>();
|
302
302
|
|
303
303
|
const frameIdBackendNodeIdsMap = new Map<String, Set<Protocol.DOM.BackendNodeId>>();
|
@@ -334,7 +334,8 @@ export class TimelineSelectorStatsView extends UI.Widget.VBox {
|
|
334
334
|
}
|
335
335
|
|
336
336
|
for (const event of events) {
|
337
|
-
const selectorStats =
|
337
|
+
const selectorStats =
|
338
|
+
event ? this.#parsedTrace.data.SelectorStats.dataForUpdateLayoutEvent.get(event) : undefined;
|
338
339
|
if (!selectorStats) {
|
339
340
|
continue;
|
340
341
|
}
|
@@ -399,7 +400,8 @@ export class TimelineSelectorStatsView extends UI.Widget.VBox {
|
|
399
400
|
await this.updateInvalidationCount(events);
|
400
401
|
for (let i = 0; i < events.length; i++) {
|
401
402
|
const event = events[i];
|
402
|
-
const selectorStats =
|
403
|
+
const selectorStats =
|
404
|
+
event ? this.#parsedTrace.data.SelectorStats.dataForUpdateLayoutEvent.get(event) : undefined;
|
403
405
|
if (!selectorStats) {
|
404
406
|
continue;
|
405
407
|
}
|
@@ -192,7 +192,7 @@ export class TimelineTreeView extends
|
|
192
192
|
private caseSensitiveButton: UI.Toolbar.ToolbarToggle|undefined;
|
193
193
|
private regexButton: UI.Toolbar.ToolbarToggle|undefined;
|
194
194
|
private matchWholeWord: UI.Toolbar.ToolbarToggle|undefined;
|
195
|
-
#parsedTrace: Trace.
|
195
|
+
#parsedTrace: Trace.TraceModel.ParsedTrace|null = null;
|
196
196
|
#entityMapper: Utils.EntityMapper.EntityMapper|null = null;
|
197
197
|
#lastHighlightedEvent: HTMLElement|null = null;
|
198
198
|
eventToTreeNode = new WeakMap<Trace.Types.Events.Event, Trace.Extras.TraceTree.Node>();
|
@@ -217,7 +217,7 @@ export class TimelineTreeView extends
|
|
217
217
|
if (!this.#parsedTrace) {
|
218
218
|
return name;
|
219
219
|
}
|
220
|
-
return name + ':@' + Trace.Handlers.Helpers.getNonResolvedURL(event, this.#parsedTrace);
|
220
|
+
return name + ':@' + Trace.Handlers.Helpers.getNonResolvedURL(event, this.#parsedTrace.data);
|
221
221
|
}
|
222
222
|
|
223
223
|
setSearchableView(searchableView: UI.SearchableView.SearchableView): void {
|
@@ -226,7 +226,7 @@ export class TimelineTreeView extends
|
|
226
226
|
|
227
227
|
setModelWithEvents(
|
228
228
|
selectedEvents: Trace.Types.Events.Event[]|null,
|
229
|
-
parsedTrace: Trace.
|
229
|
+
parsedTrace: Trace.TraceModel.ParsedTrace|null = null,
|
230
230
|
entityMappings: Utils.EntityMapper.EntityMapper|null = null,
|
231
231
|
): void {
|
232
232
|
this.#parsedTrace = parsedTrace;
|
@@ -238,7 +238,7 @@ export class TimelineTreeView extends
|
|
238
238
|
entityMapper(): Utils.EntityMapper.EntityMapper|null {
|
239
239
|
return this.#entityMapper;
|
240
240
|
}
|
241
|
-
parsedTrace(): Trace.
|
241
|
+
parsedTrace(): Trace.TraceModel.ParsedTrace|null {
|
242
242
|
return this.#parsedTrace;
|
243
243
|
}
|
244
244
|
|
@@ -677,7 +677,7 @@ export class TimelineTreeView extends
|
|
677
677
|
}
|
678
678
|
const searchRegex = searchConfig.toSearchRegex();
|
679
679
|
this.searchResults = this.root.searchTree(
|
680
|
-
event => TimelineUIUtils.testContentMatching(event, searchRegex.regex, this.#parsedTrace || undefined));
|
680
|
+
event => TimelineUIUtils.testContentMatching(event, searchRegex.regex, this.#parsedTrace?.data || undefined));
|
681
681
|
this.searchableView.updateSearchMatchesCount(this.searchResults.length);
|
682
682
|
}
|
683
683
|
|
@@ -829,7 +829,7 @@ export class GridNode extends DataGrid.SortableDataGrid.SortableDataGridNode<Gri
|
|
829
829
|
}
|
830
830
|
const timings = event && Trace.Helpers.Timing.eventTimingsMilliSeconds(event);
|
831
831
|
const startTime = timings?.startTime ?? 0;
|
832
|
-
value = startTime - Trace.Helpers.Timing.microToMilli(parsedTrace.Meta.traceBounds.min);
|
832
|
+
value = startTime - Trace.Helpers.Timing.microToMilli(parsedTrace.data.Meta.traceBounds.min);
|
833
833
|
} break;
|
834
834
|
case 'self':
|
835
835
|
value = this.profileNode.selfTime;
|
@@ -1017,7 +1017,7 @@ export class AggregatedTimelineTreeView extends TimelineTreeView {
|
|
1017
1017
|
break;
|
1018
1018
|
|
1019
1019
|
case AggregatedTimelineTreeView.GroupBy.Frame: {
|
1020
|
-
const frame = id ? this.parsedTrace()?.PageFrames.frames.get(id) : undefined;
|
1020
|
+
const frame = id ? this.parsedTrace()?.data.PageFrames.frames.get(id) : undefined;
|
1021
1021
|
const frameName = frame ? TimelineUIUtils.displayNameForFrame(frame) : i18nString(UIStrings.page);
|
1022
1022
|
return {name: frameName, color, icon: undefined};
|
1023
1023
|
}
|
@@ -1100,12 +1100,12 @@ export class AggregatedTimelineTreeView extends TimelineTreeView {
|
|
1100
1100
|
case GroupBy.URL:
|
1101
1101
|
return (event: Trace.Types.Events.Event) => {
|
1102
1102
|
const parsedTrace = this.parsedTrace();
|
1103
|
-
return parsedTrace ? Trace.Handlers.Helpers.getNonResolvedURL(event, parsedTrace) ?? '' : '';
|
1103
|
+
return parsedTrace ? Trace.Handlers.Helpers.getNonResolvedURL(event, parsedTrace.data) ?? '' : '';
|
1104
1104
|
};
|
1105
1105
|
case GroupBy.Frame:
|
1106
1106
|
return (event: Trace.Types.Events.Event) => {
|
1107
1107
|
const frameId = Trace.Helpers.Trace.frameIDForEvent(event);
|
1108
|
-
return frameId || this.parsedTrace()?.Meta.mainFrameId || '';
|
1108
|
+
return frameId || this.parsedTrace()?.data.Meta.mainFrameId || '';
|
1109
1109
|
};
|
1110
1110
|
default:
|
1111
1111
|
console.assert(false, `Unexpected aggregation setting: ${groupBy}`);
|
@@ -1121,7 +1121,7 @@ export class AggregatedTimelineTreeView extends TimelineTreeView {
|
|
1121
1121
|
if (!parsedTrace) {
|
1122
1122
|
return '';
|
1123
1123
|
}
|
1124
|
-
const url = Trace.Handlers.Helpers.getNonResolvedURL(event, parsedTrace);
|
1124
|
+
const url = Trace.Handlers.Helpers.getNonResolvedURL(event, parsedTrace.data);
|
1125
1125
|
if (!url) {
|
1126
1126
|
// We could have receiveDataEvents (that don't have a url), but that have been
|
1127
1127
|
// attributed to an entity, let's check for these. This is used for ThirdParty grouping.
|