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
|
@@ -28,9 +28,9 @@ const UIStrings = {
|
|
|
28
28
|
*/
|
|
29
29
|
consoleMessage: 'Console message',
|
|
30
30
|
/**
|
|
31
|
-
* @description
|
|
31
|
+
* @description Title of the insight source 'Stack trace'.
|
|
32
32
|
*/
|
|
33
|
-
stackTrace: '
|
|
33
|
+
stackTrace: 'Stack trace',
|
|
34
34
|
/**
|
|
35
35
|
* @description The title of the insight source "Network request".
|
|
36
36
|
*/
|
|
@@ -49,7 +49,7 @@ const UIStrings = {
|
|
|
49
49
|
*/
|
|
50
50
|
insight: 'Explanation',
|
|
51
51
|
/**
|
|
52
|
-
* @description
|
|
52
|
+
* @description Title of a button that closes the explanation.
|
|
53
53
|
*/
|
|
54
54
|
closeInsight: 'Close explanation',
|
|
55
55
|
/**
|
|
@@ -72,9 +72,9 @@ const UIStrings = {
|
|
|
72
72
|
*/
|
|
73
73
|
report: 'Report legal issue',
|
|
74
74
|
/**
|
|
75
|
-
* @description
|
|
75
|
+
* @description Header text shown when there was an error generating an insight.
|
|
76
76
|
*/
|
|
77
|
-
error: 'DevTools
|
|
77
|
+
error: 'DevTools encountered an error',
|
|
78
78
|
/**
|
|
79
79
|
* @description The message shown when an error has been encountered.
|
|
80
80
|
*/
|
|
@@ -94,7 +94,7 @@ const UIStrings = {
|
|
|
94
94
|
*/
|
|
95
95
|
notLoggedIn: 'This feature is only available when you sign in to Chrome with your Google account.',
|
|
96
96
|
/**
|
|
97
|
-
* @description
|
|
97
|
+
* @description Title of a button which opens the Chrome sign-in page.
|
|
98
98
|
*/
|
|
99
99
|
signIn: 'Sign in',
|
|
100
100
|
/**
|
|
@@ -120,13 +120,12 @@ const UIStrings = {
|
|
|
120
120
|
* available and a page reload might populate it.
|
|
121
121
|
*/
|
|
122
122
|
reloadRecommendation:
|
|
123
|
-
'Reload the page to capture related network request data for this message
|
|
123
|
+
'Reload the page to capture related network request data for this message to get a better insight.',
|
|
124
124
|
/**
|
|
125
125
|
* @description Shown to the user when they need to enable the console insights feature in settings in order to use it.
|
|
126
126
|
* @example {Console insights in Settings} PH1
|
|
127
127
|
*/
|
|
128
|
-
turnOnInSettings:
|
|
129
|
-
'Turn on {PH1} to receive AI assistance for understanding and addressing console warnings and errors.',
|
|
128
|
+
turnOnInSettings: 'Turn on {PH1} to use AI assistance for understanding and addressing console warnings and errors.',
|
|
130
129
|
/**
|
|
131
130
|
* @description Text for a link to Chrome DevTools Settings.
|
|
132
131
|
*/
|
|
@@ -11,15 +11,15 @@ import * as UI from '../../ui/legacy/legacy.js';
|
|
|
11
11
|
|
|
12
12
|
const UIStrings = {
|
|
13
13
|
/**
|
|
14
|
-
* @description Message to offer insights for a console error message
|
|
14
|
+
* @description Message to offer insights for a console error message.
|
|
15
15
|
*/
|
|
16
16
|
explainThisError: 'Understand this error',
|
|
17
17
|
/**
|
|
18
|
-
* @description Message to offer insights for a console warning message
|
|
18
|
+
* @description Message to offer insights for a console warning message.
|
|
19
19
|
*/
|
|
20
20
|
explainThisWarning: 'Understand this warning',
|
|
21
21
|
/**
|
|
22
|
-
* @description Message to offer insights for a console message
|
|
22
|
+
* @description Message to offer insights for a console message.
|
|
23
23
|
*/
|
|
24
24
|
explainThisMessage: 'Understand this message',
|
|
25
25
|
/**
|
|
@@ -6,7 +6,8 @@ import * as Common from '../../core/common/common.js';
|
|
|
6
6
|
import * as i18n from '../../core/i18n/i18n.js';
|
|
7
7
|
import type * as SDK from '../../core/sdk/sdk.js';
|
|
8
8
|
import * as UI from '../../ui/legacy/legacy.js';
|
|
9
|
-
import {html, render} from '../../ui/lit/lit.js';
|
|
9
|
+
import {Directives, html, nothing, render, type TemplateResult} from '../../ui/lit/lit.js';
|
|
10
|
+
import * as VisualLogging from '../../ui/visual_logging/visual_logging.js';
|
|
10
11
|
|
|
11
12
|
import layerTreeOutlineStyles from './layerTreeOutline.css.js';
|
|
12
13
|
import {
|
|
@@ -41,57 +42,118 @@ const UIStrings = {
|
|
|
41
42
|
const str_ = i18n.i18n.registerUIStrings('panels/layer_viewer/LayerTreeOutline.ts', UIStrings);
|
|
42
43
|
const i18nString = i18n.i18n.getLocalizedString.bind(undefined, str_);
|
|
43
44
|
|
|
45
|
+
const {ref, repeat} = Directives;
|
|
46
|
+
export interface LayerTreeNode {
|
|
47
|
+
layer: SDK.LayerTreeBase.Layer;
|
|
48
|
+
isExpanded: boolean;
|
|
49
|
+
children: LayerTreeNode[];
|
|
50
|
+
}
|
|
51
|
+
|
|
44
52
|
export interface ViewInput {
|
|
45
|
-
|
|
53
|
+
treeData: LayerTreeNode[];
|
|
54
|
+
selectedLayer: SDK.LayerTreeBase.Layer|null;
|
|
55
|
+
hoveredLayer: SDK.LayerTreeBase.Layer|null;
|
|
46
56
|
layerCount: number;
|
|
47
57
|
totalLayerMemory: number;
|
|
58
|
+
onSelect: (layer: SDK.LayerTreeBase.Layer) => void;
|
|
59
|
+
onHover: (layer: SDK.LayerTreeBase.Layer|null) => void;
|
|
60
|
+
onContextMenu: (event: MouseEvent, layer: SDK.LayerTreeBase.Layer|null) => void;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
export interface ViewOutput {
|
|
64
|
+
focusTree?: () => void;
|
|
65
|
+
revealLayer?: (layer: SDK.LayerTreeBase.Layer) => void;
|
|
48
66
|
}
|
|
49
|
-
export type View = (input: ViewInput, output: object, target: HTMLElement) => void;
|
|
50
67
|
|
|
51
|
-
|
|
68
|
+
export type View = (input: ViewInput, output: ViewOutput, target: HTMLElement) => void;
|
|
69
|
+
|
|
70
|
+
export const DEFAULT_VIEW: View = (input, output, target) => {
|
|
71
|
+
const renderNode = (node: LayerTreeNode): TemplateResult => {
|
|
72
|
+
const layer = node.layer;
|
|
73
|
+
const domNode = layer.nodeForSelfOrAncestor();
|
|
74
|
+
const titleText = domNode ? domNode.simpleSelector() : '#' + layer.id();
|
|
75
|
+
const detailsText = i18nString(UIStrings.updateChildDimension, {PH1: layer.width(), PH2: layer.height()});
|
|
76
|
+
const isSelected = layer === input.selectedLayer;
|
|
77
|
+
const isHovered = layer === input.hoveredLayer;
|
|
78
|
+
|
|
79
|
+
// clang-format off
|
|
80
|
+
return html`
|
|
81
|
+
<li role="treeitem"
|
|
82
|
+
data-layer-id=${layer.id()}
|
|
83
|
+
class=${isHovered ? 'hovered' : ''}
|
|
84
|
+
?selected=${isSelected}
|
|
85
|
+
aria-expanded=${node.isExpanded ? 'true' : 'false'}
|
|
86
|
+
@select=${() => input.onSelect(layer)}
|
|
87
|
+
@mouseenter=${() => input.onHover(layer)}
|
|
88
|
+
@mouseleave=${() => input.onHover(null)}>
|
|
89
|
+
<span class="tree-node-title" @contextmenu=${(event: MouseEvent) => {
|
|
90
|
+
input.onContextMenu(event, layer);
|
|
91
|
+
event.stopPropagation();
|
|
92
|
+
}}>
|
|
93
|
+
${titleText} <span class="dimmed">${detailsText}</span>
|
|
94
|
+
</span>
|
|
95
|
+
${node.children.length > 0 ? html`<ul role="group">${repeat(node.children, n => n.layer.id(), renderNode)}</ul>` : nothing}
|
|
96
|
+
</li>
|
|
97
|
+
`;
|
|
98
|
+
// clang-format on
|
|
99
|
+
};
|
|
100
|
+
|
|
101
|
+
// clang-format off
|
|
52
102
|
render(html`
|
|
53
103
|
<style>${layerTreeOutlineStyles}</style>
|
|
54
|
-
<div class="vbox layer-tree-wrapper">
|
|
55
|
-
<
|
|
56
|
-
|
|
57
|
-
|
|
104
|
+
<div class="vbox layer-tree-wrapper" jslog=${VisualLogging.pane('layers-tree')}>
|
|
105
|
+
<devtools-tree class="layer-tree overflow-auto"
|
|
106
|
+
@contextmenu=${(event: MouseEvent) => input.onContextMenu(event, null)}
|
|
107
|
+
${ref((el: Element | undefined) => {
|
|
108
|
+
if (el) {
|
|
109
|
+
output.focusTree = () => {
|
|
110
|
+
(el as UI.TreeOutline.TreeViewElement).focus();
|
|
111
|
+
};
|
|
112
|
+
output.revealLayer = (layer: SDK.LayerTreeBase.Layer) => {
|
|
113
|
+
const li = el.querySelector(`li[data-layer-id="${layer.id()}"]`);
|
|
114
|
+
if (li) {
|
|
115
|
+
// Toggling the selected attribute forces TreeViewElement to scroll the node into view.
|
|
116
|
+
li.removeAttribute('selected');
|
|
117
|
+
li.setAttribute('selected', '');
|
|
118
|
+
}
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
})}
|
|
122
|
+
.template=${html`
|
|
123
|
+
<style>${layerTreeOutlineStyles}</style>
|
|
124
|
+
<ul role="tree" aria-label=${i18nString(UIStrings.layersTreePane)}>
|
|
125
|
+
${input.treeData.map(renderNode)}
|
|
126
|
+
</ul>
|
|
127
|
+
`}>
|
|
128
|
+
</devtools-tree>
|
|
58
129
|
<div class="hbox layer-summary">
|
|
59
130
|
<span class="layer-count">${i18nString(UIStrings.layerCount, {
|
|
60
|
-
PH1: input.layerCount
|
|
131
|
+
PH1: input.layerCount,
|
|
61
132
|
})}</span>
|
|
62
133
|
<span>${i18n.ByteUtilities.bytesToString(input.totalLayerMemory)}</span>
|
|
63
134
|
</div>
|
|
64
135
|
</div>
|
|
65
|
-
`,
|
|
66
|
-
|
|
136
|
+
`, target);
|
|
137
|
+
// clang-format on
|
|
67
138
|
};
|
|
68
139
|
|
|
69
140
|
export class LayerTreeOutline extends Common.ObjectWrapper.eventMixin<EventTypes, typeof UI.Widget.Widget>(
|
|
70
141
|
UI.Widget.Widget) implements Common.EventTarget.EventTarget<EventTypes>, LayerView {
|
|
71
142
|
private layerViewHost: LayerViewHost;
|
|
72
|
-
private treeOutline: UI.TreeOutline.TreeOutlineInShadow;
|
|
73
|
-
private lastHoveredNode: LayerTreeElement|null;
|
|
74
143
|
private layerTree?: SDK.LayerTreeBase.LayerTreeBase|null;
|
|
75
144
|
private layerSnapshotMap?: Map<SDK.LayerTreeBase.Layer, SnapshotSelection>;
|
|
76
|
-
|
|
77
|
-
#view: View;
|
|
78
145
|
#layerCount = 0;
|
|
79
146
|
#totalLayerMemory = 0;
|
|
147
|
+
#treeData: LayerTreeNode[] = [];
|
|
148
|
+
#viewOutput: ViewOutput = {};
|
|
149
|
+
#view: View;
|
|
150
|
+
#hoveredLayer: SDK.LayerTreeBase.Layer|null = null;
|
|
80
151
|
|
|
81
152
|
constructor(layerViewHost: LayerViewHost, view: View = DEFAULT_VIEW) {
|
|
82
153
|
super();
|
|
154
|
+
this.#view = view;
|
|
83
155
|
this.layerViewHost = layerViewHost;
|
|
84
156
|
this.layerViewHost.registerView(this);
|
|
85
|
-
this.#view = view;
|
|
86
|
-
|
|
87
|
-
this.treeOutline = new UI.TreeOutline.TreeOutlineInShadow();
|
|
88
|
-
this.treeOutline.element.classList.add('layer-tree', 'overflow-auto');
|
|
89
|
-
this.treeOutline.element.addEventListener('mousemove', this.onMouseMove.bind(this) as EventListener, false);
|
|
90
|
-
this.treeOutline.element.addEventListener('mouseout', this.onMouseMove.bind(this) as EventListener, false);
|
|
91
|
-
this.treeOutline.element.addEventListener('contextmenu', this.onContextMenu.bind(this) as EventListener, true);
|
|
92
|
-
UI.ARIAUtils.setLabel(this.treeOutline.contentElement, i18nString(UIStrings.layersTreePane));
|
|
93
|
-
|
|
94
|
-
this.lastHoveredNode = null;
|
|
95
157
|
|
|
96
158
|
this.layerViewHost.showInternalLayersSetting().addChangeListener(this.update, this);
|
|
97
159
|
}
|
|
@@ -103,41 +165,36 @@ export class LayerTreeOutline extends Common.ObjectWrapper.eventMixin<EventTypes
|
|
|
103
165
|
|
|
104
166
|
override performUpdate(): void {
|
|
105
167
|
this.#view({
|
|
106
|
-
|
|
168
|
+
treeData: this.#treeData,
|
|
169
|
+
selectedLayer: this.layerViewHost.selection()?.layer() || null,
|
|
170
|
+
hoveredLayer: this.#hoveredLayer,
|
|
107
171
|
layerCount: this.#layerCount,
|
|
108
172
|
totalLayerMemory: this.#totalLayerMemory,
|
|
173
|
+
onSelect: this.onSelect.bind(this),
|
|
174
|
+
onHover: this.onHover.bind(this),
|
|
175
|
+
onContextMenu: this.onContextMenu.bind(this),
|
|
109
176
|
},
|
|
110
|
-
|
|
177
|
+
this.#viewOutput, this.contentElement);
|
|
111
178
|
}
|
|
112
179
|
|
|
113
180
|
override focus(): void {
|
|
114
|
-
this.
|
|
181
|
+
this.#viewOutput.focusTree?.();
|
|
115
182
|
}
|
|
116
183
|
|
|
117
184
|
selectObject(selection: Selection|null): void {
|
|
118
185
|
this.hoverObject(null);
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
186
|
+
this.requestUpdate();
|
|
187
|
+
if (selection) {
|
|
188
|
+
// Defer revealLayer to ensure Lit has finished rendering DOM updates
|
|
189
|
+
queueMicrotask(() => {
|
|
190
|
+
this.#viewOutput.revealLayer?.(selection.layer());
|
|
191
|
+
});
|
|
125
192
|
}
|
|
126
193
|
}
|
|
127
194
|
|
|
128
195
|
hoverObject(selection: Selection|null): void {
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
if (node === this.lastHoveredNode) {
|
|
132
|
-
return;
|
|
133
|
-
}
|
|
134
|
-
if (this.lastHoveredNode) {
|
|
135
|
-
this.lastHoveredNode.setHovered(false);
|
|
136
|
-
}
|
|
137
|
-
if (node) {
|
|
138
|
-
node.setHovered(true);
|
|
139
|
-
}
|
|
140
|
-
this.lastHoveredNode = node as LayerTreeElement;
|
|
196
|
+
this.#hoveredLayer = selection?.layer() || null;
|
|
197
|
+
this.requestUpdate();
|
|
141
198
|
}
|
|
142
199
|
|
|
143
200
|
setLayerTree(layerTree: SDK.LayerTreeBase.LayerTreeBase|null): void {
|
|
@@ -146,9 +203,11 @@ export class LayerTreeOutline extends Common.ObjectWrapper.eventMixin<EventTypes
|
|
|
146
203
|
}
|
|
147
204
|
|
|
148
205
|
private update(): void {
|
|
206
|
+
let layerCount = 0;
|
|
207
|
+
let totalLayerMemory = 0;
|
|
208
|
+
|
|
149
209
|
const showInternalLayers = this.layerViewHost.showInternalLayersSetting().get();
|
|
150
|
-
|
|
151
|
-
let root: (SDK.LayerTreeBase.Layer|null)|null = null;
|
|
210
|
+
let root: SDK.LayerTreeBase.Layer|null = null;
|
|
152
211
|
if (this.layerTree) {
|
|
153
212
|
if (!showInternalLayers) {
|
|
154
213
|
root = this.layerTree.contentRoot();
|
|
@@ -158,9 +217,6 @@ export class LayerTreeOutline extends Common.ObjectWrapper.eventMixin<EventTypes
|
|
|
158
217
|
}
|
|
159
218
|
}
|
|
160
219
|
|
|
161
|
-
let layerCount = 0;
|
|
162
|
-
let totalLayerMemory = 0;
|
|
163
|
-
|
|
164
220
|
const childrenMap = new Map<SDK.LayerTreeBase.Layer, SDK.LayerTreeBase.Layer[]>();
|
|
165
221
|
|
|
166
222
|
if (this.layerTree && root) {
|
|
@@ -197,103 +253,51 @@ export class LayerTreeOutline extends Common.ObjectWrapper.eventMixin<EventTypes
|
|
|
197
253
|
this.layerTree.forEachLayer(buildTree, root);
|
|
198
254
|
}
|
|
199
255
|
|
|
200
|
-
const
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
if (!layer.drawsContent()) {
|
|
209
|
-
node.expand();
|
|
210
|
-
}
|
|
211
|
-
} else {
|
|
212
|
-
if (node.parent !== parent) {
|
|
213
|
-
const oldSelection = this.treeOutline.selectedTreeElement;
|
|
214
|
-
if (node.parent) {
|
|
215
|
-
node.parent.removeChild(node);
|
|
216
|
-
}
|
|
217
|
-
parent.appendChild(node);
|
|
218
|
-
if (oldSelection && oldSelection !== this.treeOutline.selectedTreeElement) {
|
|
219
|
-
oldSelection.select();
|
|
220
|
-
}
|
|
221
|
-
}
|
|
222
|
-
node.update();
|
|
223
|
-
}
|
|
224
|
-
|
|
225
|
-
const children = childrenMap.get(layer) || [];
|
|
226
|
-
for (const child of children) {
|
|
227
|
-
syncNode(child, node);
|
|
228
|
-
}
|
|
229
|
-
};
|
|
256
|
+
const makeTreeNode = (layer: SDK.LayerTreeBase.Layer): LayerTreeNode => {
|
|
257
|
+
const children = childrenMap.get(layer) || [];
|
|
258
|
+
return {
|
|
259
|
+
layer,
|
|
260
|
+
isExpanded: !layer.drawsContent(),
|
|
261
|
+
children: children.map(makeTreeNode),
|
|
262
|
+
};
|
|
263
|
+
};
|
|
230
264
|
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
265
|
+
this.#treeData = root && (root.drawsContent() || showInternalLayers) ? [makeTreeNode(root)] : [];
|
|
266
|
+
this.#layerCount = layerCount;
|
|
267
|
+
this.#totalLayerMemory = totalLayerMemory;
|
|
268
|
+
this.requestUpdate();
|
|
234
269
|
|
|
235
|
-
|
|
236
|
-
const rootElement = this.treeOutline.rootElement();
|
|
237
|
-
for (let node = rootElement.firstChild(); node instanceof LayerTreeElement && !node.root;) {
|
|
238
|
-
if (seenLayers.has(node.layer)) {
|
|
239
|
-
node = node.traverseNextTreeElement(false);
|
|
240
|
-
} else {
|
|
241
|
-
const nextNode = node.nextSibling || node.parent;
|
|
242
|
-
if (node.parent) {
|
|
243
|
-
node.parent.removeChild(node);
|
|
244
|
-
}
|
|
245
|
-
if (node === this.lastHoveredNode) {
|
|
246
|
-
this.lastHoveredNode = null;
|
|
247
|
-
}
|
|
248
|
-
node = nextNode;
|
|
249
|
-
}
|
|
250
|
-
}
|
|
251
|
-
if (!this.treeOutline.selectedTreeElement && this.layerTree) {
|
|
270
|
+
if (!this.layerViewHost.selection() && this.layerTree && this.#treeData.length > 0) {
|
|
252
271
|
const elementToSelect = this.layerTree.contentRoot() || this.layerTree.root();
|
|
253
272
|
if (elementToSelect) {
|
|
254
|
-
|
|
255
|
-
if (layer) {
|
|
256
|
-
layer.revealAndSelect(true);
|
|
257
|
-
}
|
|
273
|
+
this.layerViewHost.selectObject(new LayerSelection(elementToSelect));
|
|
258
274
|
}
|
|
259
275
|
}
|
|
276
|
+
}
|
|
260
277
|
|
|
261
|
-
|
|
262
|
-
this
|
|
263
|
-
this.requestUpdate();
|
|
278
|
+
private onHover(layer: SDK.LayerTreeBase.Layer|null): void {
|
|
279
|
+
this.layerViewHost.hoverObject(layer ? new LayerSelection(layer) : null);
|
|
264
280
|
}
|
|
265
281
|
|
|
266
|
-
private
|
|
267
|
-
|
|
268
|
-
if (node === this.lastHoveredNode) {
|
|
282
|
+
private onSelect(layer: SDK.LayerTreeBase.Layer): void {
|
|
283
|
+
if (this.layerViewHost.selection()?.layer() === layer) {
|
|
269
284
|
return;
|
|
270
285
|
}
|
|
271
|
-
this.layerViewHost.
|
|
272
|
-
}
|
|
273
|
-
|
|
274
|
-
selectedNodeChanged(node: LayerTreeElement): void {
|
|
275
|
-
this.layerViewHost.selectObject(this.selectionForNode(node));
|
|
286
|
+
this.layerViewHost.selectObject(new LayerSelection(layer));
|
|
276
287
|
}
|
|
277
288
|
|
|
278
|
-
private onContextMenu(event: MouseEvent): void {
|
|
279
|
-
const selection =
|
|
289
|
+
private onContextMenu(event: MouseEvent, layer: SDK.LayerTreeBase.Layer|null): void {
|
|
290
|
+
const selection = layer ? new LayerSelection(layer) : null;
|
|
280
291
|
const contextMenu = new UI.ContextMenu.ContextMenu(event);
|
|
281
|
-
|
|
282
|
-
if (
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
() => this.dispatchEventToListeners(Events.PAINT_PROFILER_REQUESTED, selection),
|
|
288
|
-
{jslogContext: 'layers.paint-profiler'});
|
|
289
|
-
}
|
|
292
|
+
this.layerSnapshotMap = this.layerViewHost.getLayerSnapshotMap();
|
|
293
|
+
if (layer && this.layerSnapshotMap.has(layer) && selection) {
|
|
294
|
+
contextMenu.defaultSection().appendItem(
|
|
295
|
+
i18nString(UIStrings.showPaintProfiler),
|
|
296
|
+
() => this.dispatchEventToListeners(Events.PAINT_PROFILER_REQUESTED, selection),
|
|
297
|
+
{jslogContext: 'layers.paint-profiler'});
|
|
290
298
|
}
|
|
291
299
|
this.layerViewHost.showContextMenu(contextMenu, selection);
|
|
292
300
|
}
|
|
293
|
-
|
|
294
|
-
private selectionForNode(node: LayerTreeElement|null): Selection|null {
|
|
295
|
-
return node?.layer ? new LayerSelection(node.layer) : null;
|
|
296
|
-
}
|
|
297
301
|
}
|
|
298
302
|
|
|
299
303
|
export const enum Events {
|
|
@@ -303,39 +307,3 @@ export const enum Events {
|
|
|
303
307
|
export interface EventTypes {
|
|
304
308
|
[Events.PAINT_PROFILER_REQUESTED]: Selection;
|
|
305
309
|
}
|
|
306
|
-
|
|
307
|
-
export class LayerTreeElement extends UI.TreeOutline.TreeElement {
|
|
308
|
-
// Watch out: This is different from treeOutline that
|
|
309
|
-
// LayerTreeElement inherits from UI.TreeOutline.TreeElement.
|
|
310
|
-
#treeOutline: LayerTreeOutline;
|
|
311
|
-
layer: SDK.LayerTreeBase.Layer;
|
|
312
|
-
|
|
313
|
-
constructor(tree: LayerTreeOutline, layer: SDK.LayerTreeBase.Layer) {
|
|
314
|
-
super();
|
|
315
|
-
this.#treeOutline = tree;
|
|
316
|
-
this.layer = layer;
|
|
317
|
-
layerToTreeElement.set(layer, this);
|
|
318
|
-
this.update();
|
|
319
|
-
}
|
|
320
|
-
|
|
321
|
-
update(): void {
|
|
322
|
-
const node = this.layer.nodeForSelfOrAncestor();
|
|
323
|
-
const title = document.createDocumentFragment();
|
|
324
|
-
UI.UIUtils.createTextChild(title, node ? node.simpleSelector() : '#' + this.layer.id());
|
|
325
|
-
const details = title.createChild('span', 'dimmed');
|
|
326
|
-
details.textContent =
|
|
327
|
-
i18nString(UIStrings.updateChildDimension, {PH1: this.layer.width(), PH2: this.layer.height()});
|
|
328
|
-
this.title = title;
|
|
329
|
-
}
|
|
330
|
-
|
|
331
|
-
override onselect(): boolean {
|
|
332
|
-
this.#treeOutline.selectedNodeChanged(this);
|
|
333
|
-
return false;
|
|
334
|
-
}
|
|
335
|
-
|
|
336
|
-
setHovered(hovered: boolean): void {
|
|
337
|
-
this.listItemElement.classList.toggle('hovered', hovered);
|
|
338
|
-
}
|
|
339
|
-
}
|
|
340
|
-
|
|
341
|
-
export const layerToTreeElement = new WeakMap<SDK.LayerTreeBase.Layer, LayerTreeElement>();
|
|
@@ -55,16 +55,6 @@ const UIStrings = {
|
|
|
55
55
|
* @example {about:gpu} PH1
|
|
56
56
|
*/
|
|
57
57
|
checkSForPossibleReasons: 'Check {PH1} for possible reasons.',
|
|
58
|
-
/**
|
|
59
|
-
* @description Text for a checkbox in the toolbar of the Layers panel to show the area of slow scroll rect
|
|
60
|
-
*/
|
|
61
|
-
slowScrollRects: 'Slow scroll rects',
|
|
62
|
-
/**
|
|
63
|
-
* @description Text for a checkbox in the toolbar of the Layers panel. This is a noun, for a
|
|
64
|
-
* setting meaning 'display paints in the layers viewer'. 'Paints' here means 'paint events' i.e.
|
|
65
|
-
* when the browser draws pixels to the screen.
|
|
66
|
-
*/
|
|
67
|
-
paints: 'Paints',
|
|
68
58
|
/**
|
|
69
59
|
* @description A context menu item in the DView of the Layers panel
|
|
70
60
|
*/
|
|
@@ -111,7 +101,7 @@ export const DEFAULT_VIEW = (input: ViewInput, output: ViewOutput, target: HTMLE
|
|
|
111
101
|
${input.panelToolbar}
|
|
112
102
|
${input.error === 'missing-root' ? html`<div>${widget(UI.EmptyWidget.EmptyWidget, {
|
|
113
103
|
header: i18nString(UIStrings.noLayerInformation),
|
|
114
|
-
text: i18nString(UIStrings.layerExplanation)
|
|
104
|
+
text: i18nString(UIStrings.layerExplanation),
|
|
115
105
|
})}</div>` : Lit.nothing}
|
|
116
106
|
${input.error === 'webgl-disabled' ? html`<div>${widget(UI.EmptyWidget.EmptyWidget, {
|
|
117
107
|
header: i18nString(UIStrings.cantDisplayLayers),
|
|
@@ -120,16 +110,16 @@ export const DEFAULT_VIEW = (input: ViewInput, output: ViewOutput, target: HTMLE
|
|
|
120
110
|
uiI18n.getFormatLocalizedString(
|
|
121
111
|
str_, UIStrings.checkSForPossibleReasons,
|
|
122
112
|
{
|
|
123
|
-
PH1: Link.create('chrome://gpu', undefined, undefined, 'about-gpu', 0, true)
|
|
124
|
-
}
|
|
125
|
-
)
|
|
113
|
+
PH1: Link.create('chrome://gpu', undefined, undefined, 'about-gpu', 0, true),
|
|
114
|
+
},
|
|
115
|
+
),
|
|
126
116
|
],
|
|
127
117
|
})}</div>` : Lit.nothing}
|
|
128
118
|
<canvas
|
|
129
119
|
tabindex="0"
|
|
130
120
|
jslog=${VisualLogging.canvas('layers').track({
|
|
131
121
|
click: true,
|
|
132
|
-
drag: true
|
|
122
|
+
drag: true,
|
|
133
123
|
})}
|
|
134
124
|
aria-label=${i18nString(UIStrings.dLayersView)}
|
|
135
125
|
@dblclick=${input.onDoubleClick}
|
|
@@ -194,10 +184,9 @@ export class Layers3DView extends Common.ObjectWrapper.eventMixin<EventTypes, ty
|
|
|
194
184
|
|
|
195
185
|
this.transformController.addEventListener(TransformControllerEvents.TRANSFORM_CHANGED, this.updateData, this);
|
|
196
186
|
this.panelToolbar = this.transformController.toolbar();
|
|
197
|
-
this.showPaintsSetting = this.createVisibilitySetting(
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
i18nString(UIStrings.slowScrollRects), 'frame-viewer-show-slow-scroll-rects', true, this.panelToolbar);
|
|
187
|
+
this.showPaintsSetting = this.createVisibilitySetting('frame-viewer-show-paints', this.panelToolbar);
|
|
188
|
+
this.showSlowScrollRectsSetting =
|
|
189
|
+
this.createVisibilitySetting('frame-viewer-show-slow-scroll-rects', this.panelToolbar);
|
|
201
190
|
this.showPaintsSetting.addChangeListener(this.updatePaints, this);
|
|
202
191
|
Common.Settings.Settings.instance()
|
|
203
192
|
.moduleSetting('frame-viewer-chrome-window')
|
|
@@ -875,10 +864,8 @@ export class Layers3DView extends Common.ObjectWrapper.eventMixin<EventTypes, ty
|
|
|
875
864
|
}
|
|
876
865
|
|
|
877
866
|
private createVisibilitySetting(
|
|
878
|
-
|
|
879
|
-
|
|
880
|
-
const setting = Common.Settings.Settings.instance().createSetting(name, value);
|
|
881
|
-
setting.setTitle(caption);
|
|
867
|
+
name: string, toolbar: UI.Toolbar.Toolbar): Common.Settings.Setting<boolean> {
|
|
868
|
+
const setting = Common.Settings.Settings.instance().moduleSetting<boolean>(name);
|
|
882
869
|
setting.addChangeListener(this.updateData, this);
|
|
883
870
|
toolbar.appendToolbarItem(new UI.Toolbar.ToolbarSettingCheckbox(setting));
|
|
884
871
|
return setting;
|
|
@@ -2,10 +2,19 @@
|
|
|
2
2
|
// Use of this source code is governed by a BSD-style license that can be
|
|
3
3
|
// found in the LICENSE file.
|
|
4
4
|
|
|
5
|
+
import * as Common from '../../core/common/common.js';
|
|
5
6
|
import * as i18n from '../../core/i18n/i18n.js';
|
|
6
7
|
import * as UI from '../../ui/legacy/legacy.js';
|
|
7
8
|
|
|
8
9
|
const UIStrings = {
|
|
10
|
+
/**
|
|
11
|
+
* @description Title of a setting in Layer Viewer.
|
|
12
|
+
*/
|
|
13
|
+
paints: 'Paints',
|
|
14
|
+
/**
|
|
15
|
+
* @description Title of a setting in Layer Viewer.
|
|
16
|
+
*/
|
|
17
|
+
slowScrollRects: 'Slow scroll rects',
|
|
9
18
|
/**
|
|
10
19
|
* @description Text in the Shortcuts page to explain a keyboard shortcut (reset view in Layers Panel)
|
|
11
20
|
*/
|
|
@@ -162,3 +171,21 @@ UI.ActionRegistration.registerActionExtension({
|
|
|
162
171
|
},
|
|
163
172
|
],
|
|
164
173
|
});
|
|
174
|
+
|
|
175
|
+
Common.Settings.registerSettingExtension({
|
|
176
|
+
category: Common.Settings.SettingCategory.NONE,
|
|
177
|
+
storageType: Common.Settings.SettingStorageType.GLOBAL,
|
|
178
|
+
title: i18nLazyString(UIStrings.paints),
|
|
179
|
+
settingName: 'frame-viewer-show-paints',
|
|
180
|
+
settingType: Common.Settings.SettingType.BOOLEAN,
|
|
181
|
+
defaultValue: false,
|
|
182
|
+
});
|
|
183
|
+
|
|
184
|
+
Common.Settings.registerSettingExtension({
|
|
185
|
+
category: Common.Settings.SettingCategory.NONE,
|
|
186
|
+
storageType: Common.Settings.SettingStorageType.GLOBAL,
|
|
187
|
+
title: i18nLazyString(UIStrings.slowScrollRects),
|
|
188
|
+
settingName: 'frame-viewer-show-slow-scroll-rects',
|
|
189
|
+
settingType: Common.Settings.SettingType.BOOLEAN,
|
|
190
|
+
defaultValue: true,
|
|
191
|
+
});
|