chrome-devtools-frontend 1.0.940714 → 1.0.942529

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 (241) hide show
  1. package/config/gni/all_devtools_files.gni +0 -57
  2. package/config/gni/devtools_grd_files.gni +55 -15
  3. package/config/gni/devtools_image_files.gni +2 -3
  4. package/front_end/.eslintrc.js +12 -1
  5. package/front_end/Images/src/feedback_button_icon.svg +3 -0
  6. package/front_end/Images/src/{feedback_thin_16x16_icon.svg → survey_feedback_icon.svg} +1 -1
  7. package/front_end/Tests.js +15 -0
  8. package/front_end/core/common/Color.ts +5 -0
  9. package/front_end/core/i18n/locales/en-US.json +31 -28
  10. package/front_end/core/i18n/locales/en-XL.json +31 -28
  11. package/front_end/core/sdk/DebuggerModel.ts +4 -14
  12. package/front_end/core/sdk/sdk-meta.ts +17 -3
  13. package/front_end/emulated_devices/module.json +1 -3
  14. package/front_end/entrypoints/devtools_app/devtools_app.json +1 -9
  15. package/front_end/entrypoints/main/MainImpl.ts +26 -0
  16. package/front_end/entrypoints/shell/shell.js +0 -11
  17. package/front_end/entrypoints/shell/shell.json +0 -2
  18. package/front_end/entrypoints/worker_app/worker_app.json +0 -4
  19. package/front_end/generated/InspectorBackendCommands.js +1 -0
  20. package/front_end/generated/protocol.d.ts +2 -0
  21. package/front_end/global_typings/global_defs.d.ts +5 -0
  22. package/front_end/legacy_test_runner/bindings_test_runner/IsolatedFilesystemTestRunner.js +2 -2
  23. package/front_end/legacy_test_runner/console_test_runner/console_test_runner.js +14 -2
  24. package/front_end/legacy_test_runner/legacy_test_runner.ts +10 -1
  25. package/front_end/legacy_test_runner/test_runner/TestRunner.js +11 -0
  26. package/front_end/models/formatter/SourceFormatter.ts +0 -10
  27. package/front_end/models/workspace/UISourceCode.ts +9 -42
  28. package/front_end/panels/animation/AnimationTimeline.ts +3 -3
  29. package/front_end/panels/application/ApplicationPanelSidebar.ts +3 -3
  30. package/front_end/panels/application/application-meta.ts +0 -3
  31. package/front_end/panels/application/components/EndpointsGrid.ts +1 -1
  32. package/front_end/panels/application/components/ReportsGrid.ts +1 -1
  33. package/front_end/panels/console/ConsolePinPane.ts +21 -26
  34. package/front_end/panels/coverage/CoverageDecorationManager.ts +4 -5
  35. package/front_end/panels/coverage/CoverageView.ts +2 -105
  36. package/front_end/panels/css_overview/components/CSSOverviewStartView.ts +11 -56
  37. package/front_end/panels/css_overview/components/cssOverviewStartView.css +1 -8
  38. package/front_end/panels/elements/ElementsTreeElement.ts +4 -9
  39. package/front_end/panels/elements/components/StylePropertyEditor.ts +2 -0
  40. package/front_end/panels/elements/components/adornerSettingsPane.css +0 -4
  41. package/front_end/panels/emulation/DeviceModeToolbar.ts +3 -1
  42. package/front_end/panels/emulation/DeviceModeView.ts +2 -1
  43. package/front_end/panels/emulation/InspectedPagePlaceholder.ts +3 -1
  44. package/front_end/panels/emulation/MediaQueryInspector.ts +3 -1
  45. package/front_end/panels/emulation/emulation-meta.ts +2 -4
  46. package/front_end/panels/issues/issues-meta.ts +0 -2
  47. package/front_end/panels/layers/module.json +0 -1
  48. package/front_end/panels/lighthouse/LighthousePanel.ts +2 -4
  49. package/front_end/panels/lighthouse/LighthouseReportRenderer.ts +1 -4
  50. package/front_end/panels/lighthouse/lighthouseStartView.css +4 -0
  51. package/front_end/panels/lighthouse/module.json +1 -4
  52. package/front_end/panels/media/media-meta.ts +0 -3
  53. package/front_end/panels/network/ResourceWebSocketFrameView.ts +2 -1
  54. package/front_end/panels/network/network-meta.ts +0 -3
  55. package/front_end/panels/profiler/module.json +1 -4
  56. package/front_end/panels/screencast/module.json +1 -4
  57. package/front_end/panels/security/security-meta.ts +0 -3
  58. package/front_end/panels/sources/BreakpointEditDialog.ts +16 -30
  59. package/front_end/panels/sources/CSSPlugin.ts +310 -331
  60. package/front_end/panels/sources/CallStackSidebarPane.ts +28 -34
  61. package/front_end/panels/sources/CoveragePlugin.ts +121 -6
  62. package/front_end/panels/sources/DebuggerPlugin.ts +1166 -1243
  63. package/front_end/panels/sources/EditingLocationHistoryManager.ts +71 -101
  64. package/front_end/panels/sources/GoToLineQuickOpen.ts +4 -3
  65. package/front_end/panels/sources/InplaceFormatterEditorAction.ts +3 -3
  66. package/front_end/panels/sources/JavaScriptCompilerPlugin.ts +26 -23
  67. package/front_end/panels/sources/Plugin.ts +20 -4
  68. package/front_end/panels/sources/ProfilePlugin.ts +185 -0
  69. package/front_end/panels/sources/ScriptFormatterEditorAction.ts +3 -3
  70. package/front_end/panels/sources/ScriptOriginPlugin.ts +0 -10
  71. package/front_end/panels/sources/SnippetsPlugin.ts +1 -10
  72. package/front_end/panels/sources/SourcesPanel.ts +15 -10
  73. package/front_end/panels/sources/SourcesView.ts +10 -8
  74. package/front_end/panels/sources/TabbedEditorContainer.ts +31 -27
  75. package/front_end/panels/sources/UISourceCodeFrame.ts +335 -470
  76. package/front_end/panels/sources/WatchExpressionsSidebarPane.ts +3 -2
  77. package/front_end/panels/sources/sources-legacy.ts +0 -6
  78. package/front_end/panels/sources/sources.ts +0 -2
  79. package/front_end/panels/timeline/module.json +0 -3
  80. package/front_end/third_party/codemirror.next/bundle.ts +9 -13
  81. package/front_end/third_party/codemirror.next/chunk/codemirror.js +1 -1
  82. package/front_end/third_party/codemirror.next/chunk/javascript.js +2 -2
  83. package/front_end/third_party/codemirror.next/chunk/markdown.js +2 -6
  84. package/front_end/third_party/codemirror.next/chunk/php.js +2 -6
  85. package/front_end/third_party/codemirror.next/chunk/python.js +1 -1
  86. package/front_end/third_party/codemirror.next/chunk/wast.js +1 -1
  87. package/front_end/third_party/codemirror.next/chunk/xml.js +2 -2
  88. package/front_end/third_party/codemirror.next/codemirror.next.d.ts +279 -198
  89. package/front_end/third_party/codemirror.next/codemirror.next.js +1 -1
  90. package/front_end/third_party/codemirror.next/package.json +13 -11
  91. package/front_end/third_party/lighthouse/lighthouse-dt-bundle.js +1128 -1158
  92. package/front_end/third_party/lighthouse/locales/ar-XB.json +211 -79
  93. package/front_end/third_party/lighthouse/locales/ar.json +213 -81
  94. package/front_end/third_party/lighthouse/locales/bg.json +211 -79
  95. package/front_end/third_party/lighthouse/locales/ca.json +212 -80
  96. package/front_end/third_party/lighthouse/locales/cs.json +211 -79
  97. package/front_end/third_party/lighthouse/locales/da.json +211 -79
  98. package/front_end/third_party/lighthouse/locales/de.json +211 -79
  99. package/front_end/third_party/lighthouse/locales/el.json +213 -81
  100. package/front_end/third_party/lighthouse/locales/en-GB.json +211 -79
  101. package/front_end/third_party/lighthouse/locales/en-US.json +186 -75
  102. package/front_end/third_party/lighthouse/locales/en-XA.json +211 -79
  103. package/front_end/third_party/lighthouse/locales/en-XL.json +186 -75
  104. package/front_end/third_party/lighthouse/locales/es-419.json +211 -79
  105. package/front_end/third_party/lighthouse/locales/es.json +212 -80
  106. package/front_end/third_party/lighthouse/locales/fi.json +211 -79
  107. package/front_end/third_party/lighthouse/locales/fil.json +211 -79
  108. package/front_end/third_party/lighthouse/locales/fr.json +211 -79
  109. package/front_end/third_party/lighthouse/locales/he.json +212 -80
  110. package/front_end/third_party/lighthouse/locales/hi.json +214 -82
  111. package/front_end/third_party/lighthouse/locales/hr.json +211 -79
  112. package/front_end/third_party/lighthouse/locales/hu.json +211 -79
  113. package/front_end/third_party/lighthouse/locales/id.json +211 -79
  114. package/front_end/third_party/lighthouse/locales/it.json +211 -79
  115. package/front_end/third_party/lighthouse/locales/ja.json +211 -79
  116. package/front_end/third_party/lighthouse/locales/ko.json +211 -79
  117. package/front_end/third_party/lighthouse/locales/lt.json +211 -79
  118. package/front_end/third_party/lighthouse/locales/lv.json +214 -82
  119. package/front_end/third_party/lighthouse/locales/nl.json +211 -79
  120. package/front_end/third_party/lighthouse/locales/no.json +211 -79
  121. package/front_end/third_party/lighthouse/locales/pl.json +211 -79
  122. package/front_end/third_party/lighthouse/locales/pt-PT.json +211 -79
  123. package/front_end/third_party/lighthouse/locales/pt.json +211 -79
  124. package/front_end/third_party/lighthouse/locales/ro.json +212 -80
  125. package/front_end/third_party/lighthouse/locales/ru.json +211 -79
  126. package/front_end/third_party/lighthouse/locales/sk.json +211 -79
  127. package/front_end/third_party/lighthouse/locales/sl.json +211 -79
  128. package/front_end/third_party/lighthouse/locales/sr-Latn.json +211 -79
  129. package/front_end/third_party/lighthouse/locales/sr.json +211 -79
  130. package/front_end/third_party/lighthouse/locales/sv.json +211 -79
  131. package/front_end/third_party/lighthouse/locales/ta.json +218 -86
  132. package/front_end/third_party/lighthouse/locales/te.json +251 -119
  133. package/front_end/third_party/lighthouse/locales/th.json +211 -79
  134. package/front_end/third_party/lighthouse/locales/tr.json +211 -79
  135. package/front_end/third_party/lighthouse/locales/uk.json +212 -80
  136. package/front_end/third_party/lighthouse/locales/vi.json +211 -79
  137. package/front_end/third_party/lighthouse/locales/zh-HK.json +211 -79
  138. package/front_end/third_party/lighthouse/locales/zh-TW.json +211 -79
  139. package/front_end/third_party/lighthouse/locales/zh.json +211 -79
  140. package/front_end/third_party/lighthouse/report/bundle.d.ts +72 -34
  141. package/front_end/third_party/lighthouse/report/bundle.js +698 -492
  142. package/front_end/third_party/lighthouse/report-assets/report-generator.js +1 -2
  143. package/front_end/third_party/lighthouse/report-assets/report.js +40 -35
  144. package/front_end/third_party/lighthouse/report-assets/standalone-template.html +2 -4
  145. package/front_end/ui/components/code_highlighter/CodeHighlighter.ts +60 -68
  146. package/front_end/ui/components/data_grid/dataGrid.css +12 -10
  147. package/front_end/ui/components/docs/css_overview/start_view.html +25 -0
  148. package/front_end/ui/components/docs/css_overview/start_view.ts +14 -0
  149. package/front_end/ui/components/docs/icon_button/basic.ts +3 -3
  150. package/front_end/ui/components/docs/panel_feedback/basic.html +25 -0
  151. package/front_end/ui/components/docs/panel_feedback/basic.ts +20 -0
  152. package/front_end/ui/components/docs/panel_feedback/button.html +25 -0
  153. package/front_end/ui/components/docs/panel_feedback/button.ts +18 -0
  154. package/front_end/ui/components/helpers/get-stylesheet.ts +0 -13
  155. package/front_end/ui/components/markdown_view/MarkdownImagesMap.ts +1 -1
  156. package/front_end/ui/components/panel_feedback/FeedbackButton.ts +67 -0
  157. package/front_end/ui/components/panel_feedback/PanelFeedback.ts +100 -0
  158. package/front_end/ui/components/panel_feedback/panelFeedback.css +76 -0
  159. package/front_end/ui/components/panel_feedback/panel_feedback.ts +6 -0
  160. package/front_end/ui/components/report_view/reportValue.css +1 -0
  161. package/front_end/ui/components/survey_link/SurveyLink.ts +1 -1
  162. package/front_end/ui/components/text_editor/TextEditor.ts +79 -36
  163. package/front_end/ui/components/text_editor/config.ts +42 -26
  164. package/front_end/ui/components/text_editor/javascript.ts +2 -3
  165. package/front_end/ui/components/text_editor/position.ts +17 -0
  166. package/front_end/ui/components/text_editor/text_editor.ts +1 -0
  167. package/front_end/ui/components/text_editor/theme.ts +5 -1
  168. package/front_end/ui/legacy/Dialog.ts +3 -1
  169. package/front_end/ui/legacy/DropTarget.ts +2 -1
  170. package/front_end/ui/legacy/EmptyWidget.ts +2 -1
  171. package/front_end/ui/legacy/FilterBar.ts +2 -1
  172. package/front_end/ui/legacy/GlassPane.ts +4 -2
  173. package/front_end/ui/legacy/Infobar.ts +5 -8
  174. package/front_end/ui/legacy/InspectorView.ts +6 -1
  175. package/front_end/ui/legacy/ListWidget.ts +2 -1
  176. package/front_end/ui/legacy/PopoverHelper.ts +2 -1
  177. package/front_end/ui/legacy/ProgressIndicator.ts +2 -1
  178. package/front_end/ui/legacy/RemoteDebuggingTerminatedScreen.ts +2 -1
  179. package/front_end/ui/legacy/ReportView.ts +2 -1
  180. package/front_end/ui/legacy/RootView.ts +2 -1
  181. package/front_end/ui/legacy/SearchableView.ts +2 -1
  182. package/front_end/ui/legacy/ShortcutRegistry.ts +11 -7
  183. package/front_end/ui/legacy/SoftContextMenu.ts +2 -1
  184. package/front_end/ui/legacy/SoftDropDown.ts +4 -2
  185. package/front_end/ui/legacy/SplitWidget.ts +2 -1
  186. package/front_end/ui/legacy/SuggestBox.ts +2 -1
  187. package/front_end/ui/legacy/TabbedPane.ts +2 -1
  188. package/front_end/ui/legacy/TargetCrashedScreen.ts +2 -1
  189. package/front_end/ui/legacy/TextPrompt.ts +2 -1
  190. package/front_end/ui/legacy/Toolbar.ts +3 -2
  191. package/front_end/ui/legacy/Treeoutline.ts +3 -2
  192. package/front_end/ui/legacy/UIUtils.ts +16 -13
  193. package/front_end/ui/legacy/ViewManager.ts +2 -1
  194. package/front_end/ui/legacy/Widget.ts +1 -1
  195. package/front_end/ui/legacy/components/perf_ui/ChartViewport.ts +2 -1
  196. package/front_end/ui/legacy/components/perf_ui/FilmStripView.ts +3 -1
  197. package/front_end/ui/legacy/components/perf_ui/FlameChart.ts +2 -1
  198. package/front_end/ui/legacy/components/perf_ui/LineLevelProfile.ts +35 -131
  199. package/front_end/ui/legacy/components/perf_ui/OverviewGrid.ts +2 -1
  200. package/front_end/ui/legacy/components/perf_ui/TimelineGrid.ts +3 -1
  201. package/front_end/ui/legacy/components/perf_ui/TimelineOverviewPane.ts +2 -1
  202. package/front_end/ui/legacy/components/quick_open/filteredListWidget.css +2 -2
  203. package/front_end/ui/legacy/components/source_frame/BinaryResourceViewFactory.ts +3 -6
  204. package/front_end/ui/legacy/components/source_frame/FontView.ts +1 -0
  205. package/front_end/ui/legacy/components/source_frame/ImageView.ts +1 -0
  206. package/front_end/ui/legacy/components/source_frame/JSONView.ts +1 -0
  207. package/front_end/ui/legacy/components/source_frame/ResourceSourceFrame.ts +19 -14
  208. package/front_end/ui/legacy/components/source_frame/SourceFrame.ts +502 -252
  209. package/front_end/ui/legacy/components/source_frame/XMLView.ts +2 -0
  210. package/front_end/ui/legacy/components/source_frame/module.json +0 -3
  211. package/front_end/ui/legacy/components/source_frame/source_frame-legacy.ts +0 -11
  212. package/front_end/ui/legacy/components/source_frame/source_frame.ts +0 -2
  213. package/front_end/ui/legacy/components/text_editor/CodeMirrorTextEditor.ts +2 -0
  214. package/front_end/ui/legacy/components/text_editor/cmdevtools.css +3 -1
  215. package/front_end/ui/legacy/components/text_editor/module.json +0 -3
  216. package/front_end/ui/legacy/components/utils/Linkifier.ts +7 -15
  217. package/front_end/ui/legacy/radioButton.css +1 -13
  218. package/front_end/ui/legacy/softContextMenu.css +1 -0
  219. package/front_end/ui/legacy/themeColors.css +36 -0
  220. package/front_end/ui/legacy/theme_support/theme_support_impl.ts +7 -9
  221. package/front_end/ui/legacy/utils/append-style.ts +9 -4
  222. package/front_end/ui/legacy/utils/create-shadow-root-with-core-styles.ts +2 -2
  223. package/front_end/ui/legacy/utils/inject-core-styles.ts +7 -4
  224. package/package.json +1 -1
  225. package/scripts/build/generate_css_js_files.js +23 -9
  226. package/scripts/build/ninja/generate_css.gni +10 -1
  227. package/scripts/eslint_rules/lib/check_css_import.js +2 -2
  228. package/scripts/eslint_rules/tests/check_css_import_test.js +12 -0
  229. package/front_end/Images/radioDot-dark-theme.png +0 -0
  230. package/front_end/Images/radioDot.png +0 -0
  231. package/front_end/panels/application/module.json +0 -7
  232. package/front_end/panels/emulation/module.json +0 -11
  233. package/front_end/panels/issues/module.json +0 -6
  234. package/front_end/panels/layer_viewer/module.json +0 -6
  235. package/front_end/panels/media/module.json +0 -6
  236. package/front_end/panels/network/module.json +0 -6
  237. package/front_end/panels/security/module.json +0 -5
  238. package/front_end/third_party/lighthouse/report-assets/report.css +0 -1774
  239. package/front_end/ui/legacy/components/perf_ui/module.json +0 -13
  240. package/front_end/ui/legacy/components/source_frame/SourcesTextEditor.ts +0 -1030
  241. package/front_end/ui/legacy/module.json +0 -41
@@ -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');
@@ -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 rootViewStyles from './rootView.css.legacy.js';
5
6
  import {VBox} from './Widget.js';
6
7
  import {ZoomManager} from './ZoomManager.js';
7
8
 
@@ -11,7 +12,7 @@ export class RootView extends VBox {
11
12
  super();
12
13
  this.markAsRoot();
13
14
  this.element.classList.add('root-view');
14
- this.registerRequiredCSS('ui/legacy/rootView.css');
15
+ this.registerRequiredCSS(rootViewStyles);
15
16
  this.element.setAttribute('spellcheck', 'false');
16
17
  }
17
18
 
@@ -39,6 +39,7 @@ import * as i18n from '../../core/i18n/i18n.js';
39
39
  import * as ARIAUtils from './ARIAUtils.js';
40
40
  import {HistoryInput} from './HistoryInput.js';
41
41
  import {InspectorView} from './InspectorView.js';
42
+ import searchableViewStyles from './searchableView.css.legacy.js';
42
43
  import {Toolbar, ToolbarButton, ToolbarToggle} from './Toolbar.js';
43
44
  import {Tooltip} from './Tooltip.js';
44
45
  import {createTextButton} from './UIUtils.js';
@@ -123,7 +124,7 @@ export class SearchableView extends VBox {
123
124
 
124
125
  constructor(searchable: Searchable, replaceable: Replaceable|null, settingName?: string) {
125
126
  super(true);
126
- this.registerRequiredCSS('ui/legacy/searchableView.css');
127
+ this.registerRequiredCSS(searchableViewStyles);
127
128
  searchableViewsByElement.set(this.element, this);
128
129
 
129
130
  this.searchProvider = searchable;
@@ -144,27 +144,31 @@ export class ShortcutRegistry {
144
144
  return this.devToolsDefaultShortcutActions.has(actionId);
145
145
  }
146
146
 
147
- addShortcutListener(element: Element, handlers: {
148
- [x: string]: () => Promise<boolean>,
149
- }): (arg0: Event) => void {
147
+ getShortcutListener(handlers: {[x: string]: () => Promise<boolean>}): (event: KeyboardEvent) => void {
148
+ const shortcuts = Object.keys(handlers).flatMap(action => [...this.actionToShortcut.get(action)]);
150
149
  // We only want keys for these specific actions to get handled this
151
150
  // way; all others should be allowed to bubble up.
152
151
  const allowlistKeyMap = new ShortcutTreeNode(0, 0);
153
- const shortcuts = Object.keys(handlers).flatMap(action => [...this.actionToShortcut.get(action)]);
154
152
  shortcuts.forEach(shortcut => {
155
153
  allowlistKeyMap.addKeyMapping(shortcut.descriptors.map(descriptor => descriptor.key), shortcut.action);
156
154
  });
157
155
 
158
- const listener = (event: Event): void => {
159
- const key = KeyboardShortcut.makeKeyFromEvent((event as KeyboardEvent));
156
+ return (event: KeyboardEvent): void => {
157
+ const key = KeyboardShortcut.makeKeyFromEvent(event);
160
158
  const keyMap = this.activePrefixKey ? allowlistKeyMap.getNode(this.activePrefixKey.key()) : allowlistKeyMap;
161
159
  if (!keyMap) {
162
160
  return;
163
161
  }
164
162
  if (keyMap.getNode(key)) {
165
- this.handleShortcut((event as KeyboardEvent), handlers);
163
+ this.handleShortcut(event, handlers);
166
164
  }
167
165
  };
166
+ }
167
+
168
+ addShortcutListener(element: Element, handlers: {
169
+ [x: string]: () => Promise<boolean>,
170
+ }): (arg0: Event) => void {
171
+ const listener = this.getShortcutListener(handlers) as (event: Event) => void;
168
172
  element.addEventListener('keydown', listener);
169
173
  return listener;
170
174
  }
@@ -37,6 +37,7 @@ import {AnchorBehavior, GlassPane, MarginBehavior, PointerEventsBehavior, SizeBe
37
37
  import {Icon} from './Icon.js';
38
38
  import * as ThemeSupport from './theme_support/theme_support.js'; // eslint-disable-line rulesdir/es_modules_import
39
39
  import {createTextChild, ElementFocusRestorer} from './UIUtils.js';
40
+ import softContextMenuStyles from './softContextMenu.css.legacy.js';
40
41
 
41
42
  const UIStrings = {
42
43
  /**
@@ -101,7 +102,7 @@ export class SoftContextMenu {
101
102
  this.glassPane = new GlassPane();
102
103
  this.glassPane.setPointerEventsBehavior(
103
104
  this.parentMenu ? PointerEventsBehavior.PierceGlassPane : PointerEventsBehavior.BlockedByGlassPane);
104
- this.glassPane.registerRequiredCSS('ui/legacy/softContextMenu.css');
105
+ this.glassPane.registerRequiredCSS(softContextMenuStyles);
105
106
  this.glassPane.setContentAnchorBox(anchorBox);
106
107
  this.glassPane.setSizeBehavior(SizeBehavior.MeasureContent);
107
108
  this.glassPane.setMarginBehavior(MarginBehavior.NoMargin);
@@ -14,6 +14,8 @@ import type {ListDelegate} from './ListControl.js';
14
14
  import {ListControl, ListMode} from './ListControl.js';
15
15
  import type {ItemsReplacedEvent, ListModel} from './ListModel.js';
16
16
  import {Events as ListModelEvents} from './ListModel.js';
17
+ import softDropDownStyles from './softDropDown.css.legacy.js';
18
+ import softDropDownButtonStyles from './softDropDownButton.css.legacy.js';
17
19
 
18
20
  const UIStrings = {
19
21
  /**
@@ -46,7 +48,7 @@ export class SoftDropDown<T> implements ListDelegate<T> {
46
48
 
47
49
  this.element = document.createElement('button');
48
50
  this.element.classList.add('soft-dropdown');
49
- Utils.appendStyle(this.element, 'ui/legacy/softDropDownButton.css');
51
+ Utils.appendStyle(this.element, softDropDownButtonStyles);
50
52
  this.titleElement = this.element.createChild('span', 'title');
51
53
  const dropdownArrowIcon = Icon.create('smallicon-triangle-down');
52
54
  this.element.appendChild(dropdownArrowIcon);
@@ -63,7 +65,7 @@ export class SoftDropDown<T> implements ListDelegate<T> {
63
65
  this.width = 315;
64
66
  Utils
65
67
  .createShadowRootWithCoreStyles(this.glassPane.contentElement, {
66
- cssFile: 'ui/legacy/softDropDown.css',
68
+ cssFile: softDropDownStyles,
67
69
  delegatesFocus: undefined,
68
70
  })
69
71
  .appendChild(this.list.element);
@@ -37,6 +37,7 @@ import {Events as ResizerWidgetEvents, SimpleResizerWidget} from './ResizerWidge
37
37
  import {ToolbarButton} from './Toolbar.js';
38
38
  import {Widget} from './Widget.js';
39
39
  import {Events as ZoomManagerEvents, ZoomManager} from './ZoomManager.js';
40
+ import splitWidgetStyles from './splitWidget.css.legacy.js';
40
41
 
41
42
  export class SplitWidget extends Common.ObjectWrapper.eventMixin<EventTypes, typeof Widget>(Widget) {
42
43
  private sidebarElementInternal: HTMLElement;
@@ -77,7 +78,7 @@ export class SplitWidget extends Common.ObjectWrapper.eventMixin<EventTypes, typ
77
78
  defaultSidebarHeight?: number, constraintsInDip?: boolean) {
78
79
  super(true);
79
80
  this.element.classList.add('split-widget');
80
- this.registerRequiredCSS('ui/legacy/splitWidget.css');
81
+ this.registerRequiredCSS(splitWidgetStyles);
81
82
 
82
83
  this.contentElement.classList.add('shadow-split-widget');
83
84
  this.sidebarElementInternal =
@@ -41,6 +41,7 @@ import type {ListDelegate} from './ListControl.js';
41
41
  import {ListControl, ListMode} from './ListControl.js';
42
42
  import {ListModel} from './ListModel.js';
43
43
  import {measurePreferredSize} from './UIUtils.js';
44
+ import suggestBoxStyles from './suggestBox.css.legacy.js';
44
45
 
45
46
  const UIStrings = {
46
47
  /**
@@ -107,7 +108,7 @@ export class SuggestBox implements ListDelegate<Suggestion> {
107
108
  this.glassPane.setAnchorBehavior(AnchorBehavior.PreferBottom);
108
109
  this.glassPane.setOutsideClickCallback(this.hide.bind(this));
109
110
  const shadowRoot = Utils.createShadowRootWithCoreStyles(
110
- this.glassPane.contentElement, {cssFile: 'ui/legacy/suggestBox.css', delegatesFocus: undefined});
111
+ this.glassPane.contentElement, {cssFile: suggestBoxStyles, delegatesFocus: undefined});
111
112
  shadowRoot.appendChild(this.element);
112
113
  }
113
114
 
@@ -43,6 +43,7 @@ import {installDragHandle, invokeOnceAfterBatchUpdate} from './UIUtils.js';
43
43
  import type {Widget} from './Widget.js';
44
44
  import {VBox} from './Widget.js';
45
45
  import {Events as ZoomManagerEvents, ZoomManager} from './ZoomManager.js';
46
+ import tabbedPaneStyles from './tabbedPane.css.legacy.js';
46
47
 
47
48
  const UIStrings = {
48
49
  /**
@@ -110,7 +111,7 @@ export class TabbedPane extends Common.ObjectWrapper.eventMixin<EventTypes, type
110
111
 
111
112
  constructor() {
112
113
  super(true);
113
- this.registerRequiredCSS('ui/legacy/tabbedPane.css');
114
+ this.registerRequiredCSS(tabbedPaneStyles);
114
115
  this.element.classList.add('tabbed-pane');
115
116
  this.contentElement.classList.add('tabbed-pane-shadow');
116
117
  this.contentElement.tabIndex = -1;
@@ -4,6 +4,7 @@
4
4
 
5
5
  import * as i18n from '../../core/i18n/i18n.js';
6
6
 
7
+ import targetCrashedScreenStyles from './targetCrashedScreen.css.legacy.js';
7
8
  import {VBox} from './Widget.js';
8
9
 
9
10
  const UIStrings = {
@@ -22,7 +23,7 @@ export class TargetCrashedScreen extends VBox {
22
23
  private readonly hideCallback: () => void;
23
24
  constructor(hideCallback: () => void) {
24
25
  super(true);
25
- this.registerRequiredCSS('ui/legacy/targetCrashedScreen.css');
26
+ this.registerRequiredCSS(targetCrashedScreenStyles);
26
27
  this.contentElement.createChild('div', 'message').textContent =
27
28
  i18nString(UIStrings.devtoolsWasDisconnectedFromThe);
28
29
  this.contentElement.createChild('div', 'message').textContent =
@@ -43,6 +43,7 @@ import type {SuggestBoxDelegate, Suggestion} from './SuggestBox.js';
43
43
  import {SuggestBox} from './SuggestBox.js';
44
44
  import {Tooltip} from './Tooltip.js';
45
45
  import {ElementFocusRestorer} from './UIUtils.js';
46
+ import textPromptStyles from './textPrompt.css.legacy.js';
46
47
 
47
48
  export class TextPrompt extends Common.ObjectWrapper.ObjectWrapper<EventTypes> implements SuggestBoxDelegate {
48
49
  private proxyElement!: HTMLElement|undefined;
@@ -135,7 +136,7 @@ export class TextPrompt extends Common.ObjectWrapper.ObjectWrapper<EventTypes> i
135
136
  this.boundOnMouseWheel = this.onMouseWheel.bind(this);
136
137
  this.boundClearAutocomplete = this.clearAutocomplete.bind(this);
137
138
  this.proxyElement = element.ownerDocument.createElement('span');
138
- Utils.appendStyle(this.proxyElement, 'ui/legacy/textPrompt.css');
139
+ Utils.appendStyle(this.proxyElement, textPromptStyles);
139
140
  this.contentElement = this.proxyElement.createChild('div', 'text-prompt-root');
140
141
  this.proxyElement.style.display = this.proxyElementDisplay;
141
142
  if (element.parentElement) {
@@ -46,6 +46,7 @@ import type {Suggestion} from './SuggestBox.js';
46
46
  import {Events as TextPromptEvents, TextPrompt} from './TextPrompt.js';
47
47
  import {Tooltip} from './Tooltip.js';
48
48
  import {CheckboxLabel, LongClickController} from './UIUtils.js';
49
+ import toolbarStyles from './toolbar.css.legacy.js';
49
50
 
50
51
  const UIStrings = {
51
52
  /**
@@ -75,8 +76,8 @@ export class Toolbar {
75
76
  this.element.className = className;
76
77
  this.element.classList.add('toolbar');
77
78
  this.enabled = true;
78
- this.shadowRoot = Utils.createShadowRootWithCoreStyles(
79
- this.element, {cssFile: 'ui/legacy/toolbar.css', delegatesFocus: undefined});
79
+ this.shadowRoot =
80
+ Utils.createShadowRootWithCoreStyles(this.element, {cssFile: toolbarStyles, delegatesFocus: undefined});
80
81
  this.contentElement = this.shadowRoot.createChild('div', 'toolbar-shadow');
81
82
  this.insertionPoint = this.contentElement.createChild('slot');
82
83
  }
@@ -45,6 +45,7 @@ import {InplaceEditor} from './InplaceEditor.js';
45
45
  import {Keys} from './KeyboardShortcut.js';
46
46
  import {Tooltip} from './Tooltip.js';
47
47
  import {deepElementFromPoint, enclosingNodeOrSelfWithNodeNameInArray, isEditing} from './UIUtils.js';
48
+ import treeoutlineStyles from './treeoutline.css.legacy.js';
48
49
 
49
50
  const nodeToParentTreeElementMap = new WeakMap<Node, TreeElement>();
50
51
 
@@ -391,8 +392,8 @@ export class TreeOutlineInShadow extends TreeOutline {
391
392
  super();
392
393
  this.contentElement.classList.add('tree-outline');
393
394
  this.element = document.createElement('div');
394
- this.shadowRoot = Utils.createShadowRootWithCoreStyles(
395
- this.element, {cssFile: 'ui/legacy/treeoutline.css', delegatesFocus: undefined});
395
+ this.shadowRoot =
396
+ Utils.createShadowRootWithCoreStyles(this.element, {cssFile: treeoutlineStyles, delegatesFocus: undefined});
396
397
  this.disclosureElement = this.shadowRoot.createChild('div', 'tree-outline-disclosure');
397
398
  this.disclosureElement.appendChild(this.contentElement);
398
399
  this.renderSelection = true;
@@ -53,6 +53,13 @@ import type {ToolbarButton} from './Toolbar.js';
53
53
  import {Toolbar} from './Toolbar.js';
54
54
  import {Tooltip} from './Tooltip.js';
55
55
  import type {TreeOutline} from './Treeoutline.js';
56
+ import checkboxTextLabelStyles from './checkboxTextLabel.css.legacy.js';
57
+ import closeButtonStyles from './closeButton.css.legacy.js';
58
+ import confirmDialogStyles from './confirmDialog.css.legacy.js';
59
+ import inlineButtonStyles from './inlineButton.css.legacy.js';
60
+ import radioButtonStyles from './radioButton.css.legacy.js';
61
+ import sliderStyles from './slider.css.legacy.js';
62
+ import smallBubbleStyles from './smallBubble.css.legacy.js';
56
63
 
57
64
  const UIStrings = {
58
65
  /**
@@ -1186,8 +1193,8 @@ export class CheckboxLabel extends HTMLSpanElement {
1186
1193
  super();
1187
1194
  CheckboxLabel.lastId = CheckboxLabel.lastId + 1;
1188
1195
  const id = 'ui-checkbox-label' + CheckboxLabel.lastId;
1189
- this.shadowRootInternal = Utils.createShadowRootWithCoreStyles(
1190
- this, {cssFile: 'ui/legacy/checkboxTextLabel.css', delegatesFocus: undefined});
1196
+ this.shadowRootInternal =
1197
+ Utils.createShadowRootWithCoreStyles(this, {cssFile: checkboxTextLabelStyles, delegatesFocus: undefined});
1191
1198
  this.checkboxElement = (this.shadowRootInternal.createChild('input') as HTMLInputElement);
1192
1199
  this.checkboxElement.type = 'checkbox';
1193
1200
  this.checkboxElement.setAttribute('id', id);
@@ -1268,8 +1275,7 @@ export class DevToolsRadioButton extends HTMLSpanElement {
1268
1275
  this.radioElement.id = id;
1269
1276
  this.radioElement.type = 'radio';
1270
1277
  this.labelElement.htmlFor = id;
1271
- const root =
1272
- Utils.createShadowRootWithCoreStyles(this, {cssFile: 'ui/legacy/radioButton.css', delegatesFocus: undefined});
1278
+ const root = Utils.createShadowRootWithCoreStyles(this, {cssFile: radioButtonStyles, delegatesFocus: undefined});
1273
1279
  root.createChild('slot');
1274
1280
  this.addEventListener('click', this.radioClickHandler.bind(this), false);
1275
1281
  }
@@ -1291,8 +1297,7 @@ export class DevToolsSlider extends HTMLSpanElement {
1291
1297
 
1292
1298
  constructor() {
1293
1299
  super();
1294
- const root =
1295
- Utils.createShadowRootWithCoreStyles(this, {cssFile: 'ui/legacy/slider.css', delegatesFocus: undefined});
1300
+ const root = Utils.createShadowRootWithCoreStyles(this, {cssFile: sliderStyles, delegatesFocus: undefined});
1296
1301
  this.sliderElement = document.createElement('input');
1297
1302
  this.sliderElement.classList.add('dt-range-input');
1298
1303
  this.sliderElement.type = 'range';
@@ -1315,8 +1320,7 @@ export class DevToolsSmallBubble extends HTMLSpanElement {
1315
1320
 
1316
1321
  constructor() {
1317
1322
  super();
1318
- const root =
1319
- Utils.createShadowRootWithCoreStyles(this, {cssFile: 'ui/legacy/smallBubble.css', delegatesFocus: undefined});
1323
+ const root = Utils.createShadowRootWithCoreStyles(this, {cssFile: smallBubbleStyles, delegatesFocus: undefined});
1320
1324
  this.textElement = root.createChild('div');
1321
1325
  this.textElement.className = 'info';
1322
1326
  this.textElement.createChild('slot');
@@ -1336,8 +1340,7 @@ export class DevToolsCloseButton extends HTMLDivElement {
1336
1340
 
1337
1341
  constructor() {
1338
1342
  super();
1339
- const root =
1340
- Utils.createShadowRootWithCoreStyles(this, {cssFile: 'ui/legacy/closeButton.css', delegatesFocus: undefined});
1343
+ const root = Utils.createShadowRootWithCoreStyles(this, {cssFile: closeButtonStyles, delegatesFocus: undefined});
1341
1344
  this.buttonElement = (root.createChild('div', 'close-button') as HTMLElement);
1342
1345
  Tooltip.install(this.buttonElement, i18nString(UIStrings.close));
1343
1346
  ARIAUtils.setAccessibleName(this.buttonElement, i18nString(UIStrings.close));
@@ -1566,7 +1569,7 @@ export class MessageDialog {
1566
1569
  dialog.setSizeBehavior(SizeBehavior.MeasureContent);
1567
1570
  dialog.setDimmed(true);
1568
1571
  const shadowRoot = Utils.createShadowRootWithCoreStyles(
1569
- dialog.contentElement, {cssFile: 'ui/legacy/confirmDialog.css', delegatesFocus: undefined});
1572
+ dialog.contentElement, {cssFile: confirmDialogStyles, delegatesFocus: undefined});
1570
1573
  const content = shadowRoot.createChild('div', 'widget');
1571
1574
  await new Promise(resolve => {
1572
1575
  const okButton = createTextButton(i18nString(UIStrings.ok), resolve, '', true);
@@ -1590,7 +1593,7 @@ export class ConfirmDialog {
1590
1593
  dialog.setDimmed(true);
1591
1594
  ARIAUtils.setAccessibleName(dialog.contentElement, message);
1592
1595
  const shadowRoot = Utils.createShadowRootWithCoreStyles(
1593
- dialog.contentElement, {cssFile: 'ui/legacy/confirmDialog.css', delegatesFocus: undefined});
1596
+ dialog.contentElement, {cssFile: confirmDialogStyles, delegatesFocus: undefined});
1594
1597
  const content = shadowRoot.createChild('div', 'widget');
1595
1598
  content.createChild('div', 'message').createChild('span').textContent = message;
1596
1599
  const buttonsBar = content.createChild('div', 'button');
@@ -1615,7 +1618,7 @@ export class ConfirmDialog {
1615
1618
  export function createInlineButton(toolbarButton: ToolbarButton): Element {
1616
1619
  const element = document.createElement('span');
1617
1620
  const shadowRoot =
1618
- Utils.createShadowRootWithCoreStyles(element, {cssFile: 'ui/legacy/inlineButton.css', delegatesFocus: undefined});
1621
+ Utils.createShadowRootWithCoreStyles(element, {cssFile: inlineButtonStyles, delegatesFocus: undefined});
1619
1622
  element.classList.add('inline-button');
1620
1623
  const toolbar = new Toolbar('');
1621
1624
  toolbar.appendToolbarItem(toolbarButton);
@@ -18,6 +18,7 @@ import type {TabbedViewLocation, View, ViewLocation, ViewLocationResolver} from
18
18
  import {getRegisteredLocationResolvers, getRegisteredViewExtensions, maybeRemoveViewExtension, registerLocationResolver, registerViewExtension, ViewLocationCategoryValues, ViewLocationValues, ViewPersistence, ViewRegistration} from './ViewRegistration.js';
19
19
  import type {Widget, WidgetElement} from './Widget.js';
20
20
  import {VBox} from './Widget.js';
21
+ import viewContainersStyles from './viewContainers.css.legacy.js';
21
22
 
22
23
  const UIStrings = {
23
24
  /**
@@ -418,7 +419,7 @@ export class _ExpandableContainerWidget extends VBox {
418
419
  constructor(view: View) {
419
420
  super(true);
420
421
  this.element.classList.add('flex-none');
421
- this.registerRequiredCSS('ui/legacy/viewContainers.css');
422
+ this.registerRequiredCSS(viewContainersStyles);
422
423
 
423
424
  this.titleElement = document.createElement('div');
424
425
  this.titleElement.classList.add('expandable-view-title');
@@ -458,7 +458,7 @@ export class Widget {
458
458
  this.doResize();
459
459
  }
460
460
 
461
- registerRequiredCSS(cssFile: string): void {
461
+ registerRequiredCSS(cssFile: string|{cssContent: string}): void {
462
462
  if (this.isWebComponent) {
463
463
  Utils.appendStyle((this.shadowRoot as DocumentFragment), cssFile);
464
464
  } else {
@@ -7,6 +7,7 @@ import * as i18n from '../../../../core/i18n/i18n.js';
7
7
  import * as Platform from '../../../../core/platform/platform.js';
8
8
  import * as UI from '../../legacy.js';
9
9
 
10
+ import chartViewPortStyles from './chartViewport.css.legacy.js';
10
11
  import {MinimalTimeWindowMs} from './FlameChart.js';
11
12
 
12
13
  export interface ChartViewportDelegate {
@@ -51,7 +52,7 @@ export class ChartViewport extends UI.Widget.VBox {
51
52
 
52
53
  constructor(delegate: ChartViewportDelegate) {
53
54
  super();
54
- this.registerRequiredCSS('ui/legacy/components/perf_ui/chartViewport.css');
55
+ this.registerRequiredCSS(chartViewPortStyles);
55
56
 
56
57
  this.delegate = delegate;
57
58
 
@@ -9,6 +9,8 @@ import * as Platform from '../../../../core/platform/platform.js';
9
9
  import type * as SDK from '../../../../core/sdk/sdk.js';
10
10
  import * as UI from '../../legacy.js';
11
11
 
12
+ import filmStripViewStyles from './filmStripView.css.legacy.js';
13
+
12
14
  const UIStrings = {
13
15
  /**
14
16
  *@description Element title in Film Strip View of the Performance panel
@@ -43,7 +45,7 @@ export class FilmStripView extends Common.ObjectWrapper.eventMixin<EventTypes, t
43
45
 
44
46
  constructor() {
45
47
  super(true);
46
- this.registerRequiredCSS('ui/legacy/components/perf_ui/filmStripView.css');
48
+ this.registerRequiredCSS(filmStripViewStyles);
47
49
  this.contentElement.classList.add('film-strip-view');
48
50
  this.statusLabel = this.contentElement.createChild('div', 'label');
49
51
  this.reset();
@@ -42,6 +42,7 @@ import type {ChartViewportDelegate} from './ChartViewport.js';
42
42
  import {ChartViewport} from './ChartViewport.js';
43
43
  import type {Calculator} from './TimelineGrid.js';
44
44
  import {TimelineGrid} from './TimelineGrid.js';
45
+ import flameChartStyles from './flameChart.css.legacy.js';
45
46
 
46
47
  const UIStrings = {
47
48
  /**
@@ -157,7 +158,7 @@ export class FlameChart extends Common.ObjectWrapper.eventMixin<EventTypes, type
157
158
  dataProvider: FlameChartDataProvider, flameChartDelegate: FlameChartDelegate,
158
159
  groupExpansionSetting?: Common.Settings.Setting<GroupExpansionState>) {
159
160
  super(true);
160
- this.registerRequiredCSS('ui/legacy/components/perf_ui/flameChart.css');
161
+ this.registerRequiredCSS(flameChartStyles);
161
162
  this.contentElement.classList.add('flame-chart-main-pane');
162
163
  this.groupExpansionSetting = groupExpansionSetting;
163
164
  this.groupExpansionState = groupExpansionSetting && groupExpansionSetting.get() || {};