chrome-devtools-frontend 1.0.1646714 → 1.0.1650035

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 (48) hide show
  1. package/extension-api/ExtensionAPI.d.ts +26 -0
  2. package/front_end/core/common/Debouncer.ts +9 -1
  3. package/front_end/core/sdk/CSSMatchedStyles.ts +3 -1
  4. package/front_end/core/sdk/CSSMetadata.ts +20 -1
  5. package/front_end/core/sdk/CSSPropertyParserMatchers.ts +65 -0
  6. package/front_end/entrypoints/heap_snapshot_worker/HeapSnapshot.ts +15 -0
  7. package/front_end/generated/Deprecation.ts +8 -0
  8. package/front_end/generated/InspectorBackendCommands.ts +3 -2
  9. package/front_end/generated/SupportedCSSProperties.js +533 -19
  10. package/front_end/generated/protocol.ts +26 -4
  11. package/front_end/models/ai_assistance/agents/AiAgent.ts +8 -1
  12. package/front_end/models/ai_assistance/agents/PerformanceAgent.ts +7 -0
  13. package/front_end/models/extensions/ExtensionAPI.ts +47 -21
  14. package/front_end/models/javascript_metadata/NativeFunctions.js +7 -3
  15. package/front_end/panels/ai_assistance/AiAssistancePanel.ts +39 -1
  16. package/front_end/panels/ai_assistance/ai_assistance.ts +1 -0
  17. package/front_end/panels/ai_assistance/components/AIv2MarkdownRenderer.ts +228 -0
  18. package/front_end/panels/ai_assistance/components/ChatMessage.ts +39 -2
  19. package/front_end/panels/application/ApplicationPanelSidebar.ts +4 -0
  20. package/front_end/panels/application/CookieItemsView.ts +55 -6
  21. package/front_end/panels/application/DOMStorageItemsView.ts +43 -8
  22. package/front_end/panels/application/KeyValueStorageItemsView.ts +17 -9
  23. package/front_end/panels/console/ConsolePinPane.ts +1 -0
  24. package/front_end/panels/elements/ElementsTreeElement.ts +97 -57
  25. package/front_end/panels/elements/StylePropertyTreeElement.ts +73 -16
  26. package/front_end/panels/elements/StylesAiCodeCompletionProvider.ts +9 -1
  27. package/front_end/panels/elements/StylesSidebarPane.ts +22 -8
  28. package/front_end/panels/layer_viewer/PaintProfilerView.ts +309 -182
  29. package/front_end/panels/layer_viewer/paintProfiler.css +27 -23
  30. package/front_end/panels/layers/LayerPaintProfilerView.ts +86 -29
  31. package/front_end/panels/profiler/HeapSnapshotView.ts +6 -0
  32. package/front_end/panels/sources/WatchExpressionsSidebarPane.ts +210 -356
  33. package/front_end/panels/sources/watchExpressionsSidebarPane.css +7 -0
  34. package/front_end/panels/timeline/TimelinePaintProfilerView.ts +5 -5
  35. package/front_end/panels/timeline/components/NetworkTrackWidget.ts +122 -0
  36. package/front_end/panels/timeline/components/components.ts +2 -0
  37. package/front_end/panels/timeline/components/networkTrackWidget.css +31 -0
  38. package/front_end/panels/timeline/timeline.ts +2 -0
  39. package/front_end/third_party/chromium/README.chromium +1 -1
  40. package/front_end/ui/components/buttons/FloatingButton.ts +17 -2
  41. package/front_end/ui/components/buttons/floatingButton.css +2 -2
  42. package/front_end/ui/components/text_editor/AiCodeCompletionProvider.ts +1 -1
  43. package/front_end/ui/legacy/TextPrompt.ts +24 -18
  44. package/front_end/ui/legacy/Treeoutline.ts +31 -4
  45. package/front_end/ui/legacy/components/cookie_table/CookiesTable.ts +50 -24
  46. package/front_end/ui/legacy/components/source_frame/SourceFrame.ts +10 -10
  47. package/front_end/ui/visual_logging/KnownContextValues.ts +5 -0
  48. package/package.json +1 -1
@@ -178,6 +178,20 @@ export namespace Chrome {
178
178
  }
179
179
 
180
180
  export interface Request {
181
+ /**
182
+ * Retrieves the content of the request.
183
+ *
184
+ * If a `callback` is provided, it is invoked with the content and encoding
185
+ * and the method returns `void`. If no `callback` is provided, the method
186
+ * returns a `Promise`.
187
+ *
188
+ * @param callback Optional callback to be invoked with the content and
189
+ * encoding.
190
+ * @returns A Promise that resolves to an object containing the content and
191
+ * encoding if no callback is provided, otherwise void. Rejects with an
192
+ * error object on failure.
193
+ */
194
+ getContent(): Promise<{content: string, encoding: string}>;
181
195
  getContent(callback: (content: string, encoding: string) => unknown): void;
182
196
  }
183
197
 
@@ -185,6 +199,18 @@ export namespace Chrome {
185
199
  onNavigated: EventSink<(url: string) => unknown>;
186
200
  onRequestFinished: EventSink<(request: Request) => unknown>;
187
201
 
202
+ /**
203
+ * Retrieves the HAR log that contains all network requests.
204
+ *
205
+ * If a `callback` is provided, it is invoked with the HAR log object
206
+ * and the method returns `void`. If no `callback` is provided, the method
207
+ * returns a `Promise`.
208
+ *
209
+ * @param callback Optional callback to be invoked with the HAR log.
210
+ * @returns A Promise that resolves to the HAR log if no callback is
211
+ * provided, otherwise void. Rejects with an error object on failure.
212
+ */
213
+ getHAR(): Promise<object>;
188
214
  getHAR(callback: (harLog: object) => unknown): void;
189
215
  }
190
216
 
@@ -5,12 +5,20 @@
5
5
  /**
6
6
  * Debounce utility function, ensures that the function passed in is only called once the function stops being called and the delay has expired.
7
7
  */
8
- export const debounce = function(func: (...args: any[]) => void, delay: number): (...args: any[]) => void {
8
+ export const debounce = function(
9
+ func: (...args: any[]) => void,
10
+ delay: number,
11
+ ): ((...args: any[]) => void)&{
12
+ cancel: () => void,
13
+ } {
9
14
  let timer: ReturnType<typeof setTimeout>;
10
15
  const debounced = (...args: any[]): void => {
11
16
  clearTimeout(timer);
12
17
  timer = setTimeout(() => func(...args), testDebounceOverride ? 0 : delay);
13
18
  };
19
+ debounced.cancel = () => {
20
+ clearTimeout(timer);
21
+ };
14
22
  return debounced;
15
23
  };
16
24
 
@@ -39,7 +39,8 @@ import {
39
39
  ShadowMatcher,
40
40
  StringMatcher,
41
41
  URLMatcher,
42
- VariableMatcher
42
+ VariableMatcher,
43
+ VariableNameMatcher
43
44
  } from './CSSPropertyParserMatchers.js';
44
45
  import {
45
46
  CSSAtRule,
@@ -979,6 +980,7 @@ export class CSSMatchedStyles {
979
980
  propertyMatchers(style: CSSStyleDeclaration, computedStyles: Map<string, string>|null): Array<Matcher<Match>> {
980
981
  return [
981
982
  new VariableMatcher(this, style),
983
+ new VariableNameMatcher(this, style),
982
984
  new ColorMatcher(() => computedStyles?.get('color') ?? null),
983
985
  new ColorMixMatcher(),
984
986
  new ContrastColorMatcher(),
@@ -55,6 +55,11 @@ export class CSSMetadata {
55
55
  for (let i = 0; i < properties.length; ++i) {
56
56
  const property = properties[i];
57
57
  const propertyName = property.name;
58
+ if ('is_descriptor' in property && 'is_property' in property) {
59
+ if (property.is_descriptor && !property.is_property) {
60
+ continue;
61
+ }
62
+ }
58
63
  if (!CSS.supports(propertyName, 'initial')) {
59
64
  continue;
60
65
  }
@@ -99,9 +104,18 @@ export class CSSMetadata {
99
104
  propertyValueSets.set(propertyName, extraValues);
100
105
  }
101
106
  }
102
- // finally add common keywords to value sets and convert property #values
107
+ // finally add keywords from alias property, common keywords to value sets and convert property #values
103
108
  // into arrays since callers expect arrays
104
109
  for (const [propertyName, values] of propertyValueSets) {
110
+ const aliasFor = this.#aliasesFor.get(propertyName);
111
+ if (aliasFor) {
112
+ const aliasForValues = propertyValueSets.get(aliasFor);
113
+ if (aliasForValues) {
114
+ for (const val of aliasForValues) {
115
+ values.add(val);
116
+ }
117
+ }
118
+ }
105
119
  for (const commonKeyword of CommonKeywords) {
106
120
  if (!values.has(commonKeyword) && CSS.supports(propertyName, commonKeyword)) {
107
121
  values.add(commonKeyword);
@@ -1409,6 +1423,7 @@ const extraPropertyValues = new Map<string, Set<string>>([
1409
1423
  'superellipse(infinity)',
1410
1424
  ]),
1411
1425
  ],
1426
+ ['outline-style', new Set(['auto'])],
1412
1427
  ]);
1413
1428
 
1414
1429
  // Weight of CSS properties based on their usage from https://www.chromestatus.com/metrics/css/popularity
@@ -1674,4 +1689,8 @@ export interface CSSPropertyDefinition {
1674
1689
  longhands: string[]|null;
1675
1690
  inherited: boolean|null;
1676
1691
  svg: boolean|null;
1692
+ // eslint-disable-next-line @typescript-eslint/naming-convention
1693
+ is_descriptor?: boolean;
1694
+ // eslint-disable-next-line @typescript-eslint/naming-convention
1695
+ is_property?: boolean;
1677
1696
  }
@@ -130,6 +130,71 @@ export class VariableMatcher extends matcherBase(VariableMatch) {
130
130
  }
131
131
  }
132
132
 
133
+ export class VariableNameMatch implements Match {
134
+ constructor(
135
+ readonly node: CodeMirror.SyntaxNode,
136
+ readonly text: string,
137
+ readonly matchedStyles: CSSMatchedStyles,
138
+ readonly style: CSSStyleDeclaration,
139
+ ) {
140
+ }
141
+
142
+ resolveVariable(): CSSVariableValue|null {
143
+ return this.matchedStyles.computeCSSVariable(this.style, this.text);
144
+ }
145
+ }
146
+
147
+ // clang-format off
148
+ export class VariableNameMatcher extends matcherBase(VariableNameMatch) {
149
+ // clang-format on
150
+ constructor(readonly matchedStyles: CSSMatchedStyles, readonly style: CSSStyleDeclaration) {
151
+ super();
152
+ }
153
+
154
+ override accepts(): boolean {
155
+ return true;
156
+ }
157
+
158
+ override matches(node: CodeMirror.SyntaxNode, matching: BottomUpTreeMatching): VariableNameMatch|null {
159
+ if (node.name !== 'VariableName' && node.name !== 'FeatureName' && node.name !== 'KeywordQuery') {
160
+ // TODO(b/484268589): The result shouldn't be KeywordQuery, but currently
161
+ // sometimes Lezer parses it that way. Fix this when Lezer is fixed.
162
+ return null;
163
+ }
164
+ const rawText = matching.ast.text(node);
165
+ if (!rawText.startsWith('--')) {
166
+ return null;
167
+ }
168
+
169
+ let cur: CodeMirror.SyntaxNode|null = node.parent;
170
+ let foundStyleCall: CodeMirror.SyntaxNode|null = null;
171
+ while (cur) {
172
+ if (cur.name === 'CallExpression') {
173
+ return null;
174
+ }
175
+ if (cur.name === 'CallQuery') {
176
+ const callee = cur.getChild('QueryCallee');
177
+ if (callee && matching.ast.text(callee) === 'style') {
178
+ foundStyleCall = cur;
179
+ break;
180
+ }
181
+ return null;
182
+ }
183
+ cur = cur.parent;
184
+ }
185
+
186
+ if (!foundStyleCall) {
187
+ return null;
188
+ }
189
+
190
+ // When parsing style(--foo > 10px), Lezer thinks it is a KeywordQuery and
191
+ // includes the > in the token with --foo. We need to strip it.
192
+ const text = node.name === 'KeywordQuery' ? rawText.split(/\s|[>!=<:]/)[0] : rawText;
193
+
194
+ return new VariableNameMatch(node, text, this.matchedStyles, this.style);
195
+ }
196
+ }
197
+
133
198
  export class AttributeMatch extends BaseVariableMatch {
134
199
  constructor(
135
200
  text: string,
@@ -1382,6 +1382,12 @@ export abstract class HeapSnapshot {
1382
1382
  };
1383
1383
 
1384
1384
  switch (filterName) {
1385
+ case 'objectsRetainedByContexts':
1386
+ traverse((_node: HeapSnapshotNode, edge: HeapSnapshotEdge) => {
1387
+ return !this.isContextObject(edge.node());
1388
+ });
1389
+ markUnreachableNodes();
1390
+ return (node: HeapSnapshotNode) => !getBit(node);
1385
1391
  case 'objectsRetainedByDetachedDomNodes':
1386
1392
  // Traverse the graph, avoiding detached nodes.
1387
1393
  traverse((_node: HeapSnapshotNode, edge: HeapSnapshotEdge) => {
@@ -1581,6 +1587,10 @@ export abstract class HeapSnapshot {
1581
1587
  return true;
1582
1588
  }
1583
1589
 
1590
+ isContextObject(_node: HeapSnapshotNode): boolean {
1591
+ return false;
1592
+ }
1593
+
1584
1594
  calculateShallowSizes(): void {
1585
1595
  }
1586
1596
 
@@ -3684,6 +3694,11 @@ export class JSHeapSnapshot extends HeapSnapshot {
3684
3694
  return node.isUserRoot() || node.isDocumentDOMTreesRoot();
3685
3695
  }
3686
3696
 
3697
+ override isContextObject(node: HeapSnapshotNode): boolean {
3698
+ const name = node.rawName();
3699
+ return name === 'system / Context' || name.startsWith('system / Context / ');
3700
+ }
3701
+
3687
3702
  override userObjectsMapAndFlag(): {map: Uint8Array, flag: number}|null {
3688
3703
  return {map: this.flags, flag: this.nodeFlags.pageObject};
3689
3704
  }
@@ -54,6 +54,10 @@ export const UIStrings = {
54
54
  * @description Warning displayed to developers when a data: URL is assigned to SVGUseElement to let them know that the support is deprecated.
55
55
  */
56
56
  DataUrlInSvgUse: "Support for data: URLs in SVGUseElement is deprecated and it will be removed in the future.",
57
+ /**
58
+ * @description Warning displayed to developers when an unknown protocol string is used in a call to navigator.credentials.get() or create() with the 'digital' option.
59
+ */
60
+ DigitalCredentialsUnknownProtocol: "An unknown Digital Credentials protocol was requested in navigator.credentials.get() or create(). In a future release, unrecognized protocols will be blocked.",
57
61
  /**
58
62
  * @description Warning displayed to developers when document.createEvent() is called with 'KeyboardEvents', which is a non-standard event interface that will be removed.
59
63
  */
@@ -333,6 +337,10 @@ export const DEPRECATIONS_METADATA: Partial<Record<string, DeprecationDescriptor
333
337
  "chromeStatusFeature": 5128825141198848,
334
338
  "milestone": 119
335
339
  },
340
+ "DigitalCredentialsUnknownProtocol": {
341
+ "chromeStatusFeature": 6492906882990080,
342
+ "milestone": 160
343
+ },
336
344
  "DocumentCreateEventKeyboardEvents": {
337
345
  "chromeStatusFeature": 5095987863486464,
338
346
  "milestone": 151
@@ -291,7 +291,8 @@ inspectorBackend.registerType("CSS.InheritedAnimatedStyleEntry", [{"name": "anim
291
291
  inspectorBackend.registerType("CSS.InheritedPseudoElementMatches", [{"name": "pseudoElements", "type": "array", "optional": false, "description": "Matches of pseudo styles from the pseudos of an ancestor node.", "typeRef": "CSS.PseudoElementMatches"}]);
292
292
  inspectorBackend.registerType("CSS.RuleMatch", [{"name": "rule", "type": "object", "optional": false, "description": "CSS rule in the match.", "typeRef": "CSS.CSSRule"}, {"name": "matchingSelectors", "type": "array", "optional": false, "description": "Matching selector indices in the rule's selectorList selectors (0-based).", "typeRef": "integer"}]);
293
293
  inspectorBackend.registerType("CSS.Value", [{"name": "text", "type": "string", "optional": false, "description": "Value text.", "typeRef": null}, {"name": "range", "type": "object", "optional": true, "description": "Value range in the underlying resource (if available).", "typeRef": "CSS.SourceRange"}, {"name": "specificity", "type": "object", "optional": true, "description": "Specificity of the selector.", "typeRef": "CSS.Specificity"}]);
294
- inspectorBackend.registerType("CSS.Specificity", [{"name": "a", "type": "number", "optional": false, "description": "The a component, which represents the number of ID selectors.", "typeRef": null}, {"name": "b", "type": "number", "optional": false, "description": "The b component, which represents the number of class selectors, attributes selectors, and pseudo-classes.", "typeRef": null}, {"name": "c", "type": "number", "optional": false, "description": "The c component, which represents the number of type selectors and pseudo-elements.", "typeRef": null}]);
294
+ inspectorBackend.registerType("CSS.SpecificityComponent", [{"name": "text", "type": "string", "optional": false, "description": "The simple selector text that contributes to specificity.", "typeRef": null}, {"name": "a", "type": "number", "optional": false, "description": "The a component contribution.", "typeRef": null}, {"name": "b", "type": "number", "optional": false, "description": "The b component contribution.", "typeRef": null}, {"name": "c", "type": "number", "optional": false, "description": "The c component contribution.", "typeRef": null}]);
295
+ inspectorBackend.registerType("CSS.Specificity", [{"name": "a", "type": "number", "optional": false, "description": "The a component, which represents the number of ID selectors.", "typeRef": null}, {"name": "b", "type": "number", "optional": false, "description": "The b component, which represents the number of class selectors, attributes selectors, and pseudo-classes.", "typeRef": null}, {"name": "c", "type": "number", "optional": false, "description": "The c component, which represents the number of type selectors and pseudo-elements.", "typeRef": null}, {"name": "components", "type": "array", "optional": true, "description": "Per-simple-selector contributions used to explain this specificity.", "typeRef": "CSS.SpecificityComponent"}]);
295
296
  inspectorBackend.registerType("CSS.SelectorList", [{"name": "selectors", "type": "array", "optional": false, "description": "Selectors in the list.", "typeRef": "CSS.Value"}, {"name": "text", "type": "string", "optional": false, "description": "Rule selector text.", "typeRef": null}]);
296
297
  inspectorBackend.registerType("CSS.CSSStyleSheetHeader", [{"name": "styleSheetId", "type": "string", "optional": false, "description": "The stylesheet identifier.", "typeRef": "DOM.StyleSheetId"}, {"name": "frameId", "type": "string", "optional": false, "description": "Owner frame identifier.", "typeRef": "Page.FrameId"}, {"name": "sourceURL", "type": "string", "optional": false, "description": "Stylesheet resource URL. Empty if this is a constructed stylesheet created using new CSSStyleSheet() (but non-empty if this is a constructed stylesheet imported as a CSS module script).", "typeRef": null}, {"name": "sourceMapURL", "type": "string", "optional": true, "description": "URL of source map associated with the stylesheet (if any).", "typeRef": null}, {"name": "origin", "type": "string", "optional": false, "description": "Stylesheet origin.", "typeRef": "CSS.StyleSheetOrigin"}, {"name": "title", "type": "string", "optional": false, "description": "Stylesheet title.", "typeRef": null}, {"name": "ownerNode", "type": "number", "optional": true, "description": "The backend id for the owner node of the stylesheet.", "typeRef": "DOM.BackendNodeId"}, {"name": "disabled", "type": "boolean", "optional": false, "description": "Denotes whether the stylesheet is disabled.", "typeRef": null}, {"name": "hasSourceURL", "type": "boolean", "optional": true, "description": "Whether the sourceURL field value comes from the sourceURL comment.", "typeRef": null}, {"name": "isInline", "type": "boolean", "optional": false, "description": "Whether this stylesheet is created for STYLE tag by parser. This flag is not set for document.written STYLE tags.", "typeRef": null}, {"name": "isMutable", "type": "boolean", "optional": false, "description": "Whether this stylesheet is mutable. Inline stylesheets become mutable after they have been modified via CSSOM API. `<link>` element's stylesheets become mutable only if DevTools modifies them. Constructed stylesheets (new CSSStyleSheet()) are mutable immediately after creation.", "typeRef": null}, {"name": "isConstructed", "type": "boolean", "optional": false, "description": "True if this stylesheet is created through new CSSStyleSheet() or imported as a CSS module script.", "typeRef": null}, {"name": "startLine", "type": "number", "optional": false, "description": "Line offset of the stylesheet within the resource (zero based).", "typeRef": null}, {"name": "startColumn", "type": "number", "optional": false, "description": "Column offset of the stylesheet within the resource (zero based).", "typeRef": null}, {"name": "length", "type": "number", "optional": false, "description": "Size of the content (in characters).", "typeRef": null}, {"name": "endLine", "type": "number", "optional": false, "description": "Line offset of the end of the stylesheet within the resource (zero based).", "typeRef": null}, {"name": "endColumn", "type": "number", "optional": false, "description": "Column offset of the end of the stylesheet within the resource (zero based).", "typeRef": null}, {"name": "loadingFailed", "type": "boolean", "optional": true, "description": "If the style sheet was loaded from a network resource, this indicates when the resource failed to load", "typeRef": null}]);
297
298
  inspectorBackend.registerType("CSS.CSSRule", [{"name": "styleSheetId", "type": "string", "optional": true, "description": "The css style sheet identifier (absent for user agent stylesheet and user-specified stylesheet rules) this rule came from.", "typeRef": "DOM.StyleSheetId"}, {"name": "selectorList", "type": "object", "optional": false, "description": "Rule selector data.", "typeRef": "CSS.SelectorList"}, {"name": "nestingSelectors", "type": "array", "optional": true, "description": "Array of selectors from ancestor style rules, sorted by distance from the current rule.", "typeRef": "string"}, {"name": "origin", "type": "string", "optional": false, "description": "Parent stylesheet's origin.", "typeRef": "CSS.StyleSheetOrigin"}, {"name": "style", "type": "object", "optional": false, "description": "Associated style declaration.", "typeRef": "CSS.CSSStyle"}, {"name": "originTreeScopeNodeId", "type": "number", "optional": true, "description": "The BackendNodeId of the DOM node that constitutes the origin tree scope of this rule.", "typeRef": "DOM.BackendNodeId"}, {"name": "media", "type": "array", "optional": true, "description": "Media list array (for rules involving media queries). The array enumerates media queries starting with the innermost one, going outwards.", "typeRef": "CSS.CSSMedia"}, {"name": "containerQueries", "type": "array", "optional": true, "description": "Container query list array (for rules involving container queries). The array enumerates container queries starting with the innermost one, going outwards.", "typeRef": "CSS.CSSContainerQuery"}, {"name": "supports", "type": "array", "optional": true, "description": "@supports CSS at-rule array. The array enumerates @supports at-rules starting with the innermost one, going outwards.", "typeRef": "CSS.CSSSupports"}, {"name": "layers", "type": "array", "optional": true, "description": "Cascade layer array. Contains the layer hierarchy that this rule belongs to starting with the innermost layer and going outwards.", "typeRef": "CSS.CSSLayer"}, {"name": "scopes", "type": "array", "optional": true, "description": "@scope CSS at-rule array. The array enumerates @scope at-rules starting with the innermost one, going outwards.", "typeRef": "CSS.CSSScope"}, {"name": "ruleTypes", "type": "array", "optional": true, "description": "The array keeps the types of ancestor CSSRules from the innermost going outwards.", "typeRef": "CSS.CSSRuleType"}, {"name": "startingStyles", "type": "array", "optional": true, "description": "@starting-style CSS at-rule array. The array enumerates @starting-style at-rules starting with the innermost one, going outwards.", "typeRef": "CSS.CSSStartingStyle"}, {"name": "navigations", "type": "array", "optional": true, "description": "@navigation CSS at-rule array. The array enumerates @navigation at-rules starting with the innermost one, going outwards.", "typeRef": "CSS.CSSNavigation"}]);
@@ -798,7 +799,7 @@ inspectorBackend.registerEnum("Network.ServiceWorkerRouterSource", {Network: "ne
798
799
  inspectorBackend.registerEnum("Network.InitiatorType", {Parser: "parser", Script: "script", Preload: "preload", SignedExchange: "SignedExchange", Preflight: "preflight", FedCM: "FedCM", Other: "other"});
799
800
  inspectorBackend.registerEnum("Network.SetCookieBlockedReason", {SecureOnly: "SecureOnly", SameSiteStrict: "SameSiteStrict", SameSiteLax: "SameSiteLax", SameSiteUnspecifiedTreatedAsLax: "SameSiteUnspecifiedTreatedAsLax", SameSiteNoneInsecure: "SameSiteNoneInsecure", UserPreferences: "UserPreferences", ThirdPartyPhaseout: "ThirdPartyPhaseout", ThirdPartyBlockedInFirstPartySet: "ThirdPartyBlockedInFirstPartySet", SyntaxError: "SyntaxError", SchemeNotSupported: "SchemeNotSupported", OverwriteSecure: "OverwriteSecure", InvalidDomain: "InvalidDomain", InvalidPrefix: "InvalidPrefix", UnknownError: "UnknownError", SchemefulSameSiteStrict: "SchemefulSameSiteStrict", SchemefulSameSiteLax: "SchemefulSameSiteLax", SchemefulSameSiteUnspecifiedTreatedAsLax: "SchemefulSameSiteUnspecifiedTreatedAsLax", NameValuePairExceedsMaxSize: "NameValuePairExceedsMaxSize", DisallowedCharacter: "DisallowedCharacter", NoCookieContent: "NoCookieContent"});
800
801
  inspectorBackend.registerEnum("Network.CookieBlockedReason", {SecureOnly: "SecureOnly", NotOnPath: "NotOnPath", DomainMismatch: "DomainMismatch", SameSiteStrict: "SameSiteStrict", SameSiteLax: "SameSiteLax", SameSiteUnspecifiedTreatedAsLax: "SameSiteUnspecifiedTreatedAsLax", SameSiteNoneInsecure: "SameSiteNoneInsecure", UserPreferences: "UserPreferences", ThirdPartyPhaseout: "ThirdPartyPhaseout", ThirdPartyBlockedInFirstPartySet: "ThirdPartyBlockedInFirstPartySet", UnknownError: "UnknownError", SchemefulSameSiteStrict: "SchemefulSameSiteStrict", SchemefulSameSiteLax: "SchemefulSameSiteLax", SchemefulSameSiteUnspecifiedTreatedAsLax: "SchemefulSameSiteUnspecifiedTreatedAsLax", NameValuePairExceedsMaxSize: "NameValuePairExceedsMaxSize", PortMismatch: "PortMismatch", SchemeMismatch: "SchemeMismatch", AnonymousContext: "AnonymousContext"});
801
- inspectorBackend.registerEnum("Network.CookieExemptionReason", {None: "None", UserSetting: "UserSetting", TPCDMetadata: "TPCDMetadata", TPCDDeprecationTrial: "TPCDDeprecationTrial", TopLevelTPCDDeprecationTrial: "TopLevelTPCDDeprecationTrial", TPCDHeuristics: "TPCDHeuristics", EnterprisePolicy: "EnterprisePolicy", StorageAccess: "StorageAccess", TopLevelStorageAccess: "TopLevelStorageAccess", Scheme: "Scheme", SameSiteNoneCookiesInSandbox: "SameSiteNoneCookiesInSandbox"});
802
+ inspectorBackend.registerEnum("Network.CookieExemptionReason", {None: "None", UserSetting: "UserSetting", EnterprisePolicy: "EnterprisePolicy", StorageAccess: "StorageAccess", TopLevelStorageAccess: "TopLevelStorageAccess", Scheme: "Scheme", SameSiteNoneCookiesInSandbox: "SameSiteNoneCookiesInSandbox"});
802
803
  inspectorBackend.registerEnum("Network.AuthChallengeSource", {Server: "Server", Proxy: "Proxy"});
803
804
  inspectorBackend.registerEnum("Network.AuthChallengeResponseResponse", {Default: "Default", CancelAuth: "CancelAuth", ProvideCredentials: "ProvideCredentials"});
804
805
  inspectorBackend.registerEnum("Network.InterceptionStage", {Request: "Request", HeadersReceived: "HeadersReceived"});