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
@@ -0,0 +1,72 @@
|
|
1
|
+
// Copyright 2023 The Chromium Authors. All rights reserved.
|
2
|
+
// Use of this source code is governed by a BSD-style license that can be
|
3
|
+
// found in the LICENSE file.
|
4
|
+
|
5
|
+
import * as SDK from '../../core/sdk/sdk.js';
|
6
|
+
import {createTarget, stubNoopSettings} from '../../testing/EnvironmentHelpers.js';
|
7
|
+
import {describeWithMockConnection} from '../../testing/MockConnection.js';
|
8
|
+
import * as UI from '../../ui/legacy/legacy.js';
|
9
|
+
|
10
|
+
import * as Elements from './elements.js';
|
11
|
+
|
12
|
+
describeWithMockConnection('ComputedStyleWidget', () => {
|
13
|
+
let target: SDK.Target.Target;
|
14
|
+
let view: Elements.ComputedStyleWidget.ComputedStyleWidget;
|
15
|
+
let trackComputedStyleUpdatesForNodeSpy: sinon.SinonSpy;
|
16
|
+
|
17
|
+
beforeEach(() => {
|
18
|
+
stubNoopSettings();
|
19
|
+
target = createTarget();
|
20
|
+
UI.Context.Context.instance().setFlavor(SDK.DOMModel.DOMNode, null);
|
21
|
+
trackComputedStyleUpdatesForNodeSpy =
|
22
|
+
sinon.spy(SDK.CSSModel.CSSModel.prototype, 'trackComputedStyleUpdatesForNode');
|
23
|
+
|
24
|
+
const cssModel = target.model(SDK.CSSModel.CSSModel);
|
25
|
+
sinon.stub(Elements.ComputedStyleModel.ComputedStyleModel.prototype, 'cssModel').returns(cssModel);
|
26
|
+
});
|
27
|
+
|
28
|
+
afterEach(() => {
|
29
|
+
view.detach();
|
30
|
+
});
|
31
|
+
|
32
|
+
it('tracks computed style updates for the node when the widget is shown', () => {
|
33
|
+
const model = target.model(SDK.DOMModel.DOMModel);
|
34
|
+
assert.exists(model);
|
35
|
+
const node = new SDK.DOMModel.DOMNode(model);
|
36
|
+
UI.Context.Context.instance().setFlavor(SDK.DOMModel.DOMNode, node);
|
37
|
+
view = new Elements.ComputedStyleWidget.ComputedStyleWidget();
|
38
|
+
view.markAsRoot();
|
39
|
+
view.show(document.body);
|
40
|
+
|
41
|
+
sinon.assert.calledWith(trackComputedStyleUpdatesForNodeSpy, node.id);
|
42
|
+
});
|
43
|
+
|
44
|
+
it('tracks computed style updates for the node when the selected node is changed', () => {
|
45
|
+
const model = target.model(SDK.DOMModel.DOMModel);
|
46
|
+
assert.exists(model);
|
47
|
+
const node = new SDK.DOMModel.DOMNode(model);
|
48
|
+
UI.Context.Context.instance().setFlavor(SDK.DOMModel.DOMNode, node);
|
49
|
+
view = new Elements.ComputedStyleWidget.ComputedStyleWidget();
|
50
|
+
view.markAsRoot();
|
51
|
+
view.show(document.body);
|
52
|
+
|
53
|
+
sinon.assert.calledWith(trackComputedStyleUpdatesForNodeSpy, node.id);
|
54
|
+
const newNode = new SDK.DOMModel.DOMNode(model);
|
55
|
+
UI.Context.Context.instance().setFlavor(SDK.DOMModel.DOMNode, newNode);
|
56
|
+
|
57
|
+
sinon.assert.calledWith(trackComputedStyleUpdatesForNodeSpy, newNode.id);
|
58
|
+
});
|
59
|
+
|
60
|
+
it('removes tracking computed style updates for the node when the widget is hidden', () => {
|
61
|
+
const model = target.model(SDK.DOMModel.DOMModel);
|
62
|
+
assert.exists(model);
|
63
|
+
const node = new SDK.DOMModel.DOMNode(model);
|
64
|
+
UI.Context.Context.instance().setFlavor(SDK.DOMModel.DOMNode, node);
|
65
|
+
view = new Elements.ComputedStyleWidget.ComputedStyleWidget();
|
66
|
+
view.markAsRoot();
|
67
|
+
view.show(document.body);
|
68
|
+
view.hideWidget();
|
69
|
+
|
70
|
+
sinon.assert.calledWith(trackComputedStyleUpdatesForNodeSpy, undefined);
|
71
|
+
});
|
72
|
+
});
|
@@ -291,6 +291,10 @@ export class ComputedStyleWidget extends UI.ThrottledWidget.ThrottledWidget {
|
|
291
291
|
fontsWidget.show(this.contentElement);
|
292
292
|
}
|
293
293
|
|
294
|
+
#handleNodeChange(event: Common.EventTarget.EventTargetEvent<SDK.DOMModel.DOMNode|null>): void {
|
295
|
+
void this.computedStyleModel.cssModel()?.trackComputedStyleUpdatesForNode(event.data?.id);
|
296
|
+
}
|
297
|
+
|
294
298
|
override onResize(): void {
|
295
299
|
const isNarrow = this.contentElement.offsetWidth < 260;
|
296
300
|
this.#computedStylesTree.classList.toggle('computed-narrow', isNarrow);
|
@@ -299,6 +303,14 @@ export class ComputedStyleWidget extends UI.ThrottledWidget.ThrottledWidget {
|
|
299
303
|
override wasShown(): void {
|
300
304
|
super.wasShown();
|
301
305
|
this.registerCSSFiles([computedStyleSidebarPaneStyles]);
|
306
|
+
|
307
|
+
void this.computedStyleModel.cssModel()?.trackComputedStyleUpdatesForNode(this.computedStyleModel.node()?.id);
|
308
|
+
UI.Context.Context.instance().addFlavorChangeListener(SDK.DOMModel.DOMNode, this.#handleNodeChange, this);
|
309
|
+
}
|
310
|
+
|
311
|
+
override willHide(): void {
|
312
|
+
void this.computedStyleModel.cssModel()?.trackComputedStyleUpdatesForNode(undefined);
|
313
|
+
UI.Context.Context.instance().removeFlavorChangeListener(SDK.DOMModel.DOMNode, this.#handleNodeChange, this);
|
302
314
|
}
|
303
315
|
|
304
316
|
override async doUpdate(): Promise<void> {
|
@@ -72,7 +72,9 @@ describeWithMockConnection('ElementStatePaneWidget', () => {
|
|
72
72
|
for (const pseudoClass of pseudoClasses) {
|
73
73
|
const div = view.contentElement.querySelector(`#${pseudoClass}`);
|
74
74
|
assert.instanceOf(div, HTMLDivElement);
|
75
|
-
|
75
|
+
const shouldShow = expectedPseudoClasses.includes(pseudoClass);
|
76
|
+
assert.strictEqual(
|
77
|
+
!div.hidden, shouldShow, `Checkbox for ${pseudoClass} should be ${shouldShow ? 'shown' : 'hidden'}`);
|
76
78
|
}
|
77
79
|
};
|
78
80
|
|
@@ -153,15 +155,13 @@ describeWithMockConnection('ElementStatePaneWidget', () => {
|
|
153
155
|
await assertExpectedPseudoClasses(
|
154
156
|
'input',
|
155
157
|
[
|
156
|
-
'enabled',
|
157
158
|
'disabled',
|
158
159
|
'valid',
|
159
160
|
'invalid',
|
160
161
|
'user-valid',
|
161
162
|
'user-invalid',
|
162
163
|
'required',
|
163
|
-
'
|
164
|
-
'read-write',
|
164
|
+
'read-only',
|
165
165
|
'placeholder-shown',
|
166
166
|
'autofill',
|
167
167
|
],
|
@@ -171,14 +171,14 @@ describeWithMockConnection('ElementStatePaneWidget', () => {
|
|
171
171
|
it('Shows the specific pseudo-classes for button', async () => {
|
172
172
|
await assertExpectedPseudoClasses(
|
173
173
|
'button',
|
174
|
-
['
|
174
|
+
['disabled', 'valid', 'invalid', 'read-write'],
|
175
175
|
);
|
176
176
|
});
|
177
177
|
|
178
178
|
it('Shows the specific pseudo-classes for fieldset', async () => {
|
179
179
|
await assertExpectedPseudoClasses(
|
180
180
|
'fieldset',
|
181
|
-
['
|
181
|
+
['disabled', 'valid', 'invalid', 'read-write'],
|
182
182
|
);
|
183
183
|
});
|
184
184
|
|
@@ -186,45 +186,82 @@ describeWithMockConnection('ElementStatePaneWidget', () => {
|
|
186
186
|
await assertExpectedPseudoClasses(
|
187
187
|
'textarea',
|
188
188
|
[
|
189
|
-
'enabled',
|
190
189
|
'disabled',
|
191
190
|
'valid',
|
192
191
|
'invalid',
|
193
192
|
'user-valid',
|
194
193
|
'user-invalid',
|
195
194
|
'required',
|
196
|
-
'
|
197
|
-
'read-write',
|
195
|
+
'read-only',
|
198
196
|
'placeholder-shown',
|
199
197
|
],
|
200
198
|
);
|
199
|
+
await assertExpectedPseudoClasses(
|
200
|
+
'textarea',
|
201
|
+
[
|
202
|
+
'disabled',
|
203
|
+
'valid',
|
204
|
+
'invalid',
|
205
|
+
'user-valid',
|
206
|
+
'user-invalid',
|
207
|
+
'required',
|
208
|
+
'read-write',
|
209
|
+
'placeholder-shown',
|
210
|
+
],
|
211
|
+
false, ['readonly', '']);
|
212
|
+
await assertExpectedPseudoClasses(
|
213
|
+
'textarea',
|
214
|
+
[
|
215
|
+
'enabled',
|
216
|
+
'valid',
|
217
|
+
'invalid',
|
218
|
+
'user-valid',
|
219
|
+
'user-invalid',
|
220
|
+
'required',
|
221
|
+
'read-write',
|
222
|
+
'placeholder-shown',
|
223
|
+
],
|
224
|
+
false, ['disabled', '']);
|
225
|
+
await assertExpectedPseudoClasses(
|
226
|
+
'textarea',
|
227
|
+
[
|
228
|
+
'disabled',
|
229
|
+
'valid',
|
230
|
+
'invalid',
|
231
|
+
'user-valid',
|
232
|
+
'user-invalid',
|
233
|
+
'optional',
|
234
|
+
'read-only',
|
235
|
+
'placeholder-shown',
|
236
|
+
],
|
237
|
+
false, ['required', '']);
|
201
238
|
});
|
202
239
|
|
203
240
|
it('Shows the specific pseudo-classes for select', async () => {
|
204
241
|
await assertExpectedPseudoClasses(
|
205
242
|
'select',
|
206
|
-
['
|
243
|
+
['disabled', 'valid', 'invalid', 'user-valid', 'user-invalid', 'required', 'read-write'],
|
207
244
|
);
|
208
245
|
});
|
209
246
|
|
210
247
|
it('Shows the specific pseudo-classes for option', async () => {
|
211
248
|
await assertExpectedPseudoClasses(
|
212
249
|
'option',
|
213
|
-
['
|
250
|
+
['disabled', 'checked', 'read-write'],
|
214
251
|
);
|
215
252
|
});
|
216
253
|
|
217
254
|
it('Shows the specific pseudo-classes for optgroup', async () => {
|
218
255
|
await assertExpectedPseudoClasses(
|
219
256
|
'optgroup',
|
220
|
-
['
|
257
|
+
['disabled', 'read-write'],
|
221
258
|
);
|
222
259
|
});
|
223
260
|
|
224
261
|
it('Shows the specific pseudo-classes for FormAssociated', async () => {
|
225
262
|
await assertExpectedPseudoClasses(
|
226
263
|
'CustomFormAssociatedElement',
|
227
|
-
['
|
264
|
+
['disabled', 'valid', 'invalid', 'read-write'],
|
228
265
|
true,
|
229
266
|
);
|
230
267
|
});
|
@@ -232,55 +269,74 @@ describeWithMockConnection('ElementStatePaneWidget', () => {
|
|
232
269
|
it('Shows the specific pseudo-classes for object, output and img', async () => {
|
233
270
|
await assertExpectedPseudoClasses(
|
234
271
|
'object',
|
235
|
-
['valid', 'invalid'],
|
272
|
+
['valid', 'invalid', 'read-write'],
|
236
273
|
);
|
237
274
|
|
238
275
|
await assertExpectedPseudoClasses(
|
239
276
|
'output',
|
240
|
-
['valid', 'invalid', 'read-
|
277
|
+
['valid', 'invalid', 'read-write'],
|
241
278
|
);
|
242
279
|
|
243
280
|
await assertExpectedPseudoClasses(
|
244
281
|
'img',
|
245
|
-
['valid', 'invalid'],
|
282
|
+
['valid', 'invalid', 'read-write'],
|
246
283
|
);
|
247
284
|
});
|
248
285
|
it('Shows the specific pseudo-classes for progress', async () => {
|
249
286
|
await assertExpectedPseudoClasses(
|
250
287
|
'progress',
|
251
|
-
['read-
|
288
|
+
['read-write', 'indeterminate'],
|
252
289
|
);
|
253
290
|
});
|
254
291
|
|
255
292
|
it('Shows the specific pseudo-classes for a and area with href', async () => {
|
256
293
|
await assertExpectedPseudoClasses(
|
257
294
|
'a',
|
258
|
-
['visited'],
|
295
|
+
['visited', 'read-write'],
|
259
296
|
false,
|
260
297
|
['href', 'www.google.com'],
|
261
298
|
);
|
262
299
|
|
263
300
|
await assertExpectedPseudoClasses(
|
264
|
-
'
|
265
|
-
['visited'],
|
301
|
+
'area',
|
302
|
+
['visited', 'read-write'],
|
266
303
|
false,
|
267
304
|
['href', 'www.google.com'],
|
268
305
|
);
|
269
306
|
});
|
270
307
|
|
308
|
+
it('Shows the specific pseudo-classes for a and area without href', async () => {
|
309
|
+
await assertExpectedPseudoClasses(
|
310
|
+
'a',
|
311
|
+
['read-write'],
|
312
|
+
);
|
313
|
+
|
314
|
+
await assertExpectedPseudoClasses(
|
315
|
+
'area',
|
316
|
+
['read-write'],
|
317
|
+
);
|
318
|
+
});
|
319
|
+
|
320
|
+
it('Shows the specific pseudo-classes for contenteditable div', async () => {
|
321
|
+
await assertExpectedPseudoClasses(
|
322
|
+
'div',
|
323
|
+
['read-only'],
|
324
|
+
false,
|
325
|
+
['contenteditable', ''],
|
326
|
+
);
|
327
|
+
});
|
328
|
+
|
271
329
|
it('Shows the specific pseudo-classes for radio or checkbox inputs', async () => {
|
272
330
|
await assertExpectedPseudoClasses(
|
273
331
|
'input',
|
274
332
|
[
|
275
|
-
'enabled',
|
276
333
|
'disabled',
|
277
334
|
'valid',
|
278
335
|
'invalid',
|
279
336
|
'user-valid',
|
280
337
|
'user-invalid',
|
281
338
|
'required',
|
282
|
-
'
|
283
|
-
'read-write',
|
339
|
+
'read-only',
|
284
340
|
'placeholder-shown',
|
285
341
|
'autofill',
|
286
342
|
'checked',
|
@@ -292,15 +348,13 @@ describeWithMockConnection('ElementStatePaneWidget', () => {
|
|
292
348
|
await assertExpectedPseudoClasses(
|
293
349
|
'input',
|
294
350
|
[
|
295
|
-
'enabled',
|
296
351
|
'disabled',
|
297
352
|
'valid',
|
298
353
|
'invalid',
|
299
354
|
'user-valid',
|
300
355
|
'user-invalid',
|
301
356
|
'required',
|
302
|
-
'
|
303
|
-
'read-write',
|
357
|
+
'read-only',
|
304
358
|
'placeholder-shown',
|
305
359
|
'autofill',
|
306
360
|
'checked',
|
@@ -314,19 +368,19 @@ describeWithMockConnection('ElementStatePaneWidget', () => {
|
|
314
368
|
it('Shows the specific pseudo-classes for datalist, label, legend and meter', async () => {
|
315
369
|
await assertExpectedPseudoClasses(
|
316
370
|
'datalist',
|
317
|
-
['read-
|
371
|
+
['read-write'],
|
318
372
|
);
|
319
373
|
await assertExpectedPseudoClasses(
|
320
374
|
'label',
|
321
|
-
['read-
|
375
|
+
['read-write'],
|
322
376
|
);
|
323
377
|
await assertExpectedPseudoClasses(
|
324
378
|
'legend',
|
325
|
-
['read-
|
379
|
+
['read-write'],
|
326
380
|
);
|
327
381
|
await assertExpectedPseudoClasses(
|
328
382
|
'meter',
|
329
|
-
['read-
|
383
|
+
['read-write'],
|
330
384
|
);
|
331
385
|
});
|
332
386
|
});
|
@@ -68,6 +68,7 @@ enum SpecificPseudoStates {
|
|
68
68
|
export class ElementStatePaneWidget extends UI.Widget.Widget {
|
69
69
|
private readonly inputs: HTMLInputElement[];
|
70
70
|
private readonly inputStates: WeakMap<HTMLInputElement, string>;
|
71
|
+
private readonly duals: Map<SpecificPseudoStates, SpecificPseudoStates>;
|
71
72
|
private cssModel?: SDK.CSSModel.CSSModel|null;
|
72
73
|
private specificPseudoStateDivs: Map<SpecificPseudoStates, HTMLDivElement>;
|
73
74
|
private specificHeader: HTMLDetailsElement;
|
@@ -80,6 +81,7 @@ export class ElementStatePaneWidget extends UI.Widget.Widget {
|
|
80
81
|
const inputs: HTMLInputElement[] = [];
|
81
82
|
this.inputs = inputs;
|
82
83
|
this.inputStates = new WeakMap();
|
84
|
+
this.duals = new Map();
|
83
85
|
const createSectionHeader = (title: string): HTMLDivElement => {
|
84
86
|
const sectionHeaderContainer = document.createElement('div');
|
85
87
|
sectionHeaderContainer.classList.add('section-header');
|
@@ -96,7 +98,12 @@ export class ElementStatePaneWidget extends UI.Widget.Widget {
|
|
96
98
|
if (!state) {
|
97
99
|
return;
|
98
100
|
}
|
99
|
-
|
101
|
+
const checked = event.target.checked;
|
102
|
+
const dual = this.duals.get(state as SpecificPseudoStates);
|
103
|
+
if (checked && dual) {
|
104
|
+
node.domModel().cssModel().forcePseudoState(node, dual, false);
|
105
|
+
}
|
106
|
+
node.domModel().cssModel().forcePseudoState(node, state, checked);
|
100
107
|
};
|
101
108
|
const createElementStateCheckbox = (state: string): HTMLDivElement => {
|
102
109
|
const div = document.createElement('div');
|
@@ -110,7 +117,10 @@ export class ElementStatePaneWidget extends UI.Widget.Widget {
|
|
110
117
|
div.appendChild(label);
|
111
118
|
return div;
|
112
119
|
};
|
113
|
-
|
120
|
+
const setDualStateCheckboxes = (first: SpecificPseudoStates, second: SpecificPseudoStates): void => {
|
121
|
+
this.duals.set(first, second);
|
122
|
+
this.duals.set(second, first);
|
123
|
+
};
|
114
124
|
const createEmulateFocusedPageCheckbox = (): Element => {
|
115
125
|
const div = document.createElement('div');
|
116
126
|
div.classList.add('page-state-checkbox');
|
@@ -210,6 +220,12 @@ export class ElementStatePaneWidget extends UI.Widget.Widget {
|
|
210
220
|
elementSpecificContainer.appendChild(div);
|
211
221
|
});
|
212
222
|
|
223
|
+
setDualStateCheckboxes(SpecificPseudoStates.VALID, SpecificPseudoStates.INVALID);
|
224
|
+
setDualStateCheckboxes(SpecificPseudoStates.USER_VALID, SpecificPseudoStates.USER_INVALID);
|
225
|
+
setDualStateCheckboxes(SpecificPseudoStates.READ_ONLY, SpecificPseudoStates.READ_WRITE);
|
226
|
+
setDualStateCheckboxes(SpecificPseudoStates.IN_RANGE, SpecificPseudoStates.OUT_OF_RANGE);
|
227
|
+
setDualStateCheckboxes(SpecificPseudoStates.ENABLED, SpecificPseudoStates.DISABLED);
|
228
|
+
|
213
229
|
this.specificHeader = document.createElement('details');
|
214
230
|
this.specificHeader.classList.add('specific-details');
|
215
231
|
|
@@ -287,6 +303,19 @@ export class ElementStatePaneWidget extends UI.Widget.Widget {
|
|
287
303
|
return isElementOfTypes(node, ['input']) &&
|
288
304
|
(node.getAttribute('type') === 'checkbox' || node.getAttribute('type') === 'radio');
|
289
305
|
};
|
306
|
+
const isContentEditable = (node: SDK.DOMModel.DOMNode): boolean => {
|
307
|
+
return node.getAttribute('contenteditable') !== undefined ||
|
308
|
+
Boolean(node.parentNode && isContentEditable(node.parentNode));
|
309
|
+
};
|
310
|
+
const isDisabled = (node: SDK.DOMModel.DOMNode): boolean => {
|
311
|
+
return node.getAttribute('disabled') !== undefined;
|
312
|
+
};
|
313
|
+
const isMutable = (node: SDK.DOMModel.DOMNode): boolean => {
|
314
|
+
if (isElementOfTypes(node, ['input', 'textarea'])) {
|
315
|
+
return node.getAttribute('readonly') === undefined && !isDisabled(node);
|
316
|
+
}
|
317
|
+
return isContentEditable(node);
|
318
|
+
};
|
290
319
|
// An autonomous custom element is called a form-associated custom element if the element is associated with a custom element definition whose form-associated field is set to true.
|
291
320
|
// https://html.spec.whatwg.org/multipage/custom-elements.html#form-associated-custom-element
|
292
321
|
const isFormAssociatedCustomElement = async(node: SDK.DOMModel.DOMNode): Promise<boolean> => {
|
@@ -300,8 +329,8 @@ export class ElementStatePaneWidget extends UI.Widget.Widget {
|
|
300
329
|
|
301
330
|
if (isElementOfTypes(node, ['button', 'input', 'select', 'textarea', 'optgroup', 'option', 'fieldset']) ||
|
302
331
|
isFormAssociated) {
|
303
|
-
hideSpecificCheckbox(SpecificPseudoStates.ENABLED,
|
304
|
-
hideSpecificCheckbox(SpecificPseudoStates.DISABLED,
|
332
|
+
hideSpecificCheckbox(SpecificPseudoStates.ENABLED, !isDisabled(node));
|
333
|
+
hideSpecificCheckbox(SpecificPseudoStates.DISABLED, isDisabled(node));
|
305
334
|
} else {
|
306
335
|
hideSpecificCheckbox(SpecificPseudoStates.ENABLED, true);
|
307
336
|
hideSpecificCheckbox(SpecificPseudoStates.DISABLED, true);
|
@@ -319,8 +348,13 @@ export class ElementStatePaneWidget extends UI.Widget.Widget {
|
|
319
348
|
if (isElementOfTypes(node, ['input', 'select', 'textarea'])) {
|
320
349
|
hideSpecificCheckbox(SpecificPseudoStates.USER_VALID, false);
|
321
350
|
hideSpecificCheckbox(SpecificPseudoStates.USER_INVALID, false);
|
322
|
-
|
323
|
-
|
351
|
+
if (node.getAttribute('required') === undefined) {
|
352
|
+
hideSpecificCheckbox(SpecificPseudoStates.REQUIRED, false);
|
353
|
+
hideSpecificCheckbox(SpecificPseudoStates.OPTIONAL, true);
|
354
|
+
} else {
|
355
|
+
hideSpecificCheckbox(SpecificPseudoStates.REQUIRED, true);
|
356
|
+
hideSpecificCheckbox(SpecificPseudoStates.OPTIONAL, false);
|
357
|
+
}
|
324
358
|
} else {
|
325
359
|
hideSpecificCheckbox(SpecificPseudoStates.USER_VALID, true);
|
326
360
|
hideSpecificCheckbox(SpecificPseudoStates.USER_INVALID, true);
|
@@ -328,27 +362,11 @@ export class ElementStatePaneWidget extends UI.Widget.Widget {
|
|
328
362
|
hideSpecificCheckbox(SpecificPseudoStates.OPTIONAL, true);
|
329
363
|
}
|
330
364
|
|
331
|
-
if (
|
332
|
-
hideSpecificCheckbox(SpecificPseudoStates.READ_WRITE, false);
|
333
|
-
} else {
|
365
|
+
if (isMutable(node)) {
|
334
366
|
hideSpecificCheckbox(SpecificPseudoStates.READ_WRITE, true);
|
335
|
-
}
|
336
|
-
|
337
|
-
if (isElementOfTypes(node, [
|
338
|
-
'button',
|
339
|
-
'datalist',
|
340
|
-
'fieldset',
|
341
|
-
'label',
|
342
|
-
'legend',
|
343
|
-
'meter',
|
344
|
-
'optgroup',
|
345
|
-
'option',
|
346
|
-
'output',
|
347
|
-
'progress',
|
348
|
-
'select',
|
349
|
-
])) {
|
350
367
|
hideSpecificCheckbox(SpecificPseudoStates.READ_ONLY, false);
|
351
368
|
} else {
|
369
|
+
hideSpecificCheckbox(SpecificPseudoStates.READ_WRITE, false);
|
352
370
|
hideSpecificCheckbox(SpecificPseudoStates.READ_ONLY, true);
|
353
371
|
}
|
354
372
|
|
@@ -996,7 +996,7 @@ export class ElementsTreeElement extends UI.TreeOutline.TreeElement {
|
|
996
996
|
removeZeroWidthSpaceRecursive(attribute);
|
997
997
|
|
998
998
|
const config = new UI.InplaceEditor.Config(
|
999
|
-
this.attributeEditingCommitted.bind(this), this.editingCancelled.bind(this), attributeName
|
999
|
+
this.attributeEditingCommitted.bind(this), this.editingCancelled.bind(this), attributeName);
|
1000
1000
|
|
1001
1001
|
function postKeyDownFinishHandler(event: Event): string {
|
1002
1002
|
UI.UIUtils.handleElementValueModifications(event, attribute);
|
@@ -1032,7 +1032,7 @@ export class ElementsTreeElement extends UI.TreeOutline.TreeElement {
|
|
1032
1032
|
container.textContent = textNode.nodeValue();
|
1033
1033
|
} // Strip the CSS or JS highlighting if present.
|
1034
1034
|
const config = new UI.InplaceEditor.Config(
|
1035
|
-
this.textNodeEditingCommitted.bind(this, textNode), this.editingCancelled.bind(this));
|
1035
|
+
this.textNodeEditingCommitted.bind(this, textNode), this.editingCancelled.bind(this), null);
|
1036
1036
|
this.updateEditorHandles(textNodeElement, config);
|
1037
1037
|
const componentSelection = this.listItemElement.getComponentSelection();
|
1038
1038
|
componentSelection && componentSelection.selectAllChildren(textNodeElement);
|
@@ -1074,8 +1074,13 @@ export class ElementsTreeElement extends UI.TreeOutline.TreeElement {
|
|
1074
1074
|
};
|
1075
1075
|
|
1076
1076
|
function editingCommitted(
|
1077
|
-
this: ElementsTreeElement,
|
1078
|
-
|
1077
|
+
this: ElementsTreeElement,
|
1078
|
+
element: Element,
|
1079
|
+
newTagName: string,
|
1080
|
+
oldText: string|null,
|
1081
|
+
tagName: string|null,
|
1082
|
+
moveDirection: string,
|
1083
|
+
): void {
|
1079
1084
|
if (!tagNameElement) {
|
1080
1085
|
return;
|
1081
1086
|
}
|
@@ -1104,7 +1109,7 @@ export class ElementsTreeElement extends UI.TreeOutline.TreeElement {
|
|
1104
1109
|
return true;
|
1105
1110
|
}
|
1106
1111
|
|
1107
|
-
private updateEditorHandles<T>(element: Element, config
|
1112
|
+
private updateEditorHandles<T>(element: Element, config: UI.InplaceEditor.Config<T>): void {
|
1108
1113
|
const editorHandles = UI.InplaceEditor.InplaceEditor.startEditing(element, config);
|
1109
1114
|
if (!editorHandles) {
|
1110
1115
|
this.editing = null;
|
@@ -1241,7 +1246,12 @@ export class ElementsTreeElement extends UI.TreeOutline.TreeElement {
|
|
1241
1246
|
}
|
1242
1247
|
|
1243
1248
|
private attributeEditingCommitted(
|
1244
|
-
element: Element,
|
1249
|
+
element: Element,
|
1250
|
+
newText: string,
|
1251
|
+
oldText: string|null,
|
1252
|
+
attributeName: string|null,
|
1253
|
+
moveDirection: string,
|
1254
|
+
): void {
|
1245
1255
|
this.editing = null;
|
1246
1256
|
|
1247
1257
|
const treeOutline = this.treeOutline;
|
@@ -1305,7 +1315,7 @@ export class ElementsTreeElement extends UI.TreeOutline.TreeElement {
|
|
1305
1315
|
}
|
1306
1316
|
}
|
1307
1317
|
|
1308
|
-
if ((attributeName.trim() || newText.trim()) && oldText !== newText) {
|
1318
|
+
if (attributeName !== null && (attributeName.trim() || newText.trim()) && oldText !== newText) {
|
1309
1319
|
this.nodeInternal.setAttribute(attributeName, newText, moveToNextAttributeIfNeeded.bind(this));
|
1310
1320
|
return;
|
1311
1321
|
}
|
@@ -1315,7 +1325,12 @@ export class ElementsTreeElement extends UI.TreeOutline.TreeElement {
|
|
1315
1325
|
}
|
1316
1326
|
|
1317
1327
|
private tagNameEditingCommitted(
|
1318
|
-
element: Element,
|
1328
|
+
element: Element,
|
1329
|
+
newText: string,
|
1330
|
+
oldText: string|null,
|
1331
|
+
tagName: string|null,
|
1332
|
+
moveDirection: string,
|
1333
|
+
): void {
|
1319
1334
|
this.editing = null;
|
1320
1335
|
const self = this;
|
1321
1336
|
|
@@ -2267,9 +2282,7 @@ export class ElementsTreeElement extends UI.TreeOutline.TreeElement {
|
|
2267
2282
|
false;
|
2268
2283
|
|
2269
2284
|
const containerType = styles.get('container-type');
|
2270
|
-
const
|
2271
|
-
const isContainer =
|
2272
|
-
SDK.CSSContainerQuery.getQueryAxis(`${containerType} ${contain}`) !== SDK.CSSContainerQuery.QueryAxis.NONE;
|
2285
|
+
const isContainer = containerType && containerType !== '' && containerType !== 'normal';
|
2273
2286
|
|
2274
2287
|
if (isGrid) {
|
2275
2288
|
this.pushGridAdorner(this.tagTypeContext, isSubgrid);
|
@@ -428,7 +428,7 @@ export class MetricsSidebarPane extends ElementsSidebarPane {
|
|
428
428
|
}
|
429
429
|
|
430
430
|
private applyUserInput(
|
431
|
-
element: Element, userInput: string, previousContent: string, context: {
|
431
|
+
element: Element, userInput: string, previousContent: string|null, context: {
|
432
432
|
box: string,
|
433
433
|
styleProperty: string,
|
434
434
|
computedStyle: Map<string, string>,
|
@@ -519,12 +519,17 @@ export class MetricsSidebarPane extends ElementsSidebarPane {
|
|
519
519
|
}
|
520
520
|
}
|
521
521
|
|
522
|
-
private editingCommitted(
|
523
|
-
|
524
|
-
|
525
|
-
|
526
|
-
|
527
|
-
|
522
|
+
private editingCommitted(
|
523
|
+
element: Element,
|
524
|
+
userInput: string,
|
525
|
+
previousContent: string|null,
|
526
|
+
context: {
|
527
|
+
box: string,
|
528
|
+
styleProperty: string,
|
529
|
+
computedStyle: Map<string, string>,
|
530
|
+
keyDownHandler: (arg0: Event) => void,
|
531
|
+
},
|
532
|
+
): void {
|
528
533
|
this.editingEnded(element, context);
|
529
534
|
this.applyUserInput(element, userInput, previousContent, context, true);
|
530
535
|
}
|
@@ -439,6 +439,9 @@ export class ShadowMatcher extends matcherBase(ShadowMatch) {
|
|
439
439
|
return null;
|
440
440
|
}
|
441
441
|
const valueNodes = ASTUtils.siblings(ASTUtils.declValue(node));
|
442
|
+
if (valueNodes.length === 0) {
|
443
|
+
return null;
|
444
|
+
}
|
442
445
|
const valueText = matching.ast.textRange(valueNodes[0], valueNodes[valueNodes.length - 1]);
|
443
446
|
return new ShadowMatch(
|
444
447
|
valueText, node, matching.ast.propertyName === 'text-shadow' ? ShadowType.TEXT_SHADOW : ShadowType.BOX_SHADOW);
|
@@ -1303,8 +1303,13 @@ export class StylePropertiesSection {
|
|
1303
1303
|
}
|
1304
1304
|
|
1305
1305
|
private async editingMediaCommitted(
|
1306
|
-
query: SDK.CSSQuery.CSSQuery,
|
1307
|
-
|
1306
|
+
query: SDK.CSSQuery.CSSQuery,
|
1307
|
+
element: Element,
|
1308
|
+
newContent: string,
|
1309
|
+
_oldContent: string|null,
|
1310
|
+
_context: Context|undefined,
|
1311
|
+
_moveDirection: string,
|
1312
|
+
): Promise<void> {
|
1308
1313
|
this.parentPane.setEditingStyle(false);
|
1309
1314
|
this.editingMediaFinished(element);
|
1310
1315
|
|
@@ -1446,8 +1451,8 @@ export class StylePropertiesSection {
|
|
1446
1451
|
element.textContent = textContent.replace(/\s+/g, ' ').trim();
|
1447
1452
|
}
|
1448
1453
|
|
1449
|
-
const config =
|
1450
|
-
|
1454
|
+
const config = new UI.InplaceEditor.Config(
|
1455
|
+
this.editingSelectorCommitted.bind(this), this.editingSelectorCancelled.bind(this), undefined);
|
1451
1456
|
UI.InplaceEditor.InplaceEditor.startEditing(this.selectorElement, config);
|
1452
1457
|
|
1453
1458
|
const selection = element.getComponentSelection();
|
@@ -1490,8 +1495,12 @@ export class StylePropertiesSection {
|
|
1490
1495
|
}
|
1491
1496
|
|
1492
1497
|
editingSelectorCommitted(
|
1493
|
-
element: Element,
|
1494
|
-
|
1498
|
+
element: Element,
|
1499
|
+
newContent: string,
|
1500
|
+
oldContent: string|null,
|
1501
|
+
context: Context|undefined,
|
1502
|
+
moveDirection: string,
|
1503
|
+
): void {
|
1495
1504
|
this.editingSelectorEnded();
|
1496
1505
|
if (newContent) {
|
1497
1506
|
newContent = newContent.trim();
|