chrome-devtools-frontend 1.0.1030457 → 1.0.1030946

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 (55) hide show
  1. package/front_end/Tests.js +0 -28
  2. package/front_end/core/host/UserMetrics.ts +2 -1
  3. package/front_end/core/i18n/locales/en-US.json +11 -8
  4. package/front_end/core/i18n/locales/en-XL.json +11 -8
  5. package/front_end/core/root/Runtime.ts +1 -0
  6. package/front_end/core/sdk/CSSStyleSheetHeader.ts +0 -4
  7. package/front_end/core/sdk/CompilerSourceMappingContentProvider.ts +0 -4
  8. package/front_end/core/sdk/NetworkRequest.ts +0 -4
  9. package/front_end/core/sdk/Resource.ts +0 -5
  10. package/front_end/core/sdk/Script.ts +71 -76
  11. package/front_end/entrypoints/main/MainImpl.ts +4 -0
  12. package/front_end/generated/InspectorBackendCommands.js +10 -8
  13. package/front_end/generated/protocol-mapping.d.ts +16 -2
  14. package/front_end/generated/protocol-proxy-api.d.ts +11 -1
  15. package/front_end/generated/protocol.ts +75 -1
  16. package/front_end/models/bindings/CompilerScriptMapping.ts +6 -3
  17. package/front_end/models/bindings/ContentProviderBasedProject.ts +2 -3
  18. package/front_end/models/bindings/DebuggerWorkspaceBinding.ts +1 -4
  19. package/front_end/models/bindings/IgnoreListManager.ts +10 -8
  20. package/front_end/models/bindings/ResourceMapping.ts +0 -4
  21. package/front_end/models/bindings/StylesSourceMapping.ts +0 -5
  22. package/front_end/models/extensions/ExtensionServer.ts +2 -3
  23. package/front_end/models/issues_manager/AttributionReportingIssue.ts +8 -0
  24. package/front_end/models/issues_manager/descriptions/arTooManyConcurrentRequests.md +5 -0
  25. package/front_end/models/javascript_metadata/NativeFunctions.js +6 -2
  26. package/front_end/models/persistence/NetworkPersistenceManager.ts +4 -6
  27. package/front_end/models/persistence/PersistenceActions.ts +5 -4
  28. package/front_end/models/text_utils/CodeMirrorUtils.ts +17 -4
  29. package/front_end/models/text_utils/ContentProvider.ts +0 -1
  30. package/front_end/models/text_utils/StaticContentProvider.ts +0 -4
  31. package/front_end/models/workspace/UISourceCode.ts +10 -5
  32. package/front_end/panels/elements/CSSRuleValidator.ts +107 -123
  33. package/front_end/panels/elements/components/CSSHintDetailsView.ts +23 -20
  34. package/front_end/panels/elements/components/cssHintDetailsView.css +2 -0
  35. package/front_end/panels/issues/AttributionReportingIssueDetailsView.ts +12 -0
  36. package/front_end/panels/network/components/RequestHeadersView.css +1 -0
  37. package/front_end/panels/network/components/RequestHeadersView.ts +7 -0
  38. package/front_end/panels/sources/NavigatorView.ts +22 -0
  39. package/front_end/third_party/codemirror.next/bundle.ts +1 -1
  40. package/front_end/third_party/codemirror.next/chunk/codemirror.js +1 -1
  41. package/front_end/third_party/codemirror.next/chunk/cpp.js +1 -2
  42. package/front_end/third_party/codemirror.next/chunk/java.js +1 -2
  43. package/front_end/third_party/codemirror.next/chunk/json.js +1 -2
  44. package/front_end/third_party/codemirror.next/chunk/markdown.js +1 -2
  45. package/front_end/third_party/codemirror.next/chunk/php.js +1 -2
  46. package/front_end/third_party/codemirror.next/chunk/python.js +1 -2
  47. package/front_end/third_party/codemirror.next/chunk/wast.js +1 -2
  48. package/front_end/third_party/codemirror.next/chunk/xml.js +1 -2
  49. package/front_end/third_party/codemirror.next/codemirror.next.d.ts +1247 -116
  50. package/front_end/third_party/codemirror.next/codemirror.next.js +1 -2
  51. package/front_end/ui/components/docs/building-ui-documentation/StylingComponents.md +64 -0
  52. package/front_end/ui/legacy/components/source_frame/ImageView.ts +10 -11
  53. package/front_end/ui/legacy/components/source_frame/PreviewFactory.ts +1 -1
  54. package/front_end/ui/legacy/components/source_frame/SourceFrame.ts +49 -0
  55. package/package.json +1 -1
@@ -275,34 +275,6 @@
275
275
  this.takeControl();
276
276
  };
277
277
 
278
- /**
279
- * Tests that scripts tab is populated with inspected scripts even if it
280
- * hadn't been shown by the moment inspected paged refreshed.
281
- * @see http://crbug.com/26312
282
- */
283
- TestSuite.prototype.testScriptsTabIsPopulatedOnInspectedPageRefresh = function() {
284
- const test = this;
285
- const debuggerModel = self.SDK.targetManager.mainTarget().model(SDK.DebuggerModel);
286
- debuggerModel.addEventListener(SDK.DebuggerModel.Events.GlobalObjectCleared, waitUntilScriptIsParsed);
287
-
288
- this.showPanel('elements').then(function() {
289
- // Reload inspected page. It will reset the debugger agent.
290
- test.evaluateInConsole_('window.location.reload(true);', function(resultText) {});
291
- });
292
-
293
- function waitUntilScriptIsParsed() {
294
- debuggerModel.removeEventListener(SDK.DebuggerModel.Events.GlobalObjectCleared, waitUntilScriptIsParsed);
295
- test.showPanel('sources').then(function() {
296
- test._waitUntilScriptsAreParsed(['debugger_test_page.html'], function() {
297
- test.releaseControl();
298
- });
299
- });
300
- }
301
-
302
- // Wait until all scripts are added to the debugger.
303
- this.takeControl();
304
- };
305
-
306
278
  /**
307
279
  * Tests that scripts list contains content scripts.
308
280
  */
@@ -637,8 +637,9 @@ export enum DevtoolsExperiments {
637
637
  'cssAuthoringHints' = 62,
638
638
  'authoredDeployedGrouping' = 63,
639
639
  'importantDOMProperties' = 64,
640
+ 'justMyCode' = 65,
640
641
  // Increment this when new experiments are added.
641
- 'MaxValue' = 65,
642
+ 'MaxValue' = 66,
642
643
  }
643
644
  /* eslint-enable @typescript-eslint/naming-convention */
644
645
 
@@ -4836,25 +4836,25 @@
4836
4836
  "message": "Show all"
4837
4837
  },
4838
4838
  "panels/elements/CSSRuleValidator.ts | deprecatedPropertyHintPrefix": {
4839
- "message": "Deprecated Property"
4839
+ "message": "Deprecated property"
4840
4840
  },
4841
- "panels/elements/CSSRuleValidator.ts | ruleValidationHintPrefix": {
4842
- "message": "Inactive rule"
4841
+ "panels/elements/CSSRuleValidator.ts | inactivePropertyHintPrefix": {
4842
+ "message": "Inactive property"
4843
4843
  },
4844
4844
  "panels/elements/CSSRuleValidator.ts | ruleViolatedByParentElementRuleFix": {
4845
- "message": "Please change parent elements {EXISTING_PARENT_ELEMENT_RULE} to {TARGET_PARENT_ELEMENT_RULE} to fix this issue."
4845
+ "message": "Please change parent element's {EXISTING_PARENT_ELEMENT_RULE} to {TARGET_PARENT_ELEMENT_RULE} to fix this issue."
4846
4846
  },
4847
4847
  "panels/elements/CSSRuleValidator.ts | ruleViolatedByParentElementRuleReason": {
4848
- "message": "Parent element has {REASON_RULE_CODE} rule, therefore this elements {AFFECTED_RULE_CODE} has no effect"
4848
+ "message": "Parent element has {REASON_PROPERTY_DECLARATION_CODE} rule, therefore this elements {AFFECTED_PROPERTY_DECLARATION_CODE} has no effect."
4849
4849
  },
4850
4850
  "panels/elements/CSSRuleValidator.ts | ruleViolatedBySameElementRuleChangeSuggestion": {
4851
- "message": "For this property to work, please change the {EXISTING_RULE} rule to {TARGET_RULE}"
4851
+ "message": "For this property to work, please change the {EXISTING_PROPERTY_DECLARATION} rule to {TARGET_PROPERTY_DECLARATION}."
4852
4852
  },
4853
4853
  "panels/elements/CSSRuleValidator.ts | ruleViolatedBySameElementRuleFix": {
4854
- "message": "For this property to work, please remove or change the value of {REASON_RULE_CODE}"
4854
+ "message": "For this property to work, please remove or change the value of {REASON_PROPERTY_DECLARATION_CODE}."
4855
4855
  },
4856
4856
  "panels/elements/CSSRuleValidator.ts | ruleViolatedBySameElementRuleReason": {
4857
- "message": "This element has {REASON_RULE_CODE} rule, therefore {AFFECTED_RULE_CODE} has no effect."
4857
+ "message": "This element has the {REASON_PROPERTY_DECLARATION_CODE} property and, therefore, {AFFECTED_PROPERTY_DECLARATION_CODE} has no effect."
4858
4858
  },
4859
4859
  "panels/elements/DOMLinkifier.ts | node": {
4860
4860
  "message": "<node>"
@@ -5717,6 +5717,9 @@
5717
5717
  "panels/issues/AttributionReportingIssueDetailsView.ts | invalidHeaderValue": {
5718
5718
  "message": "Invalid Header Value"
5719
5719
  },
5720
+ "panels/issues/AttributionReportingIssueDetailsView.ts | maximumConcurrentRegistrations": {
5721
+ "message": "Maximum Concurrent Registrations"
5722
+ },
5720
5723
  "panels/issues/AttributionReportingIssueDetailsView.ts | nViolations": {
5721
5724
  "message": "{n, plural, =1 {# violation} other {# violations}}"
5722
5725
  },
@@ -4836,25 +4836,25 @@
4836
4836
  "message": "Ŝh́ôẃ âĺl̂"
4837
4837
  },
4838
4838
  "panels/elements/CSSRuleValidator.ts | deprecatedPropertyHintPrefix": {
4839
- "message": "D̂ép̂ŕêćât́êd́ P̂ŕôṕêŕt̂ý"
4839
+ "message": "D̂ép̂ŕêćât́êd́ p̂ŕôṕêŕt̂ý"
4840
4840
  },
4841
- "panels/elements/CSSRuleValidator.ts | ruleValidationHintPrefix": {
4842
- "message": "Îńâćt̂ív̂é r̂úl̂é"
4841
+ "panels/elements/CSSRuleValidator.ts | inactivePropertyHintPrefix": {
4842
+ "message": "Îńâćt̂ív̂é ŕôṕêŕt̂ý"
4843
4843
  },
4844
4844
  "panels/elements/CSSRuleValidator.ts | ruleViolatedByParentElementRuleFix": {
4845
- "message": "P̂ĺêáŝé ĉh́âńĝé p̂ár̂én̂t́ êĺêḿêńt̂ś {EXISTING_PARENT_ELEMENT_RULE} t̂ó {TARGET_PARENT_ELEMENT_RULE} t̂ó f̂íx̂ t́ĥíŝ íŝśûé."
4845
+ "message": "P̂ĺêáŝé ĉh́âńĝé p̂ár̂én̂t́ êĺêḿêńt̂'ś {EXISTING_PARENT_ELEMENT_RULE} t̂ó {TARGET_PARENT_ELEMENT_RULE} t̂ó f̂íx̂ t́ĥíŝ íŝśûé."
4846
4846
  },
4847
4847
  "panels/elements/CSSRuleValidator.ts | ruleViolatedByParentElementRuleReason": {
4848
- "message": "P̂ár̂én̂t́ êĺêḿêńt̂ h́âś {REASON_RULE_CODE} r̂úl̂é, t̂h́êŕêf́ôŕê t́ĥíŝ él̂ém̂én̂t́ŝ {AFFECTED_RULE_CODE} h́âś n̂ó êf́f̂éĉt́"
4848
+ "message": "P̂ár̂én̂t́ êĺêḿêńt̂ h́âś {REASON_PROPERTY_DECLARATION_CODE} r̂úl̂é, t̂h́êŕêf́ôŕê t́ĥíŝ él̂ém̂én̂t́ŝ {AFFECTED_PROPERTY_DECLARATION_CODE} h́âś n̂ó êf́f̂éĉt́."
4849
4849
  },
4850
4850
  "panels/elements/CSSRuleValidator.ts | ruleViolatedBySameElementRuleChangeSuggestion": {
4851
- "message": "F̂ór̂ t́ĥíŝ ṕr̂óp̂ér̂t́ŷ t́ô ẃôŕk̂, ṕl̂éâśê ćĥán̂ǵê t́ĥé {EXISTING_RULE} r̂úl̂é t̂ó {TARGET_RULE}"
4851
+ "message": "F̂ór̂ t́ĥíŝ ṕr̂óp̂ér̂t́ŷ t́ô ẃôŕk̂, ṕl̂éâśê ćĥán̂ǵê t́ĥé {EXISTING_PROPERTY_DECLARATION} r̂úl̂é t̂ó {TARGET_PROPERTY_DECLARATION}."
4852
4852
  },
4853
4853
  "panels/elements/CSSRuleValidator.ts | ruleViolatedBySameElementRuleFix": {
4854
- "message": "F̂ór̂ t́ĥíŝ ṕr̂óp̂ér̂t́ŷ t́ô ẃôŕk̂, ṕl̂éâśê ŕêḿôv́ê ór̂ ćĥán̂ǵê t́ĥé v̂ál̂úê óf̂ {REASON_RULE_CODE}"
4854
+ "message": "F̂ór̂ t́ĥíŝ ṕr̂óp̂ér̂t́ŷ t́ô ẃôŕk̂, ṕl̂éâśê ŕêḿôv́ê ór̂ ćĥán̂ǵê t́ĥé v̂ál̂úê óf̂ {REASON_PROPERTY_DECLARATION_CODE}."
4855
4855
  },
4856
4856
  "panels/elements/CSSRuleValidator.ts | ruleViolatedBySameElementRuleReason": {
4857
- "message": "T̂h́îś êĺêḿêńt̂ h́âś {REASON_RULE_CODE} r̂úl̂é, t̂h́êŕêf́ôŕê {AFFECTED_RULE_CODE} h́âś n̂ó êf́f̂éĉt́."
4857
+ "message": "T̂h́îś êĺêḿêńt̂ h́âś t̂h́ê {REASON_PROPERTY_DECLARATION_CODE} óp̂ér̂t́ŷ án̂d́, t̂h́êŕêf́ôŕê, {AFFECTED_PROPERTY_DECLARATION_CODE} h́âś n̂ó êf́f̂éĉt́."
4858
4858
  },
4859
4859
  "panels/elements/DOMLinkifier.ts | node": {
4860
4860
  "message": "<n̂ód̂é>"
@@ -5717,6 +5717,9 @@
5717
5717
  "panels/issues/AttributionReportingIssueDetailsView.ts | invalidHeaderValue": {
5718
5718
  "message": "Îńv̂ál̂íd̂ H́êád̂ér̂ V́âĺûé"
5719
5719
  },
5720
+ "panels/issues/AttributionReportingIssueDetailsView.ts | maximumConcurrentRegistrations": {
5721
+ "message": "M̂áx̂ím̂úm̂ Ćôńĉúr̂ŕêńt̂ Ŕêǵîśt̂ŕât́îón̂ś"
5722
+ },
5720
5723
  "panels/issues/AttributionReportingIssueDetailsView.ts | nViolations": {
5721
5724
  "message": "{n, plural, =1 {# v̂íôĺât́îón̂} other {# v́îól̂át̂íôńŝ}}"
5722
5725
  },
@@ -294,6 +294,7 @@ export enum ExperimentName {
294
294
  CSS_AUTHORING_HINTS = 'cssAuthoringHints',
295
295
  AUTHORED_DEPLOYED_GROUPING = 'authoredDeployedGrouping',
296
296
  IMPORTANT_DOM_PROPERTIES = 'importantDOMProperties',
297
+ JUST_MY_CODE = 'justMyCode',
297
298
  }
298
299
 
299
300
  // TODO(crbug.com/1167717): Make this a const enum again
@@ -166,10 +166,6 @@ export class CSSStyleSheetHeader implements TextUtils.ContentProvider.ContentPro
166
166
  return Common.ResourceType.resourceTypes.Stylesheet;
167
167
  }
168
168
 
169
- contentEncoded(): Promise<boolean> {
170
- return Promise.resolve(false);
171
- }
172
-
173
169
  async requestContent(): Promise<TextUtils.ContentProvider.DeferredContent> {
174
170
  try {
175
171
  const cssText = await this.#cssModelInternal.getStyleSheetText(this.id);
@@ -68,10 +68,6 @@ export class CompilerSourceMappingContentProvider implements TextUtils.ContentPr
68
68
  return this.#contentTypeInternal;
69
69
  }
70
70
 
71
- async contentEncoded(): Promise<boolean> {
72
- return false;
73
- }
74
-
75
71
  async requestContent(): Promise<TextUtils.ContentProvider.DeferredContent> {
76
72
  try {
77
73
  const {content} = await PageResourceLoader.instance().loadResource(this.#sourceURL, this.#initiator);
@@ -1196,10 +1196,6 @@ export class NetworkRequest extends Common.ObjectWrapper.ObjectWrapper<EventType
1196
1196
  return this.#resourceTypeInternal;
1197
1197
  }
1198
1198
 
1199
- async contentEncoded(): Promise<boolean> {
1200
- return (await this.contentData()).encoded;
1201
- }
1202
-
1203
1199
  async requestContent(): Promise<TextUtils.ContentProvider.DeferredContent> {
1204
1200
  const {content, error, encoded} = await this.contentData();
1205
1201
  return {
@@ -162,11 +162,6 @@ export class Resource implements TextUtils.ContentProvider.ContentProvider {
162
162
  return this.resourceType();
163
163
  }
164
164
 
165
- async contentEncoded(): Promise<boolean> {
166
- await this.requestContent();
167
- return this.#contentEncodedInternal;
168
- }
169
-
170
165
  async requestContent(): Promise<TextUtils.ContentProvider.DeferredContent> {
171
166
  if (typeof this.#contentInternal !== 'undefined') {
172
167
  return {
@@ -69,7 +69,6 @@ export class Script implements TextUtils.ContentProvider.ContentProvider, FrameA
69
69
  debugSymbols: Protocol.Debugger.DebugSymbols|null;
70
70
  hasSourceURL: boolean;
71
71
  contentLength: number;
72
- #originalContentProviderInternal: TextUtils.ContentProvider.ContentProvider|null;
73
72
  originStackTrace: Protocol.Runtime.StackTrace|null;
74
73
  readonly #codeOffsetInternal: number|null;
75
74
  readonly #language: string|null;
@@ -100,7 +99,6 @@ export class Script implements TextUtils.ContentProvider.ContentProvider, FrameA
100
99
  this.debugSymbols = debugSymbols;
101
100
  this.hasSourceURL = hasSourceURL;
102
101
  this.contentLength = length;
103
- this.#originalContentProviderInternal = null;
104
102
  this.originStackTrace = originStackTrace;
105
103
  this.#codeOffsetInternal = codeOffset;
106
104
  this.#language = scriptLanguage;
@@ -171,13 +169,79 @@ export class Script implements TextUtils.ContentProvider.ContentProvider, FrameA
171
169
  return Common.ResourceType.resourceTypes.Script;
172
170
  }
173
171
 
174
- async contentEncoded(): Promise<boolean> {
175
- return false;
172
+ private async loadTextContent(): Promise<TextUtils.ContentProvider.DeferredContent> {
173
+ const result = await this.debuggerModel.target().debuggerAgent().invoke_getScriptSource({scriptId: this.scriptId});
174
+ if (result.getError()) {
175
+ throw new Error(result.getError());
176
+ }
177
+ const {scriptSource, bytecode} = result;
178
+ if (bytecode) {
179
+ return {content: bytecode, isEncoded: true};
180
+ }
181
+ let content: string = scriptSource || '';
182
+ if (this.hasSourceURL && this.sourceURL.startsWith('snippet://')) {
183
+ // TODO(crbug.com/1330846): Find a better way to establish the snippet automapping binding then adding
184
+ // a sourceURL comment before evaluation and removing it here.
185
+ content = Script.trimSourceURLComment(content);
186
+ }
187
+ return {content, isEncoded: false};
188
+ }
189
+
190
+ private async loadWasmContent(): Promise<TextUtils.ContentProvider.DeferredContent> {
191
+ if (!this.isWasm()) {
192
+ throw new Error('Not a wasm script');
193
+ }
194
+ const result =
195
+ await this.debuggerModel.target().debuggerAgent().invoke_disassembleWasmModule({scriptId: this.scriptId});
196
+
197
+ if (result.getError()) {
198
+ // Fall through to text content loading if v8-based disassembly fails. This is to ensure backwards compatibility with
199
+ // older v8 versions;
200
+ return this.loadTextContent();
201
+ }
202
+
203
+ const {streamId, functionBodyOffsets, chunk: {lines, bytecodeOffsets}} = result;
204
+ const lineChunks = [];
205
+ const bytecodeOffsetChunks = [];
206
+ if (streamId) {
207
+ while (true) {
208
+ const result = await this.debuggerModel.target().debuggerAgent().invoke_nextWasmDisassemblyChunk({streamId});
209
+
210
+ if (result.getError()) {
211
+ throw new Error(result.getError());
212
+ }
213
+
214
+ const {chunk: {lines: linesChunk, bytecodeOffsets: bytecodeOffsetsChunk}} = result;
215
+ if (linesChunk.length === 0) {
216
+ break;
217
+ }
218
+ lineChunks.push(linesChunk);
219
+ bytecodeOffsetChunks.push(bytecodeOffsetsChunk);
220
+ }
221
+ }
222
+ const functionBodyRanges: Array<{start: number, end: number}> = [];
223
+ // functionBodyOffsets contains a sequence of pairs of start and end offsets
224
+ for (let i = 0; i < functionBodyOffsets.length; i += 2) {
225
+ functionBodyRanges.push({start: functionBodyOffsets[i], end: functionBodyOffsets[i + 1]});
226
+ }
227
+ const wasmDisassemblyInfo = new Common.WasmDisassembly.WasmDisassembly(
228
+ lines.concat(...lineChunks), bytecodeOffsets.concat(...bytecodeOffsetChunks), functionBodyRanges);
229
+ return {content: '', isEncoded: false, wasmDisassemblyInfo};
176
230
  }
177
231
 
178
232
  requestContent(): Promise<TextUtils.ContentProvider.DeferredContent> {
179
233
  if (!this.#contentPromise) {
180
- this.#contentPromise = this.originalContentProvider().requestContent();
234
+ this.#contentPromise = (async(): Promise<TextUtils.ContentProvider.DeferredContent> => {
235
+ if (!this.scriptId) {
236
+ return {content: null, error: i18nString(UIStrings.scriptRemovedOrDeleted), isEncoded: false};
237
+ }
238
+ try {
239
+ return this.isWasm() ? await this.loadWasmContent() : await this.loadTextContent();
240
+ } catch (err) {
241
+ // TODO(bmeurer): Propagate errors as exceptions / rejections.
242
+ return {content: null, error: i18nString(UIStrings.unableToFetchScriptSource), isEncoded: false};
243
+ }
244
+ })();
181
245
  }
182
246
  return this.#contentPromise;
183
247
  }
@@ -189,77 +253,8 @@ export class Script implements TextUtils.ContentProvider.ContentProvider, FrameA
189
253
  }
190
254
 
191
255
  originalContentProvider(): TextUtils.ContentProvider.ContentProvider {
192
- if (!this.#originalContentProviderInternal) {
193
- let lazyContentPromise: Promise<TextUtils.ContentProvider.DeferredContent>|null;
194
- this.#originalContentProviderInternal =
195
- new TextUtils.StaticContentProvider.StaticContentProvider(this.contentURL(), this.contentType(), () => {
196
- if (!lazyContentPromise) {
197
- lazyContentPromise = (async(): Promise<TextUtils.ContentProvider.DeferredContent> => {
198
- if (!this.scriptId) {
199
- return {content: null, error: i18nString(UIStrings.scriptRemovedOrDeleted), isEncoded: false};
200
- }
201
- if (this.isWasm()) {
202
- const result = await this.debuggerModel.target().debuggerAgent().invoke_disassembleWasmModule(
203
- {scriptId: this.scriptId});
204
-
205
- if (result.getError()) {
206
- throw new Error(result.getError());
207
- }
208
-
209
- const {streamId, functionBodyOffsets, chunk: {lines, bytecodeOffsets}} = result;
210
- const lineChunks = [];
211
- const bytecodeOffsetChunks = [];
212
- if (streamId) {
213
- while (true) {
214
- const result =
215
- await this.debuggerModel.target().debuggerAgent().invoke_nextWasmDisassemblyChunk({streamId});
216
-
217
- if (result.getError()) {
218
- throw new Error(result.getError());
219
- }
220
-
221
- const {chunk: {lines: linesChunk, bytecodeOffsets: bytecodeOffsetsChunk}} = result;
222
- if (linesChunk.length === 0) {
223
- break;
224
- }
225
- lineChunks.push(linesChunk);
226
- bytecodeOffsetChunks.push(bytecodeOffsetsChunk);
227
- }
228
- }
229
- const functionBodyRanges: Array<{start: number, end: number}> = [];
230
- // functionBodyOffsets contains a sequence of pairs of start and end offsets
231
- for (let i = 0; i < functionBodyOffsets.length; i += 2) {
232
- functionBodyRanges.push({start: functionBodyOffsets[i], end: functionBodyOffsets[i + 1]});
233
- }
234
- const wasmDisassemblyInfo = new Common.WasmDisassembly.WasmDisassembly(
235
- lines.concat(...lineChunks), bytecodeOffsets.concat(...bytecodeOffsetChunks), functionBodyRanges);
236
- return {content: '', isEncoded: false, wasmDisassemblyInfo};
237
- }
238
- try {
239
- const result = await this.debuggerModel.target().debuggerAgent().invoke_getScriptSource(
240
- {scriptId: this.scriptId});
241
- if (result.getError()) {
242
- throw new Error(result.getError());
243
- }
244
- const {scriptSource} = result;
245
- let content: string = scriptSource || '';
246
- if (this.hasSourceURL && this.sourceURL.startsWith('snippet://')) {
247
- // TODO(crbug.com/1330846): Find a better way to establish the snippet automapping binding then adding
248
- // a sourceURL comment before evaluation and removing it here.
249
- content = Script.trimSourceURLComment(content);
250
- }
251
- return {content, isEncoded: false};
252
-
253
- } catch (err) {
254
- // TODO(bmeurer): Propagate errors as exceptions / rejections.
255
- return {content: null, error: i18nString(UIStrings.unableToFetchScriptSource), isEncoded: false};
256
- }
257
- })();
258
- }
259
- return lazyContentPromise;
260
- });
261
- }
262
- return this.#originalContentProviderInternal;
256
+ return new TextUtils.StaticContentProvider.StaticContentProvider(
257
+ this.contentURL(), this.contentType(), () => this.requestContent());
263
258
  }
264
259
 
265
260
  async searchInContent(query: string, caseSensitive: boolean, isRegex: boolean):
@@ -406,6 +406,10 @@ export class MainImpl {
406
406
  Root.Runtime.experiments.register(
407
407
  Root.Runtime.ExperimentName.AUTHORED_DEPLOYED_GROUPING, 'Group sources into Authored and Deployed trees');
408
408
 
409
+ // Hide third party code (as determined by ignore lists or source maps)
410
+ Root.Runtime.experiments.register(
411
+ Root.Runtime.ExperimentName.JUST_MY_CODE, 'Hide ignore-listed code in sources tree view');
412
+
409
413
  // Highlight important DOM properties in the Object Properties viewer.
410
414
  Root.Runtime.experiments.register(
411
415
  Root.Runtime.ExperimentName.IMPORTANT_DOM_PROPERTIES,
@@ -63,7 +63,7 @@ inspectorBackend.registerEnum("Audits.HeavyAdReason", {NetworkTotalLimit: "Netwo
63
63
  inspectorBackend.registerEnum("Audits.ContentSecurityPolicyViolationType", {KInlineViolation: "kInlineViolation", KEvalViolation: "kEvalViolation", KURLViolation: "kURLViolation", KTrustedTypesSinkViolation: "kTrustedTypesSinkViolation", KTrustedTypesPolicyViolation: "kTrustedTypesPolicyViolation", KWasmEvalViolation: "kWasmEvalViolation"});
64
64
  inspectorBackend.registerEnum("Audits.SharedArrayBufferIssueType", {TransferIssue: "TransferIssue", CreationIssue: "CreationIssue"});
65
65
  inspectorBackend.registerEnum("Audits.TwaQualityEnforcementViolationType", {KHttpError: "kHttpError", KUnavailableOffline: "kUnavailableOffline", KDigitalAssetLinks: "kDigitalAssetLinks"});
66
- inspectorBackend.registerEnum("Audits.AttributionReportingIssueType", {PermissionPolicyDisabled: "PermissionPolicyDisabled", UntrustworthyReportingOrigin: "UntrustworthyReportingOrigin", InsecureContext: "InsecureContext", InvalidHeader: "InvalidHeader", InvalidRegisterTriggerHeader: "InvalidRegisterTriggerHeader", InvalidEligibleHeader: "InvalidEligibleHeader"});
66
+ inspectorBackend.registerEnum("Audits.AttributionReportingIssueType", {PermissionPolicyDisabled: "PermissionPolicyDisabled", UntrustworthyReportingOrigin: "UntrustworthyReportingOrigin", InsecureContext: "InsecureContext", InvalidHeader: "InvalidHeader", InvalidRegisterTriggerHeader: "InvalidRegisterTriggerHeader", InvalidEligibleHeader: "InvalidEligibleHeader", TooManyConcurrentRequests: "TooManyConcurrentRequests"});
67
67
  inspectorBackend.registerEnum("Audits.GenericIssueErrorType", {CrossOriginPortalPostMessageError: "CrossOriginPortalPostMessageError"});
68
68
  inspectorBackend.registerEnum("Audits.DeprecationIssueType", {AuthorizationCoveredByWildcard: "AuthorizationCoveredByWildcard", CanRequestURLHTTPContainingNewline: "CanRequestURLHTTPContainingNewline", ChromeLoadTimesConnectionInfo: "ChromeLoadTimesConnectionInfo", ChromeLoadTimesFirstPaintAfterLoadTime: "ChromeLoadTimesFirstPaintAfterLoadTime", ChromeLoadTimesWasAlternateProtocolAvailable: "ChromeLoadTimesWasAlternateProtocolAvailable", CookieWithTruncatingChar: "CookieWithTruncatingChar", CrossOriginAccessBasedOnDocumentDomain: "CrossOriginAccessBasedOnDocumentDomain", CrossOriginWindowAlert: "CrossOriginWindowAlert", CrossOriginWindowConfirm: "CrossOriginWindowConfirm", CSSSelectorInternalMediaControlsOverlayCastButton: "CSSSelectorInternalMediaControlsOverlayCastButton", DeprecationExample: "DeprecationExample", DocumentDomainSettingWithoutOriginAgentClusterHeader: "DocumentDomainSettingWithoutOriginAgentClusterHeader", EventPath: "EventPath", ExpectCTHeader: "ExpectCTHeader", GeolocationInsecureOrigin: "GeolocationInsecureOrigin", GeolocationInsecureOriginDeprecatedNotRemoved: "GeolocationInsecureOriginDeprecatedNotRemoved", GetUserMediaInsecureOrigin: "GetUserMediaInsecureOrigin", HostCandidateAttributeGetter: "HostCandidateAttributeGetter", IdentityInCanMakePaymentEvent: "IdentityInCanMakePaymentEvent", InsecurePrivateNetworkSubresourceRequest: "InsecurePrivateNetworkSubresourceRequest", LegacyConstraintGoogIPv6: "LegacyConstraintGoogIPv6", LocalCSSFileExtensionRejected: "LocalCSSFileExtensionRejected", MediaSourceAbortRemove: "MediaSourceAbortRemove", MediaSourceDurationTruncatingBuffered: "MediaSourceDurationTruncatingBuffered", NavigateEventRestoreScroll: "NavigateEventRestoreScroll", NavigateEventTransitionWhile: "NavigateEventTransitionWhile", NoSysexWebMIDIWithoutPermission: "NoSysexWebMIDIWithoutPermission", NotificationInsecureOrigin: "NotificationInsecureOrigin", NotificationPermissionRequestedIframe: "NotificationPermissionRequestedIframe", ObsoleteWebRtcCipherSuite: "ObsoleteWebRtcCipherSuite", OpenWebDatabaseInsecureContext: "OpenWebDatabaseInsecureContext", OverflowVisibleOnReplacedElement: "OverflowVisibleOnReplacedElement", PersistentQuotaType: "PersistentQuotaType", PictureSourceSrc: "PictureSourceSrc", PrefixedCancelAnimationFrame: "PrefixedCancelAnimationFrame", PrefixedRequestAnimationFrame: "PrefixedRequestAnimationFrame", PrefixedStorageInfo: "PrefixedStorageInfo", PrefixedVideoDisplayingFullscreen: "PrefixedVideoDisplayingFullscreen", PrefixedVideoEnterFullscreen: "PrefixedVideoEnterFullscreen", PrefixedVideoEnterFullScreen: "PrefixedVideoEnterFullScreen", PrefixedVideoExitFullscreen: "PrefixedVideoExitFullscreen", PrefixedVideoExitFullScreen: "PrefixedVideoExitFullScreen", PrefixedVideoSupportsFullscreen: "PrefixedVideoSupportsFullscreen", RangeExpand: "RangeExpand", RequestedSubresourceWithEmbeddedCredentials: "RequestedSubresourceWithEmbeddedCredentials", RTCConstraintEnableDtlsSrtpFalse: "RTCConstraintEnableDtlsSrtpFalse", RTCConstraintEnableDtlsSrtpTrue: "RTCConstraintEnableDtlsSrtpTrue", RTCPeerConnectionComplexPlanBSdpUsingDefaultSdpSemantics: "RTCPeerConnectionComplexPlanBSdpUsingDefaultSdpSemantics", RTCPeerConnectionSdpSemanticsPlanB: "RTCPeerConnectionSdpSemanticsPlanB", RtcpMuxPolicyNegotiate: "RtcpMuxPolicyNegotiate", SharedArrayBufferConstructedWithoutIsolation: "SharedArrayBufferConstructedWithoutIsolation", TextToSpeech_DisallowedByAutoplay: "TextToSpeech_DisallowedByAutoplay", V8SharedArrayBufferConstructedInExtensionWithoutIsolation: "V8SharedArrayBufferConstructedInExtensionWithoutIsolation", XHRJSONEncodingDetection: "XHRJSONEncodingDetection", XMLHttpRequestSynchronousInNonWorkerOutsideBeforeUnload: "XMLHttpRequestSynchronousInNonWorkerOutsideBeforeUnload", XRSupportsSession: "XRSupportsSession"});
69
69
  inspectorBackend.registerEnum("Audits.ClientHintIssueReason", {MetaTagAllowListInvalidOrigin: "MetaTagAllowListInvalidOrigin", MetaTagModifiedHTML: "MetaTagModifiedHTML"});
@@ -346,7 +346,7 @@ inspectorBackend.registerCommand("IndexedDB.enable", [], []);
346
346
  inspectorBackend.registerCommand("IndexedDB.requestData", [{"name": "securityOrigin", "type": "string", "optional": true}, {"name": "storageKey", "type": "string", "optional": true}, {"name": "databaseName", "type": "string", "optional": false}, {"name": "objectStoreName", "type": "string", "optional": false}, {"name": "indexName", "type": "string", "optional": false}, {"name": "skipCount", "type": "number", "optional": false}, {"name": "pageSize", "type": "number", "optional": false}, {"name": "keyRange", "type": "object", "optional": true}], ["objectStoreDataEntries", "hasMore"]);
347
347
  inspectorBackend.registerCommand("IndexedDB.getMetadata", [{"name": "securityOrigin", "type": "string", "optional": true}, {"name": "storageKey", "type": "string", "optional": true}, {"name": "databaseName", "type": "string", "optional": false}, {"name": "objectStoreName", "type": "string", "optional": false}], ["entriesCount", "keyGeneratorValue"]);
348
348
  inspectorBackend.registerCommand("IndexedDB.requestDatabase", [{"name": "securityOrigin", "type": "string", "optional": true}, {"name": "storageKey", "type": "string", "optional": true}, {"name": "databaseName", "type": "string", "optional": false}], ["databaseWithObjectStores"]);
349
- inspectorBackend.registerCommand("IndexedDB.requestDatabaseNames", [{"name": "securityOrigin", "type": "string", "optional": false}], ["databaseNames"]);
349
+ inspectorBackend.registerCommand("IndexedDB.requestDatabaseNames", [{"name": "securityOrigin", "type": "string", "optional": true}, {"name": "storageKey", "type": "string", "optional": true}], ["databaseNames"]);
350
350
 
351
351
  // Input.
352
352
  inspectorBackend.registerEnum("Input.GestureSourceType", {Default: "default", Touch: "touch", Mouse: "mouse"});
@@ -717,8 +717,8 @@ inspectorBackend.registerEnum("Storage.StorageType", {Appcache: "appcache", Cook
717
717
  inspectorBackend.registerEnum("Storage.InterestGroupAccessType", {Join: "join", Leave: "leave", Update: "update", Bid: "bid", Win: "win"});
718
718
  inspectorBackend.registerEvent("Storage.cacheStorageContentUpdated", ["origin", "cacheName"]);
719
719
  inspectorBackend.registerEvent("Storage.cacheStorageListUpdated", ["origin"]);
720
- inspectorBackend.registerEvent("Storage.indexedDBContentUpdated", ["origin", "databaseName", "objectStoreName"]);
721
- inspectorBackend.registerEvent("Storage.indexedDBListUpdated", ["origin"]);
720
+ inspectorBackend.registerEvent("Storage.indexedDBContentUpdated", ["origin", "storageKey", "databaseName", "objectStoreName"]);
721
+ inspectorBackend.registerEvent("Storage.indexedDBListUpdated", ["origin", "storageKey"]);
722
722
  inspectorBackend.registerEvent("Storage.interestGroupAccessed", ["accessTime", "type", "ownerOrigin", "name"]);
723
723
  inspectorBackend.registerCommand("Storage.getStorageKeyForFrame", [{"name": "frameId", "type": "string", "optional": false}], ["storageKey"]);
724
724
  inspectorBackend.registerCommand("Storage.clearDataForOrigin", [{"name": "origin", "type": "string", "optional": false}, {"name": "storageTypes", "type": "string", "optional": false}], []);
@@ -730,8 +730,10 @@ inspectorBackend.registerCommand("Storage.getUsageAndQuota", [{"name": "origin",
730
730
  inspectorBackend.registerCommand("Storage.overrideQuotaForOrigin", [{"name": "origin", "type": "string", "optional": false}, {"name": "quotaSize", "type": "number", "optional": true}], []);
731
731
  inspectorBackend.registerCommand("Storage.trackCacheStorageForOrigin", [{"name": "origin", "type": "string", "optional": false}], []);
732
732
  inspectorBackend.registerCommand("Storage.trackIndexedDBForOrigin", [{"name": "origin", "type": "string", "optional": false}], []);
733
+ inspectorBackend.registerCommand("Storage.trackIndexedDBForStorageKey", [{"name": "storageKey", "type": "string", "optional": false}], []);
733
734
  inspectorBackend.registerCommand("Storage.untrackCacheStorageForOrigin", [{"name": "origin", "type": "string", "optional": false}], []);
734
735
  inspectorBackend.registerCommand("Storage.untrackIndexedDBForOrigin", [{"name": "origin", "type": "string", "optional": false}], []);
736
+ inspectorBackend.registerCommand("Storage.untrackIndexedDBForStorageKey", [{"name": "storageKey", "type": "string", "optional": false}], []);
735
737
  inspectorBackend.registerCommand("Storage.getTrustTokens", [], ["tokens"]);
736
738
  inspectorBackend.registerCommand("Storage.clearTrustTokens", [{"name": "issuerOrigin", "type": "string", "optional": false}], ["didDeleteTokens"]);
737
739
  inspectorBackend.registerCommand("Storage.getInterestGroupDetails", [{"name": "ownerOrigin", "type": "string", "optional": false}, {"name": "name", "type": "string", "optional": false}], ["details"]);
@@ -762,11 +764,11 @@ inspectorBackend.registerCommand("Target.createTarget", [{"name": "url", "type":
762
764
  inspectorBackend.registerCommand("Target.detachFromTarget", [{"name": "sessionId", "type": "string", "optional": true}, {"name": "targetId", "type": "string", "optional": true}], []);
763
765
  inspectorBackend.registerCommand("Target.disposeBrowserContext", [{"name": "browserContextId", "type": "string", "optional": false}], []);
764
766
  inspectorBackend.registerCommand("Target.getTargetInfo", [{"name": "targetId", "type": "string", "optional": true}], ["targetInfo"]);
765
- inspectorBackend.registerCommand("Target.getTargets", [], ["targetInfos"]);
767
+ inspectorBackend.registerCommand("Target.getTargets", [{"name": "filter", "type": "object", "optional": true}], ["targetInfos"]);
766
768
  inspectorBackend.registerCommand("Target.sendMessageToTarget", [{"name": "message", "type": "string", "optional": false}, {"name": "sessionId", "type": "string", "optional": true}, {"name": "targetId", "type": "string", "optional": true}], []);
767
- inspectorBackend.registerCommand("Target.setAutoAttach", [{"name": "autoAttach", "type": "boolean", "optional": false}, {"name": "waitForDebuggerOnStart", "type": "boolean", "optional": false}, {"name": "flatten", "type": "boolean", "optional": true}], []);
768
- inspectorBackend.registerCommand("Target.autoAttachRelated", [{"name": "targetId", "type": "string", "optional": false}, {"name": "waitForDebuggerOnStart", "type": "boolean", "optional": false}], []);
769
- inspectorBackend.registerCommand("Target.setDiscoverTargets", [{"name": "discover", "type": "boolean", "optional": false}], []);
769
+ inspectorBackend.registerCommand("Target.setAutoAttach", [{"name": "autoAttach", "type": "boolean", "optional": false}, {"name": "waitForDebuggerOnStart", "type": "boolean", "optional": false}, {"name": "flatten", "type": "boolean", "optional": true}, {"name": "filter", "type": "object", "optional": true}], []);
770
+ inspectorBackend.registerCommand("Target.autoAttachRelated", [{"name": "targetId", "type": "string", "optional": false}, {"name": "waitForDebuggerOnStart", "type": "boolean", "optional": false}, {"name": "filter", "type": "object", "optional": true}], []);
771
+ inspectorBackend.registerCommand("Target.setDiscoverTargets", [{"name": "discover", "type": "boolean", "optional": false}, {"name": "filter", "type": "object", "optional": true}], []);
770
772
  inspectorBackend.registerCommand("Target.setRemoteLocations", [{"name": "locations", "type": "object", "optional": false}], []);
771
773
 
772
774
  // Tethering.
@@ -2160,7 +2160,7 @@ export namespace ProtocolMapping {
2160
2160
  * Requests database names for given security origin.
2161
2161
  */
2162
2162
  'IndexedDB.requestDatabaseNames': {
2163
- paramsType: [Protocol.IndexedDB.RequestDatabaseNamesRequest];
2163
+ paramsType: [Protocol.IndexedDB.RequestDatabaseNamesRequest?];
2164
2164
  returnType: Protocol.IndexedDB.RequestDatabaseNamesResponse;
2165
2165
  };
2166
2166
  /**
@@ -3472,6 +3472,13 @@ export namespace ProtocolMapping {
3472
3472
  paramsType: [Protocol.Storage.TrackIndexedDBForOriginRequest];
3473
3473
  returnType: void;
3474
3474
  };
3475
+ /**
3476
+ * Registers storage key to be notified when an update occurs to its IndexedDB.
3477
+ */
3478
+ 'Storage.trackIndexedDBForStorageKey': {
3479
+ paramsType: [Protocol.Storage.TrackIndexedDBForStorageKeyRequest];
3480
+ returnType: void;
3481
+ };
3475
3482
  /**
3476
3483
  * Unregisters origin from receiving notifications for cache storage.
3477
3484
  */
@@ -3486,6 +3493,13 @@ export namespace ProtocolMapping {
3486
3493
  paramsType: [Protocol.Storage.UntrackIndexedDBForOriginRequest];
3487
3494
  returnType: void;
3488
3495
  };
3496
+ /**
3497
+ * Unregisters storage key from receiving notifications for IndexedDB.
3498
+ */
3499
+ 'Storage.untrackIndexedDBForStorageKey': {
3500
+ paramsType: [Protocol.Storage.UntrackIndexedDBForStorageKeyRequest];
3501
+ returnType: void;
3502
+ };
3489
3503
  /**
3490
3504
  * Returns the number of stored Trust Tokens per issuer for the
3491
3505
  * current browsing context.
@@ -3620,7 +3634,7 @@ export namespace ProtocolMapping {
3620
3634
  * Retrieves a list of available targets.
3621
3635
  */
3622
3636
  'Target.getTargets': {
3623
- paramsType: [];
3637
+ paramsType: [Protocol.Target.GetTargetsRequest?];
3624
3638
  returnType: Protocol.Target.GetTargetsResponse;
3625
3639
  };
3626
3640
  /**
@@ -2917,6 +2917,11 @@ declare namespace ProtocolProxyApi {
2917
2917
  */
2918
2918
  invoke_trackIndexedDBForOrigin(params: Protocol.Storage.TrackIndexedDBForOriginRequest): Promise<Protocol.ProtocolResponseWithError>;
2919
2919
 
2920
+ /**
2921
+ * Registers storage key to be notified when an update occurs to its IndexedDB.
2922
+ */
2923
+ invoke_trackIndexedDBForStorageKey(params: Protocol.Storage.TrackIndexedDBForStorageKeyRequest): Promise<Protocol.ProtocolResponseWithError>;
2924
+
2920
2925
  /**
2921
2926
  * Unregisters origin from receiving notifications for cache storage.
2922
2927
  */
@@ -2927,6 +2932,11 @@ declare namespace ProtocolProxyApi {
2927
2932
  */
2928
2933
  invoke_untrackIndexedDBForOrigin(params: Protocol.Storage.UntrackIndexedDBForOriginRequest): Promise<Protocol.ProtocolResponseWithError>;
2929
2934
 
2935
+ /**
2936
+ * Unregisters storage key from receiving notifications for IndexedDB.
2937
+ */
2938
+ invoke_untrackIndexedDBForStorageKey(params: Protocol.Storage.UntrackIndexedDBForStorageKeyRequest): Promise<Protocol.ProtocolResponseWithError>;
2939
+
2930
2940
  /**
2931
2941
  * Returns the number of stored Trust Tokens per issuer for the
2932
2942
  * current browsing context.
@@ -3061,7 +3071,7 @@ declare namespace ProtocolProxyApi {
3061
3071
  /**
3062
3072
  * Retrieves a list of available targets.
3063
3073
  */
3064
- invoke_getTargets(): Promise<Protocol.Target.GetTargetsResponse>;
3074
+ invoke_getTargets(params: Protocol.Target.GetTargetsRequest): Promise<Protocol.Target.GetTargetsResponse>;
3065
3075
 
3066
3076
  /**
3067
3077
  * Sends protocol message over session with given id.