chrome-devtools-frontend 1.0.1548980 → 1.0.1550444
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/docs/contributing/settings-experiments-features.md +35 -0
- package/docs/styleguide/ux/components.md +53 -12
- package/docs/styleguide/ux/images/cards.png +0 -0
- package/docs/styleguide/ux/patterns.md +27 -0
- package/docs/ui_engineering.md +2 -2
- package/eslint.config.mjs +1 -0
- package/front_end/Tests.js +2 -0
- package/front_end/core/host/InspectorFrontendHost.ts +26 -558
- package/front_end/core/host/InspectorFrontendHostAPI.ts +6 -3
- package/front_end/core/host/InspectorFrontendHostStub.ts +558 -0
- package/front_end/core/host/ResourceLoader.ts +9 -23
- package/front_end/core/host/UserMetrics.ts +4 -4
- package/front_end/core/root/DevToolsContext.ts +4 -0
- package/front_end/core/root/Runtime.ts +10 -0
- package/front_end/core/sdk/CSSMatchedStyles.ts +2 -2
- package/front_end/core/sdk/CSSModel.ts +24 -24
- package/front_end/core/sdk/CSSPropertyParserMatchers.ts +11 -11
- package/front_end/core/sdk/CSSQuery.ts +1 -1
- package/front_end/core/sdk/CSSRule.ts +2 -2
- package/front_end/core/sdk/CSSStyleDeclaration.ts +1 -1
- package/front_end/core/sdk/CSSStyleSheetHeader.ts +1 -1
- package/front_end/core/sdk/DOMModel.ts +3 -0
- package/front_end/core/sdk/NetworkManager.ts +41 -41
- package/front_end/core/sdk/NetworkRequest.ts +4 -0
- package/front_end/core/sdk/OverlayModel.ts +2 -2
- package/front_end/core/sdk/PageResourceLoader.ts +71 -38
- package/front_end/core/sdk/SourceMap.ts +6 -0
- package/front_end/core/sdk/SourceMapCache.ts +21 -0
- package/front_end/core/sdk/SourceMapManager.ts +14 -7
- package/front_end/core/sdk/SourceMapScopesInfo.ts +6 -2
- package/front_end/core/sdk/TargetManager.ts +14 -2
- package/front_end/core/sdk/sdk-meta.ts +13 -0
- package/front_end/entrypoints/formatter_worker/FormatterActions.ts +1 -0
- package/front_end/entrypoints/formatter_worker/ScopeParser.ts +1 -1
- package/front_end/entrypoints/main/MainImpl.ts +5 -4
- package/front_end/foundation/Universe.ts +8 -1
- package/front_end/generated/Deprecation.ts +18 -4
- package/front_end/generated/InspectorBackendCommands.ts +38 -33
- package/front_end/generated/SupportedCSSProperties.js +41 -41
- package/front_end/generated/protocol-mapping.d.ts +20 -0
- package/front_end/generated/protocol-proxy-api.d.ts +17 -0
- package/front_end/generated/protocol.ts +146 -35
- package/front_end/models/ai_assistance/AiConversation.ts +5 -4
- package/front_end/models/ai_assistance/BuiltInAi.ts +79 -5
- package/front_end/models/ai_assistance/ChangeManager.ts +4 -4
- package/front_end/models/ai_assistance/ConversationHandler.ts +0 -15
- package/front_end/models/ai_assistance/agents/AiAgent.ts +9 -6
- package/front_end/models/ai_assistance/agents/PerformanceAgent.ts +135 -3
- package/front_end/models/ai_assistance/data_formatters/PerformanceTraceFormatter.ts +24 -0
- package/front_end/models/bindings/CompilerScriptMapping.ts +43 -0
- package/front_end/models/bindings/DebuggerWorkspaceBinding.ts +19 -0
- package/front_end/models/bindings/ResourceMapping.ts +73 -0
- package/front_end/models/bindings/ResourceScriptMapping.ts +50 -0
- package/front_end/models/issues_manager/AttributionReportingIssue.ts +6 -8
- package/front_end/models/issues_manager/BounceTrackingIssue.ts +4 -14
- package/front_end/models/issues_manager/ClientHintIssue.ts +5 -12
- package/front_end/models/issues_manager/ContentSecurityPolicyIssue.ts +5 -12
- package/front_end/models/issues_manager/CookieDeprecationMetadataIssue.ts +7 -14
- package/front_end/models/issues_manager/CookieIssue.ts +27 -30
- package/front_end/models/issues_manager/CorsIssue.ts +8 -17
- package/front_end/models/issues_manager/CrossOriginEmbedderPolicyIssue.ts +5 -8
- package/front_end/models/issues_manager/DeprecationIssue.ts +7 -14
- package/front_end/models/issues_manager/ElementAccessibilityIssue.ts +7 -14
- package/front_end/models/issues_manager/FederatedAuthRequestIssue.ts +4 -11
- package/front_end/models/issues_manager/FederatedAuthUserInfoRequestIssue.ts +4 -11
- package/front_end/models/issues_manager/GenericIssue.ts +28 -16
- package/front_end/models/issues_manager/HeavyAdIssue.ts +4 -11
- package/front_end/models/issues_manager/Issue.ts +12 -4
- package/front_end/models/issues_manager/IssueAggregator.ts +8 -2
- package/front_end/models/issues_manager/LowTextContrastIssue.ts +3 -10
- package/front_end/models/issues_manager/MixedContentIssue.ts +7 -13
- package/front_end/models/issues_manager/PartitioningBlobURLIssue.ts +4 -11
- package/front_end/models/issues_manager/PropertyRuleIssue.ts +6 -12
- package/front_end/models/issues_manager/QuirksModeIssue.ts +3 -10
- package/front_end/models/issues_manager/SRIMessageSignatureIssue.ts +7 -13
- package/front_end/models/issues_manager/SharedArrayBufferIssue.ts +4 -11
- package/front_end/models/issues_manager/SharedDictionaryIssue.ts +6 -13
- package/front_end/models/issues_manager/StylesheetLoadingIssue.ts +8 -13
- package/front_end/models/issues_manager/UnencodedDigestIssue.ts +2 -9
- package/front_end/models/issues_manager/descriptions/genericNavigationEntryMarkedSkippable.md +7 -0
- package/front_end/models/javascript_metadata/NativeFunctions.js +7 -16
- package/front_end/models/source_map_scopes/FunctionCodeResolver.snapshot.txt +98 -0
- package/front_end/models/source_map_scopes/FunctionCodeResolver.ts +270 -0
- package/front_end/models/source_map_scopes/source_map_scopes.ts +2 -0
- package/front_end/models/workspace/UISourceCode.ts +51 -44
- package/front_end/panels/ai_assistance/AiAssistancePanel.ts +76 -34
- package/front_end/panels/ai_assistance/aiAssistancePanel.css +1 -0
- package/front_end/panels/ai_assistance/components/ChatView.ts +23 -11
- package/front_end/panels/application/AppManifestView.ts +7 -6
- package/front_end/panels/application/ApplicationPanelSidebar.ts +21 -21
- package/front_end/panels/application/BackForwardCacheTreeElement.ts +2 -2
- package/front_end/panels/application/BounceTrackingMitigationsTreeElement.ts +2 -2
- package/front_end/panels/application/FrameDetailsView.ts +5 -6
- package/front_end/panels/application/InterestGroupTreeElement.ts +2 -2
- package/front_end/panels/application/OpenedWindowDetailsView.ts +2 -2
- package/front_end/panels/application/OriginTrialTreeView.ts +1 -1
- package/front_end/panels/application/PreloadingTreeElement.ts +3 -3
- package/front_end/panels/application/ReportingApiTreeElement.ts +2 -2
- package/front_end/panels/application/ServiceWorkerCacheTreeElement.ts +3 -3
- package/front_end/panels/application/ServiceWorkersView.ts +2 -2
- package/front_end/panels/application/SharedStorageListTreeElement.ts +2 -2
- package/front_end/panels/application/StorageBucketsTreeElement.ts +3 -3
- package/front_end/panels/application/StorageView.ts +2 -2
- package/front_end/panels/application/TrustTokensTreeElement.ts +4 -8
- package/front_end/panels/application/components/PermissionsPolicySection.ts +202 -158
- package/front_end/panels/application/components/ProtocolHandlersView.ts +118 -81
- package/front_end/panels/application/components/ServiceWorkerRouterView.ts +47 -41
- package/front_end/panels/application/components/SharedStorageMetadataView.ts +1 -1
- package/front_end/panels/application/components/StorageMetadataView.ts +31 -34
- package/front_end/panels/application/components/TrustTokensView.ts +77 -69
- package/front_end/panels/application/preloading/components/PreloadingGrid.ts +1 -1
- package/front_end/panels/application/preloading/components/RuleSetGrid.ts +1 -1
- package/front_end/panels/application/preloading/components/UsedPreloadingView.ts +1 -1
- package/front_end/panels/changes/ChangesSidebar.ts +2 -0
- package/front_end/panels/changes/CombinedDiffView.ts +2 -0
- package/front_end/panels/common/AnnotationManager.ts +71 -0
- package/front_end/panels/common/PersistenceUtils.ts +6 -7
- package/front_end/panels/common/common.ts +1 -0
- package/front_end/panels/console/ConsolePrompt.ts +4 -4
- package/front_end/panels/console/ConsoleView.ts +5 -4
- package/front_end/panels/console/ConsoleViewMessage.ts +16 -15
- package/front_end/panels/console/console-meta.ts +0 -13
- package/front_end/panels/console_counters/WarningErrorCounter.ts +2 -0
- package/front_end/panels/css_overview/CSSOverviewCompletedView.ts +1 -1
- package/front_end/panels/developer_resources/DeveloperResourcesView.ts +3 -1
- package/front_end/panels/elements/CSSRuleValidator.ts +7 -7
- package/front_end/panels/elements/CSSRuleValidatorHelper.ts +2 -2
- package/front_end/panels/elements/ColorSwatchPopoverIcon.ts +3 -3
- package/front_end/panels/elements/ElementsPanel.ts +49 -0
- package/front_end/panels/elements/ElementsTreeElement.ts +172 -121
- package/front_end/panels/elements/ElementsTreeOutline.ts +11 -3
- package/front_end/panels/elements/LayoutPane.ts +12 -10
- package/front_end/panels/elements/ShortcutTreeElement.ts +2 -2
- package/front_end/panels/elements/StyleEditorWidget.ts +2 -2
- package/front_end/panels/elements/StylePropertyTreeElement.ts +18 -18
- package/front_end/panels/elements/StylesSidebarPane.ts +4 -5
- package/front_end/panels/elements/TopLayerContainer.ts +2 -2
- package/front_end/panels/elements/components/AdornerManager.ts +3 -3
- package/front_end/panels/elements/components/ElementsBreadcrumbs.ts +1 -1
- package/front_end/panels/elements/components/ElementsTreeExpandButton.ts +1 -1
- package/front_end/panels/elements/components/QueryContainer.ts +1 -1
- package/front_end/panels/elements/components/StylePropertyEditor.ts +7 -7
- package/front_end/panels/emulation/DeviceModeWrapper.ts +48 -3
- package/front_end/panels/explain/components/ConsoleInsight.ts +6 -4
- package/front_end/panels/issues/AffectedResourcesView.ts +2 -2
- package/front_end/panels/issues/AttributionReportingIssueDetailsView.ts +2 -2
- package/front_end/panels/issues/IssueKindView.ts +2 -2
- package/front_end/panels/issues/IssueView.ts +4 -4
- package/front_end/panels/js_timeline/js_timeline-meta.ts +4 -2
- package/front_end/panels/linear_memory_inspector/components/LinearMemoryHighlightChipList.ts +28 -50
- package/front_end/panels/linear_memory_inspector/components/LinearMemoryInspector.ts +15 -11
- package/front_end/panels/linear_memory_inspector/components/LinearMemoryNavigator.ts +1 -1
- package/front_end/panels/linear_memory_inspector/components/LinearMemoryValueInterpreter.ts +1 -1
- package/front_end/panels/linear_memory_inspector/components/ValueInterpreterDisplay.ts +1 -1
- package/front_end/panels/media/PlayerListView.ts +100 -73
- package/front_end/panels/media/playerListView.css +5 -0
- package/front_end/panels/mobile_throttling/ThrottlingManager.ts +2 -2
- package/front_end/panels/mobile_throttling/ThrottlingSettingsTab.ts +4 -5
- package/front_end/panels/network/NetworkDataGridNode.ts +3 -3
- package/front_end/panels/network/NetworkFrameGrouper.ts +2 -2
- package/front_end/panels/network/NetworkItemView.ts +4 -4
- package/front_end/panels/network/NetworkLogViewColumns.ts +3 -3
- package/front_end/panels/network/RequestConditionsDrawer.ts +5 -5
- package/front_end/panels/network/RequestCookiesView.ts +2 -2
- package/front_end/panels/network/SignedExchangeInfoView.ts +2 -2
- package/front_end/panels/network/components/DirectSocketConnectionView.ts +17 -0
- package/front_end/panels/network/components/RequestTrustTokensView.ts +5 -6
- package/front_end/panels/network/resourceChunkView.css +4 -0
- package/front_end/panels/profiler/HeapSnapshotGridNodes.ts +3 -3
- package/front_end/panels/profiler/ProfileDataGrid.ts +2 -2
- package/front_end/panels/profiler/ProfilesPanel.ts +2 -2
- package/front_end/panels/protocol_monitor/JSONEditor.ts +1 -1
- package/front_end/panels/recorder/components/CreateRecordingView.ts +1 -1
- package/front_end/panels/recorder/components/ExtensionView.ts +1 -1
- package/front_end/panels/recorder/components/RecordingListView.ts +1 -1
- package/front_end/panels/recorder/components/RecordingView.ts +1 -1
- package/front_end/panels/recorder/components/StepView.ts +1 -1
- package/front_end/panels/screencast/ScreencastView.ts +8 -8
- package/front_end/panels/search/SearchView.ts +1 -1
- package/front_end/panels/security/CookieControlsTreeElement.ts +2 -2
- package/front_end/panels/security/CookieControlsView.ts +1 -1
- package/front_end/panels/security/CookieReportTreeElement.ts +2 -2
- package/front_end/panels/security/SecurityPanel.ts +5 -5
- package/front_end/panels/security/SecurityPanelSidebar.ts +3 -4
- package/front_end/panels/sensors/LocationsSettingsTab.ts +1 -1
- package/front_end/panels/settings/FrameworkIgnoreListSettingsTab.ts +1 -1
- package/front_end/panels/settings/KeybindsSettingsTab.ts +5 -5
- package/front_end/panels/settings/SettingsScreen.ts +7 -8
- package/front_end/panels/settings/WorkspaceSettingsTab.ts +1 -1
- package/front_end/panels/settings/emulation/DevicesSettingsTab.ts +1 -1
- package/front_end/panels/snippets/SnippetsQuickOpen.ts +16 -6
- package/front_end/panels/sources/BreakpointEditDialog.ts +3 -3
- package/front_end/panels/sources/BreakpointsView.ts +1 -1
- package/front_end/panels/sources/CSSPlugin.ts +4 -4
- package/front_end/panels/sources/CallStackSidebarPane.ts +4 -4
- package/front_end/panels/sources/DebuggerPausedMessage.ts +3 -3
- package/front_end/panels/sources/FilteredUISourceCodeListProvider.ts +40 -23
- package/front_end/panels/sources/GoToLineQuickOpen.ts +11 -5
- package/front_end/panels/sources/NavigatorView.ts +4 -4
- package/front_end/panels/sources/OpenFileQuickOpen.ts +11 -16
- package/front_end/panels/sources/OutlineQuickOpen.ts +23 -23
- package/front_end/panels/sources/ProfilePlugin.ts +21 -12
- package/front_end/panels/sources/SourcesView.ts +2 -2
- package/front_end/panels/sources/TabbedEditorContainer.ts +4 -5
- package/front_end/panels/sources/ThreadsSidebarPane.ts +2 -2
- package/front_end/panels/sources/UISourceCodeFrame.ts +5 -6
- package/front_end/panels/sources/filteredUISourceCodeListProvider.css +41 -0
- package/front_end/panels/timeline/TimelineHistoryManager.ts +2 -2
- package/front_end/panels/timeline/TimelinePanel.ts +29 -25
- package/front_end/panels/timeline/TimelineSelectorStatsView.ts +3 -3
- package/front_end/panels/timeline/components/CPUThrottlingSelector.ts +1 -1
- package/front_end/panels/timeline/components/LiveMetricsView.ts +1 -1
- package/front_end/panels/timeline/components/NetworkRequestTooltip.ts +1 -1
- package/front_end/panels/timeline/components/NetworkThrottlingSelector.ts +1 -1
- package/front_end/panels/timeline/components/OriginMap.ts +1 -1
- package/front_end/panels/timeline/components/insights/Checklist.ts +1 -1
- package/front_end/panels/timeline/components/insights/DOMSize.ts +1 -1
- package/front_end/panels/timeline/components/insights/ImageDelivery.ts +1 -1
- package/front_end/panels/timeline/components/insights/NetworkDependencyTree.ts +1 -1
- package/front_end/panels/timeline/components/insights/SlowCSSSelector.ts +2 -2
- package/front_end/panels/timeline/docs/flame_chart_migration.md +11 -16
- package/front_end/panels/timeline/overlays/components/EntriesLinkOverlay.ts +1 -1
- package/front_end/panels/timeline/overlays/components/EntryLabelOverlay.ts +1 -1
- package/front_end/panels/timeline/timeline-meta.ts +3 -2
- package/front_end/panels/utils/utils.ts +18 -3
- package/front_end/panels/whats_new/ReleaseNoteText.ts +10 -20
- package/front_end/panels/whats_new/resources/WNDT.md +8 -8
- package/front_end/third_party/chromium/README.chromium +1 -1
- package/front_end/third_party/puppeteer/third_party/mitt/README.chromium +1 -0
- package/front_end/third_party/puppeteer/third_party/parsel/README.chromium +1 -0
- package/front_end/third_party/puppeteer/third_party/rxjs/README.chromium +1 -0
- package/front_end/ui/components/adorners/Adorner.ts +21 -1
- package/front_end/ui/components/annotations/AnnotationRepository.ts +98 -0
- package/front_end/ui/components/annotations/AnnotationType.ts +10 -0
- package/front_end/ui/components/annotations/annotations.ts +6 -0
- package/front_end/ui/components/buttons/Button.ts +2 -2
- package/front_end/ui/components/buttons/FloatingButton.ts +2 -2
- package/front_end/ui/components/chrome_link/ChromeLink.ts +1 -1
- package/front_end/ui/components/dialogs/ButtonDialog.ts +1 -1
- package/front_end/ui/components/dialogs/Dialog.ts +1 -1
- package/front_end/ui/components/dialogs/ShortcutDialog.ts +1 -0
- package/front_end/ui/components/diff_view/DiffView.ts +1 -1
- package/front_end/ui/components/expandable_list/ExpandableList.ts +1 -1
- package/front_end/ui/components/highlighting/HighlightElement.ts +16 -2
- package/front_end/ui/components/highlighting/MarkupHighlight.ts +162 -0
- package/front_end/ui/components/highlighting/highlighting.ts +7 -0
- package/front_end/ui/components/icon_button/FileSourceIcon.ts +2 -2
- package/front_end/ui/components/icon_button/IconButton.ts +2 -2
- package/front_end/ui/components/icon_button/icon_button.ts +0 -2
- package/front_end/ui/components/issue_counter/IssueCounter.ts +2 -2
- package/front_end/ui/components/issue_counter/IssueLinkIcon.ts +2 -2
- package/front_end/ui/components/legacy_wrapper/LegacyWrapper.ts +1 -1
- package/front_end/ui/components/linkifier/LinkifierImpl.ts +1 -1
- package/front_end/ui/components/list/List.ts +184 -0
- package/front_end/ui/components/list/list.css +90 -0
- package/front_end/ui/components/{cards/cards.ts → list/lists.ts} +3 -3
- package/front_end/ui/components/markdown_view/CodeBlock.ts +1 -1
- package/front_end/ui/components/markdown_view/MarkdownImage.ts +4 -4
- package/front_end/ui/components/markdown_view/MarkdownLink.ts +1 -1
- package/front_end/ui/components/markdown_view/MarkdownView.ts +1 -1
- package/front_end/ui/components/menus/Menu.ts +1 -1
- package/front_end/ui/components/menus/SelectMenu.ts +1 -1
- package/front_end/ui/components/node_text/NodeText.ts +1 -1
- package/front_end/ui/components/panel_feedback/FeedbackButton.ts +1 -1
- package/front_end/ui/components/panel_feedback/PanelFeedback.ts +1 -1
- package/front_end/ui/components/panel_feedback/PreviewToggle.ts +1 -1
- package/front_end/ui/components/panel_introduction_steps/PanelIntroductionSteps.ts +1 -1
- package/front_end/ui/components/report_view/ReportView.ts +1 -1
- package/front_end/ui/components/request_link_icon/RequestLinkIcon.ts +2 -2
- package/front_end/ui/components/settings/SettingCheckbox.ts +1 -1
- package/front_end/ui/components/settings/SettingDeprecationWarning.ts +2 -2
- package/front_end/ui/components/snackbars/Snackbar.ts +1 -1
- package/front_end/ui/components/spinners/Spinner.ts +1 -1
- package/front_end/ui/components/srgb_overlay/SrgbOverlay.ts +1 -1
- package/front_end/ui/components/suggestion_input/SuggestionInput.ts +1 -0
- package/front_end/ui/components/survey_link/SurveyLink.ts +2 -2
- package/front_end/ui/components/switch/SwitchImpl.ts +1 -1
- package/front_end/ui/components/text_editor/TextEditor.ts +1 -0
- package/front_end/ui/components/text_editor/config.ts +2 -2
- package/front_end/ui/components/text_prompt/TextPrompt.ts +1 -1
- package/front_end/ui/components/tooltips/Tooltip.ts +1 -1
- package/front_end/ui/components/tree_outline/TreeOutline.ts +1 -1
- package/front_end/ui/kit/cards/Card.docs.ts +43 -0
- package/front_end/ui/{components/icon_button → kit/icons}/Icon.docs.ts +3 -4
- package/front_end/ui/{components/icon_button → kit/icons}/Icon.ts +6 -4
- package/front_end/ui/kit/kit.ts +6 -0
- package/front_end/ui/legacy/Infobar.ts +3 -3
- package/front_end/ui/legacy/InspectorView.ts +3 -3
- package/front_end/ui/legacy/SearchableView.ts +2 -2
- package/front_end/ui/legacy/SoftContextMenu.ts +5 -5
- package/front_end/ui/legacy/SoftDropDown.ts +2 -2
- package/front_end/ui/legacy/TabbedPane.ts +106 -8
- package/front_end/ui/legacy/Toolbar.ts +3 -3
- package/front_end/ui/legacy/Treeoutline.ts +2 -2
- package/front_end/ui/legacy/UIUtils.ts +4 -188
- package/front_end/ui/legacy/ViewManager.ts +27 -12
- package/front_end/ui/legacy/ViewRegistration.ts +21 -22
- package/front_end/ui/legacy/components/color_picker/ContrastDetails.ts +8 -8
- package/front_end/ui/legacy/components/color_picker/Spectrum.ts +4 -4
- package/front_end/ui/legacy/components/cookie_table/CookiesTable.ts +4 -4
- package/front_end/ui/legacy/components/inline_editor/FontEditor.ts +2 -2
- package/front_end/ui/legacy/components/inline_editor/Swatches.ts +5 -5
- package/front_end/ui/legacy/components/object_ui/CustomPreviewComponent.ts +3 -3
- package/front_end/ui/legacy/components/object_ui/ObjectPropertiesSection.ts +5 -4
- package/front_end/ui/legacy/components/perf_ui/LineLevelProfile.ts +73 -35
- package/front_end/ui/legacy/components/perf_ui/LiveHeapProfile.ts +11 -2
- package/front_end/ui/legacy/components/perf_ui/OverviewGrid.ts +3 -3
- package/front_end/ui/legacy/components/quick_open/CommandMenu.ts +23 -31
- package/front_end/ui/legacy/components/quick_open/FilteredListWidget.ts +11 -27
- package/front_end/ui/legacy/components/quick_open/HelpQuickOpen.ts +11 -15
- package/front_end/ui/legacy/components/quick_open/filteredListWidget.css +18 -65
- package/front_end/ui/legacy/components/source_frame/JSONView.ts +2 -1
- package/front_end/ui/legacy/components/utils/Linkifier.ts +3 -3
- package/front_end/ui/legacy/tabbedPane.css +10 -0
- package/front_end/ui/visual_logging/KnownContextValues.ts +3 -0
- package/inspector_overlay/README.md +3 -3
- package/mcp/HostBindings.ts +310 -0
- package/mcp/mcp.ts +18 -0
- package/mcp/tsconfig.json +6 -1
- package/package.json +26 -24
- /package/front_end/ui/{components → kit}/cards/Card.ts +0 -0
- /package/front_end/ui/{components → kit}/cards/card.css +0 -0
- /package/front_end/ui/{components/icon_button → kit/icons}/icon.css +0 -0
|
@@ -7,8 +7,8 @@ import * as Common from '../common/common.js';
|
|
|
7
7
|
import * as Host from '../host/host.js';
|
|
8
8
|
import * as i18n from '../i18n/i18n.js';
|
|
9
9
|
import type * as Platform from '../platform/platform.js';
|
|
10
|
+
import * as Root from '../root/root.js';
|
|
10
11
|
|
|
11
|
-
import {FrameManager} from './FrameManager.js';
|
|
12
12
|
import {IOModel} from './IOModel.js';
|
|
13
13
|
import {MultitargetNetworkManager, NetworkManager} from './NetworkManager.js';
|
|
14
14
|
import {
|
|
@@ -68,7 +68,14 @@ export class ResourceKey {
|
|
|
68
68
|
}
|
|
69
69
|
}
|
|
70
70
|
|
|
71
|
-
|
|
71
|
+
export type UserAgentProvider = Pick<MultitargetNetworkManager, 'currentUserAgent'>;
|
|
72
|
+
|
|
73
|
+
/**
|
|
74
|
+
* The PageResourceLoader has two responsibilities: loading resources and tracking statistics scoped to targets
|
|
75
|
+
* for the DeveloperResourcesPanel. Many places only require the former, so we expose that functionality via small
|
|
76
|
+
* sub-interface. This makes it easier to test classes that require resource loading.
|
|
77
|
+
*/
|
|
78
|
+
export type ResourceLoader = Pick<PageResourceLoader, 'loadResource'>;
|
|
72
79
|
|
|
73
80
|
interface LoadQueueEntry {
|
|
74
81
|
resolve: () => void;
|
|
@@ -80,7 +87,10 @@ interface LoadQueueEntry {
|
|
|
80
87
|
* `PageResource` object around that holds meta information. This can be as the basis for reporting to the user which
|
|
81
88
|
* resources were loaded, and whether there was a load error.
|
|
82
89
|
*/
|
|
83
|
-
export class PageResourceLoader extends Common.ObjectWrapper.ObjectWrapper<EventTypes> {
|
|
90
|
+
export class PageResourceLoader extends Common.ObjectWrapper.ObjectWrapper<EventTypes> implements ResourceLoader {
|
|
91
|
+
readonly #targetManager: TargetManager;
|
|
92
|
+
readonly #settings: Common.Settings.Settings;
|
|
93
|
+
readonly #userAgentProvider: UserAgentProvider;
|
|
84
94
|
#currentlyLoading = 0;
|
|
85
95
|
#currentlyLoadingPerTarget = new Map<Protocol.Target.TargetID|'main', number>();
|
|
86
96
|
readonly #maxConcurrentLoads: number;
|
|
@@ -92,41 +102,51 @@ export class PageResourceLoader extends Common.ObjectWrapper.ObjectWrapper<Event
|
|
|
92
102
|
errorDescription: Host.ResourceLoader.LoadErrorDescription,
|
|
93
103
|
}>)|null;
|
|
94
104
|
constructor(
|
|
105
|
+
targetManager: TargetManager, settings: Common.Settings.Settings, userAgentProvider: UserAgentProvider,
|
|
95
106
|
loadOverride: ((arg0: string) => Promise<{
|
|
96
107
|
success: boolean,
|
|
97
108
|
content: string,
|
|
98
109
|
errorDescription: Host.ResourceLoader.LoadErrorDescription,
|
|
99
110
|
}>)|null,
|
|
100
|
-
maxConcurrentLoads
|
|
111
|
+
maxConcurrentLoads = 500) {
|
|
101
112
|
super();
|
|
113
|
+
this.#targetManager = targetManager;
|
|
114
|
+
this.#settings = settings;
|
|
115
|
+
this.#userAgentProvider = userAgentProvider;
|
|
102
116
|
this.#maxConcurrentLoads = maxConcurrentLoads;
|
|
103
|
-
|
|
117
|
+
this.#targetManager.addModelListener(
|
|
104
118
|
ResourceTreeModel, ResourceTreeModelEvents.PrimaryPageChanged, this.onPrimaryPageChanged, this);
|
|
105
119
|
this.#loadOverride = loadOverride;
|
|
106
120
|
}
|
|
107
121
|
|
|
108
|
-
static instance({forceNew, loadOverride, maxConcurrentLoads}: {
|
|
122
|
+
static instance({forceNew, targetManager, settings, userAgentProvider, loadOverride, maxConcurrentLoads}: {
|
|
109
123
|
forceNew: boolean,
|
|
110
124
|
loadOverride: (null|((arg0: string) => Promise<{
|
|
111
125
|
success: boolean,
|
|
112
126
|
content: string,
|
|
113
127
|
errorDescription: Host.ResourceLoader.LoadErrorDescription,
|
|
114
128
|
}>)),
|
|
115
|
-
|
|
129
|
+
targetManager?: TargetManager,
|
|
130
|
+
settings?: Common.Settings.Settings,
|
|
131
|
+
userAgentProvider?: UserAgentProvider,
|
|
132
|
+
maxConcurrentLoads?: number,
|
|
116
133
|
} = {
|
|
117
134
|
forceNew: false,
|
|
118
135
|
loadOverride: null,
|
|
119
|
-
maxConcurrentLoads: 500,
|
|
120
136
|
}): PageResourceLoader {
|
|
121
|
-
if (
|
|
122
|
-
|
|
137
|
+
if (forceNew) {
|
|
138
|
+
Root.DevToolsContext.globalInstance().set(
|
|
139
|
+
PageResourceLoader,
|
|
140
|
+
new PageResourceLoader(
|
|
141
|
+
targetManager ?? TargetManager.instance(), settings ?? Common.Settings.Settings.instance(),
|
|
142
|
+
userAgentProvider ?? MultitargetNetworkManager.instance(), loadOverride, maxConcurrentLoads));
|
|
123
143
|
}
|
|
124
144
|
|
|
125
|
-
return
|
|
145
|
+
return Root.DevToolsContext.globalInstance().get(PageResourceLoader);
|
|
126
146
|
}
|
|
127
147
|
|
|
128
148
|
static removeInstance(): void {
|
|
129
|
-
|
|
149
|
+
Root.DevToolsContext.globalInstance().delete(PageResourceLoader);
|
|
130
150
|
}
|
|
131
151
|
|
|
132
152
|
onPrimaryPageChanged(
|
|
@@ -159,7 +179,7 @@ export class PageResourceLoader extends Common.ObjectWrapper.ObjectWrapper<Event
|
|
|
159
179
|
|
|
160
180
|
getScopedResourcesLoaded(): Map<string, PageResource> {
|
|
161
181
|
return new Map([...this.#pageResources].filter(
|
|
162
|
-
([_, pageResource]) =>
|
|
182
|
+
([_, pageResource]) => this.#targetManager.isInScope(pageResource.initiator.target) ||
|
|
163
183
|
isExtensionInitiator(pageResource.initiator)));
|
|
164
184
|
}
|
|
165
185
|
|
|
@@ -180,11 +200,10 @@ export class PageResourceLoader extends Common.ObjectWrapper.ObjectWrapper<Event
|
|
|
180
200
|
loading: number,
|
|
181
201
|
resources: number,
|
|
182
202
|
} {
|
|
183
|
-
const targetManager = TargetManager.instance();
|
|
184
203
|
let loadingCount = 0;
|
|
185
204
|
for (const [targetId, count] of this.#currentlyLoadingPerTarget) {
|
|
186
|
-
const target = targetManager.targetById(targetId);
|
|
187
|
-
if (targetManager.isInScope(target)) {
|
|
205
|
+
const target = this.#targetManager.targetById(targetId);
|
|
206
|
+
if (this.#targetManager.isInScope(target)) {
|
|
188
207
|
loadingCount += count;
|
|
189
208
|
}
|
|
190
209
|
}
|
|
@@ -305,25 +324,15 @@ export class PageResourceLoader extends Common.ObjectWrapper.ObjectWrapper<Event
|
|
|
305
324
|
return await this.#loadOverride(url);
|
|
306
325
|
}
|
|
307
326
|
const parsedURL = new Common.ParsedURL.ParsedURL(url);
|
|
308
|
-
const eligibleForLoadFromTarget = getLoadThroughTargetSetting().get() && parsedURL &&
|
|
309
|
-
parsedURL.scheme !== 'data' && parsedURL.scheme !== 'devtools'
|
|
327
|
+
const eligibleForLoadFromTarget = this.getLoadThroughTargetSetting().get() && parsedURL &&
|
|
328
|
+
parsedURL.scheme !== 'file' && parsedURL.scheme !== 'data' && parsedURL.scheme !== 'devtools' &&
|
|
329
|
+
initiator.target;
|
|
310
330
|
Host.userMetrics.developerResourceScheme(this.getDeveloperResourceScheme(parsedURL));
|
|
311
331
|
if (eligibleForLoadFromTarget) {
|
|
312
332
|
try {
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
const result = await this.loadFromTarget(initiator.target, initiator.frameId, url, isBinary);
|
|
317
|
-
return result;
|
|
318
|
-
}
|
|
319
|
-
const frame = FrameManager.instance().getFrame(initiator.frameId);
|
|
320
|
-
if (frame) {
|
|
321
|
-
Host.userMetrics.developerResourceLoaded(
|
|
322
|
-
Host.UserMetrics.DeveloperResourceLoaded.LOAD_THROUGH_PAGE_VIA_FRAME);
|
|
323
|
-
const result =
|
|
324
|
-
await this.loadFromTarget(frame.resourceTreeModel().target(), initiator.frameId, url, isBinary);
|
|
325
|
-
return result;
|
|
326
|
-
}
|
|
333
|
+
Host.userMetrics.developerResourceLoaded(Host.UserMetrics.DeveloperResourceLoaded.LOAD_THROUGH_PAGE_VIA_TARGET);
|
|
334
|
+
const result = await this.loadFromTarget(initiator.target, initiator.frameId, url, isBinary);
|
|
335
|
+
return result;
|
|
327
336
|
} catch (e) {
|
|
328
337
|
if (e instanceof Error) {
|
|
329
338
|
Host.userMetrics.developerResourceLoaded(Host.UserMetrics.DeveloperResourceLoaded.LOAD_THROUGH_PAGE_FAILURE);
|
|
@@ -339,13 +348,13 @@ export class PageResourceLoader extends Common.ObjectWrapper.ObjectWrapper<Event
|
|
|
339
348
|
}
|
|
340
349
|
Host.userMetrics.developerResourceLoaded(Host.UserMetrics.DeveloperResourceLoaded.LOAD_THROUGH_PAGE_FALLBACK);
|
|
341
350
|
} else {
|
|
342
|
-
const code = getLoadThroughTargetSetting().get() ?
|
|
351
|
+
const code = this.getLoadThroughTargetSetting().get() ?
|
|
343
352
|
Host.UserMetrics.DeveloperResourceLoaded.FALLBACK_PER_PROTOCOL :
|
|
344
353
|
Host.UserMetrics.DeveloperResourceLoaded.FALLBACK_PER_OVERRIDE;
|
|
345
354
|
Host.userMetrics.developerResourceLoaded(code);
|
|
346
355
|
}
|
|
347
356
|
|
|
348
|
-
const result = await
|
|
357
|
+
const result = await this.loadFromHostBindings(url);
|
|
349
358
|
if (eligibleForLoadFromTarget && !result.success) {
|
|
350
359
|
Host.userMetrics.developerResourceLoaded(Host.UserMetrics.DeveloperResourceLoaded.FALLBACK_FAILURE);
|
|
351
360
|
}
|
|
@@ -395,7 +404,7 @@ export class PageResourceLoader extends Common.ObjectWrapper.ObjectWrapper<Event
|
|
|
395
404
|
}> {
|
|
396
405
|
const networkManager = (target.model(NetworkManager) as NetworkManager);
|
|
397
406
|
const ioModel = (target.model(IOModel) as IOModel);
|
|
398
|
-
const disableCache =
|
|
407
|
+
const disableCache = this.#settings.moduleSetting('cache-disabled').get();
|
|
399
408
|
const resource = await networkManager.loadNetworkResource(frameId, url, {disableCache, includeCredentials: true});
|
|
400
409
|
try {
|
|
401
410
|
const content = resource.stream ?
|
|
@@ -420,10 +429,34 @@ export class PageResourceLoader extends Common.ObjectWrapper.ObjectWrapper<Event
|
|
|
420
429
|
}
|
|
421
430
|
}
|
|
422
431
|
}
|
|
423
|
-
}
|
|
424
432
|
|
|
425
|
-
|
|
426
|
-
|
|
433
|
+
private async loadFromHostBindings(url: Platform.DevToolsPath.UrlString): Promise<{
|
|
434
|
+
success: boolean,
|
|
435
|
+
content: string,
|
|
436
|
+
errorDescription: Host.ResourceLoader.LoadErrorDescription,
|
|
437
|
+
}> {
|
|
438
|
+
const headers: Record<string, string> = {};
|
|
439
|
+
|
|
440
|
+
const currentUserAgent = this.#userAgentProvider.currentUserAgent();
|
|
441
|
+
if (currentUserAgent) {
|
|
442
|
+
headers['User-Agent'] = currentUserAgent;
|
|
443
|
+
}
|
|
444
|
+
|
|
445
|
+
if (this.#settings.moduleSetting('cache-disabled').get()) {
|
|
446
|
+
headers['Cache-Control'] = 'no-cache';
|
|
447
|
+
}
|
|
448
|
+
|
|
449
|
+
const allowRemoteFilePaths = this.#settings.moduleSetting('network.enable-remote-file-loading').get();
|
|
450
|
+
|
|
451
|
+
return await new Promise(
|
|
452
|
+
resolve => Host.ResourceLoader.load(url, headers, (success, _responseHeaders, content, errorDescription) => {
|
|
453
|
+
resolve({success, content, errorDescription});
|
|
454
|
+
}, allowRemoteFilePaths));
|
|
455
|
+
}
|
|
456
|
+
|
|
457
|
+
getLoadThroughTargetSetting(): Common.Settings.Setting<boolean> {
|
|
458
|
+
return this.#settings.createSetting('load-through-target', true);
|
|
459
|
+
}
|
|
427
460
|
}
|
|
428
461
|
|
|
429
462
|
export const enum Events {
|
|
@@ -779,6 +779,12 @@ export class SourceMap {
|
|
|
779
779
|
return this.#scopesInfo?.findOriginalFunctionName(position) ?? null;
|
|
780
780
|
}
|
|
781
781
|
|
|
782
|
+
findOriginalFunctionScope(position: ScopesCodec.Position):
|
|
783
|
+
{scope: ScopesCodec.OriginalScope, url?: Platform.DevToolsPath.UrlString}|null {
|
|
784
|
+
this.#ensureSourceMapProcessed();
|
|
785
|
+
return this.#scopesInfo?.findOriginalFunctionScope(position) ?? null;
|
|
786
|
+
}
|
|
787
|
+
|
|
782
788
|
isOutlinedFrame(generatedLine: number, generatedColumn: number): boolean {
|
|
783
789
|
this.#ensureSourceMapProcessed();
|
|
784
790
|
return this.#scopesInfo?.isOutlinedFrame(generatedLine, generatedColumn) ?? false;
|
|
@@ -9,6 +9,11 @@ export class SourceMapCache {
|
|
|
9
9
|
static readonly #INSTANCE = new SourceMapCache('devtools-source-map-cache');
|
|
10
10
|
|
|
11
11
|
static instance(): SourceMapCache {
|
|
12
|
+
if (typeof window === 'undefined') {
|
|
13
|
+
// TODO(crbug.com/451502260): Move this behind a `HostRuntime` interface.
|
|
14
|
+
return IN_MEMORY_INSTANCE as unknown as
|
|
15
|
+
SourceMapCache; // TS doesn't like that our in-memory class doesn't have the same private fields.
|
|
16
|
+
}
|
|
12
17
|
return this.#INSTANCE;
|
|
13
18
|
}
|
|
14
19
|
|
|
@@ -52,3 +57,19 @@ export class SourceMapCache {
|
|
|
52
57
|
await window.caches.delete(this.#name);
|
|
53
58
|
}
|
|
54
59
|
}
|
|
60
|
+
|
|
61
|
+
const IN_MEMORY_INSTANCE = new (class implements Pick<SourceMapCache, 'get'|'set'|'disposeForTest'> {
|
|
62
|
+
readonly #cache = new Map<DebugId, SourceMapV3>();
|
|
63
|
+
|
|
64
|
+
async set(debugId: DebugId, sourceMap: SourceMapV3): Promise<void> {
|
|
65
|
+
this.#cache.set(debugId, sourceMap);
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
async get(debugId: DebugId): Promise<SourceMapV3|null> {
|
|
69
|
+
return this.#cache.get(debugId) ?? null;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
async disposeForTest(): Promise<void> {
|
|
73
|
+
// Do nothing.
|
|
74
|
+
}
|
|
75
|
+
})();
|
|
@@ -6,7 +6,7 @@ import * as Common from '../common/common.js';
|
|
|
6
6
|
import * as Platform from '../platform/platform.js';
|
|
7
7
|
|
|
8
8
|
import type {FrameAssociated} from './FrameAssociated.js';
|
|
9
|
-
import {PageResourceLoader, type PageResourceLoadInitiator} from './PageResourceLoader.js';
|
|
9
|
+
import {PageResourceLoader, type PageResourceLoadInitiator, type ResourceLoader} from './PageResourceLoader.js';
|
|
10
10
|
import {type DebugId, parseSourceMap, SourceMap, type SourceMapV3} from './SourceMap.js';
|
|
11
11
|
import {SourceMapCache} from './SourceMapCache.js';
|
|
12
12
|
import {type Target, Type} from './Target.js';
|
|
@@ -112,8 +112,14 @@ export class SourceMapManager<T extends FrameAssociated> extends Common.ObjectWr
|
|
|
112
112
|
if (this.#attachingClient === client) {
|
|
113
113
|
this.#attachingClient = null;
|
|
114
114
|
const initiator = client.createPageResourceLoadInitiator();
|
|
115
|
+
// TODO(crbug.com/458180550): Pass PageResourceLoader via constructor.
|
|
116
|
+
// The reason we grab it here lazily from the context is that otherwise every
|
|
117
|
+
// unit test using `createTarget` would need to set up a `PageResourceLoader`, as
|
|
118
|
+
// CSSModel and DebuggerModel are autostarted by default, and they create a
|
|
119
|
+
// SourceMapManager in their respective constructors.
|
|
120
|
+
const resourceLoader = this.#target.targetManager().context.get(PageResourceLoader);
|
|
115
121
|
clientData.sourceMapPromise =
|
|
116
|
-
loadSourceMap(sourceMapURL, client.debugId(), initiator)
|
|
122
|
+
loadSourceMap(resourceLoader, sourceMapURL, client.debugId(), initiator)
|
|
117
123
|
.then(
|
|
118
124
|
payload => {
|
|
119
125
|
const sourceMap = this.#factory(sourceURL, sourceMapURL, payload, client);
|
|
@@ -180,8 +186,8 @@ export class SourceMapManager<T extends FrameAssociated> extends Common.ObjectWr
|
|
|
180
186
|
}
|
|
181
187
|
}
|
|
182
188
|
|
|
183
|
-
|
|
184
|
-
url: Platform.DevToolsPath.UrlString, debugId: DebugId|null,
|
|
189
|
+
async function loadSourceMap(
|
|
190
|
+
resourceLoader: ResourceLoader, url: Platform.DevToolsPath.UrlString, debugId: DebugId|null,
|
|
185
191
|
initiator: PageResourceLoadInitiator): Promise<SourceMapV3> {
|
|
186
192
|
try {
|
|
187
193
|
if (debugId) {
|
|
@@ -191,7 +197,7 @@ export async function loadSourceMap(
|
|
|
191
197
|
}
|
|
192
198
|
}
|
|
193
199
|
|
|
194
|
-
const {content} = await
|
|
200
|
+
const {content} = await resourceLoader.loadResource(url, initiator);
|
|
195
201
|
const sourceMap = parseSourceMap(content);
|
|
196
202
|
if ('debugId' in sourceMap && sourceMap.debugId) {
|
|
197
203
|
// In case something goes wrong with updating the cache, we still want to use the source map.
|
|
@@ -204,9 +210,10 @@ export async function loadSourceMap(
|
|
|
204
210
|
}
|
|
205
211
|
|
|
206
212
|
export async function tryLoadSourceMap(
|
|
207
|
-
url: Platform.DevToolsPath.UrlString,
|
|
213
|
+
resourceLoader: ResourceLoader, url: Platform.DevToolsPath.UrlString,
|
|
214
|
+
initiator: PageResourceLoadInitiator): Promise<SourceMapV3|null> {
|
|
208
215
|
try {
|
|
209
|
-
return await loadSourceMap(url, null, initiator);
|
|
216
|
+
return await loadSourceMap(resourceLoader, url, null, initiator);
|
|
210
217
|
} catch (cause) {
|
|
211
218
|
console.error(cause);
|
|
212
219
|
return null;
|
|
@@ -121,14 +121,18 @@ export class SourceMapScopesInfo {
|
|
|
121
121
|
const canMapOriginalPosition = startEntry && endEntry && sourceIndex !== undefined &&
|
|
122
122
|
startEntry.sourceIndex === endEntry.sourceIndex && startEntry.sourceIndex !== undefined && sourceIndex >= 0 &&
|
|
123
123
|
sourceIndex < numSourceUrls;
|
|
124
|
-
const isStackFrame = node.kind === Formatter.FormatterWorkerPool.ScopeKind.FUNCTION
|
|
124
|
+
const isStackFrame = node.kind === Formatter.FormatterWorkerPool.ScopeKind.FUNCTION ||
|
|
125
|
+
node.kind === Formatter.FormatterWorkerPool.ScopeKind.ARROW_FUNCTION;
|
|
126
|
+
// TODO(crbug.com/368222773): Instead of mapping `start`, we should report a number of candidates. e.g. for arrow functions we should
|
|
127
|
+
// follow the spec and map the `=>` as the spec says that is where the original name (if any) for arrow functions can be found.
|
|
128
|
+
const name = node.kind === Formatter.FormatterWorkerPool.ScopeKind.FUNCTION ? startEntry?.name : undefined;
|
|
125
129
|
|
|
126
130
|
let scope: ScopesCodec.OriginalScope|undefined;
|
|
127
131
|
if (canMapOriginalPosition) {
|
|
128
132
|
scope = {
|
|
129
133
|
start: {line: startEntry.sourceLineNumber, column: startEntry.sourceColumnNumber},
|
|
130
134
|
end: {line: endEntry.sourceLineNumber, column: endEntry.sourceColumnNumber},
|
|
131
|
-
name
|
|
135
|
+
name,
|
|
132
136
|
isStackFrame,
|
|
133
137
|
variables: [],
|
|
134
138
|
children: [],
|
|
@@ -14,6 +14,16 @@ import {type RegistrationInfo, SDKModel, type SDKModelConstructor} from './SDKMo
|
|
|
14
14
|
import {Target, Type as TargetType} from './Target.js';
|
|
15
15
|
|
|
16
16
|
export class TargetManager extends Common.ObjectWrapper.ObjectWrapper<EventTypes> {
|
|
17
|
+
/**
|
|
18
|
+
* @deprecated
|
|
19
|
+
*
|
|
20
|
+
* Intended for {@link SDKModel} classes to be able to retrieve scoped singletons like
|
|
21
|
+
* the "PageResourceLoader" or the "FrameManager".
|
|
22
|
+
*
|
|
23
|
+
* This is only an intermediate step to migrate towards our "layering vision" where
|
|
24
|
+
* SDKModels don't require things from the next layer.
|
|
25
|
+
*/
|
|
26
|
+
readonly context: Root.DevToolsContext.DevToolsContext;
|
|
17
27
|
#targets: Set<Target>;
|
|
18
28
|
readonly #observers: Set<Observer>;
|
|
19
29
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
@@ -36,8 +46,9 @@ export class TargetManager extends Common.ObjectWrapper.ObjectWrapper<EventTypes
|
|
|
36
46
|
/**
|
|
37
47
|
* @param overrideAutoStartModels If provided, then the `autostart` flag on {@link RegistrationInfo} will be ignored.
|
|
38
48
|
*/
|
|
39
|
-
constructor(overrideAutoStartModels?: Set<SDKModelConstructor>) {
|
|
49
|
+
constructor(context: Root.DevToolsContext.DevToolsContext, overrideAutoStartModels?: Set<SDKModelConstructor>) {
|
|
40
50
|
super();
|
|
51
|
+
this.context = context;
|
|
41
52
|
this.#targets = new Set();
|
|
42
53
|
this.#observers = new Set();
|
|
43
54
|
this.#modelListeners = new Platform.MapUtilities.Multimap();
|
|
@@ -55,7 +66,8 @@ export class TargetManager extends Common.ObjectWrapper.ObjectWrapper<EventTypes
|
|
|
55
66
|
forceNew: boolean,
|
|
56
67
|
} = {forceNew: false}): TargetManager {
|
|
57
68
|
if (!Root.DevToolsContext.globalInstance().has(TargetManager) || forceNew) {
|
|
58
|
-
Root.DevToolsContext.globalInstance().set(
|
|
69
|
+
Root.DevToolsContext.globalInstance().set(
|
|
70
|
+
TargetManager, new TargetManager(Root.DevToolsContext.globalInstance()));
|
|
59
71
|
}
|
|
60
72
|
|
|
61
73
|
return Root.DevToolsContext.globalInstance().get(TargetManager);
|
|
@@ -387,6 +387,10 @@ const UIStrings = {
|
|
|
387
387
|
* @description Title of a setting under the Sources category that can be invoked through the Command Menu
|
|
388
388
|
*/
|
|
389
389
|
disableCssSourceMaps: 'Disable CSS source maps',
|
|
390
|
+
/**
|
|
391
|
+
* @description Title of a setting under the Console category in Settings
|
|
392
|
+
*/
|
|
393
|
+
logXmlhttprequests: 'Log XMLHttpRequests',
|
|
390
394
|
} as const;
|
|
391
395
|
const str_ = i18n.i18n.registerUIStrings('core/sdk/sdk-meta.ts', UIStrings);
|
|
392
396
|
const i18nLazyString = i18n.i18n.getLazilyComputedLocalizedString.bind(undefined, str_);
|
|
@@ -1194,3 +1198,12 @@ Common.Settings.registerSettingExtension({
|
|
|
1194
1198
|
},
|
|
1195
1199
|
],
|
|
1196
1200
|
});
|
|
1201
|
+
|
|
1202
|
+
Common.Settings.registerSettingExtension({
|
|
1203
|
+
category: Common.Settings.SettingCategory.CONSOLE,
|
|
1204
|
+
storageType: Common.Settings.SettingStorageType.SYNCED,
|
|
1205
|
+
title: i18nLazyString(UIStrings.logXmlhttprequests),
|
|
1206
|
+
settingName: 'monitoring-xhr-enabled',
|
|
1207
|
+
settingType: Common.Settings.SettingType.BOOLEAN,
|
|
1208
|
+
defaultValue: false,
|
|
1209
|
+
});
|
|
@@ -172,7 +172,7 @@ export class ScopeVariableAnalysis {
|
|
|
172
172
|
node.elements.forEach(item => this.#processNode(item));
|
|
173
173
|
break;
|
|
174
174
|
case 'ArrowFunctionExpression': {
|
|
175
|
-
this.#pushScope(node.start, node.end, ScopeKind.
|
|
175
|
+
this.#pushScope(node.start, node.end, ScopeKind.ARROW_FUNCTION);
|
|
176
176
|
node.params.forEach(this.#processNodeAsDefinition.bind(this, DefinitionKind.VAR, false));
|
|
177
177
|
if (node.body.type === 'BlockStatement') {
|
|
178
178
|
// Include the body of the arrow function in the same scope as the arguments.
|
|
@@ -132,6 +132,7 @@ let loadedPanelCommonModule: typeof PanelCommon|undefined;
|
|
|
132
132
|
export class MainImpl {
|
|
133
133
|
#readyForTestPromise = Promise.withResolvers<void>();
|
|
134
134
|
#veStartPromise!: Promise<void>;
|
|
135
|
+
#universe!: Foundation.Universe.Universe;
|
|
135
136
|
|
|
136
137
|
constructor() {
|
|
137
138
|
MainImpl.instanceForTest = this;
|
|
@@ -175,8 +176,8 @@ export class MainImpl {
|
|
|
175
176
|
runSettingsMigration: !Host.InspectorFrontendHost.isUnderTest(),
|
|
176
177
|
},
|
|
177
178
|
};
|
|
178
|
-
|
|
179
|
-
Root.DevToolsContext.setGlobalInstance(universe.context);
|
|
179
|
+
this.#universe = new Foundation.Universe.Universe(creationOptions);
|
|
180
|
+
Root.DevToolsContext.setGlobalInstance(this.#universe.context);
|
|
180
181
|
|
|
181
182
|
await this.requestAndRegisterLocaleData();
|
|
182
183
|
|
|
@@ -425,6 +426,7 @@ export class MainImpl {
|
|
|
425
426
|
{forceNew: true, win: window, frontendHost: Host.InspectorFrontendHost.InspectorFrontendHostInstance});
|
|
426
427
|
UI.ContextMenu.ContextMenu.initialize();
|
|
427
428
|
UI.ContextMenu.ContextMenu.installHandler(document);
|
|
429
|
+
UI.ViewManager.ViewManager.instance({forceNew: true, universe: this.#universe});
|
|
428
430
|
|
|
429
431
|
// These instances need to be created early so they don't miss any events about requests/issues/etc.
|
|
430
432
|
Logs.NetworkLog.NetworkLog.instance();
|
|
@@ -439,7 +441,6 @@ export class MainImpl {
|
|
|
439
441
|
IssuesManager.ContrastCheckTrigger.ContrastCheckTrigger.instance();
|
|
440
442
|
|
|
441
443
|
UI.DockController.DockController.instance({forceNew: true, canDock});
|
|
442
|
-
SDK.NetworkManager.MultitargetNetworkManager.instance({forceNew: true});
|
|
443
444
|
SDK.DOMDebuggerModel.DOMDebuggerManager.instance({forceNew: true});
|
|
444
445
|
const targetManager = SDK.TargetManager.TargetManager.instance();
|
|
445
446
|
targetManager.addEventListener(
|
|
@@ -939,7 +940,7 @@ export class MainMenuItem implements UI.Toolbar.Provider {
|
|
|
939
940
|
contextMenu.appendItemsAtLocation('mainMenu');
|
|
940
941
|
const moreTools =
|
|
941
942
|
contextMenu.defaultSection().appendSubMenuItem(i18nString(UIStrings.moreTools), false, 'more-tools');
|
|
942
|
-
const viewExtensions = UI.ViewManager.getRegisteredViewExtensions();
|
|
943
|
+
const viewExtensions = UI.ViewManager.ViewManager.instance().getRegisteredViewExtensions();
|
|
943
944
|
viewExtensions.sort((extension1, extension2) => {
|
|
944
945
|
const title1 = extension1.title();
|
|
945
946
|
const title2 = extension2.title();
|
|
@@ -24,9 +24,16 @@ export class Universe {
|
|
|
24
24
|
...options.settingsCreationOptions,
|
|
25
25
|
});
|
|
26
26
|
|
|
27
|
-
const targetManager = new SDK.TargetManager.TargetManager(options.overrideAutoStartModels);
|
|
27
|
+
const targetManager = new SDK.TargetManager.TargetManager(this.context, options.overrideAutoStartModels);
|
|
28
28
|
this.context.set(SDK.TargetManager.TargetManager, targetManager);
|
|
29
29
|
|
|
30
|
+
const multitargetNetworkManager = new SDK.NetworkManager.MultitargetNetworkManager(targetManager);
|
|
31
|
+
this.context.set(SDK.NetworkManager.MultitargetNetworkManager, multitargetNetworkManager);
|
|
32
|
+
|
|
33
|
+
const pageResourceLoader =
|
|
34
|
+
new SDK.PageResourceLoader.PageResourceLoader(targetManager, settings, multitargetNetworkManager, null);
|
|
35
|
+
this.context.set(SDK.PageResourceLoader.PageResourceLoader, pageResourceLoader);
|
|
36
|
+
|
|
30
37
|
const workspace = new Workspace.Workspace.WorkspaceImpl();
|
|
31
38
|
this.context.set(Workspace.Workspace.WorkspaceImpl, workspace);
|
|
32
39
|
|
|
@@ -58,6 +58,10 @@ export const UIStrings = {
|
|
|
58
58
|
* @description Warning displayed to developers when a data: URL is assigned to SVGUseElement to let them know that the support is deprecated.
|
|
59
59
|
*/
|
|
60
60
|
DataUrlInSvgUse: "Support for data: URLs in SVGUseElement is deprecated and it will be removed in the future.",
|
|
61
|
+
/**
|
|
62
|
+
* @description Translation is not needed, this will never be exposed in production code.
|
|
63
|
+
*/
|
|
64
|
+
ExampleBrowserProcessDeprecation: "This is an example for showing the code required for a browser process reported deprecation.",
|
|
61
65
|
/**
|
|
62
66
|
* @description A deprecation warning shown in the DevTools Issues tab. It's shown when one of the Protected Audience APIs like `navigator.joinAdInterestGroup`, `navigator.getInterestGroupAdAuctionData` or `navigator.runAdAuction` are called.
|
|
63
67
|
*/
|
|
@@ -174,10 +178,6 @@ export const UIStrings = {
|
|
|
174
178
|
* @description Standard message when one web API is deprecated in favor of another.
|
|
175
179
|
*/
|
|
176
180
|
PrefixedVideoSupportsFullscreen: "HTMLVideoElement.webkitSupportsFullscreen is deprecated. Please use Document.fullscreenEnabled instead.",
|
|
177
|
-
/**
|
|
178
|
-
* @description Warning displayed to developers that the API `chrome.privacy.websites.privacySandboxEnabled` is being deprecated in favour of three new more granular APIs: topicsEnabled, FledgeEnabled and adMeasurementEnabled. The `privacySandboxEnabled` API allowed extensions to control the homologous Chrome Setting. The existing Chrome Setting for Privacy Sandbox is also going away in favor of more granular settings that are matched by the new extensions APIs- topicsEnabled, FledgeEnabled and adMeasurementEnabled.
|
|
179
|
-
*/
|
|
180
|
-
PrivacySandboxExtensionsAPI: "We're deprecating the API `chrome.privacy.websites.privacySandboxEnabled`, though it will remain active for backward compatibility until release M113. Instead, please use `chrome.privacy.websites.topicsEnabled`, `chrome.privacy.websites.fledgeEnabled` and `chrome.privacy.websites.adMeasurementEnabled`. See https://developer.chrome.com/docs/extensions/reference/privacy/#property-websites-privacySandboxEnabled.",
|
|
181
181
|
/**
|
|
182
182
|
* @description Standard message when one web API is deprecated in favor of another.
|
|
183
183
|
*/
|
|
@@ -210,6 +210,14 @@ export const UIStrings = {
|
|
|
210
210
|
* @description A deprecation warning shown in the DevTools Issues tab. The placeholder is always the noun 'SharedArrayBuffer' which refers to a JavaScript construct.
|
|
211
211
|
*/
|
|
212
212
|
SharedArrayBufferConstructedWithoutIsolation: "`SharedArrayBuffer` will require cross-origin isolation. See https://developer.chrome.com/blog/enabling-shared-array-buffer/ for more details.",
|
|
213
|
+
/**
|
|
214
|
+
* @description A deprecation warning shown in the DevTools Issues tab. It's shown when one of the Shared Storage APIs like `sharedStorage.set()`, `sharedStorage.worklet.addModule()`, `sharedStorage.selectURL()`, etc., along with `<img sharedstoragewritable>`, `<iframe sharedstoragewritable>`, or `fetch(url, {sharedStorageWritable: true})` are used.
|
|
215
|
+
*/
|
|
216
|
+
SharedStorage: "The Shared Storage API is deprecated and will be removed in a future release.",
|
|
217
|
+
/**
|
|
218
|
+
* @description A deprecation warning shown in the DevTools Issues tab. It's shown when the `document.requestStorageAccessFor` API is called. The placeholder will always be the string `document.requestStorageAccessFor`.
|
|
219
|
+
*/
|
|
220
|
+
StorageAccessAPI_requestStorageAccessFor_Method: "`document.requestStorageAccessFor` is deprecated and will be removed. See https://privacysandbox.com/news/update-on-plans-for-privacy-sandbox-technologies/ for more details.",
|
|
213
221
|
/**
|
|
214
222
|
* @description A deprecation warning shown in the DevTools Issues tab. It's shown when the speech synthesis API is called before the page receives a user activation.
|
|
215
223
|
*/
|
|
@@ -351,6 +359,12 @@ export const DEPRECATIONS_METADATA: Partial<Record<string, DeprecationDescriptor
|
|
|
351
359
|
"SharedArrayBufferConstructedWithoutIsolation": {
|
|
352
360
|
"milestone": 106
|
|
353
361
|
},
|
|
362
|
+
"SharedStorage": {
|
|
363
|
+
"chromeStatusFeature": 5076349064708096
|
|
364
|
+
},
|
|
365
|
+
"StorageAccessAPI_requestStorageAccessFor_Method": {
|
|
366
|
+
"chromeStatusFeature": 5162221567082496
|
|
367
|
+
},
|
|
354
368
|
"TextToSpeech_DisallowedByAutoplay": {
|
|
355
369
|
"chromeStatusFeature": 5687444770914304,
|
|
356
370
|
"milestone": 71
|