chrome-devtools-frontend 1.0.1558690 → 1.0.1561080

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 (167) hide show
  1. package/front_end/Images/src/container.svg +4 -0
  2. package/front_end/core/common/Gzip.ts +15 -0
  3. package/front_end/core/host/InspectorFrontendHostStub.ts +0 -3
  4. package/front_end/core/platform/ArrayUtilities.ts +13 -0
  5. package/front_end/core/root/Runtime.ts +0 -5
  6. package/front_end/core/sdk/CSSMetadata.ts +6 -6
  7. package/front_end/core/sdk/CSSModel.ts +2 -2
  8. package/front_end/core/sdk/DOMModel.ts +15 -3
  9. package/front_end/core/sdk/NetworkManager.ts +4 -0
  10. package/front_end/core/sdk/NetworkRequest.ts +9 -0
  11. package/front_end/core/sdk/OverlayModel.ts +20 -9
  12. package/front_end/entrypoints/main/MainImpl.ts +2 -1
  13. package/front_end/generated/InspectorBackendCommands.ts +6 -3
  14. package/front_end/generated/SupportedCSSProperties.js +64 -32
  15. package/front_end/generated/protocol-mapping.d.ts +16 -0
  16. package/front_end/generated/protocol-proxy-api.d.ts +12 -0
  17. package/front_end/generated/protocol.ts +38 -1
  18. package/front_end/models/ai_assistance/agents/StylingAgent.ts +1 -1
  19. package/front_end/models/ai_assistance/data_formatters/PerformanceInsightFormatter.ts +11 -7
  20. package/front_end/models/ai_assistance/data_formatters/PerformanceTraceFormatter.snapshot.txt +23 -22
  21. package/front_end/models/badges/UserBadges.ts +48 -16
  22. package/front_end/models/greendev/Prototypes.ts +6 -1
  23. package/front_end/models/trace/LanternComputationData.ts +4 -3
  24. package/front_end/models/trace/Processor.ts +6 -5
  25. package/front_end/models/trace/Styles.ts +10 -1
  26. package/front_end/models/trace/extras/TraceTree.ts +1 -1
  27. package/front_end/models/trace/handlers/LargestImagePaintHandler.ts +2 -2
  28. package/front_end/models/trace/handlers/MetaHandler.ts +14 -0
  29. package/front_end/models/trace/handlers/PageLoadMetricsHandler.ts +59 -34
  30. package/front_end/models/trace/helpers/Timing.ts +8 -1
  31. package/front_end/models/trace/insights/Common.ts +1 -1
  32. package/front_end/models/trace/insights/LCPBreakdown.ts +4 -4
  33. package/front_end/models/trace/insights/LCPDiscovery.ts +3 -3
  34. package/front_end/models/trace/insights/RenderBlocking.ts +1 -1
  35. package/front_end/models/trace/insights/types.ts +1 -1
  36. package/front_end/models/trace/types/TraceEvents.ts +62 -10
  37. package/front_end/panels/ai_assistance/AiAssistancePanel.ts +11 -142
  38. package/front_end/panels/ai_assistance/PatchWidget.ts +90 -72
  39. package/front_end/panels/ai_assistance/ai_assistance.ts +1 -0
  40. package/front_end/panels/ai_assistance/components/ChatInput.ts +701 -0
  41. package/front_end/panels/ai_assistance/components/ChatView.ts +71 -1268
  42. package/front_end/panels/ai_assistance/components/UserActionRow.ts +514 -31
  43. package/front_end/panels/ai_assistance/components/chatInput.css +387 -0
  44. package/front_end/panels/ai_assistance/components/chatView.css +38 -599
  45. package/front_end/panels/ai_assistance/components/userActionRow.css +230 -0
  46. package/front_end/panels/autofill/AutofillView.ts +2 -2
  47. package/front_end/panels/changes/ChangesView.ts +15 -1
  48. package/front_end/panels/changes/changesView.css +6 -0
  49. package/front_end/panels/common/AiCodeGenerationTeaser.ts +48 -12
  50. package/front_end/panels/common/BadgeNotification.ts +44 -58
  51. package/front_end/panels/common/CopyChangesToPrompt.ts +233 -0
  52. package/front_end/panels/common/aiCodeGenerationTeaser.css +14 -0
  53. package/front_end/panels/common/common.ts +2 -1
  54. package/front_end/panels/console/consoleView.css +1 -1
  55. package/front_end/panels/elements/CSSRuleValidator.ts +38 -0
  56. package/front_end/panels/elements/ElementsTreeElement.ts +222 -377
  57. package/front_end/panels/elements/ElementsTreeOutline.ts +0 -23
  58. package/front_end/panels/elements/ShortcutTreeElement.ts +57 -50
  59. package/front_end/panels/elements/StylePropertiesSection.ts +1 -3
  60. package/front_end/panels/elements/StylesSidebarPane.ts +15 -4
  61. package/front_end/panels/elements/components/AdornerManager.ts +5 -149
  62. package/front_end/panels/issues/HiddenIssuesRow.ts +1 -2
  63. package/front_end/panels/issues/IssueKindView.ts +2 -4
  64. package/front_end/panels/issues/IssueView.ts +2 -4
  65. package/front_end/panels/network/NetworkDataGridNode.ts +65 -1
  66. package/front_end/panels/network/NetworkLogView.ts +2 -4
  67. package/front_end/panels/network/NetworkLogViewColumns.ts +9 -0
  68. package/front_end/panels/screencast/ScreencastApp.ts +1 -0
  69. package/front_end/panels/settings/SettingsScreen.ts +3 -2
  70. package/front_end/panels/timeline/CompatibilityTracksAppender.ts +14 -1
  71. package/front_end/panels/timeline/StatusDialog.ts +4 -3
  72. package/front_end/panels/timeline/ThirdPartyTreeView.ts +1 -4
  73. package/front_end/panels/timeline/TimelineController.ts +185 -3
  74. package/front_end/panels/timeline/TimelineFlameChartDataProvider.ts +52 -25
  75. package/front_end/panels/timeline/TimelineFlameChartNetworkDataProvider.ts +3 -16
  76. package/front_end/panels/timeline/TimelineFlameChartView.ts +65 -21
  77. package/front_end/panels/timeline/TimelinePanel.ts +86 -126
  78. package/front_end/panels/timeline/TimelineTreeView.ts +1 -0
  79. package/front_end/panels/timeline/TimelineUIUtils.ts +28 -2
  80. package/front_end/panels/timeline/TimingsTrackAppender.ts +3 -1
  81. package/front_end/panels/timeline/components/SidebarSingleInsightSet.ts +1 -1
  82. package/front_end/panels/timeline/components/insights/BaseInsightComponent.ts +2 -2
  83. package/front_end/panels/timeline/components/insights/RenderBlocking.ts +6 -4
  84. package/front_end/panels/timeline/components/insights/Table.ts +3 -3
  85. package/front_end/panels/timeline/overlays/OverlaysImpl.ts +4 -0
  86. package/front_end/panels/timeline/timelinePanel.css +8 -1
  87. package/front_end/panels/timeline/utils/EntryNodes.ts +2 -1
  88. package/front_end/panels/whats_new/ReleaseNoteText.ts +15 -9
  89. package/front_end/panels/whats_new/resources/WNDT.md +6 -6
  90. package/front_end/third_party/chromium/README.chromium +1 -1
  91. package/front_end/third_party/codemirror.next/rebuild.sh +1 -1
  92. package/front_end/third_party/lit/rebuild.sh +1 -1
  93. package/front_end/third_party/puppeteer/README.chromium +2 -2
  94. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Page.d.ts +2 -3
  95. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Page.d.ts.map +1 -1
  96. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Page.js.map +1 -1
  97. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/HTTPRequest.d.ts.map +1 -1
  98. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/HTTPRequest.js +9 -0
  99. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/HTTPRequest.js.map +1 -1
  100. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/HTTPResponse.d.ts +3 -0
  101. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/HTTPResponse.d.ts.map +1 -1
  102. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/HTTPResponse.js +9 -0
  103. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/HTTPResponse.js.map +1 -1
  104. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/core/Request.d.ts +3 -0
  105. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/core/Request.d.ts.map +1 -1
  106. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/core/Request.js +10 -0
  107. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/core/Request.js.map +1 -1
  108. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Browser.d.ts.map +1 -1
  109. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Browser.js +8 -4
  110. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Browser.js.map +1 -1
  111. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/generated/injected.d.ts +1 -1
  112. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/generated/injected.d.ts.map +1 -1
  113. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/generated/injected.js +1 -1
  114. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/generated/injected.js.map +1 -1
  115. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/injected/injected.d.ts +1 -1
  116. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/revisions.d.ts +3 -3
  117. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/revisions.js +3 -3
  118. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/revisions.js.map +1 -1
  119. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/util/Mutex.d.ts +2 -2
  120. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/util/version.d.ts +1 -1
  121. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/util/version.js +1 -1
  122. package/front_end/third_party/puppeteer/package/lib/es5-iife/puppeteer-core-browser.d.ts +10 -1
  123. package/front_end/third_party/puppeteer/package/lib/es5-iife/puppeteer-core-browser.js +13 -7
  124. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Page.d.ts +2 -3
  125. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Page.d.ts.map +1 -1
  126. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Page.js.map +1 -1
  127. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/HTTPRequest.d.ts.map +1 -1
  128. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/HTTPRequest.js +9 -0
  129. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/HTTPRequest.js.map +1 -1
  130. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/HTTPResponse.d.ts +3 -0
  131. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/HTTPResponse.d.ts.map +1 -1
  132. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/HTTPResponse.js +9 -0
  133. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/HTTPResponse.js.map +1 -1
  134. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/core/Request.d.ts +3 -0
  135. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/core/Request.d.ts.map +1 -1
  136. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/core/Request.js +10 -0
  137. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/core/Request.js.map +1 -1
  138. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Browser.d.ts.map +1 -1
  139. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Browser.js +8 -4
  140. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Browser.js.map +1 -1
  141. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/generated/injected.d.ts +1 -1
  142. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/generated/injected.d.ts.map +1 -1
  143. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/generated/injected.js +1 -1
  144. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/generated/injected.js.map +1 -1
  145. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/revisions.d.ts +3 -3
  146. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/revisions.js +3 -3
  147. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/revisions.js.map +1 -1
  148. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/util/version.d.ts +1 -1
  149. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/util/version.js +1 -1
  150. package/front_end/third_party/puppeteer/package/lib/types.d.ts +10 -1
  151. package/front_end/third_party/puppeteer/package/package.json +3 -3
  152. package/front_end/third_party/puppeteer/package/src/api/Page.ts +2 -3
  153. package/front_end/third_party/puppeteer/package/src/bidi/HTTPRequest.ts +13 -0
  154. package/front_end/third_party/puppeteer/package/src/bidi/HTTPResponse.ts +10 -0
  155. package/front_end/third_party/puppeteer/package/src/bidi/core/Request.ts +15 -0
  156. package/front_end/third_party/puppeteer/package/src/cdp/Browser.ts +9 -4
  157. package/front_end/third_party/puppeteer/package/src/generated/injected.ts +1 -1
  158. package/front_end/third_party/puppeteer/package/src/revisions.ts +3 -3
  159. package/front_end/third_party/puppeteer/package/src/util/version.ts +1 -1
  160. package/front_end/ui/components/adorners/Adorner.ts +8 -68
  161. package/front_end/ui/components/text_editor/AiCodeGenerationProvider.ts +70 -28
  162. package/front_end/ui/legacy/SearchableView.ts +11 -5
  163. package/front_end/ui/legacy/SplitWidget.ts +1 -1
  164. package/front_end/ui/legacy/TabbedPane.ts +1 -1
  165. package/front_end/ui/legacy/components/perf_ui/FlameChart.ts +43 -9
  166. package/front_end/ui/visual_logging/KnownContextValues.ts +16 -0
  167. package/package.json +2 -1
@@ -0,0 +1,4 @@
1
+ <svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <path d="M4.5 17C4.08333 17 3.72933 16.854 3.438 16.562C3.146 16.2707 3 15.9167 3 15.5V4.5C3 4.08333 3.146 3.72933 3.438 3.438C3.72933 3.146 4.08333 3 4.5 3H15.5C15.9167 3 16.2707 3.146 16.562 3.438C16.854 3.72933 17 4.08333 17 4.5V15.5C17 15.9167 16.854 16.2707 16.562 16.562C16.2707 16.854 15.9167 17 15.5 17H4.5ZM4.5 15.5H15.5V4.5H4.5V15.5Z" fill="black"/>
3
+ <path d="M6.85714 14C6.61905 14 6.41676 13.9166 6.25029 13.7497C6.08343 13.5833 6 13.381 6 13.1429V6.85714C6 6.61905 6.08343 6.41676 6.25029 6.25029C6.41676 6.08343 6.61905 6 6.85714 6H13.1429C13.381 6 13.5833 6.08343 13.7497 6.25029C13.9166 6.41676 14 6.61905 14 6.85714V13.1429C14 13.381 13.9166 13.5833 13.7497 13.7497C13.5833 13.9166 13.381 14 13.1429 14H6.85714ZM7.5 12.5H12.5V7.5H7.5V12.5Z" fill="black"/>
4
+ </svg>
@@ -68,7 +68,22 @@ export function decompressStream(stream: ReadableStream): ReadableStream {
68
68
  const ds = new DecompressionStream('gzip');
69
69
  return stream.pipeThrough(ds);
70
70
  }
71
+
71
72
  export function compressStream(stream: ReadableStream): ReadableStream {
72
73
  const cs = new CompressionStream('gzip');
73
74
  return stream.pipeThrough(cs);
74
75
  }
76
+
77
+ export function createMonitoredStream(stream: ReadableStream, onProgress: (bytesRead: number) => void): ReadableStream {
78
+ let bytesRead = 0;
79
+
80
+ const progressTransformer = new TransformStream({
81
+ transform(chunk, controller) {
82
+ bytesRead += chunk.byteLength;
83
+ onProgress(bytesRead);
84
+ controller.enqueue(chunk);
85
+ }
86
+ });
87
+
88
+ return stream.pipeThrough(progressTransformer);
89
+ }
@@ -397,9 +397,6 @@ export class InspectorFrontendHostStub implements InspectorFrontendHostAPI {
397
397
  devToolsFlexibleLayout: {
398
398
  verticalDrawerEnabled: true,
399
399
  },
400
- devToolsStartingStyleDebugging: {
401
- enabled: false,
402
- },
403
400
  };
404
401
  if ('hostConfigForTesting' in globalThis) {
405
402
  const {hostConfigForTesting} = (globalThis as unknown as {hostConfigForTesting: Root.Runtime.HostConfig});
@@ -269,3 +269,16 @@ export function nearestIndexFromEnd<T>(arr: readonly T[], predicate: (arrayItem:
269
269
  export function arrayDoesNotContainNullOrUndefined<T>(arr: Array<T|null|undefined>): arr is T[] {
270
270
  return !arr.includes(null) && !arr.includes(undefined);
271
271
  }
272
+
273
+ export function assertArrayIsSorted<T>(arr: readonly T[], compareFn?: (a: T, b: T) => number): void {
274
+ const comparator = compareFn || (DEFAULT_COMPARATOR as unknown as (a: T, b: T) => number);
275
+
276
+ for (let i = 0; i < arr.length - 1; i++) {
277
+ const current = arr[i];
278
+ const next = arr[i + 1];
279
+
280
+ if (comparator(current, next) > 0) {
281
+ throw new Error(`Array is not sorted at index ${i}: ${JSON.stringify(current)} > ${JSON.stringify(next)}`);
282
+ }
283
+ }
284
+ }
@@ -505,10 +505,6 @@ interface DevToolsFlexibleLayout {
505
505
  verticalDrawerEnabled: boolean;
506
506
  }
507
507
 
508
- interface DevToolsStartingStyleDebugging {
509
- enabled: boolean;
510
- }
511
-
512
508
  interface AiPromptApi {
513
509
  enabled: boolean;
514
510
  allowWithoutGpu: boolean;
@@ -570,7 +566,6 @@ export type HostConfig = Platform.TypeScriptUtilities.RecursivePartial<{
570
566
  devToolsGdpProfilesAvailability: GdpProfilesAvailability,
571
567
  devToolsLiveEdit: LiveEdit,
572
568
  devToolsFlexibleLayout: DevToolsFlexibleLayout,
573
- devToolsStartingStyleDebugging: DevToolsStartingStyleDebugging,
574
569
  devToolsAiPromptApi: AiPromptApi,
575
570
  devToolsEnableDurableMessages: DevToolsEnableDurableMessages,
576
571
  devToolsAiAssistanceContextSelectionAgent: HostConfigAiAssistanceContextSelectionAgent,
@@ -644,7 +644,7 @@ const extraPropertyValues = new Map<string, Set<string>>([
644
644
  ['background-repeat', new Set(['repeat', 'repeat-x', 'repeat-y', 'no-repeat', 'space', 'round'])],
645
645
  ['content', new Set(['normal', 'close-quote', 'no-close-quote', 'no-open-quote', 'open-quote'])],
646
646
  ['baseline-shift', new Set(['baseline'])],
647
- ['max-height', new Set(['min-content', 'max-content', '-webkit-fill-available', 'fit-content'])],
647
+ ['max-height', new Set(['min-content', 'max-content', '-webkit-fill-available', 'fit-content', 'stretch'])],
648
648
  ['color', new Set(['black'])],
649
649
  ['background-color', new Set(['white'])],
650
650
  ['box-shadow', new Set(['inset'])],
@@ -718,7 +718,7 @@ const extraPropertyValues = new Map<string, Set<string>>([
718
718
  ]),
719
719
  ],
720
720
  ['zoom', new Set(['normal'])],
721
- ['max-width', new Set(['min-content', 'max-content', '-webkit-fill-available', 'fit-content'])],
721
+ ['max-width', new Set(['min-content', 'max-content', '-webkit-fill-available', 'fit-content', 'stretch'])],
722
722
  ['-webkit-font-smoothing', new Set(['antialiased', 'subpixel-antialiased'])],
723
723
  [
724
724
  'border',
@@ -1109,7 +1109,7 @@ const extraPropertyValues = new Map<string, Set<string>>([
1109
1109
  ]),
1110
1110
  ],
1111
1111
  ['flex-flow', new Set(['nowrap', 'row', 'row-reverse', 'column', 'column-reverse', 'wrap', 'wrap-reverse'])],
1112
- ['height', new Set(['-webkit-fill-available'])],
1112
+ ['height', new Set(['-webkit-fill-available', 'stretch'])],
1113
1113
  ['inline-size', new Set(['-webkit-fill-available', 'min-content', 'max-content', 'fit-content'])],
1114
1114
  [
1115
1115
  'list-style',
@@ -1176,9 +1176,9 @@ const extraPropertyValues = new Map<string, Set<string>>([
1176
1176
  ['max-block-size', new Set(['-webkit-fill-available', 'min-content', 'max-content', 'fit-content'])],
1177
1177
  ['max-inline-size', new Set(['-webkit-fill-available', 'min-content', 'max-content', 'fit-content'])],
1178
1178
  ['min-block-size', new Set(['-webkit-fill-available', 'min-content', 'max-content', 'fit-content'])],
1179
- ['min-height', new Set(['-webkit-fill-available', 'min-content', 'max-content', 'fit-content'])],
1179
+ ['min-height', new Set(['-webkit-fill-available', 'min-content', 'max-content', 'fit-content', 'stretch'])],
1180
1180
  ['min-inline-size', new Set(['-webkit-fill-available', 'min-content', 'max-content', 'fit-content'])],
1181
- ['min-width', new Set(['-webkit-fill-available', 'min-content', 'max-content', 'fit-content'])],
1181
+ ['min-width', new Set(['-webkit-fill-available', 'min-content', 'max-content', 'fit-content', 'stretch'])],
1182
1182
  ['object-position', new Set(['top', 'bottom', 'left', 'right', 'center'])],
1183
1183
  ['shape-outside', new Set(['border-box', 'content-box', 'padding-box', 'margin-box'])],
1184
1184
  [
@@ -1340,7 +1340,7 @@ const extraPropertyValues = new Map<string, Set<string>>([
1340
1340
  ['-webkit-text-stroke-width', new Set(['medium', 'thick', 'thin'])],
1341
1341
  ['-webkit-transform-origin-x', new Set(['left', 'right', 'center'])],
1342
1342
  ['-webkit-transform-origin-y', new Set(['top', 'bottom', 'center'])],
1343
- ['width', new Set(['-webkit-fill-available'])],
1343
+ ['width', new Set(['-webkit-fill-available', 'stretch'])],
1344
1344
  ['contain-intrinsic-width', new Set(['auto none', 'auto 100px'])],
1345
1345
  ['contain-intrinsic-height', new Set(['auto none', 'auto 100px'])],
1346
1346
  ['contain-intrinsic-size', new Set(['auto none', 'auto 100px'])],
@@ -38,7 +38,7 @@ export interface LayoutProperties {
38
38
  isGrid: boolean;
39
39
  isSubgrid: boolean;
40
40
  isGridLanes: boolean;
41
- isContainer: boolean;
41
+ containerType?: string;
42
42
  hasScroll: boolean;
43
43
  }
44
44
 
@@ -402,7 +402,7 @@ export class CSSModel extends SDKModel<EventTypes> {
402
402
  isGrid,
403
403
  isSubgrid,
404
404
  isGridLanes,
405
- isContainer,
405
+ containerType: isContainer ? containerType : undefined,
406
406
  hasScroll,
407
407
  };
408
408
  }
@@ -110,10 +110,20 @@ export const ARIA_ATTRIBUTES = new Set<string>([
110
110
 
111
111
  export enum DOMNodeEvents {
112
112
  TOP_LAYER_INDEX_CHANGED = 'TopLayerIndexChanged',
113
+ SCROLLABLE_FLAG_UPDATED = 'ScrollableFlagUpdated',
114
+ GRID_OVERLAY_STATE_CHANGED = 'GridOverlayStateChanged',
115
+ FLEX_CONTAINER_OVERLAY_STATE_CHANGED = 'FlexContainerOverlayStateChanged',
116
+ SCROLL_SNAP_OVERLAY_STATE_CHANGED = 'ScrollSnapOverlayStateChanged',
117
+ CONTAINER_QUERY_OVERLAY_STATE_CHANGED = 'ContainerQueryOverlayStateChanged',
113
118
  }
114
119
 
115
120
  export interface DOMNodeEventTypes {
116
121
  [DOMNodeEvents.TOP_LAYER_INDEX_CHANGED]: void;
122
+ [DOMNodeEvents.SCROLLABLE_FLAG_UPDATED]: void;
123
+ [DOMNodeEvents.GRID_OVERLAY_STATE_CHANGED]: {enabled: boolean};
124
+ [DOMNodeEvents.FLEX_CONTAINER_OVERLAY_STATE_CHANGED]: {enabled: boolean};
125
+ [DOMNodeEvents.SCROLL_SNAP_OVERLAY_STATE_CHANGED]: {enabled: boolean};
126
+ [DOMNodeEvents.CONTAINER_QUERY_OVERLAY_STATE_CHANGED]: {enabled: boolean};
117
127
  }
118
128
 
119
129
  export class DOMNode extends Common.ObjectWrapper.ObjectWrapper<DOMNodeEventTypes> {
@@ -392,6 +402,11 @@ export class DOMNode extends Common.ObjectWrapper.ObjectWrapper<DOMNodeEventType
392
402
 
393
403
  setIsScrollable(isScrollable: boolean): void {
394
404
  this.#isScrollable = isScrollable;
405
+ this.dispatchEventToListeners(DOMNodeEvents.SCROLLABLE_FLAG_UPDATED);
406
+ if (this.nodeName() === '#document') {
407
+ // We show the scroll badge of the document on the <html> element.
408
+ this.ownerDocument?.documentElement?.setIsScrollable(isScrollable);
409
+ }
395
410
  }
396
411
 
397
412
  setAffectedByStartingStyles(affectedByStartingStyles: boolean): void {
@@ -1651,7 +1666,6 @@ export class DOMModel extends SDKModel<EventTypes> {
1651
1666
  return;
1652
1667
  }
1653
1668
  node.setIsScrollable(isScrollable);
1654
- this.dispatchEventToListeners(Events.ScrollableFlagUpdated, {node});
1655
1669
  }
1656
1670
 
1657
1671
  affectedByStartingStylesFlagUpdated(nodeId: Protocol.DOM.NodeId, affectedByStartingStyles: boolean): void {
@@ -1907,7 +1921,6 @@ export enum Events {
1907
1921
  DistributedNodesChanged = 'DistributedNodesChanged',
1908
1922
  MarkersChanged = 'MarkersChanged',
1909
1923
  TopLayerElementsChanged = 'TopLayerElementsChanged',
1910
- ScrollableFlagUpdated = 'ScrollableFlagUpdated',
1911
1924
  AffectedByStartingStylesFlagUpdated = 'AffectedByStartingStylesFlagUpdated',
1912
1925
  AdoptedStyleSheetsModified = 'AdoptedStyleSheetsModified',
1913
1926
  /* eslint-enable @typescript-eslint/naming-convention */
@@ -1925,7 +1938,6 @@ export interface EventTypes {
1925
1938
  [Events.DistributedNodesChanged]: DOMNode;
1926
1939
  [Events.MarkersChanged]: DOMNode;
1927
1940
  [Events.TopLayerElementsChanged]: {document: DOMDocument, documentShortcuts: DOMNodeShortcut[]};
1928
- [Events.ScrollableFlagUpdated]: {node: DOMNode};
1929
1941
  [Events.AffectedByStartingStylesFlagUpdated]: {node: DOMNode};
1930
1942
  [Events.AdoptedStyleSheetsModified]: DOMNode;
1931
1943
  }
@@ -761,6 +761,7 @@ export class NetworkDispatcher implements ProtocolProxyApi.NetworkDispatcher {
761
761
  type,
762
762
  frameId,
763
763
  hasUserGesture,
764
+ renderBlockingBehavior,
764
765
  }: Protocol.Network.RequestWillBeSentEvent): void {
765
766
  let networkRequest = this.#requestsById.get(requestId);
766
767
  if (networkRequest) {
@@ -789,6 +790,9 @@ export class NetworkDispatcher implements ProtocolProxyApi.NetworkDispatcher {
789
790
  networkRequest = NetworkRequest.create(
790
791
  requestId, request.url as Platform.DevToolsPath.UrlString, documentURL as Platform.DevToolsPath.UrlString,
791
792
  frameId ?? null, loaderId, initiator, hasUserGesture);
793
+ if (renderBlockingBehavior) {
794
+ networkRequest.setRenderBlockingBehavior(renderBlockingBehavior);
795
+ }
792
796
  requestToManagerMap.set(networkRequest, this.#manager);
793
797
  }
794
798
  networkRequest.hasNetworkData = true;
@@ -225,6 +225,7 @@ export class NetworkRequest extends Common.ObjectWrapper.ObjectWrapper<EventType
225
225
  #startTime = -1;
226
226
  #endTime = -1;
227
227
  #blockedReason: Protocol.Network.BlockedReason|undefined = undefined;
228
+ #renderBlockingBehavior?: Protocol.Network.RenderBlockingBehavior;
228
229
  #corsErrorStatus: Protocol.Network.CorsErrorStatus|undefined = undefined;
229
230
  statusCode = 0;
230
231
  statusText = '';
@@ -661,6 +662,14 @@ export class NetworkRequest extends Common.ObjectWrapper.ObjectWrapper<EventType
661
662
  this.#blockedReason = reason;
662
663
  }
663
664
 
665
+ setRenderBlockingBehavior(renderBlocking: Protocol.Network.RenderBlockingBehavior): void {
666
+ this.#renderBlockingBehavior = renderBlocking;
667
+ }
668
+
669
+ renderBlockingBehavior(): Protocol.Network.RenderBlockingBehavior|undefined {
670
+ return this.#renderBlockingBehavior;
671
+ }
672
+
664
673
  corsErrorStatus(): Protocol.Network.CorsErrorStatus|undefined {
665
674
  return this.#corsErrorStatus;
666
675
  }
@@ -11,7 +11,7 @@ import * as Root from '../root/root.js';
11
11
 
12
12
  import type {CSSModel} from './CSSModel.js';
13
13
  import {DebuggerModel, Events as DebuggerModelEvents} from './DebuggerModel.js';
14
- import {DeferredDOMNode, DOMModel, type DOMNode, Events as DOMModelEvents} from './DOMModel.js';
14
+ import {DeferredDOMNode, DOMModel, type DOMNode, DOMNodeEvents, Events as DOMModelEvents} from './DOMModel.js';
15
15
  import {OverlayPersistentHighlighter} from './OverlayPersistentHighlighter.js';
16
16
  import type {RemoteObject} from './RemoteObject.js';
17
17
  import {SDKModel} from './SDKModel.js';
@@ -129,14 +129,25 @@ export class OverlayModel extends SDKModel<EventTypes> implements ProtocolProxyA
129
129
  }
130
130
 
131
131
  this.#persistentHighlighter = new OverlayPersistentHighlighter(this, {
132
- onGridOverlayStateChanged: ({nodeId, enabled}) =>
133
- this.dispatchEventToListeners(Events.PERSISTENT_GRID_OVERLAY_STATE_CHANGED, {nodeId, enabled}),
134
- onFlexOverlayStateChanged: ({nodeId, enabled}) =>
135
- this.dispatchEventToListeners(Events.PERSISTENT_FLEX_CONTAINER_OVERLAY_STATE_CHANGED, {nodeId, enabled}),
136
- onContainerQueryOverlayStateChanged: ({nodeId, enabled}) =>
137
- this.dispatchEventToListeners(Events.PERSISTENT_CONTAINER_QUERY_OVERLAY_STATE_CHANGED, {nodeId, enabled}),
138
- onScrollSnapOverlayStateChanged: ({nodeId, enabled}) =>
139
- this.dispatchEventToListeners(Events.PERSISTENT_SCROLL_SNAP_OVERLAY_STATE_CHANGED, {nodeId, enabled}),
132
+ onGridOverlayStateChanged: ({nodeId, enabled}) => {
133
+ this.#domModel.nodeForId(nodeId)?.dispatchEventToListeners(DOMNodeEvents.GRID_OVERLAY_STATE_CHANGED, {enabled});
134
+ this.dispatchEventToListeners(Events.PERSISTENT_GRID_OVERLAY_STATE_CHANGED, {nodeId, enabled});
135
+ },
136
+ onFlexOverlayStateChanged: ({nodeId, enabled}) => {
137
+ this.#domModel.nodeForId(nodeId)?.dispatchEventToListeners(
138
+ DOMNodeEvents.FLEX_CONTAINER_OVERLAY_STATE_CHANGED, {enabled});
139
+ this.dispatchEventToListeners(Events.PERSISTENT_FLEX_CONTAINER_OVERLAY_STATE_CHANGED, {nodeId, enabled});
140
+ },
141
+ onContainerQueryOverlayStateChanged: ({nodeId, enabled}) => {
142
+ this.#domModel.nodeForId(nodeId)?.dispatchEventToListeners(
143
+ DOMNodeEvents.CONTAINER_QUERY_OVERLAY_STATE_CHANGED, {enabled});
144
+ this.dispatchEventToListeners(Events.PERSISTENT_CONTAINER_QUERY_OVERLAY_STATE_CHANGED, {nodeId, enabled});
145
+ },
146
+ onScrollSnapOverlayStateChanged: ({nodeId, enabled}) => {
147
+ this.#domModel.nodeForId(nodeId)?.dispatchEventToListeners(
148
+ DOMNodeEvents.SCROLL_SNAP_OVERLAY_STATE_CHANGED, {enabled});
149
+ this.dispatchEventToListeners(Events.PERSISTENT_SCROLL_SNAP_OVERLAY_STATE_CHANGED, {nodeId, enabled});
150
+ },
140
151
  });
141
152
  this.#domModel.addEventListener(DOMModelEvents.NodeRemoved, () => {
142
153
  if (!this.#persistentHighlighter) {
@@ -550,7 +550,8 @@ export class MainImpl {
550
550
  Badges.UserBadges.instance().addEventListener(Badges.Events.BADGE_TRIGGERED, async ev => {
551
551
  loadedPanelCommonModule ??= await import('../../panels/common/common.js') as typeof PanelCommon;
552
552
  const badgeNotification = new loadedPanelCommonModule.BadgeNotification();
553
- void badgeNotification.present(ev.data);
553
+ const {badge, reason} = ev.data;
554
+ void badgeNotification.present(badge, reason);
554
555
  });
555
556
  }
556
557
 
@@ -762,6 +762,7 @@ inspectorBackend.registerEnum("Network.CookieSameSite", {Strict: "Strict", Lax:
762
762
  inspectorBackend.registerEnum("Network.CookiePriority", {Low: "Low", Medium: "Medium", High: "High"});
763
763
  inspectorBackend.registerEnum("Network.CookieSourceScheme", {Unset: "Unset", NonSecure: "NonSecure", Secure: "Secure"});
764
764
  inspectorBackend.registerEnum("Network.ResourcePriority", {VeryLow: "VeryLow", Low: "Low", Medium: "Medium", High: "High", VeryHigh: "VeryHigh"});
765
+ inspectorBackend.registerEnum("Network.RenderBlockingBehavior", {Blocking: "Blocking", InBodyParserBlocking: "InBodyParserBlocking", NonBlocking: "NonBlocking", NonBlockingDynamic: "NonBlockingDynamic", PotentiallyBlocking: "PotentiallyBlocking"});
765
766
  inspectorBackend.registerEnum("Network.RequestReferrerPolicy", {UnsafeUrl: "unsafe-url", NoReferrerWhenDowngrade: "no-referrer-when-downgrade", NoReferrer: "no-referrer", Origin: "origin", OriginWhenCrossOrigin: "origin-when-cross-origin", SameOrigin: "same-origin", StrictOrigin: "strict-origin", StrictOriginWhenCrossOrigin: "strict-origin-when-cross-origin"});
766
767
  inspectorBackend.registerEnum("Network.CertificateTransparencyCompliance", {Unknown: "unknown", NotCompliant: "not-compliant", Compliant: "compliant"});
767
768
  inspectorBackend.registerEnum("Network.BlockedReason", {Other: "other", Csp: "csp", MixedContent: "mixed-content", Origin: "origin", Inspector: "inspector", Integrity: "integrity", SubresourceFilter: "subresource-filter", ContentType: "content-type", CoepFrameResourceNeedsCoepHeader: "coep-frame-resource-needs-coep-header", CoopSandboxedIframeCannotNavigateToCoopPage: "coop-sandboxed-iframe-cannot-navigate-to-coop-page", CorpNotSameOrigin: "corp-not-same-origin", CorpNotSameOriginAfterDefaultedToSameOriginByCoep: "corp-not-same-origin-after-defaulted-to-same-origin-by-coep", CorpNotSameOriginAfterDefaultedToSameOriginByDip: "corp-not-same-origin-after-defaulted-to-same-origin-by-dip", CorpNotSameOriginAfterDefaultedToSameOriginByCoepAndDip: "corp-not-same-origin-after-defaulted-to-same-origin-by-coep-and-dip", CorpNotSameSite: "corp-not-same-site", SriMessageSignatureMismatch: "sri-message-signature-mismatch"});
@@ -793,7 +794,7 @@ inspectorBackend.registerEvent("Network.loadingFailed", ["requestId", "timestamp
793
794
  inspectorBackend.registerEvent("Network.loadingFinished", ["requestId", "timestamp", "encodedDataLength"]);
794
795
  inspectorBackend.registerEvent("Network.requestIntercepted", ["interceptionId", "request", "frameId", "resourceType", "isNavigationRequest", "isDownload", "redirectUrl", "authChallenge", "responseErrorReason", "responseStatusCode", "responseHeaders", "requestId"]);
795
796
  inspectorBackend.registerEvent("Network.requestServedFromCache", ["requestId"]);
796
- inspectorBackend.registerEvent("Network.requestWillBeSent", ["requestId", "loaderId", "documentURL", "request", "timestamp", "wallTime", "initiator", "redirectHasExtraInfo", "redirectResponse", "type", "frameId", "hasUserGesture"]);
797
+ inspectorBackend.registerEvent("Network.requestWillBeSent", ["requestId", "loaderId", "documentURL", "request", "timestamp", "wallTime", "initiator", "redirectHasExtraInfo", "redirectResponse", "type", "frameId", "hasUserGesture", "renderBlockingBehavior"]);
797
798
  inspectorBackend.registerEvent("Network.resourceChangedPriority", ["requestId", "newPriority", "timestamp"]);
798
799
  inspectorBackend.registerEvent("Network.signedExchangeReceived", ["requestId", "info"]);
799
800
  inspectorBackend.registerEvent("Network.responseReceived", ["requestId", "loaderId", "timestamp", "type", "response", "hasExtraInfo", "frameId"]);
@@ -843,7 +844,8 @@ inspectorBackend.registerCommand("Network.disable", [], [], "Disables network tr
843
844
  inspectorBackend.registerCommand("Network.emulateNetworkConditions", [{"name": "offline", "type": "boolean", "optional": false, "description": "True to emulate internet disconnection.", "typeRef": null}, {"name": "latency", "type": "number", "optional": false, "description": "Minimum latency from request sent to response headers received (ms).", "typeRef": null}, {"name": "downloadThroughput", "type": "number", "optional": false, "description": "Maximal aggregated download throughput (bytes/sec). -1 disables download throttling.", "typeRef": null}, {"name": "uploadThroughput", "type": "number", "optional": false, "description": "Maximal aggregated upload throughput (bytes/sec). -1 disables upload throttling.", "typeRef": null}, {"name": "connectionType", "type": "string", "optional": true, "description": "Connection type if known.", "typeRef": "Network.ConnectionType"}, {"name": "packetLoss", "type": "number", "optional": true, "description": "WebRTC packet loss (percent, 0-100). 0 disables packet loss emulation, 100 drops all the packets.", "typeRef": null}, {"name": "packetQueueLength", "type": "number", "optional": true, "description": "WebRTC packet queue length (packet). 0 removes any queue length limitations.", "typeRef": null}, {"name": "packetReordering", "type": "boolean", "optional": true, "description": "WebRTC packetReordering feature.", "typeRef": null}], [], "Activates emulation of network conditions. This command is deprecated in favor of the emulateNetworkConditionsByRule and overrideNetworkState commands, which can be used together to the same effect.");
844
845
  inspectorBackend.registerCommand("Network.emulateNetworkConditionsByRule", [{"name": "offline", "type": "boolean", "optional": false, "description": "True to emulate internet disconnection.", "typeRef": null}, {"name": "matchedNetworkConditions", "type": "array", "optional": false, "description": "Configure conditions for matching requests. If multiple entries match a request, the first entry wins. Global conditions can be configured by leaving the urlPattern for the conditions empty. These global conditions are also applied for throttling of p2p connections.", "typeRef": "Network.NetworkConditions"}], ["ruleIds"], "Activates emulation of network conditions for individual requests using URL match patterns. Unlike the deprecated Network.emulateNetworkConditions this method does not affect `navigator` state. Use Network.overrideNetworkState to explicitly modify `navigator` behavior.");
845
846
  inspectorBackend.registerCommand("Network.overrideNetworkState", [{"name": "offline", "type": "boolean", "optional": false, "description": "True to emulate internet disconnection.", "typeRef": null}, {"name": "latency", "type": "number", "optional": false, "description": "Minimum latency from request sent to response headers received (ms).", "typeRef": null}, {"name": "downloadThroughput", "type": "number", "optional": false, "description": "Maximal aggregated download throughput (bytes/sec). -1 disables download throttling.", "typeRef": null}, {"name": "uploadThroughput", "type": "number", "optional": false, "description": "Maximal aggregated upload throughput (bytes/sec). -1 disables upload throttling.", "typeRef": null}, {"name": "connectionType", "type": "string", "optional": true, "description": "Connection type if known.", "typeRef": "Network.ConnectionType"}], [], "Override the state of navigator.onLine and navigator.connection.");
846
- inspectorBackend.registerCommand("Network.enable", [{"name": "maxTotalBufferSize", "type": "number", "optional": true, "description": "Buffer size in bytes to use when preserving network payloads (XHRs, etc).", "typeRef": null}, {"name": "maxResourceBufferSize", "type": "number", "optional": true, "description": "Per-resource buffer size in bytes to use when preserving network payloads (XHRs, etc).", "typeRef": null}, {"name": "maxPostDataSize", "type": "number", "optional": true, "description": "Longest post body size (in bytes) that would be included in requestWillBeSent notification", "typeRef": null}, {"name": "reportDirectSocketTraffic", "type": "boolean", "optional": true, "description": "Whether DirectSocket chunk send/receive events should be reported.", "typeRef": null}, {"name": "enableDurableMessages", "type": "boolean", "optional": true, "description": "Enable storing response bodies outside of renderer, so that these survive a cross-process navigation. Requires maxTotalBufferSize to be set. Currently defaults to false.", "typeRef": null}], [], "Enables network tracking, network events will now be delivered to the client.");
847
+ inspectorBackend.registerCommand("Network.enable", [{"name": "maxTotalBufferSize", "type": "number", "optional": true, "description": "Buffer size in bytes to use when preserving network payloads (XHRs, etc).", "typeRef": null}, {"name": "maxResourceBufferSize", "type": "number", "optional": true, "description": "Per-resource buffer size in bytes to use when preserving network payloads (XHRs, etc).", "typeRef": null}, {"name": "maxPostDataSize", "type": "number", "optional": true, "description": "Longest post body size (in bytes) that would be included in requestWillBeSent notification", "typeRef": null}, {"name": "reportDirectSocketTraffic", "type": "boolean", "optional": true, "description": "Whether DirectSocket chunk send/receive events should be reported.", "typeRef": null}, {"name": "enableDurableMessages", "type": "boolean", "optional": true, "description": "Enable storing response bodies outside of renderer, so that these survive a cross-process navigation. Requires maxTotalBufferSize to be set. Currently defaults to false. This field is being deprecated in favor of the dedicated configureDurableMessages command, due to the possibility of deadlocks when awaiting Network.enable before issuing Runtime.runIfWaitingForDebugger.", "typeRef": null}], [], "Enables network tracking, network events will now be delivered to the client.");
848
+ inspectorBackend.registerCommand("Network.configureDurableMessages", [{"name": "maxTotalBufferSize", "type": "number", "optional": true, "description": "Buffer size in bytes to use when preserving network payloads (XHRs, etc).", "typeRef": null}, {"name": "maxResourceBufferSize", "type": "number", "optional": true, "description": "Per-resource buffer size in bytes to use when preserving network payloads (XHRs, etc).", "typeRef": null}], [], "Configures storing response bodies outside of renderer, so that these survive a cross-process navigation. If maxTotalBufferSize is not set, durable messages are disabled.");
847
849
  inspectorBackend.registerCommand("Network.getAllCookies", [], ["cookies"], "Returns all browser cookies. Depending on the backend support, will return detailed cookie information in the `cookies` field. Deprecated. Use Storage.getCookies instead.");
848
850
  inspectorBackend.registerCommand("Network.getCertificate", [{"name": "origin", "type": "string", "optional": false, "description": "Origin to get certificate for.", "typeRef": null}], ["tableNames"], "Returns the DER-encoded certificate.");
849
851
  inspectorBackend.registerCommand("Network.getCookies", [{"name": "urls", "type": "array", "optional": true, "description": "The list of URLs for which applicable cookies will be fetched. If not specified, it's assumed to be set to the list containing the URLs of the page and all of its subframes.", "typeRef": "string"}], ["cookies"], "Returns all browser cookies for the current URL. Depending on the backend support, will return detailed cookie information in the `cookies` field.");
@@ -984,7 +986,7 @@ inspectorBackend.registerEnum("Page.AdFrameExplanation", {ParentIsAd: "ParentIsA
984
986
  inspectorBackend.registerEnum("Page.SecureContextType", {Secure: "Secure", SecureLocalhost: "SecureLocalhost", InsecureScheme: "InsecureScheme", InsecureAncestor: "InsecureAncestor"});
985
987
  inspectorBackend.registerEnum("Page.CrossOriginIsolatedContextType", {Isolated: "Isolated", NotIsolated: "NotIsolated", NotIsolatedFeatureDisabled: "NotIsolatedFeatureDisabled"});
986
988
  inspectorBackend.registerEnum("Page.GatedAPIFeatures", {SharedArrayBuffers: "SharedArrayBuffers", SharedArrayBuffersTransferAllowed: "SharedArrayBuffersTransferAllowed", PerformanceMeasureMemory: "PerformanceMeasureMemory", PerformanceProfile: "PerformanceProfile"});
987
- inspectorBackend.registerEnum("Page.PermissionsPolicyFeature", {Accelerometer: "accelerometer", AllScreensCapture: "all-screens-capture", AmbientLightSensor: "ambient-light-sensor", AriaNotify: "aria-notify", AttributionReporting: "attribution-reporting", Autofill: "autofill", Autoplay: "autoplay", Bluetooth: "bluetooth", BrowsingTopics: "browsing-topics", Camera: "camera", CapturedSurfaceControl: "captured-surface-control", ChDpr: "ch-dpr", ChDeviceMemory: "ch-device-memory", ChDownlink: "ch-downlink", ChEct: "ch-ect", ChPrefersColorScheme: "ch-prefers-color-scheme", ChPrefersReducedMotion: "ch-prefers-reduced-motion", ChPrefersReducedTransparency: "ch-prefers-reduced-transparency", ChRtt: "ch-rtt", ChSaveData: "ch-save-data", ChUa: "ch-ua", ChUaArch: "ch-ua-arch", ChUaBitness: "ch-ua-bitness", ChUaHighEntropyValues: "ch-ua-high-entropy-values", ChUaPlatform: "ch-ua-platform", ChUaModel: "ch-ua-model", ChUaMobile: "ch-ua-mobile", ChUaFormFactors: "ch-ua-form-factors", ChUaFullVersion: "ch-ua-full-version", ChUaFullVersionList: "ch-ua-full-version-list", ChUaPlatformVersion: "ch-ua-platform-version", ChUaWow64: "ch-ua-wow64", ChViewportHeight: "ch-viewport-height", ChViewportWidth: "ch-viewport-width", ChWidth: "ch-width", ClipboardRead: "clipboard-read", ClipboardWrite: "clipboard-write", ComputePressure: "compute-pressure", ControlledFrame: "controlled-frame", CrossOriginIsolated: "cross-origin-isolated", DeferredFetch: "deferred-fetch", DeferredFetchMinimal: "deferred-fetch-minimal", DeviceAttributes: "device-attributes", DigitalCredentialsCreate: "digital-credentials-create", DigitalCredentialsGet: "digital-credentials-get", DirectSockets: "direct-sockets", DirectSocketsMulticast: "direct-sockets-multicast", DirectSocketsPrivate: "direct-sockets-private", DisplayCapture: "display-capture", DocumentDomain: "document-domain", EncryptedMedia: "encrypted-media", ExecutionWhileOutOfViewport: "execution-while-out-of-viewport", ExecutionWhileNotRendered: "execution-while-not-rendered", FencedUnpartitionedStorageRead: "fenced-unpartitioned-storage-read", FocusWithoutUserActivation: "focus-without-user-activation", Fullscreen: "fullscreen", Frobulate: "frobulate", Gamepad: "gamepad", Geolocation: "geolocation", Gyroscope: "gyroscope", Hid: "hid", IdentityCredentialsGet: "identity-credentials-get", IdleDetection: "idle-detection", InterestCohort: "interest-cohort", JoinAdInterestGroup: "join-ad-interest-group", KeyboardMap: "keyboard-map", LanguageDetector: "language-detector", LanguageModel: "language-model", LocalFonts: "local-fonts", LocalNetworkAccess: "local-network-access", Magnetometer: "magnetometer", ManualText: "manual-text", MediaPlaybackWhileNotVisible: "media-playback-while-not-visible", Microphone: "microphone", Midi: "midi", OnDeviceSpeechRecognition: "on-device-speech-recognition", OtpCredentials: "otp-credentials", Payment: "payment", PictureInPicture: "picture-in-picture", PrivateAggregation: "private-aggregation", PrivateStateTokenIssuance: "private-state-token-issuance", PrivateStateTokenRedemption: "private-state-token-redemption", PublickeyCredentialsCreate: "publickey-credentials-create", PublickeyCredentialsGet: "publickey-credentials-get", RecordAdAuctionEvents: "record-ad-auction-events", Rewriter: "rewriter", RunAdAuction: "run-ad-auction", ScreenWakeLock: "screen-wake-lock", Serial: "serial", SharedStorage: "shared-storage", SharedStorageSelectUrl: "shared-storage-select-url", SmartCard: "smart-card", SpeakerSelection: "speaker-selection", StorageAccess: "storage-access", SubApps: "sub-apps", Summarizer: "summarizer", SyncXhr: "sync-xhr", Translator: "translator", Unload: "unload", Usb: "usb", UsbUnrestricted: "usb-unrestricted", VerticalScroll: "vertical-scroll", WebAppInstallation: "web-app-installation", WebPrinting: "web-printing", WebShare: "web-share", WindowManagement: "window-management", Writer: "writer", XrSpatialTracking: "xr-spatial-tracking"});
989
+ inspectorBackend.registerEnum("Page.PermissionsPolicyFeature", {Accelerometer: "accelerometer", AllScreensCapture: "all-screens-capture", AmbientLightSensor: "ambient-light-sensor", AriaNotify: "aria-notify", AttributionReporting: "attribution-reporting", Autofill: "autofill", Autoplay: "autoplay", Bluetooth: "bluetooth", BrowsingTopics: "browsing-topics", Camera: "camera", CapturedSurfaceControl: "captured-surface-control", ChDpr: "ch-dpr", ChDeviceMemory: "ch-device-memory", ChDownlink: "ch-downlink", ChEct: "ch-ect", ChPrefersColorScheme: "ch-prefers-color-scheme", ChPrefersReducedMotion: "ch-prefers-reduced-motion", ChPrefersReducedTransparency: "ch-prefers-reduced-transparency", ChRtt: "ch-rtt", ChSaveData: "ch-save-data", ChUa: "ch-ua", ChUaArch: "ch-ua-arch", ChUaBitness: "ch-ua-bitness", ChUaHighEntropyValues: "ch-ua-high-entropy-values", ChUaPlatform: "ch-ua-platform", ChUaModel: "ch-ua-model", ChUaMobile: "ch-ua-mobile", ChUaFormFactors: "ch-ua-form-factors", ChUaFullVersion: "ch-ua-full-version", ChUaFullVersionList: "ch-ua-full-version-list", ChUaPlatformVersion: "ch-ua-platform-version", ChUaWow64: "ch-ua-wow64", ChViewportHeight: "ch-viewport-height", ChViewportWidth: "ch-viewport-width", ChWidth: "ch-width", ClipboardRead: "clipboard-read", ClipboardWrite: "clipboard-write", ComputePressure: "compute-pressure", ControlledFrame: "controlled-frame", CrossOriginIsolated: "cross-origin-isolated", DeferredFetch: "deferred-fetch", DeferredFetchMinimal: "deferred-fetch-minimal", DeviceAttributes: "device-attributes", DigitalCredentialsCreate: "digital-credentials-create", DigitalCredentialsGet: "digital-credentials-get", DirectSockets: "direct-sockets", DirectSocketsMulticast: "direct-sockets-multicast", DirectSocketsPrivate: "direct-sockets-private", DisplayCapture: "display-capture", DocumentDomain: "document-domain", EncryptedMedia: "encrypted-media", ExecutionWhileOutOfViewport: "execution-while-out-of-viewport", ExecutionWhileNotRendered: "execution-while-not-rendered", FencedUnpartitionedStorageRead: "fenced-unpartitioned-storage-read", FocusWithoutUserActivation: "focus-without-user-activation", Fullscreen: "fullscreen", Frobulate: "frobulate", Gamepad: "gamepad", Geolocation: "geolocation", Gyroscope: "gyroscope", Hid: "hid", IdentityCredentialsGet: "identity-credentials-get", IdleDetection: "idle-detection", InterestCohort: "interest-cohort", JoinAdInterestGroup: "join-ad-interest-group", KeyboardMap: "keyboard-map", LanguageDetector: "language-detector", LanguageModel: "language-model", LocalFonts: "local-fonts", LocalNetwork: "local-network", LocalNetworkAccess: "local-network-access", LoopbackNetwork: "loopback-network", Magnetometer: "magnetometer", ManualText: "manual-text", MediaPlaybackWhileNotVisible: "media-playback-while-not-visible", Microphone: "microphone", Midi: "midi", OnDeviceSpeechRecognition: "on-device-speech-recognition", OtpCredentials: "otp-credentials", Payment: "payment", PictureInPicture: "picture-in-picture", PrivateAggregation: "private-aggregation", PrivateStateTokenIssuance: "private-state-token-issuance", PrivateStateTokenRedemption: "private-state-token-redemption", PublickeyCredentialsCreate: "publickey-credentials-create", PublickeyCredentialsGet: "publickey-credentials-get", RecordAdAuctionEvents: "record-ad-auction-events", Rewriter: "rewriter", RunAdAuction: "run-ad-auction", ScreenWakeLock: "screen-wake-lock", Serial: "serial", SharedStorage: "shared-storage", SharedStorageSelectUrl: "shared-storage-select-url", SmartCard: "smart-card", SpeakerSelection: "speaker-selection", StorageAccess: "storage-access", SubApps: "sub-apps", Summarizer: "summarizer", SyncXhr: "sync-xhr", Translator: "translator", Unload: "unload", Usb: "usb", UsbUnrestricted: "usb-unrestricted", VerticalScroll: "vertical-scroll", WebAppInstallation: "web-app-installation", WebPrinting: "web-printing", WebShare: "web-share", WindowManagement: "window-management", Writer: "writer", XrSpatialTracking: "xr-spatial-tracking"});
988
990
  inspectorBackend.registerEnum("Page.PermissionsPolicyBlockReason", {Header: "Header", IframeAttribute: "IframeAttribute", InFencedFrameTree: "InFencedFrameTree", InIsolatedApp: "InIsolatedApp"});
989
991
  inspectorBackend.registerEnum("Page.OriginTrialTokenStatus", {Success: "Success", NotSupported: "NotSupported", Insecure: "Insecure", Expired: "Expired", WrongOrigin: "WrongOrigin", InvalidSignature: "InvalidSignature", Malformed: "Malformed", WrongVersion: "WrongVersion", FeatureDisabled: "FeatureDisabled", TokenDisabled: "TokenDisabled", FeatureDisabledForUser: "FeatureDisabledForUser", UnknownTrial: "UnknownTrial"});
990
992
  inspectorBackend.registerEnum("Page.OriginTrialStatus", {Enabled: "Enabled", ValidTokenNotProvided: "ValidTokenNotProvided", OSNotSupported: "OSNotSupported", TrialNotAllowed: "TrialNotAllowed"});
@@ -1379,6 +1381,7 @@ inspectorBackend.registerEvent("Tracing.dataCollected", ["value"]);
1379
1381
  inspectorBackend.registerEvent("Tracing.tracingComplete", ["dataLossOccurred", "stream", "traceFormat", "streamCompression"]);
1380
1382
  inspectorBackend.registerCommand("Tracing.end", [], [], "Stop trace events collection.");
1381
1383
  inspectorBackend.registerCommand("Tracing.getCategories", [], ["categories"], "Gets supported tracing categories.");
1384
+ inspectorBackend.registerCommand("Tracing.getTrackEventDescriptor", [], ["descriptor"], "Return a descriptor for all available tracing categories.");
1382
1385
  inspectorBackend.registerCommand("Tracing.recordClockSyncMarker", [{"name": "syncId", "type": "string", "optional": false, "description": "The ID of this clock sync marker", "typeRef": null}], [], "Record a clock sync marker in the trace.");
1383
1386
  inspectorBackend.registerCommand("Tracing.requestMemoryDump", [{"name": "deterministic", "type": "boolean", "optional": true, "description": "Enables more deterministic results by forcing garbage collection", "typeRef": null}, {"name": "levelOfDetail", "type": "string", "optional": true, "description": "Specifies level of details in memory dump. Defaults to \\\"detailed\\\".", "typeRef": "Tracing.MemoryDumpLevelOfDetail"}], ["dumpGuid", "success"], "Request a global memory dump.");
1384
1387
  inspectorBackend.registerEnum("Tracing.StartRequestTransferMode", {ReportEvents: "ReportEvents", ReturnAsStream: "ReturnAsStream"});
@@ -349,6 +349,7 @@ export const generatedProperties = [
349
349
  "background-repeat",
350
350
  "background-size",
351
351
  "base-palette",
352
+ "base-url",
352
353
  "baseline-shift",
353
354
  "baseline-source",
354
355
  "block-ellipsis",
@@ -419,10 +420,10 @@ export const generatedProperties = [
419
420
  "column-height",
420
421
  "column-rule-break",
421
422
  "column-rule-color",
422
- "column-rule-edge-end-inset",
423
- "column-rule-edge-start-inset",
424
- "column-rule-interior-end-inset",
425
- "column-rule-interior-start-inset",
423
+ "column-rule-edge-inset-end",
424
+ "column-rule-edge-inset-start",
425
+ "column-rule-interior-inset-end",
426
+ "column-rule-interior-inset-start",
426
427
  "column-rule-style",
427
428
  "column-rule-visibility-items",
428
429
  "column-rule-width",
@@ -510,7 +511,9 @@ export const generatedProperties = [
510
511
  "grid-template-areas",
511
512
  "grid-template-columns",
512
513
  "grid-template-rows",
514
+ "hash",
513
515
  "height",
516
+ "hostname",
514
517
  "hyphenate-character",
515
518
  "hyphenate-limit-chars",
516
519
  "hyphens",
@@ -619,9 +622,12 @@ export const generatedProperties = [
619
622
  "page",
620
623
  "page-orientation",
621
624
  "paint-order",
625
+ "pathname",
626
+ "pattern",
622
627
  "perspective",
623
628
  "perspective-origin",
624
629
  "pointer-events",
630
+ "port",
625
631
  "position",
626
632
  "position-anchor",
627
633
  "position-area",
@@ -630,6 +636,7 @@ export const generatedProperties = [
630
636
  "position-visibility",
631
637
  "prefix",
632
638
  "print-color-adjust",
639
+ "protocol",
633
640
  "quotes",
634
641
  "r",
635
642
  "range",
@@ -642,10 +649,10 @@ export const generatedProperties = [
642
649
  "row-gap",
643
650
  "row-rule-break",
644
651
  "row-rule-color",
645
- "row-rule-edge-end-inset",
646
- "row-rule-edge-start-inset",
647
- "row-rule-interior-end-inset",
648
- "row-rule-interior-start-inset",
652
+ "row-rule-edge-inset-end",
653
+ "row-rule-edge-inset-start",
654
+ "row-rule-interior-inset-end",
655
+ "row-rule-interior-inset-start",
649
656
  "row-rule-style",
650
657
  "row-rule-visibility-items",
651
658
  "row-rule-width",
@@ -683,6 +690,7 @@ export const generatedProperties = [
683
690
  "scrollbar-color",
684
691
  "scrollbar-gutter",
685
692
  "scrollbar-width",
693
+ "search",
686
694
  "shape-image-threshold",
687
695
  "shape-margin",
688
696
  "shape-outside",
@@ -1039,6 +1047,9 @@ export const generatedProperties = [
1039
1047
  {
1040
1048
  "name": "base-palette"
1041
1049
  },
1050
+ {
1051
+ "name": "base-url"
1052
+ },
1042
1053
  {
1043
1054
  "keywords": [
1044
1055
  "baseline",
@@ -1727,28 +1738,28 @@ export const generatedProperties = [
1727
1738
  },
1728
1739
  {
1729
1740
  "inherited": false,
1730
- "name": "column-rule-edge-end-inset"
1741
+ "name": "column-rule-edge-inset-end"
1731
1742
  },
1732
1743
  {
1733
1744
  "inherited": false,
1734
- "name": "column-rule-edge-start-inset"
1745
+ "name": "column-rule-edge-inset-start"
1735
1746
  },
1736
1747
  {
1737
1748
  "longhands": [
1738
- "column-rule-edge-start-inset",
1739
- "column-rule-edge-end-inset",
1740
- "column-rule-interior-start-inset",
1741
- "column-rule-interior-end-inset"
1749
+ "column-rule-edge-inset-start",
1750
+ "column-rule-edge-inset-end",
1751
+ "column-rule-interior-inset-start",
1752
+ "column-rule-interior-inset-end"
1742
1753
  ],
1743
1754
  "name": "column-rule-inset"
1744
1755
  },
1745
1756
  {
1746
1757
  "inherited": false,
1747
- "name": "column-rule-interior-end-inset"
1758
+ "name": "column-rule-interior-inset-end"
1748
1759
  },
1749
1760
  {
1750
1761
  "inherited": false,
1751
- "name": "column-rule-interior-start-inset"
1762
+ "name": "column-rule-interior-inset-start"
1752
1763
  },
1753
1764
  {
1754
1765
  "keywords": [
@@ -2722,6 +2733,9 @@ export const generatedProperties = [
2722
2733
  ],
2723
2734
  "name": "grid-template-rows"
2724
2735
  },
2736
+ {
2737
+ "name": "hash"
2738
+ },
2725
2739
  {
2726
2740
  "keywords": [
2727
2741
  "auto",
@@ -2731,6 +2745,9 @@ export const generatedProperties = [
2731
2745
  ],
2732
2746
  "name": "height"
2733
2747
  },
2748
+ {
2749
+ "name": "hostname"
2750
+ },
2734
2751
  {
2735
2752
  "inherited": true,
2736
2753
  "name": "hyphenate-character"
@@ -3525,6 +3542,12 @@ export const generatedProperties = [
3525
3542
  ],
3526
3543
  "name": "paint-order"
3527
3544
  },
3545
+ {
3546
+ "name": "pathname"
3547
+ },
3548
+ {
3549
+ "name": "pattern"
3550
+ },
3528
3551
  {
3529
3552
  "keywords": [
3530
3553
  "none"
@@ -3572,6 +3595,9 @@ export const generatedProperties = [
3572
3595
  ],
3573
3596
  "name": "pointer-events"
3574
3597
  },
3598
+ {
3599
+ "name": "port"
3600
+ },
3575
3601
  {
3576
3602
  "keywords": [
3577
3603
  "static",
@@ -3654,6 +3680,9 @@ export const generatedProperties = [
3654
3680
  ],
3655
3681
  "name": "print-color-adjust"
3656
3682
  },
3683
+ {
3684
+ "name": "protocol"
3685
+ },
3657
3686
  {
3658
3687
  "inherited": true,
3659
3688
  "keywords": [
@@ -3738,28 +3767,28 @@ export const generatedProperties = [
3738
3767
  },
3739
3768
  {
3740
3769
  "inherited": false,
3741
- "name": "row-rule-edge-end-inset"
3770
+ "name": "row-rule-edge-inset-end"
3742
3771
  },
3743
3772
  {
3744
3773
  "inherited": false,
3745
- "name": "row-rule-edge-start-inset"
3774
+ "name": "row-rule-edge-inset-start"
3746
3775
  },
3747
3776
  {
3748
3777
  "longhands": [
3749
- "row-rule-edge-start-inset",
3750
- "row-rule-edge-end-inset",
3751
- "row-rule-interior-start-inset",
3752
- "row-rule-interior-end-inset"
3778
+ "row-rule-edge-inset-start",
3779
+ "row-rule-edge-inset-end",
3780
+ "row-rule-interior-inset-start",
3781
+ "row-rule-interior-inset-end"
3753
3782
  ],
3754
3783
  "name": "row-rule-inset"
3755
3784
  },
3756
3785
  {
3757
3786
  "inherited": false,
3758
- "name": "row-rule-interior-end-inset"
3787
+ "name": "row-rule-interior-inset-end"
3759
3788
  },
3760
3789
  {
3761
3790
  "inherited": false,
3762
- "name": "row-rule-interior-start-inset"
3791
+ "name": "row-rule-interior-inset-start"
3763
3792
  },
3764
3793
  {
3765
3794
  "keywords": [
@@ -3847,14 +3876,14 @@ export const generatedProperties = [
3847
3876
  },
3848
3877
  {
3849
3878
  "longhands": [
3850
- "row-rule-edge-start-inset",
3851
- "row-rule-edge-end-inset",
3852
- "row-rule-interior-start-inset",
3853
- "row-rule-interior-end-inset",
3854
- "column-rule-edge-start-inset",
3855
- "column-rule-edge-end-inset",
3856
- "column-rule-interior-start-inset",
3857
- "column-rule-interior-end-inset"
3879
+ "row-rule-edge-inset-start",
3880
+ "row-rule-edge-inset-end",
3881
+ "row-rule-interior-inset-start",
3882
+ "row-rule-interior-inset-end",
3883
+ "column-rule-edge-inset-start",
3884
+ "column-rule-edge-inset-end",
3885
+ "column-rule-interior-inset-start",
3886
+ "column-rule-interior-inset-end"
3858
3887
  ],
3859
3888
  "name": "rule-inset"
3860
3889
  },
@@ -4096,6 +4125,9 @@ export const generatedProperties = [
4096
4125
  ],
4097
4126
  "name": "scrollbar-width"
4098
4127
  },
4128
+ {
4129
+ "name": "search"
4130
+ },
4099
4131
  {
4100
4132
  "name": "shape-image-threshold"
4101
4133
  },