chrome-devtools-frontend 1.0.1530564 → 1.0.1532228

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 (59) hide show
  1. package/AUTHORS +2 -0
  2. package/front_end/core/protocol_client/InspectorBackend.ts +15 -6
  3. package/front_end/core/protocol_client/protocol_client.ts +0 -10
  4. package/front_end/core/sdk/NetworkManager.ts +155 -41
  5. package/front_end/core/sdk/SourceMap.ts +6 -1
  6. package/front_end/core/sdk/SourceMapScopesInfo.ts +73 -7
  7. package/front_end/generated/ARIAProperties.js +1301 -174
  8. package/front_end/generated/Deprecation.ts +7 -0
  9. package/front_end/generated/InspectorBackendCommands.js +1 -0
  10. package/front_end/generated/protocol-mapping.d.ts +4 -0
  11. package/front_end/generated/protocol-proxy-api.d.ts +5 -0
  12. package/front_end/models/ai_assistance/data_formatters/PerformanceInsightFormatter.snapshot.txt +1 -1
  13. package/front_end/models/ai_assistance/data_formatters/PerformanceInsightFormatter.ts +1 -1
  14. package/front_end/models/ai_assistance/data_formatters/PerformanceTraceFormatterBounds.snapshot.txt +4 -0
  15. package/front_end/models/bindings/CompilerScriptMapping.ts +16 -14
  16. package/front_end/models/issues_manager/AttributionReportingIssue.ts +4 -3
  17. package/front_end/models/issues_manager/BounceTrackingIssue.ts +4 -3
  18. package/front_end/models/issues_manager/ClientHintIssue.ts +4 -3
  19. package/front_end/models/issues_manager/ContentSecurityPolicyIssue.ts +4 -3
  20. package/front_end/models/issues_manager/CookieDeprecationMetadataIssue.ts +5 -3
  21. package/front_end/models/issues_manager/CookieIssue.ts +4 -4
  22. package/front_end/models/issues_manager/CorsIssue.ts +3 -3
  23. package/front_end/models/issues_manager/CrossOriginEmbedderPolicyIssue.ts +2 -1
  24. package/front_end/models/issues_manager/DeprecationIssue.ts +4 -3
  25. package/front_end/models/issues_manager/ElementAccessibilityIssue.ts +4 -3
  26. package/front_end/models/issues_manager/FederatedAuthRequestIssue.ts +4 -3
  27. package/front_end/models/issues_manager/GenericIssue.ts +3 -3
  28. package/front_end/models/issues_manager/HeavyAdIssue.ts +3 -3
  29. package/front_end/models/issues_manager/IssuesManager.ts +3 -3
  30. package/front_end/models/issues_manager/LowTextContrastIssue.ts +5 -3
  31. package/front_end/models/issues_manager/MixedContentIssue.ts +4 -3
  32. package/front_end/models/issues_manager/PartitioningBlobURLIssue.ts +5 -3
  33. package/front_end/models/issues_manager/PropertyRuleIssue.ts +4 -3
  34. package/front_end/models/issues_manager/QuirksModeIssue.ts +4 -3
  35. package/front_end/models/issues_manager/SRIMessageSignatureIssue.ts +5 -3
  36. package/front_end/models/issues_manager/SharedArrayBufferIssue.ts +5 -3
  37. package/front_end/models/issues_manager/SharedDictionaryIssue.ts +5 -3
  38. package/front_end/models/issues_manager/StylesheetLoadingIssue.ts +5 -3
  39. package/front_end/models/issues_manager/UnencodedDigestIssue.ts +5 -3
  40. package/front_end/models/issues_manager/UserReidentificationIssue.ts +4 -3
  41. package/front_end/models/javascript_metadata/NativeFunctions.js +8 -2
  42. package/front_end/models/trace/insights/ForcedReflow.ts +1 -1
  43. package/front_end/panels/ai_assistance/AiAssistancePanel.ts +17 -4
  44. package/front_end/panels/console/ConsoleInsightTeaser.ts +111 -60
  45. package/front_end/panels/console/ConsoleSidebar.ts +3 -3
  46. package/front_end/panels/network/NetworkLogView.ts +135 -33
  47. package/front_end/panels/network/{BlockedURLsPane.ts → RequestConditionsDrawer.ts} +64 -23
  48. package/front_end/panels/network/network-meta.ts +33 -9
  49. package/front_end/panels/network/network.ts +3 -3
  50. package/front_end/panels/network/{blockedURLsPane.css → requestConditionsDrawer.css} +5 -0
  51. package/front_end/panels/recorder/components/stepView.css +2 -2
  52. package/front_end/panels/sources/SourcesSearchScope.ts +5 -0
  53. package/front_end/panels/sources/sources-meta.ts +1 -0
  54. package/front_end/panels/timeline/components/insights/ForcedReflow.ts +2 -2
  55. package/front_end/third_party/chromium/README.chromium +1 -1
  56. package/front_end/ui/legacy/components/cookie_table/CookiesTable.ts +31 -5
  57. package/front_end/ui/legacy/components/utils/TargetDetachedDialog.ts +3 -0
  58. package/front_end/ui/visual_logging/KnownContextValues.ts +5 -0
  59. package/package.json +1 -1
@@ -218,6 +218,10 @@ export const UIStrings = {
218
218
  * @description A deprecation warning shown in the DevTools Issues tab. The placeholder is always the noun 'SharedArrayBuffer' which refers to a JavaScript construct. 'Extensions' refers to Chrome extensions. The warning is shown when Chrome Extensions attempt to use 'SharedArrayBuffer's under insecure circumstances.
219
219
  */
220
220
  V8SharedArrayBufferConstructedInExtensionWithoutIsolation: "Extensions should opt into cross-origin isolation to continue using `SharedArrayBuffer`. See https://developer.chrome.com/docs/extensions/mv3/cross-origin-isolation/.",
221
+ /**
222
+ * @description This warning occurs when the deprecated `BluetoothRemoteGATTCharacteristic.writeValue()` method is used. Developers should use `writeValueWithResponse()` or `writeValueWithoutResponse()` instead.
223
+ */
224
+ WebBluetoothRemoteCharacteristicWriteValue: "`BluetoothRemoteGATTCharacteristic.writeValue()` is deprecated. Use `writeValueWithResponse()` or `writeValueWithoutResponse()` instead.",
221
225
  /**
222
226
  * @description Warning displayed to developers that they are using `XMLHttpRequest` API in a way that they expect an unsupported character encoding `UTF-16` could be used in the server reply.
223
227
  */
@@ -341,6 +345,9 @@ export const DEPRECATIONS_METADATA: Partial<Record<string, DeprecationDescriptor
341
345
  "V8SharedArrayBufferConstructedInExtensionWithoutIsolation": {
342
346
  "milestone": 96
343
347
  },
348
+ "WebBluetoothRemoteCharacteristicWriteValue": {
349
+ "chromeStatusFeature": 5088568590598144
350
+ },
344
351
  "XHRJSONEncodingDetection": {
345
352
  "milestone": 93
346
353
  }
@@ -696,6 +696,7 @@ inspectorBackend.registerType("Input.DragData", [{"name": "items", "type": "arra
696
696
  inspectorBackend.registerEvent("Inspector.detached", ["reason"]);
697
697
  inspectorBackend.registerEvent("Inspector.targetCrashed", []);
698
698
  inspectorBackend.registerEvent("Inspector.targetReloadedAfterCrash", []);
699
+ inspectorBackend.registerEvent("Inspector.workerScriptLoaded", []);
699
700
  inspectorBackend.registerCommand("Inspector.disable", [], [], "Disables inspector domain notifications.");
700
701
  inspectorBackend.registerCommand("Inspector.enable", [], [], "Enables inspector domain notifications.");
701
702
 
@@ -233,6 +233,10 @@ export namespace ProtocolMapping {
233
233
  * Fired when debugging target has reloaded after crash
234
234
  */
235
235
  'Inspector.targetReloadedAfterCrash': [];
236
+ /**
237
+ * Fired on worker targets when main worker script and any imported scripts have been evaluated.
238
+ */
239
+ 'Inspector.workerScriptLoaded': [];
236
240
  'LayerTree.layerPainted': [Protocol.LayerTree.LayerPaintedEvent];
237
241
  'LayerTree.layerTreeDidChange': [Protocol.LayerTree.LayerTreeDidChangeEvent];
238
242
  /**
@@ -2248,6 +2248,11 @@ declare namespace ProtocolProxyApi {
2248
2248
  */
2249
2249
  targetReloadedAfterCrash(): void;
2250
2250
 
2251
+ /**
2252
+ * Fired on worker targets when main worker script and any imported scripts have been evaluated.
2253
+ */
2254
+ workerScriptLoaded(): void;
2255
+
2251
2256
  }
2252
2257
 
2253
2258
  export interface LayerTreeApi {
@@ -1009,7 +1009,7 @@ The following is the top function call that caused forced reflow(s):
1009
1009
 
1010
1010
  Total reflow time: 26 ms
1011
1011
 
1012
- Stack trace (including total time):
1012
+ Call frames that trigger reflow (including total time):
1013
1013
 
1014
1014
  - 56 ms in sidemenuitemintoview @ https://www.w3schools.com/lib/w3schools_footer.js?update=20240910:383:11
1015
1015
  - 5 ms in ko @ https://securepubads.g.doubleclick.net/pagead/managed/js/gpt/m202411070102/pubads_impl.js?cb=31088843:32:197203
@@ -514,7 +514,7 @@ Duplication grouped by Node modules: ${filesFormatted}`;
514
514
  }
515
515
 
516
516
  if (insight.aggregatedBottomUpData.length > 0) {
517
- output += '\n' + Trace.Insights.Models.ForcedReflow.UIStrings.relatedStackTrace + ' (including total time):\n';
517
+ output += '\n' + Trace.Insights.Models.ForcedReflow.UIStrings.reflowCallFrames + ' (including total time):\n';
518
518
  for (const data of insight.aggregatedBottomUpData) {
519
519
  output += `\n - ${this.#formatMicro(data.totalTime)} in ${callFrameToString(data.bottomUpData)}`;
520
520
  }
@@ -0,0 +1,4 @@
1
+ Title: PerformanceTraceFormatter serializeBounds works
2
+ Content:
3
+ {min: 1, max: 2}
4
+ === end content
@@ -296,28 +296,30 @@ export class CompilerScriptMapping implements DebuggerSourceMapping {
296
296
  const {sourceMap, script} = sourceMapAndScript;
297
297
  const {lineNumber, columnNumber} = script.relativeLocationToRawLocation(frame);
298
298
 
299
- if (!sourceMap.hasInlinedFrames(lineNumber, columnNumber) && !sourceMap.isOutlinedFrame(lineNumber, columnNumber)) {
300
- // No outlining or inlining: Get the original function name and map the call-site.
301
- const mapping = sourceMap.findEntry(lineNumber, columnNumber);
302
- if (!mapping?.sourceURL) {
299
+ if (!sourceMap.isOutlinedFrame(lineNumber, columnNumber)) {
300
+ const frames = sourceMap.translateCallSite(lineNumber, columnNumber);
301
+ if (!frames.length) {
303
302
  return false;
304
303
  }
305
304
 
306
- const originalName = sourceMap.findOriginalFunctionName({line: lineNumber, column: columnNumber});
307
305
  rawFrames.shift();
306
+ const result: typeof translatedFrames[0] = [];
307
+ translatedFrames.push(result);
308
+
308
309
  const project = this.#sourceMapToProject.get(sourceMap);
309
- const uiSourceCode = project?.uiSourceCodeForURL(mapping.sourceURL);
310
- translatedFrames.push([{
311
- line: mapping.sourceLineNumber,
312
- column: mapping.sourceColumnNumber,
313
- name: originalName ?? undefined,
314
- uiSourceCode: uiSourceCode ?? undefined,
315
- url: uiSourceCode ? undefined : mapping.sourceURL
316
- }]);
310
+ for (const frame of frames) {
311
+ // Switch out url for UISourceCode where we have it.
312
+ const uiSourceCode = frame.url ? project?.uiSourceCodeForURL(frame.url) : undefined;
313
+ result.push({
314
+ ...frame,
315
+ url: uiSourceCode ? undefined : frame.url,
316
+ uiSourceCode: uiSourceCode ?? undefined,
317
+ });
318
+ }
319
+
317
320
  return true;
318
321
  }
319
322
 
320
- // TODO(crbug.com/433162438): Expand inlined frames.
321
323
  // TODO(crbug.com/433162438): Consolidate outlined frames.
322
324
  return false;
323
325
  }
@@ -93,7 +93,7 @@ export class AttributionReportingIssue extends Issue<IssueCode> {
93
93
  issueDetails: Readonly<Protocol.Audits.AttributionReportingIssueDetails>;
94
94
 
95
95
  constructor(
96
- issueDetails: Protocol.Audits.AttributionReportingIssueDetails, issuesModel: SDK.IssuesModel.IssuesModel) {
96
+ issueDetails: Protocol.Audits.AttributionReportingIssueDetails, issuesModel: SDK.IssuesModel.IssuesModel|null) {
97
97
  super(getIssueCode(issueDetails), issuesModel);
98
98
  this.issueDetails = issueDetails;
99
99
  }
@@ -236,8 +236,9 @@ export class AttributionReportingIssue extends Issue<IssueCode> {
236
236
  return IssueKind.PAGE_ERROR;
237
237
  }
238
238
 
239
- static fromInspectorIssue(issuesModel: SDK.IssuesModel.IssuesModel, inspectorIssue: Protocol.Audits.InspectorIssue):
240
- AttributionReportingIssue[] {
239
+ static fromInspectorIssue(
240
+ issuesModel: SDK.IssuesModel.IssuesModel|null,
241
+ inspectorIssue: Protocol.Audits.InspectorIssue): AttributionReportingIssue[] {
241
242
  const {attributionReportingIssueDetails} = inspectorIssue.details;
242
243
  if (!attributionReportingIssueDetails) {
243
244
  console.warn('Attribution Reporting issue without details received.');
@@ -21,7 +21,7 @@ const i18nString = i18n.i18n.getLocalizedString.bind(undefined, str_);
21
21
  export class BounceTrackingIssue extends Issue {
22
22
  readonly #issueDetails: Protocol.Audits.BounceTrackingIssueDetails;
23
23
 
24
- constructor(issueDetails: Protocol.Audits.BounceTrackingIssueDetails, issuesModel: SDK.IssuesModel.IssuesModel) {
24
+ constructor(issueDetails: Protocol.Audits.BounceTrackingIssueDetails, issuesModel: SDK.IssuesModel.IssuesModel|null) {
25
25
  super(Protocol.Audits.InspectorIssueCode.BounceTrackingIssue, issuesModel);
26
26
  this.#issueDetails = issueDetails;
27
27
  }
@@ -61,8 +61,9 @@ export class BounceTrackingIssue extends Issue {
61
61
  return [];
62
62
  }
63
63
 
64
- static fromInspectorIssue(issuesModel: SDK.IssuesModel.IssuesModel, inspectorIssue: Protocol.Audits.InspectorIssue):
65
- BounceTrackingIssue[] {
64
+ static fromInspectorIssue(
65
+ issuesModel: SDK.IssuesModel.IssuesModel|null,
66
+ inspectorIssue: Protocol.Audits.InspectorIssue): BounceTrackingIssue[] {
66
67
  const details = inspectorIssue.details.bounceTrackingIssueDetails;
67
68
  if (!details) {
68
69
  console.warn('Bounce tracking issue without details received.');
@@ -25,7 +25,7 @@ const i18nLazyString = i18n.i18n.getLazilyComputedLocalizedString.bind(undefined
25
25
  export class ClientHintIssue extends Issue {
26
26
  private issueDetails: Protocol.Audits.ClientHintIssueDetails;
27
27
 
28
- constructor(issueDetails: Protocol.Audits.ClientHintIssueDetails, issuesModel: SDK.IssuesModel.IssuesModel) {
28
+ constructor(issueDetails: Protocol.Audits.ClientHintIssueDetails, issuesModel: SDK.IssuesModel.IssuesModel|null) {
29
29
  super(
30
30
  {
31
31
  code: Protocol.Audits.InspectorIssueCode.ClientHintIssue,
@@ -63,8 +63,9 @@ export class ClientHintIssue extends Issue {
63
63
  return IssueKind.BREAKING_CHANGE;
64
64
  }
65
65
 
66
- static fromInspectorIssue(issuesModel: SDK.IssuesModel.IssuesModel, inspectorIssue: Protocol.Audits.InspectorIssue):
67
- ClientHintIssue[] {
66
+ static fromInspectorIssue(
67
+ issuesModel: SDK.IssuesModel.IssuesModel|null,
68
+ inspectorIssue: Protocol.Audits.InspectorIssue): ClientHintIssue[] {
68
69
  const details = inspectorIssue.details.clientHintIssueDetails;
69
70
  if (!details) {
70
71
  console.warn('Client Hint issue without details received.');
@@ -42,7 +42,7 @@ export class ContentSecurityPolicyIssue extends Issue {
42
42
  #issueDetails: Protocol.Audits.ContentSecurityPolicyIssueDetails;
43
43
 
44
44
  constructor(
45
- issueDetails: Protocol.Audits.ContentSecurityPolicyIssueDetails, issuesModel: SDK.IssuesModel.IssuesModel,
45
+ issueDetails: Protocol.Audits.ContentSecurityPolicyIssueDetails, issuesModel: SDK.IssuesModel.IssuesModel|null,
46
46
  issueId?: Protocol.Audits.IssueId) {
47
47
  const issueCode = [
48
48
  Protocol.Audits.InspectorIssueCode.ContentSecurityPolicyIssue,
@@ -89,8 +89,9 @@ export class ContentSecurityPolicyIssue extends Issue {
89
89
  return IssueKind.PAGE_ERROR;
90
90
  }
91
91
 
92
- static fromInspectorIssue(issuesModel: SDK.IssuesModel.IssuesModel, inspectorIssue: Protocol.Audits.InspectorIssue):
93
- ContentSecurityPolicyIssue[] {
92
+ static fromInspectorIssue(
93
+ issuesModel: SDK.IssuesModel.IssuesModel|null,
94
+ inspectorIssue: Protocol.Audits.InspectorIssue): ContentSecurityPolicyIssue[] {
94
95
  const cspDetails = inspectorIssue.details.contentSecurityPolicyIssueDetails;
95
96
  if (!cspDetails) {
96
97
  console.warn('Content security policy issue without details received.');
@@ -23,7 +23,8 @@ export class CookieDeprecationMetadataIssue extends Issue {
23
23
  readonly #issueDetails: Protocol.Audits.CookieDeprecationMetadataIssueDetails;
24
24
 
25
25
  constructor(
26
- issueDetails: Protocol.Audits.CookieDeprecationMetadataIssueDetails, issuesModel: SDK.IssuesModel.IssuesModel) {
26
+ issueDetails: Protocol.Audits.CookieDeprecationMetadataIssueDetails,
27
+ issuesModel: SDK.IssuesModel.IssuesModel|null) {
27
28
  // Set a distinct code for ReadCookie and SetCookie issues, so they are grouped separately.
28
29
  const issueCode = Protocol.Audits.InspectorIssueCode.CookieDeprecationMetadataIssue + '_' + issueDetails.operation;
29
30
  super(issueCode, issuesModel);
@@ -70,8 +71,9 @@ export class CookieDeprecationMetadataIssue extends Issue {
70
71
  return JSON.stringify(this.#issueDetails);
71
72
  }
72
73
 
73
- static fromInspectorIssue(issuesModel: SDK.IssuesModel.IssuesModel, inspectorIssue: Protocol.Audits.InspectorIssue):
74
- CookieDeprecationMetadataIssue[] {
74
+ static fromInspectorIssue(
75
+ issuesModel: SDK.IssuesModel.IssuesModel|null,
76
+ inspectorIssue: Protocol.Audits.InspectorIssue): CookieDeprecationMetadataIssue[] {
75
77
  const details = inspectorIssue.details.cookieDeprecationMetadataIssueDetails;
76
78
  if (!details) {
77
79
  console.warn('Cookie deprecation metadata issue without details received.');
@@ -72,7 +72,7 @@ export class CookieIssue extends Issue {
72
72
  #issueDetails: Protocol.Audits.CookieIssueDetails;
73
73
 
74
74
  constructor(
75
- code: string, issueDetails: Protocol.Audits.CookieIssueDetails, issuesModel: SDK.IssuesModel.IssuesModel,
75
+ code: string, issueDetails: Protocol.Audits.CookieIssueDetails, issuesModel: SDK.IssuesModel.IssuesModel|null,
76
76
  issueId: Protocol.Audits.IssueId|undefined) {
77
77
  super(code, issuesModel, issueId);
78
78
  this.#issueDetails = issueDetails;
@@ -96,7 +96,7 @@ export class CookieIssue extends Issue {
96
96
  * Returns an array of issues from a given CookieIssueDetails.
97
97
  */
98
98
  static createIssuesFromCookieIssueDetails(
99
- cookieIssueDetails: Protocol.Audits.CookieIssueDetails, issuesModel: SDK.IssuesModel.IssuesModel,
99
+ cookieIssueDetails: Protocol.Audits.CookieIssueDetails, issuesModel: SDK.IssuesModel.IssuesModel|null,
100
100
  issueId: Protocol.Audits.IssueId|undefined): CookieIssue[] {
101
101
  const issues: CookieIssue[] = [];
102
102
 
@@ -294,8 +294,8 @@ export class CookieIssue extends Issue {
294
294
  return;
295
295
  }
296
296
 
297
- static fromInspectorIssue(issuesModel: SDK.IssuesModel.IssuesModel, inspectorIssue: Protocol.Audits.InspectorIssue):
298
- CookieIssue[] {
297
+ static fromInspectorIssue(
298
+ issuesModel: SDK.IssuesModel.IssuesModel|null, inspectorIssue: Protocol.Audits.InspectorIssue): CookieIssue[] {
299
299
  const cookieIssueDetails = inspectorIssue.details.cookieIssueDetails;
300
300
  if (!cookieIssueDetails) {
301
301
  console.warn('Cookie issue without details received.');
@@ -119,7 +119,7 @@ export class CorsIssue extends Issue<IssueCode> {
119
119
  #issueDetails: Protocol.Audits.CorsIssueDetails;
120
120
 
121
121
  constructor(
122
- issueDetails: Protocol.Audits.CorsIssueDetails, issuesModel: SDK.IssuesModel.IssuesModel,
122
+ issueDetails: Protocol.Audits.CorsIssueDetails, issuesModel: SDK.IssuesModel.IssuesModel|null,
123
123
  issueId: Protocol.Audits.IssueId|undefined) {
124
124
  super(getIssueCode(issueDetails), issuesModel, issueId);
125
125
  this.#issueDetails = issueDetails;
@@ -284,8 +284,8 @@ export class CorsIssue extends Issue<IssueCode> {
284
284
  return IssueKind.PAGE_ERROR;
285
285
  }
286
286
 
287
- static fromInspectorIssue(issuesModel: SDK.IssuesModel.IssuesModel, inspectorIssue: Protocol.Audits.InspectorIssue):
288
- CorsIssue[] {
287
+ static fromInspectorIssue(
288
+ issuesModel: SDK.IssuesModel.IssuesModel|null, inspectorIssue: Protocol.Audits.InspectorIssue): CorsIssue[] {
289
289
  const corsIssueDetails = inspectorIssue.details.corsIssueDetails;
290
290
  if (!corsIssueDetails) {
291
291
  console.warn('Cors issue without details received.');
@@ -45,7 +45,8 @@ export function isCrossOriginEmbedderPolicyIssue(reason: Protocol.Audits.Blocked
45
45
  export class CrossOriginEmbedderPolicyIssue extends Issue {
46
46
  #issueDetails: Protocol.Audits.BlockedByResponseIssueDetails;
47
47
 
48
- constructor(issueDetails: Protocol.Audits.BlockedByResponseIssueDetails, issuesModel: SDK.IssuesModel.IssuesModel) {
48
+ constructor(
49
+ issueDetails: Protocol.Audits.BlockedByResponseIssueDetails, issuesModel: SDK.IssuesModel.IssuesModel|null) {
49
50
  super(`CrossOriginEmbedderPolicyIssue::${issueDetails.reason}`, issuesModel);
50
51
  this.#issueDetails = issueDetails;
51
52
  }
@@ -36,7 +36,7 @@ const i18nLazyDeprecationString = i18n.i18n.getLazilyComputedLocalizedString.bin
36
36
  export class DeprecationIssue extends Issue {
37
37
  #issueDetails: Protocol.Audits.DeprecationIssueDetails;
38
38
 
39
- constructor(issueDetails: Protocol.Audits.DeprecationIssueDetails, issuesModel: SDK.IssuesModel.IssuesModel) {
39
+ constructor(issueDetails: Protocol.Audits.DeprecationIssueDetails, issuesModel: SDK.IssuesModel.IssuesModel|null) {
40
40
  const issueCode = [
41
41
  Protocol.Audits.InspectorIssueCode.DeprecationIssue,
42
42
  issueDetails.type,
@@ -101,8 +101,9 @@ export class DeprecationIssue extends Issue {
101
101
  return IssueKind.BREAKING_CHANGE;
102
102
  }
103
103
 
104
- static fromInspectorIssue(issuesModel: SDK.IssuesModel.IssuesModel, inspectorIssue: Protocol.Audits.InspectorIssue):
105
- DeprecationIssue[] {
104
+ static fromInspectorIssue(
105
+ issuesModel: SDK.IssuesModel.IssuesModel|null,
106
+ inspectorIssue: Protocol.Audits.InspectorIssue): DeprecationIssue[] {
106
107
  const details = inspectorIssue.details.deprecationIssueDetails;
107
108
  if (!details) {
108
109
  console.warn('Deprecation issue without details received.');
@@ -16,7 +16,7 @@ export class ElementAccessibilityIssue extends Issue {
16
16
  private issueDetails: Protocol.Audits.ElementAccessibilityIssueDetails;
17
17
 
18
18
  constructor(
19
- issueDetails: Protocol.Audits.ElementAccessibilityIssueDetails, issuesModel: SDK.IssuesModel.IssuesModel,
19
+ issueDetails: Protocol.Audits.ElementAccessibilityIssueDetails, issuesModel: SDK.IssuesModel.IssuesModel|null,
20
20
  issueId?: Protocol.Audits.IssueId) {
21
21
  const issueCode = [
22
22
  Protocol.Audits.InspectorIssueCode.ElementAccessibilityIssue,
@@ -64,8 +64,9 @@ export class ElementAccessibilityIssue extends Issue {
64
64
  Protocol.Audits.ElementAccessibilityIssueReason.InteractiveContentSummaryDescendant);
65
65
  }
66
66
 
67
- static fromInspectorIssue(issuesModel: SDK.IssuesModel.IssuesModel, inspectorIssue: Protocol.Audits.InspectorIssue):
68
- ElementAccessibilityIssue[] {
67
+ static fromInspectorIssue(
68
+ issuesModel: SDK.IssuesModel.IssuesModel|null,
69
+ inspectorIssue: Protocol.Audits.InspectorIssue): ElementAccessibilityIssue[] {
69
70
  const elementAccessibilityIssueDetails = inspectorIssue.details.elementAccessibilityIssueDetails;
70
71
  if (!elementAccessibilityIssueDetails) {
71
72
  console.warn('Element Accessibility issue without details received.');
@@ -26,7 +26,7 @@ export class FederatedAuthRequestIssue extends Issue {
26
26
  readonly #issueDetails: Protocol.Audits.FederatedAuthRequestIssueDetails;
27
27
 
28
28
  constructor(
29
- issueDetails: Protocol.Audits.FederatedAuthRequestIssueDetails, issuesModel: SDK.IssuesModel.IssuesModel) {
29
+ issueDetails: Protocol.Audits.FederatedAuthRequestIssueDetails, issuesModel: SDK.IssuesModel.IssuesModel|null) {
30
30
  super(
31
31
  {
32
32
  code: Protocol.Audits.InspectorIssueCode.FederatedAuthRequestIssue,
@@ -63,8 +63,9 @@ export class FederatedAuthRequestIssue extends Issue {
63
63
  return IssueKind.PAGE_ERROR;
64
64
  }
65
65
 
66
- static fromInspectorIssue(issuesModel: SDK.IssuesModel.IssuesModel, inspectorIssue: Protocol.Audits.InspectorIssue):
67
- FederatedAuthRequestIssue[] {
66
+ static fromInspectorIssue(
67
+ issuesModel: SDK.IssuesModel.IssuesModel|null,
68
+ inspectorIssue: Protocol.Audits.InspectorIssue): FederatedAuthRequestIssue[] {
68
69
  const details = inspectorIssue.details.federatedAuthRequestIssueDetails;
69
70
  if (!details) {
70
71
  console.warn('Federated auth request issue without details received.');
@@ -47,7 +47,7 @@ export class GenericIssue extends Issue {
47
47
  #issueDetails: Protocol.Audits.GenericIssueDetails;
48
48
 
49
49
  constructor(
50
- issueDetails: Protocol.Audits.GenericIssueDetails, issuesModel: SDK.IssuesModel.IssuesModel,
50
+ issueDetails: Protocol.Audits.GenericIssueDetails, issuesModel: SDK.IssuesModel.IssuesModel|null,
51
51
  issueId?: Protocol.Audits.IssueId) {
52
52
  const issueCode = [
53
53
  Protocol.Audits.InspectorIssueCode.GenericIssue,
@@ -90,8 +90,8 @@ export class GenericIssue extends Issue {
90
90
  return issueTypes.get(this.#issueDetails.errorType) || IssueKind.IMPROVEMENT;
91
91
  }
92
92
 
93
- static fromInspectorIssue(issuesModel: SDK.IssuesModel.IssuesModel, inspectorIssue: Protocol.Audits.InspectorIssue):
94
- GenericIssue[] {
93
+ static fromInspectorIssue(
94
+ issuesModel: SDK.IssuesModel.IssuesModel|null, inspectorIssue: Protocol.Audits.InspectorIssue): GenericIssue[] {
95
95
  const genericDetails = inspectorIssue.details.genericIssueDetails;
96
96
  if (!genericDetails) {
97
97
  console.warn('Generic issue without details received.');
@@ -21,7 +21,7 @@ const i18nString = i18n.i18n.getLocalizedString.bind(undefined, str_);
21
21
  export class HeavyAdIssue extends Issue {
22
22
  #issueDetails: Protocol.Audits.HeavyAdIssueDetails;
23
23
 
24
- constructor(issueDetails: Protocol.Audits.HeavyAdIssueDetails, issuesModel: SDK.IssuesModel.IssuesModel) {
24
+ constructor(issueDetails: Protocol.Audits.HeavyAdIssueDetails, issuesModel: SDK.IssuesModel.IssuesModel|null) {
25
25
  const umaCode = [Protocol.Audits.InspectorIssueCode.HeavyAdIssue, issueDetails.reason].join('::');
26
26
  super({code: Protocol.Audits.InspectorIssueCode.HeavyAdIssue, umaCode}, issuesModel);
27
27
  this.#issueDetails = issueDetails;
@@ -60,8 +60,8 @@ export class HeavyAdIssue extends Issue {
60
60
  }
61
61
  }
62
62
 
63
- static fromInspectorIssue(issuesModel: SDK.IssuesModel.IssuesModel, inspectorIssue: Protocol.Audits.InspectorIssue):
64
- HeavyAdIssue[] {
63
+ static fromInspectorIssue(
64
+ issuesModel: SDK.IssuesModel.IssuesModel|null, inspectorIssue: Protocol.Audits.InspectorIssue): HeavyAdIssue[] {
65
65
  const heavyAdIssueDetails = inspectorIssue.details.heavyAdIssueDetails;
66
66
  if (!heavyAdIssueDetails) {
67
67
  console.warn('Heavy Ad issue without details received.');
@@ -40,7 +40,7 @@ export {Events} from './IssuesManagerEvents.js';
40
40
  let issuesManagerInstance: IssuesManager|null = null;
41
41
 
42
42
  function createIssuesForBlockedByResponseIssue(
43
- issuesModel: SDK.IssuesModel.IssuesModel,
43
+ issuesModel: SDK.IssuesModel.IssuesModel|null,
44
44
  inspectorIssue: Protocol.Audits.InspectorIssue): CrossOriginEmbedderPolicyIssue[] {
45
45
  const blockedByResponseIssueDetails = inspectorIssue.details.blockedByResponseIssueDetails;
46
46
  if (!blockedByResponseIssueDetails) {
@@ -55,7 +55,7 @@ function createIssuesForBlockedByResponseIssue(
55
55
 
56
56
  const issueCodeHandlers = new Map<
57
57
  Protocol.Audits.InspectorIssueCode,
58
- (model: SDK.IssuesModel.IssuesModel, inspectorIssue: Protocol.Audits.InspectorIssue) => Issue[]>([
58
+ (model: SDK.IssuesModel.IssuesModel|null, inspectorIssue: Protocol.Audits.InspectorIssue) => Issue[]>([
59
59
  [
60
60
  Protocol.Audits.InspectorIssueCode.CookieIssue,
61
61
  CookieIssue.fromInspectorIssue,
@@ -156,7 +156,7 @@ const issueCodeHandlers = new Map<
156
156
  * Handlers are simple functions hard-coded into a map.
157
157
  */
158
158
  export function createIssuesFromProtocolIssue(
159
- issuesModel: SDK.IssuesModel.IssuesModel, inspectorIssue: Protocol.Audits.InspectorIssue): Issue[] {
159
+ issuesModel: SDK.IssuesModel.IssuesModel|null, inspectorIssue: Protocol.Audits.InspectorIssue): Issue[] {
160
160
  const handler = issueCodeHandlers.get(inspectorIssue.code);
161
161
  if (handler) {
162
162
  return handler(issuesModel, inspectorIssue);
@@ -21,7 +21,8 @@ const i18nString = i18n.i18n.getLocalizedString.bind(undefined, str_);
21
21
  export class LowTextContrastIssue extends Issue {
22
22
  #issueDetails: Protocol.Audits.LowTextContrastIssueDetails;
23
23
 
24
- constructor(issueDetails: Protocol.Audits.LowTextContrastIssueDetails, issuesModel: SDK.IssuesModel.IssuesModel) {
24
+ constructor(
25
+ issueDetails: Protocol.Audits.LowTextContrastIssueDetails, issuesModel: SDK.IssuesModel.IssuesModel|null) {
25
26
  super('LowTextContrastIssue', issuesModel);
26
27
  this.#issueDetails = issueDetails;
27
28
  }
@@ -56,8 +57,9 @@ export class LowTextContrastIssue extends Issue {
56
57
  return IssueKind.IMPROVEMENT;
57
58
  }
58
59
 
59
- static fromInspectorIssue(issuesModel: SDK.IssuesModel.IssuesModel, inspectorIssue: Protocol.Audits.InspectorIssue):
60
- LowTextContrastIssue[] {
60
+ static fromInspectorIssue(
61
+ issuesModel: SDK.IssuesModel.IssuesModel|null,
62
+ inspectorIssue: Protocol.Audits.InspectorIssue): LowTextContrastIssue[] {
61
63
  const lowTextContrastIssueDetails = inspectorIssue.details.lowTextContrastIssueDetails;
62
64
  if (!lowTextContrastIssueDetails) {
63
65
  console.warn('LowTextContrast issue without details received.');
@@ -21,7 +21,7 @@ const i18nString = i18n.i18n.getLocalizedString.bind(undefined, str_);
21
21
  export class MixedContentIssue extends Issue {
22
22
  #issueDetails: Protocol.Audits.MixedContentIssueDetails;
23
23
 
24
- constructor(issueDetails: Protocol.Audits.MixedContentIssueDetails, issuesModel: SDK.IssuesModel.IssuesModel) {
24
+ constructor(issueDetails: Protocol.Audits.MixedContentIssueDetails, issuesModel: SDK.IssuesModel.IssuesModel|null) {
25
25
  super(Protocol.Audits.InspectorIssueCode.MixedContentIssue, issuesModel);
26
26
  this.#issueDetails = issueDetails;
27
27
  }
@@ -64,8 +64,9 @@ export class MixedContentIssue extends Issue {
64
64
  }
65
65
  }
66
66
 
67
- static fromInspectorIssue(issuesModel: SDK.IssuesModel.IssuesModel, inspectorIssue: Protocol.Audits.InspectorIssue):
68
- MixedContentIssue[] {
67
+ static fromInspectorIssue(
68
+ issuesModel: SDK.IssuesModel.IssuesModel|null,
69
+ inspectorIssue: Protocol.Audits.InspectorIssue): MixedContentIssue[] {
69
70
  const mixedContentDetails = inspectorIssue.details.mixedContentIssueDetails;
70
71
  if (!mixedContentDetails) {
71
72
  console.warn('Mixed content issue without details received.');
@@ -26,7 +26,8 @@ const i18nString = i18n.i18n.getLocalizedString.bind(undefined, str_);
26
26
  export class PartitioningBlobURLIssue extends Issue {
27
27
  readonly #issueDetails: Protocol.Audits.PartitioningBlobURLIssueDetails;
28
28
 
29
- constructor(issueDetails: Protocol.Audits.PartitioningBlobURLIssueDetails, issuesModel: SDK.IssuesModel.IssuesModel) {
29
+ constructor(
30
+ issueDetails: Protocol.Audits.PartitioningBlobURLIssueDetails, issuesModel: SDK.IssuesModel.IssuesModel|null) {
30
31
  super(Protocol.Audits.InspectorIssueCode.PartitioningBlobURLIssue, issuesModel);
31
32
  this.#issueDetails = issueDetails;
32
33
  }
@@ -67,8 +68,9 @@ export class PartitioningBlobURLIssue extends Issue {
67
68
  return JSON.stringify(this.#issueDetails);
68
69
  }
69
70
 
70
- static fromInspectorIssue(issuesModel: SDK.IssuesModel.IssuesModel, inspectorIssue: Protocol.Audits.InspectorIssue):
71
- PartitioningBlobURLIssue[] {
71
+ static fromInspectorIssue(
72
+ issuesModel: SDK.IssuesModel.IssuesModel|null,
73
+ inspectorIssue: Protocol.Audits.InspectorIssue): PartitioningBlobURLIssue[] {
72
74
  const details = inspectorIssue.details.partitioningBlobURLIssueDetails;
73
75
  if (!details) {
74
76
  console.warn('Partitioning BlobURL issue without details received.');
@@ -11,7 +11,7 @@ import type {MarkdownIssueDescription} from './MarkdownIssueDescription.js';
11
11
  export class PropertyRuleIssue extends Issue {
12
12
  readonly #issueDetails: Protocol.Audits.PropertyRuleIssueDetails;
13
13
  readonly #primaryKey: string;
14
- constructor(issueDetails: Protocol.Audits.PropertyRuleIssueDetails, issuesModel: SDK.IssuesModel.IssuesModel) {
14
+ constructor(issueDetails: Protocol.Audits.PropertyRuleIssueDetails, issuesModel: SDK.IssuesModel.IssuesModel|null) {
15
15
  const code = JSON.stringify(issueDetails);
16
16
  super(code, issuesModel);
17
17
  this.#primaryKey = code;
@@ -66,8 +66,9 @@ export class PropertyRuleIssue extends Issue {
66
66
  return IssueKind.PAGE_ERROR;
67
67
  }
68
68
 
69
- static fromInspectorIssue(issueModel: SDK.IssuesModel.IssuesModel, inspectorIssue: Protocol.Audits.InspectorIssue):
70
- PropertyRuleIssue[] {
69
+ static fromInspectorIssue(
70
+ issueModel: SDK.IssuesModel.IssuesModel|null,
71
+ inspectorIssue: Protocol.Audits.InspectorIssue): PropertyRuleIssue[] {
71
72
  const propertyRuleIssueDetails = inspectorIssue.details.propertyRuleIssueDetails;
72
73
  if (!propertyRuleIssueDetails) {
73
74
  console.warn('Property rule issue without details received');
@@ -21,7 +21,7 @@ const i18nString = i18n.i18n.getLocalizedString.bind(undefined, str_);
21
21
  export class QuirksModeIssue extends Issue {
22
22
  #issueDetails: Protocol.Audits.QuirksModeIssueDetails;
23
23
 
24
- constructor(issueDetails: Protocol.Audits.QuirksModeIssueDetails, issuesModel: SDK.IssuesModel.IssuesModel) {
24
+ constructor(issueDetails: Protocol.Audits.QuirksModeIssueDetails, issuesModel: SDK.IssuesModel.IssuesModel|null) {
25
25
  const mode = issueDetails.isLimitedQuirksMode ? 'LimitedQuirksMode' : 'QuirksMode';
26
26
  const umaCode = [Protocol.Audits.InspectorIssueCode.QuirksModeIssue, mode].join('::');
27
27
  super({code: Protocol.Audits.InspectorIssueCode.QuirksModeIssue, umaCode}, issuesModel);
@@ -56,8 +56,9 @@ export class QuirksModeIssue extends Issue {
56
56
  return IssueKind.IMPROVEMENT;
57
57
  }
58
58
 
59
- static fromInspectorIssue(issuesModel: SDK.IssuesModel.IssuesModel, inspectorIssue: Protocol.Audits.InspectorIssue):
60
- QuirksModeIssue[] {
59
+ static fromInspectorIssue(
60
+ issuesModel: SDK.IssuesModel.IssuesModel|null,
61
+ inspectorIssue: Protocol.Audits.InspectorIssue): QuirksModeIssue[] {
61
62
  const quirksModeIssueDetails = inspectorIssue.details.quirksModeIssueDetails;
62
63
  if (!quirksModeIssueDetails) {
63
64
  console.warn('Quirks Mode issue without details received.');
@@ -44,7 +44,8 @@ function generateGroupingIssueCode(details: Protocol.Audits.SRIMessageSignatureI
44
44
  export class SRIMessageSignatureIssue extends Issue<string> {
45
45
  readonly #issueDetails: Protocol.Audits.SRIMessageSignatureIssueDetails;
46
46
 
47
- constructor(issueDetails: Protocol.Audits.SRIMessageSignatureIssueDetails, issuesModel: SDK.IssuesModel.IssuesModel) {
47
+ constructor(
48
+ issueDetails: Protocol.Audits.SRIMessageSignatureIssueDetails, issuesModel: SDK.IssuesModel.IssuesModel|null) {
48
49
  super(
49
50
  {
50
51
  code: generateGroupingIssueCode(issueDetails),
@@ -102,8 +103,9 @@ export class SRIMessageSignatureIssue extends Issue<string> {
102
103
  return this.details().request ? [this.details().request] : [];
103
104
  }
104
105
 
105
- static fromInspectorIssue(issuesModel: SDK.IssuesModel.IssuesModel, inspectorIssue: Protocol.Audits.InspectorIssue):
106
- SRIMessageSignatureIssue[] {
106
+ static fromInspectorIssue(
107
+ issuesModel: SDK.IssuesModel.IssuesModel|null,
108
+ inspectorIssue: Protocol.Audits.InspectorIssue): SRIMessageSignatureIssue[] {
107
109
  const details = inspectorIssue.details.sriMessageSignatureIssueDetails;
108
110
  if (!details) {
109
111
  console.warn('SRI Message Signature issue without details received.');
@@ -22,7 +22,8 @@ const i18nString = i18n.i18n.getLocalizedString.bind(undefined, str_);
22
22
  export class SharedArrayBufferIssue extends Issue {
23
23
  #issueDetails: Protocol.Audits.SharedArrayBufferIssueDetails;
24
24
 
25
- constructor(issueDetails: Protocol.Audits.SharedArrayBufferIssueDetails, issuesModel: SDK.IssuesModel.IssuesModel) {
25
+ constructor(
26
+ issueDetails: Protocol.Audits.SharedArrayBufferIssueDetails, issuesModel: SDK.IssuesModel.IssuesModel|null) {
26
27
  const umaCode = [Protocol.Audits.InspectorIssueCode.SharedArrayBufferIssue, issueDetails.type].join('::');
27
28
  super({code: Protocol.Audits.InspectorIssueCode.SharedArrayBufferIssue, umaCode}, issuesModel);
28
29
  this.#issueDetails = issueDetails;
@@ -57,8 +58,9 @@ export class SharedArrayBufferIssue extends Issue {
57
58
  return IssueKind.PAGE_ERROR;
58
59
  }
59
60
 
60
- static fromInspectorIssue(issuesModel: SDK.IssuesModel.IssuesModel, inspectorIssue: Protocol.Audits.InspectorIssue):
61
- SharedArrayBufferIssue[] {
61
+ static fromInspectorIssue(
62
+ issuesModel: SDK.IssuesModel.IssuesModel|null,
63
+ inspectorIssue: Protocol.Audits.InspectorIssue): SharedArrayBufferIssue[] {
62
64
  const sabIssueDetails = inspectorIssue.details.sharedArrayBufferIssueDetails;
63
65
  if (!sabIssueDetails) {
64
66
  console.warn('SAB transfer issue without details received.');
@@ -111,7 +111,8 @@ function getIssueCode(details: Protocol.Audits.SharedDictionaryIssueDetails): Is
111
111
  export class SharedDictionaryIssue extends Issue {
112
112
  readonly #issueDetails: Protocol.Audits.SharedDictionaryIssueDetails;
113
113
 
114
- constructor(issueDetails: Protocol.Audits.SharedDictionaryIssueDetails, issuesModel: SDK.IssuesModel.IssuesModel) {
114
+ constructor(
115
+ issueDetails: Protocol.Audits.SharedDictionaryIssueDetails, issuesModel: SDK.IssuesModel.IssuesModel|null) {
115
116
  super(
116
117
  {
117
118
  code: getIssueCode(issueDetails),
@@ -155,8 +156,9 @@ export class SharedDictionaryIssue extends Issue {
155
156
  return IssueKind.PAGE_ERROR;
156
157
  }
157
158
 
158
- static fromInspectorIssue(issuesModel: SDK.IssuesModel.IssuesModel, inspectorIssue: Protocol.Audits.InspectorIssue):
159
- SharedDictionaryIssue[] {
159
+ static fromInspectorIssue(
160
+ issuesModel: SDK.IssuesModel.IssuesModel|null,
161
+ inspectorIssue: Protocol.Audits.InspectorIssue): SharedDictionaryIssue[] {
160
162
  const details = inspectorIssue.details.sharedDictionaryIssueDetails;
161
163
  if (!details) {
162
164
  console.warn('Shared Dictionary issue without details received.');