chrome-devtools-frontend 1.0.1550444 → 1.0.1553956

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 (455) hide show
  1. package/docs/styleguide/ux/components.md +34 -8
  2. package/eslint.config.mjs +7 -0
  3. package/front_end/Images/generate-css-vars.js +8 -4
  4. package/front_end/core/common/Settings.ts +20 -8
  5. package/front_end/core/host/UserMetrics.ts +3 -1
  6. package/front_end/core/i18n/collect-ui-strings.js +19 -10
  7. package/front_end/core/i18n/generate-locales-js.js +4 -4
  8. package/front_end/core/protocol_client/CDPConnection.ts +1 -0
  9. package/front_end/core/protocol_client/InspectorBackend.ts +5 -1
  10. package/front_end/core/root/Runtime.ts +0 -12
  11. package/front_end/core/sdk/DOMModel.ts +38 -3
  12. package/front_end/core/sdk/DebuggerModel.ts +9 -4
  13. package/front_end/core/sdk/IsolateManager.ts +7 -0
  14. package/front_end/core/sdk/PageResourceLoader.ts +3 -3
  15. package/front_end/core/sdk/RehydratingConnection.ts +5 -2
  16. package/front_end/entrypoints/main/MainImpl.ts +28 -10
  17. package/front_end/generated/SupportedCSSProperties.js +14 -0
  18. package/front_end/models/ai_assistance/AiConversation.ts +94 -4
  19. package/front_end/models/ai_assistance/agents/AiAgent.ts +30 -15
  20. package/front_end/models/ai_assistance/agents/PerformanceAgent.ts +179 -41
  21. package/front_end/models/ai_assistance/agents/StylingAgent.snapshot.txt +5 -0
  22. package/front_end/models/ai_assistance/agents/StylingAgent.ts +62 -0
  23. package/front_end/models/ai_assistance/data_formatters/NetworkRequestFormatter.ts +2 -1
  24. package/front_end/models/ai_assistance/data_formatters/PerformanceInsightFormatter.ts +1 -7
  25. package/front_end/models/ai_assistance/data_formatters/PerformanceTraceFormatter.snapshot.txt +124 -12
  26. package/front_end/models/ai_assistance/data_formatters/PerformanceTraceFormatter.ts +125 -30
  27. package/front_end/models/ai_assistance/performance/AICallTree.ts +42 -0
  28. package/front_end/models/ai_code_generation/AiCodeGeneration.ts +12 -0
  29. package/front_end/models/issues_manager/Issue.ts +1 -0
  30. package/front_end/models/issues_manager/IssueAggregator.ts +9 -0
  31. package/front_end/models/issues_manager/IssuesManager.ts +5 -0
  32. package/front_end/models/issues_manager/PermissionElementIssue.ts +262 -0
  33. package/front_end/models/issues_manager/descriptions/permissionElementActivationDisabled.md +7 -0
  34. package/front_end/models/issues_manager/descriptions/permissionElementActivationDisabledWithOccluder.md +9 -0
  35. package/front_end/models/issues_manager/descriptions/permissionElementActivationDisabledWithOccluderParent.md +9 -0
  36. package/front_end/models/issues_manager/descriptions/permissionElementCspFrameAncestorsMissing.md +5 -0
  37. package/front_end/models/issues_manager/descriptions/permissionElementFencedFrameDisallowed.md +5 -0
  38. package/front_end/models/issues_manager/descriptions/permissionElementFontSizeTooLarge.md +5 -0
  39. package/front_end/models/issues_manager/descriptions/permissionElementFontSizeTooSmall.md +5 -0
  40. package/front_end/models/issues_manager/descriptions/permissionElementGeolocationDeprecated.md +5 -0
  41. package/front_end/models/issues_manager/descriptions/permissionElementInsetBoxShadowUnsupported.md +5 -0
  42. package/front_end/models/issues_manager/descriptions/permissionElementInvalidDisplayStyle.md +5 -0
  43. package/front_end/models/issues_manager/descriptions/permissionElementInvalidSizeValue.md +5 -0
  44. package/front_end/models/issues_manager/descriptions/permissionElementInvalidType.md +5 -0
  45. package/front_end/models/issues_manager/descriptions/permissionElementInvalidTypeActivation.md +5 -0
  46. package/front_end/models/issues_manager/descriptions/permissionElementLowContrast.md +5 -0
  47. package/front_end/models/issues_manager/descriptions/permissionElementNonOpaqueColor.md +5 -0
  48. package/front_end/models/issues_manager/descriptions/permissionElementPaddingBottomUnsupported.md +6 -0
  49. package/front_end/models/issues_manager/descriptions/permissionElementPaddingRightUnsupported.md +6 -0
  50. package/front_end/models/issues_manager/descriptions/permissionElementPermissionsPolicyBlocked.md +5 -0
  51. package/front_end/models/issues_manager/descriptions/permissionElementRegistrationFailed.md +5 -0
  52. package/front_end/models/issues_manager/descriptions/permissionElementRequestInProgress.md +5 -0
  53. package/front_end/models/issues_manager/descriptions/permissionElementSecurityChecksFailed.md +5 -0
  54. package/front_end/models/issues_manager/descriptions/permissionElementTypeNotSupported.md +5 -0
  55. package/front_end/models/issues_manager/descriptions/permissionElementUntrustedEvent.md +7 -0
  56. package/front_end/models/issues_manager/issues_manager.ts +2 -0
  57. package/front_end/models/javascript_metadata/NativeFunctions.js +8 -0
  58. package/front_end/models/stack_trace/StackTraceModel.ts +37 -18
  59. package/front_end/models/trace/Processor.ts +14 -15
  60. package/front_end/models/trace/insights/Common.ts +2 -8
  61. package/front_end/models/trace/insights/types.ts +12 -2
  62. package/front_end/models/trace/types/TraceEvents.ts +4 -1
  63. package/front_end/panels/ai_assistance/AiAssistancePanel.ts +28 -6
  64. package/front_end/panels/ai_assistance/ai_assistance-meta.ts +9 -23
  65. package/front_end/panels/ai_assistance/ai_assistance.ts +1 -0
  66. package/front_end/panels/ai_assistance/components/ChatView.ts +78 -2
  67. package/front_end/panels/ai_assistance/components/CollapsibleAssistanceContentWidget.ts +71 -0
  68. package/front_end/panels/ai_assistance/components/PerformanceAgentFlameChart.ts +126 -0
  69. package/front_end/panels/ai_assistance/components/PerformanceAgentMarkdownRenderer.ts +131 -2
  70. package/front_end/panels/ai_assistance/components/chatView.css +28 -0
  71. package/front_end/panels/ai_assistance/components/collapsibleAssistanceContentWidget.css +33 -0
  72. package/front_end/panels/application/AppManifestView.ts +1007 -521
  73. package/front_end/panels/application/ApplicationPanelSidebar.ts +1 -17
  74. package/front_end/panels/application/ExtensionStorageItemsView.ts +3 -5
  75. package/front_end/panels/application/KeyValueStorageItemsView.ts +3 -2
  76. package/front_end/panels/application/components/BackForwardCacheView.ts +2 -2
  77. package/front_end/panels/application/preloading/PreloadingView.ts +46 -45
  78. package/front_end/panels/application/preloading/components/MismatchedPreloadingGrid.ts +80 -75
  79. package/front_end/panels/application/preloading/components/PreloadingDisabledInfobar.ts +169 -133
  80. package/front_end/panels/application/preloading/components/RuleSetDetailsView.ts +74 -93
  81. package/front_end/panels/application/preloading/components/RuleSetGrid.ts +142 -117
  82. package/front_end/panels/application/preloading/components/UsedPreloadingView.ts +51 -11
  83. package/front_end/panels/application/preloading/components/components.ts +0 -2
  84. package/front_end/panels/common/Annotation.ts +184 -0
  85. package/front_end/panels/common/AnnotationManager.ts +148 -11
  86. package/front_end/panels/common/ExtensionView.ts +47 -0
  87. package/front_end/panels/common/PersistenceUtils.ts +22 -25
  88. package/front_end/panels/common/annotation.css +40 -0
  89. package/front_end/panels/common/common.ts +1 -0
  90. package/front_end/panels/console/ConsoleInsightTeaser.ts +187 -5
  91. package/front_end/panels/console/ConsolePinPane.ts +437 -217
  92. package/front_end/panels/console/ConsolePrompt.ts +32 -223
  93. package/front_end/panels/console/ConsoleView.ts +67 -66
  94. package/front_end/panels/console/ConsoleViewMessage.ts +8 -3
  95. package/front_end/panels/console/consoleInsightTeaser.css +23 -0
  96. package/front_end/panels/console/consoleView.css +1 -1
  97. package/front_end/panels/elements/AdoptedStyleSheetTreeElement.ts +89 -0
  98. package/front_end/panels/elements/ColorSwatchPopoverIcon.ts +2 -2
  99. package/front_end/panels/elements/ComputedStyleWidget.ts +16 -5
  100. package/front_end/panels/elements/ElementsPanel.ts +38 -12
  101. package/front_end/panels/elements/ElementsSidebarPane.ts +1 -3
  102. package/front_end/panels/elements/ElementsTreeElement.ts +313 -353
  103. package/front_end/panels/elements/ElementsTreeOutline.ts +39 -13
  104. package/front_end/panels/elements/StylePropertyTreeElement.ts +15 -14
  105. package/front_end/panels/elements/StylesSidebarPane.ts +1 -1
  106. package/front_end/panels/emulation/MediaQueryInspector.ts +171 -125
  107. package/front_end/panels/explain/components/ConsoleInsight.ts +175 -150
  108. package/front_end/panels/explain/components/consoleInsight.css +348 -347
  109. package/front_end/panels/issues/AffectedPermissionElementsView.ts +46 -0
  110. package/front_end/panels/issues/IssueView.ts +2 -0
  111. package/front_end/panels/issues/IssuesPane.ts +6 -0
  112. package/front_end/panels/layer_viewer/LayerDetailsView.ts +165 -149
  113. package/front_end/panels/layer_viewer/Layers3DView.ts +131 -78
  114. package/front_end/panels/lighthouse/LighthouseStatusView.ts +149 -100
  115. package/front_end/panels/linear_memory_inspector/components/LinearMemoryHighlightChipList.ts +90 -64
  116. package/front_end/panels/linear_memory_inspector/components/LinearMemoryInspector.ts +25 -34
  117. package/front_end/panels/linear_memory_inspector/components/LinearMemoryValueInterpreter.ts +60 -44
  118. package/front_end/panels/linear_memory_inspector/components/ValueInterpreterDisplay.ts +170 -151
  119. package/front_end/panels/linear_memory_inspector/components/ValueInterpreterSettings.ts +50 -51
  120. package/front_end/panels/linear_memory_inspector/components/valueInterpreterDisplay.css +0 -13
  121. package/front_end/panels/linear_memory_inspector/components/valueInterpreterSettings.css +20 -18
  122. package/front_end/panels/mobile_throttling/CalibrationController.ts +3 -1
  123. package/front_end/panels/network/NetworkDataGridNode.ts +14 -6
  124. package/front_end/panels/network/NetworkItemView.ts +42 -3
  125. package/front_end/panels/network/NetworkLogView.ts +10 -11
  126. package/front_end/panels/network/NetworkPanel.ts +63 -1
  127. package/front_end/panels/network/RequestInitiatorView.ts +146 -113
  128. package/front_end/panels/network/components/RequestHeaderSection.css +51 -50
  129. package/front_end/panels/network/components/RequestHeaderSection.ts +81 -71
  130. package/front_end/panels/network/components/RequestHeadersView.css +1 -1
  131. package/front_end/panels/network/components/RequestHeadersView.ts +26 -11
  132. package/front_end/panels/network/components/RequestTrustTokensView.css +24 -14
  133. package/front_end/panels/network/components/RequestTrustTokensView.ts +144 -140
  134. package/front_end/panels/profiler/IsolateSelector.ts +2 -1
  135. package/front_end/panels/protocol_monitor/ProtocolMonitor.ts +49 -33
  136. package/front_end/panels/recorder/RecorderController.ts +2 -3
  137. package/front_end/panels/recorder/components/ControlButton.ts +68 -34
  138. package/front_end/panels/recorder/components/CreateRecordingView.ts +9 -6
  139. package/front_end/panels/recorder/components/RecordingView.ts +81 -88
  140. package/front_end/panels/recorder/components/ReplaySection.ts +226 -145
  141. package/front_end/panels/recorder/{controllers → components}/SelectorPicker.ts +129 -52
  142. package/front_end/panels/recorder/components/StepEditor.ts +21 -67
  143. package/front_end/panels/recorder/components/StepView.ts +222 -180
  144. package/front_end/panels/recorder/components/TimelineSection.ts +69 -48
  145. package/front_end/panels/recorder/components/components.ts +2 -2
  146. package/front_end/panels/recorder/components/selectorPicker.css +14 -0
  147. package/front_end/panels/recorder/components/stepEditor.css +0 -5
  148. package/front_end/panels/recorder/components/stepView.css +196 -198
  149. package/front_end/panels/recorder/extensions/ExtensionManager.ts +4 -48
  150. package/front_end/panels/recorder/models/ScreenshotUtils.ts +17 -11
  151. package/front_end/panels/security/CookieControlsView.ts +9 -16
  152. package/front_end/panels/settings/components/SyncSection.ts +0 -1
  153. package/front_end/panels/sources/CSSPlugin.ts +3 -3
  154. package/front_end/panels/sources/CallStackSidebarPane.ts +60 -75
  155. package/front_end/panels/sources/SourcesPanel.ts +1 -11
  156. package/front_end/panels/sources/TabbedEditorContainer.ts +11 -8
  157. package/front_end/panels/sources/ThreadsSidebarPane.ts +96 -101
  158. package/front_end/panels/sources/threadsSidebarPane.css +6 -5
  159. package/front_end/panels/timeline/InteractionsTrackAppender.ts +2 -3
  160. package/front_end/panels/timeline/TimelineFlameChartDataProvider.ts +23 -33
  161. package/front_end/panels/timeline/TimelineFlameChartNetworkDataProvider.ts +4 -3
  162. package/front_end/panels/timeline/TimelineFlameChartView.ts +12 -0
  163. package/front_end/panels/timeline/TimelinePanel.ts +3 -5
  164. package/front_end/panels/timeline/components/IgnoreListSetting.ts +164 -142
  165. package/front_end/panels/timeline/components/InteractionBreakdown.ts +48 -28
  166. package/front_end/panels/timeline/components/LayoutShiftDetails.ts +18 -23
  167. package/front_end/panels/timeline/components/NetworkRequestTooltip.ts +98 -73
  168. package/front_end/panels/timeline/components/SidebarInsightsTab.ts +9 -12
  169. package/front_end/panels/timeline/components/SidebarSingleInsightSet.ts +262 -291
  170. package/front_end/panels/timeline/components/Utils.ts +25 -0
  171. package/front_end/panels/timeline/components/insights/BaseInsightComponent.ts +210 -146
  172. package/front_end/panels/timeline/components/insights/CLSCulprits.ts +8 -20
  173. package/front_end/panels/timeline/components/insights/Cache.ts +0 -9
  174. package/front_end/panels/timeline/components/insights/DOMSize.ts +11 -33
  175. package/front_end/panels/timeline/components/insights/DocumentLatency.ts +0 -9
  176. package/front_end/panels/timeline/components/insights/DuplicatedJavaScript.ts +0 -9
  177. package/front_end/panels/timeline/components/insights/EventRef.ts +47 -109
  178. package/front_end/panels/timeline/components/insights/FontDisplay.ts +0 -9
  179. package/front_end/panels/timeline/components/insights/ForcedReflow.ts +0 -9
  180. package/front_end/panels/timeline/components/insights/INPBreakdown.ts +0 -9
  181. package/front_end/panels/timeline/components/insights/ImageDelivery.ts +1 -10
  182. package/front_end/panels/timeline/components/insights/ImageRef.ts +112 -0
  183. package/front_end/panels/timeline/components/insights/InsightRenderer.ts +91 -0
  184. package/front_end/panels/timeline/components/insights/LCPBreakdown.ts +0 -9
  185. package/front_end/panels/timeline/components/insights/LCPDiscovery.ts +4 -11
  186. package/front_end/panels/timeline/components/insights/LegacyJavaScript.ts +0 -9
  187. package/front_end/panels/timeline/components/insights/ModernHTTP.ts +0 -9
  188. package/front_end/panels/timeline/components/insights/NetworkDependencyTree.ts +6 -21
  189. package/front_end/panels/timeline/components/insights/NodeLink.ts +68 -43
  190. package/front_end/panels/timeline/components/insights/README.md +2 -3
  191. package/front_end/panels/timeline/components/insights/RenderBlocking.ts +0 -9
  192. package/front_end/panels/timeline/components/insights/SlowCSSSelector.ts +0 -9
  193. package/front_end/panels/timeline/components/insights/ThirdParties.ts +0 -9
  194. package/front_end/panels/timeline/components/insights/Viewport.ts +7 -19
  195. package/front_end/panels/timeline/components/insights/baseInsightComponent.css +5 -0
  196. package/front_end/panels/timeline/components/insights/insights.ts +2 -0
  197. package/front_end/panels/timeline/components/interactionBreakdown.css +15 -13
  198. package/front_end/panels/timeline/enable-easter-egg.js +7 -3
  199. package/front_end/third_party/chromium/README.chromium +1 -1
  200. package/front_end/third_party/puppeteer/README.chromium +2 -2
  201. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/BluetoothEmulation.d.ts +96 -0
  202. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/BluetoothEmulation.d.ts.map +1 -0
  203. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/BluetoothEmulation.js +8 -0
  204. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/BluetoothEmulation.js.map +1 -0
  205. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Browser.d.ts +87 -0
  206. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Browser.d.ts.map +1 -1
  207. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Browser.js.map +1 -1
  208. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/DeviceRequestPrompt.d.ts +2 -6
  209. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/DeviceRequestPrompt.d.ts.map +1 -1
  210. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/DeviceRequestPrompt.js +5 -24
  211. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/DeviceRequestPrompt.js.map +1 -1
  212. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Page.d.ts +5 -0
  213. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Page.d.ts.map +1 -1
  214. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Page.js.map +1 -1
  215. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/api.d.ts +1 -0
  216. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/api.d.ts.map +1 -1
  217. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/api.js.map +1 -1
  218. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/BluetoothEmulation.d.ts +18 -0
  219. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/BluetoothEmulation.d.ts.map +1 -0
  220. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/BluetoothEmulation.js +42 -0
  221. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/BluetoothEmulation.js.map +1 -0
  222. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Browser.d.ts +4 -1
  223. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Browser.d.ts.map +1 -1
  224. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Browser.js +10 -0
  225. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Browser.js.map +1 -1
  226. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/DeviceRequestPrompt.d.ts +27 -0
  227. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/DeviceRequestPrompt.d.ts.map +1 -0
  228. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/DeviceRequestPrompt.js +90 -0
  229. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/DeviceRequestPrompt.js.map +1 -0
  230. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Frame.d.ts +3 -1
  231. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Frame.d.ts.map +1 -1
  232. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Frame.js +3 -2
  233. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Frame.js.map +1 -1
  234. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Page.d.ts +4 -1
  235. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Page.d.ts.map +1 -1
  236. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Page.js +5 -2
  237. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Page.js.map +1 -1
  238. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/core/BrowsingContext.d.ts +4 -0
  239. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/core/BrowsingContext.d.ts.map +1 -1
  240. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/core/BrowsingContext.js +14 -2
  241. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/core/BrowsingContext.js.map +1 -1
  242. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/util.d.ts.map +1 -1
  243. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/util.js +7 -0
  244. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/util.js.map +1 -1
  245. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Accessibility.js +1 -1
  246. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Accessibility.js.map +1 -1
  247. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/BluetoothEmulation.d.ts +18 -0
  248. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/BluetoothEmulation.d.ts.map +1 -0
  249. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/BluetoothEmulation.js +30 -0
  250. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/BluetoothEmulation.js.map +1 -0
  251. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Browser.d.ts +5 -2
  252. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Browser.d.ts.map +1 -1
  253. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Browser.js +22 -3
  254. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Browser.js.map +1 -1
  255. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/CdpSession.d.ts +1 -1
  256. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/CdpSession.d.ts.map +1 -1
  257. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/DeviceRequestPrompt.d.ts +2 -3
  258. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/DeviceRequestPrompt.d.ts.map +1 -1
  259. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/DeviceRequestPrompt.js +4 -6
  260. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/DeviceRequestPrompt.js.map +1 -1
  261. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/FrameManager.d.ts +2 -2
  262. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/FrameManager.d.ts.map +1 -1
  263. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/FrameManager.js +1 -1
  264. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/FrameManager.js.map +1 -1
  265. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Page.d.ts +2 -0
  266. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Page.d.ts.map +1 -1
  267. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Page.js +8 -0
  268. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Page.js.map +1 -1
  269. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/WebWorker.d.ts.map +1 -1
  270. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/WebWorker.js +8 -3
  271. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/WebWorker.js.map +1 -1
  272. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/cdp.d.ts +1 -0
  273. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/cdp.d.ts.map +1 -1
  274. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/cdp.js +1 -0
  275. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/cdp.js.map +1 -1
  276. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/BrowserConnector.js +30 -0
  277. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/BrowserConnector.js.map +1 -1
  278. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/ConnectOptions.d.ts +15 -0
  279. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/ConnectOptions.d.ts.map +1 -1
  280. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/injected/injected.d.ts +1 -1
  281. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/ChromeLauncher.d.ts +1 -1
  282. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/ChromeLauncher.d.ts.map +1 -1
  283. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/ChromeLauncher.js +2 -13
  284. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/ChromeLauncher.js.map +1 -1
  285. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/LaunchOptions.d.ts +5 -3
  286. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/LaunchOptions.d.ts.map +1 -1
  287. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/LaunchOptions.js +17 -0
  288. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/LaunchOptions.js.map +1 -1
  289. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/revisions.d.ts +3 -3
  290. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/revisions.js +3 -3
  291. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/revisions.js.map +1 -1
  292. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/util/Mutex.d.ts +2 -2
  293. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/util/version.d.ts +1 -1
  294. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/util/version.js +1 -1
  295. package/front_end/third_party/puppeteer/package/lib/es5-iife/puppeteer-core-browser.d.ts +221 -4
  296. package/front_end/third_party/puppeteer/package/lib/es5-iife/puppeteer-core-browser.js +182 -95
  297. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/BluetoothEmulation.d.ts +96 -0
  298. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/BluetoothEmulation.d.ts.map +1 -0
  299. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/BluetoothEmulation.js +7 -0
  300. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/BluetoothEmulation.js.map +1 -0
  301. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Browser.d.ts +87 -0
  302. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Browser.d.ts.map +1 -1
  303. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Browser.js.map +1 -1
  304. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/DeviceRequestPrompt.d.ts +2 -6
  305. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/DeviceRequestPrompt.d.ts.map +1 -1
  306. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/DeviceRequestPrompt.js +4 -22
  307. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/DeviceRequestPrompt.js.map +1 -1
  308. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Page.d.ts +5 -0
  309. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Page.d.ts.map +1 -1
  310. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Page.js.map +1 -1
  311. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/api.d.ts +1 -0
  312. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/api.d.ts.map +1 -1
  313. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/api.js.map +1 -1
  314. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/BluetoothEmulation.d.ts +18 -0
  315. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/BluetoothEmulation.d.ts.map +1 -0
  316. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/BluetoothEmulation.js +38 -0
  317. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/BluetoothEmulation.js.map +1 -0
  318. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Browser.d.ts +4 -1
  319. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Browser.d.ts.map +1 -1
  320. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Browser.js +10 -0
  321. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Browser.js.map +1 -1
  322. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/DeviceRequestPrompt.d.ts +27 -0
  323. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/DeviceRequestPrompt.d.ts.map +1 -0
  324. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/DeviceRequestPrompt.js +85 -0
  325. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/DeviceRequestPrompt.js.map +1 -0
  326. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Frame.d.ts +3 -1
  327. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Frame.d.ts.map +1 -1
  328. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Frame.js +3 -2
  329. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Frame.js.map +1 -1
  330. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Page.d.ts +4 -1
  331. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Page.d.ts.map +1 -1
  332. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Page.js +5 -2
  333. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Page.js.map +1 -1
  334. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/core/BrowsingContext.d.ts +4 -0
  335. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/core/BrowsingContext.d.ts.map +1 -1
  336. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/core/BrowsingContext.js +14 -2
  337. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/core/BrowsingContext.js.map +1 -1
  338. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/util.d.ts.map +1 -1
  339. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/util.js +7 -0
  340. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/util.js.map +1 -1
  341. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Accessibility.js +1 -1
  342. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Accessibility.js.map +1 -1
  343. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/BluetoothEmulation.d.ts +18 -0
  344. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/BluetoothEmulation.d.ts.map +1 -0
  345. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/BluetoothEmulation.js +26 -0
  346. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/BluetoothEmulation.js.map +1 -0
  347. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Browser.d.ts +5 -2
  348. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Browser.d.ts.map +1 -1
  349. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Browser.js +22 -3
  350. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Browser.js.map +1 -1
  351. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/CdpSession.d.ts +1 -1
  352. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/CdpSession.d.ts.map +1 -1
  353. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/DeviceRequestPrompt.d.ts +2 -3
  354. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/DeviceRequestPrompt.d.ts.map +1 -1
  355. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/DeviceRequestPrompt.js +2 -4
  356. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/DeviceRequestPrompt.js.map +1 -1
  357. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/FrameManager.d.ts +2 -2
  358. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/FrameManager.d.ts.map +1 -1
  359. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/FrameManager.js +2 -2
  360. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/FrameManager.js.map +1 -1
  361. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Page.d.ts +2 -0
  362. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Page.d.ts.map +1 -1
  363. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Page.js +8 -0
  364. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Page.js.map +1 -1
  365. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/WebWorker.d.ts.map +1 -1
  366. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/WebWorker.js +8 -3
  367. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/WebWorker.js.map +1 -1
  368. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/cdp.d.ts +1 -0
  369. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/cdp.d.ts.map +1 -1
  370. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/cdp.js +1 -0
  371. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/cdp.js.map +1 -1
  372. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/BrowserConnector.js +31 -1
  373. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/BrowserConnector.js.map +1 -1
  374. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/ConnectOptions.d.ts +15 -0
  375. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/ConnectOptions.d.ts.map +1 -1
  376. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/ChromeLauncher.d.ts +1 -1
  377. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/ChromeLauncher.d.ts.map +1 -1
  378. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/ChromeLauncher.js +2 -13
  379. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/ChromeLauncher.js.map +1 -1
  380. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/LaunchOptions.d.ts +5 -3
  381. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/LaunchOptions.d.ts.map +1 -1
  382. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/LaunchOptions.js +16 -1
  383. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/LaunchOptions.js.map +1 -1
  384. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/revisions.d.ts +3 -3
  385. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/revisions.js +3 -3
  386. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/revisions.js.map +1 -1
  387. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/util/version.d.ts +1 -1
  388. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/util/version.js +1 -1
  389. package/front_end/third_party/puppeteer/package/lib/types.d.ts +221 -4
  390. package/front_end/third_party/puppeteer/package/package.json +4 -4
  391. package/front_end/third_party/puppeteer/package/src/api/BluetoothEmulation.ts +103 -0
  392. package/front_end/third_party/puppeteer/package/src/api/Browser.ts +96 -1
  393. package/front_end/third_party/puppeteer/package/src/api/DeviceRequestPrompt.ts +2 -10
  394. package/front_end/third_party/puppeteer/package/src/api/Page.ts +6 -0
  395. package/front_end/third_party/puppeteer/package/src/api/api.ts +1 -0
  396. package/front_end/third_party/puppeteer/package/src/bidi/BluetoothEmulation.ts +52 -0
  397. package/front_end/third_party/puppeteer/package/src/bidi/Browser.ts +15 -0
  398. package/front_end/third_party/puppeteer/package/src/bidi/DeviceRequestPrompt.ts +138 -0
  399. package/front_end/third_party/puppeteer/package/src/bidi/Frame.ts +7 -3
  400. package/front_end/third_party/puppeteer/package/src/bidi/Page.ts +10 -2
  401. package/front_end/third_party/puppeteer/package/src/bidi/core/BrowsingContext.ts +30 -2
  402. package/front_end/third_party/puppeteer/package/src/bidi/util.ts +8 -0
  403. package/front_end/third_party/puppeteer/package/src/cdp/Accessibility.ts +1 -1
  404. package/front_end/third_party/puppeteer/package/src/cdp/BluetoothEmulation.ts +47 -0
  405. package/front_end/third_party/puppeteer/package/src/cdp/Browser.ts +33 -3
  406. package/front_end/third_party/puppeteer/package/src/cdp/CdpSession.ts +1 -1
  407. package/front_end/third_party/puppeteer/package/src/cdp/DeviceRequestPrompt.ts +3 -8
  408. package/front_end/third_party/puppeteer/package/src/cdp/Frame.ts +2 -2
  409. package/front_end/third_party/puppeteer/package/src/cdp/FrameManager.ts +9 -4
  410. package/front_end/third_party/puppeteer/package/src/cdp/Page.ts +13 -0
  411. package/front_end/third_party/puppeteer/package/src/cdp/WebWorker.ts +8 -3
  412. package/front_end/third_party/puppeteer/package/src/cdp/cdp.ts +1 -0
  413. package/front_end/third_party/puppeteer/package/src/common/BrowserConnector.ts +45 -1
  414. package/front_end/third_party/puppeteer/package/src/common/ConnectOptions.ts +20 -0
  415. package/front_end/third_party/puppeteer/package/src/node/ChromeLauncher.ts +5 -17
  416. package/front_end/third_party/puppeteer/package/src/node/LaunchOptions.ts +23 -7
  417. package/front_end/third_party/puppeteer/package/src/revisions.ts +3 -3
  418. package/front_end/third_party/puppeteer/package/src/util/version.ts +1 -1
  419. package/front_end/third_party/puppeteer/puppeteer-tsconfig.json +4 -0
  420. package/front_end/ui/components/annotations/AnnotationRepository.ts +153 -13
  421. package/front_end/ui/components/snackbars/Snackbars.docs.ts +0 -1
  422. package/front_end/ui/components/text_editor/AiCodeCompletionTeaserPlaceholder.ts +12 -3
  423. package/front_end/ui/components/text_editor/AiCodeGenerationProvider.ts +182 -0
  424. package/front_end/ui/components/text_editor/text_editor.ts +1 -0
  425. package/front_end/ui/helpers/OpenInNewTab.ts +5 -1
  426. package/front_end/ui/i18n/i18n.ts +9 -9
  427. package/front_end/ui/kit/icons/Icon.docs.ts +22 -65
  428. package/front_end/ui/kit/kit.ts +1 -0
  429. package/front_end/ui/kit/link/Link.docs.ts +15 -0
  430. package/front_end/ui/kit/link/Link.ts +151 -0
  431. package/front_end/ui/kit/link/link.css +27 -0
  432. package/front_end/ui/legacy/EmptyWidget.ts +6 -0
  433. package/front_end/ui/legacy/Floaty.ts +442 -0
  434. package/front_end/ui/legacy/InspectorView.ts +12 -0
  435. package/front_end/ui/legacy/ReportView.ts +1 -1
  436. package/front_end/ui/legacy/SelectMenu.docs.ts +0 -1
  437. package/front_end/ui/legacy/TabbedPane.ts +131 -53
  438. package/front_end/ui/legacy/components/cookie_table/CookiesTable.ts +1 -1
  439. package/front_end/ui/legacy/components/inline_editor/ColorSwatch.ts +36 -36
  440. package/front_end/ui/legacy/components/object_ui/JavaScriptREPL.ts +22 -37
  441. package/front_end/ui/legacy/components/object_ui/RemoteObjectPreviewFormatter.ts +31 -1
  442. package/front_end/ui/legacy/components/perf_ui/FlameChart.ts +2 -2
  443. package/front_end/ui/legacy/components/utils/Linkifier.ts +7 -11
  444. package/front_end/ui/legacy/floaty.css +77 -0
  445. package/front_end/ui/legacy/legacy.ts +2 -0
  446. package/front_end/ui/visual_logging/KnownContextValues.ts +6 -0
  447. package/inspector_overlay/loadCSS.rollup.js +5 -4
  448. package/package.json +2 -2
  449. package/front_end/panels/application/preloading/components/PreloadingMismatchedHeadersGrid.ts +0 -99
  450. package/front_end/panels/recorder/components/SelectButton.ts +0 -304
  451. package/front_end/panels/recorder/controllers/controllers.ts +0 -7
  452. package/front_end/ui/components/chrome_link/ChromeLink.ts +0 -76
  453. package/front_end/ui/components/chrome_link/chromeLink.css +0 -12
  454. package/front_end/ui/components/chrome_link/chrome_link.ts +0 -9
  455. /package/front_end/panels/recorder/components/{selectButton.css → replaySection.css} +0 -0
@@ -1,10 +1,10 @@
1
1
  // Copyright 2023 The Chromium Authors
2
2
  // Use of this source code is governed by a BSD-style license that can be
3
3
  // found in the LICENSE file.
4
- /* eslint-disable @devtools/no-imperative-dom-api */
5
4
 
6
5
  import * as Common from '../../../core/common/common.js';
7
6
  import * as Extensions from '../../../models/extensions/extensions.js';
7
+ import * as PanelCommon from '../../common/common.js';
8
8
 
9
9
  let instance: ExtensionManager|null = null;
10
10
 
@@ -25,7 +25,7 @@ export class ExtensionManager extends Common.ObjectWrapper.ObjectWrapper<EventTy
25
25
  return instance;
26
26
  }
27
27
 
28
- #views = new Map<string, ExtensionIframe>();
28
+ #views = new Map<string, PanelCommon.ExtensionIframe.ExtensionIframe>();
29
29
 
30
30
  constructor() {
31
31
  super();
@@ -54,7 +54,7 @@ export class ExtensionManager extends Common.ObjectWrapper.ObjectWrapper<EventTy
54
54
  return Extensions.RecorderPluginManager.RecorderPluginManager.instance().plugins();
55
55
  }
56
56
 
57
- getView(descriptorId: string): ExtensionIframe {
57
+ getView(descriptorId: string): PanelCommon.ExtensionIframe.ExtensionIframe {
58
58
  const view = this.#views.get(descriptorId);
59
59
  if (!view) {
60
60
  throw new Error('View not found');
@@ -69,55 +69,11 @@ export class ExtensionManager extends Common.ObjectWrapper.ObjectWrapper<EventTy
69
69
  #handleView = (event: {data: Extensions.RecorderPluginManager.ViewDescriptor}): void => {
70
70
  const descriptor = event.data;
71
71
  if (!this.#views.has(descriptor.id)) {
72
- this.#views.set(descriptor.id, new ExtensionIframe(descriptor));
72
+ this.#views.set(descriptor.id, new PanelCommon.ExtensionIframe.ExtensionIframe(descriptor));
73
73
  }
74
74
  };
75
75
  }
76
76
 
77
- class ExtensionIframe {
78
- #descriptor: Extensions.RecorderPluginManager.ViewDescriptor;
79
- #iframe: HTMLIFrameElement;
80
- #isShowing = false;
81
- #isLoaded = false;
82
-
83
- constructor(descriptor: Extensions.RecorderPluginManager.ViewDescriptor) {
84
- this.#descriptor = descriptor;
85
- this.#iframe = document.createElement('iframe');
86
- this.#iframe.src = descriptor.pagePath;
87
- this.#iframe.onload = this.#onIframeLoad;
88
- }
89
-
90
- #onIframeLoad = (): void => {
91
- this.#isLoaded = true;
92
- if (this.#isShowing) {
93
- this.#descriptor.onShown();
94
- }
95
- };
96
-
97
- show(): void {
98
- if (this.#isShowing) {
99
- return;
100
- }
101
- this.#isShowing = true;
102
- if (this.#isLoaded) {
103
- this.#descriptor.onShown();
104
- }
105
- }
106
-
107
- hide(): void {
108
- if (!this.#isShowing) {
109
- return;
110
- }
111
- this.#isShowing = false;
112
- this.#isLoaded = false;
113
- this.#descriptor.onHidden();
114
- }
115
-
116
- frame(): HTMLIFrameElement {
117
- return this.#iframe;
118
- }
119
- }
120
-
121
77
  export const enum Events {
122
78
  EXTENSIONS_UPDATED = 'extensionsUpdated',
123
79
  }
@@ -1,7 +1,6 @@
1
1
  // Copyright 2023 The Chromium Authors
2
2
  // Use of this source code is governed by a BSD-style license that can be
3
3
  // found in the LICENSE file.
4
- /* eslint-disable @devtools/no-imperative-dom-api */
5
4
 
6
5
  import * as SDK from '../../../core/sdk/sdk.js';
7
6
 
@@ -26,30 +25,37 @@ async function captureScreenshot(): Promise<Screenshot> {
26
25
 
27
26
  export async function resizeScreenshot(data: Screenshot): Promise<Screenshot> {
28
27
  const img = new Image();
29
- const promise = new Promise(resolve => {
28
+ const imageLoaded = new Promise(resolve => {
30
29
  img.onload = resolve;
31
30
  });
32
31
  img.src = data;
33
- await promise;
32
+ await imageLoaded;
34
33
 
35
- const canvas = document.createElement('canvas');
34
+ const aspectRatio = img.width / img.height;
35
+ const canvas = new OffscreenCanvas(
36
+ SCREENSHOT_WIDTH,
37
+ Math.min(
38
+ SCREENSHOT_MAX_HEIGHT,
39
+ SCREENSHOT_WIDTH / aspectRatio,
40
+ ));
36
41
  const context = canvas.getContext('2d', {willReadFrequently: true});
37
42
  if (!context) {
38
43
  throw new Error('Could not create context.');
39
44
  }
40
- const aspectRatio = img.width / img.height;
41
- canvas.width = SCREENSHOT_WIDTH;
42
- canvas.height = Math.min(
43
- SCREENSHOT_MAX_HEIGHT,
44
- SCREENSHOT_WIDTH / aspectRatio,
45
- );
46
45
  const bitmap = await createImageBitmap(img, {
47
46
  resizeWidth: SCREENSHOT_WIDTH,
48
47
  resizeQuality: 'high',
49
48
  });
50
49
  context.drawImage(bitmap, 0, 0);
51
50
 
52
- return canvas.toDataURL('image/png') as Screenshot;
51
+ const blob = await canvas.convertToBlob({type: 'image/png'});
52
+ const dataUrl = await new Promise<string>((resolve, reject) => {
53
+ const reader = new FileReader();
54
+ reader.onloadend = () => resolve(reader.result as string);
55
+ reader.onerror = reject;
56
+ reader.readAsDataURL(blob);
57
+ });
58
+ return dataUrl as Screenshot;
53
59
  }
54
60
 
55
61
  export async function takeScreenshot(): Promise<Screenshot> {
@@ -4,7 +4,6 @@
4
4
 
5
5
  import '../../ui/components/switch/switch.js';
6
6
  import '../../ui/kit/kit.js';
7
- import '../../ui/components/chrome_link/chrome_link.js';
8
7
 
9
8
  import * as Common from '../../core/common/common.js';
10
9
  import * as Host from '../../core/host/host.js';
@@ -102,20 +101,14 @@ const UIStrings = {
102
101
  * @example {#tpcd-heuristics-grants} PH1
103
102
  */
104
103
  enableFlag: 'To use this, set {PH1} to Default',
105
- /**
106
- * @description Text used for link within the enableFlag to show users where they can enable the Third-party Cookie Metadata Grants flag.
107
- */
108
- tpcdMetadataGrants: '#tpcd-metadata-grants',
109
- /**
110
- * @description Text used for link within the enableFlag to show users where they can enable the Third-party Cookie Heuristics Grants flag.
111
- */
112
- tpcdHeuristicsGrants: '#tpcd-heuristics-grants',
113
104
  } as const;
114
105
 
115
106
  const str_ = i18n.i18n.registerUIStrings('panels/security/CookieControlsView.ts', UIStrings);
116
107
  export const i18nString = i18n.i18n.getLocalizedString.bind(undefined, str_);
117
108
  export const i18nFormatString = uiI18n.getFormatLocalizedString.bind(undefined, str_);
118
109
 
110
+ export const i18nFormatStringTemplate = uiI18n.getFormatLocalizedStringTemplate.bind(undefined, str_);
111
+
119
112
  export interface ViewInput {
120
113
  thirdPartyControlsDict: Root.Runtime.HostConfig['thirdPartyCookieControls'];
121
114
  isGracePeriodActive: boolean;
@@ -127,9 +120,9 @@ export type View = (input: ViewInput, output: object, target: HTMLElement) => vo
127
120
 
128
121
  function getChromeFlagsLink(flag: string): TemplateResult {
129
122
  return html`
130
- <devtools-chrome-link href="chrome://flags/#${flag}" tabindex="0">
131
- ${flag}
132
- </devtools-chrome-link>`;
123
+ <devtools-link href="chrome://flags/${flag}">
124
+ ${flag}
125
+ </devtools-link>`;
133
126
  }
134
127
  const DEFAULT_VIEW: View = (input: ViewInput, _output: object, target: HTMLElement): void => {
135
128
  // createSetting() allows us to initialize the settings with the UI binding values the first
@@ -213,8 +206,8 @@ const DEFAULT_VIEW: View = (input: ViewInput, _output: object, target: HTMLEleme
213
206
  PH1: i18nString(UIStrings.gracePeriod),
214
207
  }) :
215
208
  (input.thirdPartyControlsDict ? !input.thirdPartyControlsDict?.thirdPartyCookieMetadataEnabled: false) ?
216
- i18nFormatString(UIStrings.enableFlag, {
217
- PH1: getChromeFlagsLink(UIStrings.tpcdMetadataGrants),
209
+ i18nFormatStringTemplate(UIStrings.enableFlag, {
210
+ PH1: getChromeFlagsLink('#tpcd-metadata-grants'),
218
211
  }) :
219
212
  i18nFormatString(input.isGracePeriodActive ? UIStrings.gracePeriodExplanation : UIStrings.enrollGracePeriod, {
220
213
  PH1: UI.Fragment.html`<x-link class="devtools-link" href="https://developers.google.com/privacy-sandbox/cookies/temporary-exceptions/grace-period" jslog=${VisualLogging.link('grace-period-link').track({click: true})}>${i18nString(UIStrings.gracePeriod)}</x-link>`,
@@ -246,8 +239,8 @@ const DEFAULT_VIEW: View = (input: ViewInput, _output: object, target: HTMLEleme
246
239
  PH1: i18nString(UIStrings.scenarios),
247
240
  }) :
248
241
  (input.thirdPartyControlsDict ? !input.thirdPartyControlsDict.thirdPartyCookieHeuristicsEnabled: false) ?
249
- i18nFormatString(UIStrings.enableFlag, {
250
- PH1: getChromeFlagsLink(UIStrings.tpcdHeuristicsGrants),
242
+ i18nFormatStringTemplate(UIStrings.enableFlag, {
243
+ PH1: getChromeFlagsLink('#tpcd-heuristics-grants'),
251
244
  }) :
252
245
  i18nFormatString(UIStrings.heuristicExplanation, {
253
246
  PH1: UI.Fragment.html`<x-link class="devtools-link" href="https://developers.google.com/privacy-sandbox/cookies/temporary-exceptions/heuristics-based-exceptions" jslog=${VisualLogging.link('heuristic-link').track({click: true})}>${i18nString(UIStrings.scenarios)}</x-link>`,
@@ -2,7 +2,6 @@
2
2
  // Use of this source code is governed by a BSD-style license that can be
3
3
  // found in the LICENSE file.
4
4
 
5
- import '../../../ui/components/chrome_link/chrome_link.js';
6
5
  import '../../../ui/components/settings/settings.js';
7
6
  import '../../../ui/components/tooltips/tooltips.js';
8
7
 
@@ -163,7 +163,7 @@ class ColorSwatchWidget extends CodeMirror.WidgetType {
163
163
 
164
164
  toDOM(view: CodeMirror.EditorView): HTMLElement {
165
165
  const swatch = new InlineEditor.ColorSwatch.ColorSwatch(i18nString(UIStrings.openColorPicker));
166
- swatch.renderColor(this.#color);
166
+ swatch.color = this.#color;
167
167
  const value = swatch.createChild('span');
168
168
  value.textContent = this.#text;
169
169
  value.setAttribute('hidden', 'true');
@@ -171,13 +171,13 @@ class ColorSwatchWidget extends CodeMirror.WidgetType {
171
171
  const insert = event.data.color.getAuthoredText() ?? event.data.color.asString();
172
172
  view.dispatch({changes: {from: this.#from, to: this.#from + this.#text.length, insert}});
173
173
  this.#text = insert;
174
- this.#color = swatch.getColor() as Common.Color.Color;
174
+ this.#color = swatch.color as Common.Color.Color;
175
175
  });
176
176
  swatch.addEventListener(InlineEditor.ColorSwatch.ColorFormatChangedEvent.eventName, event => {
177
177
  const insert = event.data.color.getAuthoredText() ?? event.data.color.asString();
178
178
  view.dispatch({changes: {from: this.#from, to: this.#from + this.#text.length, insert}});
179
179
  this.#text = insert;
180
- this.#color = swatch.getColor() as Common.Color.Color;
180
+ this.#color = swatch.color as Common.Color.Color;
181
181
  });
182
182
  swatch.addEventListener(InlineEditor.ColorSwatch.ClickEvent.eventName, event => {
183
183
  event.consume(true);
@@ -2,6 +2,7 @@
2
2
  // Use of this source code is governed by a BSD-style license that can be
3
3
  // found in the LICENSE file.
4
4
  /* eslint-disable @devtools/no-imperative-dom-api */
5
+ /* eslint-disable @devtools/no-lit-render-outside-of-view */
5
6
 
6
7
  /*
7
8
  * Copyright (C) 2008 Apple Inc. All Rights Reserved.
@@ -40,6 +41,7 @@ import * as SourceMapScopes from '../../models/source_map_scopes/source_map_scop
40
41
  import * as Workspace from '../../models/workspace/workspace.js';
41
42
  import {Icon} from '../../ui/kit/kit.js';
42
43
  import * as UI from '../../ui/legacy/legacy.js';
44
+ import {Directives, html, render} from '../../ui/lit/lit.js';
43
45
  import * as VisualLogging from '../../ui/visual_logging/visual_logging.js';
44
46
 
45
47
  import callStackSidebarPaneStyles from './callStackSidebarPane.css.js';
@@ -88,6 +90,8 @@ const UIStrings = {
88
90
  const str_ = i18n.i18n.registerUIStrings('panels/sources/CallStackSidebarPane.ts', UIStrings);
89
91
  const i18nString = i18n.i18n.getLocalizedString.bind(undefined, str_);
90
92
 
93
+ const {createRef, ref} = Directives;
94
+
91
95
  let callstackSidebarPaneInstance: CallStackSidebarPane;
92
96
 
93
97
  export class CallStackSidebarPane extends UI.View.SimpleView implements UI.ContextFlavorListener.ContextFlavorListener,
@@ -99,12 +103,11 @@ export class CallStackSidebarPane extends UI.View.SimpleView implements UI.Conte
99
103
  private readonly items: UI.ListModel.ListModel<Item>;
100
104
  private list: UI.ListControl.ListControl<Item>;
101
105
  private readonly showMoreMessageElement: Element;
102
- private showIgnoreListed: boolean;
103
- private readonly locationPool: Bindings.LiveLocation.LiveLocationPool;
104
- private readonly updateThrottler: Common.Throttler.Throttler;
105
- private maxAsyncStackChainDepth: number;
106
- private readonly updateItemThrottler: Common.Throttler.Throttler;
107
- private readonly scheduledForUpdateItems: Set<Item>;
106
+ private showIgnoreListed = false;
107
+ private readonly locationPool = new Bindings.LiveLocation.LiveLocationPool();
108
+ private maxAsyncStackChainDepth = defaultMaxAsyncStackChainDepth;
109
+ private readonly updateItemThrottler = new Common.Throttler.Throttler(100);
110
+ private readonly scheduledForUpdateItems = new Set<Item>();
108
111
  private muteActivateItem?: boolean;
109
112
  private lastDebuggerModel: SDK.DebuggerModel.DebuggerModel|null = null;
110
113
 
@@ -115,27 +118,23 @@ export class CallStackSidebarPane extends UI.View.SimpleView implements UI.Conte
115
118
  viewId: 'sources.callstack',
116
119
  useShadowDom: true,
117
120
  });
118
- this.registerRequiredCSS(callStackSidebarPaneStyles);
119
-
120
- ({element: this.ignoreListMessageElement, checkbox: this.ignoreListCheckboxElement} =
121
- this.createIgnoreListMessageElementAndCheckbox());
122
- this.contentElement.appendChild(this.ignoreListMessageElement);
123
121
 
124
- this.notPausedMessageElement = this.contentElement.createChild('div', 'gray-info-message');
125
- this.notPausedMessageElement.textContent = i18nString(UIStrings.notPaused);
126
- this.notPausedMessageElement.tabIndex = -1;
127
-
128
- this.callFrameWarningsElement = this.contentElement.createChild('div', 'call-frame-warnings-message');
129
- const icon = new Icon();
130
- icon.name = 'warning-filled';
131
- icon.classList.add('call-frame-warning-icon', 'small');
132
- this.callFrameWarningsElement.appendChild(icon);
133
- this.callFrameWarningsElement.appendChild(document.createTextNode(i18nString(UIStrings.callFrameWarnings)));
134
- this.callFrameWarningsElement.tabIndex = -1;
122
+ const [ignoreListMessageRef, ignoreListCheckboxRef, notPausedRef, warningRef, showMoreRef] = [
123
+ createRef<HTMLElement>(),
124
+ createRef<HTMLInputElement>(),
125
+ createRef<HTMLElement>(),
126
+ createRef<HTMLElement>(),
127
+ createRef<HTMLElement>(),
128
+ ];
129
+ const ignoreListCheckboxChanged = (): void => {
130
+ this.showIgnoreListed = Boolean(ignoreListCheckboxRef.value?.checked);
131
+ for (const item of this.items) {
132
+ this.refreshItem(item);
133
+ }
134
+ };
135
135
 
136
136
  this.items = new UI.ListModel.ListModel();
137
137
  this.list = new UI.ListControl.ListControl(this.items, this, UI.ListControl.ListMode.NonViewport);
138
- this.contentElement.appendChild(this.list.element);
139
138
  this.list.element.addEventListener('contextmenu', this.onContextMenu.bind(this), false);
140
139
  self.onInvokeElement(this.list.element, event => {
141
140
  const item = this.list.itemForNode((event.target as Node | null));
@@ -145,19 +144,42 @@ export class CallStackSidebarPane extends UI.View.SimpleView implements UI.Conte
145
144
  }
146
145
  });
147
146
 
148
- this.showMoreMessageElement = this.createShowMoreMessageElement();
149
- this.showMoreMessageElement.classList.add('hidden');
150
- this.contentElement.appendChild(this.showMoreMessageElement);
151
-
152
- this.showIgnoreListed = false;
153
- this.locationPool = new Bindings.LiveLocation.LiveLocationPool();
154
-
155
- this.updateThrottler = new Common.Throttler.Throttler(100);
156
- this.maxAsyncStackChainDepth = defaultMaxAsyncStackChainDepth;
157
- this.update();
147
+ const onShowMoreClicked = (): void => {
148
+ this.maxAsyncStackChainDepth += defaultMaxAsyncStackChainDepth;
149
+ this.requestUpdate();
150
+ };
158
151
 
159
- this.updateItemThrottler = new Common.Throttler.Throttler(100);
160
- this.scheduledForUpdateItems = new Set();
152
+ // clang-format off
153
+ render(html`
154
+ <style>${callStackSidebarPaneStyles}</style>
155
+ <div class='ignore-listed-message' ${ref(ignoreListMessageRef)}>
156
+ <label class='ignore-listed-message-label'>
157
+ <input type='checkbox' tabindex=0 class='ignore-listed-checkbox'
158
+ @change=${ignoreListCheckboxChanged} ${ref(ignoreListCheckboxRef)}></input>
159
+ ${i18nString(UIStrings.showIgnorelistedFrames)}
160
+ </label>
161
+ </div>
162
+ <div class='gray-info-message' tabindex=-1 ${ref(notPausedRef)}>
163
+ ${i18nString(UIStrings.notPaused)}
164
+ </div>
165
+ <div class='call-frame-warnings-message' tabindex=-1 ${ref(warningRef)}>
166
+ <devtools-icon .name=${'warning-filled'} class='call-frame-warning-icon small'></devtools-icon>
167
+ ${i18nString(UIStrings.callFrameWarnings)}
168
+ </div>
169
+ ${this.list.element}
170
+ <div class='show-more-message hidden' ${ref(showMoreRef)}>
171
+ <span class='link' @click=${onShowMoreClicked}>${i18nString(UIStrings.showMore)}</span>
172
+ </div>
173
+ `, this.contentElement);
174
+ // clang-format on
175
+
176
+ this.ignoreListMessageElement = ignoreListMessageRef.value as HTMLElement;
177
+ this.ignoreListCheckboxElement = ignoreListCheckboxRef.value as HTMLInputElement;
178
+ this.notPausedMessageElement = notPausedRef.value as HTMLElement;
179
+ this.callFrameWarningsElement = warningRef.value as HTMLElement;
180
+ this.showMoreMessageElement = showMoreRef.value as HTMLElement;
181
+
182
+ this.requestUpdate();
161
183
 
162
184
  SDK.TargetManager.TargetManager.instance().addModelListener(
163
185
  SDK.DebuggerModel.DebuggerModel, SDK.DebuggerModel.Events.DebugInfoAttached, this.debugInfoAttached, this);
@@ -178,11 +200,11 @@ export class CallStackSidebarPane extends UI.View.SimpleView implements UI.Conte
178
200
  this.showIgnoreListed = false;
179
201
  this.ignoreListCheckboxElement.checked = false;
180
202
  this.maxAsyncStackChainDepth = defaultMaxAsyncStackChainDepth;
181
- this.update();
203
+ this.requestUpdate();
182
204
  }
183
205
 
184
206
  private debugInfoAttached(): void {
185
- this.update();
207
+ this.requestUpdate();
186
208
  }
187
209
 
188
210
  private setSourceMapSubscription(debuggerModel: SDK.DebuggerModel.DebuggerModel|null): void {
@@ -203,11 +225,7 @@ export class CallStackSidebarPane extends UI.View.SimpleView implements UI.Conte
203
225
  }
204
226
  }
205
227
 
206
- update(): void {
207
- void this.updateThrottler.schedule(() => this.doUpdate());
208
- }
209
-
210
- async doUpdate(): Promise<void> {
228
+ override async performUpdate(): Promise<void> {
211
229
  this.locationPool.disposeAll();
212
230
 
213
231
  this.callFrameWarningsElement.classList.add('hidden');
@@ -375,39 +393,6 @@ export class CallStackSidebarPane extends UI.View.SimpleView implements UI.Conte
375
393
  return true;
376
394
  }
377
395
 
378
- private createIgnoreListMessageElementAndCheckbox(): {element: Element, checkbox: HTMLInputElement} {
379
- const element = document.createElement('div');
380
- element.classList.add('ignore-listed-message');
381
- const label = element.createChild('label');
382
- label.classList.add('ignore-listed-message-label');
383
- const checkbox = label.createChild('input');
384
- checkbox.tabIndex = 0;
385
- checkbox.type = 'checkbox';
386
- checkbox.classList.add('ignore-listed-checkbox');
387
- label.append(i18nString(UIStrings.showIgnorelistedFrames));
388
- const showAll = (): void => {
389
- this.showIgnoreListed = checkbox.checked;
390
- for (const item of this.items) {
391
- this.refreshItem(item);
392
- }
393
- };
394
- checkbox.addEventListener('click', showAll);
395
- return {element, checkbox};
396
- }
397
-
398
- private createShowMoreMessageElement(): Element {
399
- const element = document.createElement('div');
400
- element.classList.add('show-more-message');
401
- element.createChild('span');
402
- const showAllLink = element.createChild('span', 'link');
403
- showAllLink.textContent = i18nString(UIStrings.showMore);
404
- showAllLink.addEventListener('click', () => {
405
- this.maxAsyncStackChainDepth += defaultMaxAsyncStackChainDepth;
406
- this.update();
407
- }, false);
408
- return element;
409
- }
410
-
411
396
  private onContextMenu(event: Event): void {
412
397
  const item = this.list.itemForNode((event.target as Node | null));
413
398
  if (!item) {
@@ -977,11 +977,8 @@ export class SourcesPanel extends UI.Panel.Panel implements
977
977
  const editorElement = this.element.querySelector('devtools-text-editor');
978
978
  if (!eventTarget.isSelfOrDescendant(editorElement) && uiSourceCode.contentType().isTextType()) {
979
979
  UI.Context.Context.instance().setFlavor(Workspace.UISourceCode.UISourceCode, uiSourceCode);
980
- if (Root.Runtime.hostConfig.devToolsAiSubmenuPrompts?.enabled) {
981
980
  const action = UI.ActionRegistry.ActionRegistry.instance().getAction(openAiAssistanceId);
982
- const submenu = contextMenu.footerSection().appendSubMenuItem(
983
- action.title(), false, openAiAssistanceId,
984
- Root.Runtime.hostConfig.devToolsAiAssistanceFileAgent?.featureName);
981
+ const submenu = contextMenu.footerSection().appendSubMenuItem(action.title(), false, openAiAssistanceId);
985
982
  submenu.defaultSection().appendAction('drjones.sources-panel-context', i18nString(UIStrings.startAChat));
986
983
  appendSubmenuPromptAction(
987
984
  submenu, action, i18nString(UIStrings.assessPerformance), 'Is this script optimized for performance?',
@@ -992,13 +989,6 @@ export class SourcesPanel extends UI.Panel.Panel implements
992
989
  appendSubmenuPromptAction(
993
990
  submenu, action, i18nString(UIStrings.explainInputHandling), 'Does the script handle user input safely',
994
991
  openAiAssistanceId + '.input');
995
- } else if (Root.Runtime.hostConfig.devToolsAiDebugWithAi?.enabled) {
996
- contextMenu.footerSection().appendAction(
997
- openAiAssistanceId, undefined, false, undefined,
998
- Root.Runtime.hostConfig.devToolsAiAssistanceFileAgent?.featureName);
999
- } else {
1000
- contextMenu.footerSection().appendAction(openAiAssistanceId);
1001
- }
1002
992
  }
1003
993
  }
1004
994
 
@@ -14,6 +14,7 @@ import * as uiI18n from '../../ui/i18n/i18n.js';
14
14
  import {Icon} from '../../ui/kit/kit.js';
15
15
  import * as SourceFrame from '../../ui/legacy/components/source_frame/source_frame.js';
16
16
  import * as UI from '../../ui/legacy/legacy.js';
17
+ import {html} from '../../ui/lit/lit.js';
17
18
  import * as VisualLogging from '../../ui/visual_logging/visual_logging.js';
18
19
  import * as PanelCommon from '../common/common.js';
19
20
  import * as Snippets from '../snippets/snippets.js';
@@ -526,10 +527,11 @@ export class TabbedEditorContainer extends Common.ObjectWrapper.ObjectWrapper<Ev
526
527
  }
527
528
 
528
529
  private addLoadErrorIcon(tabId: string): void {
529
- const icon = new Icon();
530
- icon.name = 'cross-circle-filled';
531
- icon.classList.add('small');
532
- UI.Tooltip.Tooltip.install(icon, i18nString(UIStrings.unableToLoadThisContent));
530
+ // clang-format off
531
+ const icon = html`<devtools-icon class="small" name="cross-circle-filled"
532
+ title=${i18nString(UIStrings.unableToLoadThisContent)}>
533
+ </devtools-icon>`;
534
+ // clang-format on
533
535
  if (this.tabbedPane.tabView(tabId)) {
534
536
  this.tabbedPane.setTrailingTabIcon(tabId, icon);
535
537
  }
@@ -605,10 +607,11 @@ export class TabbedEditorContainer extends Common.ObjectWrapper.ObjectWrapper<Ev
605
607
  const tooltip = this.tooltipForFile(uiSourceCode);
606
608
  this.tabbedPane.changeTabTitle(tabId, title, tooltip);
607
609
  if (uiSourceCode.loadError()) {
608
- const icon = new Icon();
609
- icon.name = 'cross-circle-filled';
610
- icon.classList.add('small');
611
- UI.Tooltip.Tooltip.install(icon, i18nString(UIStrings.unableToLoadThisContent));
610
+ // clang-format off
611
+ const icon = html`<devtools-icon class="small" name="cross-circle-filled"
612
+ title=${i18nString(UIStrings.unableToLoadThisContent)}>
613
+ </devtools-icon>`;
614
+ // clang-format on
612
615
  this.tabbedPane.setTrailingTabIcon(tabId, icon);
613
616
  } else if (Persistence.Persistence.PersistenceImpl.instance().hasUnsavedCommittedChanges(uiSourceCode)) {
614
617
  /* eslint-disable @devtools/no-imperative-dom-api --