chrome-devtools-frontend 1.0.941208 → 1.0.943182

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 (289) hide show
  1. package/WATCHLISTS +1 -1
  2. package/config/gni/all_devtools_files.gni +0 -64
  3. package/config/gni/devtools_grd_files.gni +54 -19
  4. package/config/gni/devtools_image_files.gni +1 -3
  5. package/front_end/.eslintrc.js +11 -1
  6. package/front_end/Images/src/{feedback_thin_16x16_icon.svg → survey_feedback_icon.svg} +1 -1
  7. package/front_end/Tests.js +1 -32
  8. package/front_end/core/common/Color.ts +5 -0
  9. package/front_end/core/i18n/locales/en-US.json +17 -29
  10. package/front_end/core/i18n/locales/en-XL.json +17 -29
  11. package/front_end/core/sdk/CPUProfilerModel.ts +7 -9
  12. package/front_end/core/sdk/ConsoleModel.ts +27 -33
  13. package/front_end/core/sdk/DebuggerModel.ts +4 -14
  14. package/front_end/core/sdk/sdk-meta.ts +17 -3
  15. package/front_end/entrypoints/device_mode_emulation_frame/device_mode_emulation_frame.ts +1 -1
  16. package/front_end/entrypoints/devtools_app/devtools_app.js +1 -1
  17. package/front_end/entrypoints/devtools_app/devtools_app.json +1 -12
  18. package/front_end/entrypoints/formatter_worker/formatter_worker-entrypoint.ts +1 -1
  19. package/front_end/entrypoints/heap_snapshot_worker/heap_snapshot_worker-entrypoint.ts +1 -1
  20. package/front_end/entrypoints/inspector/inspector.js +1 -1
  21. package/front_end/entrypoints/inspector/inspector.json +1 -3
  22. package/front_end/entrypoints/inspector_main/inspector_main-meta.ts +2 -3
  23. package/front_end/entrypoints/js_app/js_app.js +1 -1
  24. package/front_end/entrypoints/js_app/js_app.json +1 -3
  25. package/front_end/entrypoints/main/MainImpl.ts +26 -0
  26. package/front_end/entrypoints/main/main-meta.ts +1 -2
  27. package/front_end/entrypoints/ndb_app/ndb_app.js +1 -1
  28. package/front_end/entrypoints/node_app/node_app-meta.ts +0 -2
  29. package/front_end/entrypoints/node_app/node_app.js +1 -1
  30. package/front_end/entrypoints/node_app/node_app.json +1 -3
  31. package/front_end/entrypoints/node_main/node_main-meta.ts +0 -1
  32. package/front_end/entrypoints/shell/shell.js +0 -11
  33. package/front_end/entrypoints/shell/shell.json +1 -5
  34. package/front_end/entrypoints/wasmparser_worker/wasmparser_worker-entrypoint.ts +1 -1
  35. package/front_end/entrypoints/worker_app/worker_app.js +1 -1
  36. package/front_end/entrypoints/worker_app/worker_app.json +1 -7
  37. package/front_end/generated/InspectorBackendCommands.js +19 -0
  38. package/front_end/generated/protocol-mapping.d.ts +31 -1
  39. package/front_end/generated/protocol-proxy-api.d.ts +34 -2
  40. package/front_end/generated/protocol.d.ts +81 -6
  41. package/front_end/legacy_test_runner/bindings_test_runner/IsolatedFilesystemTestRunner.js +2 -2
  42. package/front_end/legacy_test_runner/console_test_runner/console_test_runner.js +5 -1
  43. package/front_end/legacy_test_runner/legacy_test_runner.ts +10 -1
  44. package/front_end/legacy_test_runner/test_runner/TestRunner.js +3 -1
  45. package/front_end/models/formatter/SourceFormatter.ts +0 -10
  46. package/front_end/models/persistence/persistence-meta.ts +0 -1
  47. package/front_end/models/workspace/UISourceCode.ts +9 -42
  48. package/front_end/panels/accessibility/accessibility-meta.ts +0 -1
  49. package/front_end/panels/animation/AnimationTimeline.ts +3 -3
  50. package/front_end/panels/animation/animation-meta.ts +0 -1
  51. package/front_end/panels/application/ApplicationPanelSidebar.ts +3 -3
  52. package/front_end/panels/application/BackForwardCacheStrings.ts +3 -1
  53. package/front_end/panels/application/application-meta.ts +0 -4
  54. package/front_end/panels/application/components/EndpointsGrid.ts +1 -1
  55. package/front_end/panels/application/components/ReportsGrid.ts +1 -1
  56. package/front_end/panels/application/components/stackTraceRow.css +8 -0
  57. package/front_end/panels/browser_debugger/browser_debugger-meta.ts +1 -2
  58. package/front_end/panels/changes/changes-meta.ts +0 -1
  59. package/front_end/panels/console/ConsolePinPane.ts +23 -32
  60. package/front_end/panels/console/ConsoleViewMessage.ts +8 -1
  61. package/front_end/panels/console/console-meta.ts +0 -1
  62. package/front_end/panels/console_counters/console_counters-meta.ts +0 -1
  63. package/front_end/panels/coverage/CoverageDecorationManager.ts +4 -5
  64. package/front_end/panels/coverage/CoverageView.ts +2 -105
  65. package/front_end/panels/coverage/coverage-meta.ts +0 -1
  66. package/front_end/panels/css_overview/components/CSSOverviewStartView.ts +11 -56
  67. package/front_end/panels/css_overview/components/cssOverviewStartView.css +1 -8
  68. package/front_end/panels/css_overview/css_overview-meta.ts +0 -1
  69. package/front_end/panels/developer_resources/developer_resources-meta.ts +0 -1
  70. package/front_end/panels/elements/ElementsTreeElement.ts +4 -9
  71. package/front_end/panels/elements/components/StylePropertyEditor.ts +2 -0
  72. package/front_end/panels/elements/components/adornerSettingsPane.css +0 -4
  73. package/front_end/panels/elements/elements-meta.ts +0 -1
  74. package/front_end/panels/emulation/DeviceModeToolbar.ts +3 -1
  75. package/front_end/panels/emulation/DeviceModeView.ts +2 -1
  76. package/front_end/panels/emulation/InspectedPagePlaceholder.ts +3 -1
  77. package/front_end/panels/emulation/MediaQueryInspector.ts +3 -1
  78. package/front_end/panels/emulation/emulation-meta.ts +2 -5
  79. package/front_end/panels/help/help-meta.ts +0 -1
  80. package/front_end/panels/input/input-meta.ts +0 -1
  81. package/front_end/panels/issues/issues-meta.ts +0 -3
  82. package/front_end/panels/js_profiler/js_profiler-meta.ts +0 -4
  83. package/front_end/panels/layers/layers-meta.ts +0 -4
  84. package/front_end/panels/lighthouse/LighthousePanel.ts +2 -4
  85. package/front_end/panels/lighthouse/LighthouseReportRenderer.ts +1 -4
  86. package/front_end/panels/lighthouse/lighthouse-meta.ts +0 -1
  87. package/front_end/panels/lighthouse/lighthouseStartView.css +4 -0
  88. package/front_end/panels/lighthouse/module.json +0 -6
  89. package/front_end/panels/media/media-meta.ts +0 -4
  90. package/front_end/panels/mobile_throttling/mobile_throttling-meta.ts +0 -1
  91. package/front_end/panels/network/ResourceWebSocketFrameView.ts +2 -1
  92. package/front_end/panels/network/network-meta.ts +1 -5
  93. package/front_end/panels/performance_monitor/performance_monitor-meta.ts +0 -1
  94. package/front_end/panels/profiler/CPUProfileView.ts +10 -3
  95. package/front_end/panels/profiler/profiler-meta.ts +0 -3
  96. package/front_end/panels/protocol_monitor/protocol_monitor-meta.ts +0 -1
  97. package/front_end/panels/screencast/screencast-meta.ts +0 -4
  98. package/front_end/panels/security/security-meta.ts +0 -4
  99. package/front_end/panels/sensors/sensors-meta.ts +0 -1
  100. package/front_end/panels/settings/emulation/emulation-meta.ts +0 -1
  101. package/front_end/panels/settings/settings-meta.ts +0 -1
  102. package/front_end/panels/sources/BreakpointEditDialog.ts +16 -30
  103. package/front_end/panels/sources/CSSPlugin.ts +310 -331
  104. package/front_end/panels/sources/CallStackSidebarPane.ts +28 -34
  105. package/front_end/panels/sources/CoveragePlugin.ts +121 -6
  106. package/front_end/panels/sources/DebuggerPlugin.ts +1166 -1243
  107. package/front_end/panels/sources/EditingLocationHistoryManager.ts +71 -101
  108. package/front_end/panels/sources/GoToLineQuickOpen.ts +4 -3
  109. package/front_end/panels/sources/InplaceFormatterEditorAction.ts +3 -3
  110. package/front_end/panels/sources/JavaScriptCompilerPlugin.ts +26 -23
  111. package/front_end/panels/sources/Plugin.ts +20 -4
  112. package/front_end/panels/sources/ProfilePlugin.ts +185 -0
  113. package/front_end/panels/sources/ScriptFormatterEditorAction.ts +3 -3
  114. package/front_end/panels/sources/ScriptOriginPlugin.ts +0 -10
  115. package/front_end/panels/sources/SnippetsPlugin.ts +1 -10
  116. package/front_end/panels/sources/SourcesPanel.ts +6 -5
  117. package/front_end/panels/sources/SourcesView.ts +10 -8
  118. package/front_end/panels/sources/TabbedEditorContainer.ts +31 -27
  119. package/front_end/panels/sources/UISourceCodeFrame.ts +335 -470
  120. package/front_end/panels/sources/WatchExpressionsSidebarPane.ts +3 -2
  121. package/front_end/panels/sources/sources-legacy.ts +0 -6
  122. package/front_end/panels/sources/sources-meta.ts +2 -6
  123. package/front_end/panels/sources/sources.ts +0 -2
  124. package/front_end/panels/timeline/timeline-meta.ts +2 -9
  125. package/front_end/panels/web_audio/web_audio-meta.ts +0 -1
  126. package/front_end/panels/webauthn/webauthn-meta.ts +0 -1
  127. package/front_end/third_party/codemirror.next/bundle.ts +9 -13
  128. package/front_end/third_party/codemirror.next/chunk/codemirror.js +1 -1
  129. package/front_end/third_party/codemirror.next/chunk/javascript.js +2 -2
  130. package/front_end/third_party/codemirror.next/chunk/markdown.js +2 -6
  131. package/front_end/third_party/codemirror.next/chunk/php.js +2 -6
  132. package/front_end/third_party/codemirror.next/chunk/python.js +1 -1
  133. package/front_end/third_party/codemirror.next/chunk/wast.js +1 -1
  134. package/front_end/third_party/codemirror.next/chunk/xml.js +2 -2
  135. package/front_end/third_party/codemirror.next/codemirror.next.d.ts +279 -198
  136. package/front_end/third_party/codemirror.next/codemirror.next.js +1 -1
  137. package/front_end/third_party/codemirror.next/package.json +13 -11
  138. package/front_end/third_party/lighthouse/lighthouse-dt-bundle.js +1128 -1158
  139. package/front_end/third_party/lighthouse/locales/ar-XB.json +211 -79
  140. package/front_end/third_party/lighthouse/locales/ar.json +213 -81
  141. package/front_end/third_party/lighthouse/locales/bg.json +211 -79
  142. package/front_end/third_party/lighthouse/locales/ca.json +212 -80
  143. package/front_end/third_party/lighthouse/locales/cs.json +211 -79
  144. package/front_end/third_party/lighthouse/locales/da.json +211 -79
  145. package/front_end/third_party/lighthouse/locales/de.json +211 -79
  146. package/front_end/third_party/lighthouse/locales/el.json +213 -81
  147. package/front_end/third_party/lighthouse/locales/en-GB.json +211 -79
  148. package/front_end/third_party/lighthouse/locales/en-US.json +186 -75
  149. package/front_end/third_party/lighthouse/locales/en-XA.json +211 -79
  150. package/front_end/third_party/lighthouse/locales/en-XL.json +186 -75
  151. package/front_end/third_party/lighthouse/locales/es-419.json +211 -79
  152. package/front_end/third_party/lighthouse/locales/es.json +212 -80
  153. package/front_end/third_party/lighthouse/locales/fi.json +211 -79
  154. package/front_end/third_party/lighthouse/locales/fil.json +211 -79
  155. package/front_end/third_party/lighthouse/locales/fr.json +211 -79
  156. package/front_end/third_party/lighthouse/locales/he.json +212 -80
  157. package/front_end/third_party/lighthouse/locales/hi.json +214 -82
  158. package/front_end/third_party/lighthouse/locales/hr.json +211 -79
  159. package/front_end/third_party/lighthouse/locales/hu.json +211 -79
  160. package/front_end/third_party/lighthouse/locales/id.json +211 -79
  161. package/front_end/third_party/lighthouse/locales/it.json +211 -79
  162. package/front_end/third_party/lighthouse/locales/ja.json +211 -79
  163. package/front_end/third_party/lighthouse/locales/ko.json +211 -79
  164. package/front_end/third_party/lighthouse/locales/lt.json +211 -79
  165. package/front_end/third_party/lighthouse/locales/lv.json +214 -82
  166. package/front_end/third_party/lighthouse/locales/nl.json +211 -79
  167. package/front_end/third_party/lighthouse/locales/no.json +211 -79
  168. package/front_end/third_party/lighthouse/locales/pl.json +211 -79
  169. package/front_end/third_party/lighthouse/locales/pt-PT.json +211 -79
  170. package/front_end/third_party/lighthouse/locales/pt.json +211 -79
  171. package/front_end/third_party/lighthouse/locales/ro.json +212 -80
  172. package/front_end/third_party/lighthouse/locales/ru.json +211 -79
  173. package/front_end/third_party/lighthouse/locales/sk.json +211 -79
  174. package/front_end/third_party/lighthouse/locales/sl.json +211 -79
  175. package/front_end/third_party/lighthouse/locales/sr-Latn.json +211 -79
  176. package/front_end/third_party/lighthouse/locales/sr.json +211 -79
  177. package/front_end/third_party/lighthouse/locales/sv.json +211 -79
  178. package/front_end/third_party/lighthouse/locales/ta.json +218 -86
  179. package/front_end/third_party/lighthouse/locales/te.json +251 -119
  180. package/front_end/third_party/lighthouse/locales/th.json +211 -79
  181. package/front_end/third_party/lighthouse/locales/tr.json +211 -79
  182. package/front_end/third_party/lighthouse/locales/uk.json +212 -80
  183. package/front_end/third_party/lighthouse/locales/vi.json +211 -79
  184. package/front_end/third_party/lighthouse/locales/zh-HK.json +211 -79
  185. package/front_end/third_party/lighthouse/locales/zh-TW.json +211 -79
  186. package/front_end/third_party/lighthouse/locales/zh.json +211 -79
  187. package/front_end/third_party/lighthouse/report/bundle.d.ts +72 -34
  188. package/front_end/third_party/lighthouse/report/bundle.js +698 -492
  189. package/front_end/third_party/lighthouse/report-assets/report-generator.js +1 -2
  190. package/front_end/third_party/lighthouse/report-assets/report.js +40 -35
  191. package/front_end/third_party/lighthouse/report-assets/standalone-template.html +2 -4
  192. package/front_end/ui/components/code_highlighter/CodeHighlighter.ts +60 -68
  193. package/front_end/ui/components/data_grid/dataGrid.css +12 -10
  194. package/front_end/ui/components/docs/component_docs.ts +14 -0
  195. package/front_end/ui/components/docs/create_breadcrumbs.ts +1 -1
  196. package/front_end/ui/components/docs/css_overview/start_view.html +25 -0
  197. package/front_end/ui/components/docs/css_overview/start_view.ts +14 -0
  198. package/front_end/ui/components/docs/icon_button/basic.ts +3 -3
  199. package/front_end/ui/components/docs/toggle_dark_mode.ts +1 -0
  200. package/front_end/ui/components/docs/toggle_fonts.ts +2 -0
  201. package/front_end/ui/components/helpers/get-stylesheet.ts +0 -15
  202. package/front_end/ui/components/linear_memory_inspector/linear_memory_inspector-meta.ts +1 -2
  203. package/front_end/ui/components/markdown_view/MarkdownImagesMap.ts +1 -1
  204. package/front_end/ui/components/survey_link/SurveyLink.ts +1 -1
  205. package/front_end/ui/components/text_editor/TextEditor.ts +79 -36
  206. package/front_end/ui/components/text_editor/config.ts +42 -26
  207. package/front_end/ui/components/text_editor/javascript.ts +2 -3
  208. package/front_end/ui/components/text_editor/position.ts +17 -0
  209. package/front_end/ui/components/text_editor/text_editor.ts +1 -0
  210. package/front_end/ui/components/text_editor/theme.ts +5 -1
  211. package/front_end/ui/components/tree_outline/TreeOutline.ts +63 -8
  212. package/front_end/ui/components/tree_outline/TreeOutlineUtils.ts +8 -6
  213. package/front_end/ui/legacy/Dialog.ts +3 -1
  214. package/front_end/ui/legacy/DropTarget.ts +2 -1
  215. package/front_end/ui/legacy/EmptyWidget.ts +2 -1
  216. package/front_end/ui/legacy/FilterBar.ts +2 -1
  217. package/front_end/ui/legacy/GlassPane.ts +4 -2
  218. package/front_end/ui/legacy/Infobar.ts +5 -8
  219. package/front_end/ui/legacy/InspectorView.ts +6 -1
  220. package/front_end/ui/legacy/ListWidget.ts +2 -1
  221. package/front_end/ui/legacy/PopoverHelper.ts +2 -1
  222. package/front_end/ui/legacy/ProgressIndicator.ts +2 -1
  223. package/front_end/ui/legacy/RemoteDebuggingTerminatedScreen.ts +2 -1
  224. package/front_end/ui/legacy/ReportView.ts +2 -1
  225. package/front_end/ui/legacy/RootView.ts +2 -1
  226. package/front_end/ui/legacy/SearchableView.ts +2 -1
  227. package/front_end/ui/legacy/ShortcutRegistry.ts +11 -7
  228. package/front_end/ui/legacy/SoftContextMenu.ts +3 -2
  229. package/front_end/ui/legacy/SoftDropDown.ts +4 -2
  230. package/front_end/ui/legacy/SplitWidget.ts +2 -1
  231. package/front_end/ui/legacy/SuggestBox.ts +2 -1
  232. package/front_end/ui/legacy/TabbedPane.ts +2 -1
  233. package/front_end/ui/legacy/TargetCrashedScreen.ts +2 -1
  234. package/front_end/ui/legacy/TextPrompt.ts +2 -1
  235. package/front_end/ui/legacy/Toolbar.ts +3 -2
  236. package/front_end/ui/legacy/Treeoutline.ts +4 -3
  237. package/front_end/ui/legacy/UIUtils.ts +17 -14
  238. package/front_end/ui/legacy/ViewManager.ts +2 -1
  239. package/front_end/ui/legacy/components/inline_editor/CSSAngle.ts +1 -2
  240. package/front_end/ui/legacy/components/inline_editor/cssAngle.css +4 -0
  241. package/front_end/ui/legacy/components/object_ui/JavaScriptREPL.ts +2 -2
  242. package/front_end/ui/legacy/components/object_ui/object_ui-meta.ts +0 -4
  243. package/front_end/ui/legacy/components/perf_ui/LineLevelProfile.ts +35 -131
  244. package/front_end/ui/legacy/components/perf_ui/perf_ui-meta.ts +0 -3
  245. package/front_end/ui/legacy/components/quick_open/filteredListWidget.css +2 -2
  246. package/front_end/ui/legacy/components/quick_open/quick_open-meta.ts +2 -3
  247. package/front_end/ui/legacy/components/source_frame/BinaryResourceViewFactory.ts +3 -6
  248. package/front_end/ui/legacy/components/source_frame/FontView.ts +4 -1
  249. package/front_end/ui/legacy/components/source_frame/ImageView.ts +4 -1
  250. package/front_end/ui/legacy/components/source_frame/JSONView.ts +4 -1
  251. package/front_end/ui/legacy/components/source_frame/ResourceSourceFrame.ts +21 -15
  252. package/front_end/ui/legacy/components/source_frame/SourceFrame.ts +501 -252
  253. package/front_end/ui/legacy/components/source_frame/XMLView.ts +7 -2
  254. package/front_end/ui/legacy/components/source_frame/source_frame-legacy.ts +0 -11
  255. package/front_end/ui/legacy/components/source_frame/source_frame.ts +0 -2
  256. package/front_end/ui/legacy/components/text_editor/CodeMirrorTextEditor.ts +2 -0
  257. package/front_end/ui/legacy/components/text_editor/cmdevtools.css +3 -1
  258. package/front_end/ui/legacy/components/text_editor/module.json +0 -3
  259. package/front_end/ui/legacy/components/utils/Linkifier.ts +7 -15
  260. package/front_end/ui/legacy/radioButton.css +1 -13
  261. package/front_end/ui/legacy/textButton.css +5 -4
  262. package/front_end/ui/legacy/themeColors.css +36 -0
  263. package/front_end/ui/legacy/theme_support/theme_support_impl.ts +7 -9
  264. package/front_end/ui/legacy/utils/create-shadow-root-with-core-styles.ts +2 -2
  265. package/front_end/ui/legacy/utils/inject-core-styles.ts +7 -4
  266. package/package.json +1 -1
  267. package/scripts/check_gn.js +0 -35
  268. package/scripts/eslint_rules/lib/es_modules_import.js +15 -8
  269. package/scripts/eslint_rules/tests/es_modules_import_test.js +8 -0
  270. package/front_end/Images/radioDot-dark-theme.png +0 -0
  271. package/front_end/Images/radioDot.png +0 -0
  272. package/front_end/emulated_devices/module.json +0 -6
  273. package/front_end/panels/application/module.json +0 -6
  274. package/front_end/panels/emulation/module.json +0 -11
  275. package/front_end/panels/issues/module.json +0 -6
  276. package/front_end/panels/js_profiler/module.json +0 -5
  277. package/front_end/panels/layer_viewer/module.json +0 -5
  278. package/front_end/panels/layers/module.json +0 -5
  279. package/front_end/panels/media/module.json +0 -5
  280. package/front_end/panels/network/module.json +0 -5
  281. package/front_end/panels/profiler/module.json +0 -5
  282. package/front_end/panels/screencast/module.json +0 -6
  283. package/front_end/panels/security/module.json +0 -5
  284. package/front_end/panels/timeline/module.json +0 -7
  285. package/front_end/third_party/lighthouse/report-assets/report.css +0 -1774
  286. package/front_end/ui/legacy/components/source_frame/SourcesTextEditor.ts +0 -1030
  287. package/front_end/ui/legacy/components/source_frame/messagesPopover.css +0 -32
  288. package/front_end/ui/legacy/components/source_frame/module.json +0 -14
  289. package/front_end/ui/legacy/module.json +0 -41
@@ -31,24 +31,35 @@ export const dynamicSetting = CM.Facet.define<DynamicSetting<unknown>>();
31
31
 
32
32
  export class DynamicSetting<T> {
33
33
  compartment = new CM.Compartment();
34
- extension: CM.Extension;
35
34
 
36
35
  constructor(
37
36
  readonly settingName: string,
38
- private readonly getExtension: (value: T, state: CM.EditorState) => CM.Extension,
37
+ private readonly getExtension: (value: T) => CM.Extension,
39
38
  ) {
40
- this.extension = [this.compartment.of(empty), dynamicSetting.of(this as DynamicSetting<unknown>)];
39
+ }
40
+
41
+ settingValue(): T {
42
+ return Common.Settings.Settings.instance().moduleSetting(this.settingName).get() as T;
43
+ }
44
+
45
+ instance(): CM.Extension {
46
+ return [
47
+ this.compartment.of(this.getExtension(this.settingValue())),
48
+ dynamicSetting.of(this as DynamicSetting<unknown>),
49
+ ];
41
50
  }
42
51
 
43
52
  sync(state: CM.EditorState, value: T): CM.StateEffect<unknown>|null {
44
53
  const cur = this.compartment.get(state);
45
- const needed = this.getExtension(value, state);
54
+ const needed = this.getExtension(value);
46
55
  return cur === needed ? null : this.compartment.reconfigure(needed);
47
56
  }
48
57
 
49
58
  static bool(name: string, enabled: CM.Extension, disabled: CM.Extension = empty): DynamicSetting<boolean> {
50
59
  return new DynamicSetting<boolean>(name, val => val ? enabled : disabled);
51
60
  }
61
+
62
+ static none: readonly DynamicSetting<unknown>[] = [];
52
63
  }
53
64
 
54
65
  export const tabMovesFocus = DynamicSetting.bool('textEditorTabMovesFocus', CM.keymap.of([{
@@ -82,23 +93,15 @@ export function guessIndent(doc: CM.Text): string {
82
93
  values[space] = (values[space] || 0) + 1;
83
94
  }
84
95
  const minOccurrence = scanned * 0.05;
85
- const sorted = Object.entries(values).filter(e => e[1] > minOccurrence).sort((a, b) => a[1] - b[1]);
86
- return sorted.length ? sorted[0][0] : Common.Settings.Settings.instance().moduleSetting('textEditorIndent').get();
96
+ const shortest = Object.entries(values).reduce((shortest, [string, count]): string|null => {
97
+ return count < minOccurrence || shortest && shortest.length < string.length ? shortest : string;
98
+ }, null as string | null);
99
+ return shortest ?? Common.Settings.Settings.instance().moduleSetting('textEditorIndent').get();
87
100
  }
88
101
 
89
- const cachedIndentUnit: {[indent: string]: CM.Extension} = Object.create(null);
102
+ const deriveIndentUnit = CM.Prec.highest(CM.indentUnit.compute([], (state: CM.EditorState) => guessIndent(state.doc)));
90
103
 
91
- function getIndentUnit(indent: string): CM.Extension {
92
- let value = cachedIndentUnit[indent];
93
- if (!value) {
94
- value = cachedIndentUnit[indent] = CM.indentUnit.of(indent);
95
- }
96
- return value;
97
- }
98
-
99
- export const autoDetectIndent = new DynamicSetting<boolean>('textEditorAutoDetectIndent', (on, state) => {
100
- return on ? CM.Prec.override(getIndentUnit(guessIndent(state.doc))) : empty;
101
- });
104
+ export const autoDetectIndent = DynamicSetting.bool('textEditorAutoDetectIndent', deriveIndentUnit);
102
105
 
103
106
  function matcher(decorator: CM.MatchDecorator): CM.Extension {
104
107
  return CM.ViewPlugin.define(
@@ -154,6 +157,16 @@ export const showWhitespace = new DynamicSetting<string>('showWhitespacesInEdito
154
157
 
155
158
  export const allowScrollPastEof = DynamicSetting.bool('allowScrollPastEof', CM.scrollPastEnd());
156
159
 
160
+ const cachedIndentUnit: {[indent: string]: CM.Extension} = Object.create(null);
161
+
162
+ function getIndentUnit(indent: string): CM.Extension {
163
+ let value = cachedIndentUnit[indent];
164
+ if (!value) {
165
+ value = cachedIndentUnit[indent] = CM.indentUnit.of(indent);
166
+ }
167
+ return value;
168
+ }
169
+
157
170
  export const indentUnit = new DynamicSetting<string>('textEditorIndent', getIndentUnit);
158
171
 
159
172
  export const domWordWrap = DynamicSetting.bool('domWordWrap', CM.EditorView.lineWrapping);
@@ -184,22 +197,25 @@ function themeIsDark(): boolean {
184
197
 
185
198
  const dummyDarkTheme = CM.EditorView.theme({}, {dark: true});
186
199
 
200
+ export function theme(): CM.Extension {
201
+ return [editorTheme, themeIsDark() ? dummyDarkTheme : []];
202
+ }
203
+
187
204
  export function baseConfiguration(text: string): CM.Extension {
188
205
  return [
189
- editorTheme,
190
- themeIsDark() ? dummyDarkTheme : [],
206
+ theme(),
191
207
  CM.highlightSpecialChars(),
192
208
  CM.history(),
193
209
  CM.drawSelection(),
194
210
  CM.EditorState.allowMultipleSelections.of(true),
195
211
  CM.indentOnInput(),
196
- CodeHighlighter.CodeHighlighter.getHighlightStyle(CM),
212
+ CodeHighlighter.CodeHighlighter.highlightStyle,
197
213
  CM.closeBrackets(),
198
214
  baseKeymap,
199
- tabMovesFocus,
200
- bracketMatching,
201
- indentUnit,
202
- CM.Prec.fallback(CM.EditorView.contentAttributes.of({'aria-label': i18nString(UIStrings.codeEditor)})),
215
+ tabMovesFocus.instance(),
216
+ bracketMatching.instance(),
217
+ indentUnit.instance(),
218
+ CM.Prec.lowest(CM.EditorView.contentAttributes.of({'aria-label': i18nString(UIStrings.codeEditor)})),
203
219
  detectLineSeparator(text),
204
220
  autocompletion,
205
221
  CM.tooltips({parent: getTooltipHost() as unknown as HTMLElement}),
@@ -221,7 +237,7 @@ function getTooltipHost(): ShadowRoot {
221
237
  extensions: [
222
238
  editorTheme,
223
239
  themeIsDark() ? dummyDarkTheme : [],
224
- CodeHighlighter.CodeHighlighter.getHighlightStyle(CM),
240
+ CodeHighlighter.CodeHighlighter.highlightStyle,
225
241
  CM.showTooltip.of({
226
242
  pos: 0,
227
243
  create() {
@@ -9,9 +9,8 @@ import * as CodeMirror from '../../../third_party/codemirror.next/codemirror.nex
9
9
  import * as UI from '../../legacy/legacy.js';
10
10
  import {cursorTooltip} from './cursor_tooltip.js';
11
11
 
12
- export async function completion(): Promise<CodeMirror.Extension> {
13
- const {javascriptLanguage} = await CodeMirror.javascript();
14
- return javascriptLanguage.data.of({
12
+ export function completion(): CodeMirror.Extension {
13
+ return CodeMirror.javascript.javascriptLanguage.data.of({
15
14
  autocomplete: javascriptCompletionSource,
16
15
  });
17
16
  }
@@ -0,0 +1,17 @@
1
+ // Copyright 2021 The Chromium Authors. All rights reserved.
2
+ // Use of this source code is governed by a BSD-style license that can be
3
+ // found in the LICENSE file.
4
+
5
+ import type * as CodeMirror from '../../../third_party/codemirror.next/codemirror.next.js';
6
+
7
+ export function toOffset(
8
+ doc: CodeMirror.Text, {lineNumber, columnNumber}: {lineNumber: number, columnNumber: number}): number {
9
+ const line = doc.line(Math.max(1, Math.min(doc.lines, lineNumber + 1)));
10
+ return Math.max(line.from, Math.min(line.to, line.from + columnNumber));
11
+ }
12
+
13
+ export function toLineColumn(doc: CodeMirror.Text, offset: number): {lineNumber: number, columnNumber: number} {
14
+ offset = Math.max(0, Math.min(offset, doc.length));
15
+ const line = doc.lineAt(offset);
16
+ return {lineNumber: line.number - 1, columnNumber: offset - line.from};
17
+ }
@@ -4,4 +4,5 @@
4
4
 
5
5
  export * as Config from './config.js';
6
6
  export * as JavaScript from './javascript.js';
7
+ export * as Position from './position.js';
7
8
  export * as TextEditor from './TextEditor.js';
@@ -52,6 +52,10 @@ export const editorTheme = CM.EditorView.theme({
52
52
  backgroundColor: 'var(--color-background)',
53
53
  },
54
54
 
55
+ '.cm-lineNumbers': {
56
+ overflow: 'visible',
57
+ minWidth: '40px',
58
+ },
55
59
  '.cm-lineNumbers .cm-gutterElement': {
56
60
  color: 'var(--color-line-number)',
57
61
  padding: '0 3px 0 9px',
@@ -74,7 +78,7 @@ export const editorTheme = CM.EditorView.theme({
74
78
  },
75
79
 
76
80
  '.cm-trailingWhitespace': {
77
- backgroundColor: 'var(--color-error-text)',
81
+ backgroundColor: 'var(--color-trailing-whitespace)',
78
82
  },
79
83
 
80
84
  '.cm-highlightedTab': {
@@ -10,7 +10,7 @@ import * as Coordinator from '../render_coordinator/render_coordinator.js';
10
10
 
11
11
  import treeOutlineStyles from './treeOutline.css.js';
12
12
 
13
- import type {TreeNode, TreeNodeWithChildren} from './TreeOutlineUtils.js';
13
+ import type {TreeNodeId, TreeNode, TreeNodeWithChildren} from './TreeOutlineUtils.js';
14
14
  import {findNextNodeForTreeOutlineKeyboardNavigation, getNodeChildren, getPathToTreeNode, isExpandableNode, trackDOMNodeToTreeNode} from './TreeOutlineUtils.js';
15
15
 
16
16
  const coordinator = Coordinator.RenderCoordinator.RenderCoordinator.instance();
@@ -24,6 +24,7 @@ export interface TreeOutlineData<TreeNodeDataType> {
24
24
  * cause issues in the TreeOutline.
25
25
  */
26
26
  tree: readonly TreeNode<TreeNodeDataType>[];
27
+ filter?: (node: TreeNodeDataType) => FilterOption;
27
28
  }
28
29
 
29
30
  export function defaultRenderer(node: TreeNode<string>): LitHtml.TemplateResult {
@@ -66,6 +67,19 @@ export class ItemMouseOutEvent<TreeNodeDataType> extends Event {
66
67
  }
67
68
  }
68
69
 
70
+ /**
71
+ *
72
+ * The tree can be filtered by providing a custom filter function.
73
+ * The filter is applied on every node when constructing the tree
74
+ * and proceeds as follows:
75
+ * - If the filter return SHOW for a node, the node is included in the tree.
76
+ * - If the filter returns FLATTEN, the node is ignored but its subtree is included.
77
+ */
78
+ export const enum FilterOption {
79
+ SHOW = 'SHOW',
80
+ FLATTEN = 'FLATTEN',
81
+ }
82
+
69
83
  export class TreeOutline<TreeNodeDataType> extends HTMLElement {
70
84
  static readonly litTagName = LitHtml.literal`devtools-tree-outline`;
71
85
  private readonly shadow = this.attachShadow({mode: 'open'});
@@ -79,7 +93,7 @@ export class TreeOutline<TreeNodeDataType> extends HTMLElement {
79
93
  * know for sure when that node will be rendered. This variable tracks the
80
94
  * node that we want focused but may not yet have been rendered.
81
95
  */
82
- private nodePendingFocus: TreeNode<TreeNodeDataType>|null = null;
96
+ private nodeIdPendingFocus: TreeNodeId|null = null;
83
97
  private selectedTreeNode: TreeNode<TreeNodeDataType>|null = null;
84
98
  private defaultRenderer =
85
99
  (node: TreeNode<TreeNodeDataType>, _state: {isExpanded: boolean}): LitHtml.TemplateResult => {
@@ -91,6 +105,7 @@ export class TreeOutline<TreeNodeDataType> extends HTMLElement {
91
105
  }
92
106
  return LitHtml.html`${String(node.treeNodeData)}`;
93
107
  };
108
+ private nodeFilter?: ((node: TreeNodeDataType) => FilterOption);
94
109
 
95
110
  /**
96
111
  * scheduledRender = render() has been called and scheduled a render.
@@ -134,6 +149,7 @@ export class TreeOutline<TreeNodeDataType> extends HTMLElement {
134
149
  set data(data: TreeOutlineData<TreeNodeDataType>) {
135
150
  this.defaultRenderer = data.defaultRenderer;
136
151
  this.treeData = data.tree;
152
+ this.nodeFilter = data.filter;
137
153
  if (!this.hasRenderedAtLeastOnce) {
138
154
  this.selectedTreeNode = this.treeData[0];
139
155
  }
@@ -154,10 +170,17 @@ export class TreeOutline<TreeNodeDataType> extends HTMLElement {
154
170
  * Takes a TreeNode, expands the outline to reveal it, and focuses it.
155
171
  */
156
172
  async expandToAndSelectTreeNode(targetTreeNode: TreeNode<TreeNodeDataType>): Promise<void> {
157
- const pathToTreeNode = await getPathToTreeNode(this.treeData, targetTreeNode);
173
+ return this.expandToAndSelectTreeNodeId(targetTreeNode.id);
174
+ }
175
+
176
+ /**
177
+ * Takes a TreeNode ID, expands the outline to reveal it, and focuses it.
178
+ */
179
+ async expandToAndSelectTreeNodeId(targetTreeNodeId: TreeNodeId): Promise<void> {
180
+ const pathToTreeNode = await getPathToTreeNode(this.treeData, targetTreeNodeId);
158
181
 
159
182
  if (pathToTreeNode === null) {
160
- throw new Error(`Could not find node with id ${targetTreeNode.id} in the tree.`);
183
+ throw new Error(`Could not find node with id ${targetTreeNodeId} in the tree.`);
161
184
  }
162
185
  pathToTreeNode.forEach((node, index) => {
163
186
  // We don't expand the very last node, which was the target node.
@@ -167,10 +190,26 @@ export class TreeOutline<TreeNodeDataType> extends HTMLElement {
167
190
  });
168
191
 
169
192
  // Mark the node as pending focus so when it is rendered into the DOM we can focus it
170
- this.nodePendingFocus = targetTreeNode;
193
+ this.nodeIdPendingFocus = targetTreeNodeId;
171
194
  await this.render();
172
195
  }
173
196
 
197
+ /**
198
+ * Takes a list of TreeNode IDs and expands the corresponding nodes.
199
+ */
200
+ expandNodeIds(nodeIds: TreeNodeId[]): Promise<void> {
201
+ nodeIds.forEach(id => this.nodeExpandedMap.set(id, true));
202
+ return this.render();
203
+ }
204
+
205
+ /**
206
+ * Takes a TreeNode ID and focuses the corresponding node.
207
+ */
208
+ focusNodeId(nodeId: TreeNodeId): Promise<void> {
209
+ this.nodeIdPendingFocus = nodeId;
210
+ return this.render();
211
+ }
212
+
174
213
  async collapseChildrenOfNode(domNode: HTMLLIElement): Promise<void> {
175
214
  const treeNode = this.domNodeToTreeNodeMap.get(domNode);
176
215
  if (!treeNode) {
@@ -208,7 +247,22 @@ export class TreeOutline<TreeNodeDataType> extends HTMLElement {
208
247
  }
209
248
 
210
249
  private async fetchNodeChildren(node: TreeNodeWithChildren<TreeNodeDataType>): Promise<TreeNode<TreeNodeDataType>[]> {
211
- return getNodeChildren(node);
250
+ const children = await getNodeChildren(node);
251
+ if (!this.nodeFilter) {
252
+ return children;
253
+ }
254
+ const filteredChildren = [];
255
+ for (const child of children) {
256
+ const filtering = this.nodeFilter(child.treeNodeData);
257
+ // We always include the selected node in the tree, regardless of its filtering status.
258
+ if (filtering === FilterOption.SHOW || this.isSelectedNode(child) || child.id === this.nodeIdPendingFocus) {
259
+ filteredChildren.push(child);
260
+ } else if (filtering === FilterOption.FLATTEN && isExpandableNode(child)) {
261
+ const grandChildren = await this.fetchNodeChildren(child);
262
+ filteredChildren.push(...grandChildren);
263
+ }
264
+ }
265
+ return filteredChildren;
212
266
  }
213
267
 
214
268
  private setNodeExpandedState(node: TreeNode<TreeNodeDataType>, newExpandedState: boolean): void {
@@ -337,7 +391,7 @@ export class TreeOutline<TreeNodeDataType> extends HTMLElement {
337
391
  }
338
392
 
339
393
  private focusPendingNode(domNode: HTMLLIElement): void {
340
- this.nodePendingFocus = null;
394
+ this.nodeIdPendingFocus = null;
341
395
  this.focusTreeNode(domNode);
342
396
  }
343
397
 
@@ -411,7 +465,7 @@ export class TreeOutline<TreeNodeDataType> extends HTMLElement {
411
465
  return;
412
466
  }
413
467
 
414
- if (this.nodePendingFocus && node.id === this.nodePendingFocus.id) {
468
+ if (this.nodeIdPendingFocus && node.id === this.nodeIdPendingFocus) {
415
469
  this.focusPendingNode(domNode);
416
470
  }
417
471
  })}
@@ -433,6 +487,7 @@ export class TreeOutline<TreeNodeDataType> extends HTMLElement {
433
487
  `;
434
488
  // clang-format on
435
489
  }
490
+
436
491
  private async render(): Promise<void> {
437
492
  if (this.scheduledRender) {
438
493
  // If we are already rendering, don't render again immediately, but
@@ -4,10 +4,12 @@
4
4
  import * as Platform from '../../../core/platform/platform.js';
5
5
  import * as LitHtml from '../../lit-html/lit-html.js';
6
6
 
7
+ export type TreeNodeId = string;
8
+
7
9
  interface BaseTreeNode<TreeNodeDataType> {
8
10
  treeNodeData: TreeNodeDataType;
9
11
  renderer?: (node: TreeNode<TreeNodeDataType>, state: {isExpanded: boolean}) => LitHtml.TemplateResult;
10
- id: string;
12
+ id: TreeNodeId;
11
13
  }
12
14
 
13
15
  export interface TreeNodeWithChildren<TreeNodeDataType> extends BaseTreeNode<TreeNodeDataType> {
@@ -196,10 +198,10 @@ export const getNodeChildren =
196
198
  * And you look for F, you'll get back [A, D, F]
197
199
  */
198
200
  export const getPathToTreeNode =
199
- async<TreeNodeDataType>(tree: readonly TreeNode<TreeNodeDataType>[], nodeToFind: TreeNode<TreeNodeDataType>):
201
+ async<TreeNodeDataType>(tree: readonly TreeNode<TreeNodeDataType>[], nodeIdToFind: TreeNodeId):
200
202
  Promise<TreeNode<TreeNodeDataType>[]|null> => {
201
203
  for (const rootNode of tree) {
202
- const foundPathOrNull = await getPathToTreeNodeRecursively(rootNode, nodeToFind, [rootNode]);
204
+ const foundPathOrNull = await getPathToTreeNodeRecursively(rootNode, nodeIdToFind, [rootNode]);
203
205
  if (foundPathOrNull !== null) {
204
206
  return foundPathOrNull;
205
207
  }
@@ -208,16 +210,16 @@ export const getPathToTreeNode =
208
210
  };
209
211
 
210
212
  const getPathToTreeNodeRecursively = async<TreeNodeDataType>(
211
- currentNode: TreeNode<TreeNodeDataType>, nodeToFind: TreeNode<TreeNodeDataType>,
213
+ currentNode: TreeNode<TreeNodeDataType>, nodeIdToFind: TreeNodeId,
212
214
  pathToNode: TreeNode<TreeNodeDataType>[]): Promise<TreeNode<TreeNodeDataType>[]|null> => {
213
- if (currentNode.id === nodeToFind.id) {
215
+ if (currentNode.id === nodeIdToFind) {
214
216
  return pathToNode;
215
217
  }
216
218
 
217
219
  if (currentNode.children) {
218
220
  const children = await getNodeChildren(currentNode);
219
221
  for (const child of children) {
220
- const foundPathOrNull = await getPathToTreeNodeRecursively(child, nodeToFind, [...pathToNode, child]);
222
+ const foundPathOrNull = await getPathToTreeNodeRecursively(child, nodeIdToFind, [...pathToNode, child]);
221
223
  if (foundPathOrNull !== null) {
222
224
  return foundPathOrNull;
223
225
  }
@@ -39,6 +39,8 @@ import type {DevToolsCloseButton} from './UIUtils.js';
39
39
  import type {WidgetElement} from './Widget.js';
40
40
  import {WidgetFocusRestorer} from './Widget.js';
41
41
 
42
+ import dialogStyles from './dialog.css.legacy.js';
43
+
42
44
  export class Dialog extends Common.ObjectWrapper.eventMixin<EventTypes, typeof GlassPane>(GlassPane) {
43
45
  private tabIndexBehavior: OutsideTabIndexBehavior;
44
46
  private tabIndexMap: Map<HTMLElement, number>;
@@ -50,7 +52,7 @@ export class Dialog extends Common.ObjectWrapper.eventMixin<EventTypes, typeof G
50
52
 
51
53
  constructor() {
52
54
  super();
53
- this.registerRequiredCSS('ui/legacy/dialog.css');
55
+ this.registerRequiredCSS(dialogStyles);
54
56
  this.contentElement.tabIndex = 0;
55
57
  this.contentElement.addEventListener('focus', () => this.widget().focus(), false);
56
58
  this.widget().setDefaultFocusedElement(this.contentElement);
@@ -2,6 +2,7 @@
2
2
  // Use of this source code is governed by a BSD-style license that can be
3
3
  // found in the LICENSE file.
4
4
 
5
+ import dropTargetStyles from './dropTarget.css.legacy.js';
5
6
  import * as Utils from './utils/utils.js';
6
7
 
7
8
  export class DropTarget {
@@ -71,7 +72,7 @@ export class DropTarget {
71
72
  }
72
73
  this.dragMaskElement = this.element.createChild('div', '');
73
74
  const shadowRoot = Utils.createShadowRootWithCoreStyles(
74
- this.dragMaskElement, {cssFile: 'ui/legacy/dropTarget.css', delegatesFocus: undefined});
75
+ this.dragMaskElement, {cssFile: dropTargetStyles, delegatesFocus: undefined});
75
76
  shadowRoot.createChild('div', 'drop-target-message').textContent = this.messageText;
76
77
  this.dragMaskElement.addEventListener('drop', this.onDrop.bind(this), true);
77
78
  this.dragMaskElement.addEventListener('dragleave', this.onDragLeave.bind(this), true);
@@ -30,6 +30,7 @@
30
30
 
31
31
  import * as i18n from '../../core/i18n/i18n.js';
32
32
 
33
+ import emptyWidgetStyles from './emptyWidget.css.legacy.js';
33
34
  import {VBox} from './Widget.js';
34
35
  import {XLink} from './XLink.js';
35
36
 
@@ -47,7 +48,7 @@ export class EmptyWidget extends VBox {
47
48
 
48
49
  constructor(text: string) {
49
50
  super();
50
- this.registerRequiredCSS('ui/legacy/emptyWidget.css');
51
+ this.registerRequiredCSS(emptyWidgetStyles);
51
52
  this.element.classList.add('empty-view-scroller');
52
53
  this.contentElement = this.element.createChild('div', 'empty-view') as HTMLDivElement;
53
54
  this.textElement = this.contentElement.createChild('div', 'empty-bold-text');
@@ -43,6 +43,7 @@ import {ToolbarSettingToggle} from './Toolbar.js';
43
43
  import {Tooltip} from './Tooltip.js';
44
44
  import {CheckboxLabel, createTextChild} from './UIUtils.js';
45
45
  import {HBox} from './Widget.js';
46
+ import filterStyles from './filter.css.legacy.js';
46
47
 
47
48
  const UIStrings = {
48
49
  /**
@@ -79,7 +80,7 @@ export class FilterBar extends Common.ObjectWrapper.eventMixin<FilterBarEventTyp
79
80
 
80
81
  constructor(name: string, visibleByDefault?: boolean) {
81
82
  super();
82
- this.registerRequiredCSS('ui/legacy/filter.css');
83
+ this.registerRequiredCSS(filterStyles);
83
84
  this.enabled = true;
84
85
  this.element.classList.add('filter-bar');
85
86
 
@@ -10,6 +10,7 @@ import {Icon} from './Icon.js';
10
10
  import {deepElementFromEvent} from './UIUtils.js';
11
11
  import type {WidgetElement} from './Widget.js';
12
12
  import {Widget} from './Widget.js';
13
+ import glassPaneStyles from './glassPane.css.legacy.js';
13
14
 
14
15
  export class GlassPane {
15
16
  private readonly widgetInternal: Widget;
@@ -36,7 +37,7 @@ export class GlassPane {
36
37
  this.element.shadowRoot.appendChild(this.arrowElement);
37
38
  }
38
39
 
39
- this.registerRequiredCSS('ui/legacy/glassPane.css');
40
+ this.registerRequiredCSS(glassPaneStyles);
40
41
  this.setPointerEventsBehavior(PointerEventsBehavior.PierceGlassPane);
41
42
 
42
43
  this.onMouseDownBound = this.onMouseDown.bind(this);
@@ -54,7 +55,8 @@ export class GlassPane {
54
55
  return this.widgetInternal.isShowing();
55
56
  }
56
57
 
57
- registerRequiredCSS(cssFile: string): void {
58
+ registerRequiredCSS(cssFile: string|{cssContent: string}): void {
59
+ // eslint-disable-next-line no-restricted-syntax -- Should import styles https://crbug.com/1106746
58
60
  this.widgetInternal.registerRequiredCSS(cssFile);
59
61
  }
60
62
 
@@ -10,6 +10,7 @@ import * as ARIAUtils from './ARIAUtils.js';
10
10
  import {Keys} from './KeyboardShortcut.js';
11
11
  import {createTextButton} from './UIUtils.js';
12
12
  import type {Widget} from './Widget.js';
13
+ import infobarStyles from './infobar.css.legacy.js';
13
14
 
14
15
  const UIStrings = {
15
16
  /**
@@ -46,9 +47,7 @@ export class Infobar {
46
47
  private readonly closeContainer: HTMLElement;
47
48
  private readonly toggleElement: HTMLButtonElement;
48
49
  private readonly closeButton: HTMLElement;
49
- // TODO(crbug.com/1172300) Ignored during the jsdoc to ts migration
50
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
51
- private closeCallback: (() => any)|null;
50
+ private closeCallback: (() => void)|null;
52
51
  private parentView?: Widget;
53
52
 
54
53
  // TODO(crbug.com/1172300) Ignored during the jsdoc to ts migration
@@ -56,8 +55,8 @@ export class Infobar {
56
55
  constructor(type: Type, text: string, actions?: InfobarAction[], disableSetting?: Common.Settings.Setting<any>) {
57
56
  this.element = document.createElement('div');
58
57
  this.element.classList.add('flex-none');
59
- this.shadowRoot = Utils.createShadowRootWithCoreStyles(
60
- this.element, {cssFile: 'ui/legacy/infobar.css', delegatesFocus: undefined});
58
+ this.shadowRoot =
59
+ Utils.createShadowRootWithCoreStyles(this.element, {cssFile: infobarStyles, delegatesFocus: undefined});
61
60
 
62
61
  this.contentElement = this.shadowRoot.createChild('div', 'infobar infobar-' + type) as HTMLDivElement;
63
62
 
@@ -160,9 +159,7 @@ export class Infobar {
160
159
  this.onResize();
161
160
  }
162
161
 
163
- // TODO(crbug.com/1172300) Ignored during the jsdoc to ts migration
164
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
165
- setCloseCallback(callback: (() => any)|null): void {
162
+ setCloseCallback(callback: (() => void)|null): void {
166
163
  this.closeCallback = callback;
167
164
  }
168
165
 
@@ -52,6 +52,7 @@ import {ViewManager} from './ViewManager.js';
52
52
  import type {Widget} from './Widget.js';
53
53
  import {VBox, WidgetFocusRestorer} from './Widget.js';
54
54
  import * as ARIAUtils from './ARIAUtils.js';
55
+ import inspectorViewTabbedPaneStyles from './inspectorViewTabbedPane.css.legacy.js';
55
56
 
56
57
  const UIStrings = {
57
58
  /**
@@ -167,7 +168,7 @@ export class InspectorView extends VBox implements ViewLocationResolver {
167
168
 
168
169
  this.tabbedPane = this.tabbedLocation.tabbedPane();
169
170
  this.tabbedPane.element.classList.add('main-tabbed-pane');
170
- this.tabbedPane.registerRequiredCSS('ui/legacy/inspectorViewTabbedPane.css');
171
+ this.tabbedPane.registerRequiredCSS(inspectorViewTabbedPaneStyles);
171
172
  this.tabbedPane.addEventListener(TabbedPaneEvents.TabSelected, this.tabSelected, this);
172
173
  this.tabbedPane.setAccessibleName(i18nString(UIStrings.panels));
173
174
  this.tabbedPane.setTabDelegate(this.tabDelegate);
@@ -210,6 +211,10 @@ export class InspectorView extends VBox implements ViewLocationResolver {
210
211
  return inspectorViewInstance;
211
212
  }
212
213
 
214
+ static maybeGetInspectorViewInstance(): InspectorView|undefined {
215
+ return inspectorViewInstance;
216
+ }
217
+
213
218
  wasShown(): void {
214
219
  this.element.ownerDocument.addEventListener('keydown', this.keyDownBound, false);
215
220
  }
@@ -5,6 +5,7 @@
5
5
  import * as i18n from '../../core/i18n/i18n.js';
6
6
 
7
7
  import * as ARIAUtils from './ARIAUtils.js';
8
+ import listWidgetStyles from './listWidget.css.legacy.js';
8
9
  import {Toolbar, ToolbarButton} from './Toolbar.js';
9
10
  import {Tooltip} from './Tooltip.js';
10
11
  import {createInput, createTextButton, ElementFocusRestorer} from './UIUtils.js';
@@ -49,7 +50,7 @@ export class ListWidget<T> extends VBox {
49
50
  private emptyPlaceholder: Element|null;
50
51
  constructor(delegate: Delegate<T>, delegatesFocus: boolean|undefined = true) {
51
52
  super(true, delegatesFocus);
52
- this.registerRequiredCSS('ui/legacy/listWidget.css');
53
+ this.registerRequiredCSS(listWidgetStyles);
53
54
  this.delegate = delegate;
54
55
 
55
56
  this.list = this.contentElement.createChild('div', 'list');
@@ -29,6 +29,7 @@
29
29
  */
30
30
 
31
31
  import {GlassPane, MarginBehavior, SizeBehavior} from './GlassPane.js';
32
+ import popoverStyles from './popover.css.legacy.js';
32
33
 
33
34
  export class PopoverHelper {
34
35
  private disableOnClick: boolean;
@@ -189,7 +190,7 @@ export class PopoverHelper {
189
190
 
190
191
  private showPopover(document: Document): void {
191
192
  const popover = new GlassPane();
192
- popover.registerRequiredCSS('ui/legacy/popover.css');
193
+ popover.registerRequiredCSS(popoverStyles);
193
194
  popover.setSizeBehavior(SizeBehavior.MeasureContent);
194
195
  popover.setMarginBehavior(MarginBehavior.Arrow);
195
196
  const request = this.scheduledRequest;
@@ -30,6 +30,7 @@
30
30
 
31
31
  import type * as Common from '../../core/common/common.js';
32
32
  import * as Utils from './utils/utils.js';
33
+ import progressIndicatorStyles from './progressIndicator.css.legacy.js';
33
34
 
34
35
  export class ProgressIndicator implements Common.Progress.Progress {
35
36
  element: HTMLDivElement;
@@ -46,7 +47,7 @@ export class ProgressIndicator implements Common.Progress.Progress {
46
47
  this.element = document.createElement('div');
47
48
  this.element.classList.add('progress-indicator');
48
49
  this.shadowRoot = Utils.createShadowRootWithCoreStyles(
49
- this.element, {cssFile: 'ui/legacy/progressIndicator.css', delegatesFocus: undefined});
50
+ this.element, {cssFile: progressIndicatorStyles, delegatesFocus: undefined});
50
51
  this.contentElement = this.shadowRoot.createChild('div', 'progress-indicator-shadow-container');
51
52
 
52
53
  this.labelElement = this.contentElement.createChild('div', 'title');
@@ -6,6 +6,7 @@ import * as i18n from '../../core/i18n/i18n.js';
6
6
 
7
7
  import {Dialog} from './Dialog.js';
8
8
  import {SizeBehavior} from './GlassPane.js';
9
+ import remoteDebuggingTerminatedScreenStyles from './remoteDebuggingTerminatedScreen.css.legacy.js';
9
10
  import {createTextButton, formatLocalized} from './UIUtils.js';
10
11
  import {VBox} from './Widget.js';
11
12
 
@@ -30,7 +31,7 @@ const i18nString = i18n.i18n.getLocalizedString.bind(undefined, str_);
30
31
  export class RemoteDebuggingTerminatedScreen extends VBox {
31
32
  constructor(reason: string) {
32
33
  super(true);
33
- this.registerRequiredCSS('ui/legacy/remoteDebuggingTerminatedScreen.css');
34
+ this.registerRequiredCSS(remoteDebuggingTerminatedScreenStyles);
34
35
  const message = this.contentElement.createChild('div', 'message');
35
36
  const reasonElement = message.createChild('span', 'reason');
36
37
  reasonElement.textContent = reason;
@@ -3,6 +3,7 @@
3
3
  // found in the LICENSE file.
4
4
 
5
5
  import * as ARIAUtils from './ARIAUtils.js';
6
+ import reportViewStyles from './reportView.css.legacy.js';
6
7
  import {Toolbar} from './Toolbar.js';
7
8
  import {Tooltip} from './Tooltip.js';
8
9
  import {VBox} from './Widget.js';
@@ -20,7 +21,7 @@ export class ReportView extends VBox {
20
21
  private urlElement?: HTMLElement;
21
22
  constructor(title?: string) {
22
23
  super(true);
23
- this.registerRequiredCSS('ui/legacy/reportView.css');
24
+ this.registerRequiredCSS(reportViewStyles);
24
25
 
25
26
  this.contentBox = this.contentElement.createChild('div', 'report-content-box');
26
27
  this.headerElement = this.contentBox.createChild('div', 'report-header vbox');