chrome-devtools-frontend 1.0.1548980 → 1.0.1550444

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (323) hide show
  1. package/docs/contributing/settings-experiments-features.md +35 -0
  2. package/docs/styleguide/ux/components.md +53 -12
  3. package/docs/styleguide/ux/images/cards.png +0 -0
  4. package/docs/styleguide/ux/patterns.md +27 -0
  5. package/docs/ui_engineering.md +2 -2
  6. package/eslint.config.mjs +1 -0
  7. package/front_end/Tests.js +2 -0
  8. package/front_end/core/host/InspectorFrontendHost.ts +26 -558
  9. package/front_end/core/host/InspectorFrontendHostAPI.ts +6 -3
  10. package/front_end/core/host/InspectorFrontendHostStub.ts +558 -0
  11. package/front_end/core/host/ResourceLoader.ts +9 -23
  12. package/front_end/core/host/UserMetrics.ts +4 -4
  13. package/front_end/core/root/DevToolsContext.ts +4 -0
  14. package/front_end/core/root/Runtime.ts +10 -0
  15. package/front_end/core/sdk/CSSMatchedStyles.ts +2 -2
  16. package/front_end/core/sdk/CSSModel.ts +24 -24
  17. package/front_end/core/sdk/CSSPropertyParserMatchers.ts +11 -11
  18. package/front_end/core/sdk/CSSQuery.ts +1 -1
  19. package/front_end/core/sdk/CSSRule.ts +2 -2
  20. package/front_end/core/sdk/CSSStyleDeclaration.ts +1 -1
  21. package/front_end/core/sdk/CSSStyleSheetHeader.ts +1 -1
  22. package/front_end/core/sdk/DOMModel.ts +3 -0
  23. package/front_end/core/sdk/NetworkManager.ts +41 -41
  24. package/front_end/core/sdk/NetworkRequest.ts +4 -0
  25. package/front_end/core/sdk/OverlayModel.ts +2 -2
  26. package/front_end/core/sdk/PageResourceLoader.ts +71 -38
  27. package/front_end/core/sdk/SourceMap.ts +6 -0
  28. package/front_end/core/sdk/SourceMapCache.ts +21 -0
  29. package/front_end/core/sdk/SourceMapManager.ts +14 -7
  30. package/front_end/core/sdk/SourceMapScopesInfo.ts +6 -2
  31. package/front_end/core/sdk/TargetManager.ts +14 -2
  32. package/front_end/core/sdk/sdk-meta.ts +13 -0
  33. package/front_end/entrypoints/formatter_worker/FormatterActions.ts +1 -0
  34. package/front_end/entrypoints/formatter_worker/ScopeParser.ts +1 -1
  35. package/front_end/entrypoints/main/MainImpl.ts +5 -4
  36. package/front_end/foundation/Universe.ts +8 -1
  37. package/front_end/generated/Deprecation.ts +18 -4
  38. package/front_end/generated/InspectorBackendCommands.ts +38 -33
  39. package/front_end/generated/SupportedCSSProperties.js +41 -41
  40. package/front_end/generated/protocol-mapping.d.ts +20 -0
  41. package/front_end/generated/protocol-proxy-api.d.ts +17 -0
  42. package/front_end/generated/protocol.ts +146 -35
  43. package/front_end/models/ai_assistance/AiConversation.ts +5 -4
  44. package/front_end/models/ai_assistance/BuiltInAi.ts +79 -5
  45. package/front_end/models/ai_assistance/ChangeManager.ts +4 -4
  46. package/front_end/models/ai_assistance/ConversationHandler.ts +0 -15
  47. package/front_end/models/ai_assistance/agents/AiAgent.ts +9 -6
  48. package/front_end/models/ai_assistance/agents/PerformanceAgent.ts +135 -3
  49. package/front_end/models/ai_assistance/data_formatters/PerformanceTraceFormatter.ts +24 -0
  50. package/front_end/models/bindings/CompilerScriptMapping.ts +43 -0
  51. package/front_end/models/bindings/DebuggerWorkspaceBinding.ts +19 -0
  52. package/front_end/models/bindings/ResourceMapping.ts +73 -0
  53. package/front_end/models/bindings/ResourceScriptMapping.ts +50 -0
  54. package/front_end/models/issues_manager/AttributionReportingIssue.ts +6 -8
  55. package/front_end/models/issues_manager/BounceTrackingIssue.ts +4 -14
  56. package/front_end/models/issues_manager/ClientHintIssue.ts +5 -12
  57. package/front_end/models/issues_manager/ContentSecurityPolicyIssue.ts +5 -12
  58. package/front_end/models/issues_manager/CookieDeprecationMetadataIssue.ts +7 -14
  59. package/front_end/models/issues_manager/CookieIssue.ts +27 -30
  60. package/front_end/models/issues_manager/CorsIssue.ts +8 -17
  61. package/front_end/models/issues_manager/CrossOriginEmbedderPolicyIssue.ts +5 -8
  62. package/front_end/models/issues_manager/DeprecationIssue.ts +7 -14
  63. package/front_end/models/issues_manager/ElementAccessibilityIssue.ts +7 -14
  64. package/front_end/models/issues_manager/FederatedAuthRequestIssue.ts +4 -11
  65. package/front_end/models/issues_manager/FederatedAuthUserInfoRequestIssue.ts +4 -11
  66. package/front_end/models/issues_manager/GenericIssue.ts +28 -16
  67. package/front_end/models/issues_manager/HeavyAdIssue.ts +4 -11
  68. package/front_end/models/issues_manager/Issue.ts +12 -4
  69. package/front_end/models/issues_manager/IssueAggregator.ts +8 -2
  70. package/front_end/models/issues_manager/LowTextContrastIssue.ts +3 -10
  71. package/front_end/models/issues_manager/MixedContentIssue.ts +7 -13
  72. package/front_end/models/issues_manager/PartitioningBlobURLIssue.ts +4 -11
  73. package/front_end/models/issues_manager/PropertyRuleIssue.ts +6 -12
  74. package/front_end/models/issues_manager/QuirksModeIssue.ts +3 -10
  75. package/front_end/models/issues_manager/SRIMessageSignatureIssue.ts +7 -13
  76. package/front_end/models/issues_manager/SharedArrayBufferIssue.ts +4 -11
  77. package/front_end/models/issues_manager/SharedDictionaryIssue.ts +6 -13
  78. package/front_end/models/issues_manager/StylesheetLoadingIssue.ts +8 -13
  79. package/front_end/models/issues_manager/UnencodedDigestIssue.ts +2 -9
  80. package/front_end/models/issues_manager/descriptions/genericNavigationEntryMarkedSkippable.md +7 -0
  81. package/front_end/models/javascript_metadata/NativeFunctions.js +7 -16
  82. package/front_end/models/source_map_scopes/FunctionCodeResolver.snapshot.txt +98 -0
  83. package/front_end/models/source_map_scopes/FunctionCodeResolver.ts +270 -0
  84. package/front_end/models/source_map_scopes/source_map_scopes.ts +2 -0
  85. package/front_end/models/workspace/UISourceCode.ts +51 -44
  86. package/front_end/panels/ai_assistance/AiAssistancePanel.ts +76 -34
  87. package/front_end/panels/ai_assistance/aiAssistancePanel.css +1 -0
  88. package/front_end/panels/ai_assistance/components/ChatView.ts +23 -11
  89. package/front_end/panels/application/AppManifestView.ts +7 -6
  90. package/front_end/panels/application/ApplicationPanelSidebar.ts +21 -21
  91. package/front_end/panels/application/BackForwardCacheTreeElement.ts +2 -2
  92. package/front_end/panels/application/BounceTrackingMitigationsTreeElement.ts +2 -2
  93. package/front_end/panels/application/FrameDetailsView.ts +5 -6
  94. package/front_end/panels/application/InterestGroupTreeElement.ts +2 -2
  95. package/front_end/panels/application/OpenedWindowDetailsView.ts +2 -2
  96. package/front_end/panels/application/OriginTrialTreeView.ts +1 -1
  97. package/front_end/panels/application/PreloadingTreeElement.ts +3 -3
  98. package/front_end/panels/application/ReportingApiTreeElement.ts +2 -2
  99. package/front_end/panels/application/ServiceWorkerCacheTreeElement.ts +3 -3
  100. package/front_end/panels/application/ServiceWorkersView.ts +2 -2
  101. package/front_end/panels/application/SharedStorageListTreeElement.ts +2 -2
  102. package/front_end/panels/application/StorageBucketsTreeElement.ts +3 -3
  103. package/front_end/panels/application/StorageView.ts +2 -2
  104. package/front_end/panels/application/TrustTokensTreeElement.ts +4 -8
  105. package/front_end/panels/application/components/PermissionsPolicySection.ts +202 -158
  106. package/front_end/panels/application/components/ProtocolHandlersView.ts +118 -81
  107. package/front_end/panels/application/components/ServiceWorkerRouterView.ts +47 -41
  108. package/front_end/panels/application/components/SharedStorageMetadataView.ts +1 -1
  109. package/front_end/panels/application/components/StorageMetadataView.ts +31 -34
  110. package/front_end/panels/application/components/TrustTokensView.ts +77 -69
  111. package/front_end/panels/application/preloading/components/PreloadingGrid.ts +1 -1
  112. package/front_end/panels/application/preloading/components/RuleSetGrid.ts +1 -1
  113. package/front_end/panels/application/preloading/components/UsedPreloadingView.ts +1 -1
  114. package/front_end/panels/changes/ChangesSidebar.ts +2 -0
  115. package/front_end/panels/changes/CombinedDiffView.ts +2 -0
  116. package/front_end/panels/common/AnnotationManager.ts +71 -0
  117. package/front_end/panels/common/PersistenceUtils.ts +6 -7
  118. package/front_end/panels/common/common.ts +1 -0
  119. package/front_end/panels/console/ConsolePrompt.ts +4 -4
  120. package/front_end/panels/console/ConsoleView.ts +5 -4
  121. package/front_end/panels/console/ConsoleViewMessage.ts +16 -15
  122. package/front_end/panels/console/console-meta.ts +0 -13
  123. package/front_end/panels/console_counters/WarningErrorCounter.ts +2 -0
  124. package/front_end/panels/css_overview/CSSOverviewCompletedView.ts +1 -1
  125. package/front_end/panels/developer_resources/DeveloperResourcesView.ts +3 -1
  126. package/front_end/panels/elements/CSSRuleValidator.ts +7 -7
  127. package/front_end/panels/elements/CSSRuleValidatorHelper.ts +2 -2
  128. package/front_end/panels/elements/ColorSwatchPopoverIcon.ts +3 -3
  129. package/front_end/panels/elements/ElementsPanel.ts +49 -0
  130. package/front_end/panels/elements/ElementsTreeElement.ts +172 -121
  131. package/front_end/panels/elements/ElementsTreeOutline.ts +11 -3
  132. package/front_end/panels/elements/LayoutPane.ts +12 -10
  133. package/front_end/panels/elements/ShortcutTreeElement.ts +2 -2
  134. package/front_end/panels/elements/StyleEditorWidget.ts +2 -2
  135. package/front_end/panels/elements/StylePropertyTreeElement.ts +18 -18
  136. package/front_end/panels/elements/StylesSidebarPane.ts +4 -5
  137. package/front_end/panels/elements/TopLayerContainer.ts +2 -2
  138. package/front_end/panels/elements/components/AdornerManager.ts +3 -3
  139. package/front_end/panels/elements/components/ElementsBreadcrumbs.ts +1 -1
  140. package/front_end/panels/elements/components/ElementsTreeExpandButton.ts +1 -1
  141. package/front_end/panels/elements/components/QueryContainer.ts +1 -1
  142. package/front_end/panels/elements/components/StylePropertyEditor.ts +7 -7
  143. package/front_end/panels/emulation/DeviceModeWrapper.ts +48 -3
  144. package/front_end/panels/explain/components/ConsoleInsight.ts +6 -4
  145. package/front_end/panels/issues/AffectedResourcesView.ts +2 -2
  146. package/front_end/panels/issues/AttributionReportingIssueDetailsView.ts +2 -2
  147. package/front_end/panels/issues/IssueKindView.ts +2 -2
  148. package/front_end/panels/issues/IssueView.ts +4 -4
  149. package/front_end/panels/js_timeline/js_timeline-meta.ts +4 -2
  150. package/front_end/panels/linear_memory_inspector/components/LinearMemoryHighlightChipList.ts +28 -50
  151. package/front_end/panels/linear_memory_inspector/components/LinearMemoryInspector.ts +15 -11
  152. package/front_end/panels/linear_memory_inspector/components/LinearMemoryNavigator.ts +1 -1
  153. package/front_end/panels/linear_memory_inspector/components/LinearMemoryValueInterpreter.ts +1 -1
  154. package/front_end/panels/linear_memory_inspector/components/ValueInterpreterDisplay.ts +1 -1
  155. package/front_end/panels/media/PlayerListView.ts +100 -73
  156. package/front_end/panels/media/playerListView.css +5 -0
  157. package/front_end/panels/mobile_throttling/ThrottlingManager.ts +2 -2
  158. package/front_end/panels/mobile_throttling/ThrottlingSettingsTab.ts +4 -5
  159. package/front_end/panels/network/NetworkDataGridNode.ts +3 -3
  160. package/front_end/panels/network/NetworkFrameGrouper.ts +2 -2
  161. package/front_end/panels/network/NetworkItemView.ts +4 -4
  162. package/front_end/panels/network/NetworkLogViewColumns.ts +3 -3
  163. package/front_end/panels/network/RequestConditionsDrawer.ts +5 -5
  164. package/front_end/panels/network/RequestCookiesView.ts +2 -2
  165. package/front_end/panels/network/SignedExchangeInfoView.ts +2 -2
  166. package/front_end/panels/network/components/DirectSocketConnectionView.ts +17 -0
  167. package/front_end/panels/network/components/RequestTrustTokensView.ts +5 -6
  168. package/front_end/panels/network/resourceChunkView.css +4 -0
  169. package/front_end/panels/profiler/HeapSnapshotGridNodes.ts +3 -3
  170. package/front_end/panels/profiler/ProfileDataGrid.ts +2 -2
  171. package/front_end/panels/profiler/ProfilesPanel.ts +2 -2
  172. package/front_end/panels/protocol_monitor/JSONEditor.ts +1 -1
  173. package/front_end/panels/recorder/components/CreateRecordingView.ts +1 -1
  174. package/front_end/panels/recorder/components/ExtensionView.ts +1 -1
  175. package/front_end/panels/recorder/components/RecordingListView.ts +1 -1
  176. package/front_end/panels/recorder/components/RecordingView.ts +1 -1
  177. package/front_end/panels/recorder/components/StepView.ts +1 -1
  178. package/front_end/panels/screencast/ScreencastView.ts +8 -8
  179. package/front_end/panels/search/SearchView.ts +1 -1
  180. package/front_end/panels/security/CookieControlsTreeElement.ts +2 -2
  181. package/front_end/panels/security/CookieControlsView.ts +1 -1
  182. package/front_end/panels/security/CookieReportTreeElement.ts +2 -2
  183. package/front_end/panels/security/SecurityPanel.ts +5 -5
  184. package/front_end/panels/security/SecurityPanelSidebar.ts +3 -4
  185. package/front_end/panels/sensors/LocationsSettingsTab.ts +1 -1
  186. package/front_end/panels/settings/FrameworkIgnoreListSettingsTab.ts +1 -1
  187. package/front_end/panels/settings/KeybindsSettingsTab.ts +5 -5
  188. package/front_end/panels/settings/SettingsScreen.ts +7 -8
  189. package/front_end/panels/settings/WorkspaceSettingsTab.ts +1 -1
  190. package/front_end/panels/settings/emulation/DevicesSettingsTab.ts +1 -1
  191. package/front_end/panels/snippets/SnippetsQuickOpen.ts +16 -6
  192. package/front_end/panels/sources/BreakpointEditDialog.ts +3 -3
  193. package/front_end/panels/sources/BreakpointsView.ts +1 -1
  194. package/front_end/panels/sources/CSSPlugin.ts +4 -4
  195. package/front_end/panels/sources/CallStackSidebarPane.ts +4 -4
  196. package/front_end/panels/sources/DebuggerPausedMessage.ts +3 -3
  197. package/front_end/panels/sources/FilteredUISourceCodeListProvider.ts +40 -23
  198. package/front_end/panels/sources/GoToLineQuickOpen.ts +11 -5
  199. package/front_end/panels/sources/NavigatorView.ts +4 -4
  200. package/front_end/panels/sources/OpenFileQuickOpen.ts +11 -16
  201. package/front_end/panels/sources/OutlineQuickOpen.ts +23 -23
  202. package/front_end/panels/sources/ProfilePlugin.ts +21 -12
  203. package/front_end/panels/sources/SourcesView.ts +2 -2
  204. package/front_end/panels/sources/TabbedEditorContainer.ts +4 -5
  205. package/front_end/panels/sources/ThreadsSidebarPane.ts +2 -2
  206. package/front_end/panels/sources/UISourceCodeFrame.ts +5 -6
  207. package/front_end/panels/sources/filteredUISourceCodeListProvider.css +41 -0
  208. package/front_end/panels/timeline/TimelineHistoryManager.ts +2 -2
  209. package/front_end/panels/timeline/TimelinePanel.ts +29 -25
  210. package/front_end/panels/timeline/TimelineSelectorStatsView.ts +3 -3
  211. package/front_end/panels/timeline/components/CPUThrottlingSelector.ts +1 -1
  212. package/front_end/panels/timeline/components/LiveMetricsView.ts +1 -1
  213. package/front_end/panels/timeline/components/NetworkRequestTooltip.ts +1 -1
  214. package/front_end/panels/timeline/components/NetworkThrottlingSelector.ts +1 -1
  215. package/front_end/panels/timeline/components/OriginMap.ts +1 -1
  216. package/front_end/panels/timeline/components/insights/Checklist.ts +1 -1
  217. package/front_end/panels/timeline/components/insights/DOMSize.ts +1 -1
  218. package/front_end/panels/timeline/components/insights/ImageDelivery.ts +1 -1
  219. package/front_end/panels/timeline/components/insights/NetworkDependencyTree.ts +1 -1
  220. package/front_end/panels/timeline/components/insights/SlowCSSSelector.ts +2 -2
  221. package/front_end/panels/timeline/docs/flame_chart_migration.md +11 -16
  222. package/front_end/panels/timeline/overlays/components/EntriesLinkOverlay.ts +1 -1
  223. package/front_end/panels/timeline/overlays/components/EntryLabelOverlay.ts +1 -1
  224. package/front_end/panels/timeline/timeline-meta.ts +3 -2
  225. package/front_end/panels/utils/utils.ts +18 -3
  226. package/front_end/panels/whats_new/ReleaseNoteText.ts +10 -20
  227. package/front_end/panels/whats_new/resources/WNDT.md +8 -8
  228. package/front_end/third_party/chromium/README.chromium +1 -1
  229. package/front_end/third_party/puppeteer/third_party/mitt/README.chromium +1 -0
  230. package/front_end/third_party/puppeteer/third_party/parsel/README.chromium +1 -0
  231. package/front_end/third_party/puppeteer/third_party/rxjs/README.chromium +1 -0
  232. package/front_end/ui/components/adorners/Adorner.ts +21 -1
  233. package/front_end/ui/components/annotations/AnnotationRepository.ts +98 -0
  234. package/front_end/ui/components/annotations/AnnotationType.ts +10 -0
  235. package/front_end/ui/components/annotations/annotations.ts +6 -0
  236. package/front_end/ui/components/buttons/Button.ts +2 -2
  237. package/front_end/ui/components/buttons/FloatingButton.ts +2 -2
  238. package/front_end/ui/components/chrome_link/ChromeLink.ts +1 -1
  239. package/front_end/ui/components/dialogs/ButtonDialog.ts +1 -1
  240. package/front_end/ui/components/dialogs/Dialog.ts +1 -1
  241. package/front_end/ui/components/dialogs/ShortcutDialog.ts +1 -0
  242. package/front_end/ui/components/diff_view/DiffView.ts +1 -1
  243. package/front_end/ui/components/expandable_list/ExpandableList.ts +1 -1
  244. package/front_end/ui/components/highlighting/HighlightElement.ts +16 -2
  245. package/front_end/ui/components/highlighting/MarkupHighlight.ts +162 -0
  246. package/front_end/ui/components/highlighting/highlighting.ts +7 -0
  247. package/front_end/ui/components/icon_button/FileSourceIcon.ts +2 -2
  248. package/front_end/ui/components/icon_button/IconButton.ts +2 -2
  249. package/front_end/ui/components/icon_button/icon_button.ts +0 -2
  250. package/front_end/ui/components/issue_counter/IssueCounter.ts +2 -2
  251. package/front_end/ui/components/issue_counter/IssueLinkIcon.ts +2 -2
  252. package/front_end/ui/components/legacy_wrapper/LegacyWrapper.ts +1 -1
  253. package/front_end/ui/components/linkifier/LinkifierImpl.ts +1 -1
  254. package/front_end/ui/components/list/List.ts +184 -0
  255. package/front_end/ui/components/list/list.css +90 -0
  256. package/front_end/ui/components/{cards/cards.ts → list/lists.ts} +3 -3
  257. package/front_end/ui/components/markdown_view/CodeBlock.ts +1 -1
  258. package/front_end/ui/components/markdown_view/MarkdownImage.ts +4 -4
  259. package/front_end/ui/components/markdown_view/MarkdownLink.ts +1 -1
  260. package/front_end/ui/components/markdown_view/MarkdownView.ts +1 -1
  261. package/front_end/ui/components/menus/Menu.ts +1 -1
  262. package/front_end/ui/components/menus/SelectMenu.ts +1 -1
  263. package/front_end/ui/components/node_text/NodeText.ts +1 -1
  264. package/front_end/ui/components/panel_feedback/FeedbackButton.ts +1 -1
  265. package/front_end/ui/components/panel_feedback/PanelFeedback.ts +1 -1
  266. package/front_end/ui/components/panel_feedback/PreviewToggle.ts +1 -1
  267. package/front_end/ui/components/panel_introduction_steps/PanelIntroductionSteps.ts +1 -1
  268. package/front_end/ui/components/report_view/ReportView.ts +1 -1
  269. package/front_end/ui/components/request_link_icon/RequestLinkIcon.ts +2 -2
  270. package/front_end/ui/components/settings/SettingCheckbox.ts +1 -1
  271. package/front_end/ui/components/settings/SettingDeprecationWarning.ts +2 -2
  272. package/front_end/ui/components/snackbars/Snackbar.ts +1 -1
  273. package/front_end/ui/components/spinners/Spinner.ts +1 -1
  274. package/front_end/ui/components/srgb_overlay/SrgbOverlay.ts +1 -1
  275. package/front_end/ui/components/suggestion_input/SuggestionInput.ts +1 -0
  276. package/front_end/ui/components/survey_link/SurveyLink.ts +2 -2
  277. package/front_end/ui/components/switch/SwitchImpl.ts +1 -1
  278. package/front_end/ui/components/text_editor/TextEditor.ts +1 -0
  279. package/front_end/ui/components/text_editor/config.ts +2 -2
  280. package/front_end/ui/components/text_prompt/TextPrompt.ts +1 -1
  281. package/front_end/ui/components/tooltips/Tooltip.ts +1 -1
  282. package/front_end/ui/components/tree_outline/TreeOutline.ts +1 -1
  283. package/front_end/ui/kit/cards/Card.docs.ts +43 -0
  284. package/front_end/ui/{components/icon_button → kit/icons}/Icon.docs.ts +3 -4
  285. package/front_end/ui/{components/icon_button → kit/icons}/Icon.ts +6 -4
  286. package/front_end/ui/kit/kit.ts +6 -0
  287. package/front_end/ui/legacy/Infobar.ts +3 -3
  288. package/front_end/ui/legacy/InspectorView.ts +3 -3
  289. package/front_end/ui/legacy/SearchableView.ts +2 -2
  290. package/front_end/ui/legacy/SoftContextMenu.ts +5 -5
  291. package/front_end/ui/legacy/SoftDropDown.ts +2 -2
  292. package/front_end/ui/legacy/TabbedPane.ts +106 -8
  293. package/front_end/ui/legacy/Toolbar.ts +3 -3
  294. package/front_end/ui/legacy/Treeoutline.ts +2 -2
  295. package/front_end/ui/legacy/UIUtils.ts +4 -188
  296. package/front_end/ui/legacy/ViewManager.ts +27 -12
  297. package/front_end/ui/legacy/ViewRegistration.ts +21 -22
  298. package/front_end/ui/legacy/components/color_picker/ContrastDetails.ts +8 -8
  299. package/front_end/ui/legacy/components/color_picker/Spectrum.ts +4 -4
  300. package/front_end/ui/legacy/components/cookie_table/CookiesTable.ts +4 -4
  301. package/front_end/ui/legacy/components/inline_editor/FontEditor.ts +2 -2
  302. package/front_end/ui/legacy/components/inline_editor/Swatches.ts +5 -5
  303. package/front_end/ui/legacy/components/object_ui/CustomPreviewComponent.ts +3 -3
  304. package/front_end/ui/legacy/components/object_ui/ObjectPropertiesSection.ts +5 -4
  305. package/front_end/ui/legacy/components/perf_ui/LineLevelProfile.ts +73 -35
  306. package/front_end/ui/legacy/components/perf_ui/LiveHeapProfile.ts +11 -2
  307. package/front_end/ui/legacy/components/perf_ui/OverviewGrid.ts +3 -3
  308. package/front_end/ui/legacy/components/quick_open/CommandMenu.ts +23 -31
  309. package/front_end/ui/legacy/components/quick_open/FilteredListWidget.ts +11 -27
  310. package/front_end/ui/legacy/components/quick_open/HelpQuickOpen.ts +11 -15
  311. package/front_end/ui/legacy/components/quick_open/filteredListWidget.css +18 -65
  312. package/front_end/ui/legacy/components/source_frame/JSONView.ts +2 -1
  313. package/front_end/ui/legacy/components/utils/Linkifier.ts +3 -3
  314. package/front_end/ui/legacy/tabbedPane.css +10 -0
  315. package/front_end/ui/visual_logging/KnownContextValues.ts +3 -0
  316. package/inspector_overlay/README.md +3 -3
  317. package/mcp/HostBindings.ts +310 -0
  318. package/mcp/mcp.ts +18 -0
  319. package/mcp/tsconfig.json +6 -1
  320. package/package.json +26 -24
  321. /package/front_end/ui/{components → kit}/cards/Card.ts +0 -0
  322. /package/front_end/ui/{components → kit}/cards/card.css +0 -0
  323. /package/front_end/ui/{components/icon_button → kit/icons}/icon.css +0 -0
@@ -11,7 +11,6 @@ import * as i18n from '../../../core/i18n/i18n.js';
11
11
  import * as UI from '../../../ui/legacy/legacy.js';
12
12
  import {html, nothing, render} from '../../../ui/lit/lit.js';
13
13
 
14
- import type {DeleteMemoryHighlightEvent, JumpToHighlightedMemoryEvent} from './LinearMemoryHighlightChipList.js';
15
14
  import linearMemoryInspectorStyles from './linearMemoryInspector.css.js';
16
15
  import {formatAddress, parseAddress} from './LinearMemoryInspectorUtils.js';
17
16
  import {
@@ -121,8 +120,8 @@ export interface ViewInput {
121
120
  onAddressChange: (e: AddressInputChangedEvent) => void;
122
121
  onNavigatePage: (e: PageNavigationEvent) => void;
123
122
  onNavigateHistory: (e: HistoryNavigationEvent) => boolean;
124
- onJumpToAddress: (e: JumpToPointerAddressEvent|JumpToHighlightedMemoryEvent) => void;
125
- onDeleteMemoryHighlight: (e: DeleteMemoryHighlightEvent) => void;
123
+ onJumpToAddress: (e: JumpToPointerAddressEvent|{data: number}) => void;
124
+ onDeleteMemoryHighlight: (info: HighlightInfo) => void;
126
125
  onByteSelected: (e: ByteSelectedEvent) => void;
127
126
  onResize: (e: ResizeEvent) => void;
128
127
  onValueTypeToggled: (e: ValueTypeToggledEvent) => void;
@@ -164,9 +163,13 @@ export const DEFAULT_VIEW = (input: ViewInput, _output: Record<string, unknown>,
164
163
  @pagenavigation=${input.onNavigatePage}
165
164
  @historynavigation=${input.onNavigateHistory}></devtools-linear-memory-inspector-navigator>
166
165
  <devtools-linear-memory-highlight-chip-list
167
- .data=${{highlightInfos: highlightedMemoryAreas, focusedMemoryHighlight}}
168
- @jumptohighlightedmemory=${input.onJumpToAddress}
169
- @deletememoryhighlight=${input.onDeleteMemoryHighlight}>
166
+ .data=${{
167
+ highlightInfos: highlightedMemoryAreas,
168
+ focusedMemoryHighlight,
169
+ jumpToAddress: (address: number) => input.onJumpToAddress({data: address}),
170
+ deleteHighlight: input.onDeleteMemoryHighlight,
171
+ }}
172
+ >
170
173
  </devtools-linear-memory-highlight-chip-list>
171
174
  <devtools-linear-memory-inspector-viewer
172
175
  .data=${
@@ -376,17 +379,18 @@ export class LinearMemoryInspector extends Common.ObjectWrapper.eventMixin<Event
376
379
  this.#view(viewInput, {}, this.contentElement);
377
380
  }
378
381
 
379
- #onJumpToAddress(e: JumpToPointerAddressEvent|JumpToHighlightedMemoryEvent): void {
382
+ #onJumpToAddress(e: JumpToPointerAddressEvent|{data: number}): void {
380
383
  // Stop event from bubbling up, since no element further up needs the event.
381
- e.stopPropagation();
384
+ if (e instanceof Event) {
385
+ e.stopPropagation();
386
+ }
382
387
  this.#currentNavigatorMode = Mode.SUBMITTED;
383
388
  const addressInRange = Math.max(0, Math.min(e.data, this.#outerMemoryLength - 1));
384
389
  this.#jumpToAddress(addressInRange);
385
390
  }
386
391
 
387
- #onDeleteMemoryHighlight(e: DeleteMemoryHighlightEvent): void {
388
- e.stopPropagation();
389
- this.dispatchEventToListeners(Events.DELETE_MEMORY_HIGHLIGHT, e.data);
392
+ #onDeleteMemoryHighlight(highlight: HighlightInfo): void {
393
+ this.dispatchEventToListeners(Events.DELETE_MEMORY_HIGHLIGHT, highlight);
390
394
  }
391
395
 
392
396
  #onRefreshRequest(): void {
@@ -3,7 +3,7 @@
3
3
  // found in the LICENSE file.
4
4
  /* eslint-disable @devtools/no-lit-render-outside-of-view */
5
5
 
6
- import '../../../ui/components/icon_button/icon_button.js';
6
+ import '../../../ui/kit/kit.js';
7
7
 
8
8
  import * as i18n from '../../../core/i18n/i18n.js';
9
9
  import * as Buttons from '../../../ui/components/buttons/buttons.js';
@@ -3,7 +3,7 @@
3
3
  // found in the LICENSE file.
4
4
  /* eslint-disable @devtools/no-lit-render-outside-of-view */
5
5
 
6
- import '../../../ui/components/icon_button/icon_button.js';
6
+ import '../../../ui/kit/kit.js';
7
7
  import './ValueInterpreterDisplay.js';
8
8
  import './ValueInterpreterSettings.js';
9
9
 
@@ -3,7 +3,7 @@
3
3
  // found in the LICENSE file.
4
4
  /* eslint-disable @devtools/no-lit-render-outside-of-view */
5
5
 
6
- import '../../../ui/components/icon_button/icon_button.js';
6
+ import '../../../ui/kit/kit.js';
7
7
 
8
8
  import * as i18n from '../../../core/i18n/i18n.js';
9
9
  import * as UI from '../../../ui/legacy/legacy.js';
@@ -1,12 +1,13 @@
1
1
  // Copyright 2019 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 */
4
+
5
+ import '../../ui/kit/kit.js';
5
6
 
6
7
  import * as i18n from '../../core/i18n/i18n.js';
7
8
  import type * as Protocol from '../../generated/protocol.js';
8
- import * as IconButton from '../../ui/components/icon_button/icon_button.js';
9
9
  import * as UI from '../../ui/legacy/legacy.js';
10
+ import {Directives, html, render} from '../../ui/lit/lit.js';
10
11
  import * as VisualLogging from '../../ui/visual_logging/visual_logging.js';
11
12
 
12
13
  import type {MainView, TriggerDispatcher} from './MainView.js';
@@ -14,6 +15,8 @@ import type {PlayerEvent} from './MediaModel.js';
14
15
  import playerListViewStyles from './playerListView.css.js';
15
16
  import {PlayerPropertyKeys} from './PlayerPropertiesView.js';
16
17
 
18
+ const {classMap} = Directives;
19
+
17
20
  const UIStrings = {
18
21
  /**
19
22
  * @description A right-click context menu entry which when clicked causes the menu entry for that player to be removed.
@@ -34,76 +37,103 @@ const UIStrings = {
34
37
  } as const;
35
38
  const str_ = i18n.i18n.registerUIStrings('panels/media/PlayerListView.ts', UIStrings);
36
39
  const i18nString = i18n.i18n.getLocalizedString.bind(undefined, str_);
37
- export interface PlayerStatus {
40
+
41
+ interface PlayerStatus {
38
42
  playerTitle: string;
43
+ frameTitle: string;
39
44
  playerID: string;
40
45
  exists: boolean;
41
46
  playing: boolean;
42
47
  titleEdited: boolean;
48
+ iconName: string;
43
49
  }
44
- export interface PlayerStatusMapElement {
45
- playerStatus: PlayerStatus;
46
- playerTitleElement: HTMLElement|null;
50
+
51
+ export interface ViewInput {
52
+ players: PlayerStatus[];
53
+ selectedPlayerID: string|null;
54
+ onPlayerClick: (playerID: string) => void;
55
+ onPlayerContextMenu: (playerID: string, event: Event) => void;
47
56
  }
57
+ export type View = (input: ViewInput, output: object, target: HTMLElement) => void;
58
+
59
+ const DEFAULT_VIEW: View = (input, _output, target) => {
60
+ // clang-format off
61
+ render(
62
+ html`
63
+ <style>${playerListViewStyles}</style>
64
+ <div class="player-entry-header">${i18nString(UIStrings.players)}</div>
65
+ ${input.players.map(player => {
66
+ const isSelected = player.playerID === input.selectedPlayerID;
67
+ return html`
68
+ <div class=${classMap({
69
+ 'player-entry-row': true,
70
+ hbox: true,
71
+ selected: isSelected,
72
+ 'force-white-icons': isSelected,
73
+ })}
74
+ @click=${() => input.onPlayerClick(player.playerID)}
75
+ @contextmenu=${(e: Event) => input.onPlayerContextMenu(player.playerID, e)}
76
+ jslog=${VisualLogging.item('player').track({click: true})}>
77
+ <div class="player-entry-status-icon vbox">
78
+ <div class="player-entry-status-icon-centering">
79
+ <devtools-icon name=${player.iconName}></devtools-icon>
80
+ </div>
81
+ </div>
82
+ <div class="player-entry-frame-title">${player.frameTitle}</div>
83
+ <div class="player-entry-player-title">${player.playerTitle}</div>
84
+ </div>
85
+ `;
86
+ })}
87
+ `,
88
+ target
89
+ );
90
+ // clang-format on
91
+ };
48
92
 
49
93
  export class PlayerListView extends UI.Widget.VBox implements TriggerDispatcher {
50
- private readonly playerEntryFragments: Map<string, UI.Fragment.Fragment>;
94
+ #view: View;
95
+ private readonly playerStatuses: Map<string, PlayerStatus>;
51
96
  private readonly playerEntriesWithHostnameFrameTitle: Set<string>;
52
97
  private readonly mainContainer: MainView;
53
- private currentlySelectedEntry: Element|null;
98
+ private currentlySelectedPlayerID: string|null;
54
99
 
55
- constructor(mainContainer: MainView) {
100
+ constructor(mainContainer: MainView, view: View = DEFAULT_VIEW) {
56
101
  super({useShadowDom: true});
57
- this.registerRequiredCSS(playerListViewStyles);
102
+ this.#view = view;
58
103
 
59
- this.playerEntryFragments = new Map();
104
+ this.playerStatuses = new Map();
60
105
  this.playerEntriesWithHostnameFrameTitle = new Set();
61
106
 
62
107
  // Container where new panels can be added based on clicks.
63
108
  this.mainContainer = mainContainer;
64
109
 
65
- this.currentlySelectedEntry = null;
66
- this.contentElement.createChild('div', 'player-entry-header').textContent = i18nString(UIStrings.players);
110
+ this.currentlySelectedPlayerID = null;
111
+ this.requestUpdate();
67
112
  }
68
113
 
69
- private createPlayerListEntry(playerID: string): UI.Fragment.Fragment {
70
- const entry = UI.Fragment.Fragment.build`
71
- <div class="player-entry-row hbox">
72
- <div class="player-entry-status-icon vbox">
73
- <div $="icon" class="player-entry-status-icon-centering"></div>
74
- </div>
75
- <div $="frame-title" class="player-entry-frame-title">FrameTitle</div>
76
- <div $="player-title" class="player-entry-player-title">PlayerTitle</div>
77
- </div>
78
- `;
79
- const element = entry.element();
80
- element.setAttribute('jslog', `${VisualLogging.item('player').track({click: true})}`);
81
- element.addEventListener('click', this.selectPlayer.bind(this, playerID, element));
82
- element.addEventListener('contextmenu', this.rightClickPlayer.bind(this, playerID));
83
-
84
- entry.$('icon').appendChild(IconButton.Icon.create('pause', 'media-player'));
85
- return entry;
114
+ override performUpdate(): void {
115
+ const input: ViewInput = {
116
+ players: Array.from(this.playerStatuses.values()),
117
+ selectedPlayerID: this.currentlySelectedPlayerID,
118
+ onPlayerClick: this.selectPlayer.bind(this),
119
+ onPlayerContextMenu: this.rightClickPlayer.bind(this),
120
+ };
121
+ this.#view(input, {}, this.contentElement);
86
122
  }
87
123
 
88
124
  selectPlayerById(playerID: string): void {
89
- const fragment = this.playerEntryFragments.get(playerID);
90
- if (fragment) {
91
- this.selectPlayer(playerID, fragment.element());
125
+ if (this.playerStatuses.has(playerID)) {
126
+ this.selectPlayer(playerID);
92
127
  }
93
128
  }
94
129
 
95
- private selectPlayer(playerID: string, element: Element): void {
130
+ private selectPlayer(playerID: string): void {
96
131
  this.mainContainer.renderMainPanel(playerID);
97
- if (this.currentlySelectedEntry !== null) {
98
- this.currentlySelectedEntry.classList.remove('selected');
99
- this.currentlySelectedEntry.classList.remove('force-white-icons');
100
- }
101
- element.classList.add('selected');
102
- element.classList.add('force-white-icons');
103
- this.currentlySelectedEntry = element;
132
+ this.currentlySelectedPlayerID = playerID;
133
+ this.requestUpdate();
104
134
  }
105
135
 
106
- private rightClickPlayer(playerID: string, event: Event): boolean {
136
+ private rightClickPlayer(playerID: string, event: Event): void {
107
137
  const contextMenu = new UI.ContextMenu.ContextMenu(event);
108
138
  contextMenu.headerSection().appendItem(
109
139
  i18nString(UIStrings.hidePlayer), this.mainContainer.markPlayerForDeletion.bind(this.mainContainer, playerID),
@@ -116,7 +146,6 @@ export class PlayerListView extends UI.Widget.VBox implements TriggerDispatcher
116
146
  i18nString(UIStrings.savePlayerInfo), this.mainContainer.exportPlayerData.bind(this.mainContainer, playerID),
117
147
  {jslogContext: 'save-player-info'});
118
148
  void contextMenu.show();
119
- return true;
120
149
  }
121
150
 
122
151
  private setMediaElementFrameTitle(playerID: string, frameTitle: string, isHostname: boolean): void {
@@ -131,41 +160,36 @@ export class PlayerListView extends UI.Widget.VBox implements TriggerDispatcher
131
160
  return;
132
161
  }
133
162
 
134
- if (!this.playerEntryFragments.has(playerID)) {
163
+ if (!this.playerStatuses.has(playerID)) {
135
164
  return;
136
165
  }
137
- const fragment = this.playerEntryFragments.get(playerID);
138
- if (fragment?.element() === undefined) {
139
- return;
166
+ const playerStatus = this.playerStatuses.get(playerID);
167
+ if (playerStatus) {
168
+ playerStatus.frameTitle = frameTitle;
169
+ this.requestUpdate();
140
170
  }
141
- fragment.$('frame-title').textContent = frameTitle;
142
171
  }
143
172
 
144
173
  private setMediaElementPlayerTitle(playerID: string, playerTitle: string): void {
145
- if (!this.playerEntryFragments.has(playerID)) {
174
+ if (!this.playerStatuses.has(playerID)) {
146
175
  return;
147
176
  }
148
- const fragment = this.playerEntryFragments.get(playerID);
149
- if (fragment === undefined) {
150
- return;
177
+ const playerStatus = this.playerStatuses.get(playerID);
178
+ if (playerStatus) {
179
+ playerStatus.playerTitle = playerTitle;
180
+ this.requestUpdate();
151
181
  }
152
- fragment.$('player-title').textContent = playerTitle;
153
182
  }
154
183
 
155
184
  private setMediaElementPlayerIcon(playerID: string, iconName: string): void {
156
- if (!this.playerEntryFragments.has(playerID)) {
157
- return;
158
- }
159
- const fragment = this.playerEntryFragments.get(playerID);
160
- if (fragment === undefined) {
185
+ if (!this.playerStatuses.has(playerID)) {
161
186
  return;
162
187
  }
163
- const icon = fragment.$('icon');
164
- if (icon === undefined) {
165
- return;
188
+ const playerStatus = this.playerStatuses.get(playerID);
189
+ if (playerStatus) {
190
+ playerStatus.iconName = iconName;
191
+ this.requestUpdate();
166
192
  }
167
- icon.textContent = '';
168
- icon.appendChild(IconButton.Icon.create(iconName, 'media-player'));
169
193
  }
170
194
 
171
195
  private formatAndEvaluate(
@@ -180,22 +204,25 @@ export class PlayerListView extends UI.Widget.VBox implements TriggerDispatcher
180
204
  }
181
205
 
182
206
  addMediaElementItem(playerID: string): void {
183
- const sidebarEntry = this.createPlayerListEntry(playerID);
184
- this.contentElement.appendChild(sidebarEntry.element());
185
- this.playerEntryFragments.set(playerID, sidebarEntry);
207
+ this.playerStatuses.set(playerID, {
208
+ playerTitle: 'PlayerTitle',
209
+ frameTitle: 'FrameTitle',
210
+ playerID,
211
+ exists: true,
212
+ playing: false,
213
+ titleEdited: false,
214
+ iconName: 'pause',
215
+ });
186
216
  this.playerEntriesWithHostnameFrameTitle.add(playerID);
217
+ this.requestUpdate();
187
218
  }
188
219
 
189
220
  deletePlayer(playerID: string): void {
190
- if (!this.playerEntryFragments.has(playerID)) {
191
- return;
192
- }
193
- const fragment = this.playerEntryFragments.get(playerID);
194
- if (fragment?.element() === undefined) {
221
+ if (!this.playerStatuses.has(playerID)) {
195
222
  return;
196
223
  }
197
- this.contentElement.removeChild(fragment.element());
198
- this.playerEntryFragments.delete(playerID);
224
+ this.playerStatuses.delete(playerID);
225
+ this.requestUpdate();
199
226
  }
200
227
 
201
228
  onEvent(playerID: string, event: PlayerEvent): void {
@@ -43,6 +43,11 @@ li.storage-group-list-item::before {
43
43
  .player-entry-status-icon-centering {
44
44
  margin: auto;
45
45
  display: inherit;
46
+
47
+ & > devtools-icon {
48
+ height: 16px;
49
+ width: 16px;
50
+ }
46
51
  }
47
52
 
48
53
  .player-entry-status-icon {
@@ -7,7 +7,7 @@ import * as Common from '../../core/common/common.js';
7
7
  import * as Host from '../../core/host/host.js';
8
8
  import * as i18n from '../../core/i18n/i18n.js';
9
9
  import * as SDK from '../../core/sdk/sdk.js';
10
- import * as IconButton from '../../ui/components/icon_button/icon_button.js';
10
+ import {Icon} from '../../ui/kit/kit.js';
11
11
  import * as UI from '../../ui/legacy/legacy.js';
12
12
  import * as VisualLogging from '../../ui/visual_logging/visual_logging.js';
13
13
 
@@ -392,7 +392,7 @@ export class ThrottlingManager extends Common.ObjectWrapper.ObjectWrapper<Thrott
392
392
 
393
393
  const reset = new UI.Toolbar.ToolbarButton('Reset concurrency', 'undo', undefined, 'hardware-concurrency-reset');
394
394
  reset.setTitle(i18nString(UIStrings.resetConcurrency));
395
- const icon = new IconButton.Icon.Icon();
395
+ const icon = new Icon();
396
396
  icon.name = 'warning-filled';
397
397
  icon.classList.add('small');
398
398
  const warning = new UI.Toolbar.ToolbarItem(icon);
@@ -3,14 +3,13 @@
3
3
  // found in the LICENSE file.
4
4
  /* eslint-disable @devtools/no-imperative-dom-api */
5
5
 
6
- import '../../ui/components/cards/cards.js';
6
+ import '../../ui/kit/kit.js';
7
7
 
8
8
  import * as Common from '../../core/common/common.js';
9
9
  import * as i18n from '../../core/i18n/i18n.js';
10
10
  import * as SDK from '../../core/sdk/sdk.js';
11
11
  import * as Buttons from '../../ui/components/buttons/buttons.js';
12
- import type * as Cards from '../../ui/components/cards/cards.js';
13
- import * as IconButton from '../../ui/components/icon_button/icon_button.js';
12
+ import {type Card, createIcon} from '../../ui/kit/kit.js';
14
13
  import * as UI from '../../ui/legacy/legacy.js';
15
14
  import * as VisualLogging from '../../ui/visual_logging/visual_logging.js';
16
15
 
@@ -198,7 +197,7 @@ function createComputePressurePromise(): Promise<{state: string}> {
198
197
  }
199
198
 
200
199
  export class CPUThrottlingCard {
201
- element: Cards.Card.Card;
200
+ element: Card;
202
201
 
203
202
  private readonly setting: Common.Settings.Setting<SDK.CPUThrottlingManager.CalibratedCPUThrottling>;
204
203
  private computePressurePromise?: ReturnType<typeof createComputePressurePromise>;
@@ -352,7 +351,7 @@ export class CPUThrottlingCard {
352
351
  private createTextWithIcon(text: string, icon: string): HTMLElement {
353
352
  const el = document.createElement('div');
354
353
  el.classList.add('text-with-icon');
355
- el.append(IconButton.Icon.create(icon));
354
+ el.append(createIcon(icon));
356
355
  el.append(text);
357
356
  return el;
358
357
  }
@@ -48,7 +48,7 @@ import * as Logs from '../../models/logs/logs.js';
48
48
  import type * as NetworkTimeCalculator from '../../models/network_time_calculator/network_time_calculator.js';
49
49
  import * as NetworkForward from '../../panels/network/forward/forward.js';
50
50
  import * as Buttons from '../../ui/components/buttons/buttons.js';
51
- import * as IconButton from '../../ui/components/icon_button/icon_button.js';
51
+ import {createIcon} from '../../ui/kit/kit.js';
52
52
  import * as DataGrid from '../../ui/legacy/components/data_grid/data_grid.js';
53
53
  import * as PerfUI from '../../ui/legacy/components/perf_ui/perf_ui.js';
54
54
  import * as Components from '../../ui/legacy/components/utils/utils.js';
@@ -1428,7 +1428,7 @@ export class NetworkRequestNode extends NetworkNode {
1428
1428
  case SDK.NetworkRequest.InitiatorType.PREFLIGHT: {
1429
1429
  cell.appendChild(document.createTextNode(i18nString(UIStrings.preflight)));
1430
1430
  if (initiator.initiatorRequest) {
1431
- const icon = IconButton.Icon.create('arrow-up-down-circle');
1431
+ const icon = createIcon('arrow-up-down-circle');
1432
1432
  const link = Components.Linkifier.Linkifier.linkifyRevealable(
1433
1433
  initiator.initiatorRequest, icon, undefined, i18nString(UIStrings.selectTheRequestThatTriggered),
1434
1434
  'trailing-link-icon', 'initator-request');
@@ -1513,7 +1513,7 @@ export class NetworkRequestNode extends NetworkNode {
1513
1513
  const throttlingConditionsTitle = typeof throttlingConditions.conditions.title === 'string' ?
1514
1514
  throttlingConditions.conditions.title :
1515
1515
  throttlingConditions.conditions.title();
1516
- const icon = IconButton.Icon.create('watch');
1516
+ const icon = createIcon('watch');
1517
1517
  icon.title = i18nString(UIStrings.wasThrottled, {PH1: throttlingConditionsTitle});
1518
1518
  icon.addEventListener('click', () => void Common.Revealer.reveal(throttlingConditions));
1519
1519
  cell.append(icon);
@@ -4,7 +4,7 @@
4
4
 
5
5
  import * as Common from '../../core/common/common.js';
6
6
  import * as SDK from '../../core/sdk/sdk.js';
7
- import * as IconButton from '../../ui/components/icon_button/icon_button.js';
7
+ import {createIcon} from '../../ui/kit/kit.js';
8
8
  import type * as DataGrid from '../../ui/legacy/components/data_grid/data_grid.js';
9
9
  import * as UI from '../../ui/legacy/legacy.js';
10
10
 
@@ -56,7 +56,7 @@ export class FrameGroupNode extends NetworkGroupNode {
56
56
  const columnIndex = (this.dataGrid as DataGrid.DataGrid.DataGridImpl<unknown>).indexOfVisibleColumn(columnId);
57
57
  if (columnIndex === 0) {
58
58
  const name = this.displayName();
59
- cell.appendChild(IconButton.Icon.create('frame', 'network-frame-group-icon'));
59
+ cell.appendChild(createIcon('frame', 'network-frame-group-icon'));
60
60
  UI.UIUtils.createTextChild(cell, name);
61
61
  UI.Tooltip.Tooltip.install(cell, name);
62
62
  this.setCellAccessibleName(cell.textContent || '', cell, columnId);
@@ -10,8 +10,8 @@ import * as Platform from '../../core/platform/platform.js';
10
10
  import * as SDK from '../../core/sdk/sdk.js';
11
11
  import type * as NetworkTimeCalculator from '../../models/network_time_calculator/network_time_calculator.js';
12
12
  import * as NetworkForward from '../../panels/network/forward/forward.js';
13
- import * as IconButton from '../../ui/components/icon_button/icon_button.js';
14
13
  import * as LegacyWrapper from '../../ui/components/legacy_wrapper/legacy_wrapper.js';
14
+ import {Icon} from '../../ui/kit/kit.js';
15
15
  import type * as SourceFrame from '../../ui/legacy/components/source_frame/source_frame.js';
16
16
  import * as UI from '../../ui/legacy/legacy.js';
17
17
  import * as VisualLogging from '../../ui/visual_logging/visual_logging.js';
@@ -208,7 +208,7 @@ export class NetworkItemView extends UI.TabbedPane.TabbedPane {
208
208
  i18nString(UIStrings.responsePreview));
209
209
  const signedExchangeInfo = request.signedExchangeInfo();
210
210
  if (signedExchangeInfo?.errors?.length) {
211
- const icon = new IconButton.Icon.Icon();
211
+ const icon = new Icon();
212
212
  icon.name = 'cross-circle-filled';
213
213
  icon.classList.add('small');
214
214
  UI.Tooltip.Tooltip.install(icon, i18nString(UIStrings.signedexchangeError));
@@ -292,7 +292,7 @@ export class NetworkItemView extends UI.TabbedPane.TabbedPane {
292
292
  i18nString(UIStrings.requestAndResponseCookies));
293
293
  }
294
294
  if (this.#request.hasThirdPartyCookiePhaseoutIssue()) {
295
- const icon = new IconButton.Icon.Icon();
295
+ const icon = new Icon();
296
296
  icon.name = 'warning-filled';
297
297
  icon.classList.add('small');
298
298
  icon.title = i18nString(UIStrings.thirdPartyPhaseout);
@@ -317,7 +317,7 @@ export class NetworkItemView extends UI.TabbedPane.TabbedPane {
317
317
  const trustTokenResult = this.#request.trustTokenOperationDoneEvent();
318
318
  if (trustTokenResult &&
319
319
  !NetworkComponents.RequestTrustTokensView.statusConsideredSuccess(trustTokenResult.status)) {
320
- const icon = new IconButton.Icon.Icon();
320
+ const icon = new Icon();
321
321
  icon.name = 'cross-circle-filled';
322
322
  icon.classList.add('small');
323
323
  this.setTabIcon(NetworkForward.UIRequestLocation.UIRequestTabs.TRUST_TOKENS, icon);
@@ -6,7 +6,7 @@
6
6
  import * as Common from '../../core/common/common.js';
7
7
  import * as i18n from '../../core/i18n/i18n.js';
8
8
  import type * as NetworkTimeCalculator from '../../models/network_time_calculator/network_time_calculator.js';
9
- import * as IconButton from '../../ui/components/icon_button/icon_button.js';
9
+ import {Icon} from '../../ui/kit/kit.js';
10
10
  import * as DataGrid from '../../ui/legacy/components/data_grid/data_grid.js';
11
11
  import * as Components from '../../ui/legacy/components/utils/utils.js';
12
12
  import * as UI from '../../ui/legacy/legacy.js';
@@ -181,7 +181,7 @@ export class NetworkLogViewColumns {
181
181
  private waterfallScroller!: HTMLElement;
182
182
  private waterfallScrollerContent!: HTMLDivElement;
183
183
  private waterfallHeaderElement!: HTMLElement;
184
- private waterfallColumnSortIcon!: IconButton.Icon.Icon;
184
+ private waterfallColumnSortIcon!: Icon;
185
185
  private activeWaterfallSortId!: string;
186
186
  private popoverHelper?: UI.PopoverHelper.PopoverHelper;
187
187
  private hasScrollerTouchStarted?: boolean;
@@ -415,7 +415,7 @@ export class NetworkLogViewColumns {
415
415
  this.waterfallHeaderElement.createChild('div', 'hover-layer');
416
416
  const innerElement = this.waterfallHeaderElement.createChild('div');
417
417
  innerElement.textContent = i18nString(UIStrings.waterfall);
418
- this.waterfallColumnSortIcon = new IconButton.Icon.Icon();
418
+ this.waterfallColumnSortIcon = new Icon();
419
419
  this.waterfallColumnSortIcon.className = 'sort-order-icon';
420
420
  this.waterfallHeaderElement.createChild('div', 'sort-order-icon-container')
421
421
  .appendChild(this.waterfallColumnSortIcon);
@@ -86,9 +86,8 @@ const UIStrings = {
86
86
  textPatternToBlockMatching: 'Text pattern to block matching requests; use * for wildcard',
87
87
  /**
88
88
  * @description Text in Blocked URLs Pane of the Network panel
89
- * @example {Learn more} PH1
90
89
  */
91
- textEditPattern: 'Text pattern to block or throttle matching requests; use URL Pattern syntax. {PH1}',
90
+ textEditPattern: 'Text pattern to block or throttle matching requests; use URL Pattern syntax.',
92
91
  /**
93
92
  * @description Error text for empty list widget input in Request Blocking tool
94
93
  */
@@ -449,7 +448,7 @@ export class RequestConditionsDrawer extends UI.Widget.VBox implements
449
448
  <devtools-button
450
449
  .iconName=${'arrow-up'}
451
450
  .variant=${Buttons.Button.Variant.ICON}
452
- .title=${i18nString(UIStrings.decreasePriority, {PH1: constructorStringOrWildcardURL})}
451
+ .title=${i18nString(UIStrings.increasePriority, {PH1: constructorStringOrWildcardURL})}
453
452
  .jslogContext=${'decrease-priority'}
454
453
  ?disabled=${!editable || !originalOrUpgradedURLPattern}
455
454
  @click=${moveUp}>
@@ -457,7 +456,7 @@ export class RequestConditionsDrawer extends UI.Widget.VBox implements
457
456
  <devtools-button
458
457
  .iconName=${'arrow-down'}
459
458
  .variant=${Buttons.Button.Variant.ICON}
460
- .title=${i18nString(UIStrings.increasePriority, {PH1: constructorStringOrWildcardURL})}
459
+ .title=${i18nString(UIStrings.decreasePriority, {PH1: constructorStringOrWildcardURL})}
461
460
  .jslogContext=${'increase-priority'}
462
461
  ?disabled=${!editable || !originalOrUpgradedURLPattern}
463
462
  @click=${moveDown}></devtools-button>
@@ -579,7 +578,8 @@ export class RequestConditionsDrawer extends UI.Widget.VBox implements
579
578
  const learnMore = UI.XLink.XLink.create(
580
579
  PATTERN_API_DOCS_URL, i18nString(UIStrings.learnMore), undefined, undefined, 'learn-more');
581
580
  learnMore.title = i18nString(UIStrings.learnMoreLabel);
582
- label.append(uiI18n.getFormatLocalizedString(str_, UIStrings.textEditPattern, {PH1: learnMore}));
581
+ titles.append('\xA0', learnMore);
582
+ label.textContent = i18nString(UIStrings.textEditPattern);
583
583
  } else {
584
584
  label.textContent = i18nString(UIStrings.textPatternToBlockMatching);
585
585
  }
@@ -7,8 +7,8 @@ import * as Common from '../../core/common/common.js';
7
7
  import * as i18n from '../../core/i18n/i18n.js';
8
8
  import * as SDK from '../../core/sdk/sdk.js';
9
9
  import * as Protocol from '../../generated/protocol.js';
10
- import * as IconButton from '../../ui/components/icon_button/icon_button.js';
11
10
  import * as uiI18n from '../../ui/i18n/i18n.js';
11
+ import {Icon} from '../../ui/kit/kit.js';
12
12
  import * as CookieTable from '../../ui/legacy/components/cookie_table/cookie_table.js';
13
13
  import * as SettingsUI from '../../ui/legacy/components/settings_ui/settings_ui.js';
14
14
  import * as UI from '../../ui/legacy/legacy.js';
@@ -281,7 +281,7 @@ export class RequestCookiesView extends UI.Widget.Widget {
281
281
  this.malformedResponseCookiesList.removeChildren();
282
282
  for (const malformedCookie of malformedResponseCookies) {
283
283
  const listItem = this.malformedResponseCookiesList.createChild('span', 'cookie-line source-code');
284
- const icon = new IconButton.Icon.Icon();
284
+ const icon = new Icon();
285
285
  icon.name = 'cross-circle-filled';
286
286
  icon.classList.add('cookie-warning-icon', 'small');
287
287
  listItem.appendChild(icon);
@@ -7,7 +7,7 @@ import * as Host from '../../core/host/host.js';
7
7
  import * as i18n from '../../core/i18n/i18n.js';
8
8
  import type * as SDK from '../../core/sdk/sdk.js';
9
9
  import * as Protocol from '../../generated/protocol.js';
10
- import * as IconButton from '../../ui/components/icon_button/icon_button.js';
10
+ import {Icon} from '../../ui/kit/kit.js';
11
11
  import * as Components from '../../ui/legacy/components/utils/utils.js';
12
12
  import * as UI from '../../ui/legacy/legacy.js';
13
13
 
@@ -127,7 +127,7 @@ export class SignedExchangeInfoView extends UI.Widget.VBox {
127
127
  const errorMessagesCategory = new Category(root, i18nString(UIStrings.errors));
128
128
  for (const error of signedExchangeInfo.errors) {
129
129
  const fragment = document.createDocumentFragment();
130
- const icon = new IconButton.Icon.Icon();
130
+ const icon = new Icon();
131
131
  icon.name = 'cross-circle-filled';
132
132
  icon.classList.add('prompt-icon', 'small');
133
133
  fragment.appendChild(icon);