chrome-devtools-frontend 1.0.1512349 → 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/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 +38 -0
- 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/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 +15 -16
- package/front_end/models/ai_assistance/data_formatters/PerformanceInsightFormatter.snapshot.txt +127 -0
- package/front_end/models/ai_assistance/data_formatters/PerformanceInsightFormatter.ts +149 -26
- package/front_end/models/ai_assistance/data_formatters/PerformanceTraceFormatter.snapshot.txt +6 -0
- package/front_end/models/ai_assistance/data_formatters/PerformanceTraceFormatter.ts +9 -10
- package/front_end/models/badges/AiExplorerBadge.ts +21 -0
- package/front_end/models/badges/Badge.ts +3 -5
- package/front_end/models/badges/CodeWhispererBadge.ts +21 -0
- package/front_end/models/badges/DOMDetectiveBadge.ts +4 -3
- package/front_end/models/badges/SpeedsterBadge.ts +6 -4
- package/front_end/models/badges/StarterBadge.ts +4 -3
- package/front_end/models/badges/UserBadges.ts +29 -3
- 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 -41
- 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 +24 -4
- package/front_end/panels/common/GdpSignUpDialog.ts +5 -0
- package/front_end/panels/common/badgeNotification.css +26 -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 +18 -18
- package/front_end/panels/elements/ElementsTreeOutline.ts +41 -48
- package/front_end/panels/elements/ShortcutTreeElement.ts +4 -4
- package/front_end/panels/elements/StylePropertiesSection.ts +4 -4
- package/front_end/panels/elements/StylePropertyTreeElement.ts +49 -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 -12
- package/front_end/panels/settings/components/SyncSection.ts +20 -6
- 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 +52 -59
- 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 +43 -43
- 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/theme_support/ThemeSupport.ts +4 -4
- package/front_end/ui/visual_logging/KnownContextValues.ts +2 -2
- package/package.json +1 -1
@@ -130,9 +130,7 @@ export class TimelineFlameChartView extends Common.ObjectWrapper.eventMixin<Even
|
|
130
130
|
private needsResizeToPreferredHeights?: boolean;
|
131
131
|
private selectedSearchResult?: PerfUI.FlameChart.DataProviderSearchResult;
|
132
132
|
private searchRegex?: RegExp;
|
133
|
-
#parsedTrace: Trace.
|
134
|
-
#traceMetadata: Trace.Types.File.MetaData|null;
|
135
|
-
#traceInsightSets: Trace.Insights.Types.TraceInsightSets|null = null;
|
133
|
+
#parsedTrace: Trace.TraceModel.ParsedTrace|null;
|
136
134
|
#eventToRelatedInsightsMap: TimelineComponents.RelatedInsightChips.EventToRelatedInsightsMap|null = null;
|
137
135
|
#selectedGroupName: string|null = null;
|
138
136
|
#onTraceBoundsChangeBound = this.#onTraceBoundsChange.bind(this);
|
@@ -203,7 +201,6 @@ export class TimelineFlameChartView extends Common.ObjectWrapper.eventMixin<Even
|
|
203
201
|
this.delegate = delegate;
|
204
202
|
this.eventListeners = [];
|
205
203
|
this.#parsedTrace = null;
|
206
|
-
this.#traceMetadata = null;
|
207
204
|
|
208
205
|
const flameChartsContainer = new UI.Widget.VBox();
|
209
206
|
flameChartsContainer.element.classList.add('flame-charts-container');
|
@@ -617,17 +614,19 @@ export class TimelineFlameChartView extends Common.ObjectWrapper.eventMixin<Even
|
|
617
614
|
}
|
618
615
|
|
619
616
|
#amendMarkerWithFieldData(): void {
|
620
|
-
|
617
|
+
const metadata = this.#parsedTrace?.metadata;
|
618
|
+
const insights = this.#parsedTrace?.insights;
|
619
|
+
if (!metadata?.cruxFieldData || !insights) {
|
621
620
|
return;
|
622
621
|
}
|
623
622
|
|
624
623
|
const fieldMetricResultsByNavigationId = new Map<string, Trace.Insights.Common.CrUXFieldMetricResults|null>();
|
625
|
-
for (const [key, insightSet] of
|
624
|
+
for (const [key, insightSet] of insights) {
|
626
625
|
if (insightSet.navigation) {
|
627
626
|
fieldMetricResultsByNavigationId.set(
|
628
627
|
key,
|
629
628
|
Trace.Insights.Common.getFieldMetricsForInsightSet(
|
630
|
-
insightSet,
|
629
|
+
insightSet, metadata, CrUXManager.CrUXManager.instance().getSelectedScope()));
|
631
630
|
}
|
632
631
|
}
|
633
632
|
|
@@ -659,13 +658,13 @@ export class TimelineFlameChartView extends Common.ObjectWrapper.eventMixin<Even
|
|
659
658
|
}
|
660
659
|
}
|
661
660
|
|
662
|
-
setMarkers(parsedTrace: Trace.
|
661
|
+
setMarkers(parsedTrace: Trace.TraceModel.ParsedTrace|null): void {
|
663
662
|
if (!parsedTrace) {
|
664
663
|
return;
|
665
664
|
}
|
666
665
|
// Clear out any markers.
|
667
666
|
this.bulkRemoveOverlays(this.#markers);
|
668
|
-
const markerEvents = parsedTrace.PageLoadMetrics.allMarkerEvents;
|
667
|
+
const markerEvents = parsedTrace.data.PageLoadMetrics.allMarkerEvents;
|
669
668
|
// Set markers for Navigations, LCP, FCP, DCL, L.
|
670
669
|
const markers = markerEvents.filter(
|
671
670
|
event => event.name === Trace.Types.Events.Name.NAVIGATION_START ||
|
@@ -679,9 +678,9 @@ export class TimelineFlameChartView extends Common.ObjectWrapper.eventMixin<Even
|
|
679
678
|
markers.forEach(marker => {
|
680
679
|
const adjustedTimestamp = Trace.Helpers.Timing.timeStampForEventAdjustedByClosestNavigation(
|
681
680
|
marker,
|
682
|
-
parsedTrace.Meta.traceBounds,
|
683
|
-
parsedTrace.Meta.navigationsByNavigationId,
|
684
|
-
parsedTrace.Meta.navigationsByFrameId,
|
681
|
+
parsedTrace.data.Meta.traceBounds,
|
682
|
+
parsedTrace.data.Meta.navigationsByNavigationId,
|
683
|
+
parsedTrace.data.Meta.navigationsByFrameId,
|
685
684
|
);
|
686
685
|
// If any of the markers overlap in timing, lets put them on the same marker.
|
687
686
|
let matchingOverlay = false;
|
@@ -1190,13 +1189,15 @@ export class TimelineFlameChartView extends Common.ObjectWrapper.eventMixin<Even
|
|
1190
1189
|
this.#updateDetailViews();
|
1191
1190
|
}
|
1192
1191
|
|
1193
|
-
setModel(
|
1192
|
+
setModel(
|
1193
|
+
newParsedTrace: Trace.TraceModel.ParsedTrace,
|
1194
|
+
eventToRelatedInsightsMap: TimelineComponents.RelatedInsightChips.EventToRelatedInsightsMap): void {
|
1194
1195
|
if (newParsedTrace === this.#parsedTrace) {
|
1195
1196
|
return;
|
1196
1197
|
}
|
1197
1198
|
|
1198
1199
|
this.#parsedTrace = newParsedTrace;
|
1199
|
-
this.#
|
1200
|
+
this.#eventToRelatedInsightsMap = eventToRelatedInsightsMap;
|
1200
1201
|
for (const dimmer of this.#flameChartDimmers) {
|
1201
1202
|
dimmer.active = false;
|
1202
1203
|
dimmer.mainChartIndices = [];
|
@@ -1263,19 +1264,6 @@ export class TimelineFlameChartView extends Common.ObjectWrapper.eventMixin<Even
|
|
1263
1264
|
return {main, network};
|
1264
1265
|
}
|
1265
1266
|
|
1266
|
-
setInsights(
|
1267
|
-
insights: Trace.Insights.Types.TraceInsightSets|null,
|
1268
|
-
eventToRelatedInsightsMap: TimelineComponents.RelatedInsightChips.EventToRelatedInsightsMap): void {
|
1269
|
-
if (this.#traceInsightSets === insights) {
|
1270
|
-
return;
|
1271
|
-
}
|
1272
|
-
|
1273
|
-
this.#traceInsightSets = insights;
|
1274
|
-
this.#eventToRelatedInsightsMap = eventToRelatedInsightsMap;
|
1275
|
-
// The DetailsView is provided with the InsightSets, so make sure we update it.
|
1276
|
-
this.#updateDetailViews();
|
1277
|
-
}
|
1278
|
-
|
1279
1267
|
reset(): void {
|
1280
1268
|
if (this.networkDataProvider.isEmpty()) {
|
1281
1269
|
this.mainFlameChart.enableRuler(true);
|
@@ -1315,7 +1303,6 @@ export class TimelineFlameChartView extends Common.ObjectWrapper.eventMixin<Even
|
|
1315
1303
|
void this.detailsView.setModel({
|
1316
1304
|
parsedTrace: this.#parsedTrace,
|
1317
1305
|
selectedEvents: this.#selectedEvents,
|
1318
|
-
traceInsightsSets: this.#traceInsightSets,
|
1319
1306
|
eventToRelatedInsightsMap: this.#eventToRelatedInsightsMap,
|
1320
1307
|
entityMapper: this.#entityMapper,
|
1321
1308
|
});
|
@@ -1926,17 +1913,17 @@ export const FlameChartStyle = {
|
|
1926
1913
|
};
|
1927
1914
|
|
1928
1915
|
export class TimelineFlameChartMarker implements PerfUI.FlameChart.FlameChartMarker {
|
1929
|
-
|
1916
|
+
readonly #startTime: number;
|
1930
1917
|
private readonly startOffset: number;
|
1931
1918
|
private style: TimelineMarkerStyle;
|
1932
1919
|
constructor(startTime: number, startOffset: number, style: TimelineMarkerStyle) {
|
1933
|
-
this
|
1920
|
+
this.#startTime = startTime;
|
1934
1921
|
this.startOffset = startOffset;
|
1935
1922
|
this.style = style;
|
1936
1923
|
}
|
1937
1924
|
|
1938
1925
|
startTime(): number {
|
1939
|
-
return this
|
1926
|
+
return this.#startTime;
|
1940
1927
|
}
|
1941
1928
|
|
1942
1929
|
color(): string {
|
@@ -88,8 +88,7 @@ export interface NewHistoryRecordingData {
|
|
88
88
|
// We do not store this, but need it to build the thumbnail preview.
|
89
89
|
filmStripForPreview: Trace.Extras.FilmStrip.Data|null;
|
90
90
|
// Also not stored, but used to create the preview overview for a new trace.
|
91
|
-
parsedTrace: Trace.
|
92
|
-
metadata: Trace.Types.File.MetaData|null;
|
91
|
+
parsedTrace: Trace.TraceModel.ParsedTrace;
|
93
92
|
}
|
94
93
|
|
95
94
|
// Lazily instantiate the formatter as the constructor takes 50ms+
|
@@ -111,9 +110,9 @@ export class TimelineHistoryManager {
|
|
111
110
|
private recordings: TraceRecordingHistoryItem[];
|
112
111
|
private readonly action: UI.ActionRegistration.Action;
|
113
112
|
private readonly nextNumberByDomain: Map<string, number>;
|
114
|
-
|
113
|
+
readonly #button: ToolbarButton;
|
115
114
|
private readonly allOverviews: Array<{
|
116
|
-
constructor: (parsedTrace: Trace.
|
115
|
+
constructor: (parsedTrace: Trace.TraceModel.ParsedTrace) => TimelineEventOverview,
|
117
116
|
height: number,
|
118
117
|
}>;
|
119
118
|
private totalHeight: number;
|
@@ -127,12 +126,12 @@ export class TimelineHistoryManager {
|
|
127
126
|
this.#minimapComponent = minimapComponent;
|
128
127
|
this.action = UI.ActionRegistry.ActionRegistry.instance().getAction('timeline.show-history');
|
129
128
|
this.nextNumberByDomain = new Map();
|
130
|
-
this
|
129
|
+
this.#button = new ToolbarButton(this.action);
|
131
130
|
|
132
131
|
this.#landingPageTitle =
|
133
132
|
isNode ? i18nString(UIStrings.nodeLandingPageTitle) : i18nString(UIStrings.landingPageTitle);
|
134
133
|
|
135
|
-
UI.ARIAUtils.markAsMenuButton(this.
|
134
|
+
UI.ARIAUtils.markAsMenuButton(this.#button.element);
|
136
135
|
this.clear();
|
137
136
|
|
138
137
|
// Attempt to reuse the overviews coming from the panel's minimap
|
@@ -182,13 +181,13 @@ export class TimelineHistoryManager {
|
|
182
181
|
|
183
182
|
// Order is important: this needs to happen first because lots of the
|
184
183
|
// subsequent code depends on us storing the preview data into the map.
|
185
|
-
this.#buildAndStorePreviewData(newInput.data.parsedTraceIndex, newInput.parsedTrace,
|
184
|
+
this.#buildAndStorePreviewData(newInput.data.parsedTraceIndex, newInput.parsedTrace, filmStrip);
|
186
185
|
|
187
186
|
const modelTitle = this.title(newInput.data);
|
188
|
-
this.
|
187
|
+
this.#button.setText(modelTitle);
|
189
188
|
const buttonTitle = this.action.title();
|
190
189
|
UI.ARIAUtils.setLabel(
|
191
|
-
this.
|
190
|
+
this.#button.element, i18nString(UIStrings.currentSessionSS, {PH1: modelTitle, PH2: buttonTitle}));
|
192
191
|
this.updateState();
|
193
192
|
if (this.recordings.length <= maxRecordings) {
|
194
193
|
return;
|
@@ -212,14 +211,14 @@ export class TimelineHistoryManager {
|
|
212
211
|
}
|
213
212
|
|
214
213
|
button(): ToolbarButton {
|
215
|
-
return this
|
214
|
+
return this.#button;
|
216
215
|
}
|
217
216
|
|
218
217
|
clear(): void {
|
219
218
|
this.recordings = [];
|
220
219
|
this.lastActiveTrace = null;
|
221
220
|
this.updateState();
|
222
|
-
this.
|
221
|
+
this.#button.setText(this.#landingPageTitle);
|
223
222
|
this.nextNumberByDomain.clear();
|
224
223
|
}
|
225
224
|
|
@@ -241,7 +240,7 @@ export class TimelineHistoryManager {
|
|
241
240
|
// DropDown.show() function finishes when the dropdown menu is closed via selection or losing focus
|
242
241
|
const activeTraceIndex = await DropDown.show(
|
243
242
|
this.recordings.map(recording => recording.parsedTraceIndex), this.#getActiveTraceIndexForListControl(),
|
244
|
-
this.
|
243
|
+
this.#button.element, this.#landingPageTitle);
|
245
244
|
|
246
245
|
if (activeTraceIndex === null) {
|
247
246
|
return null;
|
@@ -311,9 +310,9 @@ export class TimelineHistoryManager {
|
|
311
310
|
this.lastActiveTrace = item;
|
312
311
|
const modelTitle = this.title(item);
|
313
312
|
const buttonTitle = this.action.title();
|
314
|
-
this.
|
313
|
+
this.#button.setText(modelTitle);
|
315
314
|
UI.ARIAUtils.setLabel(
|
316
|
-
this.
|
315
|
+
this.#button.element, i18nString(UIStrings.currentSessionSS, {PH1: modelTitle, PH2: buttonTitle}));
|
317
316
|
}
|
318
317
|
|
319
318
|
private updateState(): void {
|
@@ -341,9 +340,9 @@ export class TimelineHistoryManager {
|
|
341
340
|
}
|
342
341
|
|
343
342
|
#buildAndStorePreviewData(
|
344
|
-
parsedTraceIndex: number, parsedTrace: Trace.
|
343
|
+
parsedTraceIndex: number, parsedTrace: Trace.TraceModel.ParsedTrace,
|
345
344
|
filmStrip: Trace.Extras.FilmStrip.Data|null): HTMLDivElement {
|
346
|
-
const parsedURL = Common.ParsedURL.ParsedURL.fromString(parsedTrace.Meta.mainFrameURL);
|
345
|
+
const parsedURL = Common.ParsedURL.ParsedURL.fromString(parsedTrace.data.Meta.mainFrameURL);
|
347
346
|
const domain = parsedURL ? parsedURL.host : '';
|
348
347
|
|
349
348
|
const sequenceNumber = this.nextNumberByDomain.get(domain) || 1;
|
@@ -362,7 +361,7 @@ export class TimelineHistoryManager {
|
|
362
361
|
};
|
363
362
|
parsedTraceIndexToPerformancePreviewData.set(parsedTraceIndex, data);
|
364
363
|
|
365
|
-
preview.appendChild(this.#buildTextDetails(metadata, domain));
|
364
|
+
preview.appendChild(this.#buildTextDetails(parsedTrace.metadata, domain));
|
366
365
|
const screenshotAndOverview = preview.createChild('div', 'hbox');
|
367
366
|
screenshotAndOverview.appendChild(this.#buildScreenshotThumbnail(filmStrip));
|
368
367
|
screenshotAndOverview.appendChild(this.#buildOverview(parsedTrace));
|
@@ -412,7 +411,7 @@ export class TimelineHistoryManager {
|
|
412
411
|
return container;
|
413
412
|
}
|
414
413
|
|
415
|
-
#buildOverview(parsedTrace: Trace.
|
414
|
+
#buildOverview(parsedTrace: Trace.TraceModel.ParsedTrace): Element {
|
416
415
|
const container = document.createElement('div');
|
417
416
|
const dPR = window.devicePixelRatio;
|
418
417
|
container.style.width = previewWidth + 'px';
|
@@ -23,7 +23,7 @@ import miniMapStyles from './timelineMiniMap.css.js';
|
|
23
23
|
import {TimelineUIUtils} from './TimelineUIUtils.js';
|
24
24
|
|
25
25
|
export interface OverviewData {
|
26
|
-
parsedTrace: Trace.
|
26
|
+
parsedTrace: Trace.TraceModel.ParsedTrace;
|
27
27
|
isCpuProfile?: boolean;
|
28
28
|
settings: {
|
29
29
|
showScreenshots: boolean,
|
@@ -244,10 +244,10 @@ export class TimelineMiniMap extends
|
|
244
244
|
this.#overviewComponent.reset();
|
245
245
|
}
|
246
246
|
|
247
|
-
#setMarkers(parsedTrace: Trace.
|
247
|
+
#setMarkers(parsedTrace: Trace.TraceModel.ParsedTrace): void {
|
248
248
|
const markers = new Map<number, HTMLDivElement>();
|
249
249
|
|
250
|
-
const {Meta} = parsedTrace;
|
250
|
+
const {Meta} = parsedTrace.data;
|
251
251
|
|
252
252
|
// Only add markers for navigation start times.
|
253
253
|
const navStartEvents = Meta.mainFrameNavigations;
|
@@ -261,8 +261,8 @@ export class TimelineMiniMap extends
|
|
261
261
|
this.#overviewComponent.setMarkers(markers);
|
262
262
|
}
|
263
263
|
|
264
|
-
#setNavigationStartEvents(parsedTrace: Trace.
|
265
|
-
this.#overviewComponent.setNavStartTimes(parsedTrace.Meta.mainFrameNavigations);
|
264
|
+
#setNavigationStartEvents(parsedTrace: Trace.TraceModel.ParsedTrace): void {
|
265
|
+
this.#overviewComponent.setNavStartTimes(parsedTrace.data.Meta.mainFrameNavigations);
|
266
266
|
}
|
267
267
|
|
268
268
|
getControls(): TimelineEventOverview[] {
|
@@ -291,7 +291,7 @@ export class TimelineMiniMap extends
|
|
291
291
|
|
292
292
|
this.#controls.push(new TimelineEventOverviewNetwork(data.parsedTrace));
|
293
293
|
if (data.settings.showScreenshots) {
|
294
|
-
const filmStrip = Trace.Extras.FilmStrip.
|
294
|
+
const filmStrip = Trace.Extras.FilmStrip.fromHandlerData(data.parsedTrace.data);
|
295
295
|
if (filmStrip.frames.length) {
|
296
296
|
this.#controls.push(new TimelineFilmStripOverview(filmStrip));
|
297
297
|
}
|
@@ -23,9 +23,9 @@ export class TimelinePaintProfilerView extends UI.SplitWidget.SplitWidget {
|
|
23
23
|
private event: Trace.Types.Events.Event|null;
|
24
24
|
private paintProfilerModel: SDK.PaintProfiler.PaintProfilerModel|null;
|
25
25
|
private lastLoadedSnapshot: SDK.PaintProfiler.PaintProfilerSnapshot|null;
|
26
|
-
#parsedTrace: Trace.
|
26
|
+
#parsedTrace: Trace.TraceModel.ParsedTrace;
|
27
27
|
|
28
|
-
constructor(parsedTrace: Trace.
|
28
|
+
constructor(parsedTrace: Trace.TraceModel.ParsedTrace) {
|
29
29
|
super(false, false);
|
30
30
|
this.element.classList.add('timeline-paint-profiler-view');
|
31
31
|
this.setSidebarSize(60);
|
@@ -76,7 +76,7 @@ export class TimelinePaintProfilerView extends UI.SplitWidget.SplitWidget {
|
|
76
76
|
return false;
|
77
77
|
}
|
78
78
|
|
79
|
-
const frame = this.#parsedTrace.Frames.framesById[data.sourceFrameNumber];
|
79
|
+
const frame = this.#parsedTrace.data.Frames.framesById[data.sourceFrameNumber];
|
80
80
|
if (!frame?.layerTree) {
|
81
81
|
return false;
|
82
82
|
}
|
@@ -91,7 +91,7 @@ export class TimelinePaintProfilerView extends UI.SplitWidget.SplitWidget {
|
|
91
91
|
|
92
92
|
this.updateWhenVisible();
|
93
93
|
if (Trace.Types.Events.isPaint(event)) {
|
94
|
-
const snapshot = this.#parsedTrace.LayerTree.paintsToSnapshots.get(event);
|
94
|
+
const snapshot = this.#parsedTrace.data.LayerTree.paintsToSnapshots.get(event);
|
95
95
|
return Boolean(snapshot);
|
96
96
|
}
|
97
97
|
if (Trace.Types.Events.isRasterTask(event)) {
|
@@ -126,7 +126,7 @@ export class TimelinePaintProfilerView extends UI.SplitWidget.SplitWidget {
|
|
126
126
|
return null;
|
127
127
|
}
|
128
128
|
|
129
|
-
const frame = this.#parsedTrace.Frames.framesById[data.sourceFrameNumber];
|
129
|
+
const frame = this.#parsedTrace.data.Frames.framesById[data.sourceFrameNumber];
|
130
130
|
if (!frame?.layerTree) {
|
131
131
|
return null;
|
132
132
|
}
|
@@ -155,7 +155,7 @@ export class TimelinePaintProfilerView extends UI.SplitWidget.SplitWidget {
|
|
155
155
|
// snapshot to that paint event. That is why here if the event is a Paint
|
156
156
|
// event, we look to see if it has had a matching picture event set for
|
157
157
|
// it.
|
158
|
-
const snapshotEvent = this.#parsedTrace.LayerTree.paintsToSnapshots.get(this.event);
|
158
|
+
const snapshotEvent = this.#parsedTrace.data.LayerTree.paintsToSnapshots.get(this.event);
|
159
159
|
if (snapshotEvent) {
|
160
160
|
const encodedData = snapshotEvent.args.snapshot.skp64;
|
161
161
|
snapshotPromise = this.paintProfilerModel.loadSnapshot(encodedData).then(snapshot => {
|
@@ -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);
|
@@ -2833,10 +2823,11 @@ export class TimelinePanel extends Common.ObjectWrapper.eventMixin<EventTypes, t
|
|
2833
2823
|
if (!parsedTrace) {
|
2834
2824
|
return null;
|
2835
2825
|
}
|
2826
|
+
|
2836
2827
|
const endTime = rangeForSelection(selection).max;
|
2837
2828
|
const lastFrameInSelection = Trace.Handlers.ModelHandlers.Frames
|
2838
2829
|
.framesWithinWindow(
|
2839
|
-
parsedTrace.Frames.frames,
|
2830
|
+
parsedTrace.data.Frames.frames,
|
2840
2831
|
endTime,
|
2841
2832
|
endTime,
|
2842
2833
|
)
|
@@ -2856,10 +2847,11 @@ export class TimelinePanel extends Common.ObjectWrapper.eventMixin<EventTypes, t
|
|
2856
2847
|
if (!parsedTrace) {
|
2857
2848
|
return;
|
2858
2849
|
}
|
2859
|
-
|
2850
|
+
|
2851
|
+
let index = parsedTrace.data.Frames.frames.indexOf(currentFrame);
|
2860
2852
|
console.assert(index >= 0, 'Can\'t find current frame in the frame list');
|
2861
|
-
index = Platform.NumberUtilities.clamp(index + offset, 0, parsedTrace.Frames.frames.length - 1);
|
2862
|
-
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];
|
2863
2855
|
this.#revealTimeRange(
|
2864
2856
|
Trace.Helpers.Timing.microToMilli(frame.startTime), Trace.Helpers.Timing.microToMilli(frame.endTime));
|
2865
2857
|
this.select(selectionFromEvent(frame));
|
@@ -3019,16 +3011,16 @@ export class TimelinePanel extends Common.ObjectWrapper.eventMixin<EventTypes, t
|
|
3019
3011
|
message: `Error running the trace: ${eventData.errorText}`,
|
3020
3012
|
};
|
3021
3013
|
}
|
3014
|
+
|
3022
3015
|
const parsedTrace = panelInstance.model.parsedTrace(eventData.traceIndex);
|
3023
|
-
|
3024
|
-
if (!parsedTrace || !insights || insights.size === 0) {
|
3016
|
+
if (!parsedTrace || !parsedTrace.insights || parsedTrace.insights.size === 0) {
|
3025
3017
|
return {
|
3026
3018
|
type: AiAssistanceModel.ExternalRequestResponseType.ERROR,
|
3027
3019
|
message: 'The trace was loaded successfully but no Insights were detected.',
|
3028
3020
|
};
|
3029
3021
|
}
|
3030
3022
|
|
3031
|
-
const navigationId = Array.from(insights.keys()).find(k => k !== 'NO_NAVIGATION');
|
3023
|
+
const navigationId = Array.from(parsedTrace.insights.keys()).find(k => k !== 'NO_NAVIGATION');
|
3032
3024
|
if (!navigationId) {
|
3033
3025
|
return {
|
3034
3026
|
type: AiAssistanceModel.ExternalRequestResponseType.ERROR,
|
@@ -3036,7 +3028,7 @@ export class TimelinePanel extends Common.ObjectWrapper.eventMixin<EventTypes, t
|
|
3036
3028
|
};
|
3037
3029
|
}
|
3038
3030
|
|
3039
|
-
const insightsForNav = insights.get(navigationId);
|
3031
|
+
const insightsForNav = parsedTrace.insights.get(navigationId);
|
3040
3032
|
if (!insightsForNav) {
|
3041
3033
|
return {
|
3042
3034
|
type: AiAssistanceModel.ExternalRequestResponseType.ERROR,
|
@@ -3049,6 +3041,7 @@ export class TimelinePanel extends Common.ObjectWrapper.eventMixin<EventTypes, t
|
|
3049
3041
|
// bottom of the response under a heading.
|
3050
3042
|
let responseTextForPassedInsights = '';
|
3051
3043
|
|
3044
|
+
// TODO(b/442392194): use PerformanceTraceFormatter summary instead.
|
3052
3045
|
for (const modelName in insightsForNav.model) {
|
3053
3046
|
const model = modelName as keyof Trace.Insights.Types.InsightModelsType;
|
3054
3047
|
const insight = insightsForNav.model[model];
|