chrome-devtools-frontend 1.0.940255 → 1.0.942095

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 (133) hide show
  1. package/config/gni/all_devtools_files.gni +0 -13
  2. package/config/gni/devtools_grd_files.gni +13 -13
  3. package/config/gni/devtools_image_files.gni +1 -2
  4. package/front_end/.eslintrc.js +1 -0
  5. package/front_end/Images/src/feedback_button_icon.svg +3 -0
  6. package/front_end/Tests.js +15 -0
  7. package/front_end/core/common/Color.ts +5 -0
  8. package/front_end/core/i18n/locales/en-US.json +39 -30
  9. package/front_end/core/i18n/locales/en-XL.json +39 -30
  10. package/front_end/core/sdk/DOMDebuggerModel.ts +18 -1
  11. package/front_end/core/sdk/sdk-meta.ts +17 -3
  12. package/front_end/entrypoints/devtools_app/devtools_app.json +1 -7
  13. package/front_end/entrypoints/main/MainImpl.ts +26 -0
  14. package/front_end/entrypoints/shell/shell.js +0 -11
  15. package/front_end/entrypoints/shell/shell.json +0 -1
  16. package/front_end/entrypoints/worker_app/worker_app.json +0 -4
  17. package/front_end/generated/InspectorBackendCommands.js +1 -0
  18. package/front_end/generated/protocol.d.ts +2 -0
  19. package/front_end/global_typings/global_defs.d.ts +5 -0
  20. package/front_end/legacy_test_runner/console_test_runner/console_test_runner.js +14 -2
  21. package/front_end/legacy_test_runner/legacy_test_runner.ts +10 -1
  22. package/front_end/legacy_test_runner/test_runner/TestRunner.js +9 -0
  23. package/front_end/models/formatter/SourceFormatter.ts +0 -10
  24. package/front_end/models/workspace/UISourceCode.ts +9 -42
  25. package/front_end/panels/animation/AnimationTimeline.ts +3 -3
  26. package/front_end/panels/application/ApplicationPanelSidebar.ts +3 -3
  27. package/front_end/panels/application/application-meta.ts +0 -3
  28. package/front_end/panels/console/ConsolePinPane.ts +21 -26
  29. package/front_end/panels/coverage/CoverageDecorationManager.ts +4 -5
  30. package/front_end/panels/coverage/CoverageView.ts +2 -105
  31. package/front_end/panels/css_overview/components/CSSOverviewStartView.ts +11 -56
  32. package/front_end/panels/css_overview/components/cssOverviewStartView.css +1 -8
  33. package/front_end/panels/elements/ElementsTreeElement.ts +4 -9
  34. package/front_end/panels/elements/components/adornerSettingsPane.css +0 -4
  35. package/front_end/panels/emulation/emulation-meta.ts +2 -2
  36. package/front_end/panels/issues/IssueKindView.ts +22 -4
  37. package/front_end/panels/issues/issues-meta.ts +0 -2
  38. package/front_end/panels/layers/module.json +0 -1
  39. package/front_end/panels/lighthouse/lighthouseStartView.css +4 -0
  40. package/front_end/panels/media/media-meta.ts +0 -3
  41. package/front_end/panels/network/NetworkLogView.ts +3 -0
  42. package/front_end/panels/network/ResourceWebSocketFrameView.ts +2 -1
  43. package/front_end/panels/network/network-meta.ts +0 -3
  44. package/front_end/panels/profiler/module.json +1 -2
  45. package/front_end/panels/security/security-meta.ts +0 -3
  46. package/front_end/panels/sources/BreakpointEditDialog.ts +16 -30
  47. package/front_end/panels/sources/CSSPlugin.ts +310 -331
  48. package/front_end/panels/sources/CallStackSidebarPane.ts +28 -34
  49. package/front_end/panels/sources/CoveragePlugin.ts +121 -6
  50. package/front_end/panels/sources/DebuggerPlugin.ts +1166 -1243
  51. package/front_end/panels/sources/EditingLocationHistoryManager.ts +71 -101
  52. package/front_end/panels/sources/GoToLineQuickOpen.ts +4 -3
  53. package/front_end/panels/sources/InplaceFormatterEditorAction.ts +3 -3
  54. package/front_end/panels/sources/JavaScriptCompilerPlugin.ts +26 -23
  55. package/front_end/panels/sources/Plugin.ts +20 -4
  56. package/front_end/panels/sources/ProfilePlugin.ts +185 -0
  57. package/front_end/panels/sources/ScriptFormatterEditorAction.ts +3 -3
  58. package/front_end/panels/sources/ScriptOriginPlugin.ts +0 -10
  59. package/front_end/panels/sources/SnippetsPlugin.ts +1 -10
  60. package/front_end/panels/sources/SourcesPanel.ts +15 -10
  61. package/front_end/panels/sources/SourcesView.ts +10 -8
  62. package/front_end/panels/sources/TabbedEditorContainer.ts +31 -27
  63. package/front_end/panels/sources/UISourceCodeFrame.ts +335 -470
  64. package/front_end/panels/sources/WatchExpressionsSidebarPane.ts +3 -2
  65. package/front_end/panels/sources/sources-legacy.ts +0 -6
  66. package/front_end/panels/sources/sources.ts +0 -2
  67. package/front_end/panels/timeline/module.json +0 -2
  68. package/front_end/third_party/codemirror.next/bundle.ts +9 -13
  69. package/front_end/third_party/codemirror.next/chunk/codemirror.js +1 -1
  70. package/front_end/third_party/codemirror.next/chunk/javascript.js +2 -2
  71. package/front_end/third_party/codemirror.next/chunk/markdown.js +2 -6
  72. package/front_end/third_party/codemirror.next/chunk/php.js +2 -6
  73. package/front_end/third_party/codemirror.next/chunk/python.js +1 -1
  74. package/front_end/third_party/codemirror.next/chunk/wast.js +1 -1
  75. package/front_end/third_party/codemirror.next/chunk/xml.js +2 -2
  76. package/front_end/third_party/codemirror.next/codemirror.next.d.ts +279 -198
  77. package/front_end/third_party/codemirror.next/codemirror.next.js +1 -1
  78. package/front_end/third_party/codemirror.next/package.json +13 -11
  79. package/front_end/ui/components/code_highlighter/CodeHighlighter.ts +60 -68
  80. package/front_end/ui/components/data_grid/dataGrid.css +12 -10
  81. package/front_end/ui/components/docs/css_overview/start_view.html +25 -0
  82. package/front_end/ui/components/docs/css_overview/start_view.ts +14 -0
  83. package/front_end/ui/components/docs/panel_feedback/basic.html +25 -0
  84. package/front_end/ui/components/docs/panel_feedback/basic.ts +20 -0
  85. package/front_end/ui/components/docs/panel_feedback/button.html +25 -0
  86. package/front_end/ui/components/docs/panel_feedback/button.ts +18 -0
  87. package/front_end/ui/components/helpers/get-stylesheet.ts +1 -0
  88. package/front_end/ui/components/panel_feedback/FeedbackButton.ts +67 -0
  89. package/front_end/ui/components/panel_feedback/PanelFeedback.ts +100 -0
  90. package/front_end/ui/components/panel_feedback/panelFeedback.css +76 -0
  91. package/front_end/ui/components/panel_feedback/panel_feedback.ts +6 -0
  92. package/front_end/ui/components/report_view/reportValue.css +1 -0
  93. package/front_end/ui/components/text_editor/TextEditor.ts +79 -36
  94. package/front_end/ui/components/text_editor/config.ts +42 -26
  95. package/front_end/ui/components/text_editor/javascript.ts +2 -3
  96. package/front_end/ui/components/text_editor/position.ts +17 -0
  97. package/front_end/ui/components/text_editor/text_editor.ts +1 -0
  98. package/front_end/ui/components/text_editor/theme.ts +5 -1
  99. package/front_end/ui/legacy/Infobar.ts +2 -6
  100. package/front_end/ui/legacy/ShortcutRegistry.ts +11 -7
  101. package/front_end/ui/legacy/Widget.ts +1 -1
  102. package/front_end/ui/legacy/components/perf_ui/ChartViewport.ts +2 -1
  103. package/front_end/ui/legacy/components/perf_ui/FilmStripView.ts +3 -1
  104. package/front_end/ui/legacy/components/perf_ui/FlameChart.ts +2 -1
  105. package/front_end/ui/legacy/components/perf_ui/LineLevelProfile.ts +35 -131
  106. package/front_end/ui/legacy/components/perf_ui/OverviewGrid.ts +2 -1
  107. package/front_end/ui/legacy/components/perf_ui/TimelineGrid.ts +3 -1
  108. package/front_end/ui/legacy/components/perf_ui/TimelineOverviewPane.ts +2 -1
  109. package/front_end/ui/legacy/components/source_frame/BinaryResourceViewFactory.ts +3 -6
  110. package/front_end/ui/legacy/components/source_frame/ResourceSourceFrame.ts +18 -14
  111. package/front_end/ui/legacy/components/source_frame/SourceFrame.ts +502 -252
  112. package/front_end/ui/legacy/components/source_frame/source_frame-legacy.ts +0 -11
  113. package/front_end/ui/legacy/components/source_frame/source_frame.ts +0 -2
  114. package/front_end/ui/legacy/components/text_editor/cmdevtools.css +3 -1
  115. package/front_end/ui/legacy/radioButton.css +1 -13
  116. package/front_end/ui/legacy/softContextMenu.css +1 -0
  117. package/front_end/ui/legacy/themeColors.css +36 -0
  118. package/front_end/ui/legacy/utils/append-style.ts +9 -4
  119. package/package.json +1 -1
  120. package/scripts/build/generate_css_js_files.js +23 -9
  121. package/scripts/build/ninja/generate_css.gni +10 -1
  122. package/scripts/eslint_rules/lib/check_css_import.js +2 -2
  123. package/scripts/eslint_rules/tests/check_css_import_test.js +12 -0
  124. package/front_end/Images/radioDot-dark-theme.png +0 -0
  125. package/front_end/Images/radioDot.png +0 -0
  126. package/front_end/panels/application/module.json +0 -7
  127. package/front_end/panels/issues/module.json +0 -6
  128. package/front_end/panels/layer_viewer/module.json +0 -6
  129. package/front_end/panels/media/module.json +0 -6
  130. package/front_end/panels/network/module.json +0 -6
  131. package/front_end/panels/security/module.json +0 -5
  132. package/front_end/ui/legacy/components/perf_ui/module.json +0 -13
  133. package/front_end/ui/legacy/components/source_frame/SourcesTextEditor.ts +0 -1030
@@ -424,7 +424,8 @@ export class SourcesPanel extends UI.Panel.Panel implements UI.ContextMenu.Provi
424
424
  private debuggerPaused(event: Common.EventTarget.EventTargetEvent<SDK.DebuggerModel.DebuggerModel>): void {
425
425
  const debuggerModel = event.data;
426
426
  const details = debuggerModel.debuggerPausedDetails();
427
- if (!this.pausedInternal) {
427
+ if (!this.pausedInternal &&
428
+ Common.Settings.Settings.instance().moduleSetting('autoFocusOnDebuggerPausedEnabled').get()) {
428
429
  this.setAsCurrentPanel();
429
430
  }
430
431
 
@@ -480,7 +481,8 @@ export class SourcesPanel extends UI.Panel.Panel implements UI.ContextMenu.Provi
480
481
  } else {
481
482
  this.showEditor();
482
483
  }
483
- this.sourcesViewInternal.showSourceLocation(uiSourceCode, lineNumber, columnNumber, omitFocus);
484
+ this.sourcesViewInternal.showSourceLocation(
485
+ uiSourceCode, lineNumber === undefined ? undefined : {lineNumber, columnNumber}, omitFocus);
484
486
  }
485
487
 
486
488
  private showEditor(): void {
@@ -533,8 +535,7 @@ export class SourcesPanel extends UI.Panel.Panel implements UI.ContextMenu.Provi
533
535
  if (window.performance.now() - this.lastModificationTime < lastModificationTimeout) {
534
536
  return;
535
537
  }
536
- this.sourcesViewInternal.showSourceLocation(
537
- uiLocation.uiSourceCode, uiLocation.lineNumber, uiLocation.columnNumber, undefined, true);
538
+ this.sourcesViewInternal.showSourceLocation(uiLocation.uiSourceCode, uiLocation, undefined, true);
538
539
  }
539
540
 
540
541
  private lastModificationTimeoutPassedForTest(): void {
@@ -824,7 +825,7 @@ export class SourcesPanel extends UI.Panel.Panel implements UI.ContextMenu.Provi
824
825
  if (!(target instanceof UISourceCodeFrame)) {
825
826
  return;
826
827
  }
827
- if (target.uiSourceCode().contentType().isFromSourceMap() || target.textEditor.selection().isEmpty()) {
828
+ if (target.uiSourceCode().contentType().isFromSourceMap() || target.textEditor.state.selection.main.empty) {
828
829
  return;
829
830
  }
830
831
  contextMenu.debugSection().appendAction('debugger.evaluate-selection');
@@ -986,6 +987,9 @@ export class SourcesPanel extends UI.Panel.Panel implements UI.ContextMenu.Provi
986
987
  }
987
988
 
988
989
  private revealDebuggerSidebar(): void {
990
+ if (!Common.Settings.Settings.instance().moduleSetting('autoFocusOnDebuggerPausedEnabled').get()) {
991
+ return;
992
+ }
989
993
  this.setAsCurrentPanel();
990
994
  this.splitWidget.showBoth(true);
991
995
  }
@@ -1083,10 +1087,7 @@ export class SourcesPanel extends UI.Panel.Panel implements UI.ContextMenu.Provi
1083
1087
  }
1084
1088
 
1085
1089
  setAsCurrentPanel(): Promise<void> {
1086
- if (Common.Settings.Settings.instance().moduleSetting('autoFocusOnDebuggerPausedEnabled').get()) {
1087
- return UI.ViewManager.ViewManager.instance().showView('sources');
1088
- }
1089
- return Promise.resolve();
1090
+ return UI.ViewManager.ViewManager.instance().showView('sources');
1090
1091
  }
1091
1092
 
1092
1093
  private extensionSidebarPaneAdded(
@@ -1207,6 +1208,9 @@ export class DebuggerPausedDetailsRevealer implements Common.Revealer.Revealer {
1207
1208
  }
1208
1209
 
1209
1210
  reveal(_object: Object): Promise<void> {
1211
+ if (!Common.Settings.Settings.instance().moduleSetting('autoFocusOnDebuggerPausedEnabled').get()) {
1212
+ return Promise.resolve();
1213
+ }
1210
1214
  return SourcesPanel.instance().setAsCurrentPanel();
1211
1215
  }
1212
1216
  }
@@ -1308,7 +1312,8 @@ export class DebuggingActionDelegate implements UI.ActionRegistration.ActionDele
1308
1312
  case 'debugger.evaluate-selection': {
1309
1313
  const frame = UI.Context.Context.instance().flavor(UISourceCodeFrame);
1310
1314
  if (frame) {
1311
- let text = frame.textEditor.text(frame.textEditor.selection());
1315
+ const {state: editorState} = frame.textEditor;
1316
+ let text = editorState.sliceDoc(editorState.selection.main.from, editorState.selection.main.to);
1312
1317
  const executionContext = UI.Context.Context.instance().flavor(SDK.RuntimeModel.ExecutionContext);
1313
1318
  if (executionContext) {
1314
1319
  const message = SDK.ConsoleModel.ConsoleModel.instance().addCommandMessage(executionContext, text);
@@ -84,7 +84,7 @@ export class SourcesView extends Common.ObjectWrapper.eventMixin<EventTypes, typ
84
84
  this.editorContainer.addEventListener(TabbedEditorContainerEvents.EditorSelected, this.editorSelected, this);
85
85
  this.editorContainer.addEventListener(TabbedEditorContainerEvents.EditorClosed, this.editorClosed, this);
86
86
 
87
- this.historyManager = new EditingLocationHistoryManager(this, this.currentSourceFrame.bind(this));
87
+ this.historyManager = new EditingLocationHistoryManager(this);
88
88
 
89
89
  this.toolbarContainerElementInternal = this.element.createChild('div', 'sources-toolbar');
90
90
  if (!Root.Runtime.experiments.isEnabled('sourcesPrettyPrint')) {
@@ -350,15 +350,18 @@ export class SourcesView extends Common.ObjectWrapper.eventMixin<EventTypes, typ
350
350
  }
351
351
 
352
352
  showSourceLocation(
353
- uiSourceCode: Workspace.UISourceCode.UISourceCode, lineNumber?: number, columnNumber?: number,
353
+ uiSourceCode: Workspace.UISourceCode.UISourceCode, location?: {lineNumber: number, columnNumber?: number}|number,
354
354
  omitFocus?: boolean, omitHighlight?: boolean): void {
355
- this.historyManager.updateCurrentState();
355
+ const currentFrame = this.currentSourceFrame();
356
+ if (currentFrame) {
357
+ this.historyManager.updateCurrentState(
358
+ currentFrame.uiSourceCode(), currentFrame.textEditor.state.selection.main.head);
359
+ }
356
360
  this.editorContainer.showFile(uiSourceCode);
357
361
  const currentSourceFrame = this.currentSourceFrame();
358
- if (currentSourceFrame && typeof lineNumber === 'number') {
359
- currentSourceFrame.revealPosition(lineNumber, columnNumber, !omitHighlight);
362
+ if (currentSourceFrame && location) {
363
+ currentSourceFrame.revealPosition(location, !omitHighlight);
360
364
  }
361
- this.historyManager.pushNewState();
362
365
  const visibleView = this.visibleView();
363
366
  if (!omitFocus && visibleView) {
364
367
  visibleView.focus();
@@ -440,8 +443,7 @@ export class SourcesView extends Common.ObjectWrapper.eventMixin<EventTypes, typ
440
443
  currentSourceFrame.setSearchableView(this.searchableViewInternal);
441
444
  }
442
445
 
443
- this.searchableViewInternal.setReplaceable(
444
- Boolean(currentSourceFrame) && (currentSourceFrame ? currentSourceFrame.canEditSource() : false));
446
+ this.searchableViewInternal.setReplaceable(Boolean(currentSourceFrame?.canEditSource()));
445
447
  this.searchableViewInternal.refreshSearch();
446
448
  this.updateToolbarChangedListener();
447
449
  this.updateScriptViewToolbarItems();
@@ -35,6 +35,7 @@ import * as Extensions from '../../models/extensions/extensions.js';
35
35
  import * as Persistence from '../../models/persistence/persistence.js';
36
36
  import * as TextUtils from '../../models/text_utils/text_utils.js';
37
37
  import * as Workspace from '../../models/workspace/workspace.js';
38
+ import type * as CodeMirror from '../../third_party/codemirror.next/codemirror.next.js';
38
39
  import * as SourceFrame from '../../ui/legacy/components/source_frame/source_frame.js';
39
40
  import * as UI from '../../ui/legacy/legacy.js';
40
41
  import * as Snippets from '../snippets/snippets.js';
@@ -220,45 +221,48 @@ export class TabbedEditorContainer extends Common.ObjectWrapper.ObjectWrapper<Ev
220
221
  if (!this.currentView || !(this.currentView instanceof SourceFrame.SourceFrame.SourceFrameImpl)) {
221
222
  return;
222
223
  }
223
- this.currentView.textEditor.addEventListener(
224
- SourceFrame.SourcesTextEditor.Events.ScrollChanged, this.scrollChanged, this);
225
- this.currentView.textEditor.addEventListener(
226
- SourceFrame.SourcesTextEditor.Events.SelectionChanged, this.selectionChanged, this);
224
+ this.currentView.addEventListener(SourceFrame.SourceFrame.Events.EditorUpdate, this.onEditorUpdate, this);
225
+ this.currentView.addEventListener(SourceFrame.SourceFrame.Events.EditorScroll, this.onScrollChanged, this);
227
226
  }
228
227
 
229
228
  private removeViewListeners(): void {
230
229
  if (!this.currentView || !(this.currentView instanceof SourceFrame.SourceFrame.SourceFrameImpl)) {
231
230
  return;
232
231
  }
233
- this.currentView.textEditor.removeEventListener(
234
- SourceFrame.SourcesTextEditor.Events.ScrollChanged, this.scrollChanged, this);
235
- this.currentView.textEditor.removeEventListener(
236
- SourceFrame.SourcesTextEditor.Events.SelectionChanged, this.selectionChanged, this);
232
+ this.currentView.removeEventListener(SourceFrame.SourceFrame.Events.EditorUpdate, this.onEditorUpdate, this);
233
+ this.currentView.removeEventListener(SourceFrame.SourceFrame.Events.EditorScroll, this.onScrollChanged, this);
237
234
  }
238
235
 
239
- private scrollChanged({data: lineNumber}: Common.EventTarget.EventTargetEvent<number>): void {
240
- if (this.scrollTimer) {
241
- clearTimeout(this.scrollTimer);
242
- }
243
- this.scrollTimer = window.setTimeout(saveHistory.bind(this), 100);
244
- if (this.currentFileInternal) {
245
- this.history.updateScrollLineNumber(this.currentFileInternal.url(), lineNumber);
246
- }
247
-
248
- function saveHistory(this: TabbedEditorContainer): void {
249
- this.history.save(this.previouslyViewedFilesSetting);
236
+ private onScrollChanged(): void {
237
+ if (this.currentView instanceof SourceFrame.SourceFrame.SourceFrameImpl) {
238
+ if (this.scrollTimer) {
239
+ clearTimeout(this.scrollTimer);
240
+ }
241
+ this.scrollTimer = window.setTimeout(() => this.history.save(this.previouslyViewedFilesSetting), 100);
242
+ if (this.currentFileInternal) {
243
+ const {editor} = this.currentView.textEditor;
244
+ const topBlock = editor.blockAtHeight(editor.scrollDOM.getBoundingClientRect().top);
245
+ const topLine = editor.state.doc.lineAt(topBlock.from).number - 1;
246
+ this.history.updateScrollLineNumber(this.currentFileInternal.url(), topLine);
247
+ }
250
248
  }
251
249
  }
252
250
 
253
- private selectionChanged({data: range}: Common.EventTarget.EventTargetEvent<TextUtils.TextRange.TextRange>): void {
254
- if (this.currentFileInternal) {
255
- this.history.updateSelectionRange(this.currentFileInternal.url(), range);
256
- }
257
- this.history.save(this.previouslyViewedFilesSetting);
251
+ private onEditorUpdate({data: update}: Common.EventTarget.EventTargetEvent<CodeMirror.ViewUpdate>): void {
252
+ if (update.docChanged || update.selectionSet) {
253
+ const {main} = update.state.selection;
254
+ const lineFrom = update.state.doc.lineAt(main.from), lineTo = update.state.doc.lineAt(main.to);
255
+ const range = new TextUtils.TextRange.TextRange(
256
+ lineFrom.number - 1, main.from - lineFrom.from, lineTo.number - 1, main.to - lineTo.from);
257
+ if (this.currentFileInternal) {
258
+ this.history.updateSelectionRange(this.currentFileInternal.url(), range);
259
+ }
260
+ this.history.save(this.previouslyViewedFilesSetting);
258
261
 
259
- if (this.currentFileInternal) {
260
- Extensions.ExtensionServer.ExtensionServer.instance().sourceSelectionChanged(
261
- this.currentFileInternal.url(), range);
262
+ if (this.currentFileInternal) {
263
+ Extensions.ExtensionServer.ExtensionServer.instance().sourceSelectionChanged(
264
+ this.currentFileInternal.url(), range);
265
+ }
262
266
  }
263
267
  }
264
268