chrome-devtools-frontend 1.0.1705227 → 1.0.1706026

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 (87) hide show
  1. package/eslint.config.mjs +1 -0
  2. package/front_end/Images/src/nodejsHex.svg +28 -0
  3. package/front_end/core/sdk/CPUThrottlingManager.ts +14 -10
  4. package/front_end/core/sdk/DOMModel.ts +65 -20
  5. package/front_end/core/sdk/DebuggerModel.ts +0 -4
  6. package/front_end/core/sdk/PageResourceLoader.ts +12 -11
  7. package/front_end/core/sdk/SourceMap.ts +7 -5
  8. package/front_end/core/sdk/SourceMapFunctionRanges.ts +22 -37
  9. package/front_end/core/sdk/SourceMapScopeChainEntry.ts +3 -3
  10. package/front_end/core/sdk/SourceMapScopesInfo.ts +50 -62
  11. package/front_end/entrypoints/formatter_worker/formatter_worker-entrypoint.ts +7 -2
  12. package/front_end/entrypoints/heap_snapshot_worker/ContextAnalyzer.ts +140 -20
  13. package/front_end/entrypoints/heap_snapshot_worker/HeapSnapshotLoader.ts +16 -5
  14. package/front_end/entrypoints/inspector_main/nodeIcon.css +1 -1
  15. package/front_end/generated/InspectorBackendCommands.ts +1 -1
  16. package/front_end/generated/protocol.ts +1 -1
  17. package/front_end/models/ai_assistance/AiConversation.ts +16 -3
  18. package/front_end/models/ai_assistance/skills/accessibility.md +8 -7
  19. package/front_end/models/formatter/FormatterWorkerPool.ts +6 -1
  20. package/front_end/models/javascript_metadata/NativeFunctions.ts +6 -2
  21. package/front_end/models/source_map_scopes/NamesResolver.ts +7 -9
  22. package/front_end/panels/application/BackgroundServiceView.ts +1 -0
  23. package/front_end/panels/application/components/AdsView.ts +6 -6
  24. package/front_end/panels/application/components/BackForwardCacheView.ts +1 -1
  25. package/front_end/panels/elements/CSSRuleValidator.ts +3 -0
  26. package/front_end/panels/elements/ClassesPaneWidget.ts +4 -1
  27. package/front_end/panels/elements/LayoutPane.ts +17 -20
  28. package/front_end/panels/network/NetworkLogViewColumns.ts +10 -3
  29. package/front_end/panels/network/ShowMoreDetailsWidget.ts +1 -1
  30. package/front_end/panels/security/SecurityPanel.ts +14 -7
  31. package/front_end/panels/sources/BreakpointEditDialog.ts +13 -1
  32. package/front_end/panels/sources/DebuggerPlugin.ts +66 -54
  33. package/front_end/panels/sources/EditingLocationHistoryManager.ts +6 -6
  34. package/front_end/panels/sources/OpenFileQuickOpen.ts +2 -2
  35. package/front_end/panels/sources/Plugin.ts +3 -2
  36. package/front_end/panels/sources/ResourceOriginPlugin.ts +14 -17
  37. package/front_end/panels/sources/SourcesPanel.ts +1 -1
  38. package/front_end/panels/sources/SourcesView.ts +25 -82
  39. package/front_end/panels/sources/TabbedEditorContainer.ts +75 -21
  40. package/front_end/panels/sources/UISourceCodeFrame.ts +22 -13
  41. package/front_end/panels/sources/sourcesView.css +17 -27
  42. package/front_end/panels/timeline/overlays/components/EntryLabelOverlay.ts +1 -0
  43. package/front_end/third_party/chromium/README.chromium +1 -1
  44. package/front_end/third_party/source-map-scopes-codec/README.chromium +2 -2
  45. package/front_end/third_party/source-map-scopes-codec/package/CONTRIBUTING.md +14 -1
  46. package/front_end/third_party/source-map-scopes-codec/package/README.md +8 -6
  47. package/front_end/third_party/source-map-scopes-codec/package/_dist/src/builder/builder.d.ts +4 -1
  48. package/front_end/third_party/source-map-scopes-codec/package/_dist/src/builder/builder.d.ts.map +1 -1
  49. package/front_end/third_party/source-map-scopes-codec/package/_dist/src/builder/safe_builder.d.ts +3 -1
  50. package/front_end/third_party/source-map-scopes-codec/package/_dist/src/builder/safe_builder.d.ts.map +1 -1
  51. package/front_end/third_party/source-map-scopes-codec/package/_dist/src/decode/decode.d.ts.map +1 -1
  52. package/front_end/third_party/source-map-scopes-codec/package/_dist/src/scopes.d.ts +4 -3
  53. package/front_end/third_party/source-map-scopes-codec/package/_dist/src/scopes.d.ts.map +1 -1
  54. package/front_end/third_party/source-map-scopes-codec/package/deno.json +6 -2
  55. package/front_end/third_party/source-map-scopes-codec/package/package.json +1 -1
  56. package/front_end/third_party/source-map-scopes-codec/package/src/builder/builder.js +18 -2
  57. package/front_end/third_party/source-map-scopes-codec/package/src/builder/builder.js.map +1 -1
  58. package/front_end/third_party/source-map-scopes-codec/package/src/builder/builder.ts +22 -3
  59. package/front_end/third_party/source-map-scopes-codec/package/src/builder/safe_builder.js +33 -5
  60. package/front_end/third_party/source-map-scopes-codec/package/src/builder/safe_builder.js.map +1 -1
  61. package/front_end/third_party/source-map-scopes-codec/package/src/builder/safe_builder.ts +41 -5
  62. package/front_end/third_party/source-map-scopes-codec/package/src/codec.js +0 -2
  63. package/front_end/third_party/source-map-scopes-codec/package/src/codec.js.map +1 -1
  64. package/front_end/third_party/source-map-scopes-codec/package/src/codec.ts +4 -3
  65. package/front_end/third_party/source-map-scopes-codec/package/src/decode/decode.js +99 -36
  66. package/front_end/third_party/source-map-scopes-codec/package/src/decode/decode.js.map +1 -1
  67. package/front_end/third_party/source-map-scopes-codec/package/src/decode/decode.ts +143 -49
  68. package/front_end/third_party/source-map-scopes-codec/package/src/encode/encode.js +3 -1
  69. package/front_end/third_party/source-map-scopes-codec/package/src/encode/encode.js.map +1 -1
  70. package/front_end/third_party/source-map-scopes-codec/package/src/encode/encode.ts +3 -1
  71. package/front_end/third_party/source-map-scopes-codec/package/src/encode/encoder.js +40 -18
  72. package/front_end/third_party/source-map-scopes-codec/package/src/encode/encoder.js.map +1 -1
  73. package/front_end/third_party/source-map-scopes-codec/package/src/encode/encoder.ts +51 -21
  74. package/front_end/third_party/source-map-scopes-codec/package/src/scopes.ts +4 -3
  75. package/front_end/third_party/source-map-scopes-codec/package/src/vlq.js +18 -4
  76. package/front_end/third_party/source-map-scopes-codec/package/src/vlq.js.map +1 -1
  77. package/front_end/third_party/source-map-scopes-codec/package/src/vlq.ts +18 -4
  78. package/front_end/ui/comments/CommentOverlayManager.ts +23 -10
  79. package/front_end/ui/components/text_editor/javascript.ts +128 -52
  80. package/front_end/ui/legacy/SearchableView.ts +125 -74
  81. package/front_end/ui/legacy/components/source_frame/FontView.ts +5 -5
  82. package/front_end/ui/legacy/components/source_frame/ImageView.ts +13 -13
  83. package/front_end/ui/legacy/components/source_frame/ResourceSourceFrame.ts +2 -6
  84. package/front_end/ui/legacy/components/source_frame/SourceFrame.ts +3 -2
  85. package/mcp/mcp.ts +1 -0
  86. package/package.json +1 -1
  87. package/front_end/Images/nodeIcon.avif +0 -0
@@ -14,6 +14,7 @@ const DEFAULT_SCOPE_STATE = {
14
14
  const DEFAULT_RANGE_STATE = {
15
15
  line: 0,
16
16
  column: 0,
17
+ defSourceIdx: 0,
17
18
  defScopeIdx: 0
18
19
  };
19
20
  export class Encoder {
@@ -30,7 +31,8 @@ export class Encoder {
30
31
  };
31
32
  #encodedItems = [];
32
33
  #currentItem = "";
33
- #scopeToCount = new Map();
34
+ #scopeToLocation = new Map();
35
+ #currentSourceIdx = 0;
34
36
  #scopeCounter = 0;
35
37
  constructor(info, names){
36
38
  this.#info = info;
@@ -40,22 +42,29 @@ export class Encoder {
40
42
  }
41
43
  }
42
44
  encode() {
43
- this.#encodedItems = [];
44
- this.#info.scopes.forEach((scope)=>{
45
- this.#scopeState.line = 0;
46
- this.#scopeState.column = 0;
47
- this.#encodeOriginalScope(scope);
45
+ const encodedScopes = this.#info.scopes.map((scopes, sourceIdx)=>{
46
+ if (scopes === null) {
47
+ return null;
48
+ }
49
+ this.#encodedItems = [];
50
+ this.#currentSourceIdx = sourceIdx;
51
+ this.#scopeCounter = 0;
52
+ Object.assign(this.#scopeState, DEFAULT_SCOPE_STATE);
53
+ scopes.forEach((scope)=>this.#encodeOriginalScope(scope));
54
+ return this.#encodedItems.join(",");
48
55
  });
56
+ this.#encodedItems = [];
49
57
  this.#info.ranges.forEach((range)=>{
50
58
  this.#encodeGeneratedRange(range);
51
59
  });
52
- return this.#encodedItems.join(",");
60
+ return {
61
+ scopes: encodedScopes,
62
+ ranges: this.#encodedItems.length > 0 ? [
63
+ this.#encodedItems.join(",")
64
+ ] : []
65
+ };
53
66
  }
54
67
  #encodeOriginalScope(scope) {
55
- if (scope === null) {
56
- this.#encodedItems.push(EncodedTag.EMPTY);
57
- return;
58
- }
59
68
  this.#encodeOriginalScopeStart(scope);
60
69
  this.#encodeOriginalScopeVariables(scope);
61
70
  scope.children.forEach((child)=>this.#encodeOriginalScope(child));
@@ -88,7 +97,10 @@ export class Encoder {
88
97
  if (encodedName !== undefined) this.#encodeSigned(encodedName);
89
98
  if (encodedKind !== undefined) this.#encodeSigned(encodedKind);
90
99
  this.#finishItem();
91
- this.#scopeToCount.set(scope, this.#scopeCounter++);
100
+ this.#scopeToLocation.set(scope, {
101
+ sourceIdx: this.#currentSourceIdx,
102
+ scopeIdx: this.#scopeCounter++
103
+ });
92
104
  }
93
105
  #encodeOriginalScopeVariables(scope) {
94
106
  if (scope.variables.length === 0) return;
@@ -129,22 +141,32 @@ export class Encoder {
129
141
  }
130
142
  this.#rangeState.line = line;
131
143
  this.#rangeState.column = column;
132
- let encodedDefinition;
144
+ let encodedDefSourceIdx;
145
+ let encodedDefScopeIdx;
133
146
  if (range.originalScope) {
134
- const definitionIdx = this.#scopeToCount.get(range.originalScope);
135
- if (definitionIdx === undefined) {
147
+ const location = this.#scopeToLocation.get(range.originalScope);
148
+ if (location === undefined) {
136
149
  throw new Error("Unknown OriginalScope for definition!");
137
150
  }
138
151
  flags |= GeneratedRangeFlags.HAS_DEFINITION;
139
- encodedDefinition = definitionIdx - this.#rangeState.defScopeIdx;
140
- this.#rangeState.defScopeIdx = definitionIdx;
152
+ encodedDefSourceIdx = location.sourceIdx - this.#rangeState.defSourceIdx;
153
+ this.#rangeState.defSourceIdx = location.sourceIdx;
154
+ encodedDefScopeIdx = encodedDefSourceIdx === 0 ? location.scopeIdx - this.#rangeState.defScopeIdx : location.scopeIdx;
155
+ this.#rangeState.defScopeIdx = location.scopeIdx;
141
156
  }
142
157
  if (range.isStackFrame) flags |= GeneratedRangeFlags.IS_STACK_FRAME;
143
158
  if (range.isHidden) flags |= GeneratedRangeFlags.IS_HIDDEN;
144
159
  this.#encodeTag(EncodedTag.GENERATED_RANGE_START).#encodeUnsigned(flags);
145
160
  if (encodedLine > 0) this.#encodeUnsigned(encodedLine);
146
161
  this.#encodeUnsigned(encodedColumn);
147
- if (encodedDefinition !== undefined) this.#encodeSigned(encodedDefinition);
162
+ if (encodedDefSourceIdx !== undefined && encodedDefScopeIdx !== undefined) {
163
+ this.#encodeSigned(encodedDefSourceIdx);
164
+ if (encodedDefSourceIdx === 0) {
165
+ this.#encodeSigned(encodedDefScopeIdx);
166
+ } else {
167
+ this.#encodeUnsigned(encodedDefScopeIdx);
168
+ }
169
+ }
148
170
  this.#finishItem();
149
171
  }
150
172
  #encodeGeneratedRangeSubRangeBindings(range) {
@@ -1 +1 @@
1
- {"version":3,"file":"encoder.js","sources":["./encoder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"encoder.js","sources":["./encoder.ts"],"names":[],"mappings":"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"}
@@ -22,6 +22,7 @@ const DEFAULT_SCOPE_STATE = {
22
22
  const DEFAULT_RANGE_STATE = {
23
23
  line: 0,
24
24
  column: 0,
25
+ defSourceIdx: 0,
25
26
  defScopeIdx: 0,
26
27
  };
27
28
 
@@ -38,7 +39,11 @@ export class Encoder {
38
39
  #encodedItems: string[] = [];
39
40
  #currentItem: string = "";
40
41
 
41
- #scopeToCount = new Map<OriginalScope, number>();
42
+ #scopeToLocation = new Map<
43
+ OriginalScope,
44
+ { sourceIdx: number; scopeIdx: number }
45
+ >();
46
+ #currentSourceIdx = 0;
42
47
  #scopeCounter = 0;
43
48
 
44
49
  constructor(info: ScopeInfo, names: string[]) {
@@ -50,26 +55,33 @@ export class Encoder {
50
55
  }
51
56
  }
52
57
 
53
- encode(): string {
54
- this.#encodedItems = [];
55
- this.#info.scopes.forEach((scope) => {
56
- this.#scopeState.line = 0;
57
- this.#scopeState.column = 0;
58
- this.#encodeOriginalScope(scope);
58
+ encode(): { scopes: (string | null)[]; ranges: string[] } {
59
+ const encodedScopes = this.#info.scopes.map((scopes, sourceIdx) => {
60
+ if (scopes === null) {
61
+ return null;
62
+ }
63
+ this.#encodedItems = [];
64
+ this.#currentSourceIdx = sourceIdx;
65
+ this.#scopeCounter = 0;
66
+ Object.assign(this.#scopeState, DEFAULT_SCOPE_STATE);
67
+ scopes.forEach((scope) => this.#encodeOriginalScope(scope));
68
+ return this.#encodedItems.join(",");
59
69
  });
70
+
71
+ this.#encodedItems = [];
60
72
  this.#info.ranges.forEach((range) => {
61
73
  this.#encodeGeneratedRange(range);
62
74
  });
63
75
 
64
- return this.#encodedItems.join(",");
76
+ return {
77
+ scopes: encodedScopes,
78
+ ranges: this.#encodedItems.length > 0
79
+ ? [this.#encodedItems.join(",")]
80
+ : [],
81
+ };
65
82
  }
66
83
 
67
- #encodeOriginalScope(scope: OriginalScope | null): void {
68
- if (scope === null) {
69
- this.#encodedItems.push(EncodedTag.EMPTY);
70
- return;
71
- }
72
-
84
+ #encodeOriginalScope(scope: OriginalScope): void {
73
85
  this.#encodeOriginalScopeStart(scope);
74
86
  this.#encodeOriginalScopeVariables(scope);
75
87
  scope.children.forEach((child) => this.#encodeOriginalScope(child));
@@ -112,7 +124,10 @@ export class Encoder {
112
124
  if (encodedKind !== undefined) this.#encodeSigned(encodedKind);
113
125
  this.#finishItem();
114
126
 
115
- this.#scopeToCount.set(scope, this.#scopeCounter++);
127
+ this.#scopeToLocation.set(scope, {
128
+ sourceIdx: this.#currentSourceIdx,
129
+ scopeIdx: this.#scopeCounter++,
130
+ });
116
131
  }
117
132
 
118
133
  #encodeOriginalScopeVariables(scope: OriginalScope) {
@@ -169,17 +184,23 @@ export class Encoder {
169
184
  this.#rangeState.line = line;
170
185
  this.#rangeState.column = column;
171
186
 
172
- let encodedDefinition;
187
+ let encodedDefSourceIdx: number | undefined;
188
+ let encodedDefScopeIdx: number | undefined;
173
189
  if (range.originalScope) {
174
- const definitionIdx = this.#scopeToCount.get(range.originalScope);
175
- if (definitionIdx === undefined) {
190
+ const location = this.#scopeToLocation.get(range.originalScope);
191
+ if (location === undefined) {
176
192
  throw new Error("Unknown OriginalScope for definition!");
177
193
  }
178
194
 
179
195
  flags |= GeneratedRangeFlags.HAS_DEFINITION;
180
196
 
181
- encodedDefinition = definitionIdx - this.#rangeState.defScopeIdx;
182
- this.#rangeState.defScopeIdx = definitionIdx;
197
+ encodedDefSourceIdx = location.sourceIdx - this.#rangeState.defSourceIdx;
198
+ this.#rangeState.defSourceIdx = location.sourceIdx;
199
+
200
+ encodedDefScopeIdx = encodedDefSourceIdx === 0
201
+ ? location.scopeIdx - this.#rangeState.defScopeIdx
202
+ : location.scopeIdx;
203
+ this.#rangeState.defScopeIdx = location.scopeIdx;
183
204
  }
184
205
 
185
206
  if (range.isStackFrame) flags |= GeneratedRangeFlags.IS_STACK_FRAME;
@@ -188,7 +209,16 @@ export class Encoder {
188
209
  this.#encodeTag(EncodedTag.GENERATED_RANGE_START).#encodeUnsigned(flags);
189
210
  if (encodedLine > 0) this.#encodeUnsigned(encodedLine);
190
211
  this.#encodeUnsigned(encodedColumn);
191
- if (encodedDefinition !== undefined) this.#encodeSigned(encodedDefinition);
212
+ if (
213
+ encodedDefSourceIdx !== undefined && encodedDefScopeIdx !== undefined
214
+ ) {
215
+ this.#encodeSigned(encodedDefSourceIdx);
216
+ if (encodedDefSourceIdx === 0) {
217
+ this.#encodeSigned(encodedDefScopeIdx);
218
+ } else {
219
+ this.#encodeUnsigned(encodedDefScopeIdx);
220
+ }
221
+ }
192
222
  this.#finishItem();
193
223
  }
194
224
 
@@ -7,9 +7,9 @@
7
7
  */
8
8
  export interface ScopeInfo {
9
9
  /**
10
- * The length of {@linkcode scopes} must match the length of "sources" in the source map JSON. Each entry describes the scope tree of the corresponding source file.
10
+ * The length of {@linkcode scopes} must match the length of "sources" in the source map JSON. Each entry describes the scope trees of the corresponding source file.
11
11
  */
12
- scopes: (OriginalScope | null)[];
12
+ scopes: (OriginalScope[] | null)[];
13
13
 
14
14
  /**
15
15
  * The range tree of the generated bundle. Multiple top-level ranges are allowed but must not overlap source position wise.
@@ -191,5 +191,6 @@ export interface SourceMapJson {
191
191
  sources: (string | null)[];
192
192
  mappings: string;
193
193
  names?: string[];
194
- scopes?: string;
194
+ scopes?: (string | null)[];
195
+ ranges?: string[];
195
196
  }
@@ -39,9 +39,11 @@ export function encodeUnsigned(n) {
39
39
  }
40
40
  export class TokenIterator {
41
41
  #string;
42
+ #strict;
42
43
  #position;
43
- constructor(string){
44
+ constructor(string, strict = false){
44
45
  this.#string = string;
46
+ this.#strict = strict;
45
47
  this.#position = 0;
46
48
  }
47
49
  nextChar() {
@@ -66,13 +68,25 @@ export class TokenIterator {
66
68
  nextUnsignedVLQ() {
67
69
  let result = 0;
68
70
  let shift = 0;
69
- let digit = 0;
71
+ let continuation = 0;
70
72
  do {
71
73
  const charCode = this.nextCharCode();
72
- digit = BASE64_CODES[charCode];
74
+ const digit = BASE64_CODES[charCode];
75
+ if (digit === undefined) {
76
+ // `charCode` is either `NaN` (we ran past the end of a truncated
77
+ // string) or points outside the base64 alphabet. Either way the
78
+ // previous digit's continuation bit promised another digit that isn't
79
+ // there, so the VLQ is truncated/malformed. In lax mode we stop and
80
+ // keep whatever we decoded so far; in strict mode this is an error.
81
+ if (this.#strict) {
82
+ throw new Error("Encountered truncated or malformed VLQ");
83
+ }
84
+ break;
85
+ }
73
86
  result += (digit & VLQ_BASE_MASK) << shift;
74
87
  shift += VLQ_BASE_SHIFT;
75
- }while (digit & VLQ_CONTINUATION_MASK)
88
+ continuation = digit & VLQ_CONTINUATION_MASK;
89
+ }while (continuation)
76
90
  return result;
77
91
  }
78
92
  currentChar() {
@@ -1 +1 @@
1
- {"version":3,"file":"vlq.js","sources":["./vlq.ts"],"names":[],"mappings":"AAAA,4DAA4D;AAC5D,yEAAyE;AACzE,6BAA6B;AAE7B;;;;CAIC,GAED,MAAM,eACJ;AACF,MAAM,eAAe,IAAI,WAAW;AACpC,IAAK,IAAI,QAAQ,GAAG,QAAQ,aAAa,MAAM,EAAE,EAAE,MAAO;EACxD,YAAY,CAAC,aAAa,UAAU,CAAC,OAAO,GAAG;AACjD;AAEA,MAAM,iBAAiB;AACvB,MAAM,gBAAgB,CAAC,KAAK,CAAC,IAAI;AACjC,MAAM,wBAAwB,KAAK;AAEnC,OAAO,SAAS,aAAa,CAAS;EACpC,iDAAiD;EACjD,IAAI,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI;EAC7B,OAAO,eAAe;AACxB;AAEA,OAAO,SAAS,eAAe,CAAS;EACtC,4BAA4B;EAC5B,IAAI,SAAS;EACb,MAAO,KAAM;IACX,6DAA6D;IAC7D,MAAM,QAAQ,IAAI;IAClB,OAAO;IACP,yCAAyC;IACzC,IAAI,MAAM,GAAG;MACX,wCAAwC;MACxC,UAAU,YAAY,CAAC,MAAM;MAC7B;IACF,OAAO;MACL,yEAAyE;MACzE,UAAU,YAAY,CAAC,OAAO,MAAM;IACtC;EACF;EACA,OAAO;AACT;AAEA,OAAO,MAAM;EACF,CAAA,MAAO,CAAS;EACzB,CAAA,QAAS,CAAS;EAElB,YAAY,MAAc,CAAE;IAC1B,IAAI,CAAC,CAAA,MAAO,GAAG;IACf,IAAI,CAAC,CAAA,QAAS,GAAG;EACnB;EAEA,WAAmB;IACjB,OAAO,IAAI,CAAC,CAAA,MAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA,QAAS;EAC3C;EAEA,+EAA+E,GAC/E,eAAuB;IACrB,OAAO,IAAI,CAAC,CAAA,MAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA,QAAS;EAC/C;EAEA,OAAe;IACb,OAAO,IAAI,CAAC,CAAA,MAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA,QAAS;EAC3C;EAEA,UAAmB;IACjB,OAAO,IAAI,CAAC,CAAA,QAAS,GAAG,IAAI,CAAC,CAAA,MAAO,CAAC,MAAM;EAC7C;EAEA,gBAAwB;IACtB,IAAI,SAAS,IAAI,CAAC,eAAe;IAEjC,gBAAgB;IAChB,MAAM,WAAW,SAAS;IAC1B,YAAY;IACZ,OAAO,WAAW,CAAC,SAAS;EAC9B;EAEA,kBAA0B;IACxB,IAAI,SAAS;IACb,IAAI,QAAQ;IACZ,IAAI,QAAQ;IACZ,GAAG;MACD,MAAM,WAAW,IAAI,CAAC,YAAY;MAClC,QAAQ,YAAY,CAAC,SAAS;MAC9B,UAAU,CAAC,QAAQ,aAAa,KAAK;MACrC,SAAS;IACX,QAAS,QAAQ,sBAAuB;IACxC,OAAO;EACT;EAEA,cAAsB;IACpB,OAAO,IAAI,CAAC,CAAA,MAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA,QAAS,GAAG;EAC9C;AACF"}
1
+ {"version":3,"file":"vlq.js","sources":["./vlq.ts"],"names":[],"mappings":"AAAA,4DAA4D;AAC5D,yEAAyE;AACzE,6BAA6B;AAE7B;;;;CAIC,GAED,MAAM,eACJ;AACF,MAAM,eAAe,IAAI,WAAW;AACpC,IAAK,IAAI,QAAQ,GAAG,QAAQ,aAAa,MAAM,EAAE,EAAE,MAAO;EACxD,YAAY,CAAC,aAAa,UAAU,CAAC,OAAO,GAAG;AACjD;AAEA,MAAM,iBAAiB;AACvB,MAAM,gBAAgB,CAAC,KAAK,CAAC,IAAI;AACjC,MAAM,wBAAwB,KAAK;AAEnC,OAAO,SAAS,aAAa,CAAS;EACpC,iDAAiD;EACjD,IAAI,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI;EAC7B,OAAO,eAAe;AACxB;AAEA,OAAO,SAAS,eAAe,CAAS;EACtC,4BAA4B;EAC5B,IAAI,SAAS;EACb,MAAO,KAAM;IACX,6DAA6D;IAC7D,MAAM,QAAQ,IAAI;IAClB,OAAO;IACP,yCAAyC;IACzC,IAAI,MAAM,GAAG;MACX,wCAAwC;MACxC,UAAU,YAAY,CAAC,MAAM;MAC7B;IACF,OAAO;MACL,yEAAyE;MACzE,UAAU,YAAY,CAAC,OAAO,MAAM;IACtC;EACF;EACA,OAAO;AACT;AAEA,OAAO,MAAM;EACF,CAAA,MAAO,CAAS;EAChB,CAAA,MAAO,CAAU;EAC1B,CAAA,QAAS,CAAS;EAElB,YAAY,MAAc,EAAE,SAAS,KAAK,CAAE;IAC1C,IAAI,CAAC,CAAA,MAAO,GAAG;IACf,IAAI,CAAC,CAAA,MAAO,GAAG;IACf,IAAI,CAAC,CAAA,QAAS,GAAG;EACnB;EAEA,WAAmB;IACjB,OAAO,IAAI,CAAC,CAAA,MAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA,QAAS;EAC3C;EAEA,+EAA+E,GAC/E,eAAuB;IACrB,OAAO,IAAI,CAAC,CAAA,MAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA,QAAS;EAC/C;EAEA,OAAe;IACb,OAAO,IAAI,CAAC,CAAA,MAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA,QAAS;EAC3C;EAEA,UAAmB;IACjB,OAAO,IAAI,CAAC,CAAA,QAAS,GAAG,IAAI,CAAC,CAAA,MAAO,CAAC,MAAM;EAC7C;EAEA,gBAAwB;IACtB,IAAI,SAAS,IAAI,CAAC,eAAe;IAEjC,gBAAgB;IAChB,MAAM,WAAW,SAAS;IAC1B,YAAY;IACZ,OAAO,WAAW,CAAC,SAAS;EAC9B;EAEA,kBAA0B;IACxB,IAAI,SAAS;IACb,IAAI,QAAQ;IACZ,IAAI,eAAe;IACnB,GAAG;MACD,MAAM,WAAW,IAAI,CAAC,YAAY;MAClC,MAAM,QAAQ,YAAY,CAAC,SAAS;MACpC,IAAI,UAAU,WAAW;QACvB,iEAAiE;QACjE,gEAAgE;QAChE,sEAAsE;QACtE,oEAAoE;QACpE,oEAAoE;QACpE,IAAI,IAAI,CAAC,CAAA,MAAO,EAAE;UAChB,MAAM,IAAI,MAAM;QAClB;QACA;MACF;MACA,UAAU,CAAC,QAAQ,aAAa,KAAK;MACrC,SAAS;MACT,eAAe,QAAQ;IACzB,QAAS,aAAc;IACvB,OAAO;EACT;EAEA,cAAsB;IACpB,OAAO,IAAI,CAAC,CAAA,MAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA,QAAS,GAAG;EAC9C;AACF"}
@@ -47,10 +47,12 @@ export function encodeUnsigned(n: number): string {
47
47
 
48
48
  export class TokenIterator {
49
49
  readonly #string: string;
50
+ readonly #strict: boolean;
50
51
  #position: number;
51
52
 
52
- constructor(string: string) {
53
+ constructor(string: string, strict = false) {
53
54
  this.#string = string;
55
+ this.#strict = strict;
54
56
  this.#position = 0;
55
57
  }
56
58
 
@@ -83,13 +85,25 @@ export class TokenIterator {
83
85
  nextUnsignedVLQ(): number {
84
86
  let result = 0;
85
87
  let shift = 0;
86
- let digit = 0;
88
+ let continuation = 0;
87
89
  do {
88
90
  const charCode = this.nextCharCode();
89
- digit = BASE64_CODES[charCode];
91
+ const digit = BASE64_CODES[charCode];
92
+ if (digit === undefined) {
93
+ // `charCode` is either `NaN` (we ran past the end of a truncated
94
+ // string) or points outside the base64 alphabet. Either way the
95
+ // previous digit's continuation bit promised another digit that isn't
96
+ // there, so the VLQ is truncated/malformed. In lax mode we stop and
97
+ // keep whatever we decoded so far; in strict mode this is an error.
98
+ if (this.#strict) {
99
+ throw new Error("Encountered truncated or malformed VLQ");
100
+ }
101
+ break;
102
+ }
90
103
  result += (digit & VLQ_BASE_MASK) << shift;
91
104
  shift += VLQ_BASE_SHIFT;
92
- } while (digit & VLQ_CONTINUATION_MASK);
105
+ continuation = digit & VLQ_CONTINUATION_MASK;
106
+ } while (continuation);
93
107
  return result;
94
108
  }
95
109
 
@@ -299,20 +299,22 @@ export class CommentOverlayManager extends Common.ObjectWrapper.ObjectWrapper<Ev
299
299
  return thread;
300
300
  }
301
301
 
302
- #trackElementAncestors(element: Element): void {
302
+ #trackElementAncestors(element: Element, activeScrollRoots?: Set<ShadowRoot>): void {
303
303
  if (!this.#devToolsResizeObserver || !this.#scrollListener) {
304
304
  return;
305
305
  }
306
306
  let current: Element|null = element;
307
307
  while (current) {
308
- if (this.#resizeObservedElements.has(current)) {
309
- break;
310
- }
311
- this.#devToolsResizeObserver.observe(current);
312
- this.#resizeObservedElements.add(current);
313
- if (current.parentNode instanceof ShadowRoot && !this.#observedScrollRoots.has(current.parentNode)) {
314
- current.parentNode.addEventListener('scroll', this.#scrollListener, {capture: true, passive: true});
315
- this.#observedScrollRoots.add(current.parentNode);
308
+ if (!this.#resizeObservedElements.has(current)) {
309
+ this.#devToolsResizeObserver.observe(current);
310
+ this.#resizeObservedElements.add(current);
311
+ }
312
+ if (current.parentNode instanceof ShadowRoot) {
313
+ activeScrollRoots?.add(current.parentNode);
314
+ if (!this.#observedScrollRoots.has(current.parentNode)) {
315
+ current.parentNode.addEventListener('scroll', this.#scrollListener, {capture: true, passive: true});
316
+ this.#observedScrollRoots.add(current.parentNode);
317
+ }
316
318
  }
317
319
  current = current.parentElementOrShadowHost();
318
320
  }
@@ -425,6 +427,7 @@ export class CommentOverlayManager extends Common.ObjectWrapper.ObjectWrapper<Ev
425
427
  const newHighlights: HighlightRectData[] = [];
426
428
  const elementPinCounts = new Map<Element, number>();
427
429
  const rectCache = new Map<Element, DOMRect>();
430
+ const activeScrollRoots = new Set<ShadowRoot>();
428
431
 
429
432
  for (const thread of this.#commentManager.getCommentThreads()) {
430
433
  // Non-DOM anchors have their positions managed by their respective panels,
@@ -449,7 +452,7 @@ export class CommentOverlayManager extends Common.ObjectWrapper.ObjectWrapper<Ev
449
452
  observer.observe(el);
450
453
  this.#observedThreads.add(el);
451
454
  }
452
- this.#trackElementAncestors(el);
455
+ this.#trackElementAncestors(el, activeScrollRoots);
453
456
 
454
457
  const visibleRect = computeVisibleRect(el, undefined, rectCache);
455
458
  if (!visibleRect) {
@@ -480,6 +483,15 @@ export class CommentOverlayManager extends Common.ObjectWrapper.ObjectWrapper<Ev
480
483
  });
481
484
  }
482
485
 
486
+ if (this.#scrollListener) {
487
+ for (const root of this.#observedScrollRoots) {
488
+ if (!activeScrollRoots.has(root)) {
489
+ root.removeEventListener('scroll', this.#scrollListener, {capture: true});
490
+ this.#observedScrollRoots.delete(root);
491
+ }
492
+ }
493
+ }
494
+
483
495
  this.#pinPositions = newPins;
484
496
  this.#highlightRects = newHighlights;
485
497
  this.dispatchEventToListeners(Events.POSITIONS_UPDATED, {
@@ -791,6 +803,7 @@ export class CommentOverlayManager extends Common.ObjectWrapper.ObjectWrapper<Ev
791
803
  * Debounces rematching of comments across dynamic DOM updates.
792
804
  */
793
805
  #scheduleRematch(root: Document|Element = document): void {
806
+ clearClippingAncestorsCache();
794
807
  if (this.#mutationRafId === undefined) {
795
808
  this.#mutationRafId = requestAnimationFrame(() => {
796
809
  this.#mutationRafId = undefined;