chrome-devtools-frontend 1.0.1664496 → 1.0.1665921
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/.agents/skills/devtools-testing-guidance/SKILL.md +48 -0
- package/.agents/skills/devtools-ux-writing-refactor/SKILL.md +3 -3
- package/.agents/skills/repro-flaky-tests/SKILL.md +2 -2
- package/.agents/skills/ui-eng-vision-local-lit-renderer/SKILL.md +7 -1
- package/.agents/skills/ui-eng-vision-widget-promoter/SKILL.md +2 -0
- package/.agents/skills/version-control/SKILL.md +4 -3
- package/docs/ui_engineering.md +89 -0
- package/eslint.config.mjs +9 -2
- package/front_end/Images/rollup.config.mjs +1 -1
- package/front_end/Tests.js +15 -16
- package/front_end/core/common/Gzip.ts +2 -2
- package/front_end/core/common/Settings.ts +4 -20
- package/front_end/core/common/Srcset.ts +1 -1
- package/front_end/core/common/VersionController.ts +1 -1
- package/front_end/core/host/AidaClient.ts +19 -4
- package/front_end/core/host/AidaGcaTranslation.ts +2 -2
- package/front_end/core/host/GcaClient.ts +2 -2
- package/front_end/core/host/GdpClient.ts +3 -3
- package/front_end/core/host/InspectorFrontendHostStub.ts +1 -1
- package/front_end/core/host/ResourceLoader.ts +15 -15
- package/front_end/core/protocol_client/DevToolsCDPConnection.ts +2 -2
- package/front_end/core/protocol_client/InspectorBackend.ts +1 -1
- package/front_end/core/root/Runtime.ts +0 -1
- package/front_end/core/sdk/CSSMatchedStyles.ts +78 -3
- package/front_end/core/sdk/CSSMetadata.ts +17 -12
- package/front_end/core/sdk/CSSProperty.ts +1 -1
- package/front_end/core/sdk/CSSPropertyParserMatchers.ts +2 -2
- package/front_end/core/sdk/CSSRule.ts +3 -3
- package/front_end/core/sdk/CSSStyleSheetHeader.ts +3 -3
- package/front_end/core/sdk/CompilerSourceMappingContentProvider.ts +1 -1
- package/front_end/core/sdk/Connections.ts +1 -1
- package/front_end/core/sdk/DebuggerModel.ts +13 -13
- package/front_end/core/sdk/NetworkManager.ts +19 -19
- package/front_end/core/sdk/NetworkRequest.ts +57 -57
- package/front_end/core/sdk/OverlayModel.ts +1 -1
- package/front_end/core/sdk/PageResourceLoader.ts +2 -2
- package/front_end/core/sdk/RehydratingConnection.ts +5 -5
- package/front_end/core/sdk/ScreenCaptureModel.ts +1 -1
- package/front_end/core/sdk/Script.ts +2 -2
- package/front_end/core/sdk/ServerTiming.ts +7 -7
- package/front_end/core/sdk/ServiceWorkerCacheModel.ts +1 -1
- package/front_end/core/sdk/ServiceWorkerManager.ts +11 -11
- package/front_end/core/sdk/SourceMapScopeChainEntry.ts +2 -2
- package/front_end/core/sdk/SourceMapScopesInfo.ts +1 -1
- package/front_end/core/sdk/StorageKeyManager.ts +1 -1
- package/front_end/core/sdk/sdk-meta.ts +98 -98
- package/front_end/devtools_compatibility.js +15 -13
- package/front_end/entrypoints/heap_snapshot_worker/HeapSnapshot.ts +4 -8
- package/front_end/entrypoints/main/MainImpl.ts +2 -3
- package/front_end/entrypoints/main/main-meta.ts +1 -16
- package/front_end/entrypoints/shell/shell.ts +1 -0
- package/front_end/entrypoints/trace_app/trace_app.ts +1 -0
- package/front_end/foundation/README.md +1 -1
- package/front_end/foundation/Universe.test.api.ts +73 -0
- package/front_end/foundation/Universe.ts +22 -0
- package/front_end/generated/InspectorBackendCommands.ts +2 -2
- package/front_end/generated/SupportedCSSProperties.js +1 -1
- package/front_end/generated/protocol.ts +19 -0
- package/front_end/models/ai_assistance/AiAgent2.ts +1 -1
- package/front_end/models/ai_assistance/AiConversation.ts +1 -1
- package/front_end/models/ai_assistance/BuiltInAi.ts +1 -1
- package/front_end/models/ai_assistance/ChangeManager.ts +0 -70
- package/front_end/models/ai_assistance/ExtensionScope.ts +2 -36
- package/front_end/models/ai_assistance/agents/AccessibilityAgent.ts +9 -9
- package/front_end/models/ai_assistance/agents/AiAgent.ts +10 -2
- package/front_end/models/ai_assistance/agents/ContextSelectionAgent.ts +4 -4
- package/front_end/models/ai_assistance/agents/ExecuteJavascript.ts +1 -1
- package/front_end/models/ai_assistance/agents/PerformanceAgent.ts +21 -21
- package/front_end/models/ai_assistance/agents/StorageAgent.ts +4 -4
- package/front_end/models/ai_assistance/agents/StylingAgent.ts +1 -1
- package/front_end/models/ai_assistance/ai_assistance.ts +0 -5
- package/front_end/models/ai_assistance/data_formatters/FileFormatter.ts +11 -4
- package/front_end/models/ai_assistance/data_formatters/NetworkRequestFormatter.ts +8 -2
- package/front_end/models/ai_assistance/data_formatters/PerformanceInsightFormatter.ts +14 -11
- package/front_end/models/ai_assistance/data_formatters/PerformanceTraceFormatter.ts +2 -2
- package/front_end/models/ai_assistance/performance/AICallTree.ts +2 -2
- package/front_end/models/ai_assistance/tools/ExecuteJavaScript.ts +1 -1
- package/front_end/models/ai_assistance/tools/GetNetworkRequestDetails.ts +9 -2
- package/front_end/models/ai_assistance/tools/GetStyles.ts +4 -4
- package/front_end/models/ai_assistance/tools/ListNetworkRequests.ts +2 -5
- package/front_end/models/ai_code_completion/AiCodeCompletion.ts +2 -2
- package/front_end/models/ai_code_generation/AiCodeGeneration.ts +2 -2
- package/front_end/models/badges/badges-meta.ts +27 -0
- package/front_end/models/bindings/CSSWorkspaceBinding.ts +4 -3
- package/front_end/models/bindings/ContentProviderBasedProject.ts +1 -1
- package/front_end/models/bindings/DebuggerLanguagePlugins.ts +6 -7
- package/front_end/models/bindings/DebuggerWorkspaceBinding.ts +5 -4
- package/front_end/models/bindings/PresentationConsoleMessageHelper.ts +72 -29
- package/front_end/models/bindings/ResourceMapping.ts +38 -32
- package/front_end/models/bindings/ResourceScriptMapping.ts +5 -7
- package/front_end/models/breakpoints/BreakpointManager.ts +2 -1
- package/front_end/models/har/Writer.ts +2 -2
- package/front_end/models/issues_manager/ElementAccessibilityIssue.ts +1 -1
- package/front_end/models/issues_manager/GenericIssue.ts +1 -1
- package/front_end/models/issues_manager/IssuesManager.ts +14 -5
- package/front_end/models/issues_manager/PartitioningBlobURLIssue.ts +1 -1
- package/front_end/models/issues_manager/SRIMessageSignatureIssue.ts +2 -2
- package/front_end/models/issues_manager/SourceFrameIssuesManager.ts +13 -2
- package/front_end/models/issues_manager/issues_manager.ts +0 -2
- package/front_end/models/live-metrics/LiveMetrics.ts +22 -5
- package/front_end/models/live-metrics/web-vitals-injected/rollup.config.mjs +1 -1
- package/front_end/models/live-metrics/web-vitals-injected/spec/spec.ts +10 -4
- package/front_end/models/logs/logs-meta.ts +23 -16
- package/front_end/models/persistence/AutomaticFileSystemWorkspaceBinding.ts +2 -2
- package/front_end/models/persistence/IsolatedFileSystem.ts +1 -1
- package/front_end/models/persistence/IsolatedFileSystemManager.ts +1 -1
- package/front_end/models/source_map_scopes/NamesResolver.ts +104 -86
- package/front_end/models/source_map_scopes/ScopeChainModel.ts +6 -2
- package/front_end/models/stack_trace/StackTraceModel.ts +1 -1
- package/front_end/models/trace/handlers/ExtensionTraceDataHandler.ts +1 -1
- package/front_end/models/trace/handlers/UserTimingsHandler.ts +17 -6
- package/front_end/models/trace/helpers/SamplesIntegrator.ts +1 -1
- package/front_end/models/trace/helpers/Timing.ts +1 -1
- package/front_end/models/trace/insights/Common.ts +1 -1
- package/front_end/models/trace/insights/DocumentLatency.ts +3 -3
- package/front_end/models/trace/insights/LCPDiscovery.ts +1 -1
- package/front_end/models/trace/insights/ModernHTTP.ts +1 -1
- package/front_end/models/trace_source_maps_resolver/SourceMapsResolver.ts +2 -2
- package/front_end/models/workspace_diff/WorkspaceDiff.ts +14 -9
- package/front_end/panels/ai_assistance/AiAssistancePanel.ts +2 -15
- package/front_end/panels/ai_assistance/ai_assistance.ts +1 -2
- package/front_end/panels/ai_assistance/components/ChatInput.ts +23 -19
- package/front_end/panels/ai_assistance/components/ChatMessage.ts +9 -18
- package/front_end/panels/ai_assistance/components/ChatView.ts +2 -35
- package/front_end/panels/ai_assistance/components/DisabledWidget.ts +1 -1
- package/front_end/panels/ai_assistance/components/ExploreWidget.ts +4 -4
- package/front_end/panels/ai_assistance/components/ImageResize.ts +74 -0
- package/front_end/panels/ai_assistance/components/WalkthroughView.ts +2 -2
- package/front_end/panels/animation/AnimationGroupPreviewUI.ts +28 -29
- package/front_end/panels/animation/AnimationTimeline.ts +3 -3
- package/front_end/panels/animation/animationTimeline.css +0 -2
- package/front_end/panels/application/AppManifestView.ts +1 -1
- package/front_end/panels/application/ApplicationPanelSidebar.ts +1 -1
- package/front_end/panels/application/CookieItemsView.ts +1 -1
- package/front_end/panels/application/CrashReportContextView.ts +3 -3
- package/front_end/panels/application/DeviceBoundSessionsModel.ts +1 -1
- package/front_end/panels/application/DeviceBoundSessionsTreeElement.ts +1 -1
- package/front_end/panels/application/DeviceBoundSessionsView.ts +1 -1
- package/front_end/panels/application/IndexedDBViews.ts +1 -1
- package/front_end/panels/application/KeyValueStorageItemsView.ts +1 -1
- package/front_end/panels/application/OriginTrialTreeView.ts +1 -1
- package/front_end/panels/application/ServiceWorkersView.ts +6 -6
- package/front_end/panels/application/StorageBucketsTreeElement.ts +1 -1
- package/front_end/panels/application/StorageItemsToolbar.ts +3 -3
- package/front_end/panels/application/WebMCPView.ts +7 -5
- package/front_end/panels/application/components/AdsView.ts +21 -6
- package/front_end/panels/application/components/BackForwardCacheView.ts +2 -2
- package/front_end/panels/application/components/ProtocolHandlersView.ts +1 -1
- package/front_end/panels/application/components/StorageMetadataView.ts +1 -1
- package/front_end/panels/application/preloading/components/MismatchedPreloadingGrid.ts +2 -2
- package/front_end/panels/application/preloading/components/PreloadingDetailsReportView.ts +2 -1
- package/front_end/panels/application/preloading/components/PreloadingString.ts +3 -3
- package/front_end/panels/application/preloading/components/UsedPreloadingView.ts +2 -1
- package/front_end/panels/autofill/AutofillView.ts +1 -1
- package/front_end/panels/browser_debugger/DOMBreakpointsSidebarPane.ts +1 -1
- package/front_end/panels/browser_debugger/XHRBreakpointsSidebarPane.ts +2 -2
- package/front_end/panels/changes/ChangesSidebar.ts +2 -2
- package/front_end/panels/changes/ChangesView.ts +4 -5
- package/front_end/panels/changes/CombinedDiffView.ts +3 -3
- package/front_end/panels/changes/changes-meta.ts +2 -2
- package/front_end/panels/common/AiCodeCompletionTeaser.ts +1 -1
- package/front_end/panels/common/AiCodeGenerationTeaser.ts +3 -3
- package/front_end/panels/common/BadgeNotification.ts +8 -8
- package/front_end/panels/common/DOMLinkifier.ts +1 -1
- package/front_end/panels/common/GdpSignUpDialog.ts +2 -2
- package/front_end/panels/common/GeminiRebrandPromoDialog.ts +1 -1
- package/front_end/panels/common/aiCodeCompletionDisclaimer.css +0 -1
- package/front_end/panels/console/ConsoleInsightTeaser.ts +1 -1
- package/front_end/panels/console/ConsolePinPane.ts +3 -3
- package/front_end/panels/console/ConsolePrompt.ts +6 -4
- package/front_end/panels/console/ConsoleSidebar.ts +8 -10
- package/front_end/panels/console_counters/WarningErrorCounter.ts +10 -11
- package/front_end/panels/coverage/CoverageView.ts +2 -2
- package/front_end/panels/css_overview/CSSOverviewCompletedView.ts +3 -3
- package/front_end/panels/css_overview/CSSOverviewSidebarPanel.ts +1 -1
- package/front_end/panels/developer_resources/DeveloperResourcesView.ts +1 -1
- package/front_end/panels/elements/CSSRuleValidator.ts +1 -1
- package/front_end/panels/elements/ComputedStyleWidget.ts +3 -2
- package/front_end/panels/elements/ElementsTreeElement.ts +3 -3
- package/front_end/panels/elements/EventListenersWidget.ts +1 -3
- package/front_end/panels/elements/LayoutPane.ts +23 -13
- package/front_end/panels/elements/StandaloneStylesContainer.ts +7 -7
- package/front_end/panels/elements/StylePropertiesSection.ts +33 -5
- package/front_end/panels/elements/StylePropertyTreeElement.ts +5 -5
- package/front_end/panels/elements/StylesAiCodeCompletionProvider.ts +6 -6
- package/front_end/panels/elements/StylesSidebarPane.ts +4 -3
- package/front_end/panels/elements/elements-meta.ts +18 -2
- package/front_end/panels/emulation/DeviceModeToolbar.ts +100 -40
- package/front_end/panels/emulation/DeviceModeView.ts +5 -4
- package/front_end/panels/emulation/MediaQueryInspector.ts +35 -19
- package/front_end/panels/event_listeners/EventListenersView.ts +4 -4
- package/front_end/panels/explain/components/ConsoleInsight.ts +8 -9
- package/front_end/panels/explain/explain-meta.ts +3 -3
- package/front_end/panels/layer_viewer/LayerTreeOutline.ts +135 -167
- package/front_end/panels/layer_viewer/Layers3DView.ts +10 -23
- package/front_end/panels/layer_viewer/layer_viewer-meta.ts +27 -0
- package/front_end/panels/lighthouse/LighthouseController.ts +44 -55
- package/front_end/panels/lighthouse/LighthousePanel.ts +9 -9
- package/front_end/panels/lighthouse/LighthouseReportSelector.ts +2 -2
- package/front_end/panels/lighthouse/LighthouseStartView.ts +9 -12
- package/front_end/panels/lighthouse/LighthouseStatusView.ts +33 -33
- package/front_end/panels/lighthouse/RadioSetting.ts +1 -1
- package/front_end/panels/lighthouse/lighthouse-meta.ts +131 -1
- package/front_end/panels/media/EventDisplayTable.ts +67 -94
- package/front_end/panels/media/PlayerListView.ts +1 -1
- package/front_end/panels/media/eventDisplayTable.css +9 -4
- package/front_end/panels/mobile_throttling/NetworkThrottlingSelector.ts +5 -5
- package/front_end/panels/mobile_throttling/ThrottlingSettingsTab.ts +1 -1
- package/front_end/panels/network/EventSourceMessagesView.ts +98 -107
- package/front_end/panels/network/NetworkLogViewColumns.ts +1 -1
- package/front_end/panels/network/NetworkWaterfallColumn.ts +1 -1
- package/front_end/panels/network/RequestConditionsDrawer.ts +2 -2
- package/front_end/panels/network/RequestCookiesView.ts +2 -2
- package/front_end/panels/network/RequestHeadersView.ts +5 -5
- package/front_end/panels/network/RequestPayloadView.ts +4 -4
- package/front_end/panels/network/RequestTimingView.ts +2 -2
- package/front_end/panels/network/components/DirectSocketConnectionView.ts +1 -1
- package/front_end/panels/network/eventSourceMessagesView.css +12 -3
- package/front_end/panels/network/networkTimingTable.css +2 -2
- package/front_end/panels/performance_monitor/PerformanceMonitor.ts +1 -1
- package/front_end/panels/profiler/BottomUpProfileDataGrid.ts +25 -29
- package/front_end/panels/profiler/HeapProfileView.ts +308 -247
- package/front_end/panels/profiler/HeapSnapshotDataGrids.ts +13 -3
- package/front_end/panels/profiler/HeapSnapshotView.ts +30 -10
- package/front_end/panels/profiler/HeapTimelineOverview.ts +5 -2
- package/front_end/panels/profiler/ProfileDataGrid.ts +128 -157
- package/front_end/panels/profiler/ProfileFlameChartDataProvider.ts +17 -5
- package/front_end/panels/profiler/ProfilesPanel.ts +2 -2
- package/front_end/panels/profiler/TopDownProfileDataGrid.ts +17 -21
- package/front_end/panels/profiler/profilesPanel.css +9 -13
- package/front_end/panels/protocol_monitor/ProtocolMonitor.ts +2 -2
- package/front_end/panels/recorder/CreateRecordingView.ts +4 -4
- package/front_end/panels/recorder/RecorderPanel.ts +6 -6
- package/front_end/panels/recorder/RecordingView.ts +1 -1
- package/front_end/panels/recorder/ReplaySection.ts +1 -1
- package/front_end/panels/recorder/StepView.ts +1 -1
- package/front_end/panels/recorder/injected/rollup.config.mjs +1 -1
- package/front_end/panels/search/SearchView.ts +1 -1
- package/front_end/panels/security/SecurityPanel.ts +54 -41
- package/front_end/panels/sensors/LocationsSettingsTab.ts +246 -233
- package/front_end/panels/sensors/SensorsView.ts +1 -1
- package/front_end/panels/settings/AISettingsTab.ts +11 -10
- package/front_end/panels/settings/SettingsScreen.ts +29 -24
- package/front_end/panels/settings/emulation/components/UserAgentClientHintsForm.ts +2 -2
- package/front_end/panels/sources/AiCodeCompletionPlugin.ts +5 -5
- package/front_end/panels/sources/BreakpointEditDialog.ts +2 -2
- package/front_end/panels/sources/BreakpointsView.ts +1 -1
- package/front_end/panels/sources/CallStackSidebarPane.ts +2 -2
- package/front_end/panels/sources/DebuggerPausedMessage.ts +2 -2
- package/front_end/panels/sources/DebuggerPlugin.ts +25 -22
- package/front_end/panels/sources/ScopeChainSidebarPane.ts +3 -1
- package/front_end/panels/sources/WatchExpressionsSidebarPane.ts +7 -5
- package/front_end/panels/sources/sources-meta.ts +1 -1
- package/front_end/panels/timeline/CountersGraph.ts +1 -2
- package/front_end/panels/timeline/ExtensionTrackAppender.ts +1 -1
- package/front_end/panels/timeline/TimelineDetailsView.ts +2 -2
- package/front_end/panels/timeline/TimelineFlameChartDataProvider.ts +2 -2
- package/front_end/panels/timeline/TimelineFlameChartView.ts +4 -4
- package/front_end/panels/timeline/TimelinePaintProfilerView.ts +1 -1
- package/front_end/panels/timeline/TimelinePanel.ts +53 -81
- package/front_end/panels/timeline/TimelineSelectorStatsView.ts +10 -3
- package/front_end/panels/timeline/TimelineUIUtils.ts +18 -4
- package/front_end/panels/timeline/TrackConfigBanner.ts +1 -1
- package/front_end/panels/timeline/components/ExportTraceOptions.ts +1 -1
- package/front_end/panels/timeline/components/LayoutShiftDetails.ts +8 -9
- package/front_end/panels/timeline/components/NetworkRequestTooltip.ts +1 -1
- package/front_end/panels/timeline/components/TimelineRangeSummaryView.ts +1 -1
- package/front_end/panels/timeline/components/insights/DuplicatedJavaScript.ts +2 -2
- package/front_end/panels/timeline/components/insights/LCPBreakdown.ts +1 -1
- package/front_end/panels/timeline/components/insights/LegacyJavaScript.ts +1 -1
- package/front_end/panels/timeline/components/insights/SlowCSSSelector.ts +2 -2
- package/front_end/panels/timeline/overlays/OverlaysImpl.ts +5 -0
- package/front_end/panels/timeline/overlays/components/TimespanBreakdownOverlay.ts +13 -8
- package/front_end/panels/timeline/overlays/components/timespanBreakdownOverlay.css +1 -0
- package/front_end/panels/timeline/timeline-meta.ts +169 -0
- package/front_end/panels/timeline/timelineFlameChartView.css +5 -0
- package/front_end/panels/webauthn/WebauthnPane.ts +1 -1
- package/front_end/panels/whats_new/ReleaseNoteText.ts +9 -9
- package/front_end/panels/whats_new/resources/WNDT.md +7 -8
- package/front_end/third_party/chromium/README.chromium +1 -1
- package/front_end/third_party/web-vitals/README.chromium +2 -2
- package/front_end/third_party/web-vitals/package/README.md +120 -19
- package/front_end/third_party/web-vitals/package/attribution.d.ts +16 -0
- package/front_end/third_party/web-vitals/package/attribution.js +18 -0
- package/front_end/third_party/web-vitals/package/dist/modules/attribution/onCLS.d.ts +1 -1
- package/front_end/third_party/web-vitals/package/dist/modules/attribution/onFCP.d.ts +1 -7
- package/front_end/third_party/web-vitals/package/dist/modules/attribution/onFCP.js +53 -32
- package/front_end/third_party/web-vitals/package/dist/modules/attribution/onINP.d.ts +2 -2
- package/front_end/third_party/web-vitals/package/dist/modules/attribution/onINP.js +43 -12
- package/front_end/third_party/web-vitals/package/dist/modules/attribution/onLCP.d.ts +1 -1
- package/front_end/third_party/web-vitals/package/dist/modules/attribution/onLCP.js +21 -3
- package/front_end/third_party/web-vitals/package/dist/modules/attribution/onTTFB.d.ts +1 -1
- package/front_end/third_party/web-vitals/package/dist/modules/attribution/onTTFB.js +30 -24
- package/front_end/third_party/web-vitals/package/dist/modules/lib/FCPEntryManager.d.ts +3 -0
- package/front_end/third_party/web-vitals/package/dist/modules/lib/FCPEntryManager.js +18 -0
- package/front_end/third_party/web-vitals/package/dist/modules/lib/InteractionManager.d.ts +2 -1
- package/front_end/third_party/web-vitals/package/dist/modules/lib/InteractionManager.js +18 -2
- package/front_end/third_party/web-vitals/package/dist/modules/lib/LCPEntryManager.d.ts +1 -0
- package/front_end/third_party/web-vitals/package/dist/modules/lib/LCPEntryManager.js +1 -0
- package/front_end/third_party/web-vitals/package/dist/modules/lib/bindReporter.d.ts +1 -1
- package/front_end/third_party/web-vitals/package/dist/modules/lib/generateUniqueID.js +1 -1
- package/front_end/third_party/web-vitals/package/dist/modules/lib/getLoadState.d.ts +1 -1
- package/front_end/third_party/web-vitals/package/dist/modules/lib/getLoadState.js +7 -7
- package/front_end/third_party/web-vitals/package/dist/modules/lib/getSelector.js +1 -1
- package/front_end/third_party/web-vitals/package/dist/modules/lib/getVisibilityWatcher.d.ts +1 -1
- package/front_end/third_party/web-vitals/package/dist/modules/lib/getVisibilityWatcher.js +4 -1
- package/front_end/third_party/web-vitals/package/dist/modules/lib/initMetric.d.ts +7 -3
- package/front_end/third_party/web-vitals/package/dist/modules/lib/initMetric.js +20 -11
- package/front_end/third_party/web-vitals/package/dist/modules/lib/initUnique.js +8 -3
- package/front_end/third_party/web-vitals/package/dist/modules/lib/observe.d.ts +3 -1
- package/front_end/third_party/web-vitals/package/dist/modules/lib/observe.js +19 -4
- package/front_end/third_party/web-vitals/package/dist/modules/lib/polyfills/interactionCountPolyfill.js +1 -1
- package/front_end/third_party/web-vitals/package/dist/modules/lib/softNavs.d.ts +3 -0
- package/front_end/third_party/web-vitals/package/dist/modules/lib/softNavs.js +38 -0
- package/front_end/third_party/web-vitals/package/dist/modules/lib/whenIdleOrHidden.js +5 -1
- package/front_end/third_party/web-vitals/package/dist/modules/onCLS.d.ts +1 -1
- package/front_end/third_party/web-vitals/package/dist/modules/onCLS.js +30 -11
- package/front_end/third_party/web-vitals/package/dist/modules/onFCP.d.ts +1 -1
- package/front_end/third_party/web-vitals/package/dist/modules/onFCP.js +36 -4
- package/front_end/third_party/web-vitals/package/dist/modules/onINP.d.ts +1 -1
- package/front_end/third_party/web-vitals/package/dist/modules/onINP.js +42 -22
- package/front_end/third_party/web-vitals/package/dist/modules/onLCP.d.ts +1 -1
- package/front_end/third_party/web-vitals/package/dist/modules/onLCP.js +109 -30
- package/front_end/third_party/web-vitals/package/dist/modules/onTTFB.d.ts +1 -1
- package/front_end/third_party/web-vitals/package/dist/modules/onTTFB.js +25 -7
- package/front_end/third_party/web-vitals/package/dist/modules/types/base.d.ts +24 -1
- package/front_end/third_party/web-vitals/package/dist/modules/types/fcp.d.ts +1 -1
- package/front_end/third_party/web-vitals/package/dist/modules/types/inp.d.ts +14 -6
- package/front_end/third_party/web-vitals/package/dist/modules/types/lcp.d.ts +1 -1
- package/front_end/third_party/web-vitals/package/dist/modules/types/ttfb.d.ts +2 -2
- package/front_end/third_party/web-vitals/package/dist/modules/types.d.ts +26 -4
- package/front_end/third_party/web-vitals/package/package.json +21 -22
- package/front_end/third_party/web-vitals/package/src/attribution/onCLS.ts +1 -1
- package/front_end/third_party/web-vitals/package/src/attribution/onFCP.ts +62 -39
- package/front_end/third_party/web-vitals/package/src/attribution/onINP.ts +52 -15
- package/front_end/third_party/web-vitals/package/src/attribution/onLCP.ts +25 -7
- package/front_end/third_party/web-vitals/package/src/attribution/onTTFB.ts +43 -37
- package/front_end/third_party/web-vitals/package/src/lib/{polyfills/getFirstHiddenTimePolyfill.ts → FCPEntryManager.ts} +4 -14
- package/front_end/third_party/web-vitals/package/src/lib/InteractionManager.ts +22 -2
- package/front_end/third_party/web-vitals/package/src/lib/LCPEntryManager.ts +1 -0
- package/front_end/third_party/web-vitals/package/src/lib/bindReporter.ts +1 -1
- package/front_end/third_party/web-vitals/package/src/lib/generateUniqueID.ts +1 -1
- package/front_end/third_party/web-vitals/package/src/lib/getLoadState.ts +11 -12
- package/front_end/third_party/web-vitals/package/src/lib/getSelector.ts +1 -1
- package/front_end/third_party/web-vitals/package/src/lib/getVisibilityWatcher.ts +4 -1
- package/front_end/third_party/web-vitals/package/src/lib/initMetric.ts +24 -11
- package/front_end/third_party/web-vitals/package/src/lib/initUnique.ts +12 -4
- package/front_end/third_party/web-vitals/package/src/lib/observe.ts +26 -5
- package/front_end/third_party/web-vitals/package/src/lib/polyfills/interactionCountPolyfill.ts +1 -1
- package/front_end/third_party/web-vitals/package/src/lib/softNavs.ts +48 -0
- package/front_end/third_party/web-vitals/package/src/lib/whenIdleOrHidden.ts +12 -4
- package/front_end/third_party/web-vitals/package/src/onCLS.ts +75 -18
- package/front_end/third_party/web-vitals/package/src/onFCP.ts +66 -7
- package/front_end/third_party/web-vitals/package/src/onINP.ts +100 -39
- package/front_end/third_party/web-vitals/package/src/onLCP.ts +169 -34
- package/front_end/third_party/web-vitals/package/src/onTTFB.ts +50 -13
- package/front_end/third_party/web-vitals/package/src/types/base.ts +31 -10
- package/front_end/third_party/web-vitals/package/src/types/fcp.ts +1 -1
- package/front_end/third_party/web-vitals/package/src/types/inp.ts +14 -6
- package/front_end/third_party/web-vitals/package/src/types/lcp.ts +1 -1
- package/front_end/third_party/web-vitals/package/src/types/ttfb.ts +2 -2
- package/front_end/third_party/web-vitals/package/src/types.ts +32 -9
- package/front_end/third_party/web-vitals/patches/0001-Add-onEachInteraction-to-onINP-options.patch +11 -11
- package/front_end/third_party/web-vitals/rebuild.sh +2 -2
- package/front_end/third_party/web-vitals/web-vitals-tsconfig.json +2 -0
- package/front_end/ui/components/buttons/Button.ts +16 -0
- package/front_end/ui/components/dialogs/Dialog.ts +1 -1
- package/front_end/ui/components/highlighting/HighlightManager.ts +6 -1
- package/front_end/ui/components/highlighting/highlighting.ts +1 -1
- package/front_end/ui/components/icon_button/FileSourceIcon.ts +1 -1
- package/front_end/ui/components/linkifier/LinkifierImpl.ts +1 -1
- package/front_end/ui/components/markdown_view/MarkdownLinksMap.ts +2 -2
- package/front_end/ui/components/settings/SettingCheckbox.ts +12 -7
- package/front_end/ui/components/text_editor/AiCodeCompletionProvider.ts +2 -2
- package/front_end/ui/components/text_editor/AiCodeGenerationProvider.ts +6 -6
- package/front_end/ui/components/text_editor/javascript.ts +3 -1
- package/front_end/ui/components/tooltips/Tooltip.ts +1 -1
- package/front_end/ui/legacy/ContextMenu.ts +12 -2
- package/front_end/ui/legacy/ListControl.ts +1 -1
- package/front_end/ui/legacy/SelectMenu.docs.ts +17 -19
- package/front_end/ui/legacy/Toolbar.ts +4 -1
- package/front_end/ui/legacy/Treeoutline.ts +1 -1
- package/front_end/ui/legacy/components/color_picker/spectrum.css +1 -2
- package/front_end/ui/legacy/components/data_grid/DataGrid.ts +1 -1
- package/front_end/ui/legacy/components/data_grid/DataGridElement.ts +50 -4
- package/front_end/ui/legacy/components/object_ui/JavaScriptREPL.ts +3 -1
- package/front_end/ui/legacy/components/perf_ui/ChartViewport.ts +4 -4
- package/front_end/ui/legacy/components/perf_ui/FlameChart.ts +8 -7
- package/front_end/ui/legacy/components/quick_open/CommandMenu.ts +14 -11
- package/front_end/ui/legacy/components/quick_open/QuickOpen.ts +1 -1
- package/front_end/ui/legacy/components/settings_ui/SettingsUI.ts +15 -5
- package/front_end/ui/legacy/components/source_frame/SourceFrame.ts +4 -4
- package/front_end/ui/legacy/components/utils/Linkifier.ts +5 -1
- package/front_end/ui/lit/render.ts +1 -1
- package/front_end/ui/settings/SettingUIRegistration.ts +8 -3
- package/front_end/ui/visual_logging/KnownContextValues.ts +8 -0
- package/front_end/ui/visual_logging/LoggingEvents.ts +1 -1
- package/inspector_overlay/main.ts +1 -1
- package/mcp/mcp.ts +5 -4
- package/package.json +13 -13
- package/front_end/models/ai_assistance/AgentProject.ts +0 -261
- package/front_end/models/ai_assistance/agents/PatchAgent.ts +0 -306
- package/front_end/models/issues_manager/CheckFormsIssuesTrigger.ts +0 -45
- package/front_end/models/text_utils/text_utils.ts +0 -5
- package/front_end/panels/ai_assistance/PatchWidget.ts +0 -867
- package/front_end/panels/ai_assistance/SelectWorkspaceDialog.ts +0 -368
- package/front_end/panels/ai_assistance/selectWorkspaceDialog.css +0 -92
package/front_end/third_party/web-vitals/patches/0001-Add-onEachInteraction-to-onINP-options.patch
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
From
|
|
1
|
+
From e75293ce1c04be22600fa0eda58ce28cfb2fe7ab Mon Sep 17 00:00:00 2001
|
|
2
2
|
From: Barry Pollard <barrypollard@google.com>
|
|
3
|
-
Date: Tue, 21 Apr 2026
|
|
3
|
+
Date: Tue, 21 Apr 2026 14:20:47 +0100
|
|
4
4
|
Subject: [PATCH] Add onEachInteraction to onINP options
|
|
5
5
|
|
|
6
6
|
This adds an "onEachInteraction" option to onINP, which exposes to us
|
|
@@ -8,18 +8,18 @@ each interaction. It also calls attributeINP on each value given to the
|
|
|
8
8
|
callback.
|
|
9
9
|
|
|
10
10
|
---
|
|
11
|
-
src/attribution/onINP.ts |
|
|
11
|
+
src/attribution/onINP.ts | 36 +++++++++++++++++++++++++++++++++++-
|
|
12
12
|
src/types/inp.ts | 1 +
|
|
13
|
-
2 files changed,
|
|
13
|
+
2 files changed, 36 insertions(+), 1 deletion(-)
|
|
14
14
|
|
|
15
15
|
diff --git a/src/attribution/onINP.ts b/src/attribution/onINP.ts
|
|
16
|
-
index
|
|
16
|
+
index 051bc74..82e3e6e 100644
|
|
17
17
|
--- a/src/attribution/onINP.ts
|
|
18
18
|
+++ b/src/attribution/onINP.ts
|
|
19
|
-
@@ -
|
|
19
|
+
@@ -261,7 +261,41 @@ export const onINP = (
|
|
20
20
|
cleanupPending = false;
|
|
21
21
|
};
|
|
22
|
-
|
|
22
|
+
|
|
23
23
|
- interactionManager._onBeforeProcessingEntry = groupEntriesByRenderTime;
|
|
24
24
|
+ async function handleOnEachInteractionCallback(
|
|
25
25
|
+ entry: PerformanceEventTiming,
|
|
@@ -43,6 +43,7 @@ index 0d6d098..3fe5050 100644
|
|
|
43
43
|
+ rating: 'good',
|
|
44
44
|
+ value: entry.duration,
|
|
45
45
|
+ delta: entry.duration,
|
|
46
|
+
+ navigationId: (entry as any).navigationId,
|
|
46
47
|
+ navigationType: 'navigate',
|
|
47
48
|
+ id: 'N/A',
|
|
48
49
|
+ });
|
|
@@ -56,7 +57,7 @@ index 0d6d098..3fe5050 100644
|
|
|
56
57
|
+ groupEntriesByRenderTime(entry);
|
|
57
58
|
+ };
|
|
58
59
|
interactionManager._onAfterProcessingINPCandidate = saveInteractionTarget;
|
|
59
|
-
|
|
60
|
+
|
|
60
61
|
const getIntersectingLoAFs = (
|
|
61
62
|
diff --git a/src/types/inp.ts b/src/types/inp.ts
|
|
62
63
|
index 6041b2d..9b6bd2e 100644
|
|
@@ -68,8 +69,7 @@ index 6041b2d..9b6bd2e 100644
|
|
|
68
69
|
includeProcessedEventEntries?: boolean;
|
|
69
70
|
+ onEachInteraction?: (interaction: INPMetricWithAttribution) => void;
|
|
70
71
|
}
|
|
71
|
-
|
|
72
|
+
|
|
72
73
|
/**
|
|
73
|
-
--
|
|
74
|
+
--
|
|
74
75
|
2.50.1 (Apple Git-155)
|
|
75
|
-
|
|
@@ -4,8 +4,8 @@ set -euo pipefail
|
|
|
4
4
|
|
|
5
5
|
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )"
|
|
6
6
|
|
|
7
|
-
VERSION=
|
|
8
|
-
GIT_SHA=
|
|
7
|
+
VERSION=6.0.0
|
|
8
|
+
GIT_SHA=67a9ddb4cf77f8d1cb2c877ccd870b9c821aa853 # web-vitals does not tag releases.
|
|
9
9
|
|
|
10
10
|
# Note: this is just to handle updating README.chromium.
|
|
11
11
|
# For the actual sources, below we checkout the repo, apply local patches, then build with tsc.
|
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
"package/dist/modules/attribution/onLCP.js",
|
|
11
11
|
"package/dist/modules/attribution/onTTFB.js",
|
|
12
12
|
"package/dist/modules/index.js",
|
|
13
|
+
"package/dist/modules/lib/FCPEntryManager.js",
|
|
13
14
|
"package/dist/modules/lib/InteractionManager.js",
|
|
14
15
|
"package/dist/modules/lib/LCPEntryManager.js",
|
|
15
16
|
"package/dist/modules/lib/LayoutShiftManager.js",
|
|
@@ -27,6 +28,7 @@
|
|
|
27
28
|
"package/dist/modules/lib/observe.js",
|
|
28
29
|
"package/dist/modules/lib/polyfills/interactionCountPolyfill.js",
|
|
29
30
|
"package/dist/modules/lib/runOnce.js",
|
|
31
|
+
"package/dist/modules/lib/softNavs.js",
|
|
30
32
|
"package/dist/modules/lib/whenActivated.js",
|
|
31
33
|
"package/dist/modules/lib/whenIdleOrHidden.js",
|
|
32
34
|
"package/dist/modules/onCLS.js",
|
|
@@ -62,6 +62,7 @@ interface ButtonState {
|
|
|
62
62
|
jslogContext?: string;
|
|
63
63
|
longClickable?: boolean;
|
|
64
64
|
inverseColorTheme?: boolean;
|
|
65
|
+
accessibleExpanded?: boolean;
|
|
65
66
|
}
|
|
66
67
|
|
|
67
68
|
interface CommonButtonData {
|
|
@@ -87,6 +88,10 @@ interface CommonButtonData {
|
|
|
87
88
|
* Sets aria-label on the internal <button> element.
|
|
88
89
|
*/
|
|
89
90
|
accessibleLabel?: string;
|
|
91
|
+
/**
|
|
92
|
+
* Sets aria-expanded on the internal <button> element.
|
|
93
|
+
*/
|
|
94
|
+
accessibleExpanded?: boolean;
|
|
90
95
|
}
|
|
91
96
|
|
|
92
97
|
export type ButtonData = CommonButtonData&(|{
|
|
@@ -166,6 +171,7 @@ export class Button extends HTMLElement {
|
|
|
166
171
|
this.accessibleLabel = data.accessibleLabel;
|
|
167
172
|
}
|
|
168
173
|
|
|
174
|
+
this.#props.accessibleExpanded = data.accessibleExpanded;
|
|
169
175
|
this.#props.jslogContext = data.jslogContext;
|
|
170
176
|
this.#props.longClickable = data.longClickable;
|
|
171
177
|
this.#props.inverseColorTheme = data.inverseColorTheme;
|
|
@@ -211,6 +217,15 @@ export class Button extends HTMLElement {
|
|
|
211
217
|
return this.getAttribute('accessibleLabel') || undefined;
|
|
212
218
|
}
|
|
213
219
|
|
|
220
|
+
set accessibleExpanded(expanded: boolean|undefined) {
|
|
221
|
+
this.#props.accessibleExpanded = expanded;
|
|
222
|
+
this.#render();
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
get accessibleExpanded(): boolean|undefined {
|
|
226
|
+
return this.#props.accessibleExpanded;
|
|
227
|
+
}
|
|
228
|
+
|
|
214
229
|
set reducedFocusRing(reducedFocusRing: boolean) {
|
|
215
230
|
this.#props.reducedFocusRing = reducedFocusRing;
|
|
216
231
|
this.#render();
|
|
@@ -385,6 +400,7 @@ export class Button extends HTMLElement {
|
|
|
385
400
|
?disabled=${this.#props.disabled}
|
|
386
401
|
class=${classMap(classes)}
|
|
387
402
|
aria-pressed=${ifDefined(this.#props.toggled)}
|
|
403
|
+
aria-expanded=${ifDefined(this.#props.accessibleExpanded)}
|
|
388
404
|
aria-label=${ifDefined(this.accessibleLabel || this.title || undefined)}
|
|
389
405
|
jslog=${ifDefined(jslog)}>
|
|
390
406
|
${hasIcon ? html`
|
|
@@ -88,7 +88,8 @@ interface HighlightState {
|
|
|
88
88
|
currentRange?: TextUtils.TextRange.SourceRange;
|
|
89
89
|
}
|
|
90
90
|
|
|
91
|
-
let highlightManagerInstance: HighlightManager;
|
|
91
|
+
let highlightManagerInstance: HighlightManager|null;
|
|
92
|
+
|
|
92
93
|
export class HighlightManager {
|
|
93
94
|
#highlights = new Highlight();
|
|
94
95
|
#currentHighlights = new Highlight();
|
|
@@ -110,6 +111,10 @@ export class HighlightManager {
|
|
|
110
111
|
return highlightManagerInstance;
|
|
111
112
|
}
|
|
112
113
|
|
|
114
|
+
static removeInstance(): void {
|
|
115
|
+
highlightManagerInstance = null;
|
|
116
|
+
}
|
|
117
|
+
|
|
113
118
|
addHighlights(ranges: Range[]): void {
|
|
114
119
|
ranges.forEach(this.addHighlight.bind(this));
|
|
115
120
|
}
|
|
@@ -52,7 +52,7 @@ export class FileSourceIcon extends HTMLElement {
|
|
|
52
52
|
dot: Boolean(this.#hasDotBadge),
|
|
53
53
|
purple: Boolean(this.#hasDotBadge && this.#isDotPurple),
|
|
54
54
|
green: Boolean(this.#hasDotBadge && !this.#isDotPurple),
|
|
55
|
-
...(this.#contentType ? {[this.#contentType]: this.#contentType} : null)
|
|
55
|
+
...(this.#contentType ? {[this.#contentType]: this.#contentType} : null),
|
|
56
56
|
});
|
|
57
57
|
|
|
58
58
|
// clang-format off
|
|
@@ -68,14 +68,14 @@ export const markdownLinks = new Map<string, string>([
|
|
|
68
68
|
['componentParameterReq', 'https://www.rfc-editor.org/rfc/rfc9421.html#content-request-response'],
|
|
69
69
|
[
|
|
70
70
|
'unencodedDigestHeader',
|
|
71
|
-
'https://lpardue.github.io/draft-pardue-http-identity-digest/draft-pardue-httpbis-identity-digest.html'
|
|
71
|
+
'https://lpardue.github.io/draft-pardue-http-identity-digest/draft-pardue-httpbis-identity-digest.html',
|
|
72
72
|
],
|
|
73
73
|
['storagePartitioningExplainer', 'https://developers.google.com/privacy-sandbox/cookies/storage-partitioning'],
|
|
74
74
|
['storageAccessAPI', 'https://developer.mozilla.org/en-US/docs/Web/API/StorageAccessHandle/createObjectURL'],
|
|
75
75
|
['https://goo.gle/ps-status', 'https://goo.gle/ps-status'],
|
|
76
76
|
[
|
|
77
77
|
'https://privacysandbox.com/news/update-on-plans-for-privacy-sandbox-technologies/',
|
|
78
|
-
'https://privacysandbox.com/news/update-on-plans-for-privacy-sandbox-technologies/'
|
|
78
|
+
'https://privacysandbox.com/news/update-on-plans-for-privacy-sandbox-technologies/',
|
|
79
79
|
],
|
|
80
80
|
['urlPatternSpec', 'https://urlpattern.spec.whatwg.org/'],
|
|
81
81
|
[
|
|
@@ -11,6 +11,7 @@ import type * as Common from '../../../core/common/common.js';
|
|
|
11
11
|
import * as Host from '../../../core/host/host.js';
|
|
12
12
|
import * as i18n from '../../../core/i18n/i18n.js';
|
|
13
13
|
import * as Lit from '../../lit/lit.js';
|
|
14
|
+
import * as SettingUIRegistration from '../../settings/settings.js';
|
|
14
15
|
import * as VisualLogging from '../../visual_logging/visual_logging.js';
|
|
15
16
|
import * as Buttons from '../buttons/buttons.js';
|
|
16
17
|
import * as Input from '../input/input.js';
|
|
@@ -67,7 +68,8 @@ export class SettingCheckbox extends HTMLElement {
|
|
|
67
68
|
this.#setting.deprecation}></devtools-setting-deprecation-warning>`;
|
|
68
69
|
}
|
|
69
70
|
|
|
70
|
-
const
|
|
71
|
+
const uiDescriptor = SettingUIRegistration.SettingUIRegistration.maybeResolve(this.#setting.descriptor());
|
|
72
|
+
const learnMore = uiDescriptor?.learnMore ?? this.#setting.learnMore();
|
|
71
73
|
if (learnMore) {
|
|
72
74
|
const jsLogContext = `${this.#setting.name}-documentation`;
|
|
73
75
|
const data: Buttons.Button.ButtonData = {
|
|
@@ -136,8 +138,12 @@ export class SettingCheckbox extends HTMLElement {
|
|
|
136
138
|
throw new Error('No "Setting" object provided for rendering');
|
|
137
139
|
}
|
|
138
140
|
|
|
141
|
+
const uiDescriptor = SettingUIRegistration.SettingUIRegistration.maybeResolve(this.#setting.descriptor());
|
|
142
|
+
const learnMore = uiDescriptor?.learnMore ?? this.#setting.learnMore();
|
|
143
|
+
const titleText = uiDescriptor?.title?.() ?? this.#setting.title();
|
|
144
|
+
|
|
139
145
|
const icon = this.icon();
|
|
140
|
-
const title =
|
|
146
|
+
const title = learnMore?.tooltip?.() ?? '';
|
|
141
147
|
const disabledReasons = this.#setting.disabledReasons();
|
|
142
148
|
const reason = disabledReasons.length ?
|
|
143
149
|
html`
|
|
@@ -146,8 +152,7 @@ export class SettingCheckbox extends HTMLElement {
|
|
|
146
152
|
onclick}></devtools-button>
|
|
147
153
|
` :
|
|
148
154
|
Lit.nothing;
|
|
149
|
-
Lit.render(
|
|
150
|
-
html`
|
|
155
|
+
Lit.render(html`
|
|
151
156
|
<style>${Input.checkboxStyles}</style>
|
|
152
157
|
<style>${settingCheckboxStyles}</style>
|
|
153
158
|
<p>
|
|
@@ -158,13 +163,13 @@ export class SettingCheckbox extends HTMLElement {
|
|
|
158
163
|
?disabled=${this.#setting.disabled()}
|
|
159
164
|
@change=${this.#checkboxChanged}
|
|
160
165
|
jslog=${VisualLogging.toggle().track({change: true}).context(this.#setting.name)}
|
|
161
|
-
aria-label=${
|
|
166
|
+
aria-label=${titleText}
|
|
162
167
|
/>
|
|
163
|
-
${this.#textOverride ||
|
|
168
|
+
${this.#textOverride || titleText}${reason}
|
|
164
169
|
</label>
|
|
165
170
|
${icon}
|
|
166
171
|
</p>`,
|
|
167
|
-
|
|
172
|
+
this.#shadow, {host: this});
|
|
168
173
|
}
|
|
169
174
|
|
|
170
175
|
#checkboxChanged(e: Event): void {
|
|
@@ -374,7 +374,7 @@ export class AiCodeCompletionProvider {
|
|
|
374
374
|
clearCachedRequest: this.clearCache.bind(this),
|
|
375
375
|
onImpression: this.#aiCodeCompletion?.registerUserImpression.bind(this.#aiCodeCompletion),
|
|
376
376
|
source: AiSuggestionSource.COMPLETION,
|
|
377
|
-
})
|
|
377
|
+
}),
|
|
378
378
|
});
|
|
379
379
|
}
|
|
380
380
|
if (fromCache) {
|
|
@@ -580,7 +580,7 @@ function aiCodeCompletionTeaserExtension(teaser: PanelCommon.AiCodeCompletionTea
|
|
|
580
580
|
return true;
|
|
581
581
|
}
|
|
582
582
|
return false;
|
|
583
|
-
}
|
|
583
|
+
},
|
|
584
584
|
},
|
|
585
585
|
});
|
|
586
586
|
}
|
|
@@ -206,8 +206,8 @@ export class AiCodeGenerationProvider {
|
|
|
206
206
|
}
|
|
207
207
|
}
|
|
208
208
|
return false;
|
|
209
|
-
}
|
|
210
|
-
}
|
|
209
|
+
},
|
|
210
|
+
},
|
|
211
211
|
];
|
|
212
212
|
}
|
|
213
213
|
|
|
@@ -248,7 +248,7 @@ export class AiCodeGenerationProvider {
|
|
|
248
248
|
effects: [
|
|
249
249
|
setAiCodeGenerationTeaserMode.of(AiCodeGenerationTeaserMode.DISMISSED),
|
|
250
250
|
setAiAutoCompleteSuggestion.of(null),
|
|
251
|
-
]
|
|
251
|
+
],
|
|
252
252
|
});
|
|
253
253
|
}
|
|
254
254
|
|
|
@@ -372,8 +372,8 @@ export class AiCodeGenerationProvider {
|
|
|
372
372
|
onImpression: this.#aiCodeGeneration?.registerUserImpression.bind(this.#aiCodeGeneration),
|
|
373
373
|
source: AiSuggestionSource.GENERATION,
|
|
374
374
|
}),
|
|
375
|
-
setAiCodeGenerationTeaserMode.of(AiCodeGenerationTeaserMode.ACTIVE)
|
|
376
|
-
]
|
|
375
|
+
setAiCodeGenerationTeaserMode.of(AiCodeGenerationTeaserMode.ACTIVE),
|
|
376
|
+
],
|
|
377
377
|
});
|
|
378
378
|
this.#generationTeaser.displayState =
|
|
379
379
|
PanelCommon.AiCodeGenerationTeaser.AiCodeGenerationTeaserDisplayState.GENERATED;
|
|
@@ -498,7 +498,7 @@ function aiCodeGenerationTeaserExtension(teaser: PanelCommon.AiCodeGenerationTea
|
|
|
498
498
|
return true;
|
|
499
499
|
}
|
|
500
500
|
return false;
|
|
501
|
-
}
|
|
501
|
+
},
|
|
502
502
|
},
|
|
503
503
|
});
|
|
504
504
|
}
|
|
@@ -411,8 +411,10 @@ async function completeExpressionInScope(): Promise<CompletionSet> {
|
|
|
411
411
|
return result;
|
|
412
412
|
}
|
|
413
413
|
|
|
414
|
+
const debuggerWorkspaceBinding = Bindings.DebuggerWorkspaceBinding.DebuggerWorkspaceBinding.instance();
|
|
414
415
|
const scopes = await Promise.all(selectedFrame.scopeChain().map(
|
|
415
|
-
scope => SourceMapScopes.NamesResolver.resolveScopeInObject(scope
|
|
416
|
+
scope => SourceMapScopes.NamesResolver.resolveScopeInObject(scope, debuggerWorkspaceBinding)
|
|
417
|
+
.getAllProperties(false, false)));
|
|
416
418
|
for (const scope of scopes) {
|
|
417
419
|
for (const property of scope.properties || []) {
|
|
418
420
|
result.add({
|
|
@@ -100,7 +100,7 @@ const positioningUtils = {
|
|
|
100
100
|
|
|
101
101
|
return rect1 && rect1.left === rect2.left && rect1.top === rect2.top && rect1.width === rect2.width &&
|
|
102
102
|
rect1.height === rect2.height;
|
|
103
|
-
}
|
|
103
|
+
},
|
|
104
104
|
};
|
|
105
105
|
|
|
106
106
|
export const proposedRectForRichTooltip = ({inspectorViewRect, anchorRect, currentPopoverRect, preferredPositions}: {
|
|
@@ -947,8 +947,18 @@ export class ContextMenu extends SubMenu {
|
|
|
947
947
|
private static pendingMenu: ContextMenu|null = null;
|
|
948
948
|
private static useSoftMenu = false;
|
|
949
949
|
static readonly groupWeights = [
|
|
950
|
-
'header',
|
|
951
|
-
'
|
|
950
|
+
'header',
|
|
951
|
+
'new',
|
|
952
|
+
'reveal',
|
|
953
|
+
'edit',
|
|
954
|
+
'clipboard',
|
|
955
|
+
'debug',
|
|
956
|
+
'view',
|
|
957
|
+
'default',
|
|
958
|
+
'override',
|
|
959
|
+
'save',
|
|
960
|
+
'annotation',
|
|
961
|
+
'footer',
|
|
952
962
|
];
|
|
953
963
|
}
|
|
954
964
|
|
|
@@ -392,7 +392,7 @@ export class ListControl<T> {
|
|
|
392
392
|
element.setAttribute('jslog', `${VisualLogging.item().track({
|
|
393
393
|
click: true,
|
|
394
394
|
resize: true,
|
|
395
|
-
keydown: 'ArrowUp|ArrowDown|PageUp|PageDown|Home|End'
|
|
395
|
+
keydown: 'ArrowUp|ArrowDown|PageUp|PageDown|Home|End',
|
|
396
396
|
})}`);
|
|
397
397
|
}
|
|
398
398
|
this.itemToElement.set(item, element);
|
|
@@ -30,24 +30,23 @@ export function render(container: HTMLElement) {
|
|
|
30
30
|
|
|
31
31
|
{
|
|
32
32
|
const simpleMenuHTML = createDivWithP('Simple item select with lit-html');
|
|
33
|
-
Lit.render(
|
|
34
|
-
html`<select id="menu" aria-label="Select an option"
|
|
33
|
+
Lit.render(html`<select id="menu" aria-label="Select an option"
|
|
35
34
|
@change=${onChange}>
|
|
36
35
|
<option hidden>Select an option</option>
|
|
37
36
|
<option id="option-1" jslog=${VisualLogging.item('option-1').track({
|
|
38
|
-
|
|
39
|
-
|
|
37
|
+
click: true,
|
|
38
|
+
})}
|
|
40
39
|
value="Option1">Option 1</option>
|
|
41
40
|
<option jslog=${VisualLogging.item('option-2').track({
|
|
42
|
-
|
|
43
|
-
|
|
41
|
+
click: true,
|
|
42
|
+
})}
|
|
44
43
|
value="Option2">Option 2</option>
|
|
45
44
|
<option disabled jslog=${VisualLogging.item('option-3').track({
|
|
46
|
-
|
|
47
|
-
|
|
45
|
+
click: true,
|
|
46
|
+
})}
|
|
48
47
|
value="Option3">Option 3</option>
|
|
49
48
|
</select>`,
|
|
50
|
-
|
|
49
|
+
simpleMenuHTML);
|
|
51
50
|
}
|
|
52
51
|
|
|
53
52
|
{
|
|
@@ -57,7 +56,7 @@ export function render(container: HTMLElement) {
|
|
|
57
56
|
html`<select disabled aria-label="Select an option" @change=${onChange}>
|
|
58
57
|
<option hidden>Select an option</option>
|
|
59
58
|
<option jslog=${VisualLogging.item('option-1').track({
|
|
60
|
-
click: true
|
|
59
|
+
click: true,
|
|
61
60
|
})} value="Option1">Option 1</option>
|
|
62
61
|
</select>`,
|
|
63
62
|
disabledMenuHTML);
|
|
@@ -66,27 +65,26 @@ export function render(container: HTMLElement) {
|
|
|
66
65
|
|
|
67
66
|
{
|
|
68
67
|
const groupMenuHTML = createDivWithP('Select with groups with lit-html');
|
|
69
|
-
Lit.render(
|
|
70
|
-
html`<select aria-label="Select an option"
|
|
68
|
+
Lit.render(html`<select aria-label="Select an option"
|
|
71
69
|
@change=${onChange}>
|
|
72
70
|
<optgroup label="Group 1">
|
|
73
71
|
<option jslog=${VisualLogging.item('option-1').track({
|
|
74
|
-
|
|
75
|
-
|
|
72
|
+
click: true,
|
|
73
|
+
})}
|
|
76
74
|
value="Option1">Option 1</option>
|
|
77
75
|
</optgroup>
|
|
78
76
|
<optgroup label="Group 2">
|
|
79
77
|
<option jslog=${VisualLogging.item('option-2').track({
|
|
80
|
-
|
|
81
|
-
|
|
78
|
+
click: true,
|
|
79
|
+
})}
|
|
82
80
|
value="Option2">Option 2</option>
|
|
83
81
|
<option jslog=${VisualLogging.item('option-3').track({
|
|
84
|
-
|
|
85
|
-
|
|
82
|
+
click: true,
|
|
83
|
+
})}
|
|
86
84
|
value="Option3">Option 3</option>
|
|
87
85
|
</optgroup>
|
|
88
86
|
</select>`,
|
|
89
|
-
|
|
87
|
+
groupMenuHTML);
|
|
90
88
|
}
|
|
91
89
|
|
|
92
90
|
{
|
|
@@ -12,6 +12,7 @@ import * as Buttons from '../../ui/components/buttons/buttons.js';
|
|
|
12
12
|
import * as VisualLogging from '../../ui/visual_logging/visual_logging.js';
|
|
13
13
|
import {createIcon} from '../kit/kit.js';
|
|
14
14
|
import {nothing, render, type TemplateResult} from '../lit/lit.js';
|
|
15
|
+
import * as SettingUIRegistration from '../settings/settings.js';
|
|
15
16
|
|
|
16
17
|
import {type Action, Events as ActionEvents} from './ActionRegistration.js';
|
|
17
18
|
import {ActionRegistry} from './ActionRegistry.js';
|
|
@@ -1429,7 +1430,9 @@ export class ToolbarSettingCheckbox extends ToolbarCheckbox {
|
|
|
1429
1430
|
constructor(
|
|
1430
1431
|
setting: Common.Settings.Setting<boolean>, tooltip?: Common.UIString.LocalizedString,
|
|
1431
1432
|
alternateTitle?: Common.UIString.LocalizedString) {
|
|
1432
|
-
|
|
1433
|
+
const uiDescriptor = SettingUIRegistration.SettingUIRegistration.maybeResolve(setting.descriptor());
|
|
1434
|
+
const title = alternateTitle || uiDescriptor?.title?.() || setting.title();
|
|
1435
|
+
super(title, tooltip, undefined, setting.name);
|
|
1433
1436
|
bindCheckbox(this.element as CheckboxLabel, setting);
|
|
1434
1437
|
}
|
|
1435
1438
|
}
|
|
@@ -1692,7 +1692,7 @@ function getTreeNodes(nodeList: NodeList|Node[]): Array<HTMLLIElement|TreeElemen
|
|
|
1692
1692
|
return [
|
|
1693
1693
|
node,
|
|
1694
1694
|
...node.querySelectorAll<HTMLLIElement|TreeElementWrapper>(
|
|
1695
|
-
'ul[role="group"] li[role="treeitem"],ul[role="group"] devtools-tree-wrapper')
|
|
1695
|
+
'ul[role="group"] li[role="treeitem"],ul[role="group"] devtools-tree-wrapper'),
|
|
1696
1696
|
];
|
|
1697
1697
|
}
|
|
1698
1698
|
if (node instanceof HTMLElement) {
|
|
@@ -72,12 +72,11 @@
|
|
|
72
72
|
|
|
73
73
|
.spectrum-hue {
|
|
74
74
|
top: 16px;
|
|
75
|
-
/* stylelint-disable-next-line plugin/use_theme_colors
|
|
75
|
+
/* stylelint-disable-next-line plugin/use_theme_colors */
|
|
76
76
|
background: linear-gradient(to left in hsl longer hue, #f00 0 100%);
|
|
77
77
|
}
|
|
78
78
|
|
|
79
79
|
.spectrum-hue.display-p3 {
|
|
80
|
-
/* stylelint-disable-next-line declaration-property-value-no-unknown */
|
|
81
80
|
background: linear-gradient(
|
|
82
81
|
to left in hsl longer hue,
|
|
83
82
|
color(display-p3 1 0 0) 0 100%
|
|
@@ -1779,7 +1779,7 @@ export class DataGridNode<T> {
|
|
|
1779
1779
|
this.elementInternal = document.createElement('tr');
|
|
1780
1780
|
this.elementInternal.setAttribute('jslog', `${VisualLogging.tableRow().track({
|
|
1781
1781
|
resize: true,
|
|
1782
|
-
keydown: 'ArrowUp|ArrowDown|ArrowLeft|ArrowRight|Enter|Space'
|
|
1782
|
+
keydown: 'ArrowUp|ArrowDown|ArrowLeft|ArrowRight|Enter|Space',
|
|
1783
1783
|
})}`);
|
|
1784
1784
|
this.elementInternal.classList.add('data-grid-data-grid-node');
|
|
1785
1785
|
if (this.dataGrid) {
|
|
@@ -17,7 +17,7 @@ import {
|
|
|
17
17
|
DataType,
|
|
18
18
|
Events as DataGridEvents,
|
|
19
19
|
Order,
|
|
20
|
-
type ResizeMethod
|
|
20
|
+
type ResizeMethod,
|
|
21
21
|
} from './DataGrid.js';
|
|
22
22
|
import {SortableDataGrid, SortableDataGridNode} from './SortableDataGrid.js';
|
|
23
23
|
|
|
@@ -57,7 +57,7 @@ type DataGridElementNode = SortableNode|DynamicHeightNode;
|
|
|
57
57
|
const elementToNode = new WeakMap<Element, DataGridElementNode>();
|
|
58
58
|
|
|
59
59
|
export class DataGridElement extends UI.UIUtils.HTMLElementWithLightDOMTemplate {
|
|
60
|
-
static readonly observedAttributes = ['striped', 'name', 'inline', 'resize'];
|
|
60
|
+
static readonly observedAttributes = ['striped', 'name', 'inline', 'resize', 'highlight'];
|
|
61
61
|
|
|
62
62
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
63
63
|
#dataGrid!: DataGridImpl<any>;
|
|
@@ -66,6 +66,13 @@ export class DataGridElement extends UI.UIUtils.HTMLElementWithLightDOMTemplate
|
|
|
66
66
|
this.#dataGrid.onResize();
|
|
67
67
|
}
|
|
68
68
|
});
|
|
69
|
+
#scrollResizeObserver = new ResizeObserver(() => {
|
|
70
|
+
if (this.hasAttribute('autoscroll') && this.#stickToBottom) {
|
|
71
|
+
const scroll = this.#dataGrid.scrollContainer;
|
|
72
|
+
scroll.scrollTop = scroll.scrollHeight;
|
|
73
|
+
}
|
|
74
|
+
});
|
|
75
|
+
#stickToBottom = true;
|
|
69
76
|
#shadowRoot: ShadowRoot;
|
|
70
77
|
#columns: ColumnDescriptor[] = [];
|
|
71
78
|
#hideableColumns = new Set<string>();
|
|
@@ -109,7 +116,7 @@ export class DataGridElement extends UI.UIUtils.HTMLElementWithLightDOMTemplate
|
|
|
109
116
|
DataGridEvents.COLLAPSED_NODE,
|
|
110
117
|
e => (e.data as DataGridElementNode).configElement.dispatchEvent(new CustomEvent('collapse')));
|
|
111
118
|
this.#dataGrid.addEventListener(DataGridEvents.SORTING_CHANGED, () => this.dispatchEvent(new CustomEvent('sort', {
|
|
112
|
-
detail: {columnId: this.#dataGrid.sortColumnId(), ascending: this.#dataGrid.isSortOrderAscending()}
|
|
119
|
+
detail: {columnId: this.#dataGrid.sortColumnId(), ascending: this.#dataGrid.isSortOrderAscending()},
|
|
113
120
|
})));
|
|
114
121
|
this.#dataGrid.setRowContextMenuCallback((menu, node) => {
|
|
115
122
|
(node as DataGridElementNode).configElement.dispatchEvent(new CustomEvent('contextmenu', {detail: menu}));
|
|
@@ -136,6 +143,22 @@ export class DataGridElement extends UI.UIUtils.HTMLElementWithLightDOMTemplate
|
|
|
136
143
|
this.addNodes(this.templateRoot.querySelectorAll('tr'));
|
|
137
144
|
}
|
|
138
145
|
|
|
146
|
+
connectedCallback(): void {
|
|
147
|
+
const scroll = this.#dataGrid.scrollContainer;
|
|
148
|
+
scroll.addEventListener('scroll', this.#onScroll);
|
|
149
|
+
this.#scrollResizeObserver.observe(scroll.firstElementChild || scroll);
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
disconnectedCallback(): void {
|
|
153
|
+
const scroll = this.#dataGrid.scrollContainer;
|
|
154
|
+
scroll.removeEventListener('scroll', this.#onScroll);
|
|
155
|
+
this.#scrollResizeObserver.disconnect();
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
#onScroll = (): void => {
|
|
159
|
+
this.#stickToBottom = UI.UIUtils.isScrolledToBottom(this.#dataGrid.scrollContainer);
|
|
160
|
+
};
|
|
161
|
+
|
|
139
162
|
attributeChangedCallback(name: string, oldValue: string|null, newValue: string|null): void {
|
|
140
163
|
if (oldValue === newValue) {
|
|
141
164
|
return;
|
|
@@ -153,6 +176,11 @@ export class DataGridElement extends UI.UIUtils.HTMLElementWithLightDOMTemplate
|
|
|
153
176
|
case 'resize':
|
|
154
177
|
this.#dataGrid.setResizeMethod(newValue as ResizeMethod);
|
|
155
178
|
break;
|
|
179
|
+
case 'highlight':
|
|
180
|
+
queueMicrotask(() => {
|
|
181
|
+
this.#revealHighlightedNode(Number(newValue));
|
|
182
|
+
});
|
|
183
|
+
break;
|
|
156
184
|
}
|
|
157
185
|
}
|
|
158
186
|
|
|
@@ -209,6 +237,24 @@ export class DataGridElement extends UI.UIUtils.HTMLElementWithLightDOMTemplate
|
|
|
209
237
|
dataGridNode.setHasChildren(hasChildren);
|
|
210
238
|
}
|
|
211
239
|
|
|
240
|
+
#revealHighlightedNode(index: number): void {
|
|
241
|
+
if (isNaN(index) || index < 1) {
|
|
242
|
+
return;
|
|
243
|
+
}
|
|
244
|
+
let count = 0;
|
|
245
|
+
let node = this.#dataGrid.rootNode().traverseNextNode(true) as DataGridElementNode | null;
|
|
246
|
+
while (node) {
|
|
247
|
+
if (node.configElement.hasAttribute('highlighted')) {
|
|
248
|
+
count++;
|
|
249
|
+
if (count === index) {
|
|
250
|
+
node.revealAndSelect();
|
|
251
|
+
return;
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
node = node.traverseNextNode(true) as DataGridElementNode | null;
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
|
|
212
258
|
#updateColumns(): void {
|
|
213
259
|
for (const column of Object.keys(this.#dataGrid.columns)) {
|
|
214
260
|
this.#dataGrid.removeColumn(column);
|
|
@@ -681,7 +727,7 @@ export interface DataGridInternalToken {
|
|
|
681
727
|
}
|
|
682
728
|
|
|
683
729
|
const INTERNAL_TOKEN: DataGridInternalToken = {
|
|
684
|
-
token: 'DataGridInternalToken'
|
|
730
|
+
token: 'DataGridInternalToken',
|
|
685
731
|
};
|
|
686
732
|
|
|
687
733
|
class IfExpandedDirective extends Lit.Directive.Directive {
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
// found in the LICENSE file.
|
|
4
4
|
|
|
5
5
|
import * as SDK from '../../../../core/sdk/sdk.js';
|
|
6
|
+
import * as Bindings from '../../../../models/bindings/bindings.js';
|
|
6
7
|
import * as Formatter from '../../../../models/formatter/formatter.js';
|
|
7
8
|
import * as SourceMapScopes from '../../../../models/source_map_scopes/source_map_scopes.js';
|
|
8
9
|
import * as Acorn from '../../../../third_party/acorn/acorn.js';
|
|
@@ -56,7 +57,8 @@ export class JavaScriptREPL {
|
|
|
56
57
|
let expression = text;
|
|
57
58
|
const callFrame = executionContext.debuggerModel.selectedCallFrame();
|
|
58
59
|
if (callFrame?.script.isJavaScript()) {
|
|
59
|
-
const nameMap = await SourceMapScopes.NamesResolver.allVariablesInCallFrame(
|
|
60
|
+
const nameMap = await SourceMapScopes.NamesResolver.allVariablesInCallFrame(
|
|
61
|
+
callFrame, Bindings.DebuggerWorkspaceBinding.DebuggerWorkspaceBinding.instance());
|
|
60
62
|
try {
|
|
61
63
|
expression =
|
|
62
64
|
await Formatter.FormatterWorkerPool.formatterWorkerPool().javaScriptSubstitute(expression, nameMap);
|