chrome-devtools-frontend 1.0.941208 → 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 (99) hide show
  1. package/config/gni/all_devtools_files.gni +0 -6
  2. package/config/gni/devtools_grd_files.gni +6 -12
  3. package/config/gni/devtools_image_files.gni +0 -2
  4. package/front_end/Tests.js +1 -0
  5. package/front_end/core/common/Color.ts +5 -0
  6. package/front_end/core/i18n/locales/en-US.json +16 -28
  7. package/front_end/core/i18n/locales/en-XL.json +16 -28
  8. package/front_end/core/sdk/sdk-meta.ts +17 -3
  9. package/front_end/entrypoints/devtools_app/devtools_app.json +1 -7
  10. package/front_end/entrypoints/main/MainImpl.ts +26 -0
  11. package/front_end/entrypoints/shell/shell.js +0 -11
  12. package/front_end/entrypoints/worker_app/worker_app.json +0 -4
  13. package/front_end/generated/InspectorBackendCommands.js +1 -0
  14. package/front_end/generated/protocol.d.ts +2 -0
  15. package/front_end/legacy_test_runner/legacy_test_runner.ts +10 -1
  16. package/front_end/models/formatter/SourceFormatter.ts +0 -10
  17. package/front_end/models/workspace/UISourceCode.ts +9 -42
  18. package/front_end/panels/animation/AnimationTimeline.ts +3 -3
  19. package/front_end/panels/application/ApplicationPanelSidebar.ts +3 -3
  20. package/front_end/panels/application/application-meta.ts +0 -3
  21. package/front_end/panels/console/ConsolePinPane.ts +21 -26
  22. package/front_end/panels/coverage/CoverageDecorationManager.ts +4 -5
  23. package/front_end/panels/coverage/CoverageView.ts +2 -105
  24. package/front_end/panels/css_overview/components/CSSOverviewStartView.ts +11 -56
  25. package/front_end/panels/css_overview/components/cssOverviewStartView.css +1 -8
  26. package/front_end/panels/elements/ElementsTreeElement.ts +4 -9
  27. package/front_end/panels/elements/components/adornerSettingsPane.css +0 -4
  28. package/front_end/panels/emulation/emulation-meta.ts +2 -2
  29. package/front_end/panels/issues/issues-meta.ts +0 -2
  30. package/front_end/panels/layers/module.json +0 -1
  31. package/front_end/panels/lighthouse/lighthouseStartView.css +4 -0
  32. package/front_end/panels/media/media-meta.ts +0 -3
  33. package/front_end/panels/network/ResourceWebSocketFrameView.ts +2 -1
  34. package/front_end/panels/network/network-meta.ts +0 -3
  35. package/front_end/panels/security/security-meta.ts +0 -3
  36. package/front_end/panels/sources/BreakpointEditDialog.ts +16 -30
  37. package/front_end/panels/sources/CSSPlugin.ts +310 -331
  38. package/front_end/panels/sources/CallStackSidebarPane.ts +28 -34
  39. package/front_end/panels/sources/CoveragePlugin.ts +121 -6
  40. package/front_end/panels/sources/DebuggerPlugin.ts +1166 -1243
  41. package/front_end/panels/sources/EditingLocationHistoryManager.ts +71 -101
  42. package/front_end/panels/sources/GoToLineQuickOpen.ts +4 -3
  43. package/front_end/panels/sources/InplaceFormatterEditorAction.ts +3 -3
  44. package/front_end/panels/sources/JavaScriptCompilerPlugin.ts +26 -23
  45. package/front_end/panels/sources/Plugin.ts +20 -4
  46. package/front_end/panels/sources/ProfilePlugin.ts +185 -0
  47. package/front_end/panels/sources/ScriptFormatterEditorAction.ts +3 -3
  48. package/front_end/panels/sources/ScriptOriginPlugin.ts +0 -10
  49. package/front_end/panels/sources/SnippetsPlugin.ts +1 -10
  50. package/front_end/panels/sources/SourcesPanel.ts +6 -5
  51. package/front_end/panels/sources/SourcesView.ts +10 -8
  52. package/front_end/panels/sources/TabbedEditorContainer.ts +31 -27
  53. package/front_end/panels/sources/UISourceCodeFrame.ts +335 -470
  54. package/front_end/panels/sources/WatchExpressionsSidebarPane.ts +3 -2
  55. package/front_end/panels/sources/sources-legacy.ts +0 -6
  56. package/front_end/panels/sources/sources.ts +0 -2
  57. package/front_end/panels/timeline/module.json +0 -1
  58. package/front_end/third_party/codemirror.next/bundle.ts +9 -13
  59. package/front_end/third_party/codemirror.next/chunk/codemirror.js +1 -1
  60. package/front_end/third_party/codemirror.next/chunk/javascript.js +2 -2
  61. package/front_end/third_party/codemirror.next/chunk/markdown.js +2 -6
  62. package/front_end/third_party/codemirror.next/chunk/php.js +2 -6
  63. package/front_end/third_party/codemirror.next/chunk/python.js +1 -1
  64. package/front_end/third_party/codemirror.next/chunk/wast.js +1 -1
  65. package/front_end/third_party/codemirror.next/chunk/xml.js +2 -2
  66. package/front_end/third_party/codemirror.next/codemirror.next.d.ts +279 -198
  67. package/front_end/third_party/codemirror.next/codemirror.next.js +1 -1
  68. package/front_end/third_party/codemirror.next/package.json +13 -11
  69. package/front_end/ui/components/code_highlighter/CodeHighlighter.ts +60 -68
  70. package/front_end/ui/components/data_grid/dataGrid.css +12 -10
  71. package/front_end/ui/components/docs/css_overview/start_view.html +25 -0
  72. package/front_end/ui/components/docs/css_overview/start_view.ts +14 -0
  73. package/front_end/ui/components/text_editor/TextEditor.ts +79 -36
  74. package/front_end/ui/components/text_editor/config.ts +42 -26
  75. package/front_end/ui/components/text_editor/javascript.ts +2 -3
  76. package/front_end/ui/components/text_editor/position.ts +17 -0
  77. package/front_end/ui/components/text_editor/text_editor.ts +1 -0
  78. package/front_end/ui/components/text_editor/theme.ts +5 -1
  79. package/front_end/ui/legacy/Infobar.ts +2 -6
  80. package/front_end/ui/legacy/ShortcutRegistry.ts +11 -7
  81. package/front_end/ui/legacy/components/perf_ui/LineLevelProfile.ts +35 -131
  82. package/front_end/ui/legacy/components/source_frame/BinaryResourceViewFactory.ts +3 -6
  83. package/front_end/ui/legacy/components/source_frame/ResourceSourceFrame.ts +18 -14
  84. package/front_end/ui/legacy/components/source_frame/SourceFrame.ts +502 -252
  85. package/front_end/ui/legacy/components/source_frame/source_frame-legacy.ts +0 -11
  86. package/front_end/ui/legacy/components/source_frame/source_frame.ts +0 -2
  87. package/front_end/ui/legacy/components/text_editor/cmdevtools.css +3 -1
  88. package/front_end/ui/legacy/radioButton.css +1 -13
  89. package/front_end/ui/legacy/themeColors.css +36 -0
  90. package/package.json +1 -1
  91. package/front_end/Images/radioDot-dark-theme.png +0 -0
  92. package/front_end/Images/radioDot.png +0 -0
  93. package/front_end/panels/application/module.json +0 -6
  94. package/front_end/panels/issues/module.json +0 -6
  95. package/front_end/panels/layer_viewer/module.json +0 -5
  96. package/front_end/panels/media/module.json +0 -5
  97. package/front_end/panels/network/module.json +0 -5
  98. package/front_end/panels/security/module.json +0 -5
  99. package/front_end/ui/legacy/components/source_frame/SourcesTextEditor.ts +0 -1030
@@ -481,7 +481,8 @@ export class SourcesPanel extends UI.Panel.Panel implements UI.ContextMenu.Provi
481
481
  } else {
482
482
  this.showEditor();
483
483
  }
484
- this.sourcesViewInternal.showSourceLocation(uiSourceCode, lineNumber, columnNumber, omitFocus);
484
+ this.sourcesViewInternal.showSourceLocation(
485
+ uiSourceCode, lineNumber === undefined ? undefined : {lineNumber, columnNumber}, omitFocus);
485
486
  }
486
487
 
487
488
  private showEditor(): void {
@@ -534,8 +535,7 @@ export class SourcesPanel extends UI.Panel.Panel implements UI.ContextMenu.Provi
534
535
  if (window.performance.now() - this.lastModificationTime < lastModificationTimeout) {
535
536
  return;
536
537
  }
537
- this.sourcesViewInternal.showSourceLocation(
538
- uiLocation.uiSourceCode, uiLocation.lineNumber, uiLocation.columnNumber, undefined, true);
538
+ this.sourcesViewInternal.showSourceLocation(uiLocation.uiSourceCode, uiLocation, undefined, true);
539
539
  }
540
540
 
541
541
  private lastModificationTimeoutPassedForTest(): void {
@@ -825,7 +825,7 @@ export class SourcesPanel extends UI.Panel.Panel implements UI.ContextMenu.Provi
825
825
  if (!(target instanceof UISourceCodeFrame)) {
826
826
  return;
827
827
  }
828
- if (target.uiSourceCode().contentType().isFromSourceMap() || target.textEditor.selection().isEmpty()) {
828
+ if (target.uiSourceCode().contentType().isFromSourceMap() || target.textEditor.state.selection.main.empty) {
829
829
  return;
830
830
  }
831
831
  contextMenu.debugSection().appendAction('debugger.evaluate-selection');
@@ -1312,7 +1312,8 @@ export class DebuggingActionDelegate implements UI.ActionRegistration.ActionDele
1312
1312
  case 'debugger.evaluate-selection': {
1313
1313
  const frame = UI.Context.Context.instance().flavor(UISourceCodeFrame);
1314
1314
  if (frame) {
1315
- 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);
1316
1317
  const executionContext = UI.Context.Context.instance().flavor(SDK.RuntimeModel.ExecutionContext);
1317
1318
  if (executionContext) {
1318
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