chrome-devtools-frontend 1.0.1583146 → 1.0.1585538

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 (112) hide show
  1. package/front_end/core/host/InspectorFrontendHostAPI.ts +1 -0
  2. package/front_end/core/host/InspectorFrontendHostStub.ts +2 -0
  3. package/front_end/core/root/Runtime.ts +12 -6
  4. package/front_end/core/sdk/CSSMatchedStyles.ts +3 -0
  5. package/front_end/core/sdk/CSSMetadata.ts +3 -0
  6. package/front_end/entrypoints/main/MainImpl.ts +1 -0
  7. package/front_end/generated/Deprecation.ts +21 -0
  8. package/front_end/generated/InspectorBackendCommands.ts +5 -3
  9. package/front_end/generated/SupportedCSSProperties.js +6 -2
  10. package/front_end/generated/protocol-mapping.d.ts +2 -1
  11. package/front_end/generated/protocol-proxy-api.d.ts +2 -1
  12. package/front_end/generated/protocol.ts +14 -0
  13. package/front_end/models/ai_assistance/AiConversation.ts +34 -2
  14. package/front_end/models/ai_assistance/BuiltInAi.ts +1 -2
  15. package/front_end/models/ai_assistance/agents/AiAgent.ts +3 -10
  16. package/front_end/models/ai_assistance/agents/ContextSelectionAgent.snapshot.txt +1 -1
  17. package/front_end/models/ai_assistance/agents/ContextSelectionAgent.ts +17 -9
  18. package/front_end/models/ai_assistance/agents/StylingAgent.snapshot.txt +0 -24
  19. package/front_end/models/ai_code_generation/AiCodeGeneration.ts +5 -0
  20. package/front_end/models/bindings/DebuggerWorkspaceBinding.ts +16 -8
  21. package/front_end/models/computed_style/ComputedStyleModel.ts +20 -15
  22. package/front_end/models/greendev/Prototypes.ts +1 -5
  23. package/front_end/models/issues_manager/CorsIssue.ts +2 -9
  24. package/front_end/models/issues_manager/descriptions/corsLocalNetworkAccessPermissionDenied.md +2 -2
  25. package/front_end/models/javascript_metadata/NativeFunctions.js +20 -0
  26. package/front_end/panels/ai_assistance/AiAssistancePanel.ts +13 -36
  27. package/front_end/panels/ai_assistance/components/ChatInput.ts +73 -95
  28. package/front_end/panels/ai_assistance/components/ChatView.ts +0 -2
  29. package/front_end/panels/common/AiCodeGenerationTeaser.ts +10 -0
  30. package/front_end/panels/console/ConsoleView.ts +1 -2
  31. package/front_end/panels/console/ConsoleViewMessage.ts +18 -11
  32. package/front_end/panels/elements/ComputedStyleWidget.ts +41 -21
  33. package/front_end/panels/elements/ElementsPanel.ts +18 -5
  34. package/front_end/panels/elements/ElementsTreeElement.ts +27 -64
  35. package/front_end/panels/elements/NodeStackTraceWidget.ts +1 -3
  36. package/front_end/panels/elements/computedStyleWidget.css +1 -6
  37. package/front_end/panels/issues/AffectedResourcesView.ts +1 -2
  38. package/front_end/panels/network/NetworkDataGridNode.ts +0 -8
  39. package/front_end/panels/network/RequestConditionsDrawer.ts +138 -112
  40. package/front_end/panels/settings/SettingsScreen.ts +12 -4
  41. package/front_end/panels/snippets/SnippetsQuickOpen.ts +6 -9
  42. package/front_end/panels/sources/CallStackSidebarPane.ts +4 -6
  43. package/front_end/panels/sources/DebuggerPlugin.ts +2 -1
  44. package/front_end/panels/sources/GoToLineQuickOpen.ts +0 -4
  45. package/front_end/panels/sources/OpenFileQuickOpen.ts +0 -4
  46. package/front_end/panels/sources/OutlineQuickOpen.ts +0 -4
  47. package/front_end/panels/sources/WatchExpressionsSidebarPane.ts +3 -1
  48. package/front_end/panels/sources/sources-meta.ts +9 -6
  49. package/front_end/panels/timeline/TimelineFlameChartView.ts +0 -12
  50. package/front_end/panels/timeline/TimelinePanel.ts +35 -15
  51. package/front_end/panels/timeline/components/Sidebar.ts +21 -0
  52. package/front_end/panels/timeline/components/insights/BaseInsightComponent.ts +1 -20
  53. package/front_end/panels/timeline/components/insights/InsightRenderer.ts +0 -1
  54. package/front_end/third_party/chromium/README.chromium +1 -1
  55. package/front_end/third_party/puppeteer/README.chromium +2 -2
  56. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/core/BrowsingContext.d.ts +1 -1
  57. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/core/BrowsingContext.d.ts.map +1 -1
  58. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/core/BrowsingContext.js +1 -1
  59. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/core/BrowsingContext.js.map +1 -1
  60. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/ChromeLauncher.d.ts.map +1 -1
  61. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/ChromeLauncher.js +2 -3
  62. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/ChromeLauncher.js.map +1 -1
  63. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/revisions.d.ts +2 -2
  64. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/revisions.js +2 -2
  65. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/util/encoding.d.ts.map +1 -1
  66. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/util/encoding.js +5 -3
  67. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/util/encoding.js.map +1 -1
  68. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/util/version.d.ts +1 -1
  69. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/util/version.js +1 -1
  70. package/front_end/third_party/puppeteer/package/lib/es5-iife/puppeteer-core-browser.js +8 -6
  71. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/core/BrowsingContext.d.ts +1 -1
  72. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/core/BrowsingContext.d.ts.map +1 -1
  73. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/core/BrowsingContext.js +1 -1
  74. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/core/BrowsingContext.js.map +1 -1
  75. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/ChromeLauncher.d.ts.map +1 -1
  76. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/ChromeLauncher.js +2 -3
  77. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/ChromeLauncher.js.map +1 -1
  78. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/revisions.d.ts +2 -2
  79. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/revisions.js +2 -2
  80. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/util/encoding.d.ts.map +1 -1
  81. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/util/encoding.js +5 -3
  82. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/util/encoding.js.map +1 -1
  83. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/util/version.d.ts +1 -1
  84. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/util/version.js +1 -1
  85. package/front_end/third_party/puppeteer/package/package.json +4 -4
  86. package/front_end/third_party/puppeteer/package/src/bidi/Page.ts +1 -1
  87. package/front_end/third_party/puppeteer/package/src/bidi/core/BrowsingContext.ts +2 -2
  88. package/front_end/third_party/puppeteer/package/src/node/ChromeLauncher.ts +4 -3
  89. package/front_end/third_party/puppeteer/package/src/revisions.ts +2 -2
  90. package/front_end/third_party/puppeteer/package/src/util/encoding.ts +5 -3
  91. package/front_end/third_party/puppeteer/package/src/util/version.ts +1 -1
  92. package/front_end/ui/components/linkifier/LinkifierImpl.ts +3 -0
  93. package/front_end/ui/components/linkifier/LinkifierUtils.ts +3 -0
  94. package/front_end/ui/components/text_editor/AiCodeGenerationParser.ts +29 -7
  95. package/front_end/ui/components/text_editor/AiCodeGenerationProvider.ts +34 -18
  96. package/front_end/ui/legacy/InspectorView.ts +41 -15
  97. package/front_end/ui/legacy/UIUtils.ts +30 -6
  98. package/front_end/ui/legacy/components/quick_open/CommandMenu.ts +4 -3
  99. package/front_end/ui/legacy/components/quick_open/FilteredListWidget.ts +2 -1
  100. package/front_end/ui/legacy/components/quick_open/HelpQuickOpen.ts +8 -2
  101. package/front_end/ui/legacy/components/quick_open/QuickOpen.ts +8 -8
  102. package/front_end/ui/legacy/components/utils/JSPresentationUtils.ts +12 -9
  103. package/front_end/ui/legacy/components/utils/Linkifier.ts +116 -87
  104. package/front_end/ui/legacy/legacy.ts +0 -2
  105. package/front_end/ui/visual_logging/KnownContextValues.ts +3 -0
  106. package/mcp/HostBindings.ts +3 -0
  107. package/package.json +1 -1
  108. package/front_end/models/issues_manager/descriptions/corsInsecurePrivateNetwork.md +0 -10
  109. package/front_end/models/issues_manager/descriptions/corsPreflightAllowPrivateNetworkError.md +0 -10
  110. package/front_end/models/issues_manager/descriptions/corsPrivateNetworkPermissionDenied.md +0 -10
  111. package/front_end/ui/legacy/Floaty.ts +0 -438
  112. package/front_end/ui/legacy/floaty.css +0 -77
@@ -453,6 +453,7 @@ export interface InspectorFrontendHostAPI {
453
453
  recordFunctionCall(event: FunctionCallEvent): void;
454
454
 
455
455
  setChromeFlag(flagName: string, value: boolean): void;
456
+ requestRestart(): void;
456
457
  }
457
458
 
458
459
  export interface AcceleratorDescriptor {
@@ -565,4 +565,6 @@ export class InspectorFrontendHostStub implements InspectorFrontendHostAPI {
565
565
 
566
566
  setChromeFlag(_flagName: string, _value: boolean): void {
567
567
  }
568
+ requestRestart(): void {
569
+ }
568
570
  }
@@ -175,6 +175,7 @@ export class ExperimentsSupport {
175
175
  title: string,
176
176
  aboutFlag: string,
177
177
  isEnabled: boolean,
178
+ requiresChromeRestart: boolean,
178
179
  docLink?: Platform.DevToolsPath.UrlString,
179
180
  readonly feedbackLink?: Platform.DevToolsPath.UrlString,
180
181
  }): HostExperiment {
@@ -377,6 +378,7 @@ export class HostExperiment {
377
378
  // It is NOT the the name of the corresponding Chromium `base::Feature`.
378
379
  aboutFlag: string;
379
380
  #isEnabled: boolean;
381
+ readonly requiresChromeRestart: boolean;
380
382
  docLink?: Platform.DevToolsPath.UrlString;
381
383
  readonly feedbackLink?: Platform.DevToolsPath.UrlString;
382
384
 
@@ -386,6 +388,7 @@ export class HostExperiment {
386
388
  experiments: ExperimentsSupport,
387
389
  aboutFlag: string,
388
390
  isEnabled: boolean,
391
+ requiresChromeRestart: boolean,
389
392
  docLink?: Platform.DevToolsPath.UrlString,
390
393
  feedbackLink?: Platform.DevToolsPath.UrlString,
391
394
  }) {
@@ -394,6 +397,7 @@ export class HostExperiment {
394
397
  this.#experiments = params.experiments;
395
398
  this.aboutFlag = params.aboutFlag;
396
399
  this.#isEnabled = params.isEnabled;
400
+ this.requiresChromeRestart = params.requiresChromeRestart;
397
401
  this.docLink = params.docLink;
398
402
  this.feedbackLink = params.feedbackLink;
399
403
  }
@@ -486,6 +490,13 @@ export interface HostConfigAiCodeGeneration {
486
490
  userTier: string;
487
491
  }
488
492
 
493
+ export interface HostConfigAiCodeCompletionStyles {
494
+ modelId: string;
495
+ temperature: number;
496
+ enabled: boolean;
497
+ userTier: string;
498
+ }
499
+
489
500
  export interface HostConfigDeepLinksViaExtensibilityApi {
490
501
  enabled: boolean;
491
502
  }
@@ -577,11 +588,6 @@ interface DeviceBoundSessionsDebugging {
577
588
  enabled: boolean;
578
589
  }
579
590
 
580
- interface AiPromptApi {
581
- enabled: boolean;
582
- allowWithoutGpu: boolean;
583
- }
584
-
585
591
  export interface DevToolsEnableDurableMessages {
586
592
  enabled: boolean;
587
593
  }
@@ -625,6 +631,7 @@ export type HostConfig = Platform.TypeScriptUtilities.RecursivePartial<{
625
631
  devToolsAiAssistanceV2: HostConfigAiAssistanceV2,
626
632
  devToolsAiCodeCompletion: HostConfigAiCodeCompletion,
627
633
  devToolsAiCodeGeneration: HostConfigAiCodeGeneration,
634
+ devToolsAiCodeCompletionStyles: HostConfigAiCodeCompletionStyles,
628
635
  devToolsVeLogging: HostConfigVeLogging,
629
636
  devToolsWellKnown: HostConfigWellKnown,
630
637
  /**
@@ -643,7 +650,6 @@ export type HostConfig = Platform.TypeScriptUtilities.RecursivePartial<{
643
650
  devToolsLiveEdit: LiveEdit,
644
651
  devToolsFlexibleLayout: DevToolsFlexibleLayout,
645
652
  deviceBoundSessionsDebugging: DeviceBoundSessionsDebugging,
646
- devToolsAiPromptApi: AiPromptApi,
647
653
  devToolsEnableDurableMessages: DevToolsEnableDurableMessages,
648
654
  devToolsAiAssistanceContextSelectionAgent: HostConfigAiAssistanceContextSelectionAgent,
649
655
  devToolsConsoleInsightsTeasers: ConsoleInsightsTeasers,
@@ -1332,6 +1332,9 @@ class DOMInheritanceCascade {
1332
1332
  case CSSWideKeyword.REVERT_LAYER:
1333
1333
  return this.#findPropertyInPreviousStyle(property, isPreviousLayer) ??
1334
1334
  this.resolveGlobalKeyword(property, CSSWideKeyword.REVERT);
1335
+ case CSSWideKeyword.REVERT_RULE:
1336
+ return this.#findPropertyInPreviousStyle(property, () => true) ??
1337
+ this.resolveGlobalKeyword(property, CSSWideKeyword.UNSET);
1335
1338
  case CSSWideKeyword.UNSET:
1336
1339
  return this.#findPropertyInParentCascadeIfInherited(property) ??
1337
1340
  this.#findCustomPropertyRegistration(property.name);
@@ -368,17 +368,20 @@ export const enum CSSWideKeyword {
368
368
  INITIAL = 'initial',
369
369
  REVERT = 'revert',
370
370
  REVERT_LAYER = 'revert-layer',
371
+ REVERT_RULE = 'revert-rule',
371
372
  UNSET = 'unset',
372
373
  }
373
374
  /**
374
375
  * Spec: https://drafts.csswg.org/css-cascade/#defaulting-keywords
375
376
  * https://drafts.csswg.org/css-cascade-5/#revert-layer
377
+ * https://drafts.csswg.org/css-cascade-6/#revert-rule
376
378
  **/
377
379
  export const CSSWideKeywords: CSSWideKeyword[] = [
378
380
  CSSWideKeyword.INHERIT,
379
381
  CSSWideKeyword.INITIAL,
380
382
  CSSWideKeyword.REVERT,
381
383
  CSSWideKeyword.REVERT_LAYER,
384
+ CSSWideKeyword.REVERT_RULE,
382
385
  CSSWideKeyword.UNSET,
383
386
  ];
384
387
 
@@ -352,6 +352,7 @@ export class MainImpl {
352
352
  title: 'Protocol Monitor',
353
353
  aboutFlag: 'devtools-protocol-monitor',
354
354
  isEnabled: enableProtocolMonitor,
355
+ requiresChromeRestart: false,
355
356
  docLink: 'https://developer.chrome.com/blog/new-in-devtools-92/#protocol-monitor' as
356
357
  Platform.DevToolsPath.UrlString,
357
358
  });
@@ -94,6 +94,18 @@ export const UIStrings = {
94
94
  * @description Warning displayed to developers that instead of calling the `Intl.v8BreakIterator` constructor, which is not a standard JavaScript API, use ECMA402 standard API Intl.Segmenter shipped in end of 2020 instead.
95
95
  */
96
96
  IntlV8BreakIterator: "`Intl.v8BreakIterator` is deprecated. Please use `Intl.Segmenter` instead.",
97
+ /**
98
+ * @description Warning message for web developers when they call the deprecated LanguageModel.params() method.
99
+ */
100
+ LanguageModelParams: "LanguageModel.params() is deprecated and now only available in extension contexts. The topK and temperature related fields within its result are also deprecated.",
101
+ /**
102
+ * @description Warning message for web developers when they use the deprecated 'temperature' option in LanguageModel.create() or access the .temperature attribute.
103
+ */
104
+ LanguageModelTemperature: "The 'temperature' parameter/attribute for LanguageModel is deprecated. It is only functional within extensions and may be removed in the future.",
105
+ /**
106
+ * @description Warning message for web developers when they use the deprecated 'topK' option in LanguageModel.create() or access the .topK attribute.
107
+ */
108
+ LanguageModelTopK: "The 'topK' parameter/attribute for LanguageModel is deprecated. It is only functional within extensions and may be removed in the future.",
97
109
  /**
98
110
  * @description This warning occurs when a stylesheet loaded from a local file directive does not end in the file type `.css`.
99
111
  */
@@ -292,6 +304,15 @@ export const DEPRECATIONS_METADATA: Partial<Record<string, DeprecationDescriptor
292
304
  "chromeStatusFeature": 5436853517811712,
293
305
  "milestone": 92
294
306
  },
307
+ "LanguageModelParams": {
308
+ "chromeStatusFeature": 5134603979063296
309
+ },
310
+ "LanguageModelTemperature": {
311
+ "chromeStatusFeature": 5134603979063296
312
+ },
313
+ "LanguageModelTopK": {
314
+ "chromeStatusFeature": 5134603979063296
315
+ },
295
316
  "LocalCSSFileExtensionRejected": {
296
317
  "milestone": 64
297
318
  },
@@ -70,6 +70,7 @@ inspectorBackend.registerEnum("Audits.CookieExclusionReason", {ExcludeSameSiteUn
70
70
  inspectorBackend.registerEnum("Audits.CookieWarningReason", {WarnSameSiteUnspecifiedCrossSiteContext: "WarnSameSiteUnspecifiedCrossSiteContext", WarnSameSiteNoneInsecure: "WarnSameSiteNoneInsecure", WarnSameSiteUnspecifiedLaxAllowUnsafe: "WarnSameSiteUnspecifiedLaxAllowUnsafe", WarnSameSiteStrictLaxDowngradeStrict: "WarnSameSiteStrictLaxDowngradeStrict", WarnSameSiteStrictCrossDowngradeStrict: "WarnSameSiteStrictCrossDowngradeStrict", WarnSameSiteStrictCrossDowngradeLax: "WarnSameSiteStrictCrossDowngradeLax", WarnSameSiteLaxCrossDowngradeStrict: "WarnSameSiteLaxCrossDowngradeStrict", WarnSameSiteLaxCrossDowngradeLax: "WarnSameSiteLaxCrossDowngradeLax", WarnAttributeValueExceedsMaxSize: "WarnAttributeValueExceedsMaxSize", WarnDomainNonASCII: "WarnDomainNonASCII", WarnThirdPartyPhaseout: "WarnThirdPartyPhaseout", WarnCrossSiteRedirectDowngradeChangesInclusion: "WarnCrossSiteRedirectDowngradeChangesInclusion", WarnDeprecationTrialMetadata: "WarnDeprecationTrialMetadata", WarnThirdPartyCookieHeuristic: "WarnThirdPartyCookieHeuristic"});
71
71
  inspectorBackend.registerEnum("Audits.CookieOperation", {SetCookie: "SetCookie", ReadCookie: "ReadCookie"});
72
72
  inspectorBackend.registerEnum("Audits.InsightType", {GitHubResource: "GitHubResource", GracePeriod: "GracePeriod", Heuristics: "Heuristics"});
73
+ inspectorBackend.registerEnum("Audits.PerformanceIssueType", {DocumentCookie: "DocumentCookie"});
73
74
  inspectorBackend.registerEnum("Audits.MixedContentResolutionStatus", {MixedContentBlocked: "MixedContentBlocked", MixedContentAutomaticallyUpgraded: "MixedContentAutomaticallyUpgraded", MixedContentWarning: "MixedContentWarning"});
74
75
  inspectorBackend.registerEnum("Audits.MixedContentResourceType", {AttributionSrc: "AttributionSrc", Audio: "Audio", Beacon: "Beacon", CSPReport: "CSPReport", Download: "Download", EventSource: "EventSource", Favicon: "Favicon", Font: "Font", Form: "Form", Frame: "Frame", Image: "Image", Import: "Import", JSON: "JSON", Manifest: "Manifest", Ping: "Ping", PluginData: "PluginData", PluginResource: "PluginResource", Prefetch: "Prefetch", Resource: "Resource", Script: "Script", ServiceWorker: "ServiceWorker", SharedWorker: "SharedWorker", SpeculationRules: "SpeculationRules", Stylesheet: "Stylesheet", Track: "Track", Video: "Video", Worker: "Worker", XMLHttpRequest: "XMLHttpRequest", XSLT: "XSLT"});
75
76
  inspectorBackend.registerEnum("Audits.BlockedByResponseReason", {CoepFrameResourceNeedsCoepHeader: "CoepFrameResourceNeedsCoepHeader", CoopSandboxedIFrameCannotNavigateToCoopPage: "CoopSandboxedIFrameCannotNavigateToCoopPage", CorpNotSameOrigin: "CorpNotSameOrigin", CorpNotSameOriginAfterDefaultedToSameOriginByCoep: "CorpNotSameOriginAfterDefaultedToSameOriginByCoep", CorpNotSameOriginAfterDefaultedToSameOriginByDip: "CorpNotSameOriginAfterDefaultedToSameOriginByDip", CorpNotSameOriginAfterDefaultedToSameOriginByCoepAndDip: "CorpNotSameOriginAfterDefaultedToSameOriginByCoepAndDip", CorpNotSameSite: "CorpNotSameSite", SRIMessageSignatureMismatch: "SRIMessageSignatureMismatch"});
@@ -92,7 +93,7 @@ inspectorBackend.registerEnum("Audits.StyleSheetLoadingIssueReason", {LateImport
92
93
  inspectorBackend.registerEnum("Audits.PropertyRuleIssueReason", {InvalidSyntax: "InvalidSyntax", InvalidInitialValue: "InvalidInitialValue", InvalidInherits: "InvalidInherits", InvalidName: "InvalidName"});
93
94
  inspectorBackend.registerEnum("Audits.UserReidentificationIssueType", {BlockedFrameNavigation: "BlockedFrameNavigation", BlockedSubresource: "BlockedSubresource", NoisedCanvasReadback: "NoisedCanvasReadback"});
94
95
  inspectorBackend.registerEnum("Audits.PermissionElementIssueType", {InvalidType: "InvalidType", FencedFrameDisallowed: "FencedFrameDisallowed", CspFrameAncestorsMissing: "CspFrameAncestorsMissing", PermissionsPolicyBlocked: "PermissionsPolicyBlocked", PaddingRightUnsupported: "PaddingRightUnsupported", PaddingBottomUnsupported: "PaddingBottomUnsupported", InsetBoxShadowUnsupported: "InsetBoxShadowUnsupported", RequestInProgress: "RequestInProgress", UntrustedEvent: "UntrustedEvent", RegistrationFailed: "RegistrationFailed", TypeNotSupported: "TypeNotSupported", InvalidTypeActivation: "InvalidTypeActivation", SecurityChecksFailed: "SecurityChecksFailed", ActivationDisabled: "ActivationDisabled", GeolocationDeprecated: "GeolocationDeprecated", InvalidDisplayStyle: "InvalidDisplayStyle", NonOpaqueColor: "NonOpaqueColor", LowContrast: "LowContrast", FontSizeTooSmall: "FontSizeTooSmall", FontSizeTooLarge: "FontSizeTooLarge", InvalidSizeValue: "InvalidSizeValue"});
95
- inspectorBackend.registerEnum("Audits.InspectorIssueCode", {CookieIssue: "CookieIssue", MixedContentIssue: "MixedContentIssue", BlockedByResponseIssue: "BlockedByResponseIssue", HeavyAdIssue: "HeavyAdIssue", ContentSecurityPolicyIssue: "ContentSecurityPolicyIssue", SharedArrayBufferIssue: "SharedArrayBufferIssue", LowTextContrastIssue: "LowTextContrastIssue", CorsIssue: "CorsIssue", AttributionReportingIssue: "AttributionReportingIssue", QuirksModeIssue: "QuirksModeIssue", PartitioningBlobURLIssue: "PartitioningBlobURLIssue", NavigatorUserAgentIssue: "NavigatorUserAgentIssue", GenericIssue: "GenericIssue", DeprecationIssue: "DeprecationIssue", ClientHintIssue: "ClientHintIssue", FederatedAuthRequestIssue: "FederatedAuthRequestIssue", BounceTrackingIssue: "BounceTrackingIssue", CookieDeprecationMetadataIssue: "CookieDeprecationMetadataIssue", StylesheetLoadingIssue: "StylesheetLoadingIssue", FederatedAuthUserInfoRequestIssue: "FederatedAuthUserInfoRequestIssue", PropertyRuleIssue: "PropertyRuleIssue", SharedDictionaryIssue: "SharedDictionaryIssue", ElementAccessibilityIssue: "ElementAccessibilityIssue", SRIMessageSignatureIssue: "SRIMessageSignatureIssue", UnencodedDigestIssue: "UnencodedDigestIssue", ConnectionAllowlistIssue: "ConnectionAllowlistIssue", UserReidentificationIssue: "UserReidentificationIssue", PermissionElementIssue: "PermissionElementIssue"});
96
+ inspectorBackend.registerEnum("Audits.InspectorIssueCode", {CookieIssue: "CookieIssue", MixedContentIssue: "MixedContentIssue", BlockedByResponseIssue: "BlockedByResponseIssue", HeavyAdIssue: "HeavyAdIssue", ContentSecurityPolicyIssue: "ContentSecurityPolicyIssue", SharedArrayBufferIssue: "SharedArrayBufferIssue", LowTextContrastIssue: "LowTextContrastIssue", CorsIssue: "CorsIssue", AttributionReportingIssue: "AttributionReportingIssue", QuirksModeIssue: "QuirksModeIssue", PartitioningBlobURLIssue: "PartitioningBlobURLIssue", NavigatorUserAgentIssue: "NavigatorUserAgentIssue", GenericIssue: "GenericIssue", DeprecationIssue: "DeprecationIssue", ClientHintIssue: "ClientHintIssue", FederatedAuthRequestIssue: "FederatedAuthRequestIssue", BounceTrackingIssue: "BounceTrackingIssue", CookieDeprecationMetadataIssue: "CookieDeprecationMetadataIssue", StylesheetLoadingIssue: "StylesheetLoadingIssue", FederatedAuthUserInfoRequestIssue: "FederatedAuthUserInfoRequestIssue", PropertyRuleIssue: "PropertyRuleIssue", SharedDictionaryIssue: "SharedDictionaryIssue", ElementAccessibilityIssue: "ElementAccessibilityIssue", SRIMessageSignatureIssue: "SRIMessageSignatureIssue", UnencodedDigestIssue: "UnencodedDigestIssue", ConnectionAllowlistIssue: "ConnectionAllowlistIssue", UserReidentificationIssue: "UserReidentificationIssue", PermissionElementIssue: "PermissionElementIssue", PerformanceIssue: "PerformanceIssue"});
96
97
  inspectorBackend.registerEvent("Audits.issueAdded", ["issue"]);
97
98
  inspectorBackend.registerEnum("Audits.GetEncodedResponseRequestEncoding", {Webp: "webp", Jpeg: "jpeg", Png: "png"});
98
99
  inspectorBackend.registerCommand("Audits.getEncodedResponse", [{"name": "requestId", "type": "string", "optional": false, "description": "Identifier of the network request to get content for.", "typeRef": "Network.RequestId"}, {"name": "encoding", "type": "string", "optional": false, "description": "The encoding to use.", "typeRef": "Audits.GetEncodedResponseRequestEncoding"}, {"name": "quality", "type": "number", "optional": true, "description": "The quality of the encoding (0-1). (defaults to 1)", "typeRef": null}, {"name": "sizeOnly", "type": "boolean", "optional": true, "description": "Whether to only return the size information (defaults to false).", "typeRef": null}], ["body", "originalSize", "encodedSize"], "Returns the response body and size if it were re-encoded with the specified settings. Only applies to images.");
@@ -105,6 +106,7 @@ inspectorBackend.registerType("Audits.AffectedRequest", [{"name": "requestId", "
105
106
  inspectorBackend.registerType("Audits.AffectedFrame", [{"name": "frameId", "type": "string", "optional": false, "description": "", "typeRef": "Page.FrameId"}]);
106
107
  inspectorBackend.registerType("Audits.CookieIssueInsight", [{"name": "type", "type": "string", "optional": false, "description": "", "typeRef": "Audits.InsightType"}, {"name": "tableEntryUrl", "type": "string", "optional": true, "description": "Link to table entry in third-party cookie migration readiness list.", "typeRef": null}]);
107
108
  inspectorBackend.registerType("Audits.CookieIssueDetails", [{"name": "cookie", "type": "object", "optional": true, "description": "If AffectedCookie is not set then rawCookieLine contains the raw Set-Cookie header string. This hints at a problem where the cookie line is syntactically or semantically malformed in a way that no valid cookie could be created.", "typeRef": "Audits.AffectedCookie"}, {"name": "rawCookieLine", "type": "string", "optional": true, "description": "", "typeRef": null}, {"name": "cookieWarningReasons", "type": "array", "optional": false, "description": "", "typeRef": "Audits.CookieWarningReason"}, {"name": "cookieExclusionReasons", "type": "array", "optional": false, "description": "", "typeRef": "Audits.CookieExclusionReason"}, {"name": "operation", "type": "string", "optional": false, "description": "Optionally identifies the site-for-cookies and the cookie url, which may be used by the front-end as additional context.", "typeRef": "Audits.CookieOperation"}, {"name": "siteForCookies", "type": "string", "optional": true, "description": "", "typeRef": null}, {"name": "cookieUrl", "type": "string", "optional": true, "description": "", "typeRef": null}, {"name": "request", "type": "object", "optional": true, "description": "", "typeRef": "Audits.AffectedRequest"}, {"name": "insight", "type": "object", "optional": true, "description": "The recommended solution to the issue.", "typeRef": "Audits.CookieIssueInsight"}]);
109
+ inspectorBackend.registerType("Audits.PerformanceIssueDetails", [{"name": "performanceIssueType", "type": "string", "optional": false, "description": "", "typeRef": "Audits.PerformanceIssueType"}, {"name": "sourceCodeLocation", "type": "object", "optional": true, "description": "", "typeRef": "Audits.SourceCodeLocation"}]);
108
110
  inspectorBackend.registerType("Audits.MixedContentIssueDetails", [{"name": "resourceType", "type": "string", "optional": true, "description": "The type of resource causing the mixed content issue (css, js, iframe, form,...). Marked as optional because it is mapped to from blink::mojom::RequestContextType, which will be replaced by network::mojom::RequestDestination", "typeRef": "Audits.MixedContentResourceType"}, {"name": "resolutionStatus", "type": "string", "optional": false, "description": "The way the mixed content issue is being resolved.", "typeRef": "Audits.MixedContentResolutionStatus"}, {"name": "insecureURL", "type": "string", "optional": false, "description": "The unsafe http url causing the mixed content issue.", "typeRef": null}, {"name": "mainResourceURL", "type": "string", "optional": false, "description": "The url responsible for the call to an unsafe url.", "typeRef": null}, {"name": "request", "type": "object", "optional": true, "description": "The mixed content request. Does not always exist (e.g. for unsafe form submission urls).", "typeRef": "Audits.AffectedRequest"}, {"name": "frame", "type": "object", "optional": true, "description": "Optional because not every mixed content issue is necessarily linked to a frame.", "typeRef": "Audits.AffectedFrame"}]);
109
111
  inspectorBackend.registerType("Audits.BlockedByResponseIssueDetails", [{"name": "request", "type": "object", "optional": false, "description": "", "typeRef": "Audits.AffectedRequest"}, {"name": "parentFrame", "type": "object", "optional": true, "description": "", "typeRef": "Audits.AffectedFrame"}, {"name": "blockedFrame", "type": "object", "optional": true, "description": "", "typeRef": "Audits.AffectedFrame"}, {"name": "reason", "type": "string", "optional": false, "description": "", "typeRef": "Audits.BlockedByResponseReason"}]);
110
112
  inspectorBackend.registerType("Audits.HeavyAdIssueDetails", [{"name": "resolution", "type": "string", "optional": false, "description": "The resolution status, either blocking the content or warning.", "typeRef": "Audits.HeavyAdResolutionStatus"}, {"name": "reason", "type": "string", "optional": false, "description": "The reason the ad was blocked, total network or cpu or peak cpu.", "typeRef": "Audits.HeavyAdReason"}, {"name": "frame", "type": "object", "optional": false, "description": "The frame that was blocked.", "typeRef": "Audits.AffectedFrame"}]);
@@ -134,7 +136,7 @@ inspectorBackend.registerType("Audits.StylesheetLoadingIssueDetails", [{"name":
134
136
  inspectorBackend.registerType("Audits.PropertyRuleIssueDetails", [{"name": "sourceCodeLocation", "type": "object", "optional": false, "description": "Source code position of the property rule.", "typeRef": "Audits.SourceCodeLocation"}, {"name": "propertyRuleIssueReason", "type": "string", "optional": false, "description": "Reason why the property rule was discarded.", "typeRef": "Audits.PropertyRuleIssueReason"}, {"name": "propertyValue", "type": "string", "optional": true, "description": "The value of the property rule property that failed to parse", "typeRef": null}]);
135
137
  inspectorBackend.registerType("Audits.UserReidentificationIssueDetails", [{"name": "type", "type": "string", "optional": false, "description": "", "typeRef": "Audits.UserReidentificationIssueType"}, {"name": "request", "type": "object", "optional": true, "description": "Applies to BlockedFrameNavigation and BlockedSubresource issue types.", "typeRef": "Audits.AffectedRequest"}, {"name": "sourceCodeLocation", "type": "object", "optional": true, "description": "Applies to NoisedCanvasReadback issue type.", "typeRef": "Audits.SourceCodeLocation"}]);
136
138
  inspectorBackend.registerType("Audits.PermissionElementIssueDetails", [{"name": "issueType", "type": "string", "optional": false, "description": "", "typeRef": "Audits.PermissionElementIssueType"}, {"name": "type", "type": "string", "optional": true, "description": "The value of the type attribute.", "typeRef": null}, {"name": "nodeId", "type": "number", "optional": true, "description": "The node ID of the <permission> element.", "typeRef": "DOM.BackendNodeId"}, {"name": "isWarning", "type": "boolean", "optional": true, "description": "True if the issue is a warning, false if it is an error.", "typeRef": null}, {"name": "permissionName", "type": "string", "optional": true, "description": "Fields for message construction: Used for messages that reference a specific permission name", "typeRef": null}, {"name": "occluderNodeInfo", "type": "string", "optional": true, "description": "Used for messages about occlusion", "typeRef": null}, {"name": "occluderParentNodeInfo", "type": "string", "optional": true, "description": "Used for messages about occluder's parent", "typeRef": null}, {"name": "disableReason", "type": "string", "optional": true, "description": "Used for messages about activation disabled reason", "typeRef": null}]);
137
- inspectorBackend.registerType("Audits.InspectorIssueDetails", [{"name": "cookieIssueDetails", "type": "object", "optional": true, "description": "", "typeRef": "Audits.CookieIssueDetails"}, {"name": "mixedContentIssueDetails", "type": "object", "optional": true, "description": "", "typeRef": "Audits.MixedContentIssueDetails"}, {"name": "blockedByResponseIssueDetails", "type": "object", "optional": true, "description": "", "typeRef": "Audits.BlockedByResponseIssueDetails"}, {"name": "heavyAdIssueDetails", "type": "object", "optional": true, "description": "", "typeRef": "Audits.HeavyAdIssueDetails"}, {"name": "contentSecurityPolicyIssueDetails", "type": "object", "optional": true, "description": "", "typeRef": "Audits.ContentSecurityPolicyIssueDetails"}, {"name": "sharedArrayBufferIssueDetails", "type": "object", "optional": true, "description": "", "typeRef": "Audits.SharedArrayBufferIssueDetails"}, {"name": "lowTextContrastIssueDetails", "type": "object", "optional": true, "description": "", "typeRef": "Audits.LowTextContrastIssueDetails"}, {"name": "corsIssueDetails", "type": "object", "optional": true, "description": "", "typeRef": "Audits.CorsIssueDetails"}, {"name": "attributionReportingIssueDetails", "type": "object", "optional": true, "description": "", "typeRef": "Audits.AttributionReportingIssueDetails"}, {"name": "quirksModeIssueDetails", "type": "object", "optional": true, "description": "", "typeRef": "Audits.QuirksModeIssueDetails"}, {"name": "partitioningBlobURLIssueDetails", "type": "object", "optional": true, "description": "", "typeRef": "Audits.PartitioningBlobURLIssueDetails"}, {"name": "navigatorUserAgentIssueDetails", "type": "object", "optional": true, "description": "", "typeRef": "Audits.NavigatorUserAgentIssueDetails"}, {"name": "genericIssueDetails", "type": "object", "optional": true, "description": "", "typeRef": "Audits.GenericIssueDetails"}, {"name": "deprecationIssueDetails", "type": "object", "optional": true, "description": "", "typeRef": "Audits.DeprecationIssueDetails"}, {"name": "clientHintIssueDetails", "type": "object", "optional": true, "description": "", "typeRef": "Audits.ClientHintIssueDetails"}, {"name": "federatedAuthRequestIssueDetails", "type": "object", "optional": true, "description": "", "typeRef": "Audits.FederatedAuthRequestIssueDetails"}, {"name": "bounceTrackingIssueDetails", "type": "object", "optional": true, "description": "", "typeRef": "Audits.BounceTrackingIssueDetails"}, {"name": "cookieDeprecationMetadataIssueDetails", "type": "object", "optional": true, "description": "", "typeRef": "Audits.CookieDeprecationMetadataIssueDetails"}, {"name": "stylesheetLoadingIssueDetails", "type": "object", "optional": true, "description": "", "typeRef": "Audits.StylesheetLoadingIssueDetails"}, {"name": "propertyRuleIssueDetails", "type": "object", "optional": true, "description": "", "typeRef": "Audits.PropertyRuleIssueDetails"}, {"name": "federatedAuthUserInfoRequestIssueDetails", "type": "object", "optional": true, "description": "", "typeRef": "Audits.FederatedAuthUserInfoRequestIssueDetails"}, {"name": "sharedDictionaryIssueDetails", "type": "object", "optional": true, "description": "", "typeRef": "Audits.SharedDictionaryIssueDetails"}, {"name": "elementAccessibilityIssueDetails", "type": "object", "optional": true, "description": "", "typeRef": "Audits.ElementAccessibilityIssueDetails"}, {"name": "sriMessageSignatureIssueDetails", "type": "object", "optional": true, "description": "", "typeRef": "Audits.SRIMessageSignatureIssueDetails"}, {"name": "unencodedDigestIssueDetails", "type": "object", "optional": true, "description": "", "typeRef": "Audits.UnencodedDigestIssueDetails"}, {"name": "connectionAllowlistIssueDetails", "type": "object", "optional": true, "description": "", "typeRef": "Audits.ConnectionAllowlistIssueDetails"}, {"name": "userReidentificationIssueDetails", "type": "object", "optional": true, "description": "", "typeRef": "Audits.UserReidentificationIssueDetails"}, {"name": "permissionElementIssueDetails", "type": "object", "optional": true, "description": "", "typeRef": "Audits.PermissionElementIssueDetails"}]);
139
+ inspectorBackend.registerType("Audits.InspectorIssueDetails", [{"name": "cookieIssueDetails", "type": "object", "optional": true, "description": "", "typeRef": "Audits.CookieIssueDetails"}, {"name": "mixedContentIssueDetails", "type": "object", "optional": true, "description": "", "typeRef": "Audits.MixedContentIssueDetails"}, {"name": "blockedByResponseIssueDetails", "type": "object", "optional": true, "description": "", "typeRef": "Audits.BlockedByResponseIssueDetails"}, {"name": "heavyAdIssueDetails", "type": "object", "optional": true, "description": "", "typeRef": "Audits.HeavyAdIssueDetails"}, {"name": "contentSecurityPolicyIssueDetails", "type": "object", "optional": true, "description": "", "typeRef": "Audits.ContentSecurityPolicyIssueDetails"}, {"name": "sharedArrayBufferIssueDetails", "type": "object", "optional": true, "description": "", "typeRef": "Audits.SharedArrayBufferIssueDetails"}, {"name": "lowTextContrastIssueDetails", "type": "object", "optional": true, "description": "", "typeRef": "Audits.LowTextContrastIssueDetails"}, {"name": "corsIssueDetails", "type": "object", "optional": true, "description": "", "typeRef": "Audits.CorsIssueDetails"}, {"name": "attributionReportingIssueDetails", "type": "object", "optional": true, "description": "", "typeRef": "Audits.AttributionReportingIssueDetails"}, {"name": "quirksModeIssueDetails", "type": "object", "optional": true, "description": "", "typeRef": "Audits.QuirksModeIssueDetails"}, {"name": "partitioningBlobURLIssueDetails", "type": "object", "optional": true, "description": "", "typeRef": "Audits.PartitioningBlobURLIssueDetails"}, {"name": "navigatorUserAgentIssueDetails", "type": "object", "optional": true, "description": "", "typeRef": "Audits.NavigatorUserAgentIssueDetails"}, {"name": "genericIssueDetails", "type": "object", "optional": true, "description": "", "typeRef": "Audits.GenericIssueDetails"}, {"name": "deprecationIssueDetails", "type": "object", "optional": true, "description": "", "typeRef": "Audits.DeprecationIssueDetails"}, {"name": "clientHintIssueDetails", "type": "object", "optional": true, "description": "", "typeRef": "Audits.ClientHintIssueDetails"}, {"name": "federatedAuthRequestIssueDetails", "type": "object", "optional": true, "description": "", "typeRef": "Audits.FederatedAuthRequestIssueDetails"}, {"name": "bounceTrackingIssueDetails", "type": "object", "optional": true, "description": "", "typeRef": "Audits.BounceTrackingIssueDetails"}, {"name": "cookieDeprecationMetadataIssueDetails", "type": "object", "optional": true, "description": "", "typeRef": "Audits.CookieDeprecationMetadataIssueDetails"}, {"name": "stylesheetLoadingIssueDetails", "type": "object", "optional": true, "description": "", "typeRef": "Audits.StylesheetLoadingIssueDetails"}, {"name": "propertyRuleIssueDetails", "type": "object", "optional": true, "description": "", "typeRef": "Audits.PropertyRuleIssueDetails"}, {"name": "federatedAuthUserInfoRequestIssueDetails", "type": "object", "optional": true, "description": "", "typeRef": "Audits.FederatedAuthUserInfoRequestIssueDetails"}, {"name": "sharedDictionaryIssueDetails", "type": "object", "optional": true, "description": "", "typeRef": "Audits.SharedDictionaryIssueDetails"}, {"name": "elementAccessibilityIssueDetails", "type": "object", "optional": true, "description": "", "typeRef": "Audits.ElementAccessibilityIssueDetails"}, {"name": "sriMessageSignatureIssueDetails", "type": "object", "optional": true, "description": "", "typeRef": "Audits.SRIMessageSignatureIssueDetails"}, {"name": "unencodedDigestIssueDetails", "type": "object", "optional": true, "description": "", "typeRef": "Audits.UnencodedDigestIssueDetails"}, {"name": "connectionAllowlistIssueDetails", "type": "object", "optional": true, "description": "", "typeRef": "Audits.ConnectionAllowlistIssueDetails"}, {"name": "userReidentificationIssueDetails", "type": "object", "optional": true, "description": "", "typeRef": "Audits.UserReidentificationIssueDetails"}, {"name": "permissionElementIssueDetails", "type": "object", "optional": true, "description": "", "typeRef": "Audits.PermissionElementIssueDetails"}, {"name": "performanceIssueDetails", "type": "object", "optional": true, "description": "", "typeRef": "Audits.PerformanceIssueDetails"}]);
138
140
  inspectorBackend.registerType("Audits.InspectorIssue", [{"name": "code", "type": "string", "optional": false, "description": "", "typeRef": "Audits.InspectorIssueCode"}, {"name": "details", "type": "object", "optional": false, "description": "", "typeRef": "Audits.InspectorIssueDetails"}, {"name": "issueId", "type": "string", "optional": true, "description": "A unique id for this issue. May be omitted if no other entity (e.g. exception, CDP message, etc.) is referencing this issue.", "typeRef": "Audits.IssueId"}]);
139
141
 
140
142
  // Autofill.
@@ -547,7 +549,7 @@ inspectorBackend.registerCommand("Emulation.setHardwareConcurrencyOverride", [{"
547
549
  inspectorBackend.registerCommand("Emulation.setUserAgentOverride", [{"name": "userAgent", "type": "string", "optional": false, "description": "User agent to use.", "typeRef": null}, {"name": "acceptLanguage", "type": "string", "optional": true, "description": "Browser language to emulate.", "typeRef": null}, {"name": "platform", "type": "string", "optional": true, "description": "The platform navigator.platform should return.", "typeRef": null}, {"name": "userAgentMetadata", "type": "object", "optional": true, "description": "To be sent in Sec-CH-UA-* headers and returned in navigator.userAgentData", "typeRef": "Emulation.UserAgentMetadata"}], [], "Allows overriding user agent with the given string. `userAgentMetadata` must be set for Client Hint headers to be sent.");
548
550
  inspectorBackend.registerCommand("Emulation.setAutomationOverride", [{"name": "enabled", "type": "boolean", "optional": false, "description": "Whether the override should be enabled.", "typeRef": null}], [], "Allows overriding the automation flag.");
549
551
  inspectorBackend.registerCommand("Emulation.setSmallViewportHeightDifferenceOverride", [{"name": "difference", "type": "number", "optional": false, "description": "This will cause an element of size 100svh to be `difference` pixels smaller than an element of size 100lvh.", "typeRef": null}], [], "Allows overriding the difference between the small and large viewport sizes, which determine the value of the `svh` and `lvh` unit, respectively. Only supported for top-level frames.");
550
- inspectorBackend.registerCommand("Emulation.getScreenInfos", [], ["screenInfos"], "Returns device's screen configuration.");
552
+ inspectorBackend.registerCommand("Emulation.getScreenInfos", [], ["screenInfos"], "Returns device's screen configuration. In headful mode, the physical screens configuration is returned, whereas in headless mode, a virtual headless screen configuration is provided instead.");
551
553
  inspectorBackend.registerCommand("Emulation.addScreen", [{"name": "left", "type": "number", "optional": false, "description": "Offset of the left edge of the screen in pixels.", "typeRef": null}, {"name": "top", "type": "number", "optional": false, "description": "Offset of the top edge of the screen in pixels.", "typeRef": null}, {"name": "width", "type": "number", "optional": false, "description": "The width of the screen in pixels.", "typeRef": null}, {"name": "height", "type": "number", "optional": false, "description": "The height of the screen in pixels.", "typeRef": null}, {"name": "workAreaInsets", "type": "object", "optional": true, "description": "Specifies the screen's work area. Default is entire screen.", "typeRef": "Emulation.WorkAreaInsets"}, {"name": "devicePixelRatio", "type": "number", "optional": true, "description": "Specifies the screen's device pixel ratio. Default is 1.", "typeRef": null}, {"name": "rotation", "type": "number", "optional": true, "description": "Specifies the screen's rotation angle. Available values are 0, 90, 180 and 270. Default is 0.", "typeRef": null}, {"name": "colorDepth", "type": "number", "optional": true, "description": "Specifies the screen's color depth in bits. Default is 24.", "typeRef": null}, {"name": "label", "type": "string", "optional": true, "description": "Specifies the descriptive label for the screen. Default is none.", "typeRef": null}, {"name": "isInternal", "type": "boolean", "optional": true, "description": "Indicates whether the screen is internal to the device or external, attached to the device. Default is false.", "typeRef": null}], ["screenInfo"], "Add a new screen to the device. Only supported in headless mode.");
552
554
  inspectorBackend.registerCommand("Emulation.removeScreen", [{"name": "screenId", "type": "string", "optional": false, "description": "", "typeRef": "Emulation.ScreenId"}], [], "Remove screen from the device. Only supported in headless mode.");
553
555
  inspectorBackend.registerType("Emulation.SafeAreaInsets", [{"name": "top", "type": "number", "optional": true, "description": "Overrides safe-area-inset-top.", "typeRef": null}, {"name": "topMax", "type": "number", "optional": true, "description": "Overrides safe-area-max-inset-top.", "typeRef": null}, {"name": "left", "type": "number", "optional": true, "description": "Overrides safe-area-inset-left.", "typeRef": null}, {"name": "leftMax", "type": "number", "optional": true, "description": "Overrides safe-area-max-inset-left.", "typeRef": null}, {"name": "bottom", "type": "number", "optional": true, "description": "Overrides safe-area-inset-bottom.", "typeRef": null}, {"name": "bottomMax", "type": "number", "optional": true, "description": "Overrides safe-area-max-inset-bottom.", "typeRef": null}, {"name": "right", "type": "number", "optional": true, "description": "Overrides safe-area-inset-right.", "typeRef": null}, {"name": "rightMax", "type": "number", "optional": true, "description": "Overrides safe-area-max-inset-right.", "typeRef": null}]);
@@ -1795,6 +1795,7 @@ export const generatedProperties = [
1795
1795
  "inherited": false,
1796
1796
  "keywords": [
1797
1797
  "all",
1798
+ "auto",
1798
1799
  "around",
1799
1800
  "between"
1800
1801
  ],
@@ -3841,6 +3842,7 @@ export const generatedProperties = [
3841
3842
  "inherited": false,
3842
3843
  "keywords": [
3843
3844
  "all",
3845
+ "auto",
3844
3846
  "around",
3845
3847
  "between"
3846
3848
  ],
@@ -4548,12 +4550,12 @@ export const generatedProperties = [
4548
4550
  {
4549
4551
  "inherited": true,
4550
4552
  "keywords": [
4553
+ "none",
4551
4554
  "capitalize",
4552
4555
  "uppercase",
4553
4556
  "lowercase",
4554
4557
  "full-width",
4555
4558
  "full-size-kana",
4556
- "none",
4557
4559
  "math-auto"
4558
4560
  ],
4559
4561
  "name": "text-transform"
@@ -5559,6 +5561,7 @@ export const generatedPropertyValues = {
5559
5561
  "column-rule-visibility-items": {
5560
5562
  "values": [
5561
5563
  "all",
5564
+ "auto",
5562
5565
  "around",
5563
5566
  "between"
5564
5567
  ]
@@ -6692,6 +6695,7 @@ export const generatedPropertyValues = {
6692
6695
  "row-rule-visibility-items": {
6693
6696
  "values": [
6694
6697
  "all",
6698
+ "auto",
6695
6699
  "around",
6696
6700
  "between"
6697
6701
  ]
@@ -7045,12 +7049,12 @@ export const generatedPropertyValues = {
7045
7049
  },
7046
7050
  "text-transform": {
7047
7051
  "values": [
7052
+ "none",
7048
7053
  "capitalize",
7049
7054
  "uppercase",
7050
7055
  "lowercase",
7051
7056
  "full-width",
7052
7057
  "full-size-kana",
7053
- "none",
7054
7058
  "math-auto"
7055
7059
  ]
7056
7060
  },
@@ -2757,7 +2757,8 @@ export namespace ProtocolMapping {
2757
2757
  returnType: void;
2758
2758
  };
2759
2759
  /**
2760
- * Returns device's screen configuration.
2760
+ * Returns device's screen configuration. In headful mode, the physical screens configuration is returned,
2761
+ * whereas in headless mode, a virtual headless screen configuration is provided instead.
2761
2762
  */
2762
2763
  'Emulation.getScreenInfos': {
2763
2764
  paramsType: [];
@@ -1832,7 +1832,8 @@ declare namespace ProtocolProxyApi {
1832
1832
  invoke_setSmallViewportHeightDifferenceOverride(params: Protocol.Emulation.SetSmallViewportHeightDifferenceOverrideRequest): Promise<Protocol.ProtocolResponseWithError>;
1833
1833
 
1834
1834
  /**
1835
- * Returns device's screen configuration.
1835
+ * Returns device's screen configuration. In headful mode, the physical screens configuration is returned,
1836
+ * whereas in headless mode, a virtual headless screen configuration is provided instead.
1836
1837
  */
1837
1838
  invoke_getScreenInfos(): Promise<Protocol.Emulation.GetScreenInfosResponse>;
1838
1839
 
@@ -850,6 +850,18 @@ export namespace Audits {
850
850
  insight?: CookieIssueInsight;
851
851
  }
852
852
 
853
+ export const enum PerformanceIssueType {
854
+ DocumentCookie = 'DocumentCookie',
855
+ }
856
+
857
+ /**
858
+ * Details for a performance issue.
859
+ */
860
+ export interface PerformanceIssueDetails {
861
+ performanceIssueType: PerformanceIssueType;
862
+ sourceCodeLocation?: SourceCodeLocation;
863
+ }
864
+
853
865
  export const enum MixedContentResolutionStatus {
854
866
  MixedContentBlocked = 'MixedContentBlocked',
855
867
  MixedContentAutomaticallyUpgraded = 'MixedContentAutomaticallyUpgraded',
@@ -1564,6 +1576,7 @@ export namespace Audits {
1564
1576
  ConnectionAllowlistIssue = 'ConnectionAllowlistIssue',
1565
1577
  UserReidentificationIssue = 'UserReidentificationIssue',
1566
1578
  PermissionElementIssue = 'PermissionElementIssue',
1579
+ PerformanceIssue = 'PerformanceIssue',
1567
1580
  }
1568
1581
 
1569
1582
  /**
@@ -1603,6 +1616,7 @@ export namespace Audits {
1603
1616
  connectionAllowlistIssueDetails?: ConnectionAllowlistIssueDetails;
1604
1617
  userReidentificationIssueDetails?: UserReidentificationIssueDetails;
1605
1618
  permissionElementIssueDetails?: PermissionElementIssueDetails;
1619
+ performanceIssueDetails?: PerformanceIssueDetails;
1606
1620
  }
1607
1621
 
1608
1622
  /**
@@ -14,7 +14,8 @@ import {
14
14
  type ConversationContext,
15
15
  type MultimodalInput,
16
16
  type ResponseData,
17
- ResponseType
17
+ ResponseType,
18
+ type UserQuery
18
19
  } from './agents/AiAgent.js';
19
20
  import {ContextSelectionAgent} from './agents/ContextSelectionAgent.js';
20
21
  import {FileAgent, FileContext} from './agents/FileAgent.js';
@@ -56,6 +57,7 @@ export class AiConversation {
56
57
  undefined,
57
58
  serializedConversation.isExternal,
58
59
  undefined,
60
+ undefined,
59
61
  );
60
62
  }
61
63
 
@@ -77,6 +79,7 @@ export class AiConversation {
77
79
 
78
80
  #performanceRecordAndReload?: () => Promise<Trace.TraceModel.ParsedTrace>;
79
81
  #onInspectElement?: () => Promise<SDK.DOMModel.DOMNode|null>;
82
+ #networkTimeCalculator?: NetworkTimeCalculator.NetworkTransferTimeCalculator;
80
83
 
81
84
  constructor(
82
85
  type: ConversationType,
@@ -88,11 +91,13 @@ export class AiConversation {
88
91
  isExternal = false,
89
92
  performanceRecordAndReload?: () => Promise<Trace.TraceModel.ParsedTrace>,
90
93
  onInspectElement?: () => Promise<SDK.DOMModel.DOMNode|null>,
94
+ networkTimeCalculator?: NetworkTimeCalculator.NetworkTransferTimeCalculator,
91
95
  ) {
92
96
  this.#changeManager = changeManager;
93
97
  this.#aidaClient = aidaClient;
94
98
  this.#performanceRecordAndReload = performanceRecordAndReload;
95
99
  this.#onInspectElement = onInspectElement;
100
+ this.#networkTimeCalculator = networkTimeCalculator;
96
101
 
97
102
  this.id = id;
98
103
  this.#isReadOnly = isReadOnly;
@@ -288,6 +293,7 @@ export class AiConversation {
288
293
  changeManager: this.#changeManager,
289
294
  performanceRecordAndReload: this.#performanceRecordAndReload,
290
295
  onInspectElement: this.#onInspectElement,
296
+ networkTimeCalculator: this.#networkTimeCalculator,
291
297
  };
292
298
  switch (type) {
293
299
  case ConversationType.STYLING: {
@@ -393,12 +399,20 @@ Time: ${micros(time)}`;
393
399
  run(
394
400
  initialQuery: string,
395
401
  options: {
396
-
397
402
  signal?: AbortSignal,
398
403
  extraContext?: ExtraContext[],
399
404
  multimodalInput?: MultimodalInput,
400
405
  } = {},
401
406
  ): AsyncGenerator<ResponseData, void, void> {
407
+ const userQuery: UserQuery = {
408
+ type: ResponseType.USER_QUERY,
409
+ query: initialQuery,
410
+ imageInput: options.multimodalInput?.input,
411
+ imageId: options.multimodalInput?.id,
412
+ };
413
+ void this.addHistoryItem(userQuery);
414
+ yield userQuery;
415
+
402
416
  if (options.extraContext) {
403
417
  await this.#createFactsForExtraContext(options.extraContext);
404
418
  }
@@ -408,6 +422,18 @@ Time: ${micros(time)}`;
408
422
  throw new Error('Cross-origin context data should not be included');
409
423
  }
410
424
 
425
+ yield* this.#runAgent(initialQuery, options);
426
+ }
427
+
428
+ async *
429
+ #runAgent(
430
+ initialQuery: string,
431
+ options: {
432
+ signal?: AbortSignal,
433
+ extraContext?: ExtraContext[],
434
+ multimodalInput?: MultimodalInput,
435
+ } = {},
436
+ ): AsyncGenerator<ResponseData, void, void> {
411
437
  function shouldAddToHistory(data: ResponseData): boolean {
412
438
  if (data.type === ResponseType.CONTEXT_CHANGE) {
413
439
  return false;
@@ -433,6 +459,12 @@ Time: ${micros(time)}`;
433
459
  if (shouldAddToHistory(data)) {
434
460
  void this.addHistoryItem(data);
435
461
  }
462
+ if (data.type === ResponseType.CONTEXT_CHANGE) {
463
+ this.setContext(data.context);
464
+ yield* this.#runAgent(initialQuery, options);
465
+ return;
466
+ }
467
+
436
468
  yield data;
437
469
  }
438
470
  }
@@ -47,8 +47,7 @@ export class BuiltInAi extends Common.ObjectWrapper.ObjectWrapper<EventTypes> {
47
47
  }
48
48
 
49
49
  async getLanguageModelAvailability(): Promise<LanguageModelAvailability> {
50
- if (!Root.Runtime.hostConfig.devToolsConsoleInsightsTeasers?.enabled ||
51
- (Root.Runtime.hostConfig.devToolsAiPromptApi && !Root.Runtime.hostConfig.devToolsAiPromptApi.enabled)) {
50
+ if (!Root.Runtime.hostConfig.devToolsConsoleInsightsTeasers?.enabled) {
52
51
  this.#availability = LanguageModelAvailability.DISABLED;
53
52
  return this.#availability;
54
53
  }
@@ -88,7 +88,7 @@ export interface SideEffectResponse {
88
88
  }
89
89
  export interface ContextChangeResponse {
90
90
  type: ResponseType.CONTEXT_CHANGE;
91
- context: unknown;
91
+ context: ConversationContext<unknown>;
92
92
  }
93
93
 
94
94
  interface SerializedSideEffectResponse extends Omit<SideEffectResponse, 'confirm'> {}
@@ -517,13 +517,6 @@ export abstract class AiAgent<T> {
517
517
  // Request is built here to capture history up to this point.
518
518
  let request = this.buildRequest(query, Host.AidaClient.Role.USER);
519
519
 
520
- yield {
521
- type: ResponseType.USER_QUERY,
522
- query: initialQuery,
523
- imageInput: multimodalInput?.input,
524
- imageId: multimodalInput?.id,
525
- };
526
-
527
520
  yield* this.handleContextDetails(options.selected);
528
521
 
529
522
  for (let i = 0; i < MAX_STEPS; i++) {
@@ -650,7 +643,7 @@ export abstract class AiAgent<T> {
650
643
  name: string,
651
644
  args: Record<string, unknown>,
652
645
  options?: FunctionHandlerOptions&{explanation?: string},
653
- ): AsyncGenerator<FunctionCallResponseData, {result: unknown}|{context: unknown}> {
646
+ ): AsyncGenerator<FunctionCallResponseData, {result: unknown}|{context: ConversationContext<unknown>}> {
654
647
  const call = this.#functionDeclarations.get(name);
655
648
  if (!call) {
656
649
  throw new Error(`Function ${name} is not found.`);
@@ -762,7 +755,7 @@ export abstract class AiAgent<T> {
762
755
  }
763
756
 
764
757
  if ('context' in result) {
765
- return result as {context: unknown};
758
+ return result as {context: ConversationContext<unknown>};
766
759
  }
767
760
 
768
761
  return result as {result: unknown};
@@ -31,7 +31,7 @@ Content:
31
31
  "function_declarations": [
32
32
  {
33
33
  "name": "listNetworkRequests",
34
- "description": "Gives a list of network requests including URL, status code, and duration in ms.",
34
+ "description": "Gives a list of network requests including URL, status code, and duration.",
35
35
  "parameters": {
36
36
  "type": 6,
37
37
  "description": "",