@mcp-b/chrome-devtools-mcp 1.7.0 → 1.7.2

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 (146) hide show
  1. package/README.md +120 -10
  2. package/build/src/McpContext.js +50 -3
  3. package/build/src/browser.js +157 -51
  4. package/build/src/cli.js +6 -1
  5. package/build/src/formatters/IssueFormatter.js +190 -0
  6. package/build/src/main.js +83 -2
  7. package/build/src/telemetry/clearcut-logger.js +102 -0
  8. package/build/src/telemetry/flag-utils.js +45 -0
  9. package/build/src/telemetry/metric-utils.js +14 -0
  10. package/build/src/telemetry/persistence.js +53 -0
  11. package/build/src/telemetry/types.js +33 -0
  12. package/build/src/telemetry/watchdog/clearcut-sender.js +201 -0
  13. package/build/src/telemetry/watchdog/main.js +127 -0
  14. package/build/src/telemetry/watchdog-client.js +60 -0
  15. package/build/src/third_party/devtools-formatter-worker.js +7 -0
  16. package/build/src/tools/browser.js +92 -0
  17. package/build/src/tools/extension.js +31 -0
  18. package/build/src/tools/extensions.js +79 -0
  19. package/build/src/tools/input.js +6 -1
  20. package/build/src/tools/pages.js +0 -1
  21. package/build/src/tools/tools.js +4 -0
  22. package/build/src/transports/WebMCPBridgeScript.js +11 -2
  23. package/build/src/utils/ExtensionRegistry.js +35 -0
  24. package/build/src/utils/string.js +36 -0
  25. package/build/vendor/chrome-devtools-frontend/front_end/core/common/Base64.js +20 -2
  26. package/build/vendor/chrome-devtools-frontend/front_end/core/common/Debouncer.js +8 -1
  27. package/build/vendor/chrome-devtools-frontend/front_end/core/common/Gzip.js +11 -0
  28. package/build/vendor/chrome-devtools-frontend/front_end/core/common/Object.js +6 -1
  29. package/build/vendor/chrome-devtools-frontend/front_end/core/common/ParsedURL.js +3 -0
  30. package/build/vendor/chrome-devtools-frontend/front_end/core/common/ResourceType.js +6 -0
  31. package/build/vendor/chrome-devtools-frontend/front_end/core/common/Revealer.js +0 -5
  32. package/build/vendor/chrome-devtools-frontend/front_end/core/common/Settings.js +18 -8
  33. package/build/vendor/chrome-devtools-frontend/front_end/core/host/AidaClient.js +24 -0
  34. package/build/vendor/chrome-devtools-frontend/front_end/core/host/InspectorFrontendHostStub.js +11 -3
  35. package/build/vendor/chrome-devtools-frontend/front_end/core/host/ResourceLoader.js +1 -1
  36. package/build/vendor/chrome-devtools-frontend/front_end/core/host/UserMetrics.js +27 -20
  37. package/build/vendor/chrome-devtools-frontend/front_end/core/i18n/collect-ui-strings.js +7 -8
  38. package/build/vendor/chrome-devtools-frontend/front_end/core/i18n/generate-locales-js.js +4 -5
  39. package/build/vendor/chrome-devtools-frontend/front_end/core/platform/ArrayUtilities.js +10 -0
  40. package/build/vendor/chrome-devtools-frontend/front_end/core/platform/StringUtilities.js +63 -12
  41. package/build/vendor/chrome-devtools-frontend/front_end/core/protocol_client/CDPConnection.js +1 -0
  42. package/build/vendor/chrome-devtools-frontend/front_end/core/protocol_client/InspectorBackend.js +4 -1
  43. package/build/vendor/chrome-devtools-frontend/front_end/core/root/ExperimentNames.js +30 -0
  44. package/build/vendor/chrome-devtools-frontend/front_end/core/root/root.js +2 -1
  45. package/build/vendor/chrome-devtools-frontend/front_end/core/sdk/AnimationModel.js +0 -4
  46. package/build/vendor/chrome-devtools-frontend/front_end/core/sdk/CSSMatchedStyles.js +69 -9
  47. package/build/vendor/chrome-devtools-frontend/front_end/core/sdk/CSSMetadata.js +6 -6
  48. package/build/vendor/chrome-devtools-frontend/front_end/core/sdk/CSSModel.js +28 -13
  49. package/build/vendor/chrome-devtools-frontend/front_end/core/sdk/CSSProperty.js +1 -1
  50. package/build/vendor/chrome-devtools-frontend/front_end/core/sdk/CSSPropertyParserMatchers.js +6 -0
  51. package/build/vendor/chrome-devtools-frontend/front_end/core/sdk/ConsoleModel.js +0 -2
  52. package/build/vendor/chrome-devtools-frontend/front_end/core/sdk/CookieModel.js +1 -1
  53. package/build/vendor/chrome-devtools-frontend/front_end/core/sdk/DOMModel.js +170 -13
  54. package/build/vendor/chrome-devtools-frontend/front_end/core/sdk/DebuggerModel.js +5 -39
  55. package/build/vendor/chrome-devtools-frontend/front_end/core/sdk/HeapProfilerModel.js +8 -1
  56. package/build/vendor/chrome-devtools-frontend/front_end/core/sdk/NetworkManager.js +20 -5
  57. package/build/vendor/chrome-devtools-frontend/front_end/core/sdk/NetworkRequest.js +12 -21
  58. package/build/vendor/chrome-devtools-frontend/front_end/core/sdk/OverlayModel.js +19 -6
  59. package/build/vendor/chrome-devtools-frontend/front_end/core/sdk/RehydratingConnection.js +5 -1
  60. package/build/vendor/chrome-devtools-frontend/front_end/core/sdk/ResourceTreeModel.js +8 -5
  61. package/build/vendor/chrome-devtools-frontend/front_end/core/sdk/SourceMap.js +15 -10
  62. package/build/vendor/chrome-devtools-frontend/front_end/core/sdk/SourceMapManager.js +1 -1
  63. package/build/vendor/chrome-devtools-frontend/front_end/core/sdk/SourceMapScopesInfo.js +13 -27
  64. package/build/vendor/chrome-devtools-frontend/front_end/core/sdk/Target.js +3 -1
  65. package/build/vendor/chrome-devtools-frontend/front_end/generated/ARIAProperties.js +1 -7
  66. package/build/vendor/chrome-devtools-frontend/front_end/generated/Deprecation.js +1 -16
  67. package/build/vendor/chrome-devtools-frontend/front_end/generated/InspectorBackendCommands.js +82 -22
  68. package/build/vendor/chrome-devtools-frontend/front_end/generated/SupportedCSSProperties.js +265 -123
  69. package/build/vendor/chrome-devtools-frontend/front_end/models/ai_assistance/data_formatters/NetworkRequestFormatter.js +2 -1
  70. package/build/vendor/chrome-devtools-frontend/front_end/models/ai_assistance/data_formatters/PerformanceInsightFormatter.js +10 -16
  71. package/build/vendor/chrome-devtools-frontend/front_end/models/ai_assistance/data_formatters/PerformanceTraceFormatter.js +97 -26
  72. package/build/vendor/chrome-devtools-frontend/front_end/models/ai_assistance/performance/AICallTree.js +35 -0
  73. package/build/vendor/chrome-devtools-frontend/front_end/models/annotations/AnnotationRepository.js +163 -0
  74. package/build/vendor/chrome-devtools-frontend/front_end/models/annotations/AnnotationType.js +10 -0
  75. package/build/vendor/chrome-devtools-frontend/front_end/models/annotations/annotations.js +5 -0
  76. package/build/vendor/chrome-devtools-frontend/front_end/models/bindings/CompilerScriptMapping.js +5 -3
  77. package/build/vendor/chrome-devtools-frontend/front_end/models/bindings/DebuggerLanguagePlugins.js +29 -58
  78. package/build/vendor/chrome-devtools-frontend/front_end/models/bindings/DebuggerWorkspaceBinding.js +7 -45
  79. package/build/vendor/chrome-devtools-frontend/front_end/models/emulation/DeviceModeModel.js +1 -1
  80. package/build/vendor/chrome-devtools-frontend/front_end/models/emulation/EmulatedDevices.js +14 -0
  81. package/build/vendor/chrome-devtools-frontend/front_end/models/formatter/FormatterWorkerPool.js +8 -5
  82. package/build/vendor/chrome-devtools-frontend/front_end/models/greendev/Prototypes.js +33 -0
  83. package/build/vendor/chrome-devtools-frontend/front_end/models/greendev/greendev.js +4 -0
  84. package/build/vendor/chrome-devtools-frontend/front_end/models/issues_manager/ContrastCheckTrigger.js +2 -2
  85. package/build/vendor/chrome-devtools-frontend/front_end/models/issues_manager/CookieIssue.js +0 -21
  86. package/build/vendor/chrome-devtools-frontend/front_end/models/issues_manager/CorsIssue.js +1 -38
  87. package/build/vendor/chrome-devtools-frontend/front_end/models/issues_manager/IssueAggregator.js +8 -0
  88. package/build/vendor/chrome-devtools-frontend/front_end/models/issues_manager/IssuesManager.js +6 -12
  89. package/build/vendor/chrome-devtools-frontend/front_end/models/issues_manager/PermissionElementIssue.js +243 -0
  90. package/build/vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/permissionElementActivationDisabled.md +7 -0
  91. package/build/vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/permissionElementActivationDisabledWithOccluder.md +9 -0
  92. package/build/vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/permissionElementActivationDisabledWithOccluderParent.md +9 -0
  93. package/build/vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/permissionElementCspFrameAncestorsMissing.md +5 -0
  94. package/build/vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/permissionElementFencedFrameDisallowed.md +5 -0
  95. package/build/vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/permissionElementFontSizeTooLarge.md +5 -0
  96. package/build/vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/permissionElementFontSizeTooSmall.md +5 -0
  97. package/build/vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/permissionElementGeolocationDeprecated.md +5 -0
  98. package/build/vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/permissionElementInsetBoxShadowUnsupported.md +5 -0
  99. package/build/vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/permissionElementInvalidDisplayStyle.md +5 -0
  100. package/build/vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/permissionElementInvalidSizeValue.md +5 -0
  101. package/build/vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/permissionElementInvalidType.md +5 -0
  102. package/build/vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/permissionElementInvalidTypeActivation.md +5 -0
  103. package/build/vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/permissionElementLowContrast.md +5 -0
  104. package/build/vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/permissionElementNonOpaqueColor.md +5 -0
  105. package/build/vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/permissionElementPaddingBottomUnsupported.md +6 -0
  106. package/build/vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/permissionElementPaddingRightUnsupported.md +6 -0
  107. package/build/vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/permissionElementPermissionsPolicyBlocked.md +5 -0
  108. package/build/vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/permissionElementRegistrationFailed.md +5 -0
  109. package/build/vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/permissionElementRequestInProgress.md +5 -0
  110. package/build/vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/permissionElementSecurityChecksFailed.md +5 -0
  111. package/build/vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/permissionElementTypeNotSupported.md +5 -0
  112. package/build/vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/permissionElementUntrustedEvent.md +7 -0
  113. package/build/vendor/chrome-devtools-frontend/front_end/models/issues_manager/issues_manager.js +2 -1
  114. package/build/vendor/chrome-devtools-frontend/front_end/models/logs/NetworkLog.js +0 -8
  115. package/build/vendor/chrome-devtools-frontend/front_end/models/source_map_scopes/NamesResolver.js +4 -8
  116. package/build/vendor/chrome-devtools-frontend/front_end/models/stack_trace/StackTrace.js +30 -1
  117. package/build/vendor/chrome-devtools-frontend/front_end/models/stack_trace/StackTraceImpl.js +70 -1
  118. package/build/vendor/chrome-devtools-frontend/front_end/models/stack_trace/StackTraceModel.js +82 -30
  119. package/build/vendor/chrome-devtools-frontend/front_end/models/trace/EventsSerializer.js +10 -2
  120. package/build/vendor/chrome-devtools-frontend/front_end/models/trace/LanternComputationData.js +2 -2
  121. package/build/vendor/chrome-devtools-frontend/front_end/models/trace/ModelImpl.js +0 -3
  122. package/build/vendor/chrome-devtools-frontend/front_end/models/trace/Processor.js +18 -19
  123. package/build/vendor/chrome-devtools-frontend/front_end/models/trace/Styles.js +12 -4
  124. package/build/vendor/chrome-devtools-frontend/front_end/models/trace/extras/Initiators.js +46 -0
  125. package/build/vendor/chrome-devtools-frontend/front_end/models/trace/extras/TraceTree.js +4 -3
  126. package/build/vendor/chrome-devtools-frontend/front_end/models/trace/extras/extras.js +1 -0
  127. package/build/vendor/chrome-devtools-frontend/front_end/models/trace/handlers/LargestImagePaintHandler.js +2 -2
  128. package/build/vendor/chrome-devtools-frontend/front_end/models/trace/handlers/LayoutShiftsHandler.js +1 -1
  129. package/build/vendor/chrome-devtools-frontend/front_end/models/trace/handlers/MetaHandler.js +6 -0
  130. package/build/vendor/chrome-devtools-frontend/front_end/models/trace/handlers/NetworkRequestsHandler.js +10 -1
  131. package/build/vendor/chrome-devtools-frontend/front_end/models/trace/handlers/PageLoadMetricsHandler.js +44 -27
  132. package/build/vendor/chrome-devtools-frontend/front_end/models/trace/helpers/Timing.js +9 -2
  133. package/build/vendor/chrome-devtools-frontend/front_end/models/trace/insights/Common.js +1 -6
  134. package/build/vendor/chrome-devtools-frontend/front_end/models/trace/insights/LCPBreakdown.js +2 -2
  135. package/build/vendor/chrome-devtools-frontend/front_end/models/trace/insights/LCPDiscovery.js +2 -4
  136. package/build/vendor/chrome-devtools-frontend/front_end/models/trace/insights/NetworkDependencyTree.js +3 -2
  137. package/build/vendor/chrome-devtools-frontend/front_end/models/trace/insights/RenderBlocking.js +1 -1
  138. package/build/vendor/chrome-devtools-frontend/front_end/models/trace/types/TraceEvents.js +33 -11
  139. package/build/vendor/chrome-devtools-frontend/front_end/third_party/source-map-scopes-codec/package/src/decode/decode.js +51 -18
  140. package/build/vendor/chrome-devtools-frontend/front_end/third_party/source-map-scopes-codec/package/src/encode/encoder.js +1 -1
  141. package/build/vendor/chrome-devtools-frontend/front_end/third_party/source-map-scopes-codec/package/src/scopes.js +4 -0
  142. package/build/vendor/chrome-devtools-frontend/mcp/HostBindings.js +4 -0
  143. package/build/vendor/chrome-devtools-frontend/mcp/mcp.js +4 -0
  144. package/package.json +17 -10
  145. package/build/vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/SameSiteInvalidSameParty.md +0 -8
  146. package/build/vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/SameSiteSamePartyCrossPartyContextSet.md +0 -10
@@ -362,10 +362,6 @@ export class AnimationModel extends SDKModel {
362
362
  this.playbackRate = playbackRate;
363
363
  void this.agent.invoke_setPlaybackRate({ playbackRate });
364
364
  }
365
- async releaseAllAnimations() {
366
- const animationIds = [...this.animationGroups.values()].flatMap(animationGroup => animationGroup.animations().map(animation => animation.id()));
367
- await this.agent.invoke_releaseAnimations({ animations: animationIds });
368
- }
369
365
  releaseAnimations(animations) {
370
366
  void this.agent.invoke_releaseAnimations({ animations });
371
367
  }
@@ -474,10 +474,10 @@ export class CSSMatchedStyles {
474
474
  // Now that we've built the arrays of NodeCascades for each pseudo type, convert them into
475
475
  // DOMInheritanceCascades.
476
476
  for (const [pseudoType, nodeCascade] of pseudoCascades.entries()) {
477
- pseudoInheritanceCascades.set(pseudoType, new DOMInheritanceCascade(this, nodeCascade, this.#registeredProperties));
477
+ pseudoInheritanceCascades.set(pseudoType, new DOMInheritanceCascade(this, nodeCascade, this.#registeredProperties, this.#mainDOMCascade));
478
478
  }
479
479
  for (const [highlightName, nodeCascade] of customHighlightPseudoCascades.entries()) {
480
- customHighlightPseudoInheritanceCascades.set(highlightName, new DOMInheritanceCascade(this, nodeCascade, this.#registeredProperties));
480
+ customHighlightPseudoInheritanceCascades.set(highlightName, new DOMInheritanceCascade(this, nodeCascade, this.#registeredProperties, this.#mainDOMCascade));
481
481
  }
482
482
  return [pseudoInheritanceCascades, customHighlightPseudoInheritanceCascades];
483
483
  }
@@ -685,6 +685,10 @@ export class CSSMatchedStyles {
685
685
  const domCascade = this.#styleToDOMCascade.get(property.ownerStyle);
686
686
  return domCascade ? domCascade.propertyState(property) : null;
687
687
  }
688
+ isPropertyOverriddenByAnimation(property) {
689
+ const domCascade = this.#styleToDOMCascade.get(property.ownerStyle);
690
+ return domCascade?.isPropertyOverriddenByAnimation(property) ?? false;
691
+ }
688
692
  resetActiveProperties() {
689
693
  Platform.assertNotNullOrUndefined(this.#mainDOMCascade);
690
694
  Platform.assertNotNullOrUndefined(this.#pseudoDOMCascades);
@@ -730,22 +734,24 @@ export class CSSMatchedStyles {
730
734
  }
731
735
  }
732
736
  class NodeCascade {
737
+ isHighlightPseudoCascade;
733
738
  #matchedStyles;
734
739
  styles;
735
740
  #isInherited;
736
- #isHighlightPseudoCascade;
737
741
  propertiesState = new Map();
742
+ propertiesOverriddenByAnimation = new Set();
738
743
  activeProperties = new Map();
739
744
  #node;
740
745
  constructor(matchedStyles, styles, node, isInherited, isHighlightPseudoCascade = false) {
746
+ this.isHighlightPseudoCascade = isHighlightPseudoCascade;
741
747
  this.#matchedStyles = matchedStyles;
742
748
  this.styles = styles;
743
749
  this.#isInherited = isInherited;
744
- this.#isHighlightPseudoCascade = isHighlightPseudoCascade;
745
750
  this.#node = node;
746
751
  }
747
752
  computeActiveProperties() {
748
753
  this.propertiesState.clear();
754
+ this.propertiesOverriddenByAnimation.clear();
749
755
  this.activeProperties.clear();
750
756
  for (let i = this.styles.length - 1; i >= 0; i--) {
751
757
  const style = this.styles[i];
@@ -760,9 +766,17 @@ class NodeCascade {
760
766
  for (const property of style.allProperties()) {
761
767
  // Do not pick non-inherited properties from inherited styles.
762
768
  const metadata = cssMetadata();
763
- // All properties are inherited for highlight pseudos.
764
- if (this.#isInherited && !this.#isHighlightPseudoCascade && !metadata.isPropertyInherited(property.name)) {
765
- continue;
769
+ if (this.#isInherited) {
770
+ if (this.isHighlightPseudoCascade) {
771
+ // All properties are inherited for highlight pseudos, but custom
772
+ // variables do not come from the inherited pseudo elements.
773
+ if (property.name.startsWith('--')) {
774
+ continue;
775
+ }
776
+ }
777
+ else if (!metadata.isPropertyInherited(property.name)) {
778
+ continue;
779
+ }
766
780
  }
767
781
  // When a property does not have a range in an otherwise ranged CSSStyleDeclaration,
768
782
  // we consider it as a non-leading property (see computeLeadingProperties()), and most
@@ -833,6 +847,10 @@ class NodeCascade {
833
847
  }
834
848
  if (activeProperty) {
835
849
  this.propertiesState.set(activeProperty, "Overloaded" /* PropertyState.OVERLOADED */);
850
+ if (propertyWithHigherSpecificity.ownerStyle.type === Type.Animation ||
851
+ propertyWithHigherSpecificity.ownerStyle.type === Type.Transition) {
852
+ this.propertiesOverriddenByAnimation.add(activeProperty);
853
+ }
836
854
  }
837
855
  this.propertiesState.set(propertyWithHigherSpecificity, "Active" /* PropertyState.ACTIVE */);
838
856
  this.activeProperties.set(canonicalName, propertyWithHigherSpecificity);
@@ -913,6 +931,7 @@ function* forEach(array, startAfter) {
913
931
  }
914
932
  class DOMInheritanceCascade {
915
933
  #propertiesState = new Map();
934
+ #propertiesOverriddenByAnimation = new Set();
916
935
  #availableCSSVariables = new Map();
917
936
  #computedCSSVariables = new Map();
918
937
  #styleToNodeCascade = new Map();
@@ -920,13 +939,24 @@ class DOMInheritanceCascade {
920
939
  #nodeCascades;
921
940
  #registeredProperties;
922
941
  #matchedStyles;
923
- constructor(matchedStyles, nodeCascades, registeredProperties) {
942
+ #fallbackCascade = null;
943
+ #styles = [];
944
+ constructor(matchedStyles, nodeCascades, registeredProperties, fallbackCascade = null) {
924
945
  this.#nodeCascades = nodeCascades;
925
946
  this.#matchedStyles = matchedStyles;
926
947
  this.#registeredProperties = registeredProperties;
948
+ this.#fallbackCascade = fallbackCascade;
927
949
  for (const nodeCascade of nodeCascades) {
928
950
  for (const style of nodeCascade.styles) {
929
951
  this.#styleToNodeCascade.set(style, nodeCascade);
952
+ this.#styles.push(style);
953
+ }
954
+ }
955
+ if (fallbackCascade) {
956
+ for (const [style, nodeCascade] of fallbackCascade.#styleToNodeCascade) {
957
+ if (!this.#styles.includes(style)) {
958
+ this.#styleToNodeCascade.set(style, nodeCascade);
959
+ }
930
960
  }
931
961
  }
932
962
  }
@@ -981,6 +1011,9 @@ class DOMInheritanceCascade {
981
1011
  }
982
1012
  }
983
1013
  }
1014
+ if (this.#fallbackCascade && (!nodeCascade.isHighlightPseudoCascade || property.name.startsWith('--'))) {
1015
+ return this.#fallbackCascade.resolveProperty(property.name, property.ownerStyle);
1016
+ }
984
1017
  return null;
985
1018
  }
986
1019
  #findPropertyInParentCascadeIfInherited(property) {
@@ -1224,15 +1257,20 @@ class DOMInheritanceCascade {
1224
1257
  }
1225
1258
  }
1226
1259
  styles() {
1227
- return Array.from(this.#styleToNodeCascade.keys());
1260
+ return this.#styles;
1228
1261
  }
1229
1262
  propertyState(property) {
1230
1263
  this.ensureInitialized();
1231
1264
  return this.#propertiesState.get(property) || null;
1232
1265
  }
1266
+ isPropertyOverriddenByAnimation(property) {
1267
+ this.ensureInitialized();
1268
+ return this.#propertiesOverriddenByAnimation.has(property);
1269
+ }
1233
1270
  reset() {
1234
1271
  this.#initialized = false;
1235
1272
  this.#propertiesState.clear();
1273
+ this.#propertiesOverriddenByAnimation.clear();
1236
1274
  this.#availableCSSVariables.clear();
1237
1275
  this.#computedCSSVariables.clear();
1238
1276
  }
@@ -1247,11 +1285,20 @@ class DOMInheritanceCascade {
1247
1285
  for (const [property, state] of nodeCascade.propertiesState) {
1248
1286
  if (state === "Overloaded" /* PropertyState.OVERLOADED */) {
1249
1287
  this.#propertiesState.set(property, "Overloaded" /* PropertyState.OVERLOADED */);
1288
+ if (nodeCascade.propertiesOverriddenByAnimation.has(property)) {
1289
+ this.#propertiesOverriddenByAnimation.add(property);
1290
+ }
1250
1291
  continue;
1251
1292
  }
1252
1293
  const canonicalName = cssMetadata().canonicalPropertyName(property.name);
1253
1294
  if (activeProperties.has(canonicalName)) {
1254
1295
  this.#propertiesState.set(property, "Overloaded" /* PropertyState.OVERLOADED */);
1296
+ const activeProperty = activeProperties.get(canonicalName);
1297
+ if (activeProperty &&
1298
+ (activeProperty.ownerStyle.type === Type.Animation ||
1299
+ activeProperty.ownerStyle.type === Type.Transition)) {
1300
+ this.#propertiesOverriddenByAnimation.add(property);
1301
+ }
1255
1302
  continue;
1256
1303
  }
1257
1304
  activeProperties.set(canonicalName, property);
@@ -1289,6 +1336,19 @@ class DOMInheritanceCascade {
1289
1336
  const initialValue = rule.initialValue();
1290
1337
  accumulatedCSSVariables.set(rule.propertyName(), initialValue !== null ? { value: initialValue, declaration: new CSSValueSource(rule) } : null);
1291
1338
  }
1339
+ if (this.#fallbackCascade) {
1340
+ this.#fallbackCascade.ensureInitialized();
1341
+ for (const [cascade, available] of this.#fallbackCascade.#availableCSSVariables) {
1342
+ this.#availableCSSVariables.set(cascade, available);
1343
+ }
1344
+ for (const [cascade, computed] of this.#fallbackCascade.#computedCSSVariables) {
1345
+ this.#computedCSSVariables.set(cascade, computed);
1346
+ }
1347
+ for (const [key, value] of this.#fallbackCascade.#availableCSSVariables.get(this.#fallbackCascade.#nodeCascades[0]) ??
1348
+ []) {
1349
+ accumulatedCSSVariables.set(key, value);
1350
+ }
1351
+ }
1292
1352
  for (let i = this.#nodeCascades.length - 1; i >= 0; --i) {
1293
1353
  const nodeCascade = this.#nodeCascades[i];
1294
1354
  const variableNames = [];
@@ -526,7 +526,7 @@ const extraPropertyValues = new Map([
526
526
  ['background-repeat', new Set(['repeat', 'repeat-x', 'repeat-y', 'no-repeat', 'space', 'round'])],
527
527
  ['content', new Set(['normal', 'close-quote', 'no-close-quote', 'no-open-quote', 'open-quote'])],
528
528
  ['baseline-shift', new Set(['baseline'])],
529
- ['max-height', new Set(['min-content', 'max-content', '-webkit-fill-available', 'fit-content'])],
529
+ ['max-height', new Set(['min-content', 'max-content', '-webkit-fill-available', 'fit-content', 'stretch'])],
530
530
  ['color', new Set(['black'])],
531
531
  ['background-color', new Set(['white'])],
532
532
  ['box-shadow', new Set(['inset'])],
@@ -600,7 +600,7 @@ const extraPropertyValues = new Map([
600
600
  ]),
601
601
  ],
602
602
  ['zoom', new Set(['normal'])],
603
- ['max-width', new Set(['min-content', 'max-content', '-webkit-fill-available', 'fit-content'])],
603
+ ['max-width', new Set(['min-content', 'max-content', '-webkit-fill-available', 'fit-content', 'stretch'])],
604
604
  ['-webkit-font-smoothing', new Set(['antialiased', 'subpixel-antialiased'])],
605
605
  [
606
606
  'border',
@@ -991,7 +991,7 @@ const extraPropertyValues = new Map([
991
991
  ]),
992
992
  ],
993
993
  ['flex-flow', new Set(['nowrap', 'row', 'row-reverse', 'column', 'column-reverse', 'wrap', 'wrap-reverse'])],
994
- ['height', new Set(['-webkit-fill-available'])],
994
+ ['height', new Set(['-webkit-fill-available', 'stretch'])],
995
995
  ['inline-size', new Set(['-webkit-fill-available', 'min-content', 'max-content', 'fit-content'])],
996
996
  [
997
997
  'list-style',
@@ -1058,9 +1058,9 @@ const extraPropertyValues = new Map([
1058
1058
  ['max-block-size', new Set(['-webkit-fill-available', 'min-content', 'max-content', 'fit-content'])],
1059
1059
  ['max-inline-size', new Set(['-webkit-fill-available', 'min-content', 'max-content', 'fit-content'])],
1060
1060
  ['min-block-size', new Set(['-webkit-fill-available', 'min-content', 'max-content', 'fit-content'])],
1061
- ['min-height', new Set(['-webkit-fill-available', 'min-content', 'max-content', 'fit-content'])],
1061
+ ['min-height', new Set(['-webkit-fill-available', 'min-content', 'max-content', 'fit-content', 'stretch'])],
1062
1062
  ['min-inline-size', new Set(['-webkit-fill-available', 'min-content', 'max-content', 'fit-content'])],
1063
- ['min-width', new Set(['-webkit-fill-available', 'min-content', 'max-content', 'fit-content'])],
1063
+ ['min-width', new Set(['-webkit-fill-available', 'min-content', 'max-content', 'fit-content', 'stretch'])],
1064
1064
  ['object-position', new Set(['top', 'bottom', 'left', 'right', 'center'])],
1065
1065
  ['shape-outside', new Set(['border-box', 'content-box', 'padding-box', 'margin-box'])],
1066
1066
  [
@@ -1222,7 +1222,7 @@ const extraPropertyValues = new Map([
1222
1222
  ['-webkit-text-stroke-width', new Set(['medium', 'thick', 'thin'])],
1223
1223
  ['-webkit-transform-origin-x', new Set(['left', 'right', 'center'])],
1224
1224
  ['-webkit-transform-origin-y', new Set(['top', 'bottom', 'center'])],
1225
- ['width', new Set(['-webkit-fill-available'])],
1225
+ ['width', new Set(['-webkit-fill-available', 'stretch'])],
1226
1226
  ['contain-intrinsic-width', new Set(['auto none', 'auto 100px'])],
1227
1227
  ['contain-intrinsic-height', new Set(['auto none', 'auto 100px'])],
1228
1228
  ['contain-intrinsic-size', new Set(['auto none', 'auto 100px'])],
@@ -296,6 +296,12 @@ export class CSSModel extends SDKModel {
296
296
  }
297
297
  return await this.#styleLoader.computedStylePromise(nodeId);
298
298
  }
299
+ async getComputedStyleExtraFields(nodeId) {
300
+ if (!this.isEnabled()) {
301
+ await this.enable();
302
+ }
303
+ return await this.#styleLoader.extraFieldsPromise(nodeId);
304
+ }
299
305
  async getLayoutPropertiesFromComputedStyle(nodeId) {
300
306
  const styles = await this.getComputedStyle(nodeId);
301
307
  if (!styles) {
@@ -317,7 +323,7 @@ export class CSSModel extends SDKModel {
317
323
  isGrid,
318
324
  isSubgrid,
319
325
  isGridLanes,
320
- isContainer,
326
+ containerType: isContainer ? containerType : undefined,
321
327
  hasScroll,
322
328
  };
323
329
  }
@@ -858,25 +864,34 @@ class ComputedStyleLoader {
858
864
  constructor(cssModel) {
859
865
  this.#cssModel = cssModel;
860
866
  }
861
- computedStylePromise(nodeId) {
867
+ #getResponsePromise(nodeId) {
862
868
  let promise = this.#nodeIdToPromise.get(nodeId);
863
869
  if (promise) {
864
870
  return promise;
865
871
  }
866
- promise = this.#cssModel.getAgent().invoke_getComputedStyleForNode({ nodeId }).then(({ computedStyle }) => {
867
- this.#nodeIdToPromise.delete(nodeId);
868
- if (!computedStyle?.length) {
869
- return null;
870
- }
871
- const result = new Map();
872
- for (const property of computedStyle) {
873
- result.set(property.name, property.value);
874
- }
875
- return result;
876
- });
872
+ promise =
873
+ this.#cssModel.getAgent().invoke_getComputedStyleForNode({ nodeId }).then(({ computedStyle, extraFields }) => {
874
+ this.#nodeIdToPromise.delete(nodeId);
875
+ if (!computedStyle?.length) {
876
+ return { style: null, extraFields };
877
+ }
878
+ const result = new Map();
879
+ for (const property of computedStyle) {
880
+ result.set(property.name, property.value);
881
+ }
882
+ return { style: result, extraFields };
883
+ });
877
884
  this.#nodeIdToPromise.set(nodeId, promise);
878
885
  return promise;
879
886
  }
887
+ async computedStylePromise(nodeId) {
888
+ const computedStyleWithExtraFields = await this.#getResponsePromise(nodeId);
889
+ return computedStyleWithExtraFields.style;
890
+ }
891
+ async extraFieldsPromise(nodeId) {
892
+ const computedStyleWithExtraFields = await this.#getResponsePromise(nodeId);
893
+ return computedStyleWithExtraFields.extraFields;
894
+ }
880
895
  }
881
896
  export class InlineStyleResult {
882
897
  inlineStyle;
@@ -77,7 +77,7 @@ export class CSSProperty extends Common.ObjectWrapper.ObjectWrapper {
77
77
  #matchers(matchedStyles, computedStyles) {
78
78
  const matchers = matchedStyles.propertyMatchers(this.ownerStyle, computedStyles);
79
79
  matchers.push(new CSSWideKeywordMatcher(this, matchedStyles));
80
- if (Root.Runtime.experiments.isEnabled('font-editor')) {
80
+ if (Root.Runtime.experiments.isEnabled(Root.ExperimentNames.ExperimentName.FONT_EDITOR)) {
81
81
  matchers.push(new FontMatcher());
82
82
  }
83
83
  return matchers;
@@ -926,6 +926,9 @@ export class MathFunctionMatch extends BaseFunctionMatch {
926
926
  case "calc" /* ArithmeticFunction.CALC */:
927
927
  case "sibling-count" /* ArithmeticFunction.SIBLING_COUNT */:
928
928
  case "sibling-index" /* ArithmeticFunction.SIBLING_INDEX */:
929
+ case "round" /* ArithmeticFunction.ROUND */:
930
+ case "mod" /* ArithmeticFunction.MOD */:
931
+ case "rem" /* ArithmeticFunction.REM */:
929
932
  return true;
930
933
  }
931
934
  // This assignment catches missed values in the switch above.
@@ -946,6 +949,9 @@ export class MathFunctionMatcher extends matcherBase(MathFunctionMatch) {
946
949
  case "calc" /* ArithmeticFunction.CALC */:
947
950
  case "sibling-count" /* ArithmeticFunction.SIBLING_COUNT */:
948
951
  case "sibling-index" /* ArithmeticFunction.SIBLING_INDEX */:
952
+ case "round" /* ArithmeticFunction.ROUND */:
953
+ case "mod" /* ArithmeticFunction.MOD */:
954
+ case "rem" /* ArithmeticFunction.REM */:
949
955
  return maybeFunc;
950
956
  }
951
957
  // This assignment catches missed values in the switch above.
@@ -433,7 +433,6 @@ export class ConsoleMessage {
433
433
  #exceptionId = undefined;
434
434
  #affectedResources;
435
435
  category;
436
- isCookieReportIssue = false;
437
436
  /**
438
437
  * The parent frame of the `console.log` call of logpoints or conditional breakpoints
439
438
  * if they called `console.*` explicitly. The parent frame is where V8 paused
@@ -460,7 +459,6 @@ export class ConsoleMessage {
460
459
  this.workerId = details?.workerId;
461
460
  this.#affectedResources = details?.affectedResources;
462
461
  this.category = details?.category;
463
- this.isCookieReportIssue = Boolean(details?.isCookieReportIssue);
464
462
  if (!this.#executionContextId && this.#runtimeModel) {
465
463
  if (this.scriptId) {
466
464
  this.#executionContextId = this.#runtimeModel.executionContextIdForScriptId(this.scriptId);
@@ -84,7 +84,7 @@ export class CookieModel extends SDKModel {
84
84
  if (cookie.expires()) {
85
85
  expires = Math.floor(Date.parse(`${cookie.expires()}`) / 1000);
86
86
  }
87
- const enabled = Root.Runtime.experiments.isEnabled('experimental-cookie-features');
87
+ const enabled = Root.Runtime.experiments.isEnabled(Root.ExperimentNames.ExperimentName.EXPERIMENTAL_COOKIE_FEATURES);
88
88
  const preserveUnset = (scheme) => scheme === "Unset" /* Protocol.Network.CookieSourceScheme.Unset */ ? scheme : undefined;
89
89
  const protocolCookie = {
90
90
  name: cookie.name(),