chrome-devtools-frontend 1.0.1543472 → 1.0.1545096

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 (166) hide show
  1. package/AUTHORS +1 -0
  2. package/config/typescript/tsconfig.eslint.json +1 -0
  3. package/front_end/core/common/ParsedURL.ts +1 -1
  4. package/front_end/core/common/common.ts +0 -2
  5. package/front_end/core/host/AidaClient.ts +10 -7
  6. package/front_end/core/host/DispatchHttpRequestClient.ts +18 -3
  7. package/front_end/core/protocol_client/CDPConnection.ts +3 -3
  8. package/front_end/core/protocol_client/DevToolsCDPConnection.ts +2 -1
  9. package/front_end/core/root/Runtime.ts +8 -7
  10. package/front_end/core/sdk/CPUThrottlingManager.ts +0 -4
  11. package/front_end/core/sdk/CSSMatchedStyles.ts +7 -9
  12. package/front_end/core/sdk/CSSMetadata.ts +17 -5
  13. package/front_end/core/sdk/CSSModel.ts +1 -1
  14. package/front_end/core/sdk/CSSRule.ts +18 -6
  15. package/front_end/core/sdk/ChildTargetManager.ts +2 -2
  16. package/front_end/core/sdk/NetworkManager.ts +6 -8
  17. package/front_end/core/sdk/NetworkRequest.ts +4 -0
  18. package/front_end/core/sdk/SDKModel.ts +4 -2
  19. package/front_end/core/sdk/TargetManager.ts +14 -15
  20. package/front_end/entrypoints/heap_snapshot_worker/HeapSnapshotLoader.ts +2 -0
  21. package/front_end/entrypoints/main/MainImpl.ts +0 -16
  22. package/front_end/foundation/Universe.ts +12 -1
  23. package/front_end/generated/Deprecation.ts +4 -0
  24. package/front_end/generated/InspectorBackendCommands.ts +2 -5
  25. package/front_end/generated/SupportedCSSProperties.js +0 -23
  26. package/front_end/generated/protocol-mapping.d.ts +0 -15
  27. package/front_end/generated/protocol-proxy-api.d.ts +0 -11
  28. package/front_end/generated/protocol.ts +2 -34
  29. package/front_end/models/ai_assistance/agents/AiAgent.ts +10 -8
  30. package/front_end/models/ai_assistance/agents/PatchAgent.ts +7 -1
  31. package/front_end/models/ai_assistance/agents/PerformanceAgent.ts +0 -5
  32. package/front_end/models/ai_assistance/agents/StylingAgent.ts +4 -8
  33. package/front_end/models/ai_code_completion/AiCodeCompletion.ts +1 -1
  34. package/front_end/models/ai_code_generation/AiCodeGeneration.ts +5 -3
  35. package/front_end/models/bindings/CSSWorkspaceBinding.ts +8 -7
  36. package/front_end/models/bindings/DebuggerWorkspaceBinding.ts +9 -8
  37. package/front_end/models/bindings/ResourceMapping.ts +57 -15
  38. package/front_end/models/live-metrics/LiveMetrics.ts +12 -20
  39. package/front_end/panels/accessibility/AccessibilityNodeView.ts +6 -2
  40. package/front_end/panels/ai_assistance/AiAssistancePanel.ts +3 -2
  41. package/front_end/panels/ai_assistance/components/ChatView.ts +2 -4
  42. package/front_end/panels/ai_assistance/components/PerformanceAgentMarkdownRenderer.ts +2 -1
  43. package/front_end/panels/ai_assistance/components/UserActionRow.ts +2 -1
  44. package/front_end/panels/animation/AnimationTimeline.ts +6 -6
  45. package/front_end/panels/application/ApplicationPanelSidebar.ts +6 -7
  46. package/front_end/panels/application/{components/FrameDetailsView.ts → FrameDetailsView.ts} +134 -165
  47. package/front_end/panels/application/{components/OriginTrialTreeView.ts → OriginTrialTreeView.ts} +9 -9
  48. package/front_end/panels/application/application.ts +4 -0
  49. package/front_end/panels/application/components/ReportsGrid.ts +7 -2
  50. package/front_end/panels/application/components/SharedStorageAccessGrid.ts +5 -3
  51. package/front_end/panels/application/components/StackTrace.ts +5 -3
  52. package/front_end/panels/application/components/TrustTokensView.ts +7 -1
  53. package/front_end/panels/application/components/components.ts +2 -4
  54. package/front_end/panels/application/{components/frameDetailsReportView.css → frameDetailsReportView.css} +5 -1
  55. package/front_end/panels/application/preloading/PreloadingView.ts +10 -4
  56. package/front_end/panels/application/preloading/components/PreloadingDisabledInfobar.ts +7 -11
  57. package/front_end/panels/application/preloading/components/UsedPreloadingView.ts +15 -3
  58. package/front_end/panels/browser_debugger/DOMBreakpointsSidebarPane.ts +12 -13
  59. package/front_end/panels/common/BadgeNotification.ts +2 -1
  60. package/front_end/panels/{elements → common}/DOMLinkifier.ts +13 -8
  61. package/front_end/panels/common/GdpSignUpDialog.ts +2 -1
  62. package/front_end/panels/common/common.ts +1 -0
  63. package/front_end/panels/console/ConsoleViewMessage.ts +4 -4
  64. package/front_end/panels/css_overview/CSSOverviewCompletedView.ts +2 -1
  65. package/front_end/panels/elements/ElementStatePaneWidget.ts +2 -1
  66. package/front_end/panels/elements/ElementsTreeElement.ts +3 -1
  67. package/front_end/panels/elements/StylePropertiesSection.ts +52 -15
  68. package/front_end/panels/elements/StylePropertyTreeElement.ts +8 -3
  69. package/front_end/panels/elements/StylesSidebarPane.ts +24 -14
  70. package/front_end/panels/elements/elements-meta.ts +0 -13
  71. package/front_end/panels/elements/elements.ts +0 -3
  72. package/front_end/panels/explain/components/ConsoleInsight.ts +31 -20
  73. package/front_end/panels/issues/AffectedResourcesView.ts +2 -1
  74. package/front_end/panels/lighthouse/LighthouseProtocolService.ts +3 -6
  75. package/front_end/panels/lighthouse/LighthouseReportRenderer.ts +2 -1
  76. package/front_end/panels/network/NetworkLogView.ts +1 -1
  77. package/front_end/panels/recorder/RecorderController.ts +7 -1
  78. package/front_end/panels/settings/FrameworkIgnoreListSettingsTab.ts +2 -1
  79. package/front_end/panels/settings/SettingsScreen.ts +3 -2
  80. package/front_end/panels/sources/AiCodeCompletionPlugin.ts +42 -294
  81. package/front_end/panels/sources/DebuggerPausedMessage.ts +3 -3
  82. package/front_end/panels/sources/SourcesPanel.ts +5 -1
  83. package/front_end/panels/timeline/TimelineUIUtils.ts +3 -2
  84. package/front_end/panels/timeline/components/LiveMetricsView.ts +18 -6
  85. package/front_end/panels/timeline/components/MetricCard.ts +2 -2
  86. package/front_end/panels/timeline/components/insights/NodeLink.ts +4 -4
  87. package/front_end/panels/timeline/overlays/components/EntryLabelOverlay.ts +2 -1
  88. package/front_end/panels/timeline/timeline-meta.ts +0 -10
  89. package/front_end/panels/timeline/timeline.ts +0 -2
  90. package/front_end/panels/whats_new/ReleaseNoteView.ts +2 -1
  91. package/front_end/panels/whats_new/WhatsNewImpl.ts +3 -2
  92. package/front_end/third_party/chromium/README.chromium +1 -1
  93. package/front_end/third_party/puppeteer/README.chromium +2 -2
  94. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/HTTPRequest.d.ts +1 -0
  95. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/HTTPRequest.d.ts.map +1 -1
  96. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/HTTPRequest.js +4 -1
  97. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/HTTPRequest.js.map +1 -1
  98. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/NetworkEventManager.d.ts +1 -0
  99. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/NetworkEventManager.d.ts.map +1 -1
  100. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/NetworkEventManager.js +8 -0
  101. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/NetworkEventManager.js.map +1 -1
  102. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/NetworkManager.d.ts.map +1 -1
  103. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/NetworkManager.js +22 -0
  104. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/NetworkManager.js.map +1 -1
  105. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/injected/injected.d.ts +1 -1
  106. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/revisions.d.ts +3 -3
  107. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/revisions.js +3 -3
  108. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/revisions.js.map +1 -1
  109. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/util/Mutex.d.ts +2 -2
  110. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/util/version.d.ts +1 -1
  111. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/util/version.js +1 -1
  112. package/front_end/third_party/puppeteer/package/lib/es5-iife/puppeteer-core-browser.js +34 -6
  113. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/HTTPRequest.d.ts +1 -0
  114. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/HTTPRequest.d.ts.map +1 -1
  115. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/HTTPRequest.js +4 -1
  116. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/HTTPRequest.js.map +1 -1
  117. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/NetworkEventManager.d.ts +1 -0
  118. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/NetworkEventManager.d.ts.map +1 -1
  119. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/NetworkEventManager.js +8 -0
  120. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/NetworkEventManager.js.map +1 -1
  121. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/NetworkManager.d.ts.map +1 -1
  122. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/NetworkManager.js +22 -0
  123. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/NetworkManager.js.map +1 -1
  124. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/revisions.d.ts +3 -3
  125. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/revisions.js +3 -3
  126. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/revisions.js.map +1 -1
  127. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/util/version.d.ts +1 -1
  128. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/util/version.js +1 -1
  129. package/front_end/third_party/puppeteer/package/package.json +2 -2
  130. package/front_end/third_party/puppeteer/package/src/cdp/HTTPRequest.ts +5 -1
  131. package/front_end/third_party/puppeteer/package/src/cdp/NetworkEventManager.ts +16 -1
  132. package/front_end/third_party/puppeteer/package/src/cdp/NetworkManager.ts +28 -0
  133. package/front_end/third_party/puppeteer/package/src/revisions.ts +3 -3
  134. package/front_end/third_party/puppeteer/package/src/util/version.ts +1 -1
  135. package/front_end/tsconfig.json +1 -0
  136. package/front_end/ui/components/buttons/Button.docs.ts +6 -5
  137. package/front_end/ui/components/snackbars/Snackbars.docs.ts +1 -1
  138. package/front_end/ui/components/spinners/Spinners.docs.ts +1 -1
  139. package/front_end/ui/components/survey_link/SurveyLink.docs.ts +2 -1
  140. package/front_end/ui/components/switch/Switch.docs.ts +1 -1
  141. package/front_end/ui/components/text_editor/AiCodeCompletionProvider.ts +8 -5
  142. package/front_end/ui/components/tooltips/Tooltip.docs.ts +3 -3
  143. package/front_end/ui/helpers/OpenInNewTab.ts +87 -0
  144. package/front_end/ui/helpers/helpers.ts +5 -0
  145. package/front_end/ui/i18n/i18n.ts +16 -0
  146. package/front_end/ui/legacy/ContextMenu.docs.ts +12 -11
  147. package/front_end/ui/legacy/RadioButton.docs.ts +1 -1
  148. package/front_end/ui/legacy/SelectMenu.docs.ts +1 -1
  149. package/front_end/ui/legacy/Slider.docs.ts +1 -1
  150. package/front_end/ui/legacy/UIUtils.ts +1 -34
  151. package/front_end/ui/legacy/Widget.ts +56 -25
  152. package/front_end/ui/legacy/XLink.ts +4 -6
  153. package/front_end/ui/legacy/components/color_picker/ContrastDetails.ts +2 -1
  154. package/front_end/ui/legacy/components/object_ui/ObjectPopoverHelper.ts +3 -1
  155. package/front_end/ui/legacy/components/object_ui/ObjectPropertiesSection.ts +294 -336
  156. package/front_end/ui/legacy/components/utils/Linkifier.ts +2 -1
  157. package/front_end/ui/legacy/inspectorCommon.css +0 -4
  158. package/mcp/mcp.ts +1 -0
  159. package/mcp/tsconfig.json +16 -0
  160. package/package.json +2 -2
  161. package/front_end/core/common/Linkifier.ts +0 -55
  162. package/front_end/panels/timeline/CLSLinkifier.ts +0 -58
  163. package/front_end/ui/components/expandable_list/ExpandableList.docs.ts +0 -30
  164. /package/front_end/panels/application/{components/originTrialTokenRows.css → originTrialTokenRows.css} +0 -0
  165. /package/front_end/panels/application/{components/originTrialTreeView.css → originTrialTreeView.css} +0 -0
  166. /package/front_end/panels/{elements → common}/domLinkifier.css +0 -0
package/AUTHORS CHANGED
@@ -18,6 +18,7 @@ Alex Ho <wjhe1016@gmail.com>
18
18
  Alexander Stammbach <alexander@stammbach.io>
19
19
  Alexey Rodionov <fluorescent.hallucinogen@gmail.com>
20
20
  Ameen Basha <ameenbasha111@gmail.com>
21
+ Ankit Kumar Sahu <sahuankit.murhu@gmail.com>
21
22
  Ankit Mishra <ankit.mishra131990@gmail.com>
22
23
  Anna Agoha <annaagoha@gmail.com>
23
24
  Anthony Xie <anthonyxie64@gmail.com>
@@ -17,6 +17,7 @@
17
17
  },
18
18
  "include": [
19
19
  "../../front_end/**/*.ts",
20
+ "../../mcp/**/*.ts",
20
21
  "../../inspector_overlay/**/*.ts",
21
22
  "../../scripts/**/*.ts",
22
23
  "../../test/**/*.ts",
@@ -38,7 +38,7 @@ export function normalizePath(path: string): string {
38
38
  return normalizedPath;
39
39
  }
40
40
 
41
- export function schemeIs(url: Platform.DevToolsPath.UrlString, scheme: string): boolean {
41
+ export function schemeIs(url: Platform.DevToolsPath.UrlString|URL, scheme: string): boolean {
42
42
  try {
43
43
  return (new URL(url)).protocol === scheme;
44
44
  } catch {
@@ -15,7 +15,6 @@ import * as EventTarget from './EventTarget.js';
15
15
  import * as Gzip from './Gzip.js';
16
16
  import * as JavaScriptMetaData from './JavaScriptMetaData.js';
17
17
  import * as Lazy from './Lazy.js';
18
- import * as Linkifier from './Linkifier.js';
19
18
  import * as MapWithDefault from './MapWithDefault.js';
20
19
  import * as Mutex from './Mutex.js';
21
20
  import * as ObjectWrapper from './Object.js';
@@ -56,7 +55,6 @@ export {
56
55
  Gzip,
57
56
  JavaScriptMetaData,
58
57
  Lazy,
59
- Linkifier,
60
58
  MapWithDefault,
61
59
  Mutex,
62
60
  ObjectWrapper,
@@ -707,13 +707,16 @@ export class AidaClient {
707
707
  return {generatedSamples, metadata};
708
708
  }
709
709
 
710
- async generateCode(request: GenerateCodeRequest): Promise<GenerateCodeResponse|null> {
711
- const response = await DispatchHttpRequestClient.makeHttpRequest<GenerateCodeResponse>({
712
- service: SERVICE_NAME,
713
- path: '/v1/aida:generateCode',
714
- method: 'POST',
715
- body: JSON.stringify(request),
716
- });
710
+ async generateCode(request: GenerateCodeRequest, options?: {signal?: AbortSignal}):
711
+ Promise<GenerateCodeResponse|null> {
712
+ const response = await DispatchHttpRequestClient.makeHttpRequest<GenerateCodeResponse>(
713
+ {
714
+ service: SERVICE_NAME,
715
+ path: '/v1/aida:generateCode',
716
+ method: 'POST',
717
+ body: JSON.stringify(request),
718
+ },
719
+ options);
717
720
 
718
721
  return response;
719
722
  }
@@ -8,6 +8,7 @@ import type {DispatchHttpRequestRequest, DispatchHttpRequestResult} from './Insp
8
8
  export enum ErrorType {
9
9
  HTTP_RESPONSE_UNAVAILABLE = 'HTTP_RESPONSE_UNAVAILABLE',
10
10
  NOT_FOUND = 'NOT_FOUND',
11
+ ABORT = 'ABORT',
11
12
  }
12
13
 
13
14
  export class DispatchHttpRequestError extends Error {
@@ -16,9 +17,23 @@ export class DispatchHttpRequestError extends Error {
16
17
  }
17
18
  }
18
19
 
19
- export async function makeHttpRequest<R>(request: DispatchHttpRequestRequest): Promise<R> {
20
- const response = await new Promise<DispatchHttpRequestResult>(resolve => {
21
- InspectorFrontendHostInstance.dispatchHttpRequest(request, resolve);
20
+ export async function makeHttpRequest<R>(
21
+ request: DispatchHttpRequestRequest, options?: {signal?: AbortSignal}): Promise<R> {
22
+ const signal = options?.signal;
23
+ if (signal?.aborted) {
24
+ throw new DispatchHttpRequestError(ErrorType.ABORT);
25
+ }
26
+
27
+ const response = await new Promise<DispatchHttpRequestResult>((resolve, reject) => {
28
+ const onAbort = (): void => {
29
+ reject(new DispatchHttpRequestError(ErrorType.ABORT));
30
+ };
31
+
32
+ signal?.addEventListener('abort', onAbort, {once: true});
33
+ InspectorFrontendHostInstance.dispatchHttpRequest(request, result => {
34
+ signal?.removeEventListener('abort', onAbort);
35
+ resolve(result);
36
+ });
22
37
  });
23
38
 
24
39
  debugLog({request, response});
@@ -5,10 +5,10 @@
5
5
  import type {ProtocolMapping} from '../../generated/protocol-mapping.js';
6
6
 
7
7
  export type Command = keyof ProtocolMapping.Commands;
8
- export type CommandParams<T extends keyof ProtocolMapping.Commands> = ProtocolMapping.Commands[T]['paramsType'][0];
9
- export type CommandResult<T extends keyof ProtocolMapping.Commands> = ProtocolMapping.Commands[T]['returnType'];
8
+ export type CommandParams<T extends Command> = ProtocolMapping.Commands[T]['paramsType'][0];
9
+ export type CommandResult<T extends Command> = Omit<ProtocolMapping.Commands[T]['returnType'], 'getError'>;
10
10
  export type Event = keyof ProtocolMapping.Events;
11
- export type EventParams<T extends keyof ProtocolMapping.Events> = ProtocolMapping.Events[T];
11
+ export type EventParams<T extends keyof ProtocolMapping.Events> = ProtocolMapping.Events[T][0];
12
12
 
13
13
  export interface CDPBaseMessage {
14
14
  sessionId?: string;
@@ -17,7 +17,8 @@ import type {ConnectionTransport} from './ConnectionTransport.js';
17
17
  import {InspectorBackend, type MessageError, type QualifiedName, test} from './InspectorBackend.js';
18
18
 
19
19
  interface CallbackWithDebugInfo {
20
- resolve: (response: Awaited<ReturnType<CDPConnection['send']>>) => void;
20
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
21
+ resolve: (response: {result: CommandResult<any>}|{error: CDPError}) => void;
21
22
  method: string;
22
23
  sessionId: string|undefined;
23
24
  }
@@ -70,21 +70,22 @@ export class Runtime {
70
70
  runtimeInstance = undefined;
71
71
  }
72
72
 
73
- static queryParamsObject: URLSearchParams;
73
+ static #queryParamsObject: URLSearchParams;
74
74
 
75
- static getSearchParams(): URLSearchParams {
76
- if (!Runtime.queryParamsObject) {
77
- Runtime.queryParamsObject = new URLSearchParams(location.search);
75
+ static #getSearchParams(): URLSearchParams|null {
76
+ // TODO(crbug.com/451502260): Find a more explicit way to support running in Node.js
77
+ if (!Runtime.#queryParamsObject && 'location' in globalThis) {
78
+ Runtime.#queryParamsObject = new URLSearchParams(location.search);
78
79
  }
79
- return Runtime.queryParamsObject;
80
+ return Runtime.#queryParamsObject;
80
81
  }
81
82
 
82
83
  static queryParam(name: string): string|null {
83
- return Runtime.getSearchParams().get(name);
84
+ return Runtime.#getSearchParams()?.get(name) ?? null;
84
85
  }
85
86
 
86
87
  static setQueryParamForTesting(name: string, value: string): void {
87
- Runtime.getSearchParams().set(name, value);
88
+ Runtime.#getSearchParams()?.set(name, value);
88
89
  }
89
90
 
90
91
  static isNode(): boolean {
@@ -184,10 +184,6 @@ export interface EventTypes {
184
184
  [Events.HARDWARE_CONCURRENCY_CHANGED]: number;
185
185
  }
186
186
 
187
- export function throttlingManager(): CPUThrottlingManager {
188
- return CPUThrottlingManager.instance();
189
- }
190
-
191
187
  export enum CPUThrottlingRates {
192
188
  NO_THROTTLING = 1,
193
189
  MID_TIER_MOBILE = 4,
@@ -41,7 +41,7 @@ import {
41
41
  VariableMatcher
42
42
  } from './CSSPropertyParserMatchers.js';
43
43
  import {
44
- CSSFontPaletteValuesRule,
44
+ CSSAtRule,
45
45
  CSSFunctionRule,
46
46
  CSSKeyframeRule,
47
47
  CSSKeyframesRule,
@@ -210,7 +210,7 @@ export interface CSSMatchedStylesPayload {
210
210
  positionTryRules: Protocol.CSS.CSSPositionTryRule[];
211
211
  propertyRules: Protocol.CSS.CSSPropertyRule[];
212
212
  cssPropertyRegistrations: Protocol.CSS.CSSPropertyRegistration[];
213
- fontPaletteValuesRule: Protocol.CSS.CSSFontPaletteValuesRule|undefined;
213
+ atRules: Protocol.CSS.CSSAtRule[];
214
214
  animationStylesPayload: Protocol.CSS.CSSAnimationStyle[];
215
215
  transitionsStylePayload: Protocol.CSS.CSSStyle|null;
216
216
  inheritedAnimatedPayload: Protocol.CSS.InheritedAnimatedStyleEntry[];
@@ -305,8 +305,8 @@ export class CSSMatchedStyles {
305
305
  #pseudoDOMCascades?: Map<Protocol.DOM.PseudoType, DOMInheritanceCascade>;
306
306
  #customHighlightPseudoDOMCascades?: Map<string, DOMInheritanceCascade>;
307
307
  #functionRules: CSSFunctionRule[];
308
+ #atRules: CSSAtRule[];
308
309
  #functionRuleMap = new Map<string, CSSFunctionRule>();
309
- readonly #fontPaletteValuesRule: CSSFontPaletteValuesRule|undefined;
310
310
  #environmentVariables: Record<string, string> = {};
311
311
 
312
312
  static async create(payload: CSSMatchedStylesPayload): Promise<CSSMatchedStyles> {
@@ -323,9 +323,9 @@ export class CSSMatchedStyles {
323
323
  positionTryRules,
324
324
  propertyRules,
325
325
  cssPropertyRegistrations,
326
- fontPaletteValuesRule,
327
326
  activePositionFallbackIndex,
328
327
  functionRules,
328
+ atRules,
329
329
  }: CSSMatchedStylesPayload) {
330
330
  this.#cssModel = cssModel;
331
331
  this.#node = node;
@@ -338,11 +338,9 @@ export class CSSMatchedStyles {
338
338
  }
339
339
  this.#positionTryRules = positionTryRules.map(rule => new CSSPositionTryRule(cssModel, rule));
340
340
  this.#parentLayoutNodeId = parentLayoutNodeId;
341
- this.#fontPaletteValuesRule =
342
- fontPaletteValuesRule ? new CSSFontPaletteValuesRule(cssModel, fontPaletteValuesRule) : undefined;
343
-
344
341
  this.#activePositionFallbackIndex = activePositionFallbackIndex;
345
342
  this.#functionRules = functionRules.map(rule => new CSSFunctionRule(cssModel, rule));
343
+ this.#atRules = atRules.map(rule => new CSSAtRule(cssModel, rule));
346
344
  }
347
345
 
348
346
  private async init({
@@ -799,8 +797,8 @@ export class CSSMatchedStyles {
799
797
  return this.#functionRules;
800
798
  }
801
799
 
802
- fontPaletteValuesRule(): CSSFontPaletteValuesRule|undefined {
803
- return this.#fontPaletteValuesRule;
800
+ atRules(): CSSAtRule[] {
801
+ return this.#atRules;
804
802
  }
805
803
 
806
804
  keyframes(): CSSKeyframesRule[] {
@@ -455,11 +455,8 @@ const cornerShapeValuePresetMap = new Map([
455
455
  ]);
456
456
 
457
457
  const valuePresets = new Map([
458
- ['filter', filterValuePresetMap],
459
- ['backdrop-filter', filterValuePresetMap],
460
- ['background', imageValuePresetMap],
461
- ['background-image', imageValuePresetMap],
462
- ['-webkit-mask-image', imageValuePresetMap],
458
+ ['filter', filterValuePresetMap], ['backdrop-filter', filterValuePresetMap], ['background', imageValuePresetMap],
459
+ ['background-image', imageValuePresetMap], ['-webkit-mask-image', imageValuePresetMap],
463
460
  [
464
461
  'transform',
465
462
  new Map([
@@ -486,6 +483,17 @@ const valuePresets = new Map([
486
483
  ]),
487
484
  ],
488
485
  ['corner-shape', cornerShapeValuePresetMap],
486
+ [
487
+ 'font-variant-alternates',
488
+ new Map([
489
+ ['stylistic', 'stylistic(||)'],
490
+ ['styleset', 'styleset(||)'],
491
+ ['character-variant', 'character-variant(||)'],
492
+ ['swash', 'swash(||)'],
493
+ ['ornaments', 'ornaments(||)'],
494
+ ['annotation', 'annotation(||)'],
495
+ ]),
496
+ ]
489
497
  ]);
490
498
 
491
499
  const distanceProperties = new Set<string>([
@@ -766,6 +774,10 @@ const extraPropertyValues = new Map<string, Set<string>>([
766
774
  'ruby',
767
775
  ]),
768
776
  ],
777
+ [
778
+ 'font-variant-alternates',
779
+ new Set(['historical-forms', 'stylistic', 'styleset', 'character-variant', 'swash', 'ornaments', 'annotation'])
780
+ ],
769
781
  ['vertical-align', new Set(['top', 'bottom', '-webkit-baseline-middle'])],
770
782
  ['page-break-after', new Set(['left', 'right', 'always', 'avoid'])],
771
783
  ['text-emphasis-style', textEmphasisStyle],
@@ -358,7 +358,7 @@ export class CSSModel extends SDKModel<EventTypes> {
358
358
  propertyRules: matchedStylesResponse.cssPropertyRules ?? [],
359
359
  functionRules: matchedStylesResponse.cssFunctionRules ?? [],
360
360
  cssPropertyRegistrations: matchedStylesResponse.cssPropertyRegistrations ?? [],
361
- fontPaletteValuesRule: matchedStylesResponse.cssFontPaletteValuesRule,
361
+ atRules: matchedStylesResponse.cssAtRules ?? [],
362
362
  activePositionFallbackIndex: matchedStylesResponse.activePositionFallbackIndex ?? -1,
363
363
  animationStylesPayload: animatedStylesResponse?.animationStyles || [],
364
364
  inheritedAnimatedPayload: animatedStylesResponse?.inherited || [],
@@ -268,20 +268,32 @@ export class CSSPropertyRule extends CSSRule {
268
268
  }
269
269
  }
270
270
 
271
- export class CSSFontPaletteValuesRule extends CSSRule {
272
- readonly #paletteName: CSSValue;
273
- constructor(cssModel: CSSModel, payload: Protocol.CSS.CSSFontPaletteValuesRule) {
271
+ export class CSSAtRule extends CSSRule {
272
+ readonly #name: CSSValue|null;
273
+ readonly #type: string;
274
+ readonly #subsection: string|null;
275
+ constructor(cssModel: CSSModel, payload: Protocol.CSS.CSSAtRule) {
274
276
  super(cssModel, {
275
277
  origin: payload.origin,
276
278
  style: payload.style,
277
279
  header: styleSheetHeaderForRule(cssModel, payload),
278
280
  originTreeScopeNodeId: undefined
279
281
  });
280
- this.#paletteName = new CSSValue(payload.fontPaletteName);
282
+ this.#name = payload.name ? new CSSValue(payload.name) : null;
283
+ this.#type = payload.type;
284
+ this.#subsection = payload.subsection ?? null;
281
285
  }
282
286
 
283
- name(): CSSValue {
284
- return this.#paletteName;
287
+ name(): CSSValue|null {
288
+ return this.#name;
289
+ }
290
+
291
+ type(): string {
292
+ return this.#type;
293
+ }
294
+
295
+ subsection(): string|null {
296
+ return this.#subsection;
285
297
  }
286
298
  }
287
299
 
@@ -13,7 +13,7 @@ import {SDKModel} from './SDKModel.js';
13
13
  import {SecurityOriginManager} from './SecurityOriginManager.js';
14
14
  import {StorageKeyManager} from './StorageKeyManager.js';
15
15
  import {Capability, type Target, Type} from './Target.js';
16
- import {Events as TargetManagerEvents, TargetManager} from './TargetManager.js';
16
+ import {Events as TargetManagerEvents, type TargetManager} from './TargetManager.js';
17
17
 
18
18
  const UIStrings = {
19
19
  /**
@@ -126,7 +126,7 @@ export class ChildTargetManager extends SDKModel<EventTypes> implements Protocol
126
126
  }
127
127
 
128
128
  private fireAvailableTargetsChanged(): void {
129
- TargetManager.instance().dispatchEventToListeners(
129
+ this.#targetManager.dispatchEventToListeners(
130
130
  TargetManagerEvents.AVAILABLE_TARGETS_CHANGED, [...this.#targetInfos.values()]);
131
131
  }
132
132
 
@@ -383,14 +383,6 @@ export class NetworkManager extends SDKModel<EventTypes> {
383
383
  return result.status;
384
384
  }
385
385
 
386
- async getIpProtectionProxyStatus(): Promise<Protocol.Network.IpProxyStatus|null> {
387
- const result = await this.#networkAgent.invoke_getIPProtectionProxyStatus();
388
- if (result.getError()) {
389
- return null;
390
- }
391
- return result.status;
392
- }
393
-
394
386
  async enableReportingApi(enable = true): Promise<Promise<Protocol.ProtocolResponseWithError>> {
395
387
  return await this.#networkAgent.invoke_enableReportingApi({enable});
396
388
  }
@@ -1043,6 +1035,12 @@ export class NetworkDispatcher implements ProtocolProxyApi.NetworkDispatcher {
1043
1035
  appliedNetworkConditionsId,
1044
1036
  };
1045
1037
  this.getExtraInfoBuilder(requestId).addRequestExtraInfo(extraRequestInfo);
1038
+
1039
+ const networkRequest = this.#requestsById.get(requestId);
1040
+ if (appliedNetworkConditionsId && networkRequest) {
1041
+ networkRequest.setAppliedNetworkConditions(appliedNetworkConditionsId);
1042
+ this.updateNetworkRequest(networkRequest);
1043
+ }
1046
1044
  }
1047
1045
 
1048
1046
  responseReceivedEarlyHints({
@@ -1629,6 +1629,10 @@ export class NetworkRequest extends Common.ObjectWrapper.ObjectWrapper<EventType
1629
1629
  );
1630
1630
  }
1631
1631
 
1632
+ setAppliedNetworkConditions(appliedNetworkConditionsId: string): void {
1633
+ this.#appliedNetworkConditionsId = appliedNetworkConditionsId;
1634
+ }
1635
+
1632
1636
  hasExtraRequestInfo(): boolean {
1633
1637
  return this.#hasExtraRequestInfo;
1634
1638
  }
@@ -12,7 +12,9 @@ export interface RegistrationInfo {
12
12
  early?: boolean;
13
13
  }
14
14
 
15
- const registeredModels = new Map<new (arg1: Target) => SDKModel, RegistrationInfo>();
15
+ export type SDKModelConstructor<T extends SDKModel = SDKModel> = new (target: Target) => T;
16
+
17
+ const registeredModels = new Map<SDKModelConstructor, RegistrationInfo>();
16
18
 
17
19
  // TODO(crbug.com/1228674) Remove defaults for generic type parameters once
18
20
  // all event emitters and sinks have been migrated.
@@ -52,7 +54,7 @@ export class SDKModel<Events = any> extends Common.ObjectWrapper.ObjectWrapper<E
52
54
  dispose(): void {
53
55
  }
54
56
 
55
- static register(modelClass: new(arg1: Target) => SDKModel, registrationInfo: RegistrationInfo): void {
57
+ static register(modelClass: SDKModelConstructor, registrationInfo: RegistrationInfo): void {
56
58
  if (registrationInfo.early && !registrationInfo.autostart) {
57
59
  throw new Error(`Error registering model ${modelClass.name}: early models must be autostarted.`);
58
60
  }
@@ -10,22 +10,20 @@ import {assertNotNullOrUndefined} from '../platform/platform.js';
10
10
  import type * as ProtocolClient from '../protocol_client/protocol_client.js';
11
11
  import * as Root from '../root/root.js';
12
12
 
13
- import {SDKModel} from './SDKModel.js';
13
+ import {SDKModel, type SDKModelConstructor} from './SDKModel.js';
14
14
  import {Target, Type as TargetType} from './Target.js';
15
15
 
16
- type ModelClass<T = SDKModel> = new (arg1: Target) => T;
17
-
18
16
  export class TargetManager extends Common.ObjectWrapper.ObjectWrapper<EventTypes> {
19
17
  #targets: Set<Target>;
20
18
  readonly #observers: Set<Observer>;
21
19
  /* eslint-disable @typescript-eslint/no-explicit-any */
22
20
  #modelListeners: Platform.MapUtilities.Multimap<string|symbol|number, {
23
- modelClass: ModelClass,
21
+ modelClass: SDKModelConstructor,
24
22
  thisObject: Object|undefined,
25
23
  listener: Common.EventTarget.EventListener<any, any>,
26
24
  wrappedListener: Common.EventTarget.EventListener<any, any>,
27
25
  }>;
28
- readonly #modelObservers: Platform.MapUtilities.Multimap<ModelClass, SDKModelObserver<any>>;
26
+ readonly #modelObservers: Platform.MapUtilities.Multimap<SDKModelConstructor, SDKModelObserver<any>>;
29
27
  #scopedObservers: WeakSet<Observer|SDKModelObserver<any>>;
30
28
  /* eslint-enable @typescript-eslint/no-explicit-any */
31
29
  #isSuspended: boolean;
@@ -99,7 +97,7 @@ export class TargetManager extends Common.ObjectWrapper.ObjectWrapper<EventTypes
99
97
  return this.#isSuspended;
100
98
  }
101
99
 
102
- models<T extends SDKModel>(modelClass: ModelClass<T>, opts?: {scoped: boolean}): T[] {
100
+ models<T extends SDKModel>(modelClass: SDKModelConstructor<T>, opts?: {scoped: boolean}): T[] {
103
101
  const result = [];
104
102
  for (const target of this.#targets) {
105
103
  if (opts?.scoped && !this.isInScope(target)) {
@@ -119,8 +117,9 @@ export class TargetManager extends Common.ObjectWrapper.ObjectWrapper<EventTypes
119
117
  return mainTarget ? mainTarget.inspectedURL() : '';
120
118
  }
121
119
 
122
- observeModels<T extends SDKModel>(modelClass: ModelClass<T>, observer: SDKModelObserver<T>, opts?: {scoped: boolean}):
123
- void {
120
+ observeModels<T extends SDKModel>(modelClass: SDKModelConstructor<T>, observer: SDKModelObserver<T>, opts?: {
121
+ scoped: boolean,
122
+ }): void {
124
123
  const models = this.models(modelClass, opts);
125
124
  this.#modelObservers.set(modelClass, observer);
126
125
  if (opts?.scoped) {
@@ -131,12 +130,12 @@ export class TargetManager extends Common.ObjectWrapper.ObjectWrapper<EventTypes
131
130
  }
132
131
  }
133
132
 
134
- unobserveModels<T extends SDKModel>(modelClass: ModelClass<T>, observer: SDKModelObserver<T>): void {
133
+ unobserveModels<T extends SDKModel>(modelClass: SDKModelConstructor<T>, observer: SDKModelObserver<T>): void {
135
134
  this.#modelObservers.delete(modelClass, observer);
136
135
  this.#scopedObservers.delete(observer);
137
136
  }
138
137
 
139
- modelAdded(modelClass: ModelClass, model: SDKModel, inScope: boolean): void {
138
+ modelAdded(modelClass: SDKModelConstructor, model: SDKModel, inScope: boolean): void {
140
139
  for (const observer of this.#modelObservers.get(modelClass).values()) {
141
140
  if (!this.#scopedObservers.has(observer) || inScope) {
142
141
  observer.modelAdded(model);
@@ -144,7 +143,7 @@ export class TargetManager extends Common.ObjectWrapper.ObjectWrapper<EventTypes
144
143
  }
145
144
  }
146
145
 
147
- private modelRemoved(modelClass: ModelClass, model: SDKModel, inScope: boolean): void {
146
+ private modelRemoved(modelClass: SDKModelConstructor, model: SDKModel, inScope: boolean): void {
148
147
  for (const observer of this.#modelObservers.get(modelClass).values()) {
149
148
  if (!this.#scopedObservers.has(observer) || inScope) {
150
149
  observer.modelRemoved(model);
@@ -153,8 +152,8 @@ export class TargetManager extends Common.ObjectWrapper.ObjectWrapper<EventTypes
153
152
  }
154
153
 
155
154
  addModelListener<Events, T extends keyof Events>(
156
- modelClass: ModelClass<SDKModel<Events>>, eventType: T, listener: Common.EventTarget.EventListener<Events, T>,
157
- thisObject?: Object, opts?: {scoped: boolean}): void {
155
+ modelClass: SDKModelConstructor<SDKModel<Events>>, eventType: T,
156
+ listener: Common.EventTarget.EventListener<Events, T>, thisObject?: Object, opts?: {scoped: boolean}): void {
158
157
  const wrappedListener = (event: Common.EventTarget.EventTargetEvent<Events[T], Events>): void => {
159
158
  if (!opts?.scoped || this.isInScope(event)) {
160
159
  listener.call(thisObject, event);
@@ -167,8 +166,8 @@ export class TargetManager extends Common.ObjectWrapper.ObjectWrapper<EventTypes
167
166
  }
168
167
 
169
168
  removeModelListener<Events, T extends keyof Events>(
170
- modelClass: ModelClass<SDKModel<Events>>, eventType: T, listener: Common.EventTarget.EventListener<Events, T>,
171
- thisObject?: Object): void {
169
+ modelClass: SDKModelConstructor<SDKModel<Events>>, eventType: T,
170
+ listener: Common.EventTarget.EventListener<Events, T>, thisObject?: Object): void {
172
171
  if (!this.#modelListeners.has(eventType)) {
173
172
  return;
174
173
  }
@@ -46,6 +46,8 @@ export class HeapSnapshotLoader {
46
46
  }
47
47
 
48
48
  async buildSnapshot(secondWorker: MessagePort): Promise<JSHeapSnapshot> {
49
+ await this.parsingComplete;
50
+
49
51
  this.#snapshot = this.#snapshot || {};
50
52
 
51
53
  this.#progress.updateStatus('Processing snapshot…');
@@ -448,23 +448,7 @@ export class MainImpl {
448
448
  Workspace.FileManager.FileManager.instance({forceNew: true});
449
449
 
450
450
  Bindings.NetworkProject.NetworkProjectManager.instance();
451
- const resourceMapping = new Bindings.ResourceMapping.ResourceMapping(
452
- targetManager,
453
- Workspace.Workspace.WorkspaceImpl.instance(),
454
- );
455
451
  new Bindings.PresentationConsoleMessageHelper.PresentationConsoleMessageManager();
456
- Bindings.CSSWorkspaceBinding.CSSWorkspaceBinding.instance({
457
- forceNew: true,
458
- resourceMapping,
459
- targetManager,
460
- });
461
- Bindings.DebuggerWorkspaceBinding.DebuggerWorkspaceBinding.instance({
462
- forceNew: true,
463
- resourceMapping,
464
- targetManager,
465
- ignoreListManager: Workspace.IgnoreListManager.IgnoreListManager.instance(),
466
- workspace: Workspace.Workspace.WorkspaceImpl.instance(),
467
- });
468
452
  targetManager.setScopeTarget(targetManager.primaryPageTarget());
469
453
  UI.Context.Context.instance().addFlavorChangeListener(SDK.Target.Target, ({data}) => {
470
454
  const outermostTarget = data?.outermostTarget();
@@ -5,6 +5,7 @@
5
5
  import * as Common from '../core/common/common.js';
6
6
  import * as Root from '../core/root/root.js';
7
7
  import * as SDK from '../core/sdk/sdk.js';
8
+ import * as Bindings from '../models/bindings/bindings.js';
8
9
  import * as Workspace from '../models/workspace/workspace.js';
9
10
 
10
11
  export interface CreationOptions {
@@ -25,9 +26,19 @@ export class Universe {
25
26
 
26
27
  const targetManager = new SDK.TargetManager.TargetManager();
27
28
  this.context.set(SDK.TargetManager.TargetManager, targetManager);
28
- this.context.set(Workspace.Workspace.WorkspaceImpl, new Workspace.Workspace.WorkspaceImpl());
29
+
30
+ const workspace = new Workspace.Workspace.WorkspaceImpl();
31
+ this.context.set(Workspace.Workspace.WorkspaceImpl, workspace);
29
32
 
30
33
  const ignoreListManager = new Workspace.IgnoreListManager.IgnoreListManager(settings, targetManager);
31
34
  this.context.set(Workspace.IgnoreListManager.IgnoreListManager, ignoreListManager);
35
+
36
+ const resourceMapping = new Bindings.ResourceMapping.ResourceMapping(targetManager, workspace);
37
+ const cssWorkspaceBinding = new Bindings.CSSWorkspaceBinding.CSSWorkspaceBinding(resourceMapping, targetManager);
38
+ this.context.set(Bindings.CSSWorkspaceBinding.CSSWorkspaceBinding, cssWorkspaceBinding);
39
+
40
+ const debuggerWorkspaceBinding = new Bindings.DebuggerWorkspaceBinding.DebuggerWorkspaceBinding(
41
+ resourceMapping, targetManager, ignoreListManager, workspace);
42
+ this.context.set(Bindings.DebuggerWorkspaceBinding.DebuggerWorkspaceBinding, debuggerWorkspaceBinding);
32
43
  }
33
44
  }
@@ -54,6 +54,10 @@ export const UIStrings = {
54
54
  * @description Warning displayed to developers when a data: URL is assigned to SVGUseElement to let them know that the support is deprecated.
55
55
  */
56
56
  DataUrlInSvgUse: "Support for data: URLs in SVGUseElement is deprecated and it will be removed in the future.",
57
+ /**
58
+ * @description A deprecation warning shown in the DevTools Issues tab. It's shown when one of the Protected Audience APIs like `navigator.joinAdInterestGroup`, `navigator.getInterestGroupAdAuctionData` or `navigator.runAdAuction` are called.
59
+ */
60
+ Fledge: "The Protected Audience API is deprecated and will be removed in a future release.",
57
61
  /**
58
62
  * @description Warning displayed to developers when the Geolocation API is used from an insecure origin (one that isn't localhost or doesn't use HTTPS) to notify them that this use is no longer supported.
59
63
  */