chrome-devtools-frontend 1.0.1657855 → 1.0.1661063
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/evaluate-ai-css-completion/SKILL.md +133 -0
- package/.agents/skills/evaluate-ai-css-completion/scripts/evaluate.js +76 -0
- package/.agents/skills/migrate-chromium-test/SKILL.md +15 -70
- package/.agents/skills/ui-eng-vision-orchestrator/SKILL.md +37 -18
- package/.agents/skills/version-control/SKILL.md +8 -1
- package/AUTHORS +1 -0
- package/SECURITY.md +3 -0
- package/docs/get_the_code.md +6 -0
- package/eslint.config.mjs +7 -0
- package/extension-api/ExtensionAPI.d.ts +88 -0
- package/front_end/Tests.js +6 -6
- package/front_end/core/common/Gzip.ts +12 -5
- package/front_end/core/host/AidaClient.ts +35 -9
- package/front_end/core/host/GdpClient.ts +10 -7
- package/front_end/core/host/InspectorFrontendHost.ts +1 -0
- package/front_end/core/host/InspectorFrontendHostStub.ts +2 -0
- package/front_end/core/platform/StringUtilities.ts +55 -4
- package/front_end/core/sdk/AccessibilityModel.snapshot.txt +17 -0
- package/front_end/core/sdk/AccessibilityModel.ts +132 -2
- package/front_end/core/sdk/CPUThrottlingManager.ts +10 -5
- package/front_end/core/sdk/CompilerSourceMappingContentProvider.ts +2 -5
- package/front_end/core/sdk/ConsoleModel.ts +5 -5
- package/front_end/core/sdk/DOMDebuggerModel.ts +7 -1
- package/front_end/core/sdk/DOMModel.ts +33 -18
- package/front_end/core/sdk/DebuggerModel.ts +4 -4
- package/front_end/core/sdk/EventBreakpointsModel.ts +2 -0
- package/front_end/core/sdk/FrameManager.ts +1 -0
- package/front_end/core/sdk/IsolateManager.ts +1 -0
- package/front_end/core/sdk/NetworkManager.ts +59 -11
- package/front_end/core/sdk/NetworkRequest.ts +38 -1
- package/front_end/core/sdk/OverlayModel.ts +45 -6
- package/front_end/core/sdk/PageResourceLoader.ts +2 -0
- package/front_end/core/sdk/ResourceTreeModel.ts +6 -7
- package/front_end/core/sdk/ScreenCaptureModel.ts +2 -2
- package/front_end/core/sdk/ServerTiming.ts +17 -13
- package/front_end/core/sdk/ServiceWorkerCacheModel.ts +4 -2
- package/front_end/core/sdk/ServiceWorkerManager.ts +19 -5
- package/front_end/core/sdk/SourceMap.ts +5 -5
- package/front_end/core/sdk/SourceMapManager.ts +3 -2
- package/front_end/core/sdk/TargetManager.ts +14 -1
- package/front_end/core/sdk/TraceObject.ts +4 -2
- package/front_end/core/sdk/sdk-meta.ts +170 -0
- package/front_end/design_system_tokens.css +0 -5
- package/front_end/entrypoints/formatter_worker/FormattedContentBuilder.ts +5 -2
- package/front_end/entrypoints/formatter_worker/HTMLFormatter.ts +26 -4
- package/front_end/entrypoints/formatter_worker/JavaScriptFormatter.ts +8 -3
- package/front_end/entrypoints/inspector_main/InspectorMain.ts +4 -4
- package/front_end/entrypoints/inspector_main/OutermostTargetSelector.ts +2 -2
- package/front_end/entrypoints/inspector_main/RenderingOptions.ts +36 -37
- package/front_end/entrypoints/inspector_main/inspector_main-meta.ts +15 -33
- package/front_end/entrypoints/js_app/js_app.ts +6 -5
- package/front_end/entrypoints/main/GlobalAiButton.ts +4 -4
- package/front_end/entrypoints/main/MainImpl.ts +20 -22
- package/front_end/entrypoints/main/main-meta.ts +42 -42
- package/front_end/entrypoints/node_app/node_app.ts +3 -2
- package/front_end/entrypoints/worker_app/WorkerMain.ts +1 -1
- package/front_end/foundation/Universe.ts +44 -1
- package/front_end/generated/InspectorBackendCommands.ts +2 -2
- package/front_end/generated/SupportedCSSProperties.js +19 -12
- package/front_end/generated/protocol.ts +3 -1
- package/front_end/models/ai_assistance/AiConversation.ts +19 -17
- package/front_end/models/ai_assistance/AiHistoryStorage.ts +37 -14
- package/front_end/models/ai_assistance/AiUtils.ts +38 -42
- package/front_end/models/ai_assistance/agents/AiAgent.ts +5 -1
- package/front_end/models/ai_assistance/agents/ContextSelectionAgent.ts +3 -2
- package/front_end/models/ai_assistance/agents/PerformanceAgent.ts +2 -1
- package/front_end/models/ai_assistance/agents/StorageAgent.ts +7 -5
- package/front_end/models/ai_assistance/data_formatters/PerformanceTraceFormatter.snapshot.txt +270 -286
- package/front_end/models/ai_assistance/data_formatters/UnitFormatters.ts +20 -0
- package/front_end/models/ai_assistance/performance/AICallTree.ts +3 -1
- package/front_end/models/ai_assistance/tools/ListNetworkRequests.ts +3 -2
- package/front_end/models/autofill_manager/AutofillManager.ts +3 -1
- package/front_end/models/bindings/CompilerScriptMapping.ts +7 -7
- package/front_end/models/bindings/ContentProviderBasedProject.ts +4 -4
- package/front_end/models/bindings/DebuggerLanguagePlugins.ts +5 -5
- package/front_end/models/bindings/DefaultScriptMapping.ts +3 -3
- package/front_end/models/bindings/NetworkProject.ts +5 -10
- package/front_end/models/bindings/PresentationConsoleMessageHelper.ts +2 -1
- package/front_end/models/bindings/ResourceMapping.ts +3 -4
- package/front_end/models/bindings/ResourceScriptMapping.ts +2 -3
- package/front_end/models/bindings/ResourceUtils.ts +1 -1
- package/front_end/models/bindings/SASSSourceMapping.ts +11 -9
- package/front_end/models/bindings/StylesSourceMapping.ts +3 -3
- package/front_end/models/bindings/TempFile.ts +8 -3
- package/front_end/models/emulation/EmulatedDevices.ts +389 -8
- package/front_end/models/extensions/ExtensionAPI.ts +116 -52
- package/front_end/models/extensions/LanguageExtensionEndpoint.ts +13 -12
- package/front_end/models/formatter/ScriptFormatter.ts +8 -11
- package/front_end/models/issues_manager/BounceTrackingIssue.ts +1 -1
- package/front_end/models/issues_manager/ClientHintIssue.ts +1 -1
- package/front_end/models/issues_manager/ConnectionAllowlistIssue.ts +1 -1
- package/front_end/models/issues_manager/ContentSecurityPolicyIssue.ts +7 -7
- package/front_end/models/issues_manager/CookieDeprecationMetadataIssue.ts +2 -2
- package/front_end/models/issues_manager/CookieIssue.ts +27 -16
- package/front_end/models/issues_manager/CorsIssue.ts +3 -3
- package/front_end/models/issues_manager/CrossOriginEmbedderPolicyIssue.ts +2 -2
- package/front_end/models/issues_manager/DeprecationIssue.ts +3 -3
- package/front_end/models/issues_manager/EmailVerificationRequestIssue.ts +1 -1
- package/front_end/models/issues_manager/FederatedAuthRequestIssue.ts +1 -1
- package/front_end/models/issues_manager/FederatedAuthUserInfoRequestIssue.ts +1 -1
- package/front_end/models/issues_manager/GenericIssue.ts +7 -7
- package/front_end/models/issues_manager/HeavyAdIssue.ts +3 -3
- package/front_end/models/issues_manager/Issue.ts +11 -12
- package/front_end/models/issues_manager/IssueAggregator.ts +0 -9
- package/front_end/models/issues_manager/IssueResolver.ts +2 -2
- package/front_end/models/issues_manager/IssuesManager.ts +136 -137
- package/front_end/models/issues_manager/MixedContentIssue.ts +1 -1
- package/front_end/models/issues_manager/PartitioningBlobURLIssue.ts +3 -3
- package/front_end/models/issues_manager/QuirksModeIssue.ts +1 -1
- package/front_end/models/issues_manager/SRIMessageSignatureIssue.ts +2 -2
- package/front_end/models/issues_manager/SelectivePermissionsInterventionIssue.ts +2 -2
- package/front_end/models/issues_manager/SharedArrayBufferIssue.ts +2 -2
- package/front_end/models/issues_manager/SharedDictionaryIssue.ts +1 -1
- package/front_end/models/issues_manager/UnencodedDigestIssue.ts +3 -3
- package/front_end/models/issues_manager/issues_manager.ts +0 -2
- package/front_end/models/javascript_metadata/NativeFunctions.js +5 -1
- package/front_end/models/persistence/AutomaticFileSystemWorkspaceBinding.ts +5 -0
- package/front_end/models/source_map_scopes/FunctionCodeResolver.ts +13 -10
- package/front_end/models/stack_trace/StackTraceModel.ts +3 -3
- package/front_end/models/text_utils/ContentData.ts +27 -0
- package/front_end/models/trace/helpers/SamplesIntegrator.ts +21 -5
- package/front_end/models/trace_source_maps_resolver/SourceMapsResolver.ts +29 -14
- package/front_end/models/web_mcp/WebMCPModel.ts +24 -6
- package/front_end/models/workspace/IgnoreListManager.ts +6 -6
- package/front_end/models/workspace/UISourceCode.ts +3 -3
- package/front_end/models/workspace/WorkspaceImpl.ts +10 -1
- package/front_end/models/workspace_diff/WorkspaceDiff.ts +10 -4
- package/front_end/panels/ai_assistance/AiAssistancePanel.ts +25 -22
- package/front_end/panels/ai_assistance/ExportConversation.ts +3 -4
- package/front_end/panels/ai_assistance/ai_assistance-meta.ts +3 -3
- package/front_end/panels/ai_assistance/components/ChatInput.ts +2 -2
- package/front_end/panels/ai_assistance/components/ChatMessage.ts +9 -1
- package/front_end/panels/ai_assistance/components/DisabledWidget.ts +2 -2
- package/front_end/panels/animation/AnimationTimeline.ts +17 -19
- package/front_end/panels/animation/AnimationUI.ts +5 -5
- package/front_end/panels/animation/animation-meta.ts +2 -2
- package/front_end/panels/application/ApplicationPanelSidebar.ts +4 -3
- package/front_end/panels/application/DeviceBoundSessionsView.ts +2 -6
- package/front_end/panels/application/FrameDetailsView.ts +1 -1
- package/front_end/panels/application/IndexedDBViews.ts +220 -266
- package/front_end/panels/application/OpenedWindowDetailsView.ts +1 -1
- package/front_end/panels/application/ResourcesPanel.ts +9 -2
- package/front_end/panels/application/ServiceWorkersView.ts +252 -211
- package/front_end/panels/application/StorageView.ts +97 -33
- package/front_end/panels/application/WebMCPView.ts +53 -44
- package/front_end/panels/application/components/AdsView.ts +201 -30
- package/front_end/panels/application/components/adsView.css +25 -0
- package/front_end/panels/application/indexedDBViews.css +38 -9
- package/front_end/panels/application/preloading/components/RuleSetDetailsView.ts +2 -2
- package/front_end/panels/application/preloading/helper/PreloadingForward.ts +2 -1
- package/front_end/panels/application/storageView.css +26 -9
- package/front_end/panels/browser_debugger/XHRBreakpointsSidebarPane.ts +5 -1
- package/front_end/panels/browser_debugger/browser_debugger-meta.ts +8 -6
- package/front_end/panels/common/DOMLinkifier.ts +1 -1
- package/front_end/panels/common/ExtensionServer.ts +119 -14
- package/front_end/panels/console/ConsoleContextSelector.ts +1 -1
- package/front_end/panels/console/ConsolePinPane.ts +2 -2
- package/front_end/panels/console/ConsolePrompt.ts +2 -2
- package/front_end/panels/console/ConsoleView.ts +3 -2
- package/front_end/panels/console/PromptBuilder.ts +2 -1
- package/front_end/panels/console/SymbolizedErrorWidget.ts +2 -1
- package/front_end/panels/console_counters/WarningErrorCounter.ts +2 -2
- package/front_end/panels/coverage/CoverageListView.ts +28 -28
- package/front_end/panels/coverage/CoverageModel.ts +2 -1
- package/front_end/panels/coverage/CoverageView.ts +22 -22
- package/front_end/panels/coverage/coverage-meta.ts +5 -5
- package/front_end/panels/css_overview/CSSOverviewCompletedView.ts +36 -36
- package/front_end/panels/css_overview/CSSOverviewProcessingView.ts +1 -1
- package/front_end/panels/css_overview/CSSOverviewSidebarPanel.ts +2 -2
- package/front_end/panels/css_overview/CSSOverviewStartView.ts +6 -6
- package/front_end/panels/css_overview/CSSOverviewUnusedDeclarations.ts +6 -6
- package/front_end/panels/css_overview/css_overview-meta.ts +2 -2
- package/front_end/panels/developer_resources/DeveloperResourcesListView.ts +1 -1
- package/front_end/panels/elements/AccessibilityTreeUtils.ts +8 -102
- package/front_end/panels/elements/AccessibilityTreeView.ts +163 -70
- package/front_end/panels/elements/ElementsPanel.ts +17 -11
- package/front_end/panels/elements/ElementsTreeElement.ts +4 -1
- package/front_end/panels/elements/ElementsTreeOutline.ts +4 -4
- package/front_end/panels/elements/LayoutPane.ts +1 -1
- package/front_end/panels/elements/MetricsSidebarPane.ts +100 -34
- package/front_end/panels/elements/StylePropertiesSection.ts +2 -2
- package/front_end/panels/elements/StylePropertyTreeElement.ts +8 -2
- package/front_end/panels/elements/StylesSidebarPane.ts +1 -1
- package/front_end/panels/elements/components/AccessibilityTreeNode.ts +7 -18
- package/front_end/panels/elements/components/ElementsBreadcrumbs.ts +2 -2
- package/front_end/panels/elements/components/QueryContainer.ts +1 -1
- package/front_end/panels/emulation/DeviceModeView.ts +52 -70
- package/front_end/panels/issues/AffectedDirectivesView.ts +1 -1
- package/front_end/panels/issues/AffectedResourcesView.ts +2 -1
- package/front_end/panels/issues/IssueView.ts +0 -2
- package/front_end/panels/issues/IssuesPane.ts +1 -8
- package/front_end/panels/js_timeline/js_timeline-meta.ts +3 -2
- package/front_end/panels/layer_viewer/LayerViewHost.ts +1 -1
- package/front_end/panels/linear_memory_inspector/LinearMemoryInspectorController.ts +3 -3
- package/front_end/panels/linear_memory_inspector/LinearMemoryInspectorPane.ts +5 -5
- package/front_end/panels/linear_memory_inspector/components/LinearMemoryHighlightChipList.ts +4 -4
- package/front_end/panels/linear_memory_inspector/components/LinearMemoryInspector.ts +2 -2
- package/front_end/panels/linear_memory_inspector/components/LinearMemoryNavigator.ts +6 -6
- package/front_end/panels/linear_memory_inspector/components/LinearMemoryValueInterpreter.ts +3 -3
- package/front_end/panels/linear_memory_inspector/components/ValueInterpreterDisplay.ts +8 -9
- package/front_end/panels/linear_memory_inspector/components/ValueInterpreterDisplayUtils.ts +2 -2
- package/front_end/panels/linear_memory_inspector/components/ValueInterpreterSettings.ts +1 -1
- package/front_end/panels/linear_memory_inspector/linear_memory_inspector-meta.ts +2 -2
- package/front_end/panels/network/NetworkDataGridNode.ts +124 -36
- package/front_end/panels/network/NetworkLogView.ts +9 -1
- package/front_end/panels/network/NetworkLogViewColumns.ts +18 -0
- package/front_end/panels/network/NetworkPanel.ts +2 -1
- package/front_end/panels/network/RequestPayloadView.ts +68 -20
- package/front_end/panels/network/RequestPreviewView.ts +7 -1
- package/front_end/panels/network/RequestTimingView.ts +95 -127
- package/front_end/panels/network/components/ResponseHeaderSection.ts +1 -1
- package/front_end/panels/network/forward/UIFilter.ts +1 -0
- package/front_end/panels/network/requestPayloadView.css +10 -0
- package/front_end/panels/performance_monitor/PerformanceMonitor.ts +12 -12
- package/front_end/panels/performance_monitor/performance_monitor-meta.ts +7 -7
- package/front_end/panels/profiler/HeapDetachedElementsView.ts +2 -2
- package/front_end/panels/profiler/HeapProfileView.ts +563 -51
- package/front_end/panels/profiler/HeapSnapshotView.ts +14 -9
- package/front_end/panels/profiler/ProfilesPanel.ts +13 -7
- package/front_end/panels/profiler/WritableProfileHeader.ts +152 -0
- package/front_end/panels/profiler/profiler.ts +2 -2
- package/front_end/panels/recorder/{components/ControlButton.ts → ControlButton.ts} +9 -10
- package/front_end/panels/recorder/{components/CreateRecordingView.ts → CreateRecordingView.ts} +59 -58
- package/front_end/panels/recorder/ExtensionView.ts +123 -0
- package/front_end/panels/recorder/RecorderController.ts +102 -92
- package/front_end/panels/recorder/{components/RecordingListView.ts → RecordingListView.ts} +22 -23
- package/front_end/panels/recorder/{components/RecordingView.ts → RecordingView.ts} +99 -96
- package/front_end/panels/recorder/{components/ReplaySection.ts → ReplaySection.ts} +20 -20
- package/front_end/panels/recorder/{components/SelectorPicker.ts → SelectorPicker.ts} +13 -13
- package/front_end/panels/recorder/{components/StepEditor.ts → StepEditor.ts} +367 -336
- package/front_end/panels/recorder/{components/StepView.ts → StepView.ts} +48 -49
- package/front_end/panels/recorder/{components/TimelineSection.ts → TimelineSection.ts} +2 -2
- package/front_end/panels/recorder/models/RecorderSettings.ts +2 -2
- package/front_end/panels/recorder/recorder-meta.ts +7 -7
- package/front_end/panels/recorder/recorder.ts +23 -1
- package/front_end/panels/recorder/{components/recordingView.css → recordingView.css} +1 -1
- package/front_end/panels/recorder/util/util.ts +113 -0
- package/front_end/panels/screencast/ScreencastApp.ts +1 -1
- package/front_end/panels/screencast/ScreencastView.ts +12 -12
- package/front_end/panels/search/SearchResultsPane.ts +4 -4
- package/front_end/panels/search/SearchView.ts +20 -20
- package/front_end/panels/security/SecurityModel.ts +7 -7
- package/front_end/panels/security/SecurityPanel.ts +99 -107
- package/front_end/panels/security/SecurityPanelSidebar.ts +7 -7
- package/front_end/panels/security/security-meta.ts +2 -2
- package/front_end/panels/sensors/LocationsSettingsTab.ts +19 -19
- package/front_end/panels/sensors/SensorsView.ts +27 -27
- package/front_end/panels/sensors/sensors-meta.ts +13 -167
- package/front_end/panels/settings/AISettingsTab.ts +98 -56
- package/front_end/panels/settings/EditFileSystemView.ts +2 -2
- package/front_end/panels/settings/FrameworkIgnoreListSettingsTab.ts +20 -20
- package/front_end/panels/settings/KeybindsSettingsTab.ts +20 -21
- package/front_end/panels/settings/SettingsScreen.ts +11 -11
- package/front_end/panels/settings/WorkspaceSettingsTab.ts +5 -5
- package/front_end/panels/settings/components/SyncSection.ts +12 -12
- package/front_end/panels/settings/emulation/DevicesSettingsTab.ts +13 -13
- package/front_end/panels/settings/emulation/components/UserAgentClientHintsForm.ts +31 -31
- package/front_end/panels/settings/emulation/emulation-meta.ts +1 -1
- package/front_end/panels/settings/settings-meta.ts +14 -14
- package/front_end/panels/sources/InplaceFormatterEditorAction.ts +2 -2
- package/front_end/panels/sources/NavigatorView.ts +7 -6
- package/front_end/panels/sources/ScopeChainSidebarPane.ts +83 -37
- package/front_end/panels/sources/SourcesNavigator.ts +22 -21
- package/front_end/panels/sources/SourcesView.ts +10 -1
- package/front_end/panels/sources/TabbedEditorContainer.ts +1 -1
- package/front_end/panels/sources/scopeChainSidebarPane.css +12 -4
- package/front_end/panels/sources/sources-meta.ts +4 -4
- package/front_end/panels/timeline/CompatibilityTracksAppender.ts +5 -2
- package/front_end/panels/timeline/IsolateSelector.ts +10 -8
- package/front_end/panels/timeline/TimelineFlameChartDataProvider.ts +2 -1
- package/front_end/panels/timeline/TimelineFlameChartNetworkDataProvider.ts +2 -1
- package/front_end/panels/timeline/TimelineFlameChartView.ts +1 -1
- package/front_end/panels/timeline/TimelinePanel.ts +20 -8
- package/front_end/panels/timeline/TimelineUIUtils.ts +149 -131
- package/front_end/panels/timeline/components/NetworkRequestDetails.ts +4 -2
- package/front_end/panels/timeline/components/NetworkRequestTooltip.ts +4 -2
- package/front_end/panels/timeline/components/insights/ImageRef.ts +2 -1
- package/front_end/panels/timeline/timeline-meta.ts +3 -2
- package/front_end/panels/utils/utils.ts +7 -3
- package/front_end/panels/web_audio/WebAudioView.ts +17 -18
- package/front_end/panels/web_audio/web_audio-meta.ts +3 -3
- package/front_end/panels/whats_new/ReleaseNoteView.ts +1 -1
- package/front_end/panels/whats_new/whats_new-meta.ts +11 -11
- package/front_end/third_party/chromium/README.chromium +1 -1
- package/front_end/third_party/lit/lib/async-directive.d.ts +2 -1
- package/front_end/third_party/lit/lib/async-directive.js +1 -1
- package/front_end/third_party/lit/lib/async-directive.js.map +1 -1
- package/front_end/third_party/lit/lib/decorators.d.ts +2 -1
- package/front_end/third_party/lit/lib/decorators.js.map +1 -1
- package/front_end/third_party/lit/lib/directive.d.ts +2 -1
- package/front_end/third_party/lit/lib/directive.js.map +1 -1
- package/front_end/third_party/lit/lib/directives.d.ts +2 -1
- package/front_end/third_party/lit/lib/directives.js +8 -8
- package/front_end/third_party/lit/lib/directives.js.map +1 -1
- package/front_end/third_party/lit/lib/lit.d.ts +2 -1
- package/front_end/third_party/lit/lib/lit.js +1 -1
- package/front_end/third_party/lit/lib/lit.js.map +1 -1
- package/front_end/third_party/lit/lib/static-html.d.ts +2 -1
- package/front_end/third_party/lit/lib/static-html.js +1 -1
- package/front_end/third_party/lit/lib/static-html.js.map +1 -1
- package/front_end/third_party/lit/package.json +2 -2
- package/front_end/third_party/lit/rebuild.sh +1 -1
- package/front_end/third_party/lit/src/async-directive.ts +5 -0
- package/front_end/ui/components/dialogs/Dialog.ts +1 -1
- package/front_end/ui/components/dialogs/ShortcutDialog.ts +1 -1
- package/front_end/ui/components/diff_view/DiffView.ts +2 -2
- package/front_end/ui/components/issue_counter/IssueCounter.ts +3 -3
- package/front_end/ui/components/issue_counter/IssueLinkIcon.ts +5 -5
- package/front_end/ui/components/lists/List.ts +2 -2
- package/front_end/ui/components/panel_feedback/PreviewToggle.ts +1 -1
- package/front_end/ui/components/request_link_icon/RequestLinkIcon.ts +5 -5
- package/front_end/ui/components/settings/SettingCheckbox.ts +1 -1
- package/front_end/ui/components/snackbars/Snackbar.ts +1 -1
- package/front_end/ui/components/survey_link/SurveyLink.ts +3 -3
- package/front_end/ui/components/text_editor/config.ts +2 -2
- package/front_end/ui/components/tree_outline/TreeOutline.ts +34 -1
- package/front_end/ui/legacy/ReportView.ts +5 -0
- package/front_end/ui/legacy/Treeoutline.ts +6 -0
- package/front_end/ui/legacy/View.ts +1 -1
- package/front_end/ui/legacy/Widget.ts +14 -15
- package/front_end/ui/legacy/components/data_grid/DataGrid.ts +2 -0
- package/front_end/ui/legacy/components/data_grid/DataGridElement.ts +8 -3
- package/front_end/ui/legacy/components/data_grid/data_grid.ts +1 -0
- package/front_end/ui/legacy/components/object_ui/ObjectPopoverHelper.ts +1 -1
- package/front_end/ui/legacy/components/object_ui/ObjectPropertiesSection.ts +106 -38
- package/front_end/ui/legacy/components/source_frame/ResourceSourceFrame.ts +7 -1
- package/front_end/ui/legacy/components/source_frame/SourceFrame.ts +2 -1
- package/front_end/ui/legacy/components/utils/ImagePreview.ts +4 -2
- package/front_end/ui/legacy/components/utils/JSPresentationUtils.ts +10 -1
- package/front_end/ui/legacy/inspectorCommon.css +5 -0
- package/front_end/ui/visual_logging/KnownContextValues.ts +3 -0
- package/mcp/mcp.ts +2 -0
- package/package.json +4 -4
- package/front_end/models/issues_manager/AttributionReportingIssue.ts +0 -247
- package/front_end/models/issues_manager/descriptions/arInsecureContext.md +0 -7
- package/front_end/models/issues_manager/descriptions/arInvalidInfoHeader.md +0 -5
- package/front_end/models/issues_manager/descriptions/arInvalidRegisterOsSourceHeader.md +0 -5
- package/front_end/models/issues_manager/descriptions/arInvalidRegisterOsTriggerHeader.md +0 -5
- package/front_end/models/issues_manager/descriptions/arInvalidRegisterSourceHeader.md +0 -5
- package/front_end/models/issues_manager/descriptions/arInvalidRegisterTriggerHeader.md +0 -5
- package/front_end/models/issues_manager/descriptions/arNavigationRegistrationUniqueScopeAlreadySet.md +0 -5
- package/front_end/models/issues_manager/descriptions/arNavigationRegistrationWithoutTransientUserActivation.md +0 -6
- package/front_end/models/issues_manager/descriptions/arNoRegisterOsSourceHeader.md +0 -5
- package/front_end/models/issues_manager/descriptions/arNoRegisterOsTriggerHeader.md +0 -5
- package/front_end/models/issues_manager/descriptions/arNoRegisterSourceHeader.md +0 -5
- package/front_end/models/issues_manager/descriptions/arNoRegisterTriggerHeader.md +0 -5
- package/front_end/models/issues_manager/descriptions/arNoWebOrOsSupport.md +0 -4
- package/front_end/models/issues_manager/descriptions/arOsSourceIgnored.md +0 -18
- package/front_end/models/issues_manager/descriptions/arOsTriggerIgnored.md +0 -19
- package/front_end/models/issues_manager/descriptions/arPermissionPolicyDisabled.md +0 -8
- package/front_end/models/issues_manager/descriptions/arSourceAndTriggerHeaders.md +0 -9
- package/front_end/models/issues_manager/descriptions/arSourceIgnored.md +0 -13
- package/front_end/models/issues_manager/descriptions/arTriggerIgnored.md +0 -12
- package/front_end/models/issues_manager/descriptions/arUntrustworthyReportingOrigin.md +0 -10
- package/front_end/models/issues_manager/descriptions/arWebAndOsHeaders.md +0 -11
- package/front_end/panels/issues/AttributionReportingIssueDetailsView.ts +0 -182
- package/front_end/panels/profiler/ProfileView.ts +0 -611
- package/front_end/panels/recorder/components/ExtensionView.ts +0 -132
- package/front_end/panels/recorder/components/components.ts +0 -25
- package/front_end/panels/recorder/components/util.ts +0 -116
- /package/front_end/panels/recorder/{components/controlButton.css → controlButton.css} +0 -0
- /package/front_end/panels/recorder/{components/createRecordingView.css → createRecordingView.css} +0 -0
- /package/front_end/panels/recorder/{components/extensionView.css → extensionView.css} +0 -0
- /package/front_end/panels/recorder/{components/recordingListView.css → recordingListView.css} +0 -0
- /package/front_end/panels/recorder/{components/replaySection.css → replaySection.css} +0 -0
- /package/front_end/panels/recorder/{components/selectorPicker.css → selectorPicker.css} +0 -0
- /package/front_end/panels/recorder/{components/startView.css → startView.css} +0 -0
- /package/front_end/panels/recorder/{components/stepEditor.css → stepEditor.css} +0 -0
- /package/front_end/panels/recorder/{components/stepView.css → stepView.css} +0 -0
- /package/front_end/panels/recorder/{components/timelineSection.css → timelineSection.css} +0 -0
|
@@ -66,6 +66,19 @@ export class ItemMouseOverEvent<TreeNodeDataType> extends Event {
|
|
|
66
66
|
}
|
|
67
67
|
}
|
|
68
68
|
|
|
69
|
+
export class ItemContextMenuEvent<TreeNodeDataType> extends Event {
|
|
70
|
+
static readonly eventName = 'itemcontextmenu';
|
|
71
|
+
data: {
|
|
72
|
+
node: TreeNode<TreeNodeDataType>,
|
|
73
|
+
originalEvent: MouseEvent,
|
|
74
|
+
};
|
|
75
|
+
|
|
76
|
+
constructor(node: TreeNode<TreeNodeDataType>, originalEvent: MouseEvent) {
|
|
77
|
+
super(ItemContextMenuEvent.eventName, {bubbles: true, composed: true});
|
|
78
|
+
this.data = {node, originalEvent};
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
|
|
69
82
|
export class ItemMouseOutEvent<TreeNodeDataType> extends Event {
|
|
70
83
|
static readonly eventName = 'itemmouseout';
|
|
71
84
|
data: {
|
|
@@ -332,14 +345,27 @@ export class TreeOutline<TreeNodeDataType> extends HTMLElement {
|
|
|
332
345
|
void this.#focusTreeNode(domNode);
|
|
333
346
|
}
|
|
334
347
|
|
|
348
|
+
#onContextMenu(event: MouseEvent, node: TreeNode<TreeNodeDataType>): void {
|
|
349
|
+
if (!node) {
|
|
350
|
+
return;
|
|
351
|
+
}
|
|
352
|
+
const innerEvent = new ItemContextMenuEvent(node, event);
|
|
353
|
+
this.dispatchEvent(innerEvent);
|
|
354
|
+
if (innerEvent.defaultPrevented) {
|
|
355
|
+
event.stopPropagation();
|
|
356
|
+
event.preventDefault();
|
|
357
|
+
void this.#focusTreeNode((event.currentTarget as HTMLElement)?.parentElement as HTMLLIElement);
|
|
358
|
+
}
|
|
359
|
+
}
|
|
360
|
+
|
|
335
361
|
async #focusTreeNode(domNode: HTMLLIElement): Promise<void> {
|
|
336
362
|
const treeNode = this.#domNodeToTreeNodeMap.get(domNode);
|
|
337
363
|
if (!treeNode) {
|
|
338
364
|
return;
|
|
339
365
|
}
|
|
340
366
|
this.#selectedTreeNode = treeNode;
|
|
341
|
-
await this.#render();
|
|
342
367
|
this.dispatchEvent(new ItemSelectedEvent(treeNode));
|
|
368
|
+
await this.#render();
|
|
343
369
|
void RenderCoordinator.write('DOMNode focus', () => {
|
|
344
370
|
domNode.focus();
|
|
345
371
|
});
|
|
@@ -496,6 +522,7 @@ export class TreeOutline<TreeNodeDataType> extends HTMLElement {
|
|
|
496
522
|
})}
|
|
497
523
|
>
|
|
498
524
|
<span class="arrow-and-key-wrapper"
|
|
525
|
+
@contextmenu=${(event: MouseEvent) => this.#onContextMenu(event, node)}
|
|
499
526
|
@mouseover=${() => {
|
|
500
527
|
this.dispatchEvent(new ItemMouseOverEvent(node));
|
|
501
528
|
}}
|
|
@@ -573,6 +600,12 @@ export class TreeOutline<TreeNodeDataType> extends HTMLElement {
|
|
|
573
600
|
customElements.define('devtools-tree-outline', TreeOutline);
|
|
574
601
|
|
|
575
602
|
declare global {
|
|
603
|
+
interface HTMLElementEventMap {
|
|
604
|
+
[ItemSelectedEvent.eventName]: ItemSelectedEvent<unknown>;
|
|
605
|
+
[ItemMouseOverEvent.eventName]: ItemMouseOverEvent<unknown>;
|
|
606
|
+
[ItemMouseOutEvent.eventName]: ItemMouseOutEvent<unknown>;
|
|
607
|
+
[ItemContextMenuEvent.eventName]: ItemContextMenuEvent<unknown>;
|
|
608
|
+
}
|
|
576
609
|
interface HTMLElementTagNameMap {
|
|
577
610
|
'devtools-tree-outline': TreeOutline<unknown>;
|
|
578
611
|
}
|
|
@@ -142,6 +142,11 @@ export class Section extends VBox {
|
|
|
142
142
|
getFieldElement(): HTMLElement {
|
|
143
143
|
return this.fieldList;
|
|
144
144
|
}
|
|
145
|
+
|
|
146
|
+
getHeaderElement(): HTMLElement {
|
|
147
|
+
return this.headerElement;
|
|
148
|
+
}
|
|
149
|
+
|
|
145
150
|
appendFieldWithCustomView(customElement: HTMLElement): void {
|
|
146
151
|
this.fieldList.append(customElement);
|
|
147
152
|
}
|
|
@@ -1895,6 +1895,9 @@ export class TreeViewElement extends HTMLElementWithLightDOMTemplate {
|
|
|
1895
1895
|
removeNode(treeElement);
|
|
1896
1896
|
}
|
|
1897
1897
|
parent.treeElement.insertChild(treeElement, index);
|
|
1898
|
+
if (parent.treeElement instanceof TreeViewTreeElement) {
|
|
1899
|
+
parent.treeElement.updateExpansionFromAttribute();
|
|
1900
|
+
}
|
|
1898
1901
|
if (hasBooleanAttribute(node, 'selected')) {
|
|
1899
1902
|
treeElement.revealAndSelect(true);
|
|
1900
1903
|
}
|
|
@@ -2034,6 +2037,9 @@ export const ifExpanded = Lit.Directive.directive(IfExpandedDirective);
|
|
|
2034
2037
|
export class TreeElementWrapper extends HTMLElement {
|
|
2035
2038
|
#treeElement?: TreeElement;
|
|
2036
2039
|
set treeElement(treeElement: TreeElement) {
|
|
2040
|
+
if (this.#treeElement === treeElement) {
|
|
2041
|
+
return;
|
|
2042
|
+
}
|
|
2037
2043
|
if (this.#treeElement?.parent) {
|
|
2038
2044
|
const parent = this.#treeElement.parent;
|
|
2039
2045
|
const index = parent.indexOfChild(this.#treeElement);
|
|
@@ -84,7 +84,8 @@ function enqueueIntoNextUpdateQueue(widget: AnyWidget): Promise<void> {
|
|
|
84
84
|
nextUpdateQueue.delete(widget);
|
|
85
85
|
nextUpdateQueue.set(widget, scheduledUpdate);
|
|
86
86
|
if (pendingAnimationFrame === null) {
|
|
87
|
-
|
|
87
|
+
const widgetWindow = widget.contentElement.window() || window;
|
|
88
|
+
pendingAnimationFrame = widgetWindow.requestAnimationFrame(runNextUpdate);
|
|
88
89
|
}
|
|
89
90
|
return scheduledUpdate.promise;
|
|
90
91
|
}
|
|
@@ -155,7 +156,8 @@ function runNextUpdate(): void {
|
|
|
155
156
|
if (nextUpdate) {
|
|
156
157
|
void nextUpdate.promise.then(resolve);
|
|
157
158
|
if (pendingAnimationFrame === null) {
|
|
158
|
-
|
|
159
|
+
const widgetWindow = widget.contentElement.window() || window;
|
|
160
|
+
pendingAnimationFrame = widgetWindow.requestAnimationFrame(runNextUpdate);
|
|
159
161
|
}
|
|
160
162
|
} else {
|
|
161
163
|
resolve();
|
|
@@ -182,16 +184,16 @@ function runNextUpdate(): void {
|
|
|
182
184
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
183
185
|
const widgetConfigs = new WeakMap<HTMLElement, WidgetConfig<any>>();
|
|
184
186
|
|
|
185
|
-
export function registerWidgetConfig<WidgetT extends AnyWidget>(
|
|
186
|
-
|
|
187
|
+
export function registerWidgetConfig<WidgetT extends AnyWidget>(element: HTMLElement,
|
|
188
|
+
config: WidgetConfig<WidgetT>): void {
|
|
187
189
|
if (!widgetConfigs.has(element)) {
|
|
188
190
|
setUpLifecycleTracking(element);
|
|
189
191
|
}
|
|
190
192
|
widgetConfigs.set(element, config);
|
|
191
193
|
}
|
|
192
194
|
|
|
193
|
-
function instantiateWidget<WidgetT extends AnyWidget>(
|
|
194
|
-
|
|
195
|
+
function instantiateWidget<WidgetT extends AnyWidget>(element: HTMLElement,
|
|
196
|
+
widgetConfig: WidgetConfig<WidgetT>): WidgetT {
|
|
195
197
|
if (!widgetConfig.widgetClass) {
|
|
196
198
|
throw new Error('No widgetClass defined');
|
|
197
199
|
}
|
|
@@ -794,9 +796,8 @@ export class Widget<ContentTypeT extends HTMLElement|DocumentFragment = HTMLElem
|
|
|
794
796
|
if (this.#isRoot) {
|
|
795
797
|
assert(!currentParent, 'Attempt to show root widget under another widget');
|
|
796
798
|
} else {
|
|
797
|
-
assert(
|
|
798
|
-
|
|
799
|
-
'Attempt to show under node belonging to alien widget');
|
|
799
|
+
assert(currentParent && widgetMap.get(currentParent) === this.#parentWidget,
|
|
800
|
+
'Attempt to show under node belonging to alien widget');
|
|
800
801
|
}
|
|
801
802
|
|
|
802
803
|
const wasVisible = this.#visible;
|
|
@@ -1031,9 +1032,8 @@ export class Widget<ContentTypeT extends HTMLElement|DocumentFragment = HTMLElem
|
|
|
1031
1032
|
getDefaultFocusedElement(): HTMLElement|null {
|
|
1032
1033
|
const elements = this.getDefaultFocusedElements();
|
|
1033
1034
|
if (elements.length > 1) {
|
|
1034
|
-
console.error(
|
|
1035
|
-
|
|
1036
|
-
...elements.map(e => Platform.StringUtilities.trimMiddle(e.outerHTML, 250)));
|
|
1035
|
+
console.error('Multiple autofocus elements found', this.constructor.name,
|
|
1036
|
+
...elements.map(e => Platform.StringUtilities.trimMiddle(e.outerHTML, 250)));
|
|
1037
1037
|
}
|
|
1038
1038
|
return elements[0] || null;
|
|
1039
1039
|
}
|
|
@@ -1110,9 +1110,8 @@ export class Widget<ContentTypeT extends HTMLElement|DocumentFragment = HTMLElem
|
|
|
1110
1110
|
|
|
1111
1111
|
private hasNonZeroConstraints(): boolean {
|
|
1112
1112
|
const constraints = this.constraints();
|
|
1113
|
-
return Boolean(
|
|
1114
|
-
|
|
1115
|
-
constraints.preferred.height);
|
|
1113
|
+
return Boolean(constraints.minimum.width || constraints.minimum.height || constraints.preferred.width ||
|
|
1114
|
+
constraints.preferred.height);
|
|
1116
1115
|
}
|
|
1117
1116
|
|
|
1118
1117
|
suspendInvalidations(): void {
|
|
@@ -36,6 +36,8 @@ import * as UI from '../../legacy.js';
|
|
|
36
36
|
import dataGridStyles from './dataGrid.css.js';
|
|
37
37
|
import type {DataGridInternalToken} from './DataGridElement.js';
|
|
38
38
|
|
|
39
|
+
export {dataGridStyles};
|
|
40
|
+
|
|
39
41
|
const UIStrings = {
|
|
40
42
|
/**
|
|
41
43
|
* @description Accessible text label for expandible nodes in datagrids
|
|
@@ -221,10 +221,15 @@ export class DataGridElement extends UI.UIUtils.HTMLElementWithLightDOMTemplate
|
|
|
221
221
|
const titleDOMFragment = column.firstElementChild ? document.createDocumentFragment() : undefined;
|
|
222
222
|
if (titleDOMFragment) {
|
|
223
223
|
title = '';
|
|
224
|
-
for (const child of column.
|
|
224
|
+
for (const child of column.childNodes) {
|
|
225
225
|
titleDOMFragment.appendChild(child.cloneNode(true));
|
|
226
|
-
|
|
226
|
+
if (child instanceof Element && child.shadowRoot) {
|
|
227
|
+
title += child.shadowRoot.textContent;
|
|
228
|
+
} else if (child.nodeType !== Node.COMMENT_NODE) {
|
|
229
|
+
title += child.textContent ?? '';
|
|
230
|
+
}
|
|
227
231
|
}
|
|
232
|
+
title = title.trim();
|
|
228
233
|
}
|
|
229
234
|
const sortable = hasBooleanAttribute(column, 'sortable');
|
|
230
235
|
const width = column.getAttribute('width') ?? undefined;
|
|
@@ -264,7 +269,7 @@ export class DataGridElement extends UI.UIUtils.HTMLElementWithLightDOMTemplate
|
|
|
264
269
|
const visibleColumns = new Set(this.#columns.map(({id}) => id).filter(id => !this.#hiddenColumns.has(id)));
|
|
265
270
|
this.#dataGrid.setColumnsVisibility(visibleColumns);
|
|
266
271
|
this.#dataGrid.setEditCallback(hasEditableColumn ? this.#editCallback.bind(this) : undefined, INTERNAL_TOKEN);
|
|
267
|
-
this.#dataGrid.deleteCallback =
|
|
272
|
+
this.#dataGrid.deleteCallback = this.#deleteCallback.bind(this);
|
|
268
273
|
}
|
|
269
274
|
|
|
270
275
|
#needUpdateColumns(mutationList: MutationRecord[]): boolean {
|
|
@@ -15,5 +15,6 @@ import * as ShowMoreDataGridNode from './ShowMoreDataGridNode.js';
|
|
|
15
15
|
import * as SortableDataGrid from './SortableDataGrid.js';
|
|
16
16
|
import * as ViewportDataGrid from './ViewportDataGrid.js';
|
|
17
17
|
|
|
18
|
+
export {dataGridStyles} from './DataGrid.js';
|
|
18
19
|
export {ifExpanded} from './DataGridElement.js';
|
|
19
20
|
export {DataGrid, DataGridExporter, ShowMoreDataGridNode, SortableDataGrid, ViewportDataGrid};
|
|
@@ -37,7 +37,7 @@ export class ObjectPopoverHelper {
|
|
|
37
37
|
|
|
38
38
|
dispose(): void {
|
|
39
39
|
if (this.resultHighlightedAsDOM) {
|
|
40
|
-
SDK.OverlayModel.OverlayModel.hideDOMNodeHighlight();
|
|
40
|
+
SDK.OverlayModel.OverlayModel.hideDOMNodeHighlight(SDK.TargetManager.TargetManager.instance());
|
|
41
41
|
}
|
|
42
42
|
if (this.linkifier) {
|
|
43
43
|
this.linkifier.dispose();
|
|
@@ -52,7 +52,7 @@ import {RemoteObjectPreviewFormatter, renderNodeTitle} from './RemoteObjectPrevi
|
|
|
52
52
|
|
|
53
53
|
export {objectPropertiesSectionStyles, objectValueStyles};
|
|
54
54
|
const {widget} = UI.Widget;
|
|
55
|
-
const {ref, repeat, ifDefined, classMap} = Directives;
|
|
55
|
+
const {ref, repeat, ifDefined, classMap, until} = Directives;
|
|
56
56
|
const UIStrings = {
|
|
57
57
|
/**
|
|
58
58
|
* @description Text in Object Properties Section
|
|
@@ -92,6 +92,10 @@ const UIStrings = {
|
|
|
92
92
|
* @example {50} PH1
|
|
93
93
|
*/
|
|
94
94
|
showAllD: 'Show all {PH1}',
|
|
95
|
+
/**
|
|
96
|
+
* @description Show all properties including those with null or undefined values
|
|
97
|
+
*/
|
|
98
|
+
showAll: 'Show all',
|
|
95
99
|
/**
|
|
96
100
|
* @description Value element text content in Object Properties Section. Shown when the developer is
|
|
97
101
|
* viewing a variable in the Scope view, whose value is not available (i.e. because it was optimized
|
|
@@ -145,6 +149,13 @@ const i18nString = i18n.i18n.getLocalizedString.bind(undefined, str_);
|
|
|
145
149
|
export const EXPANDABLE_MAX_DEPTH = 100;
|
|
146
150
|
|
|
147
151
|
const objectPropertiesSectionMap = new WeakMap<Element, ObjectPropertiesSection>();
|
|
152
|
+
// TODO(crbug.com/457388389): This cache is a temporary workaround for the <devtools-tree> migration.
|
|
153
|
+
// It can be removed once the entire ObjectPropertiesSection is fully migrated to Lit and
|
|
154
|
+
// the legacy TreeOutline/TreeElement dependencies are removed.
|
|
155
|
+
const topLevelNodesCache = new WeakMap<ObjectTreeNodeBase, {
|
|
156
|
+
nodes: UI.TreeOutline.TreeElement[],
|
|
157
|
+
linkifier?: Components.Linkifier.Linkifier,
|
|
158
|
+
}>();
|
|
148
159
|
|
|
149
160
|
interface NodeChildren {
|
|
150
161
|
properties?: ObjectTreeNode[];
|
|
@@ -796,7 +807,7 @@ export class ObjectTreeNode extends ObjectTreeNodeBase {
|
|
|
796
807
|
} else if (isInteger.test(this.name)) {
|
|
797
808
|
this.#path = `${parentPath}[${this.name}]`;
|
|
798
809
|
} else {
|
|
799
|
-
this.#path = `${parentPath}[${
|
|
810
|
+
this.#path = `${parentPath}[${Platform.StringUtilities.formatAsJSLiteral(this.name)}]`;
|
|
800
811
|
}
|
|
801
812
|
}
|
|
802
813
|
return this.#path;
|
|
@@ -1141,7 +1152,7 @@ export class ObjectPropertiesSection extends UI.TreeOutline.TreeOutlineInShadow
|
|
|
1141
1152
|
return html`<span class=value title=${description}>${'<' + i18nString(UIStrings.unknown) + '>'}</span>`;
|
|
1142
1153
|
}
|
|
1143
1154
|
if (type === 'string' && typeof description === 'string') {
|
|
1144
|
-
const text = JSON.stringify(description);
|
|
1155
|
+
const text = Platform.StringUtilities.escapeUnicode(JSON.stringify(description));
|
|
1145
1156
|
const tooLong = description.length > maxRenderableStringLength;
|
|
1146
1157
|
return html`<span class="value object-value-string" title=${ifDefined(tooLong ? undefined : description)}>${
|
|
1147
1158
|
tooLong ? widget(ExpandableTextPropertyValue, {text}) : text}</span>`;
|
|
@@ -1152,7 +1163,7 @@ export class ObjectPropertiesSection extends UI.TreeOutline.TreeOutlineInShadow
|
|
|
1152
1163
|
return html`<span class="value object-value-trustedtype" title=${ifDefined(tooLong ? undefined : text)}>${
|
|
1153
1164
|
tooLong ? widget(ExpandableTextPropertyValue, {text}) :
|
|
1154
1165
|
html`${className} <span class=object-value-string title=${description}>${
|
|
1155
|
-
JSON.stringify(description)}</span>`}</span>`;
|
|
1166
|
+
Platform.StringUtilities.escapeUnicode(JSON.stringify(description))}</span>`}</span>`;
|
|
1156
1167
|
}
|
|
1157
1168
|
if (type === 'function') {
|
|
1158
1169
|
return ObjectPropertiesSection.valueElementForFunctionDescription(description, undefined, undefined, 'value');
|
|
@@ -1164,7 +1175,8 @@ export class ObjectPropertiesSection extends UI.TreeOutline.TreeOutlineInShadow
|
|
|
1164
1175
|
event.consume(true);
|
|
1165
1176
|
}}
|
|
1166
1177
|
@mousemove=${() => SDK.OverlayModel.OverlayModel.highlightObjectAsDOMNode(value)}
|
|
1167
|
-
@mouseleave=${
|
|
1178
|
+
@mouseleave=${
|
|
1179
|
+
() => SDK.OverlayModel.OverlayModel.hideDOMNodeHighlight(SDK.TargetManager.TargetManager.instance())}
|
|
1168
1180
|
>${renderNodeTitle(description)}</span>`;
|
|
1169
1181
|
}
|
|
1170
1182
|
if (description.length > maxRenderableStringLength) {
|
|
@@ -1297,7 +1309,79 @@ export const enum ObjectPropertiesMode {
|
|
|
1297
1309
|
OWN_AND_INTERNAL_AND_INHERITED = 1, // Own, internal, and inherited properties
|
|
1298
1310
|
}
|
|
1299
1311
|
|
|
1300
|
-
export
|
|
1312
|
+
export function populateObjectTreeContextMenu(
|
|
1313
|
+
contextMenu: UI.ContextMenu.ContextMenu,
|
|
1314
|
+
object: ObjectTree,
|
|
1315
|
+
expandRecursively: () => void,
|
|
1316
|
+
collapseChildren: () => void,
|
|
1317
|
+
sortPropertiesAlphabetically: () => void,
|
|
1318
|
+
onShowAllToggled: () => void,
|
|
1319
|
+
): void {
|
|
1320
|
+
contextMenu.appendApplicableItems(object.object);
|
|
1321
|
+
|
|
1322
|
+
if (object.object instanceof SDK.RemoteObject.LocalJSONObject) {
|
|
1323
|
+
const {value} = object.object;
|
|
1324
|
+
const propertyValue =
|
|
1325
|
+
typeof value === 'object' ? Platform.StringUtilities.escapeUnicode(JSON.stringify(value, null, 2)) : value;
|
|
1326
|
+
const copyValueHandler = (): void => {
|
|
1327
|
+
Host.userMetrics.actionTaken(Host.UserMetrics.Action.NetworkPanelCopyValue);
|
|
1328
|
+
Host.InspectorFrontendHost.InspectorFrontendHostInstance.copyText((propertyValue as string | undefined));
|
|
1329
|
+
};
|
|
1330
|
+
contextMenu.clipboardSection().appendItem(i18nString(UIStrings.copyValue), copyValueHandler,
|
|
1331
|
+
{jslogContext: 'copy-value'});
|
|
1332
|
+
}
|
|
1333
|
+
|
|
1334
|
+
contextMenu.viewSection().appendItem(i18nString(UIStrings.expandRecursively), expandRecursively,
|
|
1335
|
+
{jslogContext: 'expand-recursively'});
|
|
1336
|
+
contextMenu.viewSection().appendItem(i18nString(UIStrings.collapseChildren), collapseChildren,
|
|
1337
|
+
{jslogContext: 'collapse-children'});
|
|
1338
|
+
if (!object.isWasm) {
|
|
1339
|
+
contextMenu.viewSection().appendCheckboxItem(i18nString(UIStrings.sortPropertiesAlphabetically),
|
|
1340
|
+
sortPropertiesAlphabetically, {
|
|
1341
|
+
checked: object.sortPropertiesAlphabetically,
|
|
1342
|
+
jslogContext: 'sort-properties-alphabetically',
|
|
1343
|
+
});
|
|
1344
|
+
}
|
|
1345
|
+
contextMenu.viewSection().appendCheckboxItem(
|
|
1346
|
+
i18nString(UIStrings.showAll), onShowAllToggled,
|
|
1347
|
+
{checked: object.includeNullOrUndefinedValues, jslogContext: 'show-all'});
|
|
1348
|
+
}
|
|
1349
|
+
|
|
1350
|
+
export function renderObjectTree(
|
|
1351
|
+
objectTree: ObjectTree,
|
|
1352
|
+
linkifier?: Components.Linkifier.Linkifier,
|
|
1353
|
+
emptyPlaceholder?: string|null,
|
|
1354
|
+
): unknown {
|
|
1355
|
+
const entry = topLevelNodesCache.get(objectTree);
|
|
1356
|
+
if (entry && entry.linkifier === linkifier) {
|
|
1357
|
+
return html`
|
|
1358
|
+
<ul class="source-code object-properties-section" role="group">
|
|
1359
|
+
${entry.nodes.map(node => html`<devtools-tree-wrapper .treeElement=${node}></devtools-tree-wrapper>`)}
|
|
1360
|
+
</ul>
|
|
1361
|
+
`;
|
|
1362
|
+
}
|
|
1363
|
+
|
|
1364
|
+
const promise = (async () => {
|
|
1365
|
+
await ObjectPropertyTreeElement.populateChildrenIfNeeded(objectTree);
|
|
1366
|
+
const nodes = Array.from(ObjectPropertyTreeElement.createNodes(
|
|
1367
|
+
objectTree, /* skipProto= */ false, /* skipGettersAndSetters= */ false, linkifier, emptyPlaceholder));
|
|
1368
|
+
topLevelNodesCache.set(objectTree, {linkifier, nodes});
|
|
1369
|
+
const listener = (): void => {
|
|
1370
|
+
topLevelNodesCache.delete(objectTree);
|
|
1371
|
+
objectTree.removeEventListener(ObjectTreeNodeBase.Events.CHILDREN_CHANGED, listener);
|
|
1372
|
+
};
|
|
1373
|
+
objectTree.addEventListener(ObjectTreeNodeBase.Events.CHILDREN_CHANGED, listener);
|
|
1374
|
+
|
|
1375
|
+
return html`
|
|
1376
|
+
<ul class="source-code object-properties-section" role="group">
|
|
1377
|
+
${nodes.map(node => html`<devtools-tree-wrapper .treeElement=${node}></devtools-tree-wrapper>`)}
|
|
1378
|
+
</ul>
|
|
1379
|
+
`;
|
|
1380
|
+
})();
|
|
1381
|
+
|
|
1382
|
+
return until(promise, html`<ul class="source-code object-properties-section" role="group"></ul>`);
|
|
1383
|
+
}
|
|
1384
|
+
class RootElement extends UI.TreeOutline.TreeElement {
|
|
1301
1385
|
private readonly object: ObjectTree;
|
|
1302
1386
|
private readonly linkifier: Components.Linkifier.Linkifier|undefined;
|
|
1303
1387
|
private readonly emptyPlaceholder: string|null|undefined;
|
|
@@ -1341,35 +1425,18 @@ export class RootElement extends UI.TreeOutline.TreeElement {
|
|
|
1341
1425
|
|
|
1342
1426
|
private onContextMenu(event: Event): void {
|
|
1343
1427
|
const contextMenu = new UI.ContextMenu.ContextMenu(event);
|
|
1344
|
-
|
|
1345
|
-
|
|
1346
|
-
|
|
1347
|
-
|
|
1348
|
-
|
|
1349
|
-
|
|
1350
|
-
|
|
1351
|
-
|
|
1352
|
-
|
|
1353
|
-
|
|
1354
|
-
|
|
1355
|
-
|
|
1356
|
-
|
|
1357
|
-
contextMenu.viewSection().appendItem(
|
|
1358
|
-
i18nString(UIStrings.expandRecursively), this.expandRecursively.bind(this, EXPANDABLE_MAX_DEPTH),
|
|
1359
|
-
{jslogContext: 'expand-recursively'});
|
|
1360
|
-
contextMenu.viewSection().appendItem(
|
|
1361
|
-
i18nString(UIStrings.collapseChildren), this.collapseChildren.bind(this), {jslogContext: 'collapse-children'});
|
|
1362
|
-
if (!this.object.isWasm) {
|
|
1363
|
-
contextMenu.viewSection().appendCheckboxItem(i18nString(UIStrings.sortPropertiesAlphabetically), () => {
|
|
1364
|
-
this.object.sortPropertiesAlphabetically = !this.object.sortPropertiesAlphabetically;
|
|
1365
|
-
}, {
|
|
1366
|
-
checked: this.object.sortPropertiesAlphabetically,
|
|
1367
|
-
jslogContext: 'sort-properties-alphabetically',
|
|
1368
|
-
});
|
|
1369
|
-
}
|
|
1370
|
-
contextMenu.viewSection().appendCheckboxItem(i18n.i18n.lockedString('Show all'), () => {
|
|
1371
|
-
this.object.includeNullOrUndefinedValues = !this.object.includeNullOrUndefinedValues;
|
|
1372
|
-
}, {checked: this.object.includeNullOrUndefinedValues, jslogContext: 'show-all'});
|
|
1428
|
+
populateObjectTreeContextMenu(
|
|
1429
|
+
contextMenu,
|
|
1430
|
+
this.object,
|
|
1431
|
+
this.expandRecursively.bind(this, EXPANDABLE_MAX_DEPTH),
|
|
1432
|
+
this.collapseChildren.bind(this),
|
|
1433
|
+
() => {
|
|
1434
|
+
this.object.sortPropertiesAlphabetically = !this.object.sortPropertiesAlphabetically;
|
|
1435
|
+
},
|
|
1436
|
+
() => {
|
|
1437
|
+
this.object.includeNullOrUndefinedValues = !this.object.includeNullOrUndefinedValues;
|
|
1438
|
+
},
|
|
1439
|
+
);
|
|
1373
1440
|
void contextMenu.show();
|
|
1374
1441
|
}
|
|
1375
1442
|
|
|
@@ -1674,6 +1741,7 @@ export class ObjectPropertyTreeElement extends UI.TreeOutline.TreeElement {
|
|
|
1674
1741
|
super();
|
|
1675
1742
|
|
|
1676
1743
|
this.#widget = new ObjectPropertyWidget();
|
|
1744
|
+
this.#widget.markAsRoot();
|
|
1677
1745
|
this.property = property;
|
|
1678
1746
|
this.hidden = property.isFiltered;
|
|
1679
1747
|
this.property.addEventListener(ObjectTreeNodeBase.Events.VALUE_CHANGED, this.#updateValue, this);
|
|
@@ -1894,7 +1962,6 @@ export class ObjectPropertyTreeElement extends UI.TreeOutline.TreeElement {
|
|
|
1894
1962
|
|
|
1895
1963
|
override onattach(): void {
|
|
1896
1964
|
this.updateExpandable();
|
|
1897
|
-
this.#widget.markAsRoot();
|
|
1898
1965
|
this.#widget.show(this.listItemElement);
|
|
1899
1966
|
this.#widget.property = this.property;
|
|
1900
1967
|
this.#widget.linkifier = this.linkifier;
|
|
@@ -1943,7 +2010,8 @@ export class ObjectPropertyTreeElement extends UI.TreeOutline.TreeElement {
|
|
|
1943
2010
|
contextMenu.appendApplicableItems(this.property.object);
|
|
1944
2011
|
if (this.property.parent?.object instanceof SDK.RemoteObject.LocalJSONObject) {
|
|
1945
2012
|
const {object: {value}} = this.property;
|
|
1946
|
-
const propertyValue =
|
|
2013
|
+
const propertyValue =
|
|
2014
|
+
typeof value === 'object' ? Platform.StringUtilities.escapeUnicode(JSON.stringify(value, null, 2)) : value;
|
|
1947
2015
|
const copyValueHandler = (): void => {
|
|
1948
2016
|
Host.userMetrics.actionTaken(Host.UserMetrics.Action.NetworkPanelCopyValue);
|
|
1949
2017
|
Host.InspectorFrontendHost.InspectorFrontendHostInstance.copyText((propertyValue as string | undefined));
|
|
@@ -1978,7 +2046,7 @@ export class ObjectPropertyTreeElement extends UI.TreeOutline.TreeElement {
|
|
|
1978
2046
|
jslogContext: 'sort-properties-alphabetically',
|
|
1979
2047
|
});
|
|
1980
2048
|
}
|
|
1981
|
-
contextMenu.viewSection().appendCheckboxItem(
|
|
2049
|
+
contextMenu.viewSection().appendCheckboxItem(i18nString(UIStrings.showAll), () => {
|
|
1982
2050
|
root.includeNullOrUndefinedValues = !root.includeNullOrUndefinedValues;
|
|
1983
2051
|
}, {checked: root.includeNullOrUndefinedValues, jslogContext: 'show-all'});
|
|
1984
2052
|
return contextMenu;
|
|
@@ -38,6 +38,7 @@ import * as Common from '../../../../core/common/common.js';
|
|
|
38
38
|
import * as i18n from '../../../../core/i18n/i18n.js';
|
|
39
39
|
import * as FormatterActions from '../../../../entrypoints/formatter_worker/FormatterActions.js'; // eslint-disable-line @devtools/es-modules-import
|
|
40
40
|
import * as TextUtils from '../../../../models/text_utils/text_utils.js';
|
|
41
|
+
import {render} from '../../../../ui/lit/lit.js';
|
|
41
42
|
import * as UI from '../../legacy.js';
|
|
42
43
|
|
|
43
44
|
import resourceSourceFrameStyles from './resourceSourceFrame.css.js';
|
|
@@ -118,7 +119,12 @@ export class SearchableContainer extends UI.Widget.VBox {
|
|
|
118
119
|
|
|
119
120
|
const toolbar = this.contentElement.createChild('devtools-toolbar', 'toolbar');
|
|
120
121
|
void sourceFrame.toolbarItems().then(items => {
|
|
121
|
-
|
|
122
|
+
if (Array.isArray(items)) {
|
|
123
|
+
items.map(item => toolbar.appendToolbarItem(item));
|
|
124
|
+
} else {
|
|
125
|
+
// eslint-disable-next-line @devtools/no-lit-render-outside-of-view
|
|
126
|
+
render(items, toolbar);
|
|
127
|
+
}
|
|
122
128
|
});
|
|
123
129
|
}
|
|
124
130
|
|
|
@@ -392,7 +392,8 @@ export class SourceFrameImpl extends Common.ObjectWrapper.eventMixin<EventTypes,
|
|
|
392
392
|
const content =
|
|
393
393
|
this.rawContent instanceof CodeMirror.Text ? this.rawContent.sliceString(0) : this.rawContent || '';
|
|
394
394
|
this.textEditor.state = this.placeholderEditorState(i18nString(UIStrings.formatting));
|
|
395
|
-
const formatInfo = await Formatter.ScriptFormatter.formatScriptContent(
|
|
395
|
+
const formatInfo = await Formatter.ScriptFormatter.formatScriptContent(Common.Settings.Settings.instance(),
|
|
396
|
+
this.contentType, content);
|
|
396
397
|
this.formattedMap = formatInfo.formattedMapping;
|
|
397
398
|
await this.setContent(formatInfo.formattedContent);
|
|
398
399
|
this.prettyBaseDoc = textEditor.state.doc;
|
|
@@ -84,11 +84,13 @@ export class ImagePreview {
|
|
|
84
84
|
): Promise<HTMLDivElement|null> {
|
|
85
85
|
const {precomputedFeatures, imageAltText, align} = options;
|
|
86
86
|
|
|
87
|
-
let resource = SDK.ResourceTreeModel.ResourceTreeModel.resourceForURL(
|
|
87
|
+
let resource = SDK.ResourceTreeModel.ResourceTreeModel.resourceForURL(SDK.TargetManager.TargetManager.instance(),
|
|
88
|
+
originalImageURL);
|
|
88
89
|
let imageURL = originalImageURL;
|
|
89
90
|
if (!isImageResource(resource) && precomputedFeatures?.currentSrc) {
|
|
90
91
|
imageURL = precomputedFeatures.currentSrc;
|
|
91
|
-
resource =
|
|
92
|
+
resource =
|
|
93
|
+
SDK.ResourceTreeModel.ResourceTreeModel.resourceForURL(SDK.TargetManager.TargetManager.instance(), imageURL);
|
|
92
94
|
}
|
|
93
95
|
if (!resource || !isImageResource(resource)) {
|
|
94
96
|
return null;
|
|
@@ -268,9 +268,16 @@ export class StackTracePreviewContent extends UI.Widget.Widget<ShadowRoot> {
|
|
|
268
268
|
if (Root.DevToolsContext.globalInstance().has(Workspace.IgnoreListManager.IgnoreListManager)) {
|
|
269
269
|
Workspace.IgnoreListManager.IgnoreListManager.instance().addChangeListener(this.#updateHasNonIgnoredLinks);
|
|
270
270
|
}
|
|
271
|
+
if (this.#stackTrace) {
|
|
272
|
+
this.#stackTrace.addEventListener(StackTrace.StackTrace.Events.UPDATED, this.requestUpdate, this);
|
|
273
|
+
}
|
|
274
|
+
this.requestUpdate();
|
|
271
275
|
}
|
|
272
276
|
|
|
273
277
|
override willHide(): void {
|
|
278
|
+
if (this.#stackTrace) {
|
|
279
|
+
this.#stackTrace.removeEventListener(StackTrace.StackTrace.Events.UPDATED, this.requestUpdate, this);
|
|
280
|
+
}
|
|
274
281
|
if (Root.DevToolsContext.globalInstance().has(Workspace.IgnoreListManager.IgnoreListManager)) {
|
|
275
282
|
Workspace.IgnoreListManager.IgnoreListManager.instance().removeChangeListener(this.#updateHasNonIgnoredLinks);
|
|
276
283
|
}
|
|
@@ -291,7 +298,9 @@ export class StackTracePreviewContent extends UI.Widget.Widget<ShadowRoot> {
|
|
|
291
298
|
this.#stackTrace.removeEventListener(StackTrace.StackTrace.Events.UPDATED, this.requestUpdate, this);
|
|
292
299
|
}
|
|
293
300
|
this.#stackTrace = stackTrace;
|
|
294
|
-
this.#stackTrace
|
|
301
|
+
if (this.#stackTrace && this.isShowing()) {
|
|
302
|
+
this.#stackTrace.addEventListener(StackTrace.StackTrace.Events.UPDATED, this.requestUpdate, this);
|
|
303
|
+
}
|
|
295
304
|
this.requestUpdate();
|
|
296
305
|
}
|
|
297
306
|
|
|
@@ -1633,6 +1633,7 @@ export const knownContextValues = new Set([
|
|
|
1633
1633
|
'evolved-cls',
|
|
1634
1634
|
'exclude-folder',
|
|
1635
1635
|
'exclude-folder-confirmation',
|
|
1636
|
+
'execution-context',
|
|
1636
1637
|
'expand',
|
|
1637
1638
|
'expand-recursively',
|
|
1638
1639
|
'experimental-item',
|
|
@@ -2128,6 +2129,7 @@ export const knownContextValues = new Set([
|
|
|
2128
2129
|
'is-ad-related',
|
|
2129
2130
|
'is-landscape',
|
|
2130
2131
|
'is-mobile',
|
|
2132
|
+
'is-preloaded',
|
|
2131
2133
|
'is-resident-credential',
|
|
2132
2134
|
'is-u',
|
|
2133
2135
|
'is-user-active-false-is-screen-unlocked-false',
|
|
@@ -4496,6 +4498,7 @@ export const knownContextValues = new Set([
|
|
|
4496
4498
|
'window',
|
|
4497
4499
|
'window-controls',
|
|
4498
4500
|
'window-controls-overlay',
|
|
4501
|
+
'window-drag',
|
|
4499
4502
|
'windows',
|
|
4500
4503
|
'word-break',
|
|
4501
4504
|
'word-spacing',
|
package/mcp/mcp.ts
CHANGED
|
@@ -7,6 +7,8 @@
|
|
|
7
7
|
// just import relevant meta files (as long as they don't contain any UI related code)
|
|
8
8
|
import '../front_end/core/sdk/sdk-meta.js';
|
|
9
9
|
import '../front_end/models/workspace/workspace-meta.js';
|
|
10
|
+
import '../front_end/models/persistence/persistence-meta.js';
|
|
11
|
+
import '../front_end/models/logs/logs-meta.js';
|
|
10
12
|
|
|
11
13
|
/**
|
|
12
14
|
* IMPORTANT! Make sure that any class that is exported here has related unit
|
package/package.json
CHANGED
|
@@ -27,6 +27,7 @@
|
|
|
27
27
|
"lint": "vpython3 third_party/node/node.py --output scripts/test/run_lint_check.mjs",
|
|
28
28
|
"prebuild": "gn gen out/Default",
|
|
29
29
|
"rdb": "rdb stream -new -realm chromium:public --",
|
|
30
|
+
"rdb-exonerate": "npm run rdb -- vpython3 third_party/node/node.py --output scripts/run_on_target.mjs gen/test/exonerate.js",
|
|
30
31
|
"start": "vpython3 third_party/node/node.py --output scripts/run_start.mjs",
|
|
31
32
|
"webtest": "vpython3 third_party/node/node.py --output scripts/npm_test.js",
|
|
32
33
|
"watch": "npm run build -- --watch",
|
|
@@ -68,7 +69,6 @@
|
|
|
68
69
|
"karma-chrome-launcher": "3.2.0",
|
|
69
70
|
"karma-coverage": "2.2.1",
|
|
70
71
|
"karma-mocha": "2.0.1",
|
|
71
|
-
"karma-mocha-reporter": "2.2.5",
|
|
72
72
|
"karma-sourcemap-loader": "0.4.0",
|
|
73
73
|
"karma-spec-reporter": "0.0.36",
|
|
74
74
|
"license-checker": "25.0.1",
|
|
@@ -76,7 +76,7 @@
|
|
|
76
76
|
"mocha": "11.7.5",
|
|
77
77
|
"ora": "9.0.0",
|
|
78
78
|
"postcss": "8.5.15",
|
|
79
|
-
"puppeteer-core": "25.
|
|
79
|
+
"puppeteer-core": "25.3.0",
|
|
80
80
|
"rollup": "4.60.4",
|
|
81
81
|
"rollup-plugin-sourcemaps2": "0.5.4",
|
|
82
82
|
"sinon": "22.0.0",
|
|
@@ -84,7 +84,7 @@
|
|
|
84
84
|
"stylelint": "16.25.0",
|
|
85
85
|
"stylelint-config-standard": "39.0.1",
|
|
86
86
|
"svgo": "3.3.3",
|
|
87
|
-
"terser": "5.
|
|
87
|
+
"terser": "5.48.0",
|
|
88
88
|
"ts-lit-plugin": "2.0.2",
|
|
89
89
|
"typescript": "6.0.2",
|
|
90
90
|
"typescript-eslint": "8.58.0",
|
|
@@ -92,5 +92,5 @@
|
|
|
92
92
|
"webidl2": "24.5.0",
|
|
93
93
|
"yargs": "17.7.2"
|
|
94
94
|
},
|
|
95
|
-
"version": "1.0.
|
|
95
|
+
"version": "1.0.1661063"
|
|
96
96
|
}
|