chrome-devtools-frontend 1.0.1657110 → 1.0.1660788

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.
Files changed (317) hide show
  1. package/.agents/skills/devtools-ux-writing-refactor/SKILL.md +125 -0
  2. package/.agents/skills/migrate-chromium-test/SKILL.md +15 -70
  3. package/.agents/skills/repro-flaky-tests/SKILL.md +53 -0
  4. package/.agents/skills/ui-eng-vision-orchestrator/SKILL.md +37 -18
  5. package/.agents/skills/version-control/SKILL.md +8 -1
  6. package/AUTHORS +1 -0
  7. package/SECURITY.md +3 -0
  8. package/docs/get_the_code.md +6 -0
  9. package/front_end/Images/src/ads.svg +1 -0
  10. package/front_end/Tests.js +6 -6
  11. package/front_end/core/common/Gzip.ts +12 -5
  12. package/front_end/core/common/ResourceType.ts +19 -19
  13. package/front_end/core/common/Revealer.ts +15 -15
  14. package/front_end/core/common/SettingRegistration.ts +19 -19
  15. package/front_end/core/host/AidaClient.ts +35 -9
  16. package/front_end/core/host/GdpClient.ts +10 -7
  17. package/front_end/core/platform/StringUtilities.ts +35 -0
  18. package/front_end/core/sdk/AccessibilityModel.snapshot.txt +17 -0
  19. package/front_end/core/sdk/AccessibilityModel.ts +132 -2
  20. package/front_end/core/sdk/CPUThrottlingManager.ts +8 -5
  21. package/front_end/core/sdk/CSSMetadata.ts +110 -16
  22. package/front_end/core/sdk/CompilerSourceMappingContentProvider.ts +2 -5
  23. package/front_end/core/sdk/ConsoleModel.ts +5 -5
  24. package/front_end/core/sdk/DOMDebuggerModel.ts +5 -1
  25. package/front_end/core/sdk/DOMModel.ts +32 -18
  26. package/front_end/core/sdk/NetworkManager.ts +58 -14
  27. package/front_end/core/sdk/NetworkRequest.ts +37 -1
  28. package/front_end/core/sdk/OverlayModel.ts +45 -6
  29. package/front_end/core/sdk/ResourceTreeModel.ts +6 -7
  30. package/front_end/core/sdk/ScreenCaptureModel.ts +2 -2
  31. package/front_end/core/sdk/ServerTiming.ts +17 -13
  32. package/front_end/core/sdk/ServiceWorkerCacheModel.ts +4 -2
  33. package/front_end/core/sdk/ServiceWorkerManager.ts +19 -5
  34. package/front_end/core/sdk/TargetManager.ts +10 -1
  35. package/front_end/core/sdk/TraceObject.ts +4 -2
  36. package/front_end/core/sdk/sdk-meta.ts +170 -0
  37. package/front_end/design_system_tokens.css +0 -5
  38. package/front_end/entrypoints/devtools_app/devtools_app.ts +1 -1
  39. package/front_end/entrypoints/formatter_worker/CSSFormatter.ts +13 -4
  40. package/front_end/entrypoints/formatter_worker/FormattedContentBuilder.ts +5 -2
  41. package/front_end/entrypoints/formatter_worker/FormatterWorker.ts +23 -4
  42. package/front_end/entrypoints/formatter_worker/HTMLFormatter.ts +33 -10
  43. package/front_end/entrypoints/formatter_worker/JavaScriptFormatter.ts +8 -3
  44. package/front_end/entrypoints/inspector_main/InspectorMain.ts +4 -4
  45. package/front_end/entrypoints/inspector_main/OutermostTargetSelector.ts +2 -2
  46. package/front_end/entrypoints/inspector_main/RenderingOptions.ts +36 -37
  47. package/front_end/entrypoints/inspector_main/inspector_main-meta.ts +15 -33
  48. package/front_end/entrypoints/js_app/js_app.ts +6 -5
  49. package/front_end/entrypoints/main/GlobalAiButton.ts +4 -4
  50. package/front_end/entrypoints/main/MainImpl.ts +25 -55
  51. package/front_end/entrypoints/main/main-meta.ts +50 -50
  52. package/front_end/entrypoints/node_app/app/NodeConnectionsPanel.ts +5 -5
  53. package/front_end/entrypoints/node_app/app/NodeMain.ts +3 -3
  54. package/front_end/entrypoints/node_app/node_app.ts +10 -9
  55. package/front_end/entrypoints/worker_app/WorkerMain.ts +1 -1
  56. package/front_end/foundation/Universe.ts +76 -6
  57. package/front_end/generated/InspectorBackendCommands.ts +3 -3
  58. package/front_end/generated/SupportedCSSProperties.js +19 -12
  59. package/front_end/generated/protocol.ts +7 -1
  60. package/front_end/models/ai_assistance/AiConversation.ts +19 -17
  61. package/front_end/models/ai_assistance/AiHistoryStorage.ts +37 -14
  62. package/front_end/models/ai_assistance/AiUtils.ts +38 -42
  63. package/front_end/models/ai_assistance/agents/AiAgent.ts +5 -1
  64. package/front_end/models/ai_assistance/agents/ContextSelectionAgent.ts +3 -2
  65. package/front_end/models/ai_assistance/agents/PerformanceAgent.ts +2 -1
  66. package/front_end/models/ai_assistance/agents/StorageAgent.ts +7 -5
  67. package/front_end/models/ai_assistance/data_formatters/PerformanceTraceFormatter.snapshot.txt +270 -286
  68. package/front_end/models/ai_assistance/data_formatters/UnitFormatters.ts +20 -0
  69. package/front_end/models/ai_assistance/performance/AICallTree.ts +3 -1
  70. package/front_end/models/ai_assistance/tools/ListNetworkRequests.ts +3 -2
  71. package/front_end/models/autofill_manager/AutofillManager.ts +3 -1
  72. package/front_end/models/bindings/CSSWorkspaceBinding.ts +8 -5
  73. package/front_end/models/bindings/CompilerScriptMapping.ts +2 -1
  74. package/front_end/models/bindings/DebuggerLanguagePlugins.ts +15 -16
  75. package/front_end/models/bindings/DebuggerWorkspaceBinding.ts +6 -4
  76. package/front_end/models/bindings/FileUtils.ts +11 -12
  77. package/front_end/models/bindings/NetworkProject.ts +4 -0
  78. package/front_end/models/bindings/PresentationConsoleMessageHelper.ts +2 -1
  79. package/front_end/models/bindings/ResourceUtils.ts +1 -1
  80. package/front_end/models/bindings/SASSSourceMapping.ts +8 -5
  81. package/front_end/models/emulation/DeviceModeModel.ts +14 -14
  82. package/front_end/models/emulation/EmulatedDevices.ts +392 -11
  83. package/front_end/models/extensions/ExtensionAPI.ts +6 -6
  84. package/front_end/models/extensions/LanguageExtensionEndpoint.ts +13 -12
  85. package/front_end/models/issues_manager/BounceTrackingIssue.ts +1 -1
  86. package/front_end/models/issues_manager/ClientHintIssue.ts +1 -1
  87. package/front_end/models/issues_manager/ConnectionAllowlistIssue.ts +1 -1
  88. package/front_end/models/issues_manager/ContentSecurityPolicyIssue.ts +7 -7
  89. package/front_end/models/issues_manager/CookieDeprecationMetadataIssue.ts +2 -2
  90. package/front_end/models/issues_manager/CookieIssue.ts +6 -7
  91. package/front_end/models/issues_manager/CorsIssue.ts +3 -3
  92. package/front_end/models/issues_manager/CrossOriginEmbedderPolicyIssue.ts +2 -2
  93. package/front_end/models/issues_manager/DeprecationIssue.ts +3 -3
  94. package/front_end/models/issues_manager/EmailVerificationRequestIssue.ts +1 -1
  95. package/front_end/models/issues_manager/FederatedAuthRequestIssue.ts +1 -1
  96. package/front_end/models/issues_manager/FederatedAuthUserInfoRequestIssue.ts +1 -1
  97. package/front_end/models/issues_manager/GenericIssue.ts +7 -7
  98. package/front_end/models/issues_manager/HeavyAdIssue.ts +3 -3
  99. package/front_end/models/issues_manager/Issue.ts +8 -8
  100. package/front_end/models/issues_manager/MixedContentIssue.ts +1 -1
  101. package/front_end/models/issues_manager/PartitioningBlobURLIssue.ts +3 -3
  102. package/front_end/models/issues_manager/QuirksModeIssue.ts +1 -1
  103. package/front_end/models/issues_manager/SRIMessageSignatureIssue.ts +2 -2
  104. package/front_end/models/issues_manager/SelectivePermissionsInterventionIssue.ts +2 -2
  105. package/front_end/models/issues_manager/SharedArrayBufferIssue.ts +2 -2
  106. package/front_end/models/issues_manager/SharedDictionaryIssue.ts +1 -1
  107. package/front_end/models/issues_manager/UnencodedDigestIssue.ts +3 -3
  108. package/front_end/models/javascript_metadata/NativeFunctions.js +5 -1
  109. package/front_end/models/stack_trace/StackTraceModel.ts +3 -3
  110. package/front_end/models/text_utils/ContentData.ts +27 -0
  111. package/front_end/models/trace/helpers/SamplesIntegrator.ts +21 -5
  112. package/front_end/models/trace_source_maps_resolver/SourceMapsResolver.ts +29 -14
  113. package/front_end/models/web_mcp/WebMCPModel.ts +24 -6
  114. package/front_end/models/workspace/IgnoreListManager.ts +6 -6
  115. package/front_end/models/workspace/UISourceCode.ts +3 -3
  116. package/front_end/models/workspace_diff/WorkspaceDiff.ts +23 -12
  117. package/front_end/panels/ai_assistance/AiAssistancePanel.ts +25 -22
  118. package/front_end/panels/ai_assistance/ExportConversation.ts +3 -4
  119. package/front_end/panels/ai_assistance/ai_assistance-meta.ts +3 -3
  120. package/front_end/panels/ai_assistance/components/ChatInput.ts +2 -2
  121. package/front_end/panels/ai_assistance/components/ChatMessage.ts +7 -0
  122. package/front_end/panels/ai_assistance/components/DisabledWidget.ts +2 -2
  123. package/front_end/panels/animation/AnimationTimeline.ts +17 -19
  124. package/front_end/panels/animation/AnimationUI.ts +5 -5
  125. package/front_end/panels/animation/animation-meta.ts +2 -2
  126. package/front_end/panels/application/ApplicationPanelSidebar.ts +13 -4
  127. package/front_end/panels/application/BackgroundServiceView.ts +2 -1
  128. package/front_end/panels/application/DeviceBoundSessionsView.ts +2 -6
  129. package/front_end/panels/application/IndexedDBViews.ts +245 -262
  130. package/front_end/panels/application/OpenedWindowDetailsView.ts +1 -1
  131. package/front_end/panels/application/ResourcesPanel.ts +9 -2
  132. package/front_end/panels/application/ServiceWorkersView.ts +252 -211
  133. package/front_end/panels/application/StorageView.ts +97 -33
  134. package/front_end/panels/application/WebMCPView.ts +15 -1
  135. package/front_end/panels/application/components/AdsView.ts +1 -1
  136. package/front_end/panels/application/indexedDBViews.css +38 -9
  137. package/front_end/panels/application/preloading/helper/PreloadingForward.ts +2 -1
  138. package/front_end/panels/application/resourcesSidebar.css +5 -0
  139. package/front_end/panels/application/storageView.css +26 -9
  140. package/front_end/panels/browser_debugger/XHRBreakpointsSidebarPane.ts +5 -1
  141. package/front_end/panels/browser_debugger/browser_debugger-meta.ts +8 -6
  142. package/front_end/panels/common/DOMLinkifier.ts +1 -1
  143. package/front_end/panels/common/ExtensionServer.ts +119 -14
  144. package/front_end/panels/console/ConsoleContextSelector.ts +4 -4
  145. package/front_end/panels/console/ConsolePinPane.ts +12 -12
  146. package/front_end/panels/console/ConsolePrompt.ts +6 -6
  147. package/front_end/panels/console/ConsoleSidebar.ts +7 -7
  148. package/front_end/panels/console/ConsoleView.ts +45 -44
  149. package/front_end/panels/console/ConsoleViewMessage.ts +40 -40
  150. package/front_end/panels/console/SymbolizedErrorWidget.ts +2 -1
  151. package/front_end/panels/console/console-meta.ts +34 -34
  152. package/front_end/panels/console_counters/WarningErrorCounter.ts +2 -2
  153. package/front_end/panels/coverage/CoverageListView.ts +28 -28
  154. package/front_end/panels/coverage/CoverageModel.ts +2 -1
  155. package/front_end/panels/coverage/CoverageView.ts +23 -23
  156. package/front_end/panels/coverage/coverage-meta.ts +5 -5
  157. package/front_end/panels/css_overview/CSSOverviewCompletedView.ts +36 -36
  158. package/front_end/panels/css_overview/CSSOverviewProcessingView.ts +1 -1
  159. package/front_end/panels/css_overview/CSSOverviewSidebarPanel.ts +2 -2
  160. package/front_end/panels/css_overview/CSSOverviewStartView.ts +6 -6
  161. package/front_end/panels/css_overview/CSSOverviewUnusedDeclarations.ts +6 -6
  162. package/front_end/panels/css_overview/css_overview-meta.ts +2 -2
  163. package/front_end/panels/developer_resources/DeveloperResourcesListView.ts +20 -21
  164. package/front_end/panels/developer_resources/DeveloperResourcesView.ts +6 -8
  165. package/front_end/panels/developer_resources/developer_resources-meta.ts +2 -2
  166. package/front_end/panels/elements/AccessibilityTreeUtils.ts +8 -102
  167. package/front_end/panels/elements/AccessibilityTreeView.ts +163 -70
  168. package/front_end/panels/elements/ElementsPanel.ts +17 -11
  169. package/front_end/panels/elements/ElementsTreeElement.ts +49 -2
  170. package/front_end/panels/elements/ElementsTreeOutline.ts +4 -4
  171. package/front_end/panels/elements/LayoutPane.ts +1 -1
  172. package/front_end/panels/elements/MetricsSidebarPane.ts +100 -34
  173. package/front_end/panels/elements/StylePropertiesSection.ts +2 -2
  174. package/front_end/panels/elements/StylePropertyTreeElement.ts +8 -2
  175. package/front_end/panels/elements/StylesSidebarPane.ts +1 -1
  176. package/front_end/panels/elements/components/AccessibilityTreeNode.ts +7 -18
  177. package/front_end/panels/elements/components/ElementsBreadcrumbs.ts +2 -2
  178. package/front_end/panels/elements/components/QueryContainer.ts +1 -1
  179. package/front_end/panels/issues/AffectedDirectivesView.ts +1 -1
  180. package/front_end/panels/issues/AffectedResourcesView.ts +2 -1
  181. package/front_end/panels/layer_viewer/LayerViewHost.ts +1 -1
  182. package/front_end/panels/media/EventDisplayTable.ts +2 -2
  183. package/front_end/panels/media/EventTimelineView.ts +4 -4
  184. package/front_end/panels/media/MainView.ts +4 -4
  185. package/front_end/panels/media/PlayerDetailView.ts +5 -5
  186. package/front_end/panels/media/PlayerListView.ts +1 -1
  187. package/front_end/panels/media/PlayerMessagesView.ts +12 -12
  188. package/front_end/panels/media/PlayerPropertiesView.ts +17 -17
  189. package/front_end/panels/network/NetworkDataGridNode.ts +124 -36
  190. package/front_end/panels/network/NetworkLogView.ts +11 -2
  191. package/front_end/panels/network/NetworkLogViewColumns.ts +18 -0
  192. package/front_end/panels/network/NetworkPanel.ts +2 -1
  193. package/front_end/panels/network/NetworkWaterfallColumn.ts +1 -3
  194. package/front_end/panels/network/RequestConditionsDrawer.ts +2 -2
  195. package/front_end/panels/network/RequestPayloadView.ts +53 -7
  196. package/front_end/panels/network/RequestPreviewView.ts +7 -1
  197. package/front_end/panels/network/components/ResponseHeaderSection.ts +1 -1
  198. package/front_end/panels/network/forward/UIFilter.ts +1 -0
  199. package/front_end/panels/network/networkPanel.css +1 -0
  200. package/front_end/panels/network/networkTimingTable.css +1 -1
  201. package/front_end/panels/network/requestPayloadView.css +10 -0
  202. package/front_end/panels/performance_monitor/PerformanceMonitor.ts +12 -12
  203. package/front_end/panels/performance_monitor/performance_monitor-meta.ts +7 -7
  204. package/front_end/panels/profiler/HeapDetachedElementsView.ts +2 -2
  205. package/front_end/panels/profiler/HeapProfileView.ts +563 -51
  206. package/front_end/panels/profiler/HeapSnapshotView.ts +15 -9
  207. package/front_end/panels/profiler/ProfilesPanel.ts +13 -7
  208. package/front_end/panels/profiler/WritableProfileHeader.ts +152 -0
  209. package/front_end/panels/profiler/profiler.ts +2 -2
  210. package/front_end/panels/protocol_monitor/JSONEditor.ts +10 -10
  211. package/front_end/panels/protocol_monitor/ProtocolMonitor.ts +28 -32
  212. package/front_end/panels/protocol_monitor/protocol_monitor-meta.ts +1 -1
  213. package/front_end/panels/recorder/RecorderController.ts +15 -15
  214. package/front_end/panels/recorder/RecorderEvents.ts +8 -0
  215. package/front_end/panels/recorder/components/CreateRecordingView.ts +11 -11
  216. package/front_end/panels/recorder/components/ExtensionView.ts +74 -83
  217. package/front_end/panels/recorder/components/RecordingListView.ts +3 -3
  218. package/front_end/panels/recorder/components/RecordingView.ts +13 -10
  219. package/front_end/panels/recorder/components/ReplaySection.ts +9 -9
  220. package/front_end/panels/recorder/components/StepEditor.ts +352 -321
  221. package/front_end/panels/recorder/components/StepView.ts +36 -37
  222. package/front_end/panels/recorder/components/recordingView.css +1 -1
  223. package/front_end/panels/recorder/models/RecorderSettings.ts +2 -2
  224. package/front_end/panels/recorder/recorder-meta.ts +7 -7
  225. package/front_end/panels/screencast/ScreencastApp.ts +1 -1
  226. package/front_end/panels/screencast/ScreencastView.ts +12 -12
  227. package/front_end/panels/search/SearchResultsPane.ts +4 -4
  228. package/front_end/panels/search/SearchView.ts +20 -20
  229. package/front_end/panels/security/SecurityModel.ts +7 -7
  230. package/front_end/panels/security/SecurityPanel.ts +99 -107
  231. package/front_end/panels/security/SecurityPanelSidebar.ts +7 -7
  232. package/front_end/panels/security/security-meta.ts +2 -2
  233. package/front_end/panels/sensors/LocationsSettingsTab.ts +19 -19
  234. package/front_end/panels/sensors/SensorsView.ts +27 -27
  235. package/front_end/panels/sensors/sensors-meta.ts +13 -167
  236. package/front_end/panels/settings/AISettingsTab.ts +98 -56
  237. package/front_end/panels/settings/EditFileSystemView.ts +2 -2
  238. package/front_end/panels/settings/FrameworkIgnoreListSettingsTab.ts +20 -20
  239. package/front_end/panels/settings/KeybindsSettingsTab.ts +20 -21
  240. package/front_end/panels/settings/SettingsScreen.ts +11 -11
  241. package/front_end/panels/settings/WorkspaceSettingsTab.ts +5 -5
  242. package/front_end/panels/settings/components/SyncSection.ts +12 -12
  243. package/front_end/panels/settings/emulation/DevicesSettingsTab.ts +13 -13
  244. package/front_end/panels/settings/emulation/components/UserAgentClientHintsForm.ts +31 -31
  245. package/front_end/panels/settings/emulation/emulation-meta.ts +1 -1
  246. package/front_end/panels/settings/settings-meta.ts +14 -14
  247. package/front_end/panels/sources/NavigatorView.ts +7 -6
  248. package/front_end/panels/sources/ScopeChainSidebarPane.ts +83 -37
  249. package/front_end/panels/sources/SourcesNavigator.ts +20 -18
  250. package/front_end/panels/sources/SourcesView.ts +10 -1
  251. package/front_end/panels/sources/scopeChainSidebarPane.css +12 -4
  252. package/front_end/panels/sources/sources-meta.ts +4 -4
  253. package/front_end/panels/timeline/CompatibilityTracksAppender.ts +5 -2
  254. package/front_end/panels/timeline/TimelineFlameChartDataProvider.ts +2 -1
  255. package/front_end/panels/timeline/TimelineFlameChartNetworkDataProvider.ts +2 -1
  256. package/front_end/panels/timeline/TimelineFlameChartView.ts +1 -1
  257. package/front_end/panels/timeline/TimelinePanel.ts +2 -1
  258. package/front_end/panels/timeline/TimelineUIUtils.ts +5 -2
  259. package/front_end/panels/timeline/components/NetworkRequestDetails.ts +4 -2
  260. package/front_end/panels/timeline/components/NetworkRequestTooltip.ts +4 -2
  261. package/front_end/panels/timeline/components/insights/ImageRef.ts +2 -1
  262. package/front_end/panels/utils/utils.ts +7 -3
  263. package/front_end/panels/web_audio/WebAudioView.ts +17 -18
  264. package/front_end/panels/web_audio/web_audio-meta.ts +3 -3
  265. package/front_end/panels/webauthn/WebauthnPane.ts +10 -10
  266. package/front_end/panels/whats_new/ReleaseNoteView.ts +1 -1
  267. package/front_end/panels/whats_new/whats_new-meta.ts +11 -11
  268. package/front_end/third_party/chromium/README.chromium +1 -1
  269. package/front_end/third_party/lit/lib/async-directive.d.ts +2 -1
  270. package/front_end/third_party/lit/lib/async-directive.js +1 -1
  271. package/front_end/third_party/lit/lib/async-directive.js.map +1 -1
  272. package/front_end/third_party/lit/lib/decorators.d.ts +2 -1
  273. package/front_end/third_party/lit/lib/decorators.js.map +1 -1
  274. package/front_end/third_party/lit/lib/directive.d.ts +2 -1
  275. package/front_end/third_party/lit/lib/directive.js.map +1 -1
  276. package/front_end/third_party/lit/lib/directives.d.ts +2 -1
  277. package/front_end/third_party/lit/lib/directives.js +8 -8
  278. package/front_end/third_party/lit/lib/directives.js.map +1 -1
  279. package/front_end/third_party/lit/lib/lit.d.ts +2 -1
  280. package/front_end/third_party/lit/lib/lit.js +1 -1
  281. package/front_end/third_party/lit/lib/lit.js.map +1 -1
  282. package/front_end/third_party/lit/lib/static-html.d.ts +2 -1
  283. package/front_end/third_party/lit/lib/static-html.js +1 -1
  284. package/front_end/third_party/lit/lib/static-html.js.map +1 -1
  285. package/front_end/third_party/lit/package.json +2 -2
  286. package/front_end/third_party/lit/rebuild.sh +1 -1
  287. package/front_end/third_party/lit/src/async-directive.ts +5 -0
  288. package/front_end/ui/components/dialogs/Dialog.ts +1 -1
  289. package/front_end/ui/components/dialogs/ShortcutDialog.ts +1 -1
  290. package/front_end/ui/components/dialogs/shortcutDialog.css +15 -12
  291. package/front_end/ui/components/diff_view/DiffView.ts +2 -2
  292. package/front_end/ui/components/issue_counter/IssueCounter.ts +3 -3
  293. package/front_end/ui/components/issue_counter/IssueLinkIcon.ts +5 -5
  294. package/front_end/ui/components/lists/List.ts +2 -2
  295. package/front_end/ui/components/panel_feedback/PreviewToggle.ts +1 -1
  296. package/front_end/ui/components/request_link_icon/RequestLinkIcon.ts +5 -5
  297. package/front_end/ui/components/settings/SettingCheckbox.ts +1 -1
  298. package/front_end/ui/components/snackbars/Snackbar.ts +1 -1
  299. package/front_end/ui/components/survey_link/SurveyLink.ts +3 -3
  300. package/front_end/ui/components/text_editor/config.ts +2 -2
  301. package/front_end/ui/components/tree_outline/TreeOutline.ts +34 -1
  302. package/front_end/ui/legacy/ReportView.ts +5 -0
  303. package/front_end/ui/legacy/Treeoutline.ts +18 -0
  304. package/front_end/ui/legacy/View.ts +1 -1
  305. package/front_end/ui/legacy/components/data_grid/DataGrid.ts +2 -0
  306. package/front_end/ui/legacy/components/data_grid/DataGridElement.ts +8 -3
  307. package/front_end/ui/legacy/components/data_grid/data_grid.ts +1 -0
  308. package/front_end/ui/legacy/components/object_ui/ObjectPopoverHelper.ts +1 -1
  309. package/front_end/ui/legacy/components/object_ui/ObjectPropertiesSection.ts +100 -36
  310. package/front_end/ui/legacy/components/source_frame/ResourceSourceFrame.ts +7 -1
  311. package/front_end/ui/legacy/components/source_frame/SourceFrame.ts +5 -0
  312. package/front_end/ui/legacy/components/utils/ImagePreview.ts +4 -2
  313. package/front_end/ui/legacy/inspectorCommon.css +5 -0
  314. package/front_end/ui/visual_logging/KnownContextValues.ts +4 -0
  315. package/mcp/mcp.ts +2 -0
  316. package/package.json +4 -4
  317. package/front_end/panels/profiler/ProfileView.ts +0 -610
@@ -476,13 +476,24 @@ export function cssMetadata(): CSSMetadata {
476
476
 
477
477
  /**
478
478
  * The pipe character '|' indicates where text selection should be set.
479
+ *
480
+ * Spec: https://drafts.csswg.org/css-images-4/#image-values
481
+ * <image> = <url> | <image()> | <image-set()> | <cross-fade()> | <element()> | <gradient>
482
+ * <gradient> = [
483
+ * <linear-gradient()> | <repeating-linear-gradient()> |
484
+ * <radial-gradient()> | <repeating-radial-gradient()> |
485
+ * <conic-gradient()> | <repeating-conic-gradient()> ]
479
486
  */
480
487
  const imageValuePresetMap = new Map([
481
- ['linear-gradient', 'linear-gradient(|45deg, black, transparent|)'],
482
- ['radial-gradient', 'radial-gradient(|black, transparent|)'],
483
- ['repeating-linear-gradient', 'repeating-linear-gradient(|45deg, black, transparent 100px|)'],
484
- ['repeating-radial-gradient', 'repeating-radial-gradient(|black, transparent 100px|)'],
485
- ['url', 'url(||)'],
488
+ ['linear-gradient()', 'linear-gradient(|45deg, black, transparent|)'],
489
+ ['radial-gradient()', 'radial-gradient(|black, transparent|)'],
490
+ ['conic-gradient()', 'conic-gradient(|from 45deg, red, orange, yellow, green, teal, blue, purple|)'],
491
+ ['repeating-linear-gradient()', 'repeating-linear-gradient(|45deg, black, transparent 100px|)'],
492
+ ['repeating-radial-gradient()', 'repeating-radial-gradient(|black, transparent 100px|)'],
493
+ ['repeating-conic-gradient()', 'repeating-conic-gradient(|black 0deg 25%, white 0deg 50%|)'], // Checkerboard
494
+ ['url()', 'url(||)'],
495
+ ['image-set()', 'image-set(|url("") 1x, url("") 2x|)'],
496
+ ['cross-fade()', 'cross-fade(|url("") 50%, url("") 50%|)'],
486
497
  ]);
487
498
 
488
499
  const filterValuePresetMap = new Map([
@@ -505,8 +516,16 @@ const cornerShapeValuePresetMap = new Map([
505
516
  ]);
506
517
 
507
518
  const valuePresets = new Map([
508
- ['filter', filterValuePresetMap], ['backdrop-filter', filterValuePresetMap], ['background', imageValuePresetMap],
509
- ['background-image', imageValuePresetMap], ['-webkit-mask-image', imageValuePresetMap],
519
+ ['filter', filterValuePresetMap],
520
+ ['backdrop-filter', filterValuePresetMap],
521
+ ['background', imageValuePresetMap],
522
+ ['background-image', imageValuePresetMap],
523
+ ['mask-image', imageValuePresetMap],
524
+ ['-webkit-mask-image', imageValuePresetMap],
525
+ ['list-style', imageValuePresetMap],
526
+ ['list-style-image', imageValuePresetMap],
527
+ ['border-image', imageValuePresetMap],
528
+ ['border-image-source', imageValuePresetMap],
510
529
  [
511
530
  'transform',
512
531
  new Map([
@@ -866,7 +885,44 @@ const extraPropertyValues = new Map<string, Set<string>>([
866
885
  ['-webkit-text-emphasis-position', textEmphasisPosition],
867
886
  ['alignment-baseline', new Set(['before-edge', 'after-edge', 'text-before-edge', 'text-after-edge', 'hanging'])],
868
887
  ['page-break-before', new Set(['left', 'right', 'always', 'avoid'])],
869
- ['border-image', new Set(['repeat', 'stretch', 'space', 'round'])],
888
+ [
889
+ 'border-image',
890
+ new Set([
891
+ 'none', // border-image-source
892
+ 'repeat',
893
+ 'stretch',
894
+ 'space',
895
+ 'round',
896
+ 'auto', // border-image-width
897
+ 'fill', // border-image-slice
898
+ 'linear-gradient()',
899
+ 'radial-gradient()',
900
+ 'conic-gradient()',
901
+ 'repeating-linear-gradient()',
902
+ 'repeating-radial-gradient()',
903
+ 'repeating-conic-gradient()',
904
+ 'image-set()',
905
+ 'cross-fade()',
906
+ 'url()',
907
+ ]),
908
+ ],
909
+ ['border-image-width', new Set(['auto'])],
910
+ ['border-image-slice', new Set(['fill'])],
911
+ [
912
+ 'border-image-source',
913
+ new Set([
914
+ 'none',
915
+ 'linear-gradient()',
916
+ 'radial-gradient()',
917
+ 'conic-gradient()',
918
+ 'repeating-linear-gradient()',
919
+ 'repeating-radial-gradient()',
920
+ 'repeating-conic-gradient()',
921
+ 'image-set()',
922
+ 'cross-fade()',
923
+ 'url()',
924
+ ]),
925
+ ],
870
926
  [
871
927
  'text-decoration',
872
928
  new Set(['blink', 'line-through', 'overline', 'underline', 'wavy', 'double', 'solid', 'dashed', 'dotted']),
@@ -1179,16 +1235,31 @@ const extraPropertyValues = new Map<string, Set<string>>([
1179
1235
  'border-box',
1180
1236
  'content-box',
1181
1237
  'padding-box',
1182
- 'linear-gradient',
1183
- 'radial-gradient',
1184
- 'repeating-linear-gradient',
1185
- 'repeating-radial-gradient',
1186
- 'url',
1238
+ 'text', // background-clip
1239
+ 'linear-gradient()',
1240
+ 'radial-gradient()',
1241
+ 'conic-gradient()',
1242
+ 'repeating-linear-gradient()',
1243
+ 'repeating-radial-gradient()',
1244
+ 'repeating-conic-gradient()',
1245
+ 'image-set()',
1246
+ 'cross-fade()',
1247
+ 'url()',
1187
1248
  ]),
1188
1249
  ],
1189
1250
  [
1190
1251
  'background-image',
1191
- new Set(['linear-gradient', 'radial-gradient', 'repeating-linear-gradient', 'repeating-radial-gradient', 'url']),
1252
+ new Set([
1253
+ 'linear-gradient()',
1254
+ 'radial-gradient()',
1255
+ 'conic-gradient()',
1256
+ 'repeating-linear-gradient()',
1257
+ 'repeating-radial-gradient()',
1258
+ 'repeating-conic-gradient()',
1259
+ 'image-set()',
1260
+ 'cross-fade()',
1261
+ 'url()',
1262
+ ]),
1192
1263
  ],
1193
1264
  ['background-position', new Set(['top', 'bottom', 'left', 'right', 'center'])],
1194
1265
  ['background-position-x', new Set(['left', 'right', 'center'])],
@@ -1440,9 +1511,33 @@ const extraPropertyValues = new Map<string, Set<string>>([
1440
1511
  'plus-lighter',
1441
1512
  ]),
1442
1513
  ],
1514
+ [
1515
+ 'mask-image',
1516
+ new Set([
1517
+ 'linear-gradient()',
1518
+ 'radial-gradient()',
1519
+ 'conic-gradient()',
1520
+ 'repeating-linear-gradient()',
1521
+ 'repeating-radial-gradient()',
1522
+ 'repeating-conic-gradient()',
1523
+ 'image-set()',
1524
+ 'cross-fade()',
1525
+ 'url()',
1526
+ ]),
1527
+ ],
1443
1528
  [
1444
1529
  '-webkit-mask-image',
1445
- new Set(['linear-gradient', 'radial-gradient', 'repeating-linear-gradient', 'repeating-radial-gradient', 'url']),
1530
+ new Set([
1531
+ 'linear-gradient()',
1532
+ 'radial-gradient()',
1533
+ 'conic-gradient()',
1534
+ 'repeating-linear-gradient()',
1535
+ 'repeating-radial-gradient()',
1536
+ 'repeating-conic-gradient()',
1537
+ 'image-set()',
1538
+ 'cross-fade()',
1539
+ 'url()',
1540
+ ]),
1446
1541
  ],
1447
1542
  ['-webkit-mask-origin', new Set(['border', 'border-box', 'content', 'content-box', 'padding', 'padding-box'])],
1448
1543
  ['-webkit-mask-position', new Set(['top', 'bottom', 'left', 'right', 'center'])],
@@ -1479,7 +1574,6 @@ const extraPropertyValues = new Map<string, Set<string>>([
1479
1574
  ['timeline-trigger-activation-range-end', new Set(['normal'])],
1480
1575
  ['timeline-trigger-active-range-start', new Set(['normal'])],
1481
1576
  ['timeline-trigger-active-range-end', new Set(['normal'])],
1482
-
1483
1577
  ['contain-intrinsic-width', new Set(['auto none', 'auto 100px'])],
1484
1578
  ['contain-intrinsic-height', new Set(['auto none', 'auto 100px'])],
1485
1579
  ['contain-intrinsic-size', new Set(['auto none', 'auto 100px'])],
@@ -7,7 +7,7 @@ import type * as Common from '../common/common.js';
7
7
  import * as i18n from '../i18n/i18n.js';
8
8
  import type * as Platform from '../platform/platform.js';
9
9
 
10
- import {PageResourceLoader, type PageResourceLoadInitiator} from './PageResourceLoader.js';
10
+ import type {PageResourceLoader, PageResourceLoadInitiator} from './PageResourceLoader.js';
11
11
 
12
12
  const UIStrings = {
13
13
  /**
@@ -28,10 +28,7 @@ export class CompilerSourceMappingContentProvider implements TextUtils.ContentPr
28
28
  readonly #pageResourceLoader: PageResourceLoader;
29
29
 
30
30
  constructor(sourceURL: Platform.DevToolsPath.UrlString, contentType: Common.ResourceType.ResourceType,
31
- initiator: PageResourceLoadInitiator,
32
- pageResourceLoader: PageResourceLoader = initiator.target ?
33
- initiator.target.targetManager().context.get(PageResourceLoader) :
34
- PageResourceLoader.instance()) {
31
+ initiator: PageResourceLoadInitiator, pageResourceLoader: PageResourceLoader) {
35
32
  this.#sourceURL = sourceURL;
36
33
  this.#contentType = contentType;
37
34
  this.#initiator = initiator;
@@ -35,7 +35,7 @@ import {
35
35
  } from './RuntimeModel.js';
36
36
  import {SDKModel} from './SDKModel.js';
37
37
  import {Capability, type Target, Type} from './Target.js';
38
- import {TargetManager} from './TargetManager.js';
38
+ import type {TargetManager} from './TargetManager.js';
39
39
 
40
40
  export {FrontendMessageType} from './ConsoleModelTypes.js';
41
41
 
@@ -357,7 +357,7 @@ export class ConsoleModel extends SDKModel<EventTypes> {
357
357
  }
358
358
 
359
359
  // messages[] are not ordered by timestamp.
360
- static allMessagesUnordered(targetManager: TargetManager = TargetManager.instance()): ConsoleMessage[] {
360
+ static allMessagesUnordered(targetManager: TargetManager): ConsoleMessage[] {
361
361
  const messages = [];
362
362
  for (const target of targetManager.targets()) {
363
363
  const targetMessages = target.model(ConsoleModel)?.messages() || [];
@@ -366,7 +366,7 @@ export class ConsoleModel extends SDKModel<EventTypes> {
366
366
  return messages;
367
367
  }
368
368
 
369
- static requestClearMessages(targetManager: TargetManager = TargetManager.instance()): void {
369
+ static requestClearMessages(targetManager: TargetManager): void {
370
370
  for (const logModel of targetManager.models(LogModel)) {
371
371
  logModel.requestClear();
372
372
  }
@@ -394,7 +394,7 @@ export class ConsoleModel extends SDKModel<EventTypes> {
394
394
  return this.#errors;
395
395
  }
396
396
 
397
- static allErrors(targetManager: TargetManager = TargetManager.instance()): number {
397
+ static allErrors(targetManager: TargetManager): number {
398
398
  let errors = 0;
399
399
  for (const target of targetManager.targets()) {
400
400
  errors += target.model(ConsoleModel)?.errors() || 0;
@@ -406,7 +406,7 @@ export class ConsoleModel extends SDKModel<EventTypes> {
406
406
  return this.#warnings;
407
407
  }
408
408
 
409
- static allWarnings(targetManager: TargetManager = TargetManager.instance()): number {
409
+ static allWarnings(targetManager: TargetManager): number {
410
410
  let warnings = 0;
411
411
  for (const target of targetManager.targets()) {
412
412
  warnings += target.model(ConsoleModel)?.warnings() || 0;
@@ -661,7 +661,9 @@ export class DOMDebuggerManager implements SDKModelObserver<DOMDebuggerModel> {
661
661
  this.createEventListenerBreakpoints(
662
662
  Category.XHR, ['readystatechange', 'load', 'loadstart', 'loadend', 'abort', 'error', 'progress', 'timeout'],
663
663
  ['xmlhttprequest', 'xmlhttprequestupload']);
664
+ }
664
665
 
666
+ initialize(): void {
665
667
  this.#targetManager.observeModels(DOMDebuggerModel, this);
666
668
  }
667
669
 
@@ -671,9 +673,11 @@ export class DOMDebuggerManager implements SDKModelObserver<DOMDebuggerModel> {
671
673
  } = {forceNew: null}): DOMDebuggerManager {
672
674
  const {forceNew, targetManager} = opts;
673
675
  if (!Root.DevToolsContext.globalInstance().has(DOMDebuggerManager) || forceNew) {
676
+ const manager = new DOMDebuggerManager(targetManager ?? TargetManager.instance());
677
+ manager.initialize();
674
678
  Root.DevToolsContext.globalInstance().set(
675
679
  DOMDebuggerManager,
676
- new DOMDebuggerManager(targetManager ?? TargetManager.instance()),
680
+ manager,
677
681
  );
678
682
  }
679
683
 
@@ -1127,27 +1127,33 @@ export class DOMNode extends Common.ObjectWrapper.ObjectWrapper<DOMNodeEventType
1127
1127
  return model;
1128
1128
  }
1129
1129
 
1130
- async setAsInspectedNode(): Promise<void> {
1131
- let node: DOMNode|null = this;
1132
- if (node?.pseudoType()) {
1133
- node = node.parentNode;
1130
+ canInspectNode(): boolean {
1131
+ if (this.ancestorUserAgentShadowRoot()) {
1132
+ return false;
1134
1133
  }
1135
- while (node) {
1136
- let ancestor = node.ancestorUserAgentShadowRoot();
1137
- if (!ancestor) {
1138
- break;
1139
- }
1140
- ancestor = node.ancestorShadowHost();
1141
- if (!ancestor) {
1142
- break;
1143
- }
1144
- // User #agent shadow root, keep climbing up.
1145
- node = ancestor;
1134
+
1135
+ if (this.#pseudoType) {
1136
+ return [
1137
+ Protocol.DOM.PseudoType.Before,
1138
+ Protocol.DOM.PseudoType.After,
1139
+ Protocol.DOM.PseudoType.Marker,
1140
+ Protocol.DOM.PseudoType.ScrollMarker,
1141
+ Protocol.DOM.PseudoType.Backdrop,
1142
+ Protocol.DOM.PseudoType.ViewTransition,
1143
+ Protocol.DOM.PseudoType.ViewTransitionGroup,
1144
+ Protocol.DOM.PseudoType.ViewTransitionImagePair,
1145
+ Protocol.DOM.PseudoType.ViewTransitionOld,
1146
+ Protocol.DOM.PseudoType.ViewTransitionNew,
1147
+ ].includes(this.#pseudoType);
1146
1148
  }
1147
- if (!node) {
1148
- throw new Error('In DOMNode.setAsInspectedNode: node is expected to not be null.');
1149
+ return true;
1150
+ }
1151
+
1152
+ async setAsInspectedNode(): Promise<void> {
1153
+ if (!this.canInspectNode()) {
1154
+ return;
1149
1155
  }
1150
- await this.#agent.invoke_setInspectedNode({nodeId: node.id});
1156
+ await this.#agent.invoke_setInspectedNode({nodeId: this.id});
1151
1157
  }
1152
1158
 
1153
1159
  enclosingElementOrSelf(): DOMNode|null {
@@ -2365,6 +2371,10 @@ export class DOMNodeSnapshot extends DOMNode {
2365
2371
  _callback?: ((arg0: string|null, arg1: DOMNode|null) => void)|undefined): void {
2366
2372
  }
2367
2373
 
2374
+ override canInspectNode(): boolean {
2375
+ return false;
2376
+ }
2377
+
2368
2378
  override setAsInspectedNode(): Promise<void> {
2369
2379
  return Promise.resolve();
2370
2380
  }
@@ -2410,6 +2420,10 @@ export class DOMDocumentSnapshot extends DOMDocument {
2410
2420
  _callback?: ((arg0: string|null, arg1: DOMNode|null) => void)|undefined): void {
2411
2421
  }
2412
2422
 
2423
+ override canInspectNode(): boolean {
2424
+ return false;
2425
+ }
2426
+
2413
2427
  override setAsInspectedNode(): Promise<void> {
2414
2428
  return Promise.resolve();
2415
2429
  }
@@ -323,6 +323,45 @@ export class NetworkManager extends SDKModel<EventTypes> {
323
323
  }
324
324
  }
325
325
 
326
+ /**
327
+ * Returns the request post data as a ContentData suitable for binary
328
+ * viewers (hex, base64, utf-8) in the Payload tab. When the backend
329
+ * provides base64-encoded (possibly compressed) data, the body is
330
+ * decompressed first so viewers show the actual payload bytes rather
331
+ * than gzip/deflate framing.
332
+ */
333
+ static async requestPostDataContentData(request: NetworkRequest): Promise<TextUtils.ContentData.ContentDataOrError> {
334
+ const manager = NetworkManager.forRequest(request);
335
+ if (!manager) {
336
+ return {error: 'No network manager for request'};
337
+ }
338
+ const requestId = request.backendRequestId();
339
+ if (!requestId) {
340
+ return {error: 'No backend request id for request'};
341
+ }
342
+ try {
343
+ const response = await manager.#networkAgent.invoke_getRequestPostData({requestId});
344
+ const error = response.getError();
345
+ if (error) {
346
+ return {error};
347
+ }
348
+ const {postData, base64Encoded} = response;
349
+ if (!postData) {
350
+ return {error: 'No post data'};
351
+ }
352
+ const requestContentType = request.requestContentType() ?? 'application/octet-stream';
353
+ const {charset} = Platform.MimeType.parseContentType(requestContentType);
354
+
355
+ if (base64Encoded && postData) {
356
+ return await TextUtils.ContentData.ContentData.fromCompressedBase64(
357
+ postData, requestContentType, charset ?? undefined, request.requestContentEncoding());
358
+ }
359
+ return new TextUtils.ContentData.ContentData(postData, false, requestContentType, charset ?? undefined);
360
+ } catch (e) {
361
+ return {error: e.message};
362
+ }
363
+ }
364
+
326
365
  /**
327
366
  * Attempts to decompress a compressed request body.
328
367
  * Returns the decompressed string, or null if decompression is not applicable.
@@ -658,6 +697,7 @@ export class NetworkDispatcher implements ProtocolProxyApi.NetworkDispatcher {
658
697
  networkRequest.setReferrerPolicy(request.referrerPolicy);
659
698
  networkRequest.setIsSameSite(request.isSameSite || false);
660
699
  networkRequest.setIsAdRelated(request.isAdRelated || false);
700
+ networkRequest.setIsLinkPreload(request.isLinkPreload || false);
661
701
  }
662
702
 
663
703
  private updateNetworkRequestWithResponse(networkRequest: NetworkRequest, response: Protocol.Network.Response): void {
@@ -847,7 +887,7 @@ export class NetworkDispatcher implements ProtocolProxyApi.NetworkDispatcher {
847
887
  } else {
848
888
  networkRequest = NetworkRequest.create(
849
889
  requestId, request.url as Platform.DevToolsPath.UrlString, documentURL as Platform.DevToolsPath.UrlString,
850
- frameId ?? null, loaderId, initiator, hasUserGesture);
890
+ frameId ?? null, loaderId, initiator, hasUserGesture, this.#manager.target().targetManager().getConsole());
851
891
  if (renderBlockingBehavior) {
852
892
  networkRequest.setRenderBlockingBehavior(renderBlockingBehavior);
853
893
  }
@@ -969,7 +1009,8 @@ export class NetworkDispatcher implements ProtocolProxyApi.NetworkDispatcher {
969
1009
 
970
1010
  webSocketCreated({requestId, url: requestURL, initiator}: Protocol.Network.WebSocketCreatedEvent): void {
971
1011
  const networkRequest =
972
- NetworkRequest.createForSocket(requestId, requestURL as Platform.DevToolsPath.UrlString, initiator);
1012
+ NetworkRequest.createForSocket(requestId, requestURL as Platform.DevToolsPath.UrlString, initiator,
1013
+ this.#manager.target().targetManager().getConsole());
973
1014
  requestToManagerMap.set(networkRequest, this.#manager);
974
1015
  networkRequest.setResourceType(Common.ResourceType.resourceTypes.WebSocket);
975
1016
  this.startNetworkRequest(networkRequest, null);
@@ -1174,7 +1215,7 @@ export class NetworkDispatcher implements ProtocolProxyApi.NetworkDispatcher {
1174
1215
  const newNetworkRequest = NetworkRequest.create(
1175
1216
  requestId, redirectURL, originalNetworkRequest.documentURL, originalNetworkRequest.frameId,
1176
1217
  originalNetworkRequest.loaderId, originalNetworkRequest.initiator(),
1177
- originalNetworkRequest.hasUserGesture() ?? undefined);
1218
+ originalNetworkRequest.hasUserGesture() ?? undefined, this.#manager.target().targetManager().getConsole());
1178
1219
  requestToManagerMap.set(newNetworkRequest, this.#manager);
1179
1220
  newNetworkRequest.setRedirectSource(originalNetworkRequest);
1180
1221
  originalNetworkRequest.setRedirectDestination(newNetworkRequest);
@@ -1296,7 +1337,8 @@ export class NetworkDispatcher implements ProtocolProxyApi.NetworkDispatcher {
1296
1337
  webTransportCreated({transportId, url: requestURL, timestamp: time, initiator}:
1297
1338
  Protocol.Network.WebTransportCreatedEvent): void {
1298
1339
  const networkRequest =
1299
- NetworkRequest.createForSocket(transportId, requestURL as Platform.DevToolsPath.UrlString, initiator);
1340
+ NetworkRequest.createForSocket(transportId, requestURL as Platform.DevToolsPath.UrlString, initiator,
1341
+ this.#manager.target().targetManager().getConsole());
1300
1342
  networkRequest.hasNetworkData = true;
1301
1343
  requestToManagerMap.set(networkRequest, this.#manager);
1302
1344
  networkRequest.setResourceType(Common.ResourceType.resourceTypes.WebTransport);
@@ -1333,8 +1375,9 @@ export class NetworkDispatcher implements ProtocolProxyApi.NetworkDispatcher {
1333
1375
 
1334
1376
  directTCPSocketCreated(event: Protocol.Network.DirectTCPSocketCreatedEvent): void {
1335
1377
  const requestURL = this.concatHostPort(event.remoteAddr, event.remotePort);
1336
- const networkRequest = NetworkRequest.createForSocket(
1337
- event.identifier, requestURL as Platform.DevToolsPath.UrlString, event.initiator);
1378
+ const networkRequest =
1379
+ NetworkRequest.createForSocket(event.identifier, requestURL as Platform.DevToolsPath.UrlString, event.initiator,
1380
+ this.#manager.target().targetManager().getConsole());
1338
1381
  networkRequest.hasNetworkData = true;
1339
1382
  networkRequest.setRemoteAddress(event.remoteAddr, event.remotePort);
1340
1383
  networkRequest.protocol = i18n.i18n.lockedString('tcp');
@@ -1448,8 +1491,9 @@ export class NetworkDispatcher implements ProtocolProxyApi.NetworkDispatcher {
1448
1491
  // is not specified.
1449
1492
  return;
1450
1493
  }
1451
- const networkRequest = NetworkRequest.createForSocket(
1452
- event.identifier, requestURL as Platform.DevToolsPath.UrlString, event.initiator);
1494
+ const networkRequest =
1495
+ NetworkRequest.createForSocket(event.identifier, requestURL as Platform.DevToolsPath.UrlString, event.initiator,
1496
+ this.#manager.target().targetManager().getConsole());
1453
1497
  networkRequest.hasNetworkData = true;
1454
1498
  if (event.options.remoteAddr && event.options.remotePort) {
1455
1499
  networkRequest.setRemoteAddress(event.options.remoteAddr, event.options.remotePort);
@@ -1633,9 +1677,9 @@ export class NetworkDispatcher implements ProtocolProxyApi.NetworkDispatcher {
1633
1677
  protected createNetworkRequest(
1634
1678
  requestId: Protocol.Network.RequestId, frameId: Protocol.Page.FrameId, loaderId: Protocol.Network.LoaderId,
1635
1679
  url: string, documentURL: string, initiator: Protocol.Network.Initiator|null): NetworkRequest {
1636
- const request = NetworkRequest.create(
1637
- requestId, url as Platform.DevToolsPath.UrlString, documentURL as Platform.DevToolsPath.UrlString, frameId,
1638
- loaderId, initiator);
1680
+ const request = NetworkRequest.create(requestId, url as Platform.DevToolsPath.UrlString,
1681
+ documentURL as Platform.DevToolsPath.UrlString, frameId, loaderId, initiator,
1682
+ undefined, this.#manager.target().targetManager().getConsole());
1639
1683
  requestToManagerMap.set(request, this.#manager);
1640
1684
  return request;
1641
1685
  }
@@ -1716,9 +1760,7 @@ export class RequestCondition extends Common.ObjectWrapper.ObjectWrapper<Request
1716
1760
  #conditions: ThrottlingConditions;
1717
1761
  #ruleIds = new Set<string>();
1718
1762
 
1719
- static createFromSetting(
1720
- setting: RequestConditionsSetting,
1721
- settings: Common.Settings.Settings = Common.Settings.Settings.instance()): RequestCondition {
1763
+ static createFromSetting(setting: RequestConditionsSetting, settings: Common.Settings.Settings): RequestCondition {
1722
1764
  if ('urlPattern' in setting) {
1723
1765
  const pattern = RequestURLPattern.create(setting.urlPattern) ?? {
1724
1766
  wildcardURL: setting.urlPattern,
@@ -1966,6 +2008,7 @@ export class RequestConditions extends Common.ObjectWrapper.ObjectWrapper<Reques
1966
2008
  promises.push(agent
1967
2009
  .invoke_emulateNetworkConditionsByRule({
1968
2010
  offline,
2011
+ emulateOfflineServiceWorker: offline,
1969
2012
  matchedNetworkConditions: matchedNetworkConditions.map(
1970
2013
  ({urlPattern, conditions}) => ({
1971
2014
  urlPattern: urlPattern ?? '',
@@ -1976,6 +2019,7 @@ export class RequestConditions extends Common.ObjectWrapper.ObjectWrapper<Reques
1976
2019
  packetQueueLength: conditions.packetQueueLength,
1977
2020
  packetReordering: conditions.packetReordering,
1978
2021
  connectionType: NetworkManager.connectionType(conditions),
2022
+ offline,
1979
2023
  }))
1980
2024
  })
1981
2025
  .then(response => {
@@ -296,7 +296,9 @@ export class NetworkRequest extends Common.ObjectWrapper.ObjectWrapper<EventType
296
296
  directSocketInfo?: DirectSocketInfo;
297
297
  readonly #directSocketChunks: DirectSocketChunk[] = [];
298
298
  #isAdRelated: boolean;
299
+ #isLinkPreload: boolean;
299
300
  #appliedNetworkConditionsId?: string;
301
+ readonly #console: Common.Console.Console;
300
302
 
301
303
  constructor(
302
304
  requestId: string,
@@ -307,6 +309,7 @@ export class NetworkRequest extends Common.ObjectWrapper.ObjectWrapper<EventType
307
309
  loaderId: Protocol.Network.LoaderId|null,
308
310
  initiator: Protocol.Network.Initiator|null,
309
311
  hasUserGesture?: boolean,
312
+ console: Common.Console.Console = Common.Console.Console.instance(),
310
313
  ) {
311
314
  super();
312
315
 
@@ -319,6 +322,8 @@ export class NetworkRequest extends Common.ObjectWrapper.ObjectWrapper<EventType
319
322
  this.#initiator = initiator;
320
323
  this.#hasUserGesture = hasUserGesture;
321
324
  this.#isAdRelated = false;
325
+ this.#isLinkPreload = false;
326
+ this.#console = console;
322
327
  }
323
328
 
324
329
  static create(
@@ -329,6 +334,7 @@ export class NetworkRequest extends Common.ObjectWrapper.ObjectWrapper<EventType
329
334
  loaderId: Protocol.Network.LoaderId|null,
330
335
  initiator: Protocol.Network.Initiator|null,
331
336
  hasUserGesture?: boolean,
337
+ console?: Common.Console.Console,
332
338
  ): NetworkRequest {
333
339
  return new NetworkRequest(
334
340
  backendRequestId,
@@ -339,6 +345,7 @@ export class NetworkRequest extends Common.ObjectWrapper.ObjectWrapper<EventType
339
345
  loaderId,
340
346
  initiator,
341
347
  hasUserGesture,
348
+ console,
342
349
  );
343
350
  }
344
351
 
@@ -346,6 +353,7 @@ export class NetworkRequest extends Common.ObjectWrapper.ObjectWrapper<EventType
346
353
  backendRequestId: Protocol.Network.RequestId,
347
354
  requestURL: Platform.DevToolsPath.UrlString,
348
355
  initiator?: Protocol.Network.Initiator,
356
+ console?: Common.Console.Console,
349
357
  ): NetworkRequest {
350
358
  return new NetworkRequest(
351
359
  backendRequestId,
@@ -355,6 +363,8 @@ export class NetworkRequest extends Common.ObjectWrapper.ObjectWrapper<EventType
355
363
  null,
356
364
  null,
357
365
  initiator || null,
366
+ undefined,
367
+ console,
358
368
  );
359
369
  }
360
370
 
@@ -363,6 +373,7 @@ export class NetworkRequest extends Common.ObjectWrapper.ObjectWrapper<EventType
363
373
  url: Platform.DevToolsPath.UrlString,
364
374
  documentURL: Platform.DevToolsPath.UrlString,
365
375
  initiator: Protocol.Network.Initiator|null,
376
+ console?: Common.Console.Console,
366
377
  ): NetworkRequest {
367
378
  return new NetworkRequest(
368
379
  requestId,
@@ -372,6 +383,8 @@ export class NetworkRequest extends Common.ObjectWrapper.ObjectWrapper<EventType
372
383
  null,
373
384
  null,
374
385
  initiator,
386
+ undefined,
387
+ console,
375
388
  );
376
389
  }
377
390
 
@@ -909,6 +922,11 @@ export class NetworkRequest extends Common.ObjectWrapper.ObjectWrapper<EventType
909
922
  this.#initiator.type === Protocol.Network.InitiatorType.Preflight);
910
923
  }
911
924
 
925
+ isPreloadRequest(): boolean {
926
+ return (this.#initiator !== null && this.#initiator !== undefined &&
927
+ this.#initiator.type === Protocol.Network.InitiatorType.Preload);
928
+ }
929
+
912
930
  redirectDestination(): NetworkRequest|null {
913
931
  return this.#redirectDestination;
914
932
  }
@@ -960,6 +978,15 @@ export class NetworkRequest extends Common.ObjectWrapper.ObjectWrapper<EventType
960
978
  this.#formParametersPromise = null;
961
979
  }
962
980
 
981
+ /**
982
+ * Returns the raw request body as ContentData, preserving base64 encoding
983
+ * for binary payloads. This enables binary viewers (hex, base64, utf-8)
984
+ * in the Payload tab.
985
+ */
986
+ requestFormDataContentData(): Promise<TextUtils.ContentData.ContentDataOrError> {
987
+ return NetworkManager.requestPostDataContentData(this);
988
+ }
989
+
963
990
  private filteredProtocolName(): string {
964
991
  const protocol = this.protocol.toLowerCase();
965
992
  if (protocol === 'h2') {
@@ -1201,7 +1228,8 @@ export class NetworkRequest extends Common.ObjectWrapper.ObjectWrapper<EventType
1201
1228
  get serverTimings(): ServerTiming[]|null {
1202
1229
  if (typeof this.#serverTimings === 'undefined') {
1203
1230
  this.#serverTimings = ServerTiming.parseHeaders(
1204
- this.responseHeaders,
1231
+ this.responseHeaders.map(x => ({name: x.name, value: x.value})),
1232
+ this.#console,
1205
1233
  );
1206
1234
  }
1207
1235
  return this.#serverTimings;
@@ -1837,6 +1865,14 @@ export class NetworkRequest extends Common.ObjectWrapper.ObjectWrapper<EventType
1837
1865
  return this.#isAdRelated;
1838
1866
  }
1839
1867
 
1868
+ setIsLinkPreload(isLinkPreload: boolean): void {
1869
+ this.#isLinkPreload = isLinkPreload;
1870
+ }
1871
+
1872
+ isLinkPreload(): boolean {
1873
+ return this.#isLinkPreload;
1874
+ }
1875
+
1840
1876
  getAssociatedData(key: string): object|null {
1841
1877
  return this.#associatedData.get(key) || null;
1842
1878
  }