chrome-devtools-frontend 1.0.1549484 → 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 (601) hide show
  1. package/docs/styleguide/ux/components.md +84 -17
  2. package/docs/styleguide/ux/images/cards.png +0 -0
  3. package/docs/ui_engineering.md +2 -2
  4. package/eslint.config.mjs +7 -0
  5. package/front_end/Images/generate-css-vars.js +8 -4
  6. package/front_end/core/common/Settings.ts +20 -8
  7. package/front_end/core/host/UserMetrics.ts +3 -1
  8. package/front_end/core/i18n/collect-ui-strings.js +19 -10
  9. package/front_end/core/i18n/generate-locales-js.js +4 -4
  10. package/front_end/core/protocol_client/CDPConnection.ts +1 -0
  11. package/front_end/core/protocol_client/InspectorBackend.ts +5 -1
  12. package/front_end/core/root/Runtime.ts +0 -12
  13. package/front_end/core/sdk/DOMModel.ts +38 -3
  14. package/front_end/core/sdk/DebuggerModel.ts +9 -4
  15. package/front_end/core/sdk/IsolateManager.ts +7 -0
  16. package/front_end/core/sdk/NetworkManager.ts +12 -10
  17. package/front_end/core/sdk/PageResourceLoader.ts +11 -4
  18. package/front_end/core/sdk/RehydratingConnection.ts +5 -2
  19. package/front_end/core/sdk/SourceMapManager.ts +12 -6
  20. package/front_end/entrypoints/main/MainImpl.ts +28 -19
  21. package/front_end/foundation/Universe.ts +7 -0
  22. package/front_end/generated/InspectorBackendCommands.ts +5 -2
  23. package/front_end/generated/SupportedCSSProperties.js +14 -0
  24. package/front_end/generated/protocol-mapping.d.ts +8 -0
  25. package/front_end/generated/protocol-proxy-api.d.ts +6 -0
  26. package/front_end/generated/protocol.ts +76 -0
  27. package/front_end/models/ai_assistance/AiConversation.ts +94 -4
  28. package/front_end/models/ai_assistance/BuiltInAi.ts +79 -5
  29. package/front_end/models/ai_assistance/agents/AiAgent.ts +30 -15
  30. package/front_end/models/ai_assistance/agents/PerformanceAgent.ts +179 -41
  31. package/front_end/models/ai_assistance/agents/StylingAgent.snapshot.txt +5 -0
  32. package/front_end/models/ai_assistance/agents/StylingAgent.ts +62 -0
  33. package/front_end/models/ai_assistance/data_formatters/NetworkRequestFormatter.ts +2 -1
  34. package/front_end/models/ai_assistance/data_formatters/PerformanceInsightFormatter.ts +1 -7
  35. package/front_end/models/ai_assistance/data_formatters/PerformanceTraceFormatter.snapshot.txt +124 -12
  36. package/front_end/models/ai_assistance/data_formatters/PerformanceTraceFormatter.ts +125 -30
  37. package/front_end/models/ai_assistance/performance/AICallTree.ts +42 -0
  38. package/front_end/models/ai_code_generation/AiCodeGeneration.ts +12 -0
  39. package/front_end/models/issues_manager/AttributionReportingIssue.ts +6 -8
  40. package/front_end/models/issues_manager/BounceTrackingIssue.ts +4 -14
  41. package/front_end/models/issues_manager/ClientHintIssue.ts +5 -12
  42. package/front_end/models/issues_manager/ContentSecurityPolicyIssue.ts +5 -12
  43. package/front_end/models/issues_manager/CookieDeprecationMetadataIssue.ts +7 -14
  44. package/front_end/models/issues_manager/CookieIssue.ts +27 -30
  45. package/front_end/models/issues_manager/CorsIssue.ts +8 -17
  46. package/front_end/models/issues_manager/CrossOriginEmbedderPolicyIssue.ts +5 -8
  47. package/front_end/models/issues_manager/DeprecationIssue.ts +7 -14
  48. package/front_end/models/issues_manager/ElementAccessibilityIssue.ts +7 -14
  49. package/front_end/models/issues_manager/FederatedAuthRequestIssue.ts +4 -11
  50. package/front_end/models/issues_manager/FederatedAuthUserInfoRequestIssue.ts +4 -11
  51. package/front_end/models/issues_manager/GenericIssue.ts +11 -16
  52. package/front_end/models/issues_manager/HeavyAdIssue.ts +4 -11
  53. package/front_end/models/issues_manager/Issue.ts +13 -4
  54. package/front_end/models/issues_manager/IssueAggregator.ts +17 -2
  55. package/front_end/models/issues_manager/IssuesManager.ts +5 -0
  56. package/front_end/models/issues_manager/LowTextContrastIssue.ts +3 -10
  57. package/front_end/models/issues_manager/MixedContentIssue.ts +7 -13
  58. package/front_end/models/issues_manager/PartitioningBlobURLIssue.ts +4 -11
  59. package/front_end/models/issues_manager/PermissionElementIssue.ts +262 -0
  60. package/front_end/models/issues_manager/PropertyRuleIssue.ts +6 -12
  61. package/front_end/models/issues_manager/QuirksModeIssue.ts +3 -10
  62. package/front_end/models/issues_manager/SRIMessageSignatureIssue.ts +7 -13
  63. package/front_end/models/issues_manager/SharedArrayBufferIssue.ts +4 -11
  64. package/front_end/models/issues_manager/SharedDictionaryIssue.ts +6 -13
  65. package/front_end/models/issues_manager/StylesheetLoadingIssue.ts +8 -13
  66. package/front_end/models/issues_manager/UnencodedDigestIssue.ts +2 -9
  67. package/front_end/models/issues_manager/descriptions/permissionElementActivationDisabled.md +7 -0
  68. package/front_end/models/issues_manager/descriptions/permissionElementActivationDisabledWithOccluder.md +9 -0
  69. package/front_end/models/issues_manager/descriptions/permissionElementActivationDisabledWithOccluderParent.md +9 -0
  70. package/front_end/models/issues_manager/descriptions/permissionElementCspFrameAncestorsMissing.md +5 -0
  71. package/front_end/models/issues_manager/descriptions/permissionElementFencedFrameDisallowed.md +5 -0
  72. package/front_end/models/issues_manager/descriptions/permissionElementFontSizeTooLarge.md +5 -0
  73. package/front_end/models/issues_manager/descriptions/permissionElementFontSizeTooSmall.md +5 -0
  74. package/front_end/models/issues_manager/descriptions/permissionElementGeolocationDeprecated.md +5 -0
  75. package/front_end/models/issues_manager/descriptions/permissionElementInsetBoxShadowUnsupported.md +5 -0
  76. package/front_end/models/issues_manager/descriptions/permissionElementInvalidDisplayStyle.md +5 -0
  77. package/front_end/models/issues_manager/descriptions/permissionElementInvalidSizeValue.md +5 -0
  78. package/front_end/models/issues_manager/descriptions/permissionElementInvalidType.md +5 -0
  79. package/front_end/models/issues_manager/descriptions/permissionElementInvalidTypeActivation.md +5 -0
  80. package/front_end/models/issues_manager/descriptions/permissionElementLowContrast.md +5 -0
  81. package/front_end/models/issues_manager/descriptions/permissionElementNonOpaqueColor.md +5 -0
  82. package/front_end/models/issues_manager/descriptions/permissionElementPaddingBottomUnsupported.md +6 -0
  83. package/front_end/models/issues_manager/descriptions/permissionElementPaddingRightUnsupported.md +6 -0
  84. package/front_end/models/issues_manager/descriptions/permissionElementPermissionsPolicyBlocked.md +5 -0
  85. package/front_end/models/issues_manager/descriptions/permissionElementRegistrationFailed.md +5 -0
  86. package/front_end/models/issues_manager/descriptions/permissionElementRequestInProgress.md +5 -0
  87. package/front_end/models/issues_manager/descriptions/permissionElementSecurityChecksFailed.md +5 -0
  88. package/front_end/models/issues_manager/descriptions/permissionElementTypeNotSupported.md +5 -0
  89. package/front_end/models/issues_manager/descriptions/permissionElementUntrustedEvent.md +7 -0
  90. package/front_end/models/issues_manager/issues_manager.ts +2 -0
  91. package/front_end/models/javascript_metadata/NativeFunctions.js +8 -13
  92. package/front_end/models/stack_trace/StackTraceModel.ts +37 -18
  93. package/front_end/models/trace/Processor.ts +14 -15
  94. package/front_end/models/trace/insights/Common.ts +2 -8
  95. package/front_end/models/trace/insights/types.ts +12 -2
  96. package/front_end/models/trace/types/TraceEvents.ts +4 -1
  97. package/front_end/panels/ai_assistance/AiAssistancePanel.ts +28 -6
  98. package/front_end/panels/ai_assistance/ai_assistance-meta.ts +9 -23
  99. package/front_end/panels/ai_assistance/ai_assistance.ts +1 -0
  100. package/front_end/panels/ai_assistance/components/ChatView.ts +78 -2
  101. package/front_end/panels/ai_assistance/components/CollapsibleAssistanceContentWidget.ts +71 -0
  102. package/front_end/panels/ai_assistance/components/PerformanceAgentFlameChart.ts +126 -0
  103. package/front_end/panels/ai_assistance/components/PerformanceAgentMarkdownRenderer.ts +131 -2
  104. package/front_end/panels/ai_assistance/components/chatView.css +28 -0
  105. package/front_end/panels/ai_assistance/components/collapsibleAssistanceContentWidget.css +33 -0
  106. package/front_end/panels/application/AppManifestView.ts +1007 -521
  107. package/front_end/panels/application/ApplicationPanelSidebar.ts +22 -38
  108. package/front_end/panels/application/BackForwardCacheTreeElement.ts +2 -2
  109. package/front_end/panels/application/BounceTrackingMitigationsTreeElement.ts +2 -2
  110. package/front_end/panels/application/ExtensionStorageItemsView.ts +3 -5
  111. package/front_end/panels/application/InterestGroupTreeElement.ts +2 -2
  112. package/front_end/panels/application/KeyValueStorageItemsView.ts +3 -2
  113. package/front_end/panels/application/OpenedWindowDetailsView.ts +2 -2
  114. package/front_end/panels/application/OriginTrialTreeView.ts +1 -1
  115. package/front_end/panels/application/PreloadingTreeElement.ts +3 -3
  116. package/front_end/panels/application/ReportingApiTreeElement.ts +2 -2
  117. package/front_end/panels/application/ServiceWorkerCacheTreeElement.ts +3 -3
  118. package/front_end/panels/application/SharedStorageListTreeElement.ts +2 -2
  119. package/front_end/panels/application/StorageBucketsTreeElement.ts +3 -3
  120. package/front_end/panels/application/StorageView.ts +2 -2
  121. package/front_end/panels/application/TrustTokensTreeElement.ts +2 -2
  122. package/front_end/panels/application/components/BackForwardCacheView.ts +2 -2
  123. package/front_end/panels/application/components/PermissionsPolicySection.ts +1 -1
  124. package/front_end/panels/application/components/ProtocolHandlersView.ts +1 -1
  125. package/front_end/panels/application/components/SharedStorageMetadataView.ts +1 -1
  126. package/front_end/panels/application/components/TrustTokensView.ts +1 -1
  127. package/front_end/panels/application/preloading/PreloadingView.ts +46 -45
  128. package/front_end/panels/application/preloading/components/MismatchedPreloadingGrid.ts +80 -75
  129. package/front_end/panels/application/preloading/components/PreloadingDisabledInfobar.ts +169 -133
  130. package/front_end/panels/application/preloading/components/PreloadingGrid.ts +1 -1
  131. package/front_end/panels/application/preloading/components/RuleSetDetailsView.ts +74 -93
  132. package/front_end/panels/application/preloading/components/RuleSetGrid.ts +143 -118
  133. package/front_end/panels/application/preloading/components/UsedPreloadingView.ts +52 -12
  134. package/front_end/panels/application/preloading/components/components.ts +0 -2
  135. package/front_end/panels/changes/ChangesSidebar.ts +2 -0
  136. package/front_end/panels/changes/CombinedDiffView.ts +2 -0
  137. package/front_end/panels/common/Annotation.ts +184 -0
  138. package/front_end/panels/common/AnnotationManager.ts +208 -0
  139. package/front_end/panels/common/ExtensionView.ts +47 -0
  140. package/front_end/panels/common/PersistenceUtils.ts +22 -26
  141. package/front_end/panels/common/annotation.css +40 -0
  142. package/front_end/panels/common/common.ts +2 -0
  143. package/front_end/panels/console/ConsoleInsightTeaser.ts +187 -5
  144. package/front_end/panels/console/ConsolePinPane.ts +437 -217
  145. package/front_end/panels/console/ConsolePrompt.ts +36 -227
  146. package/front_end/panels/console/ConsoleView.ts +69 -68
  147. package/front_end/panels/console/ConsoleViewMessage.ts +18 -14
  148. package/front_end/panels/console/consoleInsightTeaser.css +23 -0
  149. package/front_end/panels/console/consoleView.css +1 -1
  150. package/front_end/panels/console_counters/WarningErrorCounter.ts +2 -0
  151. package/front_end/panels/css_overview/CSSOverviewCompletedView.ts +1 -1
  152. package/front_end/panels/elements/AdoptedStyleSheetTreeElement.ts +89 -0
  153. package/front_end/panels/elements/ColorSwatchPopoverIcon.ts +5 -5
  154. package/front_end/panels/elements/ComputedStyleWidget.ts +16 -5
  155. package/front_end/panels/elements/ElementsPanel.ts +75 -0
  156. package/front_end/panels/elements/ElementsSidebarPane.ts +1 -3
  157. package/front_end/panels/elements/ElementsTreeElement.ts +459 -451
  158. package/front_end/panels/elements/ElementsTreeOutline.ts +48 -15
  159. package/front_end/panels/elements/ShortcutTreeElement.ts +2 -2
  160. package/front_end/panels/elements/StyleEditorWidget.ts +2 -2
  161. package/front_end/panels/elements/StylePropertyTreeElement.ts +21 -20
  162. package/front_end/panels/elements/StylesSidebarPane.ts +5 -6
  163. package/front_end/panels/elements/TopLayerContainer.ts +2 -2
  164. package/front_end/panels/elements/components/ElementsBreadcrumbs.ts +1 -1
  165. package/front_end/panels/elements/components/ElementsTreeExpandButton.ts +1 -1
  166. package/front_end/panels/elements/components/QueryContainer.ts +1 -1
  167. package/front_end/panels/elements/components/StylePropertyEditor.ts +1 -1
  168. package/front_end/panels/emulation/DeviceModeWrapper.ts +48 -3
  169. package/front_end/panels/emulation/MediaQueryInspector.ts +171 -125
  170. package/front_end/panels/explain/components/ConsoleInsight.ts +181 -154
  171. package/front_end/panels/explain/components/consoleInsight.css +348 -347
  172. package/front_end/panels/issues/AffectedPermissionElementsView.ts +46 -0
  173. package/front_end/panels/issues/AffectedResourcesView.ts +2 -2
  174. package/front_end/panels/issues/AttributionReportingIssueDetailsView.ts +2 -2
  175. package/front_end/panels/issues/IssueKindView.ts +2 -2
  176. package/front_end/panels/issues/IssueView.ts +6 -4
  177. package/front_end/panels/issues/IssuesPane.ts +6 -0
  178. package/front_end/panels/js_timeline/js_timeline-meta.ts +4 -2
  179. package/front_end/panels/layer_viewer/LayerDetailsView.ts +165 -149
  180. package/front_end/panels/layer_viewer/Layers3DView.ts +131 -78
  181. package/front_end/panels/lighthouse/LighthouseStatusView.ts +149 -100
  182. package/front_end/panels/linear_memory_inspector/components/LinearMemoryHighlightChipList.ts +91 -65
  183. package/front_end/panels/linear_memory_inspector/components/LinearMemoryInspector.ts +25 -34
  184. package/front_end/panels/linear_memory_inspector/components/LinearMemoryNavigator.ts +1 -1
  185. package/front_end/panels/linear_memory_inspector/components/LinearMemoryValueInterpreter.ts +61 -45
  186. package/front_end/panels/linear_memory_inspector/components/ValueInterpreterDisplay.ts +171 -152
  187. package/front_end/panels/linear_memory_inspector/components/ValueInterpreterSettings.ts +50 -51
  188. package/front_end/panels/linear_memory_inspector/components/valueInterpreterDisplay.css +0 -13
  189. package/front_end/panels/linear_memory_inspector/components/valueInterpreterSettings.css +20 -18
  190. package/front_end/panels/media/PlayerListView.ts +1 -1
  191. package/front_end/panels/mobile_throttling/CalibrationController.ts +3 -1
  192. package/front_end/panels/mobile_throttling/ThrottlingManager.ts +2 -2
  193. package/front_end/panels/mobile_throttling/ThrottlingSettingsTab.ts +2 -3
  194. package/front_end/panels/network/NetworkDataGridNode.ts +17 -9
  195. package/front_end/panels/network/NetworkFrameGrouper.ts +2 -2
  196. package/front_end/panels/network/NetworkItemView.ts +46 -7
  197. package/front_end/panels/network/NetworkLogView.ts +10 -11
  198. package/front_end/panels/network/NetworkLogViewColumns.ts +3 -3
  199. package/front_end/panels/network/NetworkPanel.ts +63 -1
  200. package/front_end/panels/network/RequestCookiesView.ts +2 -2
  201. package/front_end/panels/network/RequestInitiatorView.ts +146 -113
  202. package/front_end/panels/network/SignedExchangeInfoView.ts +2 -2
  203. package/front_end/panels/network/components/RequestHeaderSection.css +51 -50
  204. package/front_end/panels/network/components/RequestHeaderSection.ts +81 -71
  205. package/front_end/panels/network/components/RequestHeadersView.css +1 -1
  206. package/front_end/panels/network/components/RequestHeadersView.ts +26 -11
  207. package/front_end/panels/network/components/RequestTrustTokensView.css +24 -14
  208. package/front_end/panels/network/components/RequestTrustTokensView.ts +145 -142
  209. package/front_end/panels/profiler/HeapSnapshotGridNodes.ts +3 -3
  210. package/front_end/panels/profiler/IsolateSelector.ts +2 -1
  211. package/front_end/panels/profiler/ProfileDataGrid.ts +2 -2
  212. package/front_end/panels/profiler/ProfilesPanel.ts +2 -2
  213. package/front_end/panels/protocol_monitor/JSONEditor.ts +1 -1
  214. package/front_end/panels/protocol_monitor/ProtocolMonitor.ts +49 -33
  215. package/front_end/panels/recorder/RecorderController.ts +2 -3
  216. package/front_end/panels/recorder/components/ControlButton.ts +68 -34
  217. package/front_end/panels/recorder/components/CreateRecordingView.ts +10 -7
  218. package/front_end/panels/recorder/components/ExtensionView.ts +1 -1
  219. package/front_end/panels/recorder/components/RecordingListView.ts +1 -1
  220. package/front_end/panels/recorder/components/RecordingView.ts +82 -89
  221. package/front_end/panels/recorder/components/ReplaySection.ts +226 -145
  222. package/front_end/panels/recorder/{controllers → components}/SelectorPicker.ts +129 -52
  223. package/front_end/panels/recorder/components/StepEditor.ts +21 -67
  224. package/front_end/panels/recorder/components/StepView.ts +223 -181
  225. package/front_end/panels/recorder/components/TimelineSection.ts +69 -48
  226. package/front_end/panels/recorder/components/components.ts +2 -2
  227. package/front_end/panels/recorder/components/selectorPicker.css +14 -0
  228. package/front_end/panels/recorder/components/stepEditor.css +0 -5
  229. package/front_end/panels/recorder/components/stepView.css +196 -198
  230. package/front_end/panels/recorder/extensions/ExtensionManager.ts +4 -48
  231. package/front_end/panels/recorder/models/ScreenshotUtils.ts +17 -11
  232. package/front_end/panels/screencast/ScreencastView.ts +8 -8
  233. package/front_end/panels/search/SearchView.ts +1 -1
  234. package/front_end/panels/security/CookieControlsTreeElement.ts +2 -2
  235. package/front_end/panels/security/CookieControlsView.ts +9 -16
  236. package/front_end/panels/security/CookieReportTreeElement.ts +2 -2
  237. package/front_end/panels/security/SecurityPanel.ts +5 -5
  238. package/front_end/panels/security/SecurityPanelSidebar.ts +3 -4
  239. package/front_end/panels/settings/KeybindsSettingsTab.ts +4 -4
  240. package/front_end/panels/settings/SettingsScreen.ts +2 -3
  241. package/front_end/panels/settings/components/SyncSection.ts +0 -1
  242. package/front_end/panels/snippets/SnippetsQuickOpen.ts +16 -8
  243. package/front_end/panels/sources/BreakpointEditDialog.ts +3 -3
  244. package/front_end/panels/sources/BreakpointsView.ts +1 -1
  245. package/front_end/panels/sources/CSSPlugin.ts +6 -6
  246. package/front_end/panels/sources/CallStackSidebarPane.ts +63 -78
  247. package/front_end/panels/sources/DebuggerPausedMessage.ts +3 -3
  248. package/front_end/panels/sources/FilteredUISourceCodeListProvider.ts +39 -30
  249. package/front_end/panels/sources/GoToLineQuickOpen.ts +11 -7
  250. package/front_end/panels/sources/NavigatorView.ts +2 -2
  251. package/front_end/panels/sources/OpenFileQuickOpen.ts +11 -15
  252. package/front_end/panels/sources/OutlineQuickOpen.ts +23 -26
  253. package/front_end/panels/sources/SourcesPanel.ts +1 -11
  254. package/front_end/panels/sources/SourcesView.ts +2 -2
  255. package/front_end/panels/sources/TabbedEditorContainer.ts +13 -11
  256. package/front_end/panels/sources/ThreadsSidebarPane.ts +96 -101
  257. package/front_end/panels/sources/UISourceCodeFrame.ts +5 -5
  258. package/front_end/panels/sources/threadsSidebarPane.css +6 -5
  259. package/front_end/panels/timeline/InteractionsTrackAppender.ts +2 -3
  260. package/front_end/panels/timeline/TimelineFlameChartDataProvider.ts +23 -33
  261. package/front_end/panels/timeline/TimelineFlameChartNetworkDataProvider.ts +4 -3
  262. package/front_end/panels/timeline/TimelineFlameChartView.ts +12 -0
  263. package/front_end/panels/timeline/TimelineHistoryManager.ts +2 -2
  264. package/front_end/panels/timeline/TimelinePanel.ts +17 -14
  265. package/front_end/panels/timeline/components/CPUThrottlingSelector.ts +1 -1
  266. package/front_end/panels/timeline/components/IgnoreListSetting.ts +164 -142
  267. package/front_end/panels/timeline/components/InteractionBreakdown.ts +48 -28
  268. package/front_end/panels/timeline/components/LayoutShiftDetails.ts +18 -23
  269. package/front_end/panels/timeline/components/LiveMetricsView.ts +1 -1
  270. package/front_end/panels/timeline/components/NetworkRequestTooltip.ts +99 -74
  271. package/front_end/panels/timeline/components/NetworkThrottlingSelector.ts +1 -1
  272. package/front_end/panels/timeline/components/OriginMap.ts +1 -1
  273. package/front_end/panels/timeline/components/SidebarInsightsTab.ts +9 -12
  274. package/front_end/panels/timeline/components/SidebarSingleInsightSet.ts +262 -291
  275. package/front_end/panels/timeline/components/Utils.ts +25 -0
  276. package/front_end/panels/timeline/components/insights/BaseInsightComponent.ts +210 -146
  277. package/front_end/panels/timeline/components/insights/CLSCulprits.ts +8 -20
  278. package/front_end/panels/timeline/components/insights/Cache.ts +0 -9
  279. package/front_end/panels/timeline/components/insights/Checklist.ts +1 -1
  280. package/front_end/panels/timeline/components/insights/DOMSize.ts +12 -34
  281. package/front_end/panels/timeline/components/insights/DocumentLatency.ts +0 -9
  282. package/front_end/panels/timeline/components/insights/DuplicatedJavaScript.ts +0 -9
  283. package/front_end/panels/timeline/components/insights/EventRef.ts +47 -109
  284. package/front_end/panels/timeline/components/insights/FontDisplay.ts +0 -9
  285. package/front_end/panels/timeline/components/insights/ForcedReflow.ts +0 -9
  286. package/front_end/panels/timeline/components/insights/INPBreakdown.ts +0 -9
  287. package/front_end/panels/timeline/components/insights/ImageDelivery.ts +2 -11
  288. package/front_end/panels/timeline/components/insights/ImageRef.ts +112 -0
  289. package/front_end/panels/timeline/components/insights/InsightRenderer.ts +91 -0
  290. package/front_end/panels/timeline/components/insights/LCPBreakdown.ts +0 -9
  291. package/front_end/panels/timeline/components/insights/LCPDiscovery.ts +4 -11
  292. package/front_end/panels/timeline/components/insights/LegacyJavaScript.ts +0 -9
  293. package/front_end/panels/timeline/components/insights/ModernHTTP.ts +0 -9
  294. package/front_end/panels/timeline/components/insights/NetworkDependencyTree.ts +7 -22
  295. package/front_end/panels/timeline/components/insights/NodeLink.ts +68 -43
  296. package/front_end/panels/timeline/components/insights/README.md +2 -3
  297. package/front_end/panels/timeline/components/insights/RenderBlocking.ts +0 -9
  298. package/front_end/panels/timeline/components/insights/SlowCSSSelector.ts +0 -9
  299. package/front_end/panels/timeline/components/insights/ThirdParties.ts +0 -9
  300. package/front_end/panels/timeline/components/insights/Viewport.ts +7 -19
  301. package/front_end/panels/timeline/components/insights/baseInsightComponent.css +5 -0
  302. package/front_end/panels/timeline/components/insights/insights.ts +2 -0
  303. package/front_end/panels/timeline/components/interactionBreakdown.css +15 -13
  304. package/front_end/panels/timeline/enable-easter-egg.js +7 -3
  305. package/front_end/panels/timeline/overlays/components/EntriesLinkOverlay.ts +1 -1
  306. package/front_end/panels/timeline/overlays/components/EntryLabelOverlay.ts +1 -1
  307. package/front_end/panels/timeline/timeline-meta.ts +3 -2
  308. package/front_end/panels/utils/utils.ts +1 -0
  309. package/front_end/third_party/chromium/README.chromium +1 -1
  310. package/front_end/third_party/puppeteer/README.chromium +2 -2
  311. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/BluetoothEmulation.d.ts +96 -0
  312. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/BluetoothEmulation.d.ts.map +1 -0
  313. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/BluetoothEmulation.js +8 -0
  314. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/BluetoothEmulation.js.map +1 -0
  315. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Browser.d.ts +87 -0
  316. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Browser.d.ts.map +1 -1
  317. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Browser.js.map +1 -1
  318. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/DeviceRequestPrompt.d.ts +2 -6
  319. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/DeviceRequestPrompt.d.ts.map +1 -1
  320. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/DeviceRequestPrompt.js +5 -24
  321. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/DeviceRequestPrompt.js.map +1 -1
  322. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Page.d.ts +5 -0
  323. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Page.d.ts.map +1 -1
  324. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Page.js.map +1 -1
  325. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/api.d.ts +1 -0
  326. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/api.d.ts.map +1 -1
  327. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/api.js.map +1 -1
  328. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/BluetoothEmulation.d.ts +18 -0
  329. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/BluetoothEmulation.d.ts.map +1 -0
  330. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/BluetoothEmulation.js +42 -0
  331. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/BluetoothEmulation.js.map +1 -0
  332. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Browser.d.ts +4 -1
  333. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Browser.d.ts.map +1 -1
  334. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Browser.js +10 -0
  335. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Browser.js.map +1 -1
  336. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/DeviceRequestPrompt.d.ts +27 -0
  337. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/DeviceRequestPrompt.d.ts.map +1 -0
  338. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/DeviceRequestPrompt.js +90 -0
  339. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/DeviceRequestPrompt.js.map +1 -0
  340. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Frame.d.ts +3 -1
  341. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Frame.d.ts.map +1 -1
  342. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Frame.js +3 -2
  343. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Frame.js.map +1 -1
  344. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Page.d.ts +4 -1
  345. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Page.d.ts.map +1 -1
  346. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Page.js +5 -2
  347. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Page.js.map +1 -1
  348. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/core/BrowsingContext.d.ts +4 -0
  349. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/core/BrowsingContext.d.ts.map +1 -1
  350. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/core/BrowsingContext.js +14 -2
  351. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/core/BrowsingContext.js.map +1 -1
  352. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/util.d.ts.map +1 -1
  353. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/util.js +7 -0
  354. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/util.js.map +1 -1
  355. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Accessibility.js +1 -1
  356. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Accessibility.js.map +1 -1
  357. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/BluetoothEmulation.d.ts +18 -0
  358. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/BluetoothEmulation.d.ts.map +1 -0
  359. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/BluetoothEmulation.js +30 -0
  360. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/BluetoothEmulation.js.map +1 -0
  361. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Browser.d.ts +5 -2
  362. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Browser.d.ts.map +1 -1
  363. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Browser.js +22 -3
  364. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Browser.js.map +1 -1
  365. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/CdpSession.d.ts +1 -1
  366. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/CdpSession.d.ts.map +1 -1
  367. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/DeviceRequestPrompt.d.ts +2 -3
  368. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/DeviceRequestPrompt.d.ts.map +1 -1
  369. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/DeviceRequestPrompt.js +4 -6
  370. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/DeviceRequestPrompt.js.map +1 -1
  371. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/FrameManager.d.ts +2 -2
  372. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/FrameManager.d.ts.map +1 -1
  373. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/FrameManager.js +1 -1
  374. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/FrameManager.js.map +1 -1
  375. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Page.d.ts +2 -0
  376. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Page.d.ts.map +1 -1
  377. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Page.js +8 -0
  378. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Page.js.map +1 -1
  379. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/WebWorker.d.ts.map +1 -1
  380. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/WebWorker.js +8 -3
  381. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/WebWorker.js.map +1 -1
  382. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/cdp.d.ts +1 -0
  383. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/cdp.d.ts.map +1 -1
  384. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/cdp.js +1 -0
  385. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/cdp.js.map +1 -1
  386. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/BrowserConnector.js +30 -0
  387. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/BrowserConnector.js.map +1 -1
  388. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/ConnectOptions.d.ts +15 -0
  389. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/ConnectOptions.d.ts.map +1 -1
  390. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/injected/injected.d.ts +1 -1
  391. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/ChromeLauncher.d.ts +1 -1
  392. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/ChromeLauncher.d.ts.map +1 -1
  393. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/ChromeLauncher.js +2 -13
  394. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/ChromeLauncher.js.map +1 -1
  395. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/LaunchOptions.d.ts +5 -3
  396. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/LaunchOptions.d.ts.map +1 -1
  397. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/LaunchOptions.js +17 -0
  398. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/LaunchOptions.js.map +1 -1
  399. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/revisions.d.ts +3 -3
  400. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/revisions.js +3 -3
  401. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/revisions.js.map +1 -1
  402. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/util/Mutex.d.ts +2 -2
  403. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/util/version.d.ts +1 -1
  404. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/util/version.js +1 -1
  405. package/front_end/third_party/puppeteer/package/lib/es5-iife/puppeteer-core-browser.d.ts +221 -4
  406. package/front_end/third_party/puppeteer/package/lib/es5-iife/puppeteer-core-browser.js +182 -95
  407. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/BluetoothEmulation.d.ts +96 -0
  408. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/BluetoothEmulation.d.ts.map +1 -0
  409. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/BluetoothEmulation.js +7 -0
  410. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/BluetoothEmulation.js.map +1 -0
  411. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Browser.d.ts +87 -0
  412. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Browser.d.ts.map +1 -1
  413. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Browser.js.map +1 -1
  414. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/DeviceRequestPrompt.d.ts +2 -6
  415. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/DeviceRequestPrompt.d.ts.map +1 -1
  416. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/DeviceRequestPrompt.js +4 -22
  417. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/DeviceRequestPrompt.js.map +1 -1
  418. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Page.d.ts +5 -0
  419. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Page.d.ts.map +1 -1
  420. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Page.js.map +1 -1
  421. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/api.d.ts +1 -0
  422. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/api.d.ts.map +1 -1
  423. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/api.js.map +1 -1
  424. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/BluetoothEmulation.d.ts +18 -0
  425. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/BluetoothEmulation.d.ts.map +1 -0
  426. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/BluetoothEmulation.js +38 -0
  427. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/BluetoothEmulation.js.map +1 -0
  428. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Browser.d.ts +4 -1
  429. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Browser.d.ts.map +1 -1
  430. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Browser.js +10 -0
  431. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Browser.js.map +1 -1
  432. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/DeviceRequestPrompt.d.ts +27 -0
  433. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/DeviceRequestPrompt.d.ts.map +1 -0
  434. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/DeviceRequestPrompt.js +85 -0
  435. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/DeviceRequestPrompt.js.map +1 -0
  436. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Frame.d.ts +3 -1
  437. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Frame.d.ts.map +1 -1
  438. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Frame.js +3 -2
  439. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Frame.js.map +1 -1
  440. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Page.d.ts +4 -1
  441. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Page.d.ts.map +1 -1
  442. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Page.js +5 -2
  443. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Page.js.map +1 -1
  444. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/core/BrowsingContext.d.ts +4 -0
  445. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/core/BrowsingContext.d.ts.map +1 -1
  446. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/core/BrowsingContext.js +14 -2
  447. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/core/BrowsingContext.js.map +1 -1
  448. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/util.d.ts.map +1 -1
  449. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/util.js +7 -0
  450. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/util.js.map +1 -1
  451. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Accessibility.js +1 -1
  452. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Accessibility.js.map +1 -1
  453. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/BluetoothEmulation.d.ts +18 -0
  454. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/BluetoothEmulation.d.ts.map +1 -0
  455. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/BluetoothEmulation.js +26 -0
  456. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/BluetoothEmulation.js.map +1 -0
  457. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Browser.d.ts +5 -2
  458. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Browser.d.ts.map +1 -1
  459. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Browser.js +22 -3
  460. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Browser.js.map +1 -1
  461. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/CdpSession.d.ts +1 -1
  462. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/CdpSession.d.ts.map +1 -1
  463. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/DeviceRequestPrompt.d.ts +2 -3
  464. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/DeviceRequestPrompt.d.ts.map +1 -1
  465. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/DeviceRequestPrompt.js +2 -4
  466. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/DeviceRequestPrompt.js.map +1 -1
  467. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/FrameManager.d.ts +2 -2
  468. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/FrameManager.d.ts.map +1 -1
  469. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/FrameManager.js +2 -2
  470. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/FrameManager.js.map +1 -1
  471. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Page.d.ts +2 -0
  472. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Page.d.ts.map +1 -1
  473. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Page.js +8 -0
  474. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Page.js.map +1 -1
  475. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/WebWorker.d.ts.map +1 -1
  476. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/WebWorker.js +8 -3
  477. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/WebWorker.js.map +1 -1
  478. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/cdp.d.ts +1 -0
  479. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/cdp.d.ts.map +1 -1
  480. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/cdp.js +1 -0
  481. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/cdp.js.map +1 -1
  482. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/BrowserConnector.js +31 -1
  483. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/BrowserConnector.js.map +1 -1
  484. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/ConnectOptions.d.ts +15 -0
  485. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/ConnectOptions.d.ts.map +1 -1
  486. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/ChromeLauncher.d.ts +1 -1
  487. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/ChromeLauncher.d.ts.map +1 -1
  488. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/ChromeLauncher.js +2 -13
  489. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/ChromeLauncher.js.map +1 -1
  490. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/LaunchOptions.d.ts +5 -3
  491. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/LaunchOptions.d.ts.map +1 -1
  492. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/LaunchOptions.js +16 -1
  493. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/LaunchOptions.js.map +1 -1
  494. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/revisions.d.ts +3 -3
  495. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/revisions.js +3 -3
  496. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/revisions.js.map +1 -1
  497. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/util/version.d.ts +1 -1
  498. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/util/version.js +1 -1
  499. package/front_end/third_party/puppeteer/package/lib/types.d.ts +221 -4
  500. package/front_end/third_party/puppeteer/package/package.json +4 -4
  501. package/front_end/third_party/puppeteer/package/src/api/BluetoothEmulation.ts +103 -0
  502. package/front_end/third_party/puppeteer/package/src/api/Browser.ts +96 -1
  503. package/front_end/third_party/puppeteer/package/src/api/DeviceRequestPrompt.ts +2 -10
  504. package/front_end/third_party/puppeteer/package/src/api/Page.ts +6 -0
  505. package/front_end/third_party/puppeteer/package/src/api/api.ts +1 -0
  506. package/front_end/third_party/puppeteer/package/src/bidi/BluetoothEmulation.ts +52 -0
  507. package/front_end/third_party/puppeteer/package/src/bidi/Browser.ts +15 -0
  508. package/front_end/third_party/puppeteer/package/src/bidi/DeviceRequestPrompt.ts +138 -0
  509. package/front_end/third_party/puppeteer/package/src/bidi/Frame.ts +7 -3
  510. package/front_end/third_party/puppeteer/package/src/bidi/Page.ts +10 -2
  511. package/front_end/third_party/puppeteer/package/src/bidi/core/BrowsingContext.ts +30 -2
  512. package/front_end/third_party/puppeteer/package/src/bidi/util.ts +8 -0
  513. package/front_end/third_party/puppeteer/package/src/cdp/Accessibility.ts +1 -1
  514. package/front_end/third_party/puppeteer/package/src/cdp/BluetoothEmulation.ts +47 -0
  515. package/front_end/third_party/puppeteer/package/src/cdp/Browser.ts +33 -3
  516. package/front_end/third_party/puppeteer/package/src/cdp/CdpSession.ts +1 -1
  517. package/front_end/third_party/puppeteer/package/src/cdp/DeviceRequestPrompt.ts +3 -8
  518. package/front_end/third_party/puppeteer/package/src/cdp/Frame.ts +2 -2
  519. package/front_end/third_party/puppeteer/package/src/cdp/FrameManager.ts +9 -4
  520. package/front_end/third_party/puppeteer/package/src/cdp/Page.ts +13 -0
  521. package/front_end/third_party/puppeteer/package/src/cdp/WebWorker.ts +8 -3
  522. package/front_end/third_party/puppeteer/package/src/cdp/cdp.ts +1 -0
  523. package/front_end/third_party/puppeteer/package/src/common/BrowserConnector.ts +45 -1
  524. package/front_end/third_party/puppeteer/package/src/common/ConnectOptions.ts +20 -0
  525. package/front_end/third_party/puppeteer/package/src/node/ChromeLauncher.ts +5 -17
  526. package/front_end/third_party/puppeteer/package/src/node/LaunchOptions.ts +23 -7
  527. package/front_end/third_party/puppeteer/package/src/revisions.ts +3 -3
  528. package/front_end/third_party/puppeteer/package/src/util/version.ts +1 -1
  529. package/front_end/third_party/puppeteer/puppeteer-tsconfig.json +4 -0
  530. package/front_end/ui/components/adorners/Adorner.ts +20 -0
  531. package/front_end/ui/components/annotations/AnnotationRepository.ts +154 -14
  532. package/front_end/ui/components/buttons/Button.ts +1 -1
  533. package/front_end/ui/components/buttons/FloatingButton.ts +1 -1
  534. package/front_end/ui/components/highlighting/HighlightElement.ts +15 -2
  535. package/front_end/ui/components/icon_button/FileSourceIcon.ts +1 -1
  536. package/front_end/ui/components/icon_button/IconButton.ts +1 -1
  537. package/front_end/ui/components/icon_button/icon_button.ts +0 -2
  538. package/front_end/ui/components/issue_counter/IssueCounter.ts +1 -1
  539. package/front_end/ui/components/issue_counter/IssueLinkIcon.ts +1 -1
  540. package/front_end/ui/components/markdown_view/MarkdownImage.ts +3 -3
  541. package/front_end/ui/components/request_link_icon/RequestLinkIcon.ts +1 -1
  542. package/front_end/ui/components/settings/SettingDeprecationWarning.ts +1 -1
  543. package/front_end/ui/components/snackbars/Snackbars.docs.ts +0 -1
  544. package/front_end/ui/components/survey_link/SurveyLink.ts +1 -1
  545. package/front_end/ui/components/text_editor/AiCodeCompletionTeaserPlaceholder.ts +12 -3
  546. package/front_end/ui/components/text_editor/AiCodeGenerationProvider.ts +182 -0
  547. package/front_end/ui/components/text_editor/config.ts +2 -2
  548. package/front_end/ui/components/text_editor/text_editor.ts +1 -0
  549. package/front_end/ui/helpers/OpenInNewTab.ts +5 -1
  550. package/front_end/ui/i18n/i18n.ts +9 -9
  551. package/front_end/ui/kit/cards/Card.docs.ts +43 -0
  552. package/front_end/ui/kit/icons/Icon.docs.ts +34 -0
  553. package/front_end/ui/{components/icon_button → kit/icons}/Icon.ts +4 -4
  554. package/front_end/ui/kit/kit.ts +2 -0
  555. package/front_end/ui/kit/link/Link.docs.ts +15 -0
  556. package/front_end/ui/kit/link/Link.ts +151 -0
  557. package/front_end/ui/kit/link/link.css +27 -0
  558. package/front_end/ui/legacy/EmptyWidget.ts +6 -0
  559. package/front_end/ui/legacy/Floaty.ts +442 -0
  560. package/front_end/ui/legacy/Infobar.ts +3 -3
  561. package/front_end/ui/legacy/InspectorView.ts +15 -3
  562. package/front_end/ui/legacy/ReportView.ts +1 -1
  563. package/front_end/ui/legacy/SearchableView.ts +2 -2
  564. package/front_end/ui/legacy/SelectMenu.docs.ts +0 -1
  565. package/front_end/ui/legacy/SoftContextMenu.ts +5 -5
  566. package/front_end/ui/legacy/SoftDropDown.ts +2 -2
  567. package/front_end/ui/legacy/TabbedPane.ts +139 -61
  568. package/front_end/ui/legacy/Toolbar.ts +3 -3
  569. package/front_end/ui/legacy/Treeoutline.ts +2 -2
  570. package/front_end/ui/legacy/UIUtils.ts +4 -4
  571. package/front_end/ui/legacy/ViewManager.ts +4 -4
  572. package/front_end/ui/legacy/components/color_picker/ContrastDetails.ts +8 -8
  573. package/front_end/ui/legacy/components/color_picker/Spectrum.ts +4 -4
  574. package/front_end/ui/legacy/components/cookie_table/CookiesTable.ts +5 -5
  575. package/front_end/ui/legacy/components/inline_editor/ColorSwatch.ts +36 -36
  576. package/front_end/ui/legacy/components/inline_editor/FontEditor.ts +2 -2
  577. package/front_end/ui/legacy/components/inline_editor/Swatches.ts +5 -5
  578. package/front_end/ui/legacy/components/object_ui/CustomPreviewComponent.ts +3 -3
  579. package/front_end/ui/legacy/components/object_ui/JavaScriptREPL.ts +22 -37
  580. package/front_end/ui/legacy/components/object_ui/RemoteObjectPreviewFormatter.ts +31 -1
  581. package/front_end/ui/legacy/components/perf_ui/FlameChart.ts +2 -2
  582. package/front_end/ui/legacy/components/perf_ui/OverviewGrid.ts +3 -3
  583. package/front_end/ui/legacy/components/quick_open/CommandMenu.ts +22 -29
  584. package/front_end/ui/legacy/components/quick_open/FilteredListWidget.ts +8 -15
  585. package/front_end/ui/legacy/components/quick_open/HelpQuickOpen.ts +11 -14
  586. package/front_end/ui/legacy/components/utils/Linkifier.ts +7 -11
  587. package/front_end/ui/legacy/floaty.css +77 -0
  588. package/front_end/ui/legacy/legacy.ts +2 -0
  589. package/front_end/ui/visual_logging/KnownContextValues.ts +6 -0
  590. package/inspector_overlay/loadCSS.rollup.js +5 -4
  591. package/mcp/mcp.ts +1 -0
  592. package/package.json +2 -2
  593. package/front_end/panels/application/preloading/components/PreloadingMismatchedHeadersGrid.ts +0 -99
  594. package/front_end/panels/recorder/components/SelectButton.ts +0 -304
  595. package/front_end/panels/recorder/controllers/controllers.ts +0 -7
  596. package/front_end/ui/components/chrome_link/ChromeLink.ts +0 -76
  597. package/front_end/ui/components/chrome_link/chromeLink.css +0 -12
  598. package/front_end/ui/components/chrome_link/chrome_link.ts +0 -9
  599. package/front_end/ui/components/icon_button/Icon.docs.ts +0 -78
  600. /package/front_end/panels/recorder/components/{selectButton.css → replaySection.css} +0 -0
  601. /package/front_end/ui/{components/icon_button → kit/icons}/icon.css +0 -0
@@ -2,7 +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
 
5
- /* eslint-disable @devtools/no-imperative-dom-api */
5
+ /* eslint-disable @devtools/no-imperative-dom-api, @devtools/no-lit-render-outside-of-view */
6
6
 
7
7
  import './Toolbar.js';
8
8
 
@@ -12,8 +12,9 @@ import * as Platform from '../../core/platform/platform.js';
12
12
  import * as Geometry from '../../models/geometry/geometry.js';
13
13
  import * as Annotations from '../../ui/components/annotations/annotations.js';
14
14
  import * as Buttons from '../../ui/components/buttons/buttons.js';
15
+ import {type LitTemplate, render} from '../../ui/lit/lit.js';
15
16
  import * as VisualLogging from '../../ui/visual_logging/visual_logging.js';
16
- import * as IconButton from '../components/icon_button/icon_button.js';
17
+ import {createIcon, Icon} from '../kit/kit.js';
17
18
 
18
19
  import * as ARIAUtils from './ARIAUtils.js';
19
20
  import {ContextMenu} from './ContextMenu.js';
@@ -67,15 +68,30 @@ const UIStrings = {
67
68
  */
68
69
  moveTabLeft: 'Move left',
69
70
  } as const;
71
+
70
72
  const str_ = i18n.i18n.registerUIStrings('ui/legacy/TabbedPane.ts', UIStrings);
71
73
  const i18nString = i18n.i18n.getLocalizedString.bind(undefined, str_);
74
+
75
+ export interface TabInfo {
76
+ id: string;
77
+ title: string;
78
+ view: Widget;
79
+ tabTooltip?: string;
80
+ isCloseable?: boolean;
81
+ previewFeature?: boolean;
82
+ index?: number;
83
+ jslogContext?: string;
84
+ enabled?: boolean;
85
+ selected?: boolean;
86
+ }
87
+
72
88
  export class TabbedPane extends Common.ObjectWrapper.eventMixin<EventTypes, typeof VBox>(VBox) {
73
89
  readonly #headerElement: HTMLElement;
74
90
  private readonly headerContentsElement: HTMLElement;
75
91
  tabSlider: HTMLDivElement;
76
92
  readonly tabsElement: HTMLElement;
77
93
  readonly #contentElement: HTMLElement;
78
- private tabs: TabbedPaneTab[];
94
+ #tabs: TabbedPaneTab[];
79
95
  private readonly tabsHistory: TabbedPaneTab[];
80
96
  tabsById: Map<string, TabbedPaneTab>;
81
97
  private currentTabLocked: boolean;
@@ -115,7 +131,7 @@ export class TabbedPane extends Common.ObjectWrapper.eventMixin<EventTypes, type
115
131
  this.tabsElement.addEventListener('keydown', this.keyDown.bind(this), false);
116
132
  this.#contentElement = this.contentElement.createChild('div', 'tabbed-pane-content');
117
133
  this.#contentElement.createChild('slot');
118
- this.tabs = [];
134
+ this.#tabs = [];
119
135
  this.tabsHistory = [];
120
136
  this.tabsById = new Map();
121
137
  this.currentTabLocked = false;
@@ -129,7 +145,11 @@ export class TabbedPane extends Common.ObjectWrapper.eventMixin<EventTypes, type
129
145
 
130
146
  if (Annotations.AnnotationRepository.annotationsEnabled()) {
131
147
  Annotations.AnnotationRepository.instance().addEventListener(
132
- Annotations.Events.ANNOTATION_ADDED, this.#onAnnotationAdded, this);
148
+ Annotations.Events.ANNOTATION_ADDED, this.#onUpdateAnnotations, this);
149
+ Annotations.AnnotationRepository.instance().addEventListener(
150
+ Annotations.Events.ANNOTATION_DELETED, this.#onUpdateAnnotations, this);
151
+ Annotations.AnnotationRepository.instance().addEventListener(
152
+ Annotations.Events.ALL_ANNOTATIONS_DELETED, this.#onUpdateAnnotations, this);
133
153
  }
134
154
  }
135
155
 
@@ -151,15 +171,15 @@ export class TabbedPane extends Common.ObjectWrapper.eventMixin<EventTypes, type
151
171
  }
152
172
 
153
173
  tabIds(): string[] {
154
- return this.tabs.map(tab => tab.id);
174
+ return this.#tabs.map(tab => tab.id);
155
175
  }
156
176
 
157
177
  tabIndex(tabId: string): number {
158
- return this.tabs.findIndex(tab => tab.id === tabId);
178
+ return this.#tabs.findIndex(tab => tab.id === tabId);
159
179
  }
160
180
 
161
181
  tabViews(): Widget[] {
162
- return this.tabs.map(tab => tab.view);
182
+ return this.#tabs.map(tab => tab.view);
163
183
  }
164
184
 
165
185
  tabView(tabId: string): Widget|null {
@@ -210,7 +230,7 @@ export class TabbedPane extends Common.ObjectWrapper.eventMixin<EventTypes, type
210
230
  }
211
231
 
212
232
  setTabDelegate(delegate: TabbedPaneTabDelegate): void {
213
- const tabs = this.tabs.slice();
233
+ const tabs = this.#tabs.slice();
214
234
  for (let i = 0; i < tabs.length; ++i) {
215
235
  tabs[i].setDelegate(delegate);
216
236
  }
@@ -230,9 +250,9 @@ export class TabbedPane extends Common.ObjectWrapper.eventMixin<EventTypes, type
230
250
  tab.tabElement.setAttribute(
231
251
  'jslog', `${VisualLogging.panelTabHeader().track({click: true, drag: true}).context(tab.jslogContext)}`);
232
252
  if (index !== undefined) {
233
- this.tabs.splice(index, 0, tab);
253
+ this.#tabs.splice(index, 0, tab);
234
254
  } else {
235
- this.tabs.push(tab);
255
+ this.#tabs.push(tab);
236
256
  }
237
257
  this.tabsHistory.push(tab);
238
258
  if (this.tabsHistory[0] === tab && this.isShowing()) {
@@ -278,7 +298,7 @@ export class TabbedPane extends Common.ObjectWrapper.eventMixin<EventTypes, type
278
298
  this.tabsById.delete(id);
279
299
 
280
300
  this.tabsHistory.splice(this.tabsHistory.indexOf(tab), 1);
281
- this.tabs.splice(this.tabs.indexOf(tab), 1);
301
+ this.#tabs.splice(this.#tabs.indexOf(tab), 1);
282
302
  if (tab.shown) {
283
303
  this.hideTabElement(tab);
284
304
  }
@@ -294,9 +314,9 @@ export class TabbedPane extends Common.ObjectWrapper.eventMixin<EventTypes, type
294
314
 
295
315
  otherTabs(id: string): string[] {
296
316
  const result = [];
297
- for (let i = 0; i < this.tabs.length; ++i) {
298
- if (this.tabs[i].id !== id) {
299
- result.push(this.tabs[i].id);
317
+ for (let i = 0; i < this.#tabs.length; ++i) {
318
+ if (this.#tabs[i].id !== id) {
319
+ result.push(this.#tabs[i].id);
300
320
  }
301
321
  }
302
322
  return result;
@@ -304,7 +324,7 @@ export class TabbedPane extends Common.ObjectWrapper.eventMixin<EventTypes, type
304
324
 
305
325
  tabsToTheRight(id: string): string[] {
306
326
  let index = -1;
307
- for (let i = 0; i < this.tabs.length; ++i) {
327
+ for (let i = 0; i < this.#tabs.length; ++i) {
308
328
  if (this.tabs[i].id === id) {
309
329
  index = i;
310
330
  break;
@@ -313,7 +333,7 @@ export class TabbedPane extends Common.ObjectWrapper.eventMixin<EventTypes, type
313
333
  if (index === -1) {
314
334
  return [];
315
335
  }
316
- return this.tabs.slice(index + 1).map(function(tab) {
336
+ return this.#tabs.slice(index + 1).map(function(tab) {
317
337
  return tab.id;
318
338
  });
319
339
  }
@@ -368,19 +388,19 @@ export class TabbedPane extends Common.ObjectWrapper.eventMixin<EventTypes, type
368
388
  }
369
389
 
370
390
  selectNextTab(): void {
371
- const index = this.tabs.indexOf((this.currentTab as TabbedPaneTab));
372
- const nextIndex = Platform.NumberUtilities.mod(index + 1, this.tabs.length);
373
- this.selectTab(this.tabs[nextIndex].id, true);
391
+ const index = this.#tabs.indexOf((this.currentTab as TabbedPaneTab));
392
+ const nextIndex = Platform.NumberUtilities.mod(index + 1, this.#tabs.length);
393
+ this.selectTab(this.#tabs[nextIndex].id, true);
374
394
  }
375
395
 
376
396
  selectPrevTab(): void {
377
- const index = this.tabs.indexOf((this.currentTab as TabbedPaneTab));
378
- const nextIndex = Platform.NumberUtilities.mod(index - 1, this.tabs.length);
379
- this.selectTab(this.tabs[nextIndex].id, true);
397
+ const index = this.#tabs.indexOf((this.currentTab as TabbedPaneTab));
398
+ const nextIndex = Platform.NumberUtilities.mod(index - 1, this.#tabs.length);
399
+ this.selectTab(this.#tabs[nextIndex].id, true);
380
400
  }
381
401
 
382
402
  getTabIndex(id: string): number {
383
- const index = this.tabs.indexOf((this.tabsById.get(id) as TabbedPaneTab));
403
+ const index = this.#tabs.indexOf((this.tabsById.get(id) as TabbedPaneTab));
384
404
  return index;
385
405
  }
386
406
 
@@ -402,7 +422,7 @@ export class TabbedPane extends Common.ObjectWrapper.eventMixin<EventTypes, type
402
422
  return this.tabsHistory.slice(0, tabsCount).map(tabToTabId);
403
423
  }
404
424
 
405
- setTabIcon(id: string, icon: IconButton.Icon.Icon|null): void {
425
+ setTabIcon(id: string, icon: Icon|null): void {
406
426
  const tab = this.tabsById.get(id);
407
427
  if (!tab) {
408
428
  return;
@@ -411,7 +431,7 @@ export class TabbedPane extends Common.ObjectWrapper.eventMixin<EventTypes, type
411
431
  this.requestUpdate();
412
432
  }
413
433
 
414
- setTrailingTabIcon(id: string, icon: IconButton.Icon.Icon|null): void {
434
+ setTrailingTabIcon(id: string, icon: Icon|LitTemplate|null): void {
415
435
  const tab = this.tabsById.get(id);
416
436
  if (!tab) {
417
437
  return;
@@ -419,7 +439,7 @@ export class TabbedPane extends Common.ObjectWrapper.eventMixin<EventTypes, type
419
439
  tab.setSuffixElement(icon);
420
440
  }
421
441
 
422
- setSuffixElement(id: string, suffixElement: HTMLElement|null): void {
442
+ setSuffixElement(id: string, suffixElement: HTMLElement|LitTemplate|null): void {
423
443
  const tab = this.tabsById.get(id);
424
444
  if (!tab) {
425
445
  return;
@@ -460,8 +480,8 @@ export class TabbedPane extends Common.ObjectWrapper.eventMixin<EventTypes, type
460
480
  }
461
481
 
462
482
  private clearMeasuredWidths(): void {
463
- for (let i = 0; i < this.tabs.length; ++i) {
464
- delete this.tabs[i].measuredWidth;
483
+ for (let i = 0; i < this.#tabs.length; ++i) {
484
+ delete this.#tabs[i].measuredWidth;
465
485
  }
466
486
  }
467
487
 
@@ -499,6 +519,59 @@ export class TabbedPane extends Common.ObjectWrapper.eventMixin<EventTypes, type
499
519
  this.resumeInvalidations();
500
520
  }
501
521
 
522
+ get tabs(): TabInfo[] {
523
+ return this.#tabs.map(tab => ({
524
+ id: tab.id,
525
+ title: tab.title,
526
+ view: tab.view,
527
+ tabTooltip: tab.tooltip,
528
+ isCloseable: tab.closeable,
529
+ previewFeature: tab.previewFeature,
530
+ index: this.#tabs.indexOf(tab),
531
+ jslogContext: tab.jslogContext,
532
+ enabled: this.tabIsEnabled(tab.id),
533
+ selected: this.currentTab?.id === tab.id,
534
+ }));
535
+ }
536
+
537
+ set tabs(tabs: TabInfo[]) {
538
+ const newIds = new Set(tabs.map(tab => tab.id));
539
+ for (const id of this.tabsById.keys()) {
540
+ if (!newIds.has(id)) {
541
+ this.#closeTab(id);
542
+ }
543
+ }
544
+ let index = 0;
545
+ for (const tab of tabs) {
546
+ const existingTab = this.tabsById.get(tab.id);
547
+ if (existingTab) {
548
+ this.changeTabView(tab.id, tab.view);
549
+ this.changeTabTitle(tab.id, tab.title, tab.tabTooltip);
550
+ if (tab.isCloseable !== undefined) {
551
+ existingTab.closeable = tab.isCloseable;
552
+ }
553
+ if (tab.previewFeature !== undefined) {
554
+ existingTab.previewFeature = tab.previewFeature;
555
+ }
556
+ const currentIndex = this.#tabs.indexOf(existingTab);
557
+ if (currentIndex !== index) {
558
+ this.insertBefore(existingTab, index);
559
+ }
560
+ } else {
561
+ this.appendTab(
562
+ tab.id, tab.title, tab.view, tab.tabTooltip, /* userGesture=*/ false, tab.isCloseable, tab.previewFeature,
563
+ index, tab.jslogContext);
564
+ }
565
+ if (tab.enabled !== undefined) {
566
+ this.setTabEnabled(tab.id, tab.enabled);
567
+ }
568
+ if (tab.selected) {
569
+ this.selectTab(tab.id);
570
+ }
571
+ ++index;
572
+ }
573
+ }
574
+
502
575
  override onResize(): void {
503
576
  if (this.currentDevicePixelRatio !== window.devicePixelRatio) {
504
577
  // Force recalculation of all tab widths on a DPI change
@@ -589,8 +662,8 @@ export class TabbedPane extends Common.ObjectWrapper.eventMixin<EventTypes, type
589
662
  break;
590
663
  }
591
664
 
592
- const showTabAnnotationIcon = annotations.getAnnotationsByType(primaryType).length > 0 ||
593
- annotations.getAnnotationsByType(secondaryType).length > 0;
665
+ const showTabAnnotationIcon = annotations.getAnnotationDataByType(primaryType).length > 0 ||
666
+ annotations.getAnnotationDataByType(secondaryType).length > 0;
594
667
  this.setTabAnnotationIcon(tab.id, showTabAnnotationIcon);
595
668
  }
596
669
  }
@@ -600,7 +673,7 @@ export class TabbedPane extends Common.ObjectWrapper.eventMixin<EventTypes, type
600
673
  return;
601
674
  }
602
675
 
603
- if (!this.tabs.length) {
676
+ if (!this.#tabs.length) {
604
677
  this.#contentElement.classList.add('has-no-tabs');
605
678
  if (this.placeholderElement && !this.placeholderContainerElement) {
606
679
  this.placeholderContainerElement = this.#contentElement.createChild('div', 'tabbed-pane-placeholder fill');
@@ -662,7 +735,7 @@ export class TabbedPane extends Common.ObjectWrapper.eventMixin<EventTypes, type
662
735
  const dropDownContainer = document.createElement('div');
663
736
  dropDownContainer.classList.add('tabbed-pane-header-tabs-drop-down-container');
664
737
  dropDownContainer.setAttribute('jslog', `${VisualLogging.dropDown('more-tabs').track({click: true})}`);
665
- const chevronIcon = IconButton.Icon.create('chevron-double-right', 'chevron-icon');
738
+ const chevronIcon = createIcon('chevron-double-right', 'chevron-icon');
666
739
  const moreTabsString = i18nString(UIStrings.moreTabs);
667
740
  dropDownContainer.title = moreTabsString;
668
741
  ARIAUtils.markAsMenuButton(dropDownContainer);
@@ -697,7 +770,7 @@ export class TabbedPane extends Common.ObjectWrapper.eventMixin<EventTypes, type
697
770
  ARIAUtils.setExpanded(this.dropDownButton, false);
698
771
  },
699
772
  });
700
- for (const tab of this.tabs) {
773
+ for (const tab of this.#tabs) {
701
774
  if (tab.shown) {
702
775
  continue;
703
776
  }
@@ -729,7 +802,7 @@ export class TabbedPane extends Common.ObjectWrapper.eventMixin<EventTypes, type
729
802
 
730
803
  private numberOfTabsShown(): number {
731
804
  let numTabsShown = 0;
732
- for (const tab of this.tabs) {
805
+ for (const tab of this.#tabs) {
733
806
  if (tab.shown) {
734
807
  numTabsShown++;
735
808
  }
@@ -739,26 +812,26 @@ export class TabbedPane extends Common.ObjectWrapper.eventMixin<EventTypes, type
739
812
 
740
813
  private updateTabsDropDown(): void {
741
814
  const tabsToShowIndexes =
742
- this.tabsToShowIndexes(this.tabs, this.tabsHistory, this.totalWidth(), this.measuredDropDownButtonWidth || 0);
815
+ this.tabsToShowIndexes(this.#tabs, this.tabsHistory, this.totalWidth(), this.measuredDropDownButtonWidth || 0);
743
816
  if (this.lastSelectedOverflowTab && this.numberOfTabsShown() !== tabsToShowIndexes.length) {
744
817
  delete this.lastSelectedOverflowTab;
745
818
  this.updateTabsDropDown();
746
819
  return;
747
820
  }
748
821
 
749
- for (let i = 0; i < this.tabs.length; ++i) {
750
- if (this.tabs[i].shown && tabsToShowIndexes.indexOf(i) === -1) {
751
- this.hideTabElement(this.tabs[i]);
822
+ for (let i = 0; i < this.#tabs.length; ++i) {
823
+ if (this.#tabs[i].shown && tabsToShowIndexes.indexOf(i) === -1) {
824
+ this.hideTabElement(this.#tabs[i]);
752
825
  }
753
826
  }
754
827
  for (let i = 0; i < tabsToShowIndexes.length; ++i) {
755
- const tab = this.tabs[tabsToShowIndexes[i]];
828
+ const tab = this.#tabs[tabsToShowIndexes[i]];
756
829
  if (!tab.shown) {
757
830
  this.showTabElement(i, tab);
758
831
  }
759
832
  }
760
833
 
761
- this.maybeShowDropDown(tabsToShowIndexes.length !== this.tabs.length);
834
+ this.maybeShowDropDown(tabsToShowIndexes.length !== this.#tabs.length);
762
835
  }
763
836
 
764
837
  private maybeShowDropDown(hasMoreTabs: boolean): void {
@@ -786,7 +859,7 @@ export class TabbedPane extends Common.ObjectWrapper.eventMixin<EventTypes, type
786
859
  this.shrinkableTabs ? this.calculateMaxWidth(measuredWidths.slice(), this.totalWidth()) : Number.MAX_VALUE;
787
860
 
788
861
  let i = 0;
789
- for (const tab of this.tabs) {
862
+ for (const tab of this.#tabs) {
790
863
  tab.setWidth(this.verticalTabLayout ? -1 : Math.min(maxWidth, measuredWidths[i++]));
791
864
  }
792
865
  }
@@ -795,7 +868,7 @@ export class TabbedPane extends Common.ObjectWrapper.eventMixin<EventTypes, type
795
868
  // Add all elements to measure into this.tabsElement
796
869
  this.tabsElement.style.setProperty('width', '2000px');
797
870
  const measuringTabElements = new Map<HTMLElement, TabbedPaneTab>();
798
- for (const tab of this.tabs) {
871
+ for (const tab of this.#tabs) {
799
872
  if (typeof tab.measuredWidth === 'number') {
800
873
  continue;
801
874
  }
@@ -817,7 +890,7 @@ export class TabbedPane extends Common.ObjectWrapper.eventMixin<EventTypes, type
817
890
 
818
891
  // Combine the results.
819
892
  const measuredWidths = [];
820
- for (const tab of this.tabs) {
893
+ for (const tab of this.#tabs) {
821
894
  measuredWidths.push(tab.measuredWidth || 0);
822
895
  }
823
896
  this.tabsElement.style.removeProperty('width');
@@ -917,9 +990,9 @@ export class TabbedPane extends Common.ObjectWrapper.eventMixin<EventTypes, type
917
990
  return;
918
991
  }
919
992
  let left = 0;
920
- for (let i = 0; i < this.tabs.length && this.currentTab !== this.tabs[i]; i++) {
921
- if (this.tabs[i].shown) {
922
- left += this.tabs[i].measuredWidth || 0;
993
+ for (let i = 0; i < this.#tabs.length && this.currentTab !== this.#tabs[i]; i++) {
994
+ if (this.#tabs[i].shown) {
995
+ left += this.#tabs[i].measuredWidth || 0;
923
996
  }
924
997
  }
925
998
  const sliderWidth = this.currentTab.shown ? this.currentTab.measuredWidth : this.dropDownButton.offsetWidth;
@@ -946,12 +1019,12 @@ export class TabbedPane extends Common.ObjectWrapper.eventMixin<EventTypes, type
946
1019
 
947
1020
  insertBefore(tab: TabbedPaneTab, index: number): void {
948
1021
  this.tabsElement.insertBefore(tab.tabElement, this.tabsElement.childNodes[index]);
949
- const oldIndex = this.tabs.indexOf(tab);
950
- this.tabs.splice(oldIndex, 1);
1022
+ const oldIndex = this.#tabs.indexOf(tab);
1023
+ this.#tabs.splice(oldIndex, 1);
951
1024
  if (oldIndex < index) {
952
1025
  --index;
953
1026
  }
954
- this.tabs.splice(index, 0, tab);
1027
+ this.#tabs.splice(index, 0, tab);
955
1028
 
956
1029
  const eventData: EventData = {prevTabId: undefined, tabId: tab.id, view: tab.view, isUserGesture: undefined};
957
1030
  this.dispatchEventToListeners(Events.TabOrderChanged, eventData);
@@ -987,7 +1060,7 @@ export class TabbedPane extends Common.ObjectWrapper.eventMixin<EventTypes, type
987
1060
  }
988
1061
  }
989
1062
 
990
- #onAnnotationAdded(): void {
1063
+ #onUpdateAnnotations(): void {
991
1064
  this.updateTabAnnotationIcons();
992
1065
  }
993
1066
 
@@ -1026,7 +1099,7 @@ export class TabbedPane extends Common.ObjectWrapper.eventMixin<EventTypes, type
1026
1099
  this.dropDownButton.click();
1027
1100
  return;
1028
1101
  }
1029
- const tab = this.tabs.find(tab => tab.tabElement === nextTabElement);
1102
+ const tab = this.#tabs.find(tab => tab.tabElement === nextTabElement);
1030
1103
  if (tab) {
1031
1104
  this.selectTab(tab.id, true);
1032
1105
  }
@@ -1070,8 +1143,9 @@ export class TabbedPaneTab {
1070
1143
  shown: boolean;
1071
1144
  measuredWidth!: number|undefined;
1072
1145
  #tabElement!: HTMLElement|undefined;
1073
- private icon: IconButton.Icon.Icon|null = null;
1074
- private suffixElement: HTMLElement|null = null;
1146
+ private icon: Icon|null = null;
1147
+ private suffixElement: HTMLElement|LitTemplate|null = null;
1148
+
1075
1149
  #width?: number;
1076
1150
  private delegate?: TabbedPaneTabDelegate;
1077
1151
  private titleElement?: HTMLElement;
@@ -1147,7 +1221,7 @@ export class TabbedPaneTab {
1147
1221
  return this.closeable;
1148
1222
  }
1149
1223
 
1150
- setIcon(icon: IconButton.Icon.Icon|null): void {
1224
+ setIcon(icon: Icon|null): void {
1151
1225
  this.icon = icon;
1152
1226
  if (this.#tabElement && this.titleElement) {
1153
1227
  this.createIconElement(this.#tabElement, this.titleElement, false);
@@ -1155,7 +1229,7 @@ export class TabbedPaneTab {
1155
1229
  delete this.measuredWidth;
1156
1230
  }
1157
1231
 
1158
- setSuffixElement(suffixElement: HTMLElement|null): void {
1232
+ setSuffixElement(suffixElement: HTMLElement|LitTemplate|null): void {
1159
1233
  this.suffixElement = suffixElement;
1160
1234
  if (this.#tabElement && this.titleElement) {
1161
1235
  this.createSuffixElement(this.#tabElement, this.titleElement, false);
@@ -1244,13 +1318,17 @@ export class TabbedPaneTab {
1244
1318
 
1245
1319
  const suffixElementContainer = document.createElement('span');
1246
1320
  suffixElementContainer.classList.add('tabbed-pane-header-tab-suffix-element');
1247
- const suffixElement = measuring ? this.suffixElement.cloneNode() : this.suffixElement;
1248
- suffixElementContainer.appendChild(suffixElement);
1321
+ if (this.suffixElement instanceof HTMLElement) {
1322
+ const suffixElement = measuring ? this.suffixElement.cloneNode() : this.suffixElement;
1323
+ suffixElementContainer.appendChild(suffixElement);
1324
+ } else {
1325
+ render(this.suffixElement, suffixElementContainer);
1326
+ }
1249
1327
  titleElement.insertAdjacentElement('afterend', suffixElementContainer);
1250
1328
  tabSuffixElements.set(tabElement, suffixElementContainer);
1251
1329
  }
1252
1330
 
1253
- private createMeasureClone(original: IconButton.Icon.Icon): Element {
1331
+ private createMeasureClone(original: Icon): Element {
1254
1332
  // Cloning doesn't work for the icon component because the shadow
1255
1333
  // root isn't copied, but it is sufficient to create a div styled
1256
1334
  // to be the same size.
@@ -1319,7 +1397,7 @@ export class TabbedPaneTab {
1319
1397
  // TODO(finnur): Replace the ai-icon with the squiggly svg once it becomes available.
1320
1398
  const iconContainer = document.createElement('div');
1321
1399
  iconContainer.classList.add('ai-icon');
1322
- const tabAnnotationIcon = new IconButton.Icon.Icon();
1400
+ const tabAnnotationIcon = new Icon();
1323
1401
  tabAnnotationIcon.name = 'smart-assistant';
1324
1402
  tabAnnotationIcon.classList.add('small');
1325
1403
  iconContainer.appendChild(tabAnnotationIcon);
@@ -1346,7 +1424,7 @@ export class TabbedPaneTab {
1346
1424
  private createPreviewIcon(): HTMLDivElement {
1347
1425
  const iconContainer = document.createElement('div');
1348
1426
  iconContainer.classList.add('preview-icon');
1349
- const previewIcon = new IconButton.Icon.Icon();
1427
+ const previewIcon = new Icon();
1350
1428
  previewIcon.name = 'experiment';
1351
1429
  previewIcon.classList.add('small');
1352
1430
  iconContainer.appendChild(previewIcon);
@@ -10,7 +10,7 @@ import * as Platform from '../../core/platform/platform.js';
10
10
  import * as Root from '../../core/root/root.js';
11
11
  import * as Buttons from '../../ui/components/buttons/buttons.js';
12
12
  import * as VisualLogging from '../../ui/visual_logging/visual_logging.js';
13
- import * as IconButton from '../components/icon_button/icon_button.js';
13
+ import {createIcon} from '../kit/kit.js';
14
14
 
15
15
  import {type Action, Events as ActionEvents} from './ActionRegistration.js';
16
16
  import {ActionRegistry} from './ActionRegistry.js';
@@ -824,7 +824,7 @@ export class ToolbarFilter extends ToolbarInput {
824
824
  filterPlaceholder, filterPlaceholder, growFactor, shrinkFactor, tooltip, completions, dynamicCompletions,
825
825
  jslogContext || 'filter', element);
826
826
 
827
- const filterIcon = IconButton.Icon.create('filter');
827
+ const filterIcon = createIcon('filter');
828
828
  this.element.prepend(filterIcon);
829
829
  this.element.classList.add('toolbar-filter');
830
830
  }
@@ -997,7 +997,7 @@ export class ToolbarMenuButton extends ToolbarItem<ToolbarButton.EventTypes> {
997
997
  this.title = '';
998
998
  if (!isIconDropdown) {
999
999
  this.element.classList.add('toolbar-has-dropdown');
1000
- const dropdownArrowIcon = IconButton.Icon.create('triangle-down', 'toolbar-dropdown-arrow');
1000
+ const dropdownArrowIcon = createIcon('triangle-down', 'toolbar-dropdown-arrow');
1001
1001
  this.element.appendChild(dropdownArrowIcon);
1002
1002
  }
1003
1003
  if (jslogContext) {
@@ -40,7 +40,7 @@ import * as SDK from '../../core/sdk/sdk.js';
40
40
  import type * as TextUtils from '../../models/text_utils/text_utils.js';
41
41
  import type * as Buttons from '../components/buttons/buttons.js';
42
42
  import * as Highlighting from '../components/highlighting/highlighting.js';
43
- import type * as IconButton from '../components/icon_button/icon_button.js';
43
+ import type {Icon} from '../kit/kit.js';
44
44
  import * as Lit from '../lit/lit.js';
45
45
  import * as VisualLogging from '../visual_logging/visual_logging.js';
46
46
 
@@ -810,7 +810,7 @@ export class TreeElement {
810
810
  }
811
811
  }
812
812
 
813
- setLeadingIcons(icons: IconButton.Icon.Icon[]|Lit.TemplateResult[]): void {
813
+ setLeadingIcons(icons: Icon[]|Lit.TemplateResult[]): void {
814
814
  if (!this.leadingIconsElement && !icons.length) {
815
815
  return;
816
816
  }
@@ -42,7 +42,7 @@ import * as i18n from '../../core/i18n/i18n.js';
42
42
  import * as Platform from '../../core/platform/platform.js';
43
43
  import * as Geometry from '../../models/geometry/geometry.js';
44
44
  import * as Buttons from '../components/buttons/buttons.js';
45
- import * as IconButton from '../components/icon_button/icon_button.js';
45
+ import {Icon, type IconData} from '../kit/kit.js';
46
46
  import * as Lit from '../lit/lit.js';
47
47
  import * as VisualLogging from '../visual_logging/visual_logging.js';
48
48
 
@@ -1281,19 +1281,19 @@ export class CheckboxLabel extends HTMLElement {
1281
1281
  customElements.define('devtools-checkbox', CheckboxLabel);
1282
1282
 
1283
1283
  export class DevToolsIconLabel extends HTMLElement {
1284
- readonly #icon: IconButton.Icon.Icon;
1284
+ readonly #icon: Icon;
1285
1285
 
1286
1286
  constructor() {
1287
1287
  super();
1288
1288
  const root = createShadowRootWithCoreStyles(this);
1289
- this.#icon = new IconButton.Icon.Icon();
1289
+ this.#icon = new Icon();
1290
1290
  this.#icon.style.setProperty('margin-right', '4px');
1291
1291
  this.#icon.style.setProperty('vertical-align', 'baseline');
1292
1292
  root.appendChild(this.#icon);
1293
1293
  root.createChild('slot');
1294
1294
  }
1295
1295
 
1296
- set data(data: IconButton.Icon.IconData) {
1296
+ set data(data: IconData) {
1297
1297
  this.#icon.data = data;
1298
1298
  // TODO(crbug.com/1427397): Clean this up. This was necessary so `DevToolsIconLabel` can use Lit icon
1299
1299
  // while being backwards-compatible with the legacy Icon while working for both small and large icons.
@@ -11,7 +11,7 @@ import * as i18n from '../../core/i18n/i18n.js';
11
11
  import * as Platform from '../../core/platform/platform.js';
12
12
  import * as Root from '../../core/root/root.js';
13
13
  import type * as Foundation from '../../foundation/foundation.js';
14
- import * as IconButton from '../components/icon_button/icon_button.js';
14
+ import {createIcon, type Icon} from '../kit/kit.js';
15
15
  import * as VisualLogging from '../visual_logging/visual_logging.js';
16
16
 
17
17
  import * as ARIAUtils from './ARIAUtils.js';
@@ -472,7 +472,7 @@ export class ContainerWidget extends VBox {
472
472
 
473
473
  class ExpandableContainerWidget extends VBox {
474
474
  private titleElement: HTMLDivElement;
475
- private readonly titleExpandIcon: IconButton.Icon.Icon;
475
+ private readonly titleExpandIcon: Icon;
476
476
  private readonly view: View;
477
477
  private widget?: Widget;
478
478
  private materializePromise?: Promise<void>;
@@ -489,7 +489,7 @@ class ExpandableContainerWidget extends VBox {
489
489
  keydown: 'Enter|Space|ArrowLeft|ArrowRight',
490
490
  })}`);
491
491
  ARIAUtils.markAsTreeitem(this.titleElement);
492
- this.titleExpandIcon = IconButton.Icon.create('triangle-right', 'title-expand-icon');
492
+ this.titleExpandIcon = createIcon('triangle-right', 'title-expand-icon');
493
493
  this.titleElement.appendChild(this.titleExpandIcon);
494
494
  const titleText = view.title();
495
495
  createTextChild(this.titleElement, titleText);
@@ -809,7 +809,7 @@ class TabbedLocation extends Location implements TabbedViewLocation {
809
809
  view.isCloseable() || view.isTransient(), view.isPreviewFeature(), index);
810
810
  const iconName = view.iconName();
811
811
  if (iconName) {
812
- const icon = IconButton.Icon.create(iconName);
812
+ const icon = createIcon(iconName);
813
813
  this.#tabbedPane.setTabIcon(view.viewId(), icon);
814
814
  }
815
815
  }
@@ -10,7 +10,7 @@ import * as Host from '../../../../core/host/host.js';
10
10
  import * as i18n from '../../../../core/i18n/i18n.js';
11
11
  import * as Platform from '../../../../core/platform/platform.js';
12
12
  import * as Root from '../../../../core/root/root.js';
13
- import * as IconButton from '../../../../ui/components/icon_button/icon_button.js';
13
+ import {createIcon, Icon} from '../../../../ui/kit/kit.js';
14
14
  import * as UIHelpers from '../../../helpers/helpers.js';
15
15
  import * as UI from '../../legacy.js';
16
16
 
@@ -134,9 +134,9 @@ export class ContrastDetails extends Common.ObjectWrapper.ObjectWrapper<EventTyp
134
134
  this.contrastValueBubble = contrastValueRowContents.createChild('span', 'contrast-details-value');
135
135
  this.contrastValue = this.contrastValueBubble.createChild('span');
136
136
  this.contrastValueBubbleIcons = [];
137
- this.contrastValueBubbleIcons.push(this.contrastValueBubble.appendChild(IconButton.Icon.create('checkmark')));
138
- this.contrastValueBubbleIcons.push(this.contrastValueBubble.appendChild(IconButton.Icon.create('check-double')));
139
- this.contrastValueBubbleIcons.push(this.contrastValueBubble.appendChild(IconButton.Icon.create('clear')));
137
+ this.contrastValueBubbleIcons.push(this.contrastValueBubble.appendChild(createIcon('checkmark')));
138
+ this.contrastValueBubbleIcons.push(this.contrastValueBubble.appendChild(createIcon('check-double')));
139
+ this.contrastValueBubbleIcons.push(this.contrastValueBubble.appendChild(createIcon('clear')));
140
140
  this.contrastValueBubbleIcons.forEach(button => button.addEventListener('click', (event: Event) => {
141
141
  ContrastDetails.showHelp();
142
142
  event.consume(false);
@@ -492,8 +492,8 @@ export class Swatch {
492
492
  }
493
493
  }
494
494
 
495
- function createIconCheckmark(): IconButton.Icon.Icon {
496
- const icon = new IconButton.Icon.Icon();
495
+ function createIconCheckmark(): Icon {
496
+ const icon = new Icon();
497
497
  icon.name = 'checkmark';
498
498
  icon.style.color = 'var(--icon-checkmark-green)';
499
499
  icon.style.width = 'var(--sys-size-9)';
@@ -501,8 +501,8 @@ function createIconCheckmark(): IconButton.Icon.Icon {
501
501
  return icon;
502
502
  }
503
503
 
504
- function createIconNo(): IconButton.Icon.Icon {
505
- const icon = new IconButton.Icon.Icon();
504
+ function createIconNo(): Icon {
505
+ const icon = new Icon();
506
506
  icon.name = 'clear';
507
507
  icon.style.color = 'var(--icon-error)';
508
508
  icon.classList.add('small');