chrome-devtools-frontend 1.0.1376716 → 1.0.1380117
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/config/gni/devtools_grd_files.gni +15 -7
- package/config/gni/devtools_image_files.gni +2 -0
- package/front_end/Images/src/animation.svg +3 -0
- package/front_end/Images/src/brush-2.svg +3 -0
- package/front_end/core/common/SettingRegistration.ts +1 -1
- package/front_end/core/host/AidaClient.ts +1 -0
- package/front_end/core/host/InspectorFrontendHost.ts +4 -0
- package/front_end/core/i18n/ByteUtilities.test.ts +34 -0
- package/front_end/core/i18n/ByteUtilities.ts +65 -0
- package/front_end/core/i18n/NumberFormatter.ts +75 -0
- package/front_end/core/i18n/i18n.ts +4 -0
- package/front_end/core/i18n/time-utilities.test.ts +20 -2
- package/front_end/core/i18n/time-utilities.ts +125 -86
- package/front_end/core/platform/NumberUtilities.test.ts +3 -26
- package/front_end/core/platform/NumberUtilities.ts +0 -20
- package/front_end/core/root/Runtime.ts +6 -3
- package/front_end/core/sdk/CPUThrottlingManager.ts +4 -0
- package/front_end/core/sdk/CSSContainerQuery.test.ts +10 -16
- package/front_end/core/sdk/CSSContainerQuery.ts +3 -15
- package/front_end/core/sdk/CSSMatchedStyles.test.ts +4 -0
- package/front_end/core/sdk/CSSMatchedStyles.ts +5 -5
- package/front_end/core/sdk/CSSModel.ts +18 -0
- package/front_end/core/sdk/CSSPropertyParser.test.ts +16 -1
- package/front_end/core/sdk/CSSPropertyParser.ts +2 -2
- package/front_end/core/sdk/sdk-meta.ts +8 -0
- package/front_end/entrypoints/heap_snapshot_worker/HeapSnapshot.ts +3 -3
- package/front_end/generated/ARIAProperties.js +4 -0
- package/front_end/generated/InspectorBackendCommands.js +8 -6
- package/front_end/generated/SupportedCSSProperties.js +17 -4
- package/front_end/generated/protocol-mapping.d.ts +15 -1
- package/front_end/generated/protocol-proxy-api.d.ts +14 -1
- package/front_end/generated/protocol.ts +26 -2
- package/front_end/models/extensions/ExtensionAPI.ts +9 -1
- package/front_end/models/heap_snapshot_model/HeapSnapshotModel.ts +2 -0
- package/front_end/models/javascript_metadata/NativeFunctions.js +8 -21
- package/front_end/models/live-metrics/web-vitals-injected/{rollup.config.js → rollup.config.mjs} +1 -1
- package/front_end/models/persistence/EditFileSystemView.ts +19 -9
- package/front_end/models/persistence/WorkspaceSettingsTab.ts +50 -54
- package/front_end/models/persistence/editFileSystemView.css +35 -15
- package/front_end/models/persistence/workspaceSettingsTab.css +21 -87
- package/front_end/models/timeline_model/timeline_model.ts +0 -6
- package/front_end/models/trace/Processor.test.ts +18 -17
- package/front_end/models/trace/Processor.ts +10 -14
- package/front_end/models/trace/README.md +0 -1
- package/front_end/models/{timeline_model → trace/extras}/TimelineJSProfile.ts +19 -29
- package/front_end/models/{timeline_model/TimelineModelFilter.test.ts → trace/extras/TraceFilter.test.ts} +15 -17
- package/front_end/models/trace/extras/TraceFilter.ts +62 -0
- package/front_end/models/{timeline_model/TimelineProfileTree.test.ts → trace/extras/TraceTree.test.ts} +44 -43
- package/front_end/models/{timeline_model/TimelineProfileTree.ts → trace/extras/TraceTree.ts} +65 -59
- package/front_end/models/trace/extras/extras.ts +3 -0
- package/front_end/models/trace/handlers/AnimationHandler.ts +0 -8
- package/front_end/models/trace/handlers/ExtensionTraceDataHandler.ts +1 -11
- package/front_end/models/trace/handlers/FramesHandler.test.ts +1 -6
- package/front_end/models/trace/handlers/FramesHandler.ts +1 -14
- package/front_end/models/trace/handlers/GPUHandler.test.ts +0 -2
- package/front_end/models/trace/handlers/GPUHandler.ts +1 -25
- package/front_end/models/trace/handlers/ImagePaintingHandler.ts +3 -0
- package/front_end/models/trace/handlers/InitiatorsHandler.test.ts +0 -1
- package/front_end/models/trace/handlers/InitiatorsHandler.ts +0 -20
- package/front_end/models/trace/handlers/InvalidationsHandler.test.ts +0 -1
- package/front_end/models/trace/handlers/InvalidationsHandler.ts +0 -18
- package/front_end/models/trace/handlers/LargestImagePaintHandler.test.ts +2 -2
- package/front_end/models/trace/handlers/LargestImagePaintHandler.ts +63 -3
- package/front_end/models/trace/handlers/LargestTextPaintHandler.ts +3 -0
- package/front_end/models/trace/handlers/LayerTreeHandler.test.ts +0 -2
- package/front_end/models/trace/handlers/LayerTreeHandler.ts +1 -18
- package/front_end/models/trace/handlers/LayoutShiftsHandler.test.ts +0 -3
- package/front_end/models/trace/handlers/LayoutShiftsHandler.ts +1 -20
- package/front_end/models/trace/handlers/MemoryHandler.test.ts +0 -1
- package/front_end/models/trace/handlers/MemoryHandler.ts +3 -0
- package/front_end/models/trace/handlers/MetaHandler.test.ts +1 -32
- package/front_end/models/trace/handlers/MetaHandler.ts +2 -30
- package/front_end/models/trace/handlers/NetworkRequestsHandler.test.ts +0 -26
- package/front_end/models/trace/handlers/NetworkRequestsHandler.ts +4 -23
- package/front_end/models/trace/handlers/PageFramesHandler.ts +3 -0
- package/front_end/models/trace/handlers/RendererHandler.test.ts +0 -4
- package/front_end/models/trace/handlers/RendererHandler.ts +1 -24
- package/front_end/models/trace/handlers/SamplesHandler.test.ts +0 -5
- package/front_end/models/trace/handlers/SamplesHandler.ts +0 -26
- package/front_end/models/trace/handlers/ScreenshotsHandler.test.ts +0 -1
- package/front_end/models/trace/handlers/SelectorStatsHandler.ts +3 -0
- package/front_end/models/trace/handlers/ServerTimingsHandler.ts +1 -16
- package/front_end/models/trace/handlers/Threads.test.ts +1 -2
- package/front_end/models/trace/handlers/UserInteractionsHandler.test.ts +4 -27
- package/front_end/models/trace/handlers/UserInteractionsHandler.ts +16 -25
- package/front_end/models/trace/handlers/UserTimingsHandler.ts +0 -17
- package/front_end/models/trace/handlers/WorkersHandler.test.ts +0 -1
- package/front_end/models/trace/handlers/WorkersHandler.ts +0 -23
- package/front_end/models/trace/handlers/types.ts +1 -8
- package/front_end/models/trace/insights/{CumulativeLayoutShift.test.ts → CLSCulprits.test.ts} +21 -21
- package/front_end/models/trace/insights/{CumulativeLayoutShift.ts → CLSCulprits.ts} +24 -5
- package/front_end/models/trace/insights/Common.ts +5 -55
- package/front_end/models/trace/insights/DocumentLatency.test.ts +2 -2
- package/front_end/models/trace/insights/DocumentLatency.ts +26 -6
- package/front_end/models/trace/insights/FontDisplay.ts +24 -5
- package/front_end/models/trace/insights/InteractionToNextPaint.test.ts +1 -1
- package/front_end/models/trace/insights/InteractionToNextPaint.ts +26 -6
- package/front_end/models/trace/insights/LCPDiscovery.test.ts +58 -0
- package/front_end/models/trace/insights/LCPDiscovery.ts +101 -0
- package/front_end/models/trace/insights/{LargestContentfulPaint.test.ts → LCPPhases.test.ts} +6 -28
- package/front_end/models/trace/insights/{LargestContentfulPaint.ts → LCPPhases.ts} +37 -38
- package/front_end/models/trace/insights/{InsightRunners.ts → Models.ts} +4 -3
- package/front_end/models/trace/insights/RenderBlocking.test.ts +1 -1
- package/front_end/models/trace/insights/RenderBlocking.ts +33 -28
- package/front_end/models/trace/insights/SlowCSSSelector.ts +26 -5
- package/front_end/models/trace/insights/{ThirdPartyWeb.test.ts → ThirdParties.test.ts} +3 -3
- package/front_end/models/trace/insights/{ThirdPartyWeb.ts → ThirdParties.ts} +24 -5
- package/front_end/models/trace/insights/Viewport.test.ts +1 -1
- package/front_end/models/trace/insights/Viewport.ts +27 -9
- package/front_end/models/trace/insights/insights.ts +1 -1
- package/front_end/models/trace/insights/types.ts +11 -9
- package/front_end/models/trace/types/TraceEvents.ts +51 -22
- package/front_end/panels/application/SharedStorageItemsView.test.ts +3 -3
- package/front_end/panels/application/SharedStorageItemsView.ts +5 -3
- package/front_end/panels/application/StorageView.ts +3 -3
- package/front_end/panels/application/components/StorageMetadataView.ts +1 -2
- package/front_end/panels/browser_debugger/XHRBreakpointsSidebarPane.ts +34 -31
- package/front_end/panels/coverage/CoverageView.ts +3 -3
- package/front_end/panels/elements/ComputedStyleModel.ts +9 -2
- package/front_end/panels/elements/ComputedStyleWidget.test.ts +72 -0
- package/front_end/panels/elements/ComputedStyleWidget.ts +12 -0
- package/front_end/panels/elements/ElementStatePaneWidget.test.ts +84 -30
- package/front_end/panels/elements/ElementStatePaneWidget.ts +42 -24
- package/front_end/panels/elements/ElementsTreeElement.ts +24 -11
- package/front_end/panels/elements/MetricsSidebarPane.ts +12 -7
- package/front_end/panels/elements/PropertyMatchers.ts +3 -0
- package/front_end/panels/elements/StylePropertiesSection.ts +15 -6
- package/front_end/panels/elements/StylePropertyTreeElement.test.ts +3 -1
- package/front_end/panels/elements/StylePropertyTreeElement.ts +8 -3
- package/front_end/panels/elements/stylePropertiesTreeOutline.css +2 -2
- package/front_end/panels/explain/components/ConsoleInsight.ts +8 -18
- package/front_end/panels/freestyler/AiAgent.test.ts +58 -1
- package/front_end/panels/freestyler/AiAgent.ts +58 -3
- package/front_end/panels/freestyler/DrJonesFileAgent.test.ts +99 -23
- package/front_end/panels/freestyler/DrJonesFileAgent.ts +53 -20
- package/front_end/panels/freestyler/DrJonesNetworkAgent.test.ts +15 -7
- package/front_end/panels/freestyler/DrJonesNetworkAgent.ts +36 -15
- package/front_end/panels/freestyler/DrJonesPerformanceAgent.test.ts +6 -6
- package/front_end/panels/freestyler/DrJonesPerformanceAgent.ts +48 -8
- package/front_end/panels/freestyler/FreestylerAgent.test.ts +15 -14
- package/front_end/panels/freestyler/FreestylerAgent.ts +52 -8
- package/front_end/panels/freestyler/FreestylerPanel.test.ts +539 -39
- package/front_end/panels/freestyler/FreestylerPanel.ts +349 -215
- package/front_end/panels/freestyler/components/FreestylerChatUi.test.ts +126 -34
- package/front_end/panels/freestyler/components/FreestylerChatUi.ts +320 -268
- package/front_end/panels/freestyler/components/UserActionRow.ts +156 -47
- package/front_end/panels/freestyler/components/freestylerChatUi.css +69 -34
- package/front_end/panels/freestyler/components/userActionRow.css +40 -67
- package/front_end/panels/freestyler/freestyler-meta.ts +3 -11
- package/front_end/panels/issues/components/HideIssuesMenu.ts +2 -11
- package/front_end/panels/layer_viewer/LayerDetailsView.ts +1 -2
- package/front_end/panels/layer_viewer/PaintProfilerView.ts +5 -5
- package/front_end/panels/lighthouse/LighthouseReportRenderer.ts +46 -0
- package/front_end/panels/mobile_throttling/ThrottlingSettingsTab.ts +26 -17
- package/front_end/panels/mobile_throttling/throttlingSettingsTab.css +25 -19
- package/front_end/panels/network/BinaryResourceView.ts +6 -7
- package/front_end/panels/network/EventSourceMessagesView.ts +1 -1
- package/front_end/panels/network/NetworkDataGridNode.ts +3 -3
- package/front_end/panels/network/NetworkLogView.ts +7 -8
- package/front_end/panels/network/RequestTimingView.test.ts +35 -1
- package/front_end/panels/network/RequestTimingView.ts +96 -0
- package/front_end/panels/network/ResourceWebSocketFrameView.ts +2 -2
- package/front_end/panels/network/networkTimingTable.css +2 -1
- package/front_end/panels/performance_monitor/PerformanceMonitor.ts +1 -1
- package/front_end/panels/profiler/HeapProfileView.ts +3 -3
- package/front_end/panels/profiler/HeapSnapshotView.ts +2 -2
- package/front_end/panels/profiler/HeapTimelineOverview.ts +12 -12
- package/front_end/panels/profiler/IsolateSelector.ts +3 -4
- package/front_end/panels/profiler/ProfileFlameChartDataProvider.ts +1 -1
- package/front_end/panels/profiler/ProfileSidebarTreeElement.ts +7 -6
- package/front_end/panels/profiler/ProfileView.ts +1 -1
- package/front_end/panels/recorder/components/RecordingView.ts +2 -2
- package/front_end/panels/recorder/injected/{rollup.config.js → rollup.config.mjs} +1 -1
- package/front_end/panels/recorder/recorderController.css +0 -4
- package/front_end/panels/security/CookieReportTreeElement.ts +1 -9
- package/front_end/panels/security/CookieReportView.ts +120 -0
- package/front_end/panels/security/SecurityPanel.ts +8 -2
- package/front_end/panels/security/cookieReportView.css +46 -0
- package/front_end/panels/security/sidebar.css +1 -2
- package/front_end/panels/sensors/LocationsSettingsTab.ts +26 -11
- package/front_end/panels/sensors/locationsSettingsTab.css +18 -18
- package/front_end/panels/settings/AISettingsTab.ts +6 -15
- package/front_end/panels/settings/KeybindsSettingsTab.ts +1 -1
- package/front_end/panels/settings/SettingsScreen.ts +61 -56
- package/front_end/panels/settings/aiSettingsTab.css +3 -14
- package/front_end/panels/settings/components/SyncSection.ts +1 -2
- package/front_end/panels/settings/components/syncSection.css +0 -10
- package/front_end/panels/settings/frameworkIgnoreListSettingsTab.css +3 -1
- package/front_end/panels/settings/keybindsSettingsTab.css +7 -10
- package/front_end/panels/settings/settingsScreen.css +27 -125
- package/front_end/panels/sources/DebuggerPlugin.ts +9 -4
- package/front_end/panels/sources/NavigatorView.ts +11 -13
- package/front_end/panels/timeline/ActiveFilters.ts +3 -4
- package/front_end/panels/timeline/AnimationsTrackAppender.ts +1 -2
- package/front_end/panels/timeline/CountersGraph.ts +2 -4
- package/front_end/panels/timeline/EventsTimelineTreeView.ts +7 -8
- package/front_end/panels/timeline/README.md +2 -1
- package/front_end/panels/timeline/TimelineController.ts +14 -4
- package/front_end/panels/timeline/TimelineEventOverview.ts +3 -4
- package/front_end/panels/timeline/TimelineFilters.ts +3 -4
- package/front_end/panels/timeline/TimelineFlameChartDataProvider.test.ts +1 -1
- package/front_end/panels/timeline/TimelineFlameChartDataProvider.ts +3 -10
- package/front_end/panels/timeline/TimelineFlameChartNetworkDataProvider.ts +1 -2
- package/front_end/panels/timeline/TimelineFlameChartView.ts +21 -12
- package/front_end/panels/timeline/TimelineLoader.test.ts +1 -2
- package/front_end/panels/timeline/TimelineLoader.ts +3 -4
- package/front_end/panels/timeline/TimelineMiniMap.ts +10 -0
- package/front_end/panels/timeline/TimelinePanel.ts +20 -8
- package/front_end/panels/timeline/TimelineTreeView.test.ts +12 -13
- package/front_end/panels/timeline/TimelineTreeView.ts +35 -40
- package/front_end/panels/timeline/TimelineUIUtils.test.ts +2 -2
- package/front_end/panels/timeline/TimelineUIUtils.ts +12 -14
- package/front_end/panels/timeline/components/LayoutShiftDetails.ts +6 -7
- package/front_end/panels/timeline/components/LiveMetricsView.test.ts +3 -3
- package/front_end/panels/timeline/components/LiveMetricsView.ts +14 -26
- package/front_end/panels/timeline/components/MetricCard.test.ts +1 -1
- package/front_end/panels/timeline/components/MetricCard.ts +46 -0
- package/front_end/panels/timeline/components/NetworkRequestDetails.ts +3 -4
- package/front_end/panels/timeline/components/SidebarSingleInsightSet.test.ts +2 -0
- package/front_end/panels/timeline/components/SidebarSingleInsightSet.ts +41 -36
- package/front_end/panels/timeline/components/insights/CLSCulprits.ts +19 -33
- package/front_end/panels/timeline/components/insights/DocumentLatency.ts +29 -40
- package/front_end/panels/timeline/components/insights/FontDisplay.ts +17 -23
- package/front_end/panels/timeline/components/insights/Helpers.ts +12 -16
- package/front_end/panels/timeline/components/insights/InteractionToNextPaint.ts +14 -26
- package/front_end/panels/timeline/components/insights/LCPDiscovery.ts +25 -37
- package/front_end/panels/timeline/components/insights/LCPPhases.ts +20 -47
- package/front_end/panels/timeline/components/insights/RenderBlocking.ts +19 -28
- package/front_end/panels/timeline/components/insights/SidebarInsight.ts +1 -2
- package/front_end/panels/timeline/components/insights/SlowCSSSelector.ts +18 -31
- package/front_end/panels/timeline/components/insights/Table.ts +5 -3
- package/front_end/panels/timeline/components/insights/ThirdParties.ts +18 -25
- package/front_end/panels/timeline/components/insights/Viewport.ts +14 -25
- package/front_end/panels/timeline/components/liveMetricsView.css +5 -13
- package/front_end/panels/timeline/components/metricCard.css +11 -0
- package/front_end/panels/timeline/components/sidebarInsightsTab.css +1 -1
- package/front_end/panels/timeline/overlays/OverlaysImpl.test.ts +5 -5
- package/front_end/panels/timeline/overlays/OverlaysImpl.ts +13 -12
- package/front_end/panels/timeline/timelineFlameChartView.css +1 -1
- package/front_end/panels/timeline/utils/AICallTree.test.ts +105 -0
- package/front_end/panels/timeline/utils/AICallTree.ts +25 -24
- package/front_end/testing/EnvironmentHelpers.ts +5 -18
- package/front_end/testing/InsightHelpers.ts +4 -4
- package/front_end/testing/TraceHelpers.ts +1 -1
- package/front_end/third_party/puppeteer/README.chromium +2 -2
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Browser.d.ts +2 -3
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Browser.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Browser.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/ElementHandle.d.ts +14 -3
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/ElementHandle.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/ElementHandle.js +16 -2
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/ElementHandle.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Input.d.ts +34 -5
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Input.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Input.js +51 -2
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Input.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/ElementHandle.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/ElementHandle.js +10 -8
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/ElementHandle.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Frame.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Frame.js +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Frame.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Input.d.ts +14 -4
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Input.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Input.js +57 -23
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Input.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/ElementHandle.d.ts +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/ElementHandle.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/ElementHandle.js +13 -10
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/ElementHandle.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Input.d.ts +15 -4
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Input.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Input.js +55 -26
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Input.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/CallbackRegistry.d.ts +0 -8
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/CallbackRegistry.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/CallbackRegistry.js +2 -11
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/CallbackRegistry.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/ConsoleMessage.d.ts +2 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/ConsoleMessage.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/ConsoleMessage.js +5 -2
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/ConsoleMessage.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/Errors.d.ts +7 -0
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/Errors.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/Errors.js +9 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/Errors.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/WaitTask.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/WaitTask.js +5 -3
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/WaitTask.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/environment.d.ts +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/environment.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/environment.js +0 -3
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/environment.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/generated/injected.d.ts +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/generated/injected.js +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/generated/version.d.ts +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/generated/version.js +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/injected/injected.d.ts +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/revisions.d.ts +3 -3
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/revisions.js +3 -3
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/revisions.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/util/Mutex.d.ts +2 -2
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/util/incremental-id-generator.d.ts +14 -0
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/util/incremental-id-generator.d.ts.map +1 -0
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/util/incremental-id-generator.js +18 -0
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/util/incremental-id-generator.js.map +1 -0
- package/front_end/third_party/puppeteer/package/lib/es5-iife/puppeteer-core-browser.d.ts +51 -10
- package/front_end/third_party/puppeteer/package/lib/es5-iife/puppeteer-core-browser.js +215 -97
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Browser.d.ts +2 -3
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Browser.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Browser.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/ElementHandle.d.ts +14 -3
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/ElementHandle.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/ElementHandle.js +16 -2
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/ElementHandle.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Input.d.ts +34 -5
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Input.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Input.js +51 -2
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Input.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/ElementHandle.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/ElementHandle.js +10 -8
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/ElementHandle.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Frame.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Frame.js +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Frame.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Input.d.ts +14 -4
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Input.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Input.js +57 -23
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Input.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/ElementHandle.d.ts +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/ElementHandle.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/ElementHandle.js +13 -10
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/ElementHandle.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Input.d.ts +15 -4
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Input.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Input.js +55 -26
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Input.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/CallbackRegistry.d.ts +0 -8
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/CallbackRegistry.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/CallbackRegistry.js +1 -9
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/CallbackRegistry.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/ConsoleMessage.d.ts +2 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/ConsoleMessage.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/ConsoleMessage.js +5 -2
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/ConsoleMessage.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/Errors.d.ts +7 -0
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/Errors.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/Errors.js +7 -0
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/Errors.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/WaitTask.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/WaitTask.js +5 -3
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/WaitTask.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/environment.d.ts +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/environment.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/environment.js +0 -3
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/environment.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/generated/injected.d.ts +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/generated/injected.js +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/generated/version.d.ts +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/generated/version.js +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/revisions.d.ts +3 -3
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/revisions.js +3 -3
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/revisions.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/util/incremental-id-generator.d.ts +14 -0
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/util/incremental-id-generator.d.ts.map +1 -0
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/util/incremental-id-generator.js +15 -0
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/util/incremental-id-generator.js.map +1 -0
- package/front_end/third_party/puppeteer/package/lib/types.d.ts +51 -10
- package/front_end/third_party/puppeteer/package/package.json +4 -4
- package/front_end/third_party/puppeteer/package/src/api/Browser.ts +2 -3
- package/front_end/third_party/puppeteer/package/src/api/ElementHandle.ts +21 -3
- package/front_end/third_party/puppeteer/package/src/api/Input.ts +57 -8
- package/front_end/third_party/puppeteer/package/src/bidi/ElementHandle.ts +9 -7
- package/front_end/third_party/puppeteer/package/src/bidi/Frame.ts +1 -0
- package/front_end/third_party/puppeteer/package/src/bidi/Input.ts +72 -31
- package/front_end/third_party/puppeteer/package/src/cdp/ElementHandle.ts +14 -9
- package/front_end/third_party/puppeteer/package/src/cdp/Input.ts +71 -26
- package/front_end/third_party/puppeteer/package/src/common/CallbackRegistry.ts +1 -15
- package/front_end/third_party/puppeteer/package/src/common/ConsoleMessage.ts +8 -1
- package/front_end/third_party/puppeteer/package/src/common/Errors.ts +7 -0
- package/front_end/third_party/puppeteer/package/src/common/WaitTask.ts +9 -9
- package/front_end/third_party/puppeteer/package/src/environment.ts +1 -4
- package/front_end/third_party/puppeteer/package/src/generated/injected.ts +1 -1
- package/front_end/third_party/puppeteer/package/src/generated/version.ts +1 -1
- package/front_end/third_party/puppeteer/package/src/revisions.ts +3 -3
- package/front_end/third_party/puppeteer/package/src/util/incremental-id-generator.ts +20 -0
- package/front_end/third_party/puppeteer/puppeteer-tsconfig.json +1 -0
- package/front_end/ui/components/buttons/Button.test.ts +14 -0
- package/front_end/ui/components/buttons/Button.ts +27 -4
- package/front_end/ui/components/cards/card.css +7 -4
- package/front_end/ui/components/dialogs/Dialog.ts +2 -4
- package/front_end/ui/components/dialogs/ShortcutDialog.ts +15 -13
- package/front_end/ui/components/dialogs/dialog.css +2 -6
- package/front_end/ui/components/dialogs/shortcutDialog.css +33 -41
- package/front_end/ui/components/docs/freestyler/basic.ts +6 -8
- package/front_end/ui/components/docs/freestyler/empty_state.ts +6 -8
- package/front_end/ui/components/docs/performance_panel/track_example.html +1 -1
- package/front_end/ui/components/markdown_view/MarkdownView.test.ts +39 -17
- package/front_end/ui/components/markdown_view/MarkdownView.ts +77 -14
- package/front_end/ui/components/markdown_view/markdownView.css +15 -0
- package/front_end/ui/components/settings/SettingCheckbox.ts +3 -2
- package/front_end/ui/legacy/ContextMenu.ts +2 -2
- package/front_end/ui/legacy/InplaceEditor.ts +18 -14
- package/front_end/ui/legacy/TabbedPane.ts +0 -14
- package/front_end/ui/legacy/UIUtils.ts +0 -7
- package/front_end/ui/legacy/components/cookie_table/CookiesTable.ts +7 -2
- package/front_end/ui/legacy/components/data_grid/DataGrid.ts +8 -4
- package/front_end/ui/legacy/components/data_grid/ViewportDataGrid.ts +20 -11
- package/front_end/ui/legacy/components/inline_editor/LinkSwatch.test.ts +19 -0
- package/front_end/ui/legacy/components/inline_editor/LinkSwatch.ts +1 -1
- package/front_end/ui/legacy/components/object_ui/ObjectPropertiesSection.ts +1 -1
- package/front_end/ui/legacy/components/perf_ui/FlameChart.ts +5 -22
- package/front_end/ui/legacy/components/perf_ui/OverviewGrid.ts +129 -100
- package/front_end/ui/legacy/components/perf_ui/TimelineGrid.ts +4 -2
- package/front_end/ui/legacy/components/perf_ui/TimelineOverviewCalculator.test.ts +9 -4
- package/front_end/ui/legacy/components/perf_ui/TimelineOverviewCalculator.ts +6 -6
- package/front_end/ui/legacy/components/perf_ui/TimelineOverviewPane.ts +22 -4
- package/front_end/ui/legacy/components/perf_ui/flameChart.css +0 -2
- package/front_end/ui/legacy/components/source_frame/BinaryResourceViewFactory.test.ts +49 -0
- package/front_end/ui/legacy/components/source_frame/BinaryResourceViewFactory.ts +23 -46
- package/front_end/ui/legacy/components/source_frame/ImageView.ts +1 -1
- package/front_end/ui/legacy/components/utils/ImagePreview.ts +1 -1
- package/front_end/ui/legacy/textPrompt.css +1 -1
- package/front_end/ui/legacy/toolbar.css +4 -5
- package/front_end/ui/visual_logging/KnownContextValues.ts +174 -0
- package/front_end/ui/visual_logging/LoggingConfig.ts +6 -2
- package/package.json +7 -6
- package/scripts/build/ninja/bundle.gni +3 -3
- package/scripts/build/{rollup.config.js → rollup.config.mjs} +4 -4
- package/scripts/devtools_paths.py +8 -4
- package/scripts/eslint_rules/tests/check_test_definitions_test.js +8 -3
- package/scripts/tools/update_goldens_v2.py +1 -1
- package/front_end/models/timeline_model/TimelineModelFilter.ts +0 -61
- /package/front_end/Images/{rollup.config.js → rollup.config.mjs} +0 -0
@@ -18,6 +18,7 @@ const render = LitHtml.render;
|
|
18
18
|
export interface MarkdownViewData {
|
19
19
|
tokens: Marked.Marked.Token[];
|
20
20
|
renderer?: MarkdownLitRenderer;
|
21
|
+
animationEnabled?: boolean;
|
21
22
|
}
|
22
23
|
|
23
24
|
export class MarkdownView extends HTMLElement {
|
@@ -25,6 +26,8 @@ export class MarkdownView extends HTMLElement {
|
|
25
26
|
|
26
27
|
#tokenData: readonly Marked.Marked.Token[] = [];
|
27
28
|
#renderer = new MarkdownLitRenderer();
|
29
|
+
#animationEnabled = false;
|
30
|
+
#isAnimating = false;
|
28
31
|
|
29
32
|
connectedCallback(): void {
|
30
33
|
this.#shadow.adoptedStyleSheets = [markdownViewStyles];
|
@@ -35,11 +38,53 @@ export class MarkdownView extends HTMLElement {
|
|
35
38
|
if (data.renderer) {
|
36
39
|
this.#renderer = data.renderer;
|
37
40
|
}
|
41
|
+
|
42
|
+
if (data.animationEnabled) {
|
43
|
+
this.#animationEnabled = true;
|
44
|
+
this.#renderer.setCustomClasses({
|
45
|
+
paragraph: 'pending',
|
46
|
+
heading: 'pending',
|
47
|
+
list_item: 'pending',
|
48
|
+
});
|
49
|
+
} else {
|
50
|
+
this.#animationEnabled = false;
|
51
|
+
this.#renderer.setCustomClasses({});
|
52
|
+
}
|
53
|
+
|
38
54
|
this.#update();
|
39
55
|
}
|
40
56
|
|
57
|
+
#animate(): void {
|
58
|
+
if (this.#isAnimating) {
|
59
|
+
return;
|
60
|
+
}
|
61
|
+
|
62
|
+
this.#isAnimating = true;
|
63
|
+
const reveal = (): void => {
|
64
|
+
const pendingElement = this.#shadow.querySelector('.pending');
|
65
|
+
if (!pendingElement) {
|
66
|
+
this.#isAnimating = false;
|
67
|
+
return;
|
68
|
+
}
|
69
|
+
|
70
|
+
pendingElement.addEventListener('animationend', () => {
|
71
|
+
pendingElement.classList.remove('animating');
|
72
|
+
reveal();
|
73
|
+
}, {once: true});
|
74
|
+
|
75
|
+
pendingElement.classList.remove('pending');
|
76
|
+
pendingElement.classList.add('animating');
|
77
|
+
};
|
78
|
+
|
79
|
+
reveal();
|
80
|
+
}
|
81
|
+
|
41
82
|
#update(): void {
|
42
83
|
this.#render();
|
84
|
+
|
85
|
+
if (this.#animationEnabled) {
|
86
|
+
this.#animate();
|
87
|
+
}
|
43
88
|
}
|
44
89
|
|
45
90
|
#render(): void {
|
@@ -66,6 +111,18 @@ declare global {
|
|
66
111
|
* Default renderer is used for the IssuesPanel and allows only well-known images and links to be embedded.
|
67
112
|
*/
|
68
113
|
export class MarkdownLitRenderer {
|
114
|
+
#customClasses: Record<string, string> = {};
|
115
|
+
|
116
|
+
setCustomClasses(customClasses: Record<Marked.Marked.Token['type'], string>): void {
|
117
|
+
this.#customClasses = customClasses;
|
118
|
+
}
|
119
|
+
|
120
|
+
#customClassMapForToken(type: Marked.Marked.Token['type']): LitHtml.Directive.DirectiveResult {
|
121
|
+
return LitHtml.Directives.classMap({
|
122
|
+
[this.#customClasses[type]]: this.#customClasses[type],
|
123
|
+
});
|
124
|
+
}
|
125
|
+
|
69
126
|
renderChildTokens(token: Marked.Marked.Token): LitHtml.TemplateResult[] {
|
70
127
|
if ('tokens' in token && token.tokens) {
|
71
128
|
return token.tokens.map(token => this.renderToken(token));
|
@@ -102,25 +159,27 @@ export class MarkdownLitRenderer {
|
|
102
159
|
}
|
103
160
|
|
104
161
|
renderHeading(heading: Marked.Marked.Tokens.Heading): LitHtml.TemplateResult {
|
162
|
+
const customClass = this.#customClassMapForToken('heading');
|
105
163
|
switch (heading.depth) {
|
106
164
|
case 1:
|
107
|
-
return html`<h1>${this.renderText(heading)}</h1>`;
|
165
|
+
return html`<h1 class=${customClass}>${this.renderText(heading)}</h1>`;
|
108
166
|
case 2:
|
109
|
-
return html`<h2>${this.renderText(heading)}</h2>`;
|
167
|
+
return html`<h2 class=${customClass}>${this.renderText(heading)}</h2>`;
|
110
168
|
case 3:
|
111
|
-
return html`<h3>${this.renderText(heading)}</h3>`;
|
169
|
+
return html`<h3 class=${customClass}>${this.renderText(heading)}</h3>`;
|
112
170
|
case 4:
|
113
|
-
return html`<h4>${this.renderText(heading)}</h4>`;
|
171
|
+
return html`<h4 class=${customClass}>${this.renderText(heading)}</h4>`;
|
114
172
|
case 5:
|
115
|
-
return html`<h5>${this.renderText(heading)}</h5>`;
|
173
|
+
return html`<h5 class=${customClass}>${this.renderText(heading)}</h5>`;
|
116
174
|
default:
|
117
|
-
return html`<h6>${this.renderText(heading)}</h6>`;
|
175
|
+
return html`<h6 class=${customClass}>${this.renderText(heading)}</h6>`;
|
118
176
|
}
|
119
177
|
}
|
120
178
|
|
121
179
|
renderCodeBlock(token: Marked.Marked.Tokens.Code): LitHtml.TemplateResult {
|
122
180
|
// clang-format off
|
123
181
|
return html`<devtools-code-block
|
182
|
+
class=${this.#customClassMapForToken('code')}
|
124
183
|
.code=${this.unescape(token.text)}
|
125
184
|
.codeLang=${token.lang || ''}>
|
126
185
|
</devtools-code-block>`;
|
@@ -130,29 +189,33 @@ export class MarkdownLitRenderer {
|
|
130
189
|
templateForToken(token: Marked.Marked.MarkedToken): LitHtml.TemplateResult|null {
|
131
190
|
switch (token.type) {
|
132
191
|
case 'paragraph':
|
133
|
-
return html`<p>${this.renderChildTokens(token)}</p>`;
|
192
|
+
return html`<p class=${this.#customClassMapForToken('paragraph')}>${this.renderChildTokens(token)}</p>`;
|
134
193
|
case 'list':
|
135
|
-
return html`<ul>${token.items.map(token => {
|
194
|
+
return html`<ul class=${this.#customClassMapForToken('list')}>${token.items.map(token => {
|
136
195
|
return this.renderToken(token);
|
137
196
|
})}</ul>`;
|
138
197
|
case 'list_item':
|
139
|
-
return html`<li>${this.renderChildTokens(token)}</li>`;
|
198
|
+
return html`<li class=${this.#customClassMapForToken('list_item')}>${this.renderChildTokens(token)}</li>`;
|
140
199
|
case 'text':
|
141
200
|
return this.renderText(token);
|
142
201
|
case 'codespan':
|
143
|
-
return html`<code>${this.unescape(token.text)}</code>`;
|
202
|
+
return html`<code class=${this.#customClassMapForToken('codespan')}>${this.unescape(token.text)}</code>`;
|
144
203
|
case 'code':
|
145
204
|
return this.renderCodeBlock(token);
|
146
205
|
case 'space':
|
147
206
|
return html``;
|
148
207
|
case 'link':
|
149
|
-
return html`<devtools-markdown-link
|
208
|
+
return html`<devtools-markdown-link
|
209
|
+
class=${this.#customClassMapForToken('link')}
|
210
|
+
.data=${{
|
150
211
|
key:
|
151
212
|
token.href, title: token.text,
|
152
213
|
}
|
153
214
|
}></devtools-markdown-link>`;
|
154
215
|
case 'image':
|
155
|
-
return html`<devtools-markdown-image
|
216
|
+
return html`<devtools-markdown-image
|
217
|
+
class=${this.#customClassMapForToken('image')}
|
218
|
+
.data=${{
|
156
219
|
key:
|
157
220
|
token.href, title: token.text,
|
158
221
|
}
|
@@ -160,9 +223,9 @@ export class MarkdownLitRenderer {
|
|
160
223
|
case 'heading':
|
161
224
|
return this.renderHeading(token);
|
162
225
|
case 'strong':
|
163
|
-
return html`<strong>${this.renderText(token)}</strong>`;
|
226
|
+
return html`<strong class=${this.#customClassMapForToken('strong')}>${this.renderText(token)}</strong>`;
|
164
227
|
case 'em':
|
165
|
-
return html`<em>${this.renderText(token)}</em>`;
|
228
|
+
return html`<em class=${this.#customClassMapForToken('em')}>${this.renderText(token)}</em>`;
|
166
229
|
default:
|
167
230
|
return null;
|
168
231
|
}
|
@@ -8,6 +8,21 @@
|
|
8
8
|
--code-background-color: var(--sys-color-surface4);
|
9
9
|
}
|
10
10
|
|
11
|
+
@keyframes typing {
|
12
|
+
from { width: 0; }
|
13
|
+
to { width: 100%; }
|
14
|
+
}
|
15
|
+
|
16
|
+
.animating {
|
17
|
+
overflow: hidden;
|
18
|
+
white-space: nowrap;
|
19
|
+
animation: typing 0.3s steps(40, end);
|
20
|
+
}
|
21
|
+
|
22
|
+
.pending {
|
23
|
+
display: none !important; /* stylelint-disable-line declaration-no-important */
|
24
|
+
}
|
25
|
+
|
11
26
|
.message {
|
12
27
|
line-height: 18px;
|
13
28
|
font-size: 12px;
|
@@ -69,7 +69,8 @@ export class SettingCheckbox extends HTMLElement {
|
|
69
69
|
}
|
70
70
|
|
71
71
|
const learnMore = this.#setting.learnMore();
|
72
|
-
if (learnMore) {
|
72
|
+
if (learnMore && learnMore.url) {
|
73
|
+
const url = learnMore.url;
|
73
74
|
const data: Buttons.Button.ButtonData = {
|
74
75
|
iconName: 'help',
|
75
76
|
variant: Buttons.Button.Variant.ICON,
|
@@ -78,7 +79,7 @@ export class SettingCheckbox extends HTMLElement {
|
|
78
79
|
title: i18nString(UIStrings.learnMore),
|
79
80
|
};
|
80
81
|
const handleClick = (event: MouseEvent): void => {
|
81
|
-
Host.InspectorFrontendHost.InspectorFrontendHostInstance.openInNewTab(
|
82
|
+
Host.InspectorFrontendHost.InspectorFrontendHostInstance.openInNewTab(url);
|
82
83
|
event.consume();
|
83
84
|
};
|
84
85
|
return html`<devtools-button
|
@@ -553,11 +553,11 @@ export class ContextMenu extends SubMenu {
|
|
553
553
|
}
|
554
554
|
|
555
555
|
private innerShow(): void {
|
556
|
-
const menuObject = this.buildMenuDescriptors();
|
557
|
-
|
558
556
|
if (!this.eventTarget) {
|
559
557
|
return;
|
560
558
|
}
|
559
|
+
|
560
|
+
const menuObject = this.buildMenuDescriptors();
|
561
561
|
const ownerDocument = (this.eventTarget as HTMLElement).ownerDocument;
|
562
562
|
if (this.useSoftMenu || ContextMenu.useSoftMenu ||
|
563
563
|
Host.InspectorFrontendHost.InspectorFrontendHostInstance.isHostedMode()) {
|
@@ -12,7 +12,7 @@ let inplaceEditorInstance: InplaceEditor<unknown>|null = null;
|
|
12
12
|
|
13
13
|
export class InplaceEditor<T> {
|
14
14
|
private focusRestorer?: ElementFocusRestorer;
|
15
|
-
static startEditing<T>(element: Element, config
|
15
|
+
static startEditing<T>(element: Element, config: Config<T>): Controller|null {
|
16
16
|
if (!inplaceEditorInstance) {
|
17
17
|
inplaceEditorInstance = new InplaceEditor();
|
18
18
|
}
|
@@ -76,12 +76,11 @@ export class InplaceEditor<T> {
|
|
76
76
|
}
|
77
77
|
}
|
78
78
|
|
79
|
-
startEditing(element: Element,
|
79
|
+
startEditing(element: Element, config: Config<T>): Controller|null {
|
80
80
|
if (!markBeingEdited(element, true)) {
|
81
81
|
return null;
|
82
82
|
}
|
83
83
|
|
84
|
-
const config = inputConfig || new Config(function() {}, function() {});
|
85
84
|
const editingContext: EditingContext<T> = {element, config, oldRole: null, oldTabIndex: null, oldText: null};
|
86
85
|
const committedCallback = config.commitHandler;
|
87
86
|
const cancelledCallback = config.cancelHandler;
|
@@ -95,7 +94,7 @@ export class InplaceEditor<T> {
|
|
95
94
|
editingContext.oldText = this.editorContent(editingContext);
|
96
95
|
|
97
96
|
function blurEventListener(e?: Event): void {
|
98
|
-
if (
|
97
|
+
if (!config.blurHandler(element, e)) {
|
99
98
|
return;
|
100
99
|
}
|
101
100
|
editingCommitted.call(element);
|
@@ -125,7 +124,7 @@ export class InplaceEditor<T> {
|
|
125
124
|
function editingCommitted(this: Element): void {
|
126
125
|
cleanUpAfterEditing();
|
127
126
|
|
128
|
-
committedCallback(this, self.editorContent(editingContext), editingContext.oldText
|
127
|
+
committedCallback(this, self.editorContent(editingContext), editingContext.oldText, context, moveDirection);
|
129
128
|
element.dispatchEvent(new Event('change'));
|
130
129
|
}
|
131
130
|
|
@@ -188,23 +187,28 @@ export class InplaceEditor<T> {
|
|
188
187
|
}
|
189
188
|
}
|
190
189
|
|
191
|
-
export type CommitHandler<T> =
|
192
|
-
|
193
|
-
export type
|
190
|
+
export type CommitHandler<T> =
|
191
|
+
(element: Element, newText: string, oldText: string|null, context: T, moveDirection: string) => void;
|
192
|
+
export type CancelHandler<T> = (element: Element, context: T) => void;
|
193
|
+
export type BlurHandler = (element: Element, event?: Event) => boolean;
|
194
194
|
|
195
|
-
export class Config<T
|
195
|
+
export class Config<T> {
|
196
196
|
commitHandler: CommitHandler<T>;
|
197
197
|
cancelHandler: CancelHandler<T>;
|
198
198
|
context: T;
|
199
|
-
blurHandler: BlurHandler
|
200
|
-
pasteHandler
|
201
|
-
postKeydownFinishHandler
|
199
|
+
blurHandler: BlurHandler;
|
200
|
+
pasteHandler?: EventHandler;
|
201
|
+
postKeydownFinishHandler?: EventHandler;
|
202
202
|
|
203
203
|
constructor(
|
204
|
-
commitHandler: CommitHandler<T>,
|
204
|
+
commitHandler: CommitHandler<T>,
|
205
|
+
cancelHandler: CancelHandler<T>,
|
206
|
+
context: T,
|
207
|
+
blurHandler: BlurHandler = () => true,
|
208
|
+
) {
|
205
209
|
this.commitHandler = commitHandler;
|
206
210
|
this.cancelHandler = cancelHandler;
|
207
|
-
this.context = context
|
211
|
+
this.context = context;
|
208
212
|
this.blurHandler = blurHandler;
|
209
213
|
}
|
210
214
|
|
@@ -1214,7 +1214,6 @@ export class TabbedPaneTab {
|
|
1214
1214
|
tabElement.classList.add('measuring');
|
1215
1215
|
} else {
|
1216
1216
|
tabElement.addEventListener('click', this.tabClicked.bind(this), false);
|
1217
|
-
tabElement.addEventListener('keydown', this.tabKeyDown.bind(this), false);
|
1218
1217
|
tabElement.addEventListener('auxclick', this.tabClicked.bind(this), false);
|
1219
1218
|
tabElement.addEventListener('mousedown', this.tabMouseDown.bind(this), false);
|
1220
1219
|
tabElement.addEventListener('mouseup', this.tabMouseUp.bind(this), false);
|
@@ -1265,19 +1264,6 @@ export class TabbedPaneTab {
|
|
1265
1264
|
element?.parentElement?.classList.contains('tabbed-pane-close-button') || false;
|
1266
1265
|
}
|
1267
1266
|
|
1268
|
-
private tabKeyDown(ev: Event): void {
|
1269
|
-
const event = ev as KeyboardEvent;
|
1270
|
-
switch (event.key) {
|
1271
|
-
case 'Enter':
|
1272
|
-
case ' ':
|
1273
|
-
if (this.isCloseIconClicked(event.target as HTMLElement)) {
|
1274
|
-
this.closeTabs([this.id]);
|
1275
|
-
ev.consume(true);
|
1276
|
-
return;
|
1277
|
-
}
|
1278
|
-
}
|
1279
|
-
}
|
1280
|
-
|
1281
1267
|
private tabClicked(ev: Event): void {
|
1282
1268
|
const event = (ev as MouseEvent);
|
1283
1269
|
const middleButton = event.button === 1;
|
@@ -1100,13 +1100,6 @@ export function createTextButton(text: string, clickHandler?: ((arg0: Event) =>
|
|
1100
1100
|
button.variant = opts?.variant ? opts.variant : Buttons.Button.Variant.OUTLINED;
|
1101
1101
|
if (clickHandler) {
|
1102
1102
|
button.addEventListener('click', clickHandler);
|
1103
|
-
button.addEventListener('keydown', (event: KeyboardEvent): void => {
|
1104
|
-
if (event.key === 'Enter' || event.key === 'Space') {
|
1105
|
-
// Make sure we don't propagate 'Enter' or 'Space' key events to parents,
|
1106
|
-
// so that these get turned into 'click' events properly.
|
1107
|
-
event.stopImmediatePropagation();
|
1108
|
-
}
|
1109
|
-
});
|
1110
1103
|
}
|
1111
1104
|
if (opts?.jslogContext) {
|
1112
1105
|
button.setAttribute('jslog', `${VisualLogging.action().track({click: true}).context(opts.jslogContext)}`);
|
@@ -35,7 +35,6 @@
|
|
35
35
|
import * as Common from '../../../../core/common/common.js';
|
36
36
|
import * as i18n from '../../../../core/i18n/i18n.js';
|
37
37
|
import * as Platform from '../../../../core/platform/platform.js';
|
38
|
-
import * as Root from '../../../../core/root/root.js';
|
39
38
|
import * as SDK from '../../../../core/sdk/sdk.js';
|
40
39
|
import * as Protocol from '../../../../generated/protocol.js';
|
41
40
|
import * as IssuesManager from '../../../../models/issues_manager/issues_manager.js';
|
@@ -237,7 +236,8 @@ export class CookiesTable extends UI.Widget.VBox {
|
|
237
236
|
},
|
238
237
|
] as DataGrid.DataGrid.ColumnDescriptor[];
|
239
238
|
|
240
|
-
|
239
|
+
const config = Common.Settings.Settings.instance().getHostConfig();
|
240
|
+
if (config.devToolsEnableOriginBoundCookies?.schemeBindingEnabled) {
|
241
241
|
const additionalColumns = [
|
242
242
|
{
|
243
243
|
id: SDK.Cookie.Attribute.SOURCE_SCHEME,
|
@@ -247,6 +247,11 @@ export class CookiesTable extends UI.Widget.VBox {
|
|
247
247
|
weight: 7,
|
248
248
|
editable,
|
249
249
|
},
|
250
|
+
] as DataGrid.DataGrid.ColumnDescriptor[];
|
251
|
+
columns.push(...additionalColumns);
|
252
|
+
}
|
253
|
+
if (config.devToolsEnableOriginBoundCookies?.portBindingEnabled) {
|
254
|
+
const additionalColumns = [
|
250
255
|
{
|
251
256
|
id: SDK.Cookie.Attribute.SOURCE_PORT,
|
252
257
|
title: 'SourcePort',
|
@@ -666,11 +666,16 @@ export class DataGridImpl<T> extends Common.ObjectWrapper.ObjectWrapper<EventTyp
|
|
666
666
|
}
|
667
667
|
|
668
668
|
private startEditingConfig(_element: Element): UI.InplaceEditor.Config<any> {
|
669
|
-
return new UI.InplaceEditor.Config(this.editingCommitted.bind(this), this.editingCancelled.bind(this));
|
669
|
+
return new UI.InplaceEditor.Config(this.editingCommitted.bind(this), this.editingCancelled.bind(this), undefined);
|
670
670
|
}
|
671
671
|
|
672
672
|
private editingCommitted(
|
673
|
-
element: Element,
|
673
|
+
element: Element,
|
674
|
+
newText: any,
|
675
|
+
_oldText: string|boolean|null,
|
676
|
+
_context: string|undefined,
|
677
|
+
moveDirection: string,
|
678
|
+
): void {
|
674
679
|
const columnId = this.columnIdFromNode(element);
|
675
680
|
if (!columnId) {
|
676
681
|
this.editingCancelled(element);
|
@@ -681,8 +686,7 @@ export class DataGridImpl<T> extends Common.ObjectWrapper.ObjectWrapper<EventTyp
|
|
681
686
|
if (!this.editingNode) {
|
682
687
|
return;
|
683
688
|
}
|
684
|
-
const valueBeforeEditing =
|
685
|
-
(this.editingNode.data[columnId] === null ? '' : this.editingNode.data[columnId] as string | boolean);
|
689
|
+
const valueBeforeEditing = this.editingNode.data[columnId];
|
686
690
|
const currentEditingNode = this.editingNode;
|
687
691
|
|
688
692
|
function moveToNextIfNeeded(this: DataGridImpl<T>, wasChange: boolean): void {
|
@@ -14,7 +14,15 @@ export class ViewportDataGrid<T> extends Common.ObjectWrapper.eventMixin<EventTy
|
|
14
14
|
DataGridImpl)<ViewportDataGridNode<T>> {
|
15
15
|
private readonly onScrollBound: (event: Event|null) => void;
|
16
16
|
private visibleNodes: ViewportDataGridNode<T>[];
|
17
|
-
|
17
|
+
/** A datagrid preference to express that the grid represents an updating log of rows (eg Network panel request log, websocket messages).
|
18
|
+
* If `true`, the datagrid will mostly keep the scroll at the bottom, so new items are visible.
|
19
|
+
* If the data is sorted descending (eg Performance Call Tree, heap snapshot), keep the default of `false`.
|
20
|
+
*/
|
21
|
+
enableAutoScrollToBottom: boolean = false;
|
22
|
+
/** When true, the datagrid will manipulate the scrollTop to focus on the bottom, mostly so new additions are visible.
|
23
|
+
* Some actions will unset this, like revealing or expanding a particular node.
|
24
|
+
* Only matters if enableAutoScrollToBottom is true. */
|
25
|
+
keepScrollingToBottom: boolean = false;
|
18
26
|
private updateIsFromUser: boolean;
|
19
27
|
private lastScrollTop: number;
|
20
28
|
private firstVisibleIsStriped: boolean;
|
@@ -29,7 +37,6 @@ export class ViewportDataGrid<T> extends Common.ObjectWrapper.eventMixin<EventTy
|
|
29
37
|
this.visibleNodes = [];
|
30
38
|
this.inline = false;
|
31
39
|
|
32
|
-
this.stickToBottom = false;
|
33
40
|
this.updateIsFromUser = false;
|
34
41
|
this.lastScrollTop = 0;
|
35
42
|
this.firstVisibleIsStriped = false;
|
@@ -60,15 +67,15 @@ export class ViewportDataGrid<T> extends Common.ObjectWrapper.eventMixin<EventTy
|
|
60
67
|
}
|
61
68
|
|
62
69
|
override onResize(): void {
|
63
|
-
if (this.
|
70
|
+
if (this.keepScrollingToBottom) {
|
64
71
|
this.scrollContainer.scrollTop = this.scrollContainer.scrollHeight - this.scrollContainer.clientHeight;
|
65
72
|
}
|
66
73
|
this.scheduleUpdate();
|
67
74
|
super.onResize();
|
68
75
|
}
|
69
76
|
|
70
|
-
|
71
|
-
this.
|
77
|
+
setEnableAutoScrollToBottom(stick: boolean): void {
|
78
|
+
this.keepScrollingToBottom = this.enableAutoScrollToBottom = stick;
|
72
79
|
}
|
73
80
|
|
74
81
|
private onScroll(_event: Event|null): void {
|
@@ -131,8 +138,10 @@ export class ViewportDataGrid<T> extends Common.ObjectWrapper.eventMixin<EventTy
|
|
131
138
|
bottomPadding += nodes[i].nodeSelfHeight();
|
132
139
|
}
|
133
140
|
|
134
|
-
|
135
|
-
|
141
|
+
if (this.enableAutoScrollToBottom) {
|
142
|
+
// If we're scrolled to the very end, keep the scroll viewport focused to the end (as new items arrive)
|
143
|
+
this.keepScrollingToBottom = end === nodes.length;
|
144
|
+
}
|
136
145
|
|
137
146
|
return {
|
138
147
|
topPadding,
|
@@ -157,7 +166,7 @@ export class ViewportDataGrid<T> extends Common.ObjectWrapper.eventMixin<EventTy
|
|
157
166
|
let scrollTop: number = this.scrollContainer.scrollTop;
|
158
167
|
const currentScrollTop = scrollTop;
|
159
168
|
const maxScrollTop = Math.max(0, this.contentHeight() - clientHeight);
|
160
|
-
if (!this.updateIsFromUser && this.
|
169
|
+
if (!this.updateIsFromUser && this.keepScrollingToBottom) {
|
161
170
|
scrollTop = maxScrollTop;
|
162
171
|
}
|
163
172
|
this.updateIsFromUser = false;
|
@@ -185,7 +194,7 @@ export class ViewportDataGrid<T> extends Common.ObjectWrapper.eventMixin<EventTy
|
|
185
194
|
const nodes = (this.rootNode() as ViewportDataGridNode<T>).flatChildren();
|
186
195
|
const index = nodes.indexOf(visibleNodes[0]);
|
187
196
|
this.updateStripesClass(Boolean(index % 2));
|
188
|
-
if (this.
|
197
|
+
if (this.keepScrollingToBottom && index !== -1 && Boolean(index % 2) !== this.firstVisibleIsStriped) {
|
189
198
|
offset += 1;
|
190
199
|
}
|
191
200
|
}
|
@@ -233,7 +242,7 @@ export class ViewportDataGrid<T> extends Common.ObjectWrapper.eventMixin<EventTy
|
|
233
242
|
const visibleHeight = this.scrollContainer.offsetHeight - this.headerHeightInScroller();
|
234
243
|
if (scrollTop > fromY) {
|
235
244
|
scrollTop = fromY;
|
236
|
-
this.
|
245
|
+
this.keepScrollingToBottom = false;
|
237
246
|
} else if (scrollTop + visibleHeight < toY) {
|
238
247
|
scrollTop = toY - visibleHeight;
|
239
248
|
}
|
@@ -410,7 +419,7 @@ export class ViewportDataGridNode<T> extends DataGridNode<ViewportDataGridNode<T
|
|
410
419
|
if (this.expanded) {
|
411
420
|
return;
|
412
421
|
}
|
413
|
-
(this.dataGrid as ViewportDataGrid<T>).
|
422
|
+
(this.dataGrid as ViewportDataGrid<T>).keepScrollingToBottom = false;
|
414
423
|
this.clearFlatNodes();
|
415
424
|
super.expand();
|
416
425
|
(this.dataGrid as ViewportDataGrid<T>).scheduleUpdateStructure();
|
@@ -34,6 +34,25 @@ describeWithLocale('CSSVarSwatch', () => {
|
|
34
34
|
assert.instanceOf(component, HTMLElement, 'The swatch is an instance of HTMLElement');
|
35
35
|
});
|
36
36
|
|
37
|
+
it('renders a var function with empty computed value', () => {
|
38
|
+
const component = new InlineEditor.LinkSwatch.CSSVarSwatch();
|
39
|
+
renderElementIntoDOM(component);
|
40
|
+
component.data = {
|
41
|
+
variableName: '--test',
|
42
|
+
computedValue: '',
|
43
|
+
fromFallback: false,
|
44
|
+
fallbackText: null,
|
45
|
+
onLinkActivate: () => {},
|
46
|
+
};
|
47
|
+
|
48
|
+
assertVarSwatch(component, {
|
49
|
+
valueTooltip: '',
|
50
|
+
linkTooltip: '',
|
51
|
+
isDefined: true,
|
52
|
+
varText: '--test',
|
53
|
+
});
|
54
|
+
});
|
55
|
+
|
37
56
|
it('renders a var function without fallback', () => {
|
38
57
|
const component = new InlineEditor.LinkSwatch.CSSVarSwatch();
|
39
58
|
renderElementIntoDOM(component);
|
@@ -118,7 +118,7 @@ export class CSSVarSwatch extends HTMLElement {
|
|
118
118
|
protected render(data: CSSVarSwatchRenderData): void {
|
119
119
|
const {variableName, fromFallback, computedValue, onLinkActivate} = data;
|
120
120
|
|
121
|
-
const isDefined =
|
121
|
+
const isDefined = computedValue !== null && !fromFallback;
|
122
122
|
const title = isDefined ? computedValue ?? '' : i18nString(UIStrings.sIsNotDefined, {PH1: variableName});
|
123
123
|
|
124
124
|
this.#link = new BaseLinkSwatch();
|
@@ -1715,7 +1715,7 @@ export class ExpandableTextPropertyValue extends ObjectPropertyValue {
|
|
1715
1715
|
this.maxDisplayableTextLength = 10000000;
|
1716
1716
|
|
1717
1717
|
const byteCount = Platform.StringUtilities.countWtf8Bytes(text);
|
1718
|
-
const totalBytesText =
|
1718
|
+
const totalBytesText = i18n.ByteUtilities.bytesToString(byteCount);
|
1719
1719
|
if (this.text.length < this.maxDisplayableTextLength) {
|
1720
1720
|
this.expandElementText = i18nString(UIStrings.showMoreS, {PH1: totalBytesText});
|
1721
1721
|
this.expandElement.setAttribute('data-text', this.expandElementText);
|
@@ -32,7 +32,6 @@ import * as Common from '../../../../core/common/common.js';
|
|
32
32
|
import * as i18n from '../../../../core/i18n/i18n.js';
|
33
33
|
import * as Platform from '../../../../core/platform/platform.js';
|
34
34
|
import * as Root from '../../../../core/root/root.js';
|
35
|
-
import type * as TimelineModel from '../../../../models/timeline_model/timeline_model.js';
|
36
35
|
import * as Trace from '../../../../models/trace/trace.js';
|
37
36
|
import * as VisualLogging from '../../../../ui/visual_logging/visual_logging.js';
|
38
37
|
import * as Buttons from '../../../components/buttons/buttons.js';
|
@@ -2174,16 +2173,6 @@ export class FlameChart extends Common.ObjectWrapper.eventMixin<EventTypes, type
|
|
2174
2173
|
|
2175
2174
|
const {markerIndices, colorBuckets, titleIndices} = this.getDrawableData(context, timelineData);
|
2176
2175
|
|
2177
|
-
context.save();
|
2178
|
-
this.forEachGroupInViewport((offset, index, group, isFirst, groupHeight) => {
|
2179
|
-
if (this.isGroupFocused(index)) {
|
2180
|
-
context.fillStyle =
|
2181
|
-
ThemeSupport.ThemeSupport.instance().getComputedValue('--selected-group-background', this.contentElement);
|
2182
|
-
context.fillRect(0, offset, canvasWidth, groupHeight - group.style.padding);
|
2183
|
-
}
|
2184
|
-
});
|
2185
|
-
context.restore();
|
2186
|
-
|
2187
2176
|
const groups = this.rawTimelineData?.groups || [];
|
2188
2177
|
const trackIndex = groups.findIndex(g => g.name.includes('Main'));
|
2189
2178
|
const group = groups.at(trackIndex);
|
@@ -2678,14 +2667,9 @@ export class FlameChart extends Common.ObjectWrapper.eventMixin<EventTypes, type
|
|
2678
2667
|
if (this.isGroupCollapsible(index) && !group.expanded || group.style.shareHeaderLine) {
|
2679
2668
|
// In edit mode, we draw an extra rectangle for the save icon.
|
2680
2669
|
const labelBackgroundWidth = this.labelWidthForGroup(context, group);
|
2681
|
-
|
2682
|
-
|
2683
|
-
|
2684
|
-
} else {
|
2685
|
-
const parsedColor = Common.Color.parse(group.style.backgroundColor);
|
2686
|
-
if (parsedColor) {
|
2687
|
-
context.fillStyle = (parsedColor.setAlpha(0.8).asString() as string);
|
2688
|
-
}
|
2670
|
+
const parsedColor = Common.Color.parse(group.style.backgroundColor);
|
2671
|
+
if (parsedColor) {
|
2672
|
+
context.fillStyle = (parsedColor.setAlpha(0.8).asString() as string);
|
2689
2673
|
}
|
2690
2674
|
context.fillRect(
|
2691
2675
|
iconsWidth + HEADER_LEFT_PADDING, offset + HEADER_LABEL_Y_PADDING, labelBackgroundWidth,
|
@@ -4145,9 +4129,8 @@ export interface FlameChartDataProvider {
|
|
4145
4129
|
customizedContextMenu?
|
4146
4130
|
(event: MouseEvent, eventIndex: number, groupIndex: number): UI.ContextMenu.ContextMenu|undefined;
|
4147
4131
|
|
4148
|
-
search?
|
4149
|
-
|
4150
|
-
filter?: TimelineModel.TimelineModelFilter.TimelineModelFilter): DataProviderSearchResult[];
|
4132
|
+
search?(visibleWindow: Trace.Types.Timing.TraceWindowMicroSeconds, filter?: Trace.Extras.TraceFilter.TraceFilter):
|
4133
|
+
DataProviderSearchResult[];
|
4151
4134
|
|
4152
4135
|
// The following three functions are used for the flame chart entry customization.
|
4153
4136
|
modifyTree?(action: FilterAction, entryIndex: number): void;
|