chrome-devtools-frontend 1.0.930109 → 1.0.930993

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 (61) hide show
  1. package/config/gni/devtools_grd_files.gni +2 -1
  2. package/front_end/core/host/InspectorFrontendHost.ts +8 -1
  3. package/front_end/core/host/InspectorFrontendHostAPI.ts +12 -0
  4. package/front_end/core/i18n/locales/en-US.json +3 -0
  5. package/front_end/core/i18n/locales/en-XL.json +3 -0
  6. package/front_end/core/protocol_client/InspectorBackend.ts +71 -71
  7. package/front_end/core/sdk/NetworkManager.ts +6 -2
  8. package/front_end/devtools_compatibility.js +8 -0
  9. package/front_end/legacy_test_runner/sources_test_runner/DebuggerTestRunner.js +2 -2
  10. package/front_end/legacy_test_runner/test_runner/TestRunner.js +2 -3
  11. package/front_end/models/bindings/BreakpointManager.ts +158 -154
  12. package/front_end/models/bindings/CSSWorkspaceBinding.ts +64 -56
  13. package/front_end/models/bindings/CompilerScriptMapping.ts +70 -70
  14. package/front_end/models/bindings/ContentProviderBasedProject.ts +20 -20
  15. package/front_end/models/bindings/DebuggerLanguagePlugins.ts +132 -132
  16. package/front_end/models/bindings/DebuggerWorkspaceBinding.ts +73 -72
  17. package/front_end/models/bindings/DefaultScriptMapping.ts +22 -22
  18. package/front_end/models/bindings/FileUtils.ts +81 -81
  19. package/front_end/models/bindings/IgnoreListManager.ts +17 -17
  20. package/front_end/models/bindings/LiveLocation.ts +21 -21
  21. package/front_end/models/bindings/PresentationConsoleMessageHelper.ts +28 -28
  22. package/front_end/models/bindings/ResourceMapping.ts +50 -50
  23. package/front_end/models/bindings/ResourceScriptMapping.ts +71 -71
  24. package/front_end/models/bindings/SASSSourceMapping.ts +32 -32
  25. package/front_end/models/bindings/StylesSourceMapping.ts +57 -57
  26. package/front_end/models/bindings/TempFile.ts +34 -34
  27. package/front_end/models/emulation/DeviceModeModel.ts +208 -203
  28. package/front_end/models/emulation/EmulatedDevices.ts +34 -34
  29. package/front_end/panels/console/ConsoleView.ts +2 -1
  30. package/front_end/panels/console/ConsoleViewMessage.ts +3 -3
  31. package/front_end/panels/css_overview/CSSOverviewCompletedView.ts +133 -133
  32. package/front_end/panels/css_overview/CSSOverviewModel.ts +16 -16
  33. package/front_end/panels/css_overview/CSSOverviewPanel.ts +77 -77
  34. package/front_end/panels/css_overview/CSSOverviewProcessingView.ts +5 -5
  35. package/front_end/panels/css_overview/components/CSSOverviewStartView.ts +4 -4
  36. package/front_end/panels/elements/ElementsTreeElement.ts +6 -10
  37. package/front_end/panels/elements/ElementsTreeOutline.ts +3 -1
  38. package/front_end/panels/elements/components/LayoutPane.ts +6 -0
  39. package/front_end/panels/elements/elementsPanel.css +0 -1
  40. package/front_end/panels/elements/elementsTreeOutline.css +0 -4
  41. package/front_end/panels/lighthouse/LighthouseProtocolService.ts +7 -2
  42. package/front_end/panels/network/BlockedURLsPane.ts +8 -5
  43. package/front_end/panels/network/blockedURLsPane.css +0 -1
  44. package/front_end/panels/search/SearchView.ts +0 -2
  45. package/front_end/panels/sources/BreakpointEditDialog.ts +98 -81
  46. package/front_end/panels/sources/DebuggerPlugin.ts +15 -14
  47. package/front_end/ui/components/code_highlighter/CodeHighlighter.ts +18 -2
  48. package/front_end/ui/components/text_editor/config.ts +6 -0
  49. package/front_end/ui/components/text_editor/cursor_tooltip.ts +70 -0
  50. package/front_end/ui/components/text_editor/javascript.ts +590 -0
  51. package/front_end/ui/components/text_editor/text_editor.ts +1 -0
  52. package/front_end/ui/components/text_editor/theme.ts +11 -0
  53. package/front_end/ui/components/tree_outline/TreeOutline.ts +3 -1
  54. package/front_end/ui/legacy/ARIAUtils.ts +24 -8
  55. package/front_end/ui/legacy/components/text_editor/cmdevtools.css +1 -0
  56. package/front_end/ui/legacy/components/text_editor/text_editor-legacy.ts +0 -3
  57. package/front_end/ui/legacy/components/text_editor/text_editor.ts +0 -2
  58. package/package.json +1 -1
  59. package/scripts/migration/class-fields/migrate.js +15 -2
  60. package/scripts/migration/class-fields/migrate.sh +10 -0
  61. package/front_end/ui/legacy/components/text_editor/SyntaxHighlighter.ts +0 -62
@@ -16,7 +16,7 @@ import {NetworkProject} from './NetworkProject.js';
16
16
 
17
17
  const UIStrings = {
18
18
  /**
19
- *@description Error message that is displayed in the Console when language plugins report errors
19
+ *@description Error message that is displayed in the Console when language #plugins report errors
20
20
  *@example {File not found} PH1
21
21
  */
22
22
  errorInDebuggerLanguagePlugin: 'Error in debugger language plugin: {PH1}',
@@ -115,7 +115,7 @@ class SourceType {
115
115
  /**
116
116
  * Generates the raw module ID for a script, which is used
117
117
  * to uniquely identify the debugging data for a script on
118
- * the responsible language plugin.
118
+ * the responsible language #plugin.
119
119
  *
120
120
  * @param script the unique raw module ID for the script.
121
121
  */
@@ -169,7 +169,7 @@ export class ValueNode extends SDK.RemoteObject.RemoteObjectImpl {
169
169
  }
170
170
  }
171
171
 
172
- // Debugger language plugins present source-language values as trees with mixed dynamic and static structural
172
+ // Debugger language #plugins present source-language values as trees with mixed dynamic and static structural
173
173
  // information. The static structure is defined by the variable's static type in the source language. Formatters are
174
174
  // able to present source-language values in an arbitrary user-friendly way, which contributes the dynamic structural
175
175
  // information. The classes StaticallyTypedValue and FormatedValueNode respectively implement the static and dynamic
@@ -234,7 +234,7 @@ async function getValueTreeForExpression(
234
234
  return new StaticallyTypedValueNode(callFrame, plugin, sourceType, base, [], evalOptions, address);
235
235
  }
236
236
 
237
- /** Run the formatter for the value defined by the pair of base and fieldChain.
237
+ /** Run the formatter for the value defined by the pair of #base and #fieldChain.
238
238
  */
239
239
  async function formatSourceValue(
240
240
  callFrame: SDK.DebuggerModel.CallFrame, plugin: DebuggerLanguagePlugin, sourceType: SourceType,
@@ -318,13 +318,13 @@ async function formatSourceValue(
318
318
  // StaticallyTypedValueNodes. The class hooks into the creation of RemoteObjects for properties to check whether a
319
319
  // property is a marker.
320
320
  class FormattedValueNode extends ValueNode {
321
- private readonly plugin: DebuggerLanguagePlugin;
322
- private readonly sourceType: SourceType;
321
+ readonly #plugin: DebuggerLanguagePlugin;
322
+ readonly #sourceType: SourceType;
323
323
  formatterTag: {
324
324
  className: string,
325
325
  symbol: string,
326
326
  }|null;
327
- private readonly evalOptions: SDK.RuntimeModel.EvaluationOptions;
327
+ readonly #evalOptions: SDK.RuntimeModel.EvaluationOptions;
328
328
  constructor(
329
329
  callFrame: SDK.DebuggerModel.CallFrame, sourceType: SourceType, plugin: DebuggerLanguagePlugin,
330
330
  object: Protocol.Runtime.RemoteObject, formatterTag: {
@@ -336,13 +336,13 @@ class FormattedValueNode extends ValueNode {
336
336
  callFrame, object.objectId, object.type, object.subtype, object.value, inspectableAddress,
337
337
  object.unserializableValue, object.description, object.preview, object.customPreview, object.className);
338
338
 
339
- this.plugin = plugin;
340
- this.sourceType = sourceType;
339
+ this.#plugin = plugin;
340
+ this.#sourceType = sourceType;
341
341
 
342
342
  // The tag describes how to identify a marker by its className and its identifier symbol's object id.
343
343
  this.formatterTag = formatterTag;
344
344
 
345
- this.evalOptions = evalOptions;
345
+ this.#evalOptions = evalOptions;
346
346
  }
347
347
 
348
348
  async findProperties(...properties: string[]): Promise<{
@@ -370,24 +370,24 @@ class FormattedValueNode extends ValueNode {
370
370
  const base = await this.getEvalBaseFromObject(newObject);
371
371
  if (!base) {
372
372
  return new FormattedValueNode(
373
- this.callFrame, this.sourceType, this.plugin, newObject, this.formatterTag, this.evalOptions, undefined);
373
+ this.callFrame, this.#sourceType, this.#plugin, newObject, this.formatterTag, this.#evalOptions, undefined);
374
374
  }
375
375
 
376
376
  // Property is a marker, check if it's just static type information or if we need to run formatters for the value.
377
- const newSourceType = this.sourceType.typeMap.get(base.rootType.typeId);
377
+ const newSourceType = this.#sourceType.typeMap.get(base.rootType.typeId);
378
378
  if (!newSourceType) {
379
379
  throw new Error('Unknown typeId in eval base');
380
380
  }
381
381
  // The marker refers to a value that needs to be formatted, so run the formatter.
382
382
  if (base.rootType.hasValue && !base.rootType.canExpand && base) {
383
- return formatSourceValue(this.callFrame, this.plugin, newSourceType, base, [], this.evalOptions);
383
+ return formatSourceValue(this.callFrame, this.#plugin, newSourceType, base, [], this.#evalOptions);
384
384
  }
385
385
 
386
386
  // The marker is just static information, so start a new subtree with a static type info root.
387
387
  const address =
388
- await StaticallyTypedValueNode.getInspectableAddress(this.callFrame, this.plugin, base, [], this.evalOptions);
388
+ await StaticallyTypedValueNode.getInspectableAddress(this.callFrame, this.#plugin, base, [], this.#evalOptions);
389
389
  return new StaticallyTypedValueNode(
390
- this.callFrame, this.plugin, newSourceType, base, [], this.evalOptions, address);
390
+ this.callFrame, this.#plugin, newSourceType, base, [], this.#evalOptions, address);
391
391
  }
392
392
 
393
393
  /**
@@ -418,8 +418,8 @@ class FormattedValueNode extends ValueNode {
418
418
 
419
419
  // The object is a marker, so pull the static type information from its symbol property. The symbol property is not
420
420
  // a formatted value per se, but we wrap it as one to be able to call `findProperties`.
421
- const baseObject =
422
- new FormattedValueNode(this.callFrame, this.sourceType, this.plugin, result, null, this.evalOptions, undefined);
421
+ const baseObject = new FormattedValueNode(
422
+ this.callFrame, this.#sourceType, this.#plugin, result, null, this.#evalOptions, undefined);
423
423
  const {payload, rootType} = await baseObject.findProperties('payload', 'rootType');
424
424
  if (typeof payload === 'undefined' || typeof rootType === 'undefined') {
425
425
  return null;
@@ -430,7 +430,7 @@ class FormattedValueNode extends ValueNode {
430
430
  return null;
431
431
  }
432
432
 
433
- const newSourceType = this.sourceType.typeMap.get(typeId.value);
433
+ const newSourceType = this.#sourceType.typeMap.get(typeId.value);
434
434
  if (!newSourceType) {
435
435
  return null;
436
436
  }
@@ -463,16 +463,16 @@ class FormattingError extends Error {
463
463
  }
464
464
 
465
465
  // This class implements a `RemoteObject` for source language value whose immediate properties are defined purely by
466
- // static type information. Static type information is expressed by an `EvalBase` together with a `fieldChain`. The
466
+ // static type information. Static type information is expressed by an `EvalBase` together with a `#fieldChain`. The
467
467
  // latter is necessary to express navigating through type members. We don't know how to make sense of an `EvalBase`'s
468
- // payload here, which is why member navigation is relayed to the formatter via the `fieldChain`.
468
+ // payload here, which is why member navigation is relayed to the formatter via the `#fieldChain`.
469
469
  class StaticallyTypedValueNode extends ValueNode {
470
- private readonly variableType: string;
471
- private readonly plugin: DebuggerLanguagePlugin;
472
- private readonly sourceType: SourceType;
473
- private readonly base: Chrome.DevTools.EvalBase|null;
474
- private readonly fieldChain: Chrome.DevTools.FieldInfo[];
475
- private readonly evalOptions: SDK.RuntimeModel.EvaluationOptions;
470
+ readonly #variableType: string;
471
+ readonly #plugin: DebuggerLanguagePlugin;
472
+ readonly #sourceType: SourceType;
473
+ readonly #base: Chrome.DevTools.EvalBase|null;
474
+ readonly #fieldChain: Chrome.DevTools.FieldInfo[];
475
+ readonly #evalOptions: SDK.RuntimeModel.EvaluationOptions;
476
476
 
477
477
  constructor(
478
478
  callFrame: SDK.DebuggerModel.CallFrame, plugin: DebuggerLanguagePlugin, sourceType: SourceType,
@@ -486,29 +486,29 @@ class StaticallyTypedValueNode extends ValueNode {
486
486
  /* type=*/ variableType,
487
487
  /* subtype=*/ undefined, /* value=*/ null, inspectableAddress, /* unserializableValue=*/ undefined,
488
488
  /* description=*/ typeName, /* preview=*/ undefined, /* customPreview=*/ undefined, /* className=*/ typeName);
489
- this.variableType = variableType;
490
- this.plugin = plugin;
491
- this.sourceType = sourceType;
492
- this.base = base;
493
- this.fieldChain = fieldChain;
489
+ this.#variableType = variableType;
490
+ this.#plugin = plugin;
491
+ this.#sourceType = sourceType;
492
+ this.#base = base;
493
+ this.#fieldChain = fieldChain;
494
494
  this.hasChildrenInternal = true;
495
- this.evalOptions = evalOptions;
495
+ this.#evalOptions = evalOptions;
496
496
  }
497
497
 
498
498
  get type(): string {
499
- return this.variableType;
499
+ return this.#variableType;
500
500
  }
501
501
 
502
502
  private async expandMember(sourceType: SourceType, fieldInfo: Chrome.DevTools.FieldInfo):
503
503
  Promise<SDK.RemoteObject.RemoteObject> {
504
- const fieldChain = this.fieldChain.concat(fieldInfo);
505
- if (sourceType.typeInfo.hasValue && !sourceType.typeInfo.canExpand && this.base) {
506
- return formatSourceValue(this.callFrame, this.plugin, sourceType, this.base, fieldChain, this.evalOptions);
504
+ const fieldChain = this.#fieldChain.concat(fieldInfo);
505
+ if (sourceType.typeInfo.hasValue && !sourceType.typeInfo.canExpand && this.#base) {
506
+ return formatSourceValue(this.callFrame, this.#plugin, sourceType, this.#base, fieldChain, this.#evalOptions);
507
507
  }
508
508
 
509
509
  const address = this.inspectableAddress !== undefined ? this.inspectableAddress + fieldInfo.offset : undefined;
510
510
  return new StaticallyTypedValueNode(
511
- this.callFrame, this.plugin, sourceType, this.base, fieldChain, this.evalOptions, address);
511
+ this.callFrame, this.#plugin, sourceType, this.#base, fieldChain, this.#evalOptions, address);
512
512
  }
513
513
 
514
514
  static async getInspectableAddress(
@@ -555,7 +555,7 @@ class StaticallyTypedValueNode extends ValueNode {
555
555
 
556
556
  async doGetProperties(_ownProperties: boolean, accessorPropertiesOnly: boolean, _generatePreview: boolean):
557
557
  Promise<SDK.RemoteObject.GetPropertiesResult> {
558
- const {typeInfo} = this.sourceType;
558
+ const {typeInfo} = this.#sourceType;
559
559
  if (accessorPropertiesOnly || !typeInfo.canExpand) {
560
560
  return {properties: [], internalProperties: []} as SDK.RemoteObject.GetPropertiesResult;
561
561
  }
@@ -563,9 +563,9 @@ class StaticallyTypedValueNode extends ValueNode {
563
563
  if (typeInfo.members.length > 0) {
564
564
  // This value doesn't have a formatter, but we can eagerly expand arrays in the frontend if the size is known.
565
565
  if (typeInfo.arraySize > 0) {
566
- const {typeId} = this.sourceType.typeInfo.members[0];
566
+ const {typeId} = this.#sourceType.typeInfo.members[0];
567
567
  const properties: SDK.RemoteObject.RemoteObjectProperty[] = [];
568
- const elementTypeInfo = this.sourceType.members[0];
568
+ const elementTypeInfo = this.#sourceType.members[0];
569
569
  for (let i = 0; i < typeInfo.arraySize; ++i) {
570
570
  const name = `${i}`;
571
571
  const elementField = {name, typeId, offset: elementTypeInfo.typeInfo.size * i};
@@ -579,8 +579,8 @@ class StaticallyTypedValueNode extends ValueNode {
579
579
  }
580
580
 
581
581
  // The node is expanded, just make remote objects for its members
582
- const members = Promise.all(this.sourceType.members.map(async (memberTypeInfo, idx) => {
583
- const fieldInfo = this.sourceType.typeInfo.members[idx];
582
+ const members = Promise.all(this.#sourceType.members.map(async (memberTypeInfo, idx) => {
583
+ const fieldInfo = this.#sourceType.typeInfo.members[idx];
584
584
  const propertyObject = await this.expandMember(memberTypeInfo, fieldInfo);
585
585
  const name = fieldInfo.name || '';
586
586
  return new SDK.RemoteObject.RemoteObjectProperty(
@@ -612,17 +612,17 @@ class NamespaceObject extends SDK.RemoteObject.LocalJSONObject {
612
612
 
613
613
  class SourceScopeRemoteObject extends SDK.RemoteObject.RemoteObjectImpl {
614
614
  variables: Chrome.DevTools.Variable[];
615
- private callFrame: SDK.DebuggerModel.CallFrame;
616
- private plugin: DebuggerLanguagePlugin;
617
- private readonly location: Chrome.DevTools.RawLocation;
615
+ #callFrame: SDK.DebuggerModel.CallFrame;
616
+ #plugin: DebuggerLanguagePlugin;
617
+ readonly #location: Chrome.DevTools.RawLocation;
618
618
 
619
619
  constructor(
620
620
  callFrame: SDK.DebuggerModel.CallFrame, plugin: DebuggerLanguagePlugin, location: Chrome.DevTools.RawLocation) {
621
621
  super(callFrame.debuggerModel.runtimeModel(), undefined, 'object', undefined, null);
622
622
  this.variables = [];
623
- this.callFrame = callFrame;
624
- this.plugin = plugin;
625
- this.location = location;
623
+ this.#callFrame = callFrame;
624
+ this.#plugin = plugin;
625
+ this.#location = location;
626
626
  }
627
627
 
628
628
  async doGetProperties(ownProperties: boolean, accessorPropertiesOnly: boolean, _generatePreview: boolean):
@@ -645,7 +645,7 @@ class SourceScopeRemoteObject extends SDK.RemoteObject.RemoteObjectImpl {
645
645
  for (const variable of this.variables) {
646
646
  let sourceVar;
647
647
  try {
648
- sourceVar = await getValueTreeForExpression(this.callFrame, this.plugin, variable.name, ({
648
+ sourceVar = await getValueTreeForExpression(this.#callFrame, this.#plugin, variable.name, ({
649
649
  generatePreview: false,
650
650
  includeCommandLineAPI: true,
651
651
  objectGroup: 'backtrace',
@@ -686,33 +686,33 @@ class SourceScopeRemoteObject extends SDK.RemoteObject.RemoteObjectImpl {
686
686
  }
687
687
 
688
688
  export class SourceScope implements SDK.DebuggerModel.ScopeChainEntry {
689
- private readonly callFrameInternal: SDK.DebuggerModel.CallFrame;
690
- private readonly typeInternal: string;
691
- private readonly typeNameInternal: string;
692
- private readonly iconInternal: string|undefined;
693
- private readonly objectInternal: SourceScopeRemoteObject;
694
- private readonly nameInternal: string;
695
- private readonly startLocationInternal: SDK.DebuggerModel.Location|null;
696
- private readonly endLocationInternal: SDK.DebuggerModel.Location|null;
689
+ readonly #callFrameInternal: SDK.DebuggerModel.CallFrame;
690
+ readonly #typeInternal: string;
691
+ readonly #typeNameInternal: string;
692
+ readonly #iconInternal: string|undefined;
693
+ readonly #objectInternal: SourceScopeRemoteObject;
694
+ readonly #nameInternal: string;
695
+ readonly #startLocationInternal: SDK.DebuggerModel.Location|null;
696
+ readonly #endLocationInternal: SDK.DebuggerModel.Location|null;
697
697
  constructor(
698
698
  callFrame: SDK.DebuggerModel.CallFrame, type: string, typeName: string, icon: string|undefined,
699
699
  plugin: DebuggerLanguagePlugin, location: Chrome.DevTools.RawLocation) {
700
- this.callFrameInternal = callFrame;
701
- this.typeInternal = type;
702
- this.typeNameInternal = typeName;
703
- this.iconInternal = icon;
704
- this.objectInternal = new SourceScopeRemoteObject(callFrame, plugin, location);
705
- this.nameInternal = type;
706
- this.startLocationInternal = null;
707
- this.endLocationInternal = null;
700
+ this.#callFrameInternal = callFrame;
701
+ this.#typeInternal = type;
702
+ this.#typeNameInternal = typeName;
703
+ this.#iconInternal = icon;
704
+ this.#objectInternal = new SourceScopeRemoteObject(callFrame, plugin, location);
705
+ this.#nameInternal = type;
706
+ this.#startLocationInternal = null;
707
+ this.#endLocationInternal = null;
708
708
  }
709
709
 
710
710
  async getVariableValue(name: string): Promise<SDK.RemoteObject.RemoteObject|null> {
711
- for (let v = 0; v < this.objectInternal.variables.length; ++v) {
712
- if (this.objectInternal.variables[v].name !== name) {
711
+ for (let v = 0; v < this.#objectInternal.variables.length; ++v) {
712
+ if (this.#objectInternal.variables[v].name !== name) {
713
713
  continue;
714
714
  }
715
- const properties = await this.objectInternal.getAllProperties(false, false);
715
+ const properties = await this.#objectInternal.getAllProperties(false, false);
716
716
  if (!properties.properties) {
717
717
  continue;
718
718
  }
@@ -725,15 +725,15 @@ export class SourceScope implements SDK.DebuggerModel.ScopeChainEntry {
725
725
  }
726
726
 
727
727
  callFrame(): SDK.DebuggerModel.CallFrame {
728
- return this.callFrameInternal;
728
+ return this.#callFrameInternal;
729
729
  }
730
730
 
731
731
  type(): string {
732
- return this.typeInternal;
732
+ return this.#typeInternal;
733
733
  }
734
734
 
735
735
  typeName(): string {
736
- return this.typeNameInternal;
736
+ return this.#typeNameInternal;
737
737
  }
738
738
 
739
739
  name(): string|undefined {
@@ -741,15 +741,15 @@ export class SourceScope implements SDK.DebuggerModel.ScopeChainEntry {
741
741
  }
742
742
 
743
743
  startLocation(): SDK.DebuggerModel.Location|null {
744
- return this.startLocationInternal;
744
+ return this.#startLocationInternal;
745
745
  }
746
746
 
747
747
  endLocation(): SDK.DebuggerModel.Location|null {
748
- return this.endLocationInternal;
748
+ return this.#endLocationInternal;
749
749
  }
750
750
 
751
751
  object(): SourceScopeRemoteObject {
752
- return this.objectInternal;
752
+ return this.#objectInternal;
753
753
  }
754
754
 
755
755
  description(): string {
@@ -757,17 +757,17 @@ export class SourceScope implements SDK.DebuggerModel.ScopeChainEntry {
757
757
  }
758
758
 
759
759
  icon(): string|undefined {
760
- return this.iconInternal;
760
+ return this.#iconInternal;
761
761
  }
762
762
  }
763
763
 
764
764
  export class DebuggerLanguagePluginManager implements
765
765
  SDK.TargetManager.SDKModelObserver<SDK.DebuggerModel.DebuggerModel> {
766
- private readonly workspace: Workspace.Workspace.WorkspaceImpl;
767
- private readonly debuggerWorkspaceBinding: DebuggerWorkspaceBinding;
768
- private plugins: DebuggerLanguagePlugin[];
769
- private readonly debuggerModelToData: Map<SDK.DebuggerModel.DebuggerModel, ModelData>;
770
- private readonly rawModuleHandles: Map<string, {
766
+ readonly #workspace: Workspace.Workspace.WorkspaceImpl;
767
+ readonly #debuggerWorkspaceBinding: DebuggerWorkspaceBinding;
768
+ #plugins: DebuggerLanguagePlugin[];
769
+ readonly #debuggerModelToData: Map<SDK.DebuggerModel.DebuggerModel, ModelData>;
770
+ readonly #rawModuleHandles: Map<string, {
771
771
  rawModuleId: string,
772
772
  plugin: DebuggerLanguagePlugin,
773
773
  scripts: Array<SDK.Script.Script>,
@@ -777,15 +777,15 @@ export class DebuggerLanguagePluginManager implements
777
777
  constructor(
778
778
  targetManager: SDK.TargetManager.TargetManager, workspace: Workspace.Workspace.WorkspaceImpl,
779
779
  debuggerWorkspaceBinding: DebuggerWorkspaceBinding) {
780
- this.workspace = workspace;
781
- this.debuggerWorkspaceBinding = debuggerWorkspaceBinding;
780
+ this.#workspace = workspace;
781
+ this.#debuggerWorkspaceBinding = debuggerWorkspaceBinding;
782
782
 
783
- this.plugins = [];
783
+ this.#plugins = [];
784
784
 
785
- this.debuggerModelToData = new Map();
785
+ this.#debuggerModelToData = new Map();
786
786
  targetManager.observeModels(SDK.DebuggerModel.DebuggerModel, this);
787
787
 
788
- this.rawModuleHandles = new Map();
788
+ this.#rawModuleHandles = new Map();
789
789
  }
790
790
 
791
791
  private async evaluateOnCallFrame(
@@ -842,7 +842,7 @@ export class DebuggerLanguagePluginManager implements
842
842
  }
843
843
 
844
844
  modelAdded(debuggerModel: SDK.DebuggerModel.DebuggerModel): void {
845
- this.debuggerModelToData.set(debuggerModel, new ModelData(debuggerModel, this.workspace));
845
+ this.#debuggerModelToData.set(debuggerModel, new ModelData(debuggerModel, this.#workspace));
846
846
  debuggerModel.addEventListener(SDK.DebuggerModel.Events.GlobalObjectCleared, this.globalObjectCleared, this);
847
847
  debuggerModel.addEventListener(SDK.DebuggerModel.Events.ParsedScriptSource, this.parsedScriptSource, this);
848
848
  debuggerModel.setEvaluateOnCallFrameCallback(this.evaluateOnCallFrame.bind(this));
@@ -854,19 +854,19 @@ export class DebuggerLanguagePluginManager implements
854
854
  debuggerModel.removeEventListener(SDK.DebuggerModel.Events.ParsedScriptSource, this.parsedScriptSource, this);
855
855
  debuggerModel.setEvaluateOnCallFrameCallback(null);
856
856
  debuggerModel.setExpandCallFramesCallback(null);
857
- const modelData = this.debuggerModelToData.get(debuggerModel);
857
+ const modelData = this.#debuggerModelToData.get(debuggerModel);
858
858
  if (modelData) {
859
859
  modelData.dispose();
860
- this.debuggerModelToData.delete(debuggerModel);
860
+ this.#debuggerModelToData.delete(debuggerModel);
861
861
  }
862
- this.rawModuleHandles.forEach((rawModuleHandle, rawModuleId) => {
862
+ this.#rawModuleHandles.forEach((rawModuleHandle, rawModuleId) => {
863
863
  const scripts = rawModuleHandle.scripts.filter(script => script.debuggerModel !== debuggerModel);
864
864
  if (scripts.length === 0) {
865
865
  rawModuleHandle.plugin.removeRawModule(rawModuleId).catch(error => {
866
866
  Common.Console.Console.instance().error(
867
867
  i18nString(UIStrings.errorInDebuggerLanguagePlugin, {PH1: error.message}));
868
868
  });
869
- this.rawModuleHandles.delete(rawModuleId);
869
+ this.#rawModuleHandles.delete(rawModuleId);
870
870
  } else {
871
871
  rawModuleHandle.scripts = scripts;
872
872
  }
@@ -880,8 +880,8 @@ export class DebuggerLanguagePluginManager implements
880
880
  }
881
881
 
882
882
  addPlugin(plugin: DebuggerLanguagePlugin): void {
883
- this.plugins.push(plugin);
884
- for (const debuggerModel of this.debuggerModelToData.keys()) {
883
+ this.#plugins.push(plugin);
884
+ for (const debuggerModel of this.#debuggerModelToData.keys()) {
885
885
  for (const script of debuggerModel.scripts()) {
886
886
  if (this.hasPluginForScript(script)) {
887
887
  continue;
@@ -892,24 +892,24 @@ export class DebuggerLanguagePluginManager implements
892
892
  }
893
893
 
894
894
  removePlugin(plugin: DebuggerLanguagePlugin): void {
895
- this.plugins = this.plugins.filter(p => p !== plugin);
895
+ this.#plugins = this.#plugins.filter(p => p !== plugin);
896
896
  const scripts = new Set<SDK.Script.Script>();
897
- this.rawModuleHandles.forEach((rawModuleHandle, rawModuleId) => {
897
+ this.#rawModuleHandles.forEach((rawModuleHandle, rawModuleId) => {
898
898
  if (rawModuleHandle.plugin !== plugin) {
899
899
  return;
900
900
  }
901
901
  rawModuleHandle.scripts.forEach(script => scripts.add(script));
902
- this.rawModuleHandles.delete(rawModuleId);
902
+ this.#rawModuleHandles.delete(rawModuleId);
903
903
  });
904
904
  for (const script of scripts) {
905
- const modelData = (this.debuggerModelToData.get(script.debuggerModel) as ModelData);
905
+ const modelData = (this.#debuggerModelToData.get(script.debuggerModel) as ModelData);
906
906
  modelData.removeScript(script);
907
907
 
908
- // Let's see if we have another plugin that's happy to
908
+ // Let's see if we have another #plugin that's happy to
909
909
  // take this orphaned script now. This is important to
910
- // get right, since the same plugin might race during
910
+ // get right, since the same #plugin might race during
911
911
  // unregister/register and we might already have the
912
- // new instance of the plugin added before we remove
912
+ // new instance of the #plugin added before we remove
913
913
  // the previous instance.
914
914
  this.parsedScriptSource({data: script});
915
915
  }
@@ -917,27 +917,27 @@ export class DebuggerLanguagePluginManager implements
917
917
 
918
918
  hasPluginForScript(script: SDK.Script.Script): boolean {
919
919
  const rawModuleId = rawModuleIdForScript(script);
920
- const rawModuleHandle = this.rawModuleHandles.get(rawModuleId);
920
+ const rawModuleHandle = this.#rawModuleHandles.get(rawModuleId);
921
921
  return rawModuleHandle !== undefined && rawModuleHandle.scripts.includes(script);
922
922
  }
923
923
 
924
924
  /**
925
- * Returns the responsible language plugin and the raw module ID for a script.
925
+ * Returns the responsible language #plugin and the raw module ID for a script.
926
926
  *
927
927
  * This ensures that the `addRawModule` call finishes first such that the
928
- * caller can immediately issue calls to the returned plugin without the
929
- * risk of racing with the `addRawModule` call. The returned plugin will be
930
- * set to undefined to indicate that there's no plugin for the script.
928
+ * caller can immediately issue calls to the returned #plugin without the
929
+ * risk of racing with the `addRawModule` call. The returned #plugin will be
930
+ * set to undefined to indicate that there's no #plugin for the script.
931
931
  */
932
932
  private async rawModuleIdAndPluginForScript(script: SDK.Script.Script): Promise<{
933
933
  rawModuleId: string,
934
934
  plugin: DebuggerLanguagePlugin|null,
935
935
  }> {
936
936
  const rawModuleId = rawModuleIdForScript(script);
937
- const rawModuleHandle = this.rawModuleHandles.get(rawModuleId);
937
+ const rawModuleHandle = this.#rawModuleHandles.get(rawModuleId);
938
938
  if (rawModuleHandle) {
939
939
  await rawModuleHandle.addRawModulePromise;
940
- if (rawModuleHandle === this.rawModuleHandles.get(rawModuleId)) {
940
+ if (rawModuleHandle === this.#rawModuleHandles.get(rawModuleId)) {
941
941
  return {rawModuleId, plugin: rawModuleHandle.plugin};
942
942
  }
943
943
  }
@@ -946,7 +946,7 @@ export class DebuggerLanguagePluginManager implements
946
946
 
947
947
  uiSourceCodeForURL(debuggerModel: SDK.DebuggerModel.DebuggerModel, url: string): Workspace.UISourceCode.UISourceCode
948
948
  |null {
949
- const modelData = this.debuggerModelToData.get(debuggerModel);
949
+ const modelData = this.#debuggerModelToData.get(debuggerModel);
950
950
  if (modelData) {
951
951
  return modelData.getProject().uiSourceCodeForURL(url);
952
952
  }
@@ -966,7 +966,7 @@ export class DebuggerLanguagePluginManager implements
966
966
 
967
967
  const pluginLocation = {
968
968
  rawModuleId,
969
- // RawLocation.columnNumber is the byte offset in the full raw wasm module. Plugins expect the offset in the code
969
+ // RawLocation.#columnNumber is the byte offset in the full raw wasm module. Plugins expect the offset in the code
970
970
  // section, so subtract the offset of the code section in the module here.
971
971
  codeOffset: rawLocation.columnNumber - (script.codeOffset() || 0),
972
972
  inlineFrameIndex: rawLocation.inlineFrameIndex,
@@ -979,7 +979,7 @@ export class DebuggerLanguagePluginManager implements
979
979
  if (!uiSourceCode) {
980
980
  continue;
981
981
  }
982
- // Absence of column information is indicated by the value `-1` in talking to language plugins.
982
+ // Absence of column information is indicated by the value `-1` in talking to language #plugins.
983
983
  return uiSourceCode.uiLocation(
984
984
  sourceLocation.lineNumber, sourceLocation.columnNumber >= 0 ? sourceLocation.columnNumber : undefined);
985
985
  }
@@ -1002,7 +1002,7 @@ export class DebuggerLanguagePluginManager implements
1002
1002
  }[]>[] = [];
1003
1003
  this.scriptsForUISourceCode(uiSourceCode).forEach(script => {
1004
1004
  const rawModuleId = rawModuleIdForScript(script);
1005
- const rawModuleHandle = this.rawModuleHandles.get(rawModuleId);
1005
+ const rawModuleHandle = this.#rawModuleHandles.get(rawModuleId);
1006
1006
  if (!rawModuleHandle) {
1007
1007
  return;
1008
1008
  }
@@ -1051,7 +1051,7 @@ export class DebuggerLanguagePluginManager implements
1051
1051
  }
1052
1052
 
1053
1053
  scriptsForUISourceCode(uiSourceCode: Workspace.UISourceCode.UISourceCode): SDK.Script.Script[] {
1054
- for (const modelData of this.debuggerModelToData.values()) {
1054
+ for (const modelData of this.#debuggerModelToData.values()) {
1055
1055
  const scripts = modelData.uiSourceCodeToScripts.get(uiSourceCode);
1056
1056
  if (scripts) {
1057
1057
  return scripts;
@@ -1066,12 +1066,12 @@ export class DebuggerLanguagePluginManager implements
1066
1066
  return;
1067
1067
  }
1068
1068
 
1069
- for (const plugin of this.plugins) {
1069
+ for (const plugin of this.#plugins) {
1070
1070
  if (!plugin.handleScript(script)) {
1071
1071
  return;
1072
1072
  }
1073
1073
  const rawModuleId = rawModuleIdForScript(script);
1074
- let rawModuleHandle = this.rawModuleHandles.get(rawModuleId);
1074
+ let rawModuleHandle = this.#rawModuleHandles.get(rawModuleId);
1075
1075
  if (!rawModuleHandle) {
1076
1076
  const sourceFileURLsPromise = (async(): Promise<string[]> => {
1077
1077
  const console = Common.Console.Console.instance();
@@ -1089,7 +1089,7 @@ export class DebuggerLanguagePluginManager implements
1089
1089
  // `rawModuleHandle` below will run before this code because of the `await` in the preceding
1090
1090
  // line. This is primarily to avoid logging the message below, which would give the developer
1091
1091
  // the misleading information that we're done, while in reality it was a stale call that finished.
1092
- if (rawModuleHandle !== this.rawModuleHandles.get(rawModuleId)) {
1092
+ if (rawModuleHandle !== this.#rawModuleHandles.get(rawModuleId)) {
1093
1093
  return [];
1094
1094
  }
1095
1095
  if (sourceFileURLs.length === 0) {
@@ -1102,27 +1102,27 @@ export class DebuggerLanguagePluginManager implements
1102
1102
  } catch (error) {
1103
1103
  console.error(
1104
1104
  i18nString(UIStrings.failedToLoadDebugSymbolsFor, {PH1: plugin.name, PH2: url, PH3: error.message}));
1105
- this.rawModuleHandles.delete(rawModuleId);
1105
+ this.#rawModuleHandles.delete(rawModuleId);
1106
1106
  return [];
1107
1107
  }
1108
1108
  })();
1109
1109
  rawModuleHandle = {rawModuleId, plugin, scripts: [script], addRawModulePromise: sourceFileURLsPromise};
1110
- this.rawModuleHandles.set(rawModuleId, rawModuleHandle);
1110
+ this.#rawModuleHandles.set(rawModuleId, rawModuleHandle);
1111
1111
  } else {
1112
1112
  rawModuleHandle.scripts.push(script);
1113
1113
  }
1114
1114
 
1115
1115
  // Wait for the addRawModule call to finish and
1116
- // update the project. It's important to check
1116
+ // update the #project. It's important to check
1117
1117
  // for the DebuggerModel again, which may disappear
1118
1118
  // in the meantime...
1119
1119
  rawModuleHandle.addRawModulePromise.then(sourceFileURLs => {
1120
1120
  // The script might have disappeared meanwhile...
1121
1121
  if (script.debuggerModel.scriptForId(script.scriptId) === script) {
1122
- const modelData = this.debuggerModelToData.get(script.debuggerModel);
1122
+ const modelData = this.#debuggerModelToData.get(script.debuggerModel);
1123
1123
  if (modelData) { // The DebuggerModel could have disappeared meanwhile...
1124
1124
  modelData.addSourceFiles(script, sourceFileURLs);
1125
- this.debuggerWorkspaceBinding.updateLocations(script);
1125
+ this.#debuggerWorkspaceBinding.updateLocations(script);
1126
1126
  }
1127
1127
  }
1128
1128
  });
@@ -1205,7 +1205,7 @@ export class DebuggerLanguagePluginManager implements
1205
1205
 
1206
1206
  const pluginLocation = {
1207
1207
  rawModuleId,
1208
- // RawLocation.columnNumber is the byte offset in the full raw wasm module. Plugins expect the offset in the code
1208
+ // RawLocation.#columnNumber is the byte offset in the full raw wasm module. Plugins expect the offset in the code
1209
1209
  // section, so subtract the offset of the code section in the module here.
1210
1210
  codeOffset: rawLocation.columnNumber - (script.codeOffset() || 0),
1211
1211
  };
@@ -1242,7 +1242,7 @@ export class DebuggerLanguagePluginManager implements
1242
1242
 
1243
1243
  const pluginLocation = {
1244
1244
  rawModuleId,
1245
- // RawLocation.columnNumber is the byte offset in the full raw wasm module. Plugins expect the offset in the code
1245
+ // RawLocation.#columnNumber is the byte offset in the full raw wasm module. Plugins expect the offset in the code
1246
1246
  // section, so subtract the offset of the code section in the module here.
1247
1247
  codeOffset: rawLocation.columnNumber - (script.codeOffset() || 0),
1248
1248
  };
@@ -1292,11 +1292,11 @@ export class DebuggerLanguagePluginManager implements
1292
1292
  }
1293
1293
 
1294
1294
  class ModelData {
1295
- private readonly debuggerModel: SDK.DebuggerModel.DebuggerModel;
1295
+ readonly #debuggerModel: SDK.DebuggerModel.DebuggerModel;
1296
1296
  project: ContentProviderBasedProject;
1297
1297
  readonly uiSourceCodeToScripts: Map<Workspace.UISourceCode.UISourceCode, SDK.Script.Script[]>;
1298
1298
  constructor(debuggerModel: SDK.DebuggerModel.DebuggerModel, workspace: Workspace.Workspace.WorkspaceImpl) {
1299
- this.debuggerModel = debuggerModel;
1299
+ this.#debuggerModel = debuggerModel;
1300
1300
  this.project = new ContentProviderBasedProject(
1301
1301
  workspace, 'language_plugins::' + debuggerModel.target().id(), Workspace.Workspace.projectTypes.Network, '',
1302
1302
  false /* isServiceProject */);
@@ -1314,7 +1314,7 @@ class ModelData {
1314
1314
  NetworkProject.setInitialFrameAttribution(uiSourceCode, script.frameId);
1315
1315
 
1316
1316
  // Bind the uiSourceCode to the script first before we add the
1317
- // uiSourceCode to the project and thereby notify the rest of
1317
+ // uiSourceCode to the #project and thereby notify the rest of
1318
1318
  // the system about the new source file.
1319
1319
  // https://crbug.com/1150295 is an example where the breakpoint
1320
1320
  // resolution logic kicks in right after adding the uiSourceCode
@@ -1371,21 +1371,21 @@ export class DebuggerLanguagePlugin {
1371
1371
  dispose(): void {
1372
1372
  }
1373
1373
 
1374
- /** Notify the plugin about a new script
1374
+ /** Notify the #plugin about a new script
1375
1375
  */
1376
1376
  async addRawModule(_rawModuleId: string, _symbolsURL: string, _rawModule: Chrome.DevTools.RawModule):
1377
1377
  Promise<string[]> {
1378
1378
  throw new Error('Not implemented yet');
1379
1379
  }
1380
1380
 
1381
- /** Find locations in raw modules from a location in a source file
1381
+ /** Find #locations in raw modules from a #location in a source file
1382
1382
  */
1383
1383
  async sourceLocationToRawLocation(_sourceLocation: Chrome.DevTools.SourceLocation):
1384
1384
  Promise<Chrome.DevTools.RawLocationRange[]> {
1385
1385
  throw new Error('Not implemented yet');
1386
1386
  }
1387
1387
 
1388
- /** Find locations in source files from a location in a raw module
1388
+ /** Find #locations in source files from a #location in a raw module
1389
1389
  */
1390
1390
  async rawLocationToSourceLocation(_rawLocation: Chrome.DevTools.RawLocation):
1391
1391
  Promise<Chrome.DevTools.SourceLocation[]> {
@@ -1398,14 +1398,14 @@ export class DebuggerLanguagePlugin {
1398
1398
  throw new Error('Not implemented yet');
1399
1399
  }
1400
1400
 
1401
- /** List all variables in lexical scope at a given location in a raw module
1401
+ /** List all variables in lexical scope at a given #location in a raw module
1402
1402
  */
1403
1403
  async listVariablesInScope(_rawLocation: Chrome.DevTools.RawLocation): Promise<Chrome.DevTools.Variable[]> {
1404
1404
  throw new Error('Not implemented yet');
1405
1405
  }
1406
1406
 
1407
1407
  /**
1408
- * Notifies the plugin that a script is removed.
1408
+ * Notifies the #plugin that a script is removed.
1409
1409
  */
1410
1410
  removeRawModule(_rawModuleId: string): Promise<void> {
1411
1411
  throw new Error('Not implemented yet');
@@ -1439,7 +1439,7 @@ export class DebuggerLanguagePlugin {
1439
1439
  }
1440
1440
 
1441
1441
  /**
1442
- * Find locations in source files from a location in a raw module
1442
+ * Find #locations in source files from a #location in a raw module
1443
1443
  */
1444
1444
  async getFunctionInfo(_rawLocation: Chrome.DevTools.RawLocation): Promise<{
1445
1445
  frames: Array<Chrome.DevTools.FunctionInfo>,
@@ -1449,7 +1449,7 @@ export class DebuggerLanguagePlugin {
1449
1449
  }
1450
1450
 
1451
1451
  /**
1452
- * Find locations in raw modules corresponding to the inline function
1452
+ * Find #locations in raw modules corresponding to the inline function
1453
1453
  * that rawLocation is in. Used for stepping out of an inline function.
1454
1454
  */
1455
1455
  async getInlinedFunctionRanges(_rawLocation: Chrome.DevTools.RawLocation):
@@ -1458,7 +1458,7 @@ export class DebuggerLanguagePlugin {
1458
1458
  }
1459
1459
 
1460
1460
  /**
1461
- * Find locations in raw modules corresponding to inline functions
1461
+ * Find #locations in raw modules corresponding to inline functions
1462
1462
  * called by the function or inline frame that rawLocation is in.
1463
1463
  * Used for stepping over inline functions.
1464
1464
  */