chrome-devtools-frontend 1.0.1582745 → 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 (127) 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 -11
  4. package/front_end/core/sdk/CSSMatchedStyles.ts +3 -0
  5. package/front_end/core/sdk/CSSMetadata.ts +3 -0
  6. package/front_end/core/sdk/NetworkManager.ts +63 -115
  7. package/front_end/entrypoint_template.html +1 -5
  8. package/front_end/entrypoints/main/MainImpl.ts +1 -0
  9. package/front_end/generated/Deprecation.ts +21 -0
  10. package/front_end/generated/InspectorBackendCommands.ts +5 -3
  11. package/front_end/generated/SupportedCSSProperties.js +6 -2
  12. package/front_end/generated/protocol-mapping.d.ts +2 -1
  13. package/front_end/generated/protocol-proxy-api.d.ts +2 -1
  14. package/front_end/generated/protocol.ts +14 -0
  15. package/front_end/models/ai_assistance/AiConversation.ts +34 -2
  16. package/front_end/models/ai_assistance/BuiltInAi.ts +1 -2
  17. package/front_end/models/ai_assistance/agents/AiAgent.ts +3 -10
  18. package/front_end/models/ai_assistance/agents/ContextSelectionAgent.snapshot.txt +1 -1
  19. package/front_end/models/ai_assistance/agents/ContextSelectionAgent.ts +17 -9
  20. package/front_end/models/ai_assistance/agents/StylingAgent.snapshot.txt +0 -24
  21. package/front_end/models/ai_code_generation/AiCodeGeneration.ts +5 -0
  22. package/front_end/models/bindings/DebuggerWorkspaceBinding.ts +16 -8
  23. package/front_end/models/computed_style/ComputedStyleModel.ts +20 -15
  24. package/front_end/models/greendev/Prototypes.ts +1 -5
  25. package/front_end/models/issues_manager/CorsIssue.ts +2 -9
  26. package/front_end/models/issues_manager/descriptions/corsLocalNetworkAccessPermissionDenied.md +2 -2
  27. package/front_end/models/javascript_metadata/NativeFunctions.js +20 -0
  28. package/front_end/panels/ai_assistance/AiAssistancePanel.ts +28 -39
  29. package/front_end/panels/ai_assistance/components/ChatInput.ts +73 -95
  30. package/front_end/panels/ai_assistance/components/ChatMessage.ts +4 -2
  31. package/front_end/panels/ai_assistance/components/ChatView.ts +0 -2
  32. package/front_end/panels/autofill/AutofillView.ts +4 -8
  33. package/front_end/panels/common/AiCodeGenerationTeaser.ts +37 -8
  34. package/front_end/panels/console/ConsoleView.ts +1 -2
  35. package/front_end/panels/console/ConsoleViewMessage.ts +18 -11
  36. package/front_end/panels/elements/ComputedStyleWidget.ts +80 -48
  37. package/front_end/panels/elements/ElementStatePaneWidget.ts +1 -1
  38. package/front_end/panels/elements/ElementsPanel.ts +18 -5
  39. package/front_end/panels/elements/ElementsTreeElement.ts +459 -435
  40. package/front_end/panels/elements/EventListenersWidget.ts +2 -4
  41. package/front_end/panels/elements/NodeStackTraceWidget.ts +1 -3
  42. package/front_end/panels/elements/PropertiesWidget.ts +1 -2
  43. package/front_end/panels/elements/StylePropertyTreeElement.ts +18 -2
  44. package/front_end/panels/elements/computedStyleWidget.css +25 -0
  45. package/front_end/panels/issues/AffectedResourcesView.ts +1 -2
  46. package/front_end/panels/network/NetworkDataGridNode.ts +0 -8
  47. package/front_end/panels/network/NetworkLogView.ts +64 -105
  48. package/front_end/panels/network/RequestConditionsDrawer.ts +168 -233
  49. package/front_end/panels/network/network-meta.ts +4 -27
  50. package/front_end/panels/settings/SettingsScreen.ts +12 -4
  51. package/front_end/panels/settings/WorkspaceSettingsTab.ts +1 -1
  52. package/front_end/panels/snippets/SnippetsQuickOpen.ts +6 -9
  53. package/front_end/panels/sources/CallStackSidebarPane.ts +6 -8
  54. package/front_end/panels/sources/DebuggerPlugin.ts +2 -1
  55. package/front_end/panels/sources/GoToLineQuickOpen.ts +0 -4
  56. package/front_end/panels/sources/OpenFileQuickOpen.ts +0 -4
  57. package/front_end/panels/sources/OutlineQuickOpen.ts +0 -4
  58. package/front_end/panels/sources/WatchExpressionsSidebarPane.ts +3 -1
  59. package/front_end/panels/sources/sources-meta.ts +9 -6
  60. package/front_end/panels/timeline/TimelineFlameChartView.ts +0 -12
  61. package/front_end/panels/timeline/TimelinePanel.ts +35 -15
  62. package/front_end/panels/timeline/components/Sidebar.ts +21 -0
  63. package/front_end/panels/timeline/components/insights/BaseInsightComponent.ts +1 -20
  64. package/front_end/panels/timeline/components/insights/InsightRenderer.ts +0 -1
  65. package/front_end/third_party/chromium/README.chromium +1 -1
  66. package/front_end/third_party/puppeteer/README.chromium +2 -2
  67. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/core/BrowsingContext.d.ts +1 -1
  68. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/core/BrowsingContext.d.ts.map +1 -1
  69. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/core/BrowsingContext.js +1 -1
  70. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/core/BrowsingContext.js.map +1 -1
  71. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/ChromeLauncher.d.ts.map +1 -1
  72. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/ChromeLauncher.js +2 -3
  73. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/ChromeLauncher.js.map +1 -1
  74. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/revisions.d.ts +2 -2
  75. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/revisions.js +2 -2
  76. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/util/encoding.d.ts.map +1 -1
  77. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/util/encoding.js +5 -3
  78. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/util/encoding.js.map +1 -1
  79. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/util/version.d.ts +1 -1
  80. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/util/version.js +1 -1
  81. package/front_end/third_party/puppeteer/package/lib/es5-iife/puppeteer-core-browser.js +8 -6
  82. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/core/BrowsingContext.d.ts +1 -1
  83. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/core/BrowsingContext.d.ts.map +1 -1
  84. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/core/BrowsingContext.js +1 -1
  85. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/core/BrowsingContext.js.map +1 -1
  86. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/ChromeLauncher.d.ts.map +1 -1
  87. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/ChromeLauncher.js +2 -3
  88. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/ChromeLauncher.js.map +1 -1
  89. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/revisions.d.ts +2 -2
  90. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/revisions.js +2 -2
  91. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/util/encoding.d.ts.map +1 -1
  92. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/util/encoding.js +5 -3
  93. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/util/encoding.js.map +1 -1
  94. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/util/version.d.ts +1 -1
  95. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/util/version.js +1 -1
  96. package/front_end/third_party/puppeteer/package/package.json +4 -4
  97. package/front_end/third_party/puppeteer/package/src/bidi/Page.ts +1 -1
  98. package/front_end/third_party/puppeteer/package/src/bidi/core/BrowsingContext.ts +2 -2
  99. package/front_end/third_party/puppeteer/package/src/node/ChromeLauncher.ts +4 -3
  100. package/front_end/third_party/puppeteer/package/src/revisions.ts +2 -2
  101. package/front_end/third_party/puppeteer/package/src/util/encoding.ts +5 -3
  102. package/front_end/third_party/puppeteer/package/src/util/version.ts +1 -1
  103. package/front_end/ui/components/linkifier/LinkifierImpl.ts +3 -0
  104. package/front_end/ui/components/linkifier/LinkifierUtils.ts +3 -0
  105. package/front_end/ui/components/text_editor/AiCodeCompletionProvider.ts +8 -0
  106. package/front_end/ui/components/text_editor/AiCodeGenerationParser.ts +29 -7
  107. package/front_end/ui/components/text_editor/AiCodeGenerationProvider.ts +42 -18
  108. package/front_end/ui/components/text_editor/config.ts +6 -0
  109. package/front_end/ui/legacy/InspectorView.ts +41 -15
  110. package/front_end/ui/legacy/Toolbar.ts +12 -4
  111. package/front_end/ui/legacy/UIUtils.ts +56 -7
  112. package/front_end/ui/legacy/components/quick_open/CommandMenu.ts +4 -3
  113. package/front_end/ui/legacy/components/quick_open/FilteredListWidget.ts +2 -1
  114. package/front_end/ui/legacy/components/quick_open/HelpQuickOpen.ts +8 -2
  115. package/front_end/ui/legacy/components/quick_open/QuickOpen.ts +8 -8
  116. package/front_end/ui/legacy/components/utils/JSPresentationUtils.ts +12 -9
  117. package/front_end/ui/legacy/components/utils/Linkifier.ts +116 -87
  118. package/front_end/ui/legacy/legacy.ts +0 -2
  119. package/front_end/ui/visual_logging/KnownContextValues.ts +4 -0
  120. package/mcp/HostBindings.ts +3 -0
  121. package/package.json +1 -1
  122. package/front_end/models/issues_manager/descriptions/corsInsecurePrivateNetwork.md +0 -10
  123. package/front_end/models/issues_manager/descriptions/corsPreflightAllowPrivateNetworkError.md +0 -10
  124. package/front_end/models/issues_manager/descriptions/corsPrivateNetworkPermissionDenied.md +0 -10
  125. package/front_end/panels/elements/computedStyleSidebarPane.css +0 -18
  126. package/front_end/ui/legacy/Floaty.ts +0 -438
  127. 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,15 +588,6 @@ interface DeviceBoundSessionsDebugging {
577
588
  enabled: boolean;
578
589
  }
579
590
 
580
- interface AiPromptApi {
581
- enabled: boolean;
582
- allowWithoutGpu: boolean;
583
- }
584
-
585
- interface DevToolsIndividualRequestThrottling {
586
- enabled: boolean;
587
- }
588
-
589
591
  export interface DevToolsEnableDurableMessages {
590
592
  enabled: boolean;
591
593
  }
@@ -629,9 +631,9 @@ export type HostConfig = Platform.TypeScriptUtilities.RecursivePartial<{
629
631
  devToolsAiAssistanceV2: HostConfigAiAssistanceV2,
630
632
  devToolsAiCodeCompletion: HostConfigAiCodeCompletion,
631
633
  devToolsAiCodeGeneration: HostConfigAiCodeGeneration,
634
+ devToolsAiCodeCompletionStyles: HostConfigAiCodeCompletionStyles,
632
635
  devToolsVeLogging: HostConfigVeLogging,
633
636
  devToolsWellKnown: HostConfigWellKnown,
634
- devToolsIndividualRequestThrottling: DevToolsIndividualRequestThrottling,
635
637
  /**
636
638
  * OffTheRecord here indicates that the user's profile is either incognito,
637
639
  * or guest mode, rather than a "normal" profile.
@@ -648,7 +650,6 @@ export type HostConfig = Platform.TypeScriptUtilities.RecursivePartial<{
648
650
  devToolsLiveEdit: LiveEdit,
649
651
  devToolsFlexibleLayout: DevToolsFlexibleLayout,
650
652
  deviceBoundSessionsDebugging: DeviceBoundSessionsDebugging,
651
- devToolsAiPromptApi: AiPromptApi,
652
653
  devToolsEnableDurableMessages: DevToolsEnableDurableMessages,
653
654
  devToolsAiAssistanceContextSelectionAgent: HostConfigAiAssistanceContextSelectionAgent,
654
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
 
@@ -1687,19 +1687,8 @@ export class RequestCondition extends Common.ObjectWrapper.ObjectWrapper<Request
1687
1687
  (this.#pattern.upgradedPattern?.constructorString ?? this.#pattern.wildcardURL);
1688
1688
  }
1689
1689
 
1690
- set pattern(pattern: RequestURLPattern|string) {
1691
- if (typeof pattern === 'string') {
1692
- // TODO(pfaffe) Remove once the feature flag is no longer required
1693
- if (Root.Runtime.hostConfig.devToolsIndividualRequestThrottling?.enabled) {
1694
- throw new Error('Should not use wildcard urls');
1695
- }
1696
- this.#pattern = {
1697
- wildcardURL: pattern,
1698
- upgradedPattern: RequestURLPattern.upgradeFromWildcard(pattern) ?? undefined
1699
- };
1700
- } else {
1701
- this.#pattern = pattern;
1702
- }
1690
+ set pattern(pattern: RequestURLPattern) {
1691
+ this.#pattern = pattern;
1703
1692
  this.dispatchEventToListeners(RequestCondition.Events.REQUEST_CONDITION_CHANGED);
1704
1693
  }
1705
1694
 
@@ -1792,10 +1781,7 @@ export class RequestConditions extends Common.ObjectWrapper.ObjectWrapper<Reques
1792
1781
  }
1793
1782
 
1794
1783
  findCondition(pattern: string): RequestCondition|undefined {
1795
- if (Root.Runtime.hostConfig.devToolsIndividualRequestThrottling?.enabled) {
1796
- return this.#conditions.find(condition => condition.constructorString === pattern);
1797
- }
1798
- return this.#conditions.find(condition => condition.wildcardURL === pattern);
1784
+ return this.#conditions.find(condition => condition.constructorString === pattern);
1799
1785
  }
1800
1786
 
1801
1787
  has(url: string): boolean {
@@ -1862,84 +1848,72 @@ export class RequestConditions extends Common.ObjectWrapper.ObjectWrapper<Reques
1862
1848
  function isNonBlockingCondition(condition: ThrottlingConditions): condition is Conditions {
1863
1849
  return !('block' in condition);
1864
1850
  }
1865
- if (Root.Runtime.hostConfig.devToolsIndividualRequestThrottling?.enabled) {
1866
- const urlPatterns: Protocol.Network.BlockPattern[] = [];
1867
- // We store all this info out-of-band to prevent races with changing conditions while the promise is still pending
1868
- const matchedNetworkConditions: Array<{conditions: Conditions, ruleIds?: Set<string>, urlPattern?: string}> = [];
1869
- if (this.conditionsEnabled) {
1870
- for (const condition of this.#conditions) {
1871
- const urlPattern = condition.constructorString;
1872
- const conditions = condition.conditions;
1873
- if (!condition.enabled || !urlPattern || conditions === NoThrottlingConditions) {
1874
- continue;
1875
- }
1876
- const block = !isNonBlockingCondition(conditions);
1877
- urlPatterns.push({urlPattern, block});
1878
- if (!block) {
1879
- const {ruleIds} = condition;
1880
- matchedNetworkConditions.push({ruleIds, urlPattern, conditions});
1881
- }
1851
+ const urlPatterns: Protocol.Network.BlockPattern[] = [];
1852
+ // We store all this info out-of-band to prevent races with changing conditions while the promise is still pending
1853
+ const matchedNetworkConditions: Array<{conditions: Conditions, ruleIds?: Set<string>, urlPattern?: string}> = [];
1854
+ if (this.conditionsEnabled) {
1855
+ for (const condition of this.#conditions) {
1856
+ const urlPattern = condition.constructorString;
1857
+ const conditions = condition.conditions;
1858
+ if (!condition.enabled || !urlPattern || conditions === NoThrottlingConditions) {
1859
+ continue;
1860
+ }
1861
+ const block = !isNonBlockingCondition(conditions);
1862
+ urlPatterns.push({urlPattern, block});
1863
+ if (!block) {
1864
+ const {ruleIds} = condition;
1865
+ matchedNetworkConditions.push({ruleIds, urlPattern, conditions});
1882
1866
  }
1883
1867
  }
1868
+ }
1884
1869
 
1885
- if (globalConditions) {
1886
- matchedNetworkConditions.push({conditions: globalConditions});
1887
- }
1888
-
1889
- const promises: Array<Promise<unknown>> = [];
1890
-
1891
- for (const agent of agents) {
1892
- promises.push(agent.invoke_setBlockedURLs({urlPatterns}));
1893
- promises.push(agent
1894
- .invoke_emulateNetworkConditionsByRule({
1895
- offline,
1896
- matchedNetworkConditions: matchedNetworkConditions.map(
1897
- ({urlPattern, conditions}) => ({
1898
- urlPattern: urlPattern ?? '',
1899
- latency: conditions.latency,
1900
- downloadThroughput: conditions.download < 0 ? 0 : conditions.download,
1901
- uploadThroughput: conditions.upload < 0 ? 0 : conditions.upload,
1902
- packetLoss: (conditions.packetLoss ?? 0) < 0 ? 0 : conditions.packetLoss,
1903
- packetQueueLength: conditions.packetQueueLength,
1904
- packetReordering: conditions.packetReordering,
1905
- connectionType: NetworkManager.connectionType(conditions),
1906
- }))
1907
- })
1908
- .then(response => {
1909
- if (!response.getError()) {
1910
- for (let i = 0; i < response.ruleIds.length; ++i) {
1911
- const ruleId = response.ruleIds[i];
1912
- const {ruleIds, conditions, urlPattern} = matchedNetworkConditions[i];
1913
- if (ruleIds) {
1914
- this.#requestConditionsById.set(ruleId, {urlPattern, conditions});
1915
- matchedNetworkConditions[i].ruleIds?.add(ruleId);
1916
- }
1917
- }
1918
- }
1919
- }));
1920
- promises.push(agent.invoke_overrideNetworkState({
1921
- offline,
1922
- latency: globalConditions?.latency ?? 0,
1923
- downloadThroughput: globalConditions?.download ?? -1,
1924
- uploadThroughput: globalConditions?.upload ?? -1,
1925
- connectionType: globalConditions ? NetworkManager.connectionType(globalConditions) :
1926
- Protocol.Network.ConnectionType.None,
1927
- }));
1928
- }
1929
-
1930
- this.#conditionsAppliedForTestPromise = this.#conditionsAppliedForTestPromise.then(() => Promise.all(promises));
1931
- return urlPatterns.length > 0;
1870
+ if (globalConditions) {
1871
+ matchedNetworkConditions.push({conditions: globalConditions});
1932
1872
  }
1933
1873
 
1934
- const urls = this.conditionsEnabled ?
1935
- this.#conditions.filter(condition => condition.enabled && condition.wildcardURL)
1936
- .map(condition => condition.wildcardURL as string) :
1937
- [];
1874
+ const promises: Array<Promise<unknown>> = [];
1938
1875
 
1939
1876
  for (const agent of agents) {
1940
- void agent.invoke_setBlockedURLs({urls});
1877
+ promises.push(agent.invoke_setBlockedURLs({urlPatterns}));
1878
+ promises.push(agent
1879
+ .invoke_emulateNetworkConditionsByRule({
1880
+ offline,
1881
+ matchedNetworkConditions: matchedNetworkConditions.map(
1882
+ ({urlPattern, conditions}) => ({
1883
+ urlPattern: urlPattern ?? '',
1884
+ latency: conditions.latency,
1885
+ downloadThroughput: conditions.download < 0 ? 0 : conditions.download,
1886
+ uploadThroughput: conditions.upload < 0 ? 0 : conditions.upload,
1887
+ packetLoss: (conditions.packetLoss ?? 0) < 0 ? 0 : conditions.packetLoss,
1888
+ packetQueueLength: conditions.packetQueueLength,
1889
+ packetReordering: conditions.packetReordering,
1890
+ connectionType: NetworkManager.connectionType(conditions),
1891
+ }))
1892
+ })
1893
+ .then(response => {
1894
+ if (!response.getError()) {
1895
+ for (let i = 0; i < response.ruleIds.length; ++i) {
1896
+ const ruleId = response.ruleIds[i];
1897
+ const {ruleIds, conditions, urlPattern} = matchedNetworkConditions[i];
1898
+ if (ruleIds) {
1899
+ this.#requestConditionsById.set(ruleId, {urlPattern, conditions});
1900
+ matchedNetworkConditions[i].ruleIds?.add(ruleId);
1901
+ }
1902
+ }
1903
+ }
1904
+ }));
1905
+ promises.push(agent.invoke_overrideNetworkState({
1906
+ offline,
1907
+ latency: globalConditions?.latency ?? 0,
1908
+ downloadThroughput: globalConditions?.download ?? -1,
1909
+ uploadThroughput: globalConditions?.upload ?? -1,
1910
+ connectionType: globalConditions ? NetworkManager.connectionType(globalConditions) :
1911
+ Protocol.Network.ConnectionType.None,
1912
+ }));
1941
1913
  }
1942
- return urls.length > 0;
1914
+
1915
+ this.#conditionsAppliedForTestPromise = this.#conditionsAppliedForTestPromise.then(() => Promise.all(promises));
1916
+ return urlPatterns.length > 0;
1943
1917
  }
1944
1918
 
1945
1919
  conditionsAppliedForTest(): Promise<unknown> {
@@ -2082,9 +2056,6 @@ export class MultitargetNetworkManager extends Common.ObjectWrapper.ObjectWrappe
2082
2056
  }
2083
2057
  this.#networkAgents.add(networkAgent);
2084
2058
  this.#fetchAgents.add(fetchAgent);
2085
- if (this.isThrottling() && !Root.Runtime.hostConfig.devToolsIndividualRequestThrottling?.enabled) {
2086
- this.updateNetworkConditions(networkAgent);
2087
- }
2088
2059
  }
2089
2060
 
2090
2061
  modelRemoved(networkManager: NetworkManager): void {
@@ -2110,14 +2081,8 @@ export class MultitargetNetworkManager extends Common.ObjectWrapper.ObjectWrappe
2110
2081
 
2111
2082
  setNetworkConditions(conditions: Conditions): void {
2112
2083
  this.#networkConditions = conditions;
2113
- if (Root.Runtime.hostConfig.devToolsIndividualRequestThrottling?.enabled) {
2114
- this.#requestConditions.applyConditions(
2115
- this.isOffline(), this.isThrottling() ? this.#networkConditions : null, ...this.#networkAgents);
2116
- } else {
2117
- for (const agent of this.#networkAgents) {
2118
- this.updateNetworkConditions(agent);
2119
- }
2120
- }
2084
+ this.#requestConditions.applyConditions(
2085
+ this.isOffline(), this.isThrottling() ? this.#networkConditions : null, ...this.#networkAgents);
2121
2086
  this.dispatchEventToListeners(MultitargetNetworkManager.Events.CONDITIONS_CHANGED);
2122
2087
  }
2123
2088
 
@@ -2224,23 +2189,6 @@ export class MultitargetNetworkManager extends Common.ObjectWrapper.ObjectWrappe
2224
2189
  return this.#isBlocking && this.requestConditions.conditionsEnabled;
2225
2190
  }
2226
2191
 
2227
- /**
2228
- * @deprecated Kept for layout tests
2229
- * TODO(pfaffe) remove
2230
- */
2231
- private setBlockingEnabled(enabled: boolean): void {
2232
- this.requestConditions.conditionsEnabled = enabled;
2233
- }
2234
-
2235
- /**
2236
- * @deprecated Kept for layout tests
2237
- * TODO(pfaffe) remove
2238
- */
2239
- private setBlockedPatterns(patterns: Array<{url: string, enabled: boolean}>): void {
2240
- this.requestConditions.clear();
2241
- this.requestConditions.add(...patterns.map(pattern => RequestCondition.createFromSetting(pattern)));
2242
- }
2243
-
2244
2192
  private updateBlockedPatterns(): void {
2245
2193
  this.#isBlocking = this.#requestConditions.applyConditions(
2246
2194
  this.isOffline(), this.isThrottling() ? this.#networkConditions : null, ...this.#networkAgents);
@@ -14,11 +14,7 @@
14
14
  }
15
15
  }
16
16
  </style>
17
- <meta
18
- http-equiv="Content-Security-Policy"
19
- content="default-src 'self' devtools: data:; style-src 'self' 'unsafe-inline' devtools:; object-src 'none'; script-src
20
- 'self' https://chrome-devtools-frontend.appspot.com; img-src 'self' data:; frame-src * data:; connect-src data:
21
- https://chromeuxreport.googleapis.com 'self' devtools:;">
17
+ <meta http-equiv="Content-Security-Policy" content="object-src 'none'; script-src 'self' https://chrome-devtools-frontend.appspot.com">
22
18
  <meta name="referrer" content="no-referrer">
23
19
  <script type="module" src="./entrypoints/%ENTRYPOINT_NAME%/%ENTRYPOINT_NAME%.js"></script>
24
20
  <link href="./application_tokens.css" rel="stylesheet">
@@ -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