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
@@ -130,11 +130,11 @@ export class TimelineFlameChartDataProvider extends Common.ObjectWrapper.ObjectW
|
|
130
130
|
PerfUI.FlameChart.FlameChartDataProvider {
|
131
131
|
private droppedFramePattern: CanvasPattern|null;
|
132
132
|
private partialFramePattern: CanvasPattern|null;
|
133
|
-
|
133
|
+
#timelineData: PerfUI.FlameChart.FlameChartTimelineData|null = null;
|
134
134
|
private currentLevel = 0;
|
135
135
|
|
136
136
|
private compatibilityTracksAppender: CompatibilityTracksAppender|null = null;
|
137
|
-
private parsedTrace: Trace.
|
137
|
+
private parsedTrace: Trace.TraceModel.ParsedTrace|null = null;
|
138
138
|
|
139
139
|
#minimumBoundary = 0;
|
140
140
|
private timeSpan = 0;
|
@@ -455,10 +455,10 @@ export class TimelineFlameChartDataProvider extends Common.ObjectWrapper.ObjectW
|
|
455
455
|
return Object.assign(defaultGroupStyle, extra);
|
456
456
|
}
|
457
457
|
|
458
|
-
setModel(parsedTrace: Trace.
|
458
|
+
setModel(parsedTrace: Trace.TraceModel.ParsedTrace, entityMapper: Utils.EntityMapper.EntityMapper): void {
|
459
459
|
this.reset();
|
460
460
|
this.parsedTrace = parsedTrace;
|
461
|
-
const {traceBounds} = parsedTrace.Meta;
|
461
|
+
const {traceBounds} = parsedTrace.data.Meta;
|
462
462
|
const minTime = Trace.Helpers.Timing.microToMilli(traceBounds.min);
|
463
463
|
const maxTime = Trace.Helpers.Timing.microToMilli(traceBounds.max);
|
464
464
|
this.#minimumBoundary = minTime;
|
@@ -479,9 +479,9 @@ export class TimelineFlameChartDataProvider extends Common.ObjectWrapper.ObjectW
|
|
479
479
|
throw new Error(
|
480
480
|
'Attempted to instantiate a CompatibilityTracksAppender without having set the trace parse data first.');
|
481
481
|
}
|
482
|
-
this
|
482
|
+
this.#timelineData = this.#instantiateTimelineData();
|
483
483
|
this.compatibilityTracksAppender = new CompatibilityTracksAppender(
|
484
|
-
this
|
484
|
+
this.#timelineData, this.parsedTrace, this.entryData, this.entryTypeByLevel, this.#entityMapper);
|
485
485
|
}
|
486
486
|
return this.compatibilityTracksAppender;
|
487
487
|
}
|
@@ -492,10 +492,10 @@ export class TimelineFlameChartDataProvider extends Common.ObjectWrapper.ObjectW
|
|
492
492
|
* creates a new instance and returns it.
|
493
493
|
*/
|
494
494
|
#instantiateTimelineData(): PerfUI.FlameChart.FlameChartTimelineData {
|
495
|
-
if (!this
|
496
|
-
this
|
495
|
+
if (!this.#timelineData) {
|
496
|
+
this.#timelineData = PerfUI.FlameChart.FlameChartTimelineData.createEmpty();
|
497
497
|
}
|
498
|
-
return this
|
498
|
+
return this.#timelineData;
|
499
499
|
}
|
500
500
|
|
501
501
|
/**
|
@@ -537,7 +537,7 @@ export class TimelineFlameChartDataProvider extends Common.ObjectWrapper.ObjectW
|
|
537
537
|
if (!this.parsedTrace) {
|
538
538
|
return [];
|
539
539
|
}
|
540
|
-
return this.parsedTrace.Meta.mainFrameNavigations;
|
540
|
+
return this.parsedTrace.data.Meta.mainFrameNavigations;
|
541
541
|
}
|
542
542
|
|
543
543
|
entryTitle(entryIndex: number): string|null {
|
@@ -546,7 +546,7 @@ export class TimelineFlameChartDataProvider extends Common.ObjectWrapper.ObjectW
|
|
546
546
|
return '';
|
547
547
|
}
|
548
548
|
if (entryType === EntryType.TRACK_APPENDER) {
|
549
|
-
const timelineData = (this
|
549
|
+
const timelineData = (this.#timelineData as PerfUI.FlameChart.FlameChartTimelineData);
|
550
550
|
const eventLevel = timelineData.entryLevels[entryIndex];
|
551
551
|
const event = (this.entryData[entryIndex]);
|
552
552
|
return this.compatibilityTracksAppender?.titleForEvent(event, eventLevel) || null;
|
@@ -581,9 +581,9 @@ export class TimelineFlameChartDataProvider extends Common.ObjectWrapper.ObjectW
|
|
581
581
|
this.entryIndexToTitle = [];
|
582
582
|
this.#eventIndexByEvent = new Map();
|
583
583
|
|
584
|
-
if (this
|
584
|
+
if (this.#timelineData) {
|
585
585
|
this.compatibilityTracksAppender?.setFlameChartDataAndEntryData(
|
586
|
-
this
|
586
|
+
this.#timelineData, this.entryData, this.entryTypeByLevel);
|
587
587
|
this.compatibilityTracksAppender?.threadAppenders().forEach(
|
588
588
|
threadAppender => threadAppender.setHeaderAppended(false));
|
589
589
|
}
|
@@ -607,7 +607,7 @@ export class TimelineFlameChartDataProvider extends Common.ObjectWrapper.ObjectW
|
|
607
607
|
|
608
608
|
this.compatibilityTracksAppender?.reset();
|
609
609
|
this.compatibilityTracksAppender = null;
|
610
|
-
this
|
610
|
+
this.#timelineData = null;
|
611
611
|
this.parsedTrace = null;
|
612
612
|
this.#entityMapper = null;
|
613
613
|
this.#lastInitiatorEntryIndex = -1;
|
@@ -623,13 +623,13 @@ export class TimelineFlameChartDataProvider extends Common.ObjectWrapper.ObjectW
|
|
623
623
|
* the new trace engine). The result built data is cached and returned.
|
624
624
|
*/
|
625
625
|
timelineData(rebuild = false): PerfUI.FlameChart.FlameChartTimelineData {
|
626
|
-
if (!rebuild && this
|
626
|
+
if (!rebuild && this.#timelineData && this.#timelineData.entryLevels.length !== 0) {
|
627
627
|
// If the flame chart data is built already and we don't want to rebuild, we can return the cached data.
|
628
628
|
// |entryLevels.length| is used to check if the cached data is not empty (correctly built),
|
629
|
-
return this
|
629
|
+
return this.#timelineData;
|
630
630
|
}
|
631
631
|
|
632
|
-
this
|
632
|
+
this.#timelineData = PerfUI.FlameChart.FlameChartTimelineData.createEmpty();
|
633
633
|
|
634
634
|
if (rebuild) {
|
635
635
|
// This function will interact with the |compatibilityTracksAppender|, which needs the reference of
|
@@ -644,13 +644,13 @@ export class TimelineFlameChartDataProvider extends Common.ObjectWrapper.ObjectW
|
|
644
644
|
// Note for readers: NodeJS CpuProfiles are purposefully NOT generic.
|
645
645
|
// We wrap them in a `TracingStartedInPage` event, which causes them to
|
646
646
|
// be treated like "real" Chrome traces. This is by design!
|
647
|
-
if (this.parsedTrace.Meta.traceIsGeneric) {
|
647
|
+
if (this.parsedTrace.data.Meta.traceIsGeneric) {
|
648
648
|
this.#processGenericTrace();
|
649
649
|
} else {
|
650
650
|
this.#processInspectorTrace();
|
651
651
|
}
|
652
652
|
}
|
653
|
-
return this
|
653
|
+
return this.#timelineData;
|
654
654
|
}
|
655
655
|
|
656
656
|
#processGenericTrace(): void {
|
@@ -662,7 +662,7 @@ export class TimelineFlameChartDataProvider extends Common.ObjectWrapper.ObjectW
|
|
662
662
|
|
663
663
|
for (const [pid, threadAppenders] of appendersByProcess) {
|
664
664
|
const processGroupStyle = this.buildGroupStyle({shareHeaderLine: false});
|
665
|
-
const processName = this.parsedTrace?.Meta.processNames.get(pid)?.args.name || 'Process';
|
665
|
+
const processName = this.parsedTrace?.data.Meta.processNames.get(pid)?.args.name || 'Process';
|
666
666
|
this.appendHeader(`${processName} (${pid})`, processGroupStyle, true, false);
|
667
667
|
for (const appender of threadAppenders) {
|
668
668
|
appender.setHeaderNestingLevel(1);
|
@@ -718,19 +718,19 @@ export class TimelineFlameChartDataProvider extends Common.ObjectWrapper.ObjectW
|
|
718
718
|
// main thread track. Therefore in this check we look to see if the
|
719
719
|
// current appender is a ThreadAppender and represnets the Main Thread.
|
720
720
|
// If it is, we mark the group as selected.
|
721
|
-
if (this
|
721
|
+
if (this.#timelineData && !this.#timelineData.selectedGroup) {
|
722
722
|
if (appender instanceof ThreadAppender &&
|
723
723
|
(appender.threadType === Trace.Handlers.Threads.ThreadType.MAIN_THREAD ||
|
724
724
|
appender.threadType === Trace.Handlers.Threads.ThreadType.CPU_PROFILE)) {
|
725
725
|
const group = this.compatibilityTracksAppender?.groupForAppender(appender);
|
726
726
|
if (group) {
|
727
|
-
this.
|
727
|
+
this.#timelineData.selectedGroup = group;
|
728
728
|
}
|
729
729
|
}
|
730
730
|
}
|
731
731
|
}
|
732
|
-
if (this
|
733
|
-
this.
|
732
|
+
if (this.#timelineData?.selectedGroup) {
|
733
|
+
this.#timelineData.selectedGroup.expanded = true;
|
734
734
|
}
|
735
735
|
}
|
736
736
|
|
@@ -763,7 +763,7 @@ export class TimelineFlameChartDataProvider extends Common.ObjectWrapper.ObjectW
|
|
763
763
|
if (!Trace.Helpers.Timing.eventIsInBounds(entry, visibleWindow)) {
|
764
764
|
continue;
|
765
765
|
}
|
766
|
-
if (!filter || filter.accept(entry, this.parsedTrace || undefined)) {
|
766
|
+
if (!filter || filter.accept(entry, this.parsedTrace?.data || undefined)) {
|
767
767
|
const startTimeMilli = Trace.Helpers.Timing.microToMilli(entry.ts);
|
768
768
|
results.push({index: i, startTimeMilli, provider: 'main'});
|
769
769
|
}
|
@@ -786,9 +786,9 @@ export class TimelineFlameChartDataProvider extends Common.ObjectWrapper.ObjectW
|
|
786
786
|
if (!this.parsedTrace) {
|
787
787
|
return;
|
788
788
|
}
|
789
|
-
const filmStrip = Trace.Extras.FilmStrip.
|
789
|
+
const filmStrip = Trace.Extras.FilmStrip.fromHandlerData(this.parsedTrace.data);
|
790
790
|
const hasScreenshots = filmStrip.frames.length > 0;
|
791
|
-
const hasFrames = this.parsedTrace.Frames.frames.length > 0;
|
791
|
+
const hasFrames = this.parsedTrace.data.Frames.frames.length > 0;
|
792
792
|
if (!hasFrames && !hasScreenshots) {
|
793
793
|
return;
|
794
794
|
}
|
@@ -799,7 +799,7 @@ export class TimelineFlameChartDataProvider extends Common.ObjectWrapper.ObjectW
|
|
799
799
|
this.appendHeader(i18nString(UIStrings.frames), this.framesGroupStyle, false /* selectable */, expanded);
|
800
800
|
|
801
801
|
this.entryTypeByLevel[this.currentLevel] = EntryType.FRAME;
|
802
|
-
for (const frame of this.parsedTrace.Frames.frames) {
|
802
|
+
for (const frame of this.parsedTrace.data.Frames.frames) {
|
803
803
|
this.#appendFrame(frame);
|
804
804
|
}
|
805
805
|
++this.currentLevel;
|
@@ -811,7 +811,7 @@ export class TimelineFlameChartDataProvider extends Common.ObjectWrapper.ObjectW
|
|
811
811
|
}
|
812
812
|
|
813
813
|
#appendScreenshots(filmStrip: Trace.Extras.FilmStrip.Data): void {
|
814
|
-
if (!this
|
814
|
+
if (!this.#timelineData || !this.parsedTrace) {
|
815
815
|
return;
|
816
816
|
}
|
817
817
|
this.appendHeader('', this.screenshotsGroupStyle, false /* selectable */);
|
@@ -821,18 +821,19 @@ export class TimelineFlameChartDataProvider extends Common.ObjectWrapper.ObjectW
|
|
821
821
|
for (const filmStripFrame of filmStrip.frames) {
|
822
822
|
const screenshotTimeInMilliSeconds = Trace.Helpers.Timing.microToMilli(filmStripFrame.screenshotEvent.ts);
|
823
823
|
this.entryData.push(filmStripFrame.screenshotEvent);
|
824
|
-
(this.
|
825
|
-
(this.
|
824
|
+
(this.#timelineData.entryLevels as number[]).push(this.currentLevel);
|
825
|
+
(this.#timelineData.entryStartTimes as number[]).push(screenshotTimeInMilliSeconds);
|
826
826
|
if (prevTimestamp) {
|
827
|
-
(this.
|
827
|
+
(this.#timelineData.entryTotalTimes as number[]).push(screenshotTimeInMilliSeconds - prevTimestamp);
|
828
828
|
}
|
829
829
|
prevTimestamp = screenshotTimeInMilliSeconds;
|
830
830
|
}
|
831
831
|
if (filmStrip.frames.length && prevTimestamp !== undefined) {
|
832
|
-
const maxRecordTimeMillis =
|
832
|
+
const maxRecordTimeMillis =
|
833
|
+
Trace.Helpers.Timing.traceWindowMilliSeconds(this.parsedTrace.data.Meta.traceBounds).max;
|
833
834
|
|
834
835
|
// Set the total time of the final screenshot so it takes up the remainder of the trace.
|
835
|
-
(this.
|
836
|
+
(this.#timelineData.entryTotalTimes as number[]).push(maxRecordTimeMillis - prevTimestamp);
|
836
837
|
}
|
837
838
|
++this.currentLevel;
|
838
839
|
}
|
@@ -855,7 +856,7 @@ export class TimelineFlameChartDataProvider extends Common.ObjectWrapper.ObjectW
|
|
855
856
|
return null;
|
856
857
|
}
|
857
858
|
const event = (this.entryData[entryIndex]);
|
858
|
-
const timelineData = (this
|
859
|
+
const timelineData = (this.#timelineData as PerfUI.FlameChart.FlameChartTimelineData);
|
859
860
|
const eventLevel = timelineData.entryLevels[entryIndex];
|
860
861
|
const popoverInfo = this.compatibilityTracksAppender.popoverInfo(event, eventLevel);
|
861
862
|
title = popoverInfo.title;
|
@@ -922,7 +923,7 @@ export class TimelineFlameChartDataProvider extends Common.ObjectWrapper.ObjectW
|
|
922
923
|
return;
|
923
924
|
}
|
924
925
|
|
925
|
-
const timelineData = (this
|
926
|
+
const timelineData = (this.#timelineData as PerfUI.FlameChart.FlameChartTimelineData);
|
926
927
|
const eventLevel = timelineData.entryLevels[entryIndex];
|
927
928
|
const event = (this.entryData[entryIndex]);
|
928
929
|
return this.compatibilityTracksAppender?.getDrawOverride(event, eventLevel);
|
@@ -952,7 +953,7 @@ export class TimelineFlameChartDataProvider extends Common.ObjectWrapper.ObjectW
|
|
952
953
|
return this.#entryColorForFrame(entryIndex);
|
953
954
|
}
|
954
955
|
if (entryType === EntryType.TRACK_APPENDER) {
|
955
|
-
const timelineData = (this
|
956
|
+
const timelineData = (this.#timelineData as PerfUI.FlameChart.FlameChartTimelineData);
|
956
957
|
const eventLevel = timelineData.entryLevels[entryIndex];
|
957
958
|
const event = (this.entryData[entryIndex]);
|
958
959
|
return this.compatibilityTracksAppender?.colorForEvent(event, eventLevel) || '';
|
@@ -1194,14 +1195,14 @@ export class TimelineFlameChartDataProvider extends Common.ObjectWrapper.ObjectW
|
|
1194
1195
|
// decorated.
|
1195
1196
|
return true;
|
1196
1197
|
}
|
1197
|
-
return Boolean(this.parsedTrace?.Warnings.perEvent.get(event));
|
1198
|
+
return Boolean(this.parsedTrace?.data.Warnings.perEvent.get(event));
|
1198
1199
|
}
|
1199
1200
|
|
1200
1201
|
private appendHeader(title: string, style: PerfUI.FlameChart.GroupStyle, selectable: boolean, expanded?: boolean):
|
1201
1202
|
PerfUI.FlameChart.Group {
|
1202
1203
|
const group =
|
1203
1204
|
({startLevel: this.currentLevel, name: title, style, selectable, expanded} as PerfUI.FlameChart.Group);
|
1204
|
-
(this
|
1205
|
+
(this.#timelineData as PerfUI.FlameChart.FlameChartTimelineData).groups.push(group);
|
1205
1206
|
return group;
|
1206
1207
|
}
|
1207
1208
|
|
@@ -1210,12 +1211,12 @@ export class TimelineFlameChartDataProvider extends Common.ObjectWrapper.ObjectW
|
|
1210
1211
|
this.entryData.push(frame);
|
1211
1212
|
const durationMilliseconds = Trace.Helpers.Timing.microToMilli(frame.duration);
|
1212
1213
|
this.entryIndexToTitle[index] = i18n.TimeUtilities.millisToString(durationMilliseconds, true);
|
1213
|
-
if (!this
|
1214
|
+
if (!this.#timelineData) {
|
1214
1215
|
return;
|
1215
1216
|
}
|
1216
|
-
this.
|
1217
|
-
this.
|
1218
|
-
this.
|
1217
|
+
this.#timelineData.entryLevels[index] = this.currentLevel;
|
1218
|
+
this.#timelineData.entryTotalTimes[index] = durationMilliseconds;
|
1219
|
+
this.#timelineData.entryStartTimes[index] = Trace.Helpers.Timing.microToMilli(frame.startTime);
|
1219
1220
|
}
|
1220
1221
|
|
1221
1222
|
createSelection(entryIndex: number): TimelineSelection|null {
|
@@ -1235,7 +1236,7 @@ export class TimelineFlameChartDataProvider extends Common.ObjectWrapper.ObjectW
|
|
1235
1236
|
if (!this.compatibilityTracksAppender) {
|
1236
1237
|
return null;
|
1237
1238
|
}
|
1238
|
-
const level = this
|
1239
|
+
const level = this.#timelineData?.entryLevels[entryIndex] ?? null;
|
1239
1240
|
if (level === null) {
|
1240
1241
|
return null;
|
1241
1242
|
}
|
@@ -1264,7 +1265,7 @@ export class TimelineFlameChartDataProvider extends Common.ObjectWrapper.ObjectW
|
|
1264
1265
|
// the case that this Entry is hidden by the Context Menu action.
|
1265
1266
|
// Try revealing the entry and getting the index again.
|
1266
1267
|
if (index === -1) {
|
1267
|
-
if (this
|
1268
|
+
if (this.#timelineData?.selectedGroup) {
|
1268
1269
|
ModificationsManager.activeManager()?.getEntriesFilter().revealEntry(selection.event);
|
1269
1270
|
this.timelineData(true);
|
1270
1271
|
}
|
@@ -1304,7 +1305,7 @@ export class TimelineFlameChartDataProvider extends Common.ObjectWrapper.ObjectW
|
|
1304
1305
|
* @returns if we should re-render the flame chart (canvas)
|
1305
1306
|
*/
|
1306
1307
|
buildFlowForInitiator(entryIndex: number): boolean {
|
1307
|
-
if (!this.parsedTrace || !this.compatibilityTracksAppender || !this
|
1308
|
+
if (!this.parsedTrace || !this.compatibilityTracksAppender || !this.#timelineData) {
|
1308
1309
|
return false;
|
1309
1310
|
}
|
1310
1311
|
|
@@ -1317,16 +1318,16 @@ export class TimelineFlameChartDataProvider extends Common.ObjectWrapper.ObjectW
|
|
1317
1318
|
|
1318
1319
|
this.#lastInitiatorEntryIndex = entryIndex;
|
1319
1320
|
|
1320
|
-
const previousInitiatorsDataLength = this.
|
1321
|
+
const previousInitiatorsDataLength = this.#timelineData.initiatorsData.length;
|
1321
1322
|
|
1322
1323
|
if (entryIndex === -1) {
|
1323
1324
|
// User has deselected an event, so if it had any initiators we need to clear them.
|
1324
|
-
if (this.
|
1325
|
+
if (this.#timelineData.initiatorsData.length === 0) {
|
1325
1326
|
// The previous selected entry had no initiators, so we can early exit and not redraw anything.
|
1326
1327
|
return false;
|
1327
1328
|
}
|
1328
1329
|
// Clear initiator data and trigger a re-render.
|
1329
|
-
this.
|
1330
|
+
this.#timelineData.emptyInitiators();
|
1330
1331
|
return true;
|
1331
1332
|
}
|
1332
1333
|
|
@@ -1340,7 +1341,7 @@ export class TimelineFlameChartDataProvider extends Common.ObjectWrapper.ObjectW
|
|
1340
1341
|
// Avoid re-building the initiators if we already did it previously.
|
1341
1342
|
const cached = this.#initiatorsCache.get(entryIndex);
|
1342
1343
|
if (cached) {
|
1343
|
-
this.
|
1344
|
+
this.#timelineData.initiatorsData = cached;
|
1344
1345
|
return true;
|
1345
1346
|
}
|
1346
1347
|
|
@@ -1349,7 +1350,7 @@ export class TimelineFlameChartDataProvider extends Common.ObjectWrapper.ObjectW
|
|
1349
1350
|
// 2. Know that it's not an event with initiators that are cached.
|
1350
1351
|
const event = this.entryData[entryIndex];
|
1351
1352
|
// Reset to clear any previous arrows from the last event.
|
1352
|
-
this.
|
1353
|
+
this.#timelineData.emptyInitiators();
|
1353
1354
|
|
1354
1355
|
const hiddenEvents: Trace.Types.Events.Event[] =
|
1355
1356
|
ModificationsManager.activeManager()?.getEntriesFilter().invisibleEntries() ?? [];
|
@@ -1376,14 +1377,14 @@ export class TimelineFlameChartDataProvider extends Common.ObjectWrapper.ObjectW
|
|
1376
1377
|
if (eventIndex === null || initiatorIndex === null) {
|
1377
1378
|
continue;
|
1378
1379
|
}
|
1379
|
-
this.
|
1380
|
+
this.#timelineData.initiatorsData.push({
|
1380
1381
|
initiatorIndex,
|
1381
1382
|
eventIndex,
|
1382
1383
|
isInitiatorHidden: initiatorData.isInitiatorHidden,
|
1383
1384
|
isEntryHidden: initiatorData.isEntryHidden,
|
1384
1385
|
});
|
1385
1386
|
}
|
1386
|
-
this.#initiatorsCache.set(entryIndex, this.
|
1387
|
+
this.#initiatorsCache.set(entryIndex, this.#timelineData.initiatorsData);
|
1387
1388
|
return true;
|
1388
1389
|
}
|
1389
1390
|
|
@@ -32,9 +32,9 @@ export class TimelineFlameChartNetworkDataProvider implements PerfUI.FlameChart.
|
|
32
32
|
#maxLevel = 0;
|
33
33
|
#networkTrackAppender: NetworkTrackAppender|null = null;
|
34
34
|
|
35
|
-
#
|
35
|
+
#timelineData: PerfUI.FlameChart.FlameChartTimelineData|null = null;
|
36
36
|
#lastSelection: Selection|null = null;
|
37
|
-
#parsedTrace: Trace.
|
37
|
+
#parsedTrace: Trace.TraceModel.ParsedTrace|null = null;
|
38
38
|
#eventIndexByEvent = new Map<NetworkTrackEvent, number|null>();
|
39
39
|
// -1 means no entry is selected.
|
40
40
|
#lastInitiatorEntry = -1;
|
@@ -57,13 +57,13 @@ export class TimelineFlameChartNetworkDataProvider implements PerfUI.FlameChart.
|
|
57
57
|
this.#timeSpan = 0;
|
58
58
|
this.#eventIndexByEvent.clear();
|
59
59
|
this.#events = [];
|
60
|
-
this.#
|
60
|
+
this.#timelineData = null;
|
61
61
|
this.#parsedTrace = null;
|
62
62
|
|
63
63
|
this.#networkTrackAppender = null;
|
64
64
|
}
|
65
65
|
|
66
|
-
setModel(parsedTrace: Trace.
|
66
|
+
setModel(parsedTrace: Trace.TraceModel.ParsedTrace, entityMapper: TimelineUtils.EntityMapper.EntityMapper): void {
|
67
67
|
this.reset();
|
68
68
|
this.#parsedTrace = parsedTrace;
|
69
69
|
this.#entityMapper = entityMapper;
|
@@ -72,17 +72,17 @@ export class TimelineFlameChartNetworkDataProvider implements PerfUI.FlameChart.
|
|
72
72
|
this.#setTimingBoundsData(this.#parsedTrace);
|
73
73
|
}
|
74
74
|
|
75
|
-
setEvents(parsedTrace: Trace.
|
76
|
-
if (parsedTrace.NetworkRequests.webSocket) {
|
77
|
-
parsedTrace.NetworkRequests.webSocket.forEach(webSocketData => {
|
75
|
+
setEvents(parsedTrace: Trace.TraceModel.ParsedTrace): void {
|
76
|
+
if (parsedTrace.data.NetworkRequests.webSocket) {
|
77
|
+
parsedTrace.data.NetworkRequests.webSocket.forEach(webSocketData => {
|
78
78
|
if (webSocketData.syntheticConnection) {
|
79
79
|
this.#events.push(webSocketData.syntheticConnection);
|
80
80
|
}
|
81
81
|
this.#events.push(...webSocketData.events);
|
82
82
|
});
|
83
83
|
}
|
84
|
-
if (parsedTrace.NetworkRequests.byTime) {
|
85
|
-
this.#events.push(...parsedTrace.NetworkRequests.byTime);
|
84
|
+
if (parsedTrace.data.NetworkRequests.byTime) {
|
85
|
+
this.#events.push(...parsedTrace.data.NetworkRequests.byTime);
|
86
86
|
}
|
87
87
|
}
|
88
88
|
|
@@ -100,23 +100,23 @@ export class TimelineFlameChartNetworkDataProvider implements PerfUI.FlameChart.
|
|
100
100
|
}
|
101
101
|
|
102
102
|
timelineData(): PerfUI.FlameChart.FlameChartTimelineData {
|
103
|
-
if (this.#
|
103
|
+
if (this.#timelineData && this.#timelineData.entryLevels.length !== 0) {
|
104
104
|
// The flame chart data is built already, so return the cached data.
|
105
|
-
return this.#
|
105
|
+
return this.#timelineData;
|
106
106
|
}
|
107
107
|
|
108
|
-
this.#
|
108
|
+
this.#timelineData = PerfUI.FlameChart.FlameChartTimelineData.createEmpty();
|
109
109
|
if (!this.#parsedTrace) {
|
110
|
-
return this.#
|
110
|
+
return this.#timelineData;
|
111
111
|
}
|
112
112
|
|
113
113
|
if (!this.#events.length) {
|
114
114
|
this.setEvents(this.#parsedTrace);
|
115
115
|
}
|
116
|
-
this.#networkTrackAppender = new NetworkTrackAppender(this.#
|
116
|
+
this.#networkTrackAppender = new NetworkTrackAppender(this.#timelineData, this.#events);
|
117
117
|
this.#maxLevel = this.#networkTrackAppender.appendTrackAtLevel(0);
|
118
118
|
|
119
|
-
return this.#
|
119
|
+
return this.#timelineData;
|
120
120
|
}
|
121
121
|
|
122
122
|
minimumBoundary(): number {
|
@@ -413,8 +413,8 @@ export class TimelineFlameChartNetworkDataProvider implements PerfUI.FlameChart.
|
|
413
413
|
* Sets the minimum time and total time span of a trace using the
|
414
414
|
* new engine data.
|
415
415
|
*/
|
416
|
-
#setTimingBoundsData(newParsedTrace: Trace.
|
417
|
-
const {traceBounds} = newParsedTrace.Meta;
|
416
|
+
#setTimingBoundsData(newParsedTrace: Trace.TraceModel.ParsedTrace): void {
|
417
|
+
const {traceBounds} = newParsedTrace.data.Meta;
|
418
418
|
const minTime = Trace.Helpers.Timing.microToMilli(traceBounds.min);
|
419
419
|
const maxTime = Trace.Helpers.Timing.microToMilli(traceBounds.max);
|
420
420
|
this.#minimumBoundary = minTime;
|
@@ -429,7 +429,7 @@ export class TimelineFlameChartNetworkDataProvider implements PerfUI.FlameChart.
|
|
429
429
|
* to re-render.
|
430
430
|
*/
|
431
431
|
#updateTimelineData(startTime: Trace.Types.Timing.Milli, endTime: Trace.Types.Timing.Milli): void {
|
432
|
-
if (!this.#networkTrackAppender || !this.#
|
432
|
+
if (!this.#networkTrackAppender || !this.#timelineData) {
|
433
433
|
return;
|
434
434
|
}
|
435
435
|
this.#maxLevel = this.#networkTrackAppender.relayoutEntriesWithinBounds(this.#events, startTime, endTime);
|
@@ -437,13 +437,13 @@ export class TimelineFlameChartNetworkDataProvider implements PerfUI.FlameChart.
|
|
437
437
|
// TODO(crbug.com/1459225): Remove this recreating code.
|
438
438
|
// Force to create a new PerfUI.FlameChart.FlameChartTimelineData instance
|
439
439
|
// to force the flamechart to re-render. This also causes crbug.com/1459225.
|
440
|
-
this.#
|
441
|
-
entryLevels: this.#
|
442
|
-
entryTotalTimes: this.#
|
443
|
-
entryStartTimes: this.#
|
444
|
-
groups: this.#
|
445
|
-
initiatorsData: this.#
|
446
|
-
entryDecorations: this.#
|
440
|
+
this.#timelineData = PerfUI.FlameChart.FlameChartTimelineData.create({
|
441
|
+
entryLevels: this.#timelineData?.entryLevels,
|
442
|
+
entryTotalTimes: this.#timelineData?.entryTotalTimes,
|
443
|
+
entryStartTimes: this.#timelineData?.entryStartTimes,
|
444
|
+
groups: this.#timelineData?.groups,
|
445
|
+
initiatorsData: this.#timelineData.initiatorsData,
|
446
|
+
entryDecorations: this.#timelineData.entryDecorations,
|
447
447
|
});
|
448
448
|
}
|
449
449
|
|
@@ -512,7 +512,7 @@ export class TimelineFlameChartNetworkDataProvider implements PerfUI.FlameChart.
|
|
512
512
|
continue;
|
513
513
|
}
|
514
514
|
|
515
|
-
if (!filter || filter.accept(entry, this.#parsedTrace ?? undefined)) {
|
515
|
+
if (!filter || filter.accept(entry, this.#parsedTrace?.data ?? undefined)) {
|
516
516
|
const startTimeMilli = Trace.Helpers.Timing.microToMilli(entry.ts);
|
517
517
|
results.push({startTimeMilli, index: i, provider: 'network'});
|
518
518
|
}
|
@@ -529,19 +529,19 @@ export class TimelineFlameChartNetworkDataProvider implements PerfUI.FlameChart.
|
|
529
529
|
if (!this.#parsedTrace) {
|
530
530
|
return [];
|
531
531
|
}
|
532
|
-
return this.#parsedTrace.Meta.mainFrameNavigations;
|
532
|
+
return this.#parsedTrace.data.Meta.mainFrameNavigations;
|
533
533
|
}
|
534
534
|
|
535
535
|
buildFlowForInitiator(entryIndex: number): boolean {
|
536
536
|
if (!this.#parsedTrace) {
|
537
537
|
return false;
|
538
538
|
}
|
539
|
-
if (!this.#
|
539
|
+
if (!this.#timelineData) {
|
540
540
|
return false;
|
541
541
|
}
|
542
542
|
if (entryIndex > -1 && this.#lastInitiatorEntry === entryIndex) {
|
543
543
|
if (this.#lastInitiatorsData) {
|
544
|
-
this.#
|
544
|
+
this.#timelineData.initiatorsData = this.#lastInitiatorsData;
|
545
545
|
}
|
546
546
|
return true;
|
547
547
|
}
|
@@ -550,7 +550,7 @@ export class TimelineFlameChartNetworkDataProvider implements PerfUI.FlameChart.
|
|
550
550
|
}
|
551
551
|
|
552
552
|
// Remove all previously assigned decorations indicating that the flow event entries are hidden
|
553
|
-
const previousInitiatorsDataLength = this.#
|
553
|
+
const previousInitiatorsDataLength = this.#timelineData.initiatorsData.length;
|
554
554
|
// |entryIndex| equals -1 means there is no entry selected, just clear the
|
555
555
|
// initiator cache if there is any previous arrow and return true to
|
556
556
|
// re-render.
|
@@ -561,13 +561,13 @@ export class TimelineFlameChartNetworkDataProvider implements PerfUI.FlameChart.
|
|
561
561
|
return false;
|
562
562
|
}
|
563
563
|
// Reset to clear any previous arrows from the last event.
|
564
|
-
this.#
|
564
|
+
this.#timelineData.emptyInitiators();
|
565
565
|
return true;
|
566
566
|
}
|
567
567
|
|
568
568
|
const event = this.#events[entryIndex];
|
569
569
|
// Reset to clear any previous arrows from the last event.
|
570
|
-
this.#
|
570
|
+
this.#timelineData.emptyInitiators();
|
571
571
|
this.#lastInitiatorEntry = entryIndex;
|
572
572
|
|
573
573
|
const initiatorsData = initiatorsDataToDrawForNetwork(this.#parsedTrace, event);
|
@@ -581,12 +581,12 @@ export class TimelineFlameChartNetworkDataProvider implements PerfUI.FlameChart.
|
|
581
581
|
if (eventIndex === null || initiatorIndex === null) {
|
582
582
|
continue;
|
583
583
|
}
|
584
|
-
this.#
|
584
|
+
this.#timelineData.initiatorsData.push({
|
585
585
|
initiatorIndex,
|
586
586
|
eventIndex,
|
587
587
|
});
|
588
588
|
}
|
589
|
-
this.#lastInitiatorsData = this.#
|
589
|
+
this.#lastInitiatorsData = this.#timelineData.initiatorsData;
|
590
590
|
return true;
|
591
591
|
}
|
592
592
|
}
|