chrome-devtools-frontend 1.0.1544076 → 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 (67) hide show
  1. package/config/typescript/tsconfig.eslint.json +1 -0
  2. package/front_end/core/common/ParsedURL.ts +1 -1
  3. package/front_end/core/common/common.ts +0 -2
  4. package/front_end/core/protocol_client/CDPConnection.ts +3 -3
  5. package/front_end/core/protocol_client/DevToolsCDPConnection.ts +2 -1
  6. package/front_end/core/sdk/CSSMetadata.ts +17 -5
  7. package/front_end/core/sdk/NetworkManager.ts +6 -8
  8. package/front_end/core/sdk/NetworkRequest.ts +4 -0
  9. package/front_end/core/sdk/SDKModel.ts +4 -2
  10. package/front_end/core/sdk/TargetManager.ts +14 -15
  11. package/front_end/generated/Deprecation.ts +4 -0
  12. package/front_end/generated/InspectorBackendCommands.ts +2 -5
  13. package/front_end/generated/SupportedCSSProperties.js +0 -23
  14. package/front_end/generated/protocol-mapping.d.ts +0 -15
  15. package/front_end/generated/protocol-proxy-api.d.ts +0 -11
  16. package/front_end/generated/protocol.ts +2 -34
  17. package/front_end/panels/ai_assistance/AiAssistancePanel.ts +2 -1
  18. package/front_end/panels/ai_assistance/components/UserActionRow.ts +2 -1
  19. package/front_end/panels/application/ApplicationPanelSidebar.ts +6 -7
  20. package/front_end/panels/application/{components/FrameDetailsView.ts → FrameDetailsView.ts} +134 -165
  21. package/front_end/panels/application/{components/OriginTrialTreeView.ts → OriginTrialTreeView.ts} +9 -9
  22. package/front_end/panels/application/application.ts +4 -0
  23. package/front_end/panels/application/components/StackTrace.ts +5 -3
  24. package/front_end/panels/application/components/components.ts +2 -4
  25. package/front_end/panels/application/{components/frameDetailsReportView.css → frameDetailsReportView.css} +5 -1
  26. package/front_end/panels/common/BadgeNotification.ts +2 -1
  27. package/front_end/panels/common/DOMLinkifier.ts +7 -2
  28. package/front_end/panels/common/GdpSignUpDialog.ts +2 -1
  29. package/front_end/panels/elements/ElementStatePaneWidget.ts +2 -1
  30. package/front_end/panels/elements/StylePropertiesSection.ts +1 -1
  31. package/front_end/panels/elements/elements-meta.ts +0 -22
  32. package/front_end/panels/lighthouse/LighthouseProtocolService.ts +3 -6
  33. package/front_end/panels/settings/FrameworkIgnoreListSettingsTab.ts +2 -1
  34. package/front_end/panels/settings/SettingsScreen.ts +3 -2
  35. package/front_end/panels/timeline/components/LiveMetricsView.ts +14 -5
  36. package/front_end/panels/timeline/components/MetricCard.ts +2 -2
  37. package/front_end/panels/timeline/components/insights/NodeLink.ts +2 -3
  38. package/front_end/panels/timeline/overlays/components/EntryLabelOverlay.ts +2 -1
  39. package/front_end/panels/timeline/timeline-meta.ts +0 -10
  40. package/front_end/panels/timeline/timeline.ts +0 -2
  41. package/front_end/panels/whats_new/ReleaseNoteView.ts +2 -1
  42. package/front_end/panels/whats_new/WhatsNewImpl.ts +3 -2
  43. package/front_end/third_party/chromium/README.chromium +1 -1
  44. package/front_end/tsconfig.json +1 -0
  45. package/front_end/ui/components/buttons/Button.docs.ts +6 -5
  46. package/front_end/ui/components/snackbars/Snackbars.docs.ts +1 -1
  47. package/front_end/ui/components/spinners/Spinners.docs.ts +1 -1
  48. package/front_end/ui/components/survey_link/SurveyLink.docs.ts +2 -1
  49. package/front_end/ui/components/switch/Switch.docs.ts +1 -1
  50. package/front_end/ui/components/tooltips/Tooltip.docs.ts +3 -3
  51. package/front_end/ui/helpers/OpenInNewTab.ts +87 -0
  52. package/front_end/ui/helpers/helpers.ts +5 -0
  53. package/front_end/ui/legacy/ContextMenu.docs.ts +12 -11
  54. package/front_end/ui/legacy/RadioButton.docs.ts +1 -1
  55. package/front_end/ui/legacy/SelectMenu.docs.ts +1 -1
  56. package/front_end/ui/legacy/Slider.docs.ts +1 -1
  57. package/front_end/ui/legacy/UIUtils.ts +0 -33
  58. package/front_end/ui/legacy/XLink.ts +4 -4
  59. package/front_end/ui/legacy/components/color_picker/ContrastDetails.ts +2 -1
  60. package/front_end/ui/legacy/components/object_ui/ObjectPropertiesSection.ts +144 -143
  61. package/front_end/ui/legacy/components/utils/Linkifier.ts +2 -1
  62. package/mcp/tsconfig.json +16 -0
  63. package/package.json +2 -2
  64. package/front_end/core/common/Linkifier.ts +0 -55
  65. package/front_end/panels/timeline/CLSLinkifier.ts +0 -58
  66. /package/front_end/panels/application/{components/originTrialTokenRows.css → originTrialTokenRows.css} +0 -0
  67. /package/front_end/panels/application/{components/originTrialTreeView.css → originTrialTreeView.css} +0 -0
@@ -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,
@@ -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
  }
@@ -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],
@@ -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
  }
@@ -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
  */
@@ -763,7 +763,6 @@ inspectorBackend.registerEnum("Network.ResourcePriority", {VeryLow: "VeryLow", L
763
763
  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"});
764
764
  inspectorBackend.registerEnum("Network.CertificateTransparencyCompliance", {Unknown: "unknown", NotCompliant: "not-compliant", Compliant: "compliant"});
765
765
  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"});
766
- inspectorBackend.registerEnum("Network.IpProxyStatus", {Available: "Available", FeatureNotEnabled: "FeatureNotEnabled", MaskedDomainListNotEnabled: "MaskedDomainListNotEnabled", MaskedDomainListNotPopulated: "MaskedDomainListNotPopulated", AuthTokensUnavailable: "AuthTokensUnavailable", Unavailable: "Unavailable", BypassedByDevTools: "BypassedByDevTools"});
767
766
  inspectorBackend.registerEnum("Network.CorsError", {DisallowedByMode: "DisallowedByMode", InvalidResponse: "InvalidResponse", WildcardOriginNotAllowed: "WildcardOriginNotAllowed", MissingAllowOriginHeader: "MissingAllowOriginHeader", MultipleAllowOriginValues: "MultipleAllowOriginValues", InvalidAllowOriginValue: "InvalidAllowOriginValue", AllowOriginMismatch: "AllowOriginMismatch", InvalidAllowCredentials: "InvalidAllowCredentials", CorsDisabledScheme: "CorsDisabledScheme", PreflightInvalidStatus: "PreflightInvalidStatus", PreflightDisallowedRedirect: "PreflightDisallowedRedirect", PreflightWildcardOriginNotAllowed: "PreflightWildcardOriginNotAllowed", PreflightMissingAllowOriginHeader: "PreflightMissingAllowOriginHeader", PreflightMultipleAllowOriginValues: "PreflightMultipleAllowOriginValues", PreflightInvalidAllowOriginValue: "PreflightInvalidAllowOriginValue", PreflightAllowOriginMismatch: "PreflightAllowOriginMismatch", PreflightInvalidAllowCredentials: "PreflightInvalidAllowCredentials", PreflightMissingAllowExternal: "PreflightMissingAllowExternal", PreflightInvalidAllowExternal: "PreflightInvalidAllowExternal", PreflightMissingAllowPrivateNetwork: "PreflightMissingAllowPrivateNetwork", PreflightInvalidAllowPrivateNetwork: "PreflightInvalidAllowPrivateNetwork", InvalidAllowMethodsPreflightResponse: "InvalidAllowMethodsPreflightResponse", InvalidAllowHeadersPreflightResponse: "InvalidAllowHeadersPreflightResponse", MethodDisallowedByPreflightResponse: "MethodDisallowedByPreflightResponse", HeaderDisallowedByPreflightResponse: "HeaderDisallowedByPreflightResponse", RedirectContainsCredentials: "RedirectContainsCredentials", InsecurePrivateNetwork: "InsecurePrivateNetwork", InvalidPrivateNetworkAccess: "InvalidPrivateNetworkAccess", UnexpectedPrivateNetworkAccess: "UnexpectedPrivateNetworkAccess", NoCorsRedirectModeNotFollow: "NoCorsRedirectModeNotFollow", PreflightMissingPrivateNetworkAccessId: "PreflightMissingPrivateNetworkAccessId", PreflightMissingPrivateNetworkAccessName: "PreflightMissingPrivateNetworkAccessName", PrivateNetworkAccessPermissionUnavailable: "PrivateNetworkAccessPermissionUnavailable", PrivateNetworkAccessPermissionDenied: "PrivateNetworkAccessPermissionDenied", LocalNetworkAccessPermissionDenied: "LocalNetworkAccessPermissionDenied"});
768
767
  inspectorBackend.registerEnum("Network.ServiceWorkerResponseSource", {CacheStorage: "cache-storage", HttpCache: "http-cache", FallbackCode: "fallback-code", Network: "network"});
769
768
  inspectorBackend.registerEnum("Network.TrustTokenParamsRefreshPolicy", {UseCached: "UseCached", Refresh: "Refresh"});
@@ -827,8 +826,6 @@ inspectorBackend.registerEvent("Network.policyUpdated", []);
827
826
  inspectorBackend.registerEvent("Network.reportingApiReportAdded", ["report"]);
828
827
  inspectorBackend.registerEvent("Network.reportingApiReportUpdated", ["report"]);
829
828
  inspectorBackend.registerEvent("Network.reportingApiEndpointsChangedForOrigin", ["origin", "endpoints"]);
830
- inspectorBackend.registerCommand("Network.getIPProtectionProxyStatus", [], ["status"], "Returns enum representing if IP Proxy of requests is available or reason it is not active.");
831
- inspectorBackend.registerCommand("Network.setIPProtectionProxyBypassEnabled", [{"name": "enabled", "type": "boolean", "optional": false, "description": "Whether IP Proxy is being bypassed by devtools; false by default.", "typeRef": null}], [], "Sets bypass IP Protection Proxy boolean.");
832
829
  inspectorBackend.registerCommand("Network.setAcceptedEncodings", [{"name": "encodings", "type": "array", "optional": false, "description": "List of accepted content encodings.", "typeRef": "Network.ContentEncoding"}], [], "Sets a list of content encodings that will be accepted. Empty list means no encoding is accepted.");
833
830
  inspectorBackend.registerCommand("Network.clearAcceptedEncodingsOverride", [], [], "Clears accepted encodings set by setAcceptedEncodings");
834
831
  inspectorBackend.registerCommand("Network.canClearBrowserCache", [], ["result"], "Tells whether clearing browser cache is supported.");
@@ -874,7 +871,7 @@ inspectorBackend.registerType("Network.SecurityDetails", [{"name": "protocol", "
874
871
  inspectorBackend.registerType("Network.CorsErrorStatus", [{"name": "corsError", "type": "string", "optional": false, "description": "", "typeRef": "Network.CorsError"}, {"name": "failedParameter", "type": "string", "optional": false, "description": "", "typeRef": null}]);
875
872
  inspectorBackend.registerType("Network.TrustTokenParams", [{"name": "operation", "type": "string", "optional": false, "description": "", "typeRef": "Network.TrustTokenOperationType"}, {"name": "refreshPolicy", "type": "string", "optional": false, "description": "Only set for \\\"token-redemption\\\" operation and determine whether to request a fresh SRR or use a still valid cached SRR.", "typeRef": null}, {"name": "issuers", "type": "array", "optional": true, "description": "Origins of issuers from whom to request tokens or redemption records.", "typeRef": "string"}]);
876
873
  inspectorBackend.registerType("Network.ServiceWorkerRouterInfo", [{"name": "ruleIdMatched", "type": "number", "optional": true, "description": "ID of the rule matched. If there is a matched rule, this field will be set, otherwiser no value will be set.", "typeRef": null}, {"name": "matchedSourceType", "type": "string", "optional": true, "description": "The router source of the matched rule. If there is a matched rule, this field will be set, otherwise no value will be set.", "typeRef": "Network.ServiceWorkerRouterSource"}, {"name": "actualSourceType", "type": "string", "optional": true, "description": "The actual router source used.", "typeRef": "Network.ServiceWorkerRouterSource"}]);
877
- inspectorBackend.registerType("Network.Response", [{"name": "url", "type": "string", "optional": false, "description": "Response URL. This URL can be different from CachedResource.url in case of redirect.", "typeRef": null}, {"name": "status", "type": "number", "optional": false, "description": "HTTP response status code.", "typeRef": null}, {"name": "statusText", "type": "string", "optional": false, "description": "HTTP response status text.", "typeRef": null}, {"name": "headers", "type": "object", "optional": false, "description": "HTTP response headers.", "typeRef": "Network.Headers"}, {"name": "headersText", "type": "string", "optional": true, "description": "HTTP response headers text. This has been replaced by the headers in Network.responseReceivedExtraInfo.", "typeRef": null}, {"name": "mimeType", "type": "string", "optional": false, "description": "Resource mimeType as determined by the browser.", "typeRef": null}, {"name": "charset", "type": "string", "optional": false, "description": "Resource charset as determined by the browser (if applicable).", "typeRef": null}, {"name": "requestHeaders", "type": "object", "optional": true, "description": "Refined HTTP request headers that were actually transmitted over the network.", "typeRef": "Network.Headers"}, {"name": "requestHeadersText", "type": "string", "optional": true, "description": "HTTP request headers text. This has been replaced by the headers in Network.requestWillBeSentExtraInfo.", "typeRef": null}, {"name": "connectionReused", "type": "boolean", "optional": false, "description": "Specifies whether physical connection was actually reused for this request.", "typeRef": null}, {"name": "connectionId", "type": "number", "optional": false, "description": "Physical connection id that was actually used for this request.", "typeRef": null}, {"name": "remoteIPAddress", "type": "string", "optional": true, "description": "Remote IP address.", "typeRef": null}, {"name": "remotePort", "type": "number", "optional": true, "description": "Remote port.", "typeRef": null}, {"name": "fromDiskCache", "type": "boolean", "optional": true, "description": "Specifies that the request was served from the disk cache.", "typeRef": null}, {"name": "fromServiceWorker", "type": "boolean", "optional": true, "description": "Specifies that the request was served from the ServiceWorker.", "typeRef": null}, {"name": "fromPrefetchCache", "type": "boolean", "optional": true, "description": "Specifies that the request was served from the prefetch cache.", "typeRef": null}, {"name": "fromEarlyHints", "type": "boolean", "optional": true, "description": "Specifies that the request was served from the prefetch cache.", "typeRef": null}, {"name": "serviceWorkerRouterInfo", "type": "object", "optional": true, "description": "Information about how ServiceWorker Static Router API was used. If this field is set with `matchedSourceType` field, a matching rule is found. If this field is set without `matchedSource`, no matching rule is found. Otherwise, the API is not used.", "typeRef": "Network.ServiceWorkerRouterInfo"}, {"name": "encodedDataLength", "type": "number", "optional": false, "description": "Total number of bytes received for this request so far.", "typeRef": null}, {"name": "timing", "type": "object", "optional": true, "description": "Timing information for the given request.", "typeRef": "Network.ResourceTiming"}, {"name": "serviceWorkerResponseSource", "type": "string", "optional": true, "description": "Response source of response from ServiceWorker.", "typeRef": "Network.ServiceWorkerResponseSource"}, {"name": "responseTime", "type": "number", "optional": true, "description": "The time at which the returned response was generated.", "typeRef": "Network.TimeSinceEpoch"}, {"name": "cacheStorageCacheName", "type": "string", "optional": true, "description": "Cache Storage Cache Name.", "typeRef": null}, {"name": "protocol", "type": "string", "optional": true, "description": "Protocol used to fetch this request.", "typeRef": null}, {"name": "alternateProtocolUsage", "type": "string", "optional": true, "description": "The reason why Chrome uses a specific transport protocol for HTTP semantics.", "typeRef": "Network.AlternateProtocolUsage"}, {"name": "securityState", "type": "string", "optional": false, "description": "Security state of the request resource.", "typeRef": "Security.SecurityState"}, {"name": "securityDetails", "type": "object", "optional": true, "description": "Security details for the request.", "typeRef": "Network.SecurityDetails"}, {"name": "isIpProtectionUsed", "type": "boolean", "optional": true, "description": "Indicates whether the request was sent through IP Protection proxies. If set to true, the request used the IP Protection privacy feature.", "typeRef": null}]);
874
+ inspectorBackend.registerType("Network.Response", [{"name": "url", "type": "string", "optional": false, "description": "Response URL. This URL can be different from CachedResource.url in case of redirect.", "typeRef": null}, {"name": "status", "type": "number", "optional": false, "description": "HTTP response status code.", "typeRef": null}, {"name": "statusText", "type": "string", "optional": false, "description": "HTTP response status text.", "typeRef": null}, {"name": "headers", "type": "object", "optional": false, "description": "HTTP response headers.", "typeRef": "Network.Headers"}, {"name": "headersText", "type": "string", "optional": true, "description": "HTTP response headers text. This has been replaced by the headers in Network.responseReceivedExtraInfo.", "typeRef": null}, {"name": "mimeType", "type": "string", "optional": false, "description": "Resource mimeType as determined by the browser.", "typeRef": null}, {"name": "charset", "type": "string", "optional": false, "description": "Resource charset as determined by the browser (if applicable).", "typeRef": null}, {"name": "requestHeaders", "type": "object", "optional": true, "description": "Refined HTTP request headers that were actually transmitted over the network.", "typeRef": "Network.Headers"}, {"name": "requestHeadersText", "type": "string", "optional": true, "description": "HTTP request headers text. This has been replaced by the headers in Network.requestWillBeSentExtraInfo.", "typeRef": null}, {"name": "connectionReused", "type": "boolean", "optional": false, "description": "Specifies whether physical connection was actually reused for this request.", "typeRef": null}, {"name": "connectionId", "type": "number", "optional": false, "description": "Physical connection id that was actually used for this request.", "typeRef": null}, {"name": "remoteIPAddress", "type": "string", "optional": true, "description": "Remote IP address.", "typeRef": null}, {"name": "remotePort", "type": "number", "optional": true, "description": "Remote port.", "typeRef": null}, {"name": "fromDiskCache", "type": "boolean", "optional": true, "description": "Specifies that the request was served from the disk cache.", "typeRef": null}, {"name": "fromServiceWorker", "type": "boolean", "optional": true, "description": "Specifies that the request was served from the ServiceWorker.", "typeRef": null}, {"name": "fromPrefetchCache", "type": "boolean", "optional": true, "description": "Specifies that the request was served from the prefetch cache.", "typeRef": null}, {"name": "fromEarlyHints", "type": "boolean", "optional": true, "description": "Specifies that the request was served from the prefetch cache.", "typeRef": null}, {"name": "serviceWorkerRouterInfo", "type": "object", "optional": true, "description": "Information about how ServiceWorker Static Router API was used. If this field is set with `matchedSourceType` field, a matching rule is found. If this field is set without `matchedSource`, no matching rule is found. Otherwise, the API is not used.", "typeRef": "Network.ServiceWorkerRouterInfo"}, {"name": "encodedDataLength", "type": "number", "optional": false, "description": "Total number of bytes received for this request so far.", "typeRef": null}, {"name": "timing", "type": "object", "optional": true, "description": "Timing information for the given request.", "typeRef": "Network.ResourceTiming"}, {"name": "serviceWorkerResponseSource", "type": "string", "optional": true, "description": "Response source of response from ServiceWorker.", "typeRef": "Network.ServiceWorkerResponseSource"}, {"name": "responseTime", "type": "number", "optional": true, "description": "The time at which the returned response was generated.", "typeRef": "Network.TimeSinceEpoch"}, {"name": "cacheStorageCacheName", "type": "string", "optional": true, "description": "Cache Storage Cache Name.", "typeRef": null}, {"name": "protocol", "type": "string", "optional": true, "description": "Protocol used to fetch this request.", "typeRef": null}, {"name": "alternateProtocolUsage", "type": "string", "optional": true, "description": "The reason why Chrome uses a specific transport protocol for HTTP semantics.", "typeRef": "Network.AlternateProtocolUsage"}, {"name": "securityState", "type": "string", "optional": false, "description": "Security state of the request resource.", "typeRef": "Security.SecurityState"}, {"name": "securityDetails", "type": "object", "optional": true, "description": "Security details for the request.", "typeRef": "Network.SecurityDetails"}]);
878
875
  inspectorBackend.registerType("Network.WebSocketRequest", [{"name": "headers", "type": "object", "optional": false, "description": "HTTP request headers.", "typeRef": "Network.Headers"}]);
879
876
  inspectorBackend.registerType("Network.WebSocketResponse", [{"name": "status", "type": "number", "optional": false, "description": "HTTP response status code.", "typeRef": null}, {"name": "statusText", "type": "string", "optional": false, "description": "HTTP response status text.", "typeRef": null}, {"name": "headers", "type": "object", "optional": false, "description": "HTTP response headers.", "typeRef": "Network.Headers"}, {"name": "headersText", "type": "string", "optional": true, "description": "HTTP response headers text.", "typeRef": null}, {"name": "requestHeaders", "type": "object", "optional": true, "description": "HTTP request headers.", "typeRef": "Network.Headers"}, {"name": "requestHeadersText", "type": "string", "optional": true, "description": "HTTP request headers text.", "typeRef": null}]);
880
877
  inspectorBackend.registerType("Network.WebSocketFrame", [{"name": "opcode", "type": "number", "optional": false, "description": "WebSocket message opcode.", "typeRef": null}, {"name": "mask", "type": "boolean", "optional": false, "description": "WebSocket message mask.", "typeRef": null}, {"name": "payloadData", "type": "string", "optional": false, "description": "WebSocket message payload data. If the opcode is 1, this is a text message and payloadData is a UTF-8 string. If the opcode isn't 1, then payloadData is a base64 encoded string representing binary data.", "typeRef": null}]);
@@ -1354,7 +1351,7 @@ inspectorBackend.registerCommand("Target.setAutoAttach", [{"name": "autoAttach",
1354
1351
  inspectorBackend.registerCommand("Target.autoAttachRelated", [{"name": "targetId", "type": "string", "optional": false, "description": "", "typeRef": "Target.TargetID"}, {"name": "waitForDebuggerOnStart", "type": "boolean", "optional": false, "description": "Whether to pause new targets when attaching to them. Use `Runtime.runIfWaitingForDebugger` to run paused targets.", "typeRef": null}, {"name": "filter", "type": "array", "optional": true, "description": "Only targets matching filter will be attached.", "typeRef": "Target.TargetFilter"}], [], "Adds the specified target to the list of targets that will be monitored for any related target creation (such as child frames, child workers and new versions of service worker) and reported through `attachedToTarget`. The specified target is also auto-attached. This cancels the effect of any previous `setAutoAttach` and is also cancelled by subsequent `setAutoAttach`. Only available at the Browser target.");
1355
1352
  inspectorBackend.registerCommand("Target.setDiscoverTargets", [{"name": "discover", "type": "boolean", "optional": false, "description": "Whether to discover available targets.", "typeRef": null}, {"name": "filter", "type": "array", "optional": true, "description": "Only targets matching filter will be attached. If `discover` is false, `filter` must be omitted or empty.", "typeRef": "Target.TargetFilter"}], [], "Controls whether to discover available targets and notify via `targetCreated/targetInfoChanged/targetDestroyed` events.");
1356
1353
  inspectorBackend.registerCommand("Target.setRemoteLocations", [{"name": "locations", "type": "array", "optional": false, "description": "List of remote locations.", "typeRef": "Target.RemoteLocation"}], [], "Enables target discovery for the specified locations, when `setDiscoverTargets` was set to `true`.");
1357
- inspectorBackend.registerCommand("Target.openDevTools", [{"name": "targetId", "type": "string", "optional": false, "description": "This can be the page or tab target ID.", "typeRef": "Target.TargetID"}, {"name": "panelId", "type": "string", "optional": true, "description": "The id of the panel we want DevTools to open initially. Currently supported panels are elements, console, network, sources and resources.", "typeRef": null}], ["targetId"], "Opens a DevTools window for the target.");
1354
+ inspectorBackend.registerCommand("Target.openDevTools", [{"name": "targetId", "type": "string", "optional": false, "description": "This can be the page or tab target ID.", "typeRef": "Target.TargetID"}, {"name": "panelId", "type": "string", "optional": true, "description": "The id of the panel we want DevTools to open initially. Currently supported panels are elements, console, network, sources, resources and performance.", "typeRef": null}], ["targetId"], "Opens a DevTools window for the target.");
1358
1355
  inspectorBackend.registerType("Target.TargetInfo", [{"name": "targetId", "type": "string", "optional": false, "description": "", "typeRef": "Target.TargetID"}, {"name": "type", "type": "string", "optional": false, "description": "List of types: https://source.chromium.org/chromium/chromium/src/+/main:content/browser/devtools/devtools_agent_host_impl.cc?ss=chromium&q=f:devtools%20-f:out%20%22::kTypeTab%5B%5D%22", "typeRef": null}, {"name": "title", "type": "string", "optional": false, "description": "", "typeRef": null}, {"name": "url", "type": "string", "optional": false, "description": "", "typeRef": null}, {"name": "attached", "type": "boolean", "optional": false, "description": "Whether the target has an attached client.", "typeRef": null}, {"name": "openerId", "type": "string", "optional": true, "description": "Opener target Id", "typeRef": "Target.TargetID"}, {"name": "canAccessOpener", "type": "boolean", "optional": false, "description": "Whether the target has access to the originating window.", "typeRef": null}, {"name": "openerFrameId", "type": "string", "optional": true, "description": "Frame id of originating window (is only set if target has an opener).", "typeRef": "Page.FrameId"}, {"name": "parentFrameId", "type": "string", "optional": true, "description": "Id of the parent frame, only present for the \\\"iframe\\\" targets.", "typeRef": "Page.FrameId"}, {"name": "browserContextId", "type": "string", "optional": true, "description": "", "typeRef": "Browser.BrowserContextID"}, {"name": "subtype", "type": "string", "optional": true, "description": "Provides additional details for specific target types. For example, for the type of \\\"page\\\", this may be set to \\\"prerender\\\".", "typeRef": null}]);
1359
1356
  inspectorBackend.registerType("Target.FilterEntry", [{"name": "exclude", "type": "boolean", "optional": true, "description": "If set, causes exclusion of matching targets from the list.", "typeRef": null}, {"name": "type", "type": "string", "optional": true, "description": "If not present, matches any type.", "typeRef": null}]);
1360
1357
  inspectorBackend.registerType("Target.TargetFilter", [{"name": "TargetFilter", "type": "array", "optional": false, "description": "The entries in TargetFilter are matched sequentially against targets and the first entry that matches determines if the target is included or not, depending on the value of `exclude` field in the entry. If filter is not specified, the one assumed is [{type: \\\"browser\\\", exclude: true}, {type: \\\"tab\\\", exclude: true}, {}] (i.e. include everything but `browser` and `tab`).", "typeRef": "Target.FilterEntry"}]);
@@ -677,10 +677,6 @@ export const generatedProperties = [
677
677
  "scroll-snap-align",
678
678
  "scroll-snap-stop",
679
679
  "scroll-snap-type",
680
- "scroll-start-block",
681
- "scroll-start-inline",
682
- "scroll-start-x",
683
- "scroll-start-y",
684
680
  "scroll-target-group",
685
681
  "scroll-timeline-axis",
686
682
  "scroll-timeline-name",
@@ -4051,25 +4047,6 @@ export const generatedProperties = [
4051
4047
  ],
4052
4048
  "name": "scroll-snap-type"
4053
4049
  },
4054
- {
4055
- "longhands": [
4056
- "scroll-start-block",
4057
- "scroll-start-inline"
4058
- ],
4059
- "name": "scroll-start"
4060
- },
4061
- {
4062
- "name": "scroll-start-block"
4063
- },
4064
- {
4065
- "name": "scroll-start-inline"
4066
- },
4067
- {
4068
- "name": "scroll-start-x"
4069
- },
4070
- {
4071
- "name": "scroll-start-y"
4072
- },
4073
4050
  {
4074
4051
  "keywords": [
4075
4052
  "none",
@@ -3240,21 +3240,6 @@ export namespace ProtocolMapping {
3240
3240
  paramsType: [];
3241
3241
  returnType: Protocol.Memory.GetSamplingProfileResponse;
3242
3242
  };
3243
- /**
3244
- * Returns enum representing if IP Proxy of requests is available
3245
- * or reason it is not active.
3246
- */
3247
- 'Network.getIPProtectionProxyStatus': {
3248
- paramsType: [];
3249
- returnType: Protocol.Network.GetIPProtectionProxyStatusResponse;
3250
- };
3251
- /**
3252
- * Sets bypass IP Protection Proxy boolean.
3253
- */
3254
- 'Network.setIPProtectionProxyBypassEnabled': {
3255
- paramsType: [Protocol.Network.SetIPProtectionProxyBypassEnabledRequest];
3256
- returnType: void;
3257
- };
3258
3243
  /**
3259
3244
  * Sets a list of content encodings that will be accepted. Empty list means no encoding is accepted.
3260
3245
  */
@@ -2451,17 +2451,6 @@ declare namespace ProtocolProxyApi {
2451
2451
  }
2452
2452
 
2453
2453
  export interface NetworkApi {
2454
- /**
2455
- * Returns enum representing if IP Proxy of requests is available
2456
- * or reason it is not active.
2457
- */
2458
- invoke_getIPProtectionProxyStatus(): Promise<Protocol.Network.GetIPProtectionProxyStatusResponse>;
2459
-
2460
- /**
2461
- * Sets bypass IP Protection Proxy boolean.
2462
- */
2463
- invoke_setIPProtectionProxyBypassEnabled(params: Protocol.Network.SetIPProtectionProxyBypassEnabledRequest): Promise<Protocol.ProtocolResponseWithError>;
2464
-
2465
2454
  /**
2466
2455
  * Sets a list of content encodings that will be accepted. Empty list means no encoding is accepted.
2467
2456
  */
@@ -10165,20 +10165,6 @@ export namespace Network {
10165
10165
  SriMessageSignatureMismatch = 'sri-message-signature-mismatch',
10166
10166
  }
10167
10167
 
10168
- /**
10169
- * Sets Controls for IP Proxy of requests.
10170
- * Page reload is required before the new behavior will be observed.
10171
- */
10172
- export const enum IpProxyStatus {
10173
- Available = 'Available',
10174
- FeatureNotEnabled = 'FeatureNotEnabled',
10175
- MaskedDomainListNotEnabled = 'MaskedDomainListNotEnabled',
10176
- MaskedDomainListNotPopulated = 'MaskedDomainListNotPopulated',
10177
- AuthTokensUnavailable = 'AuthTokensUnavailable',
10178
- Unavailable = 'Unavailable',
10179
- BypassedByDevTools = 'BypassedByDevTools',
10180
- }
10181
-
10182
10168
  /**
10183
10169
  * The reason why request was blocked.
10184
10170
  */
@@ -10424,11 +10410,6 @@ export namespace Network {
10424
10410
  * Security details for the request.
10425
10411
  */
10426
10412
  securityDetails?: SecurityDetails;
10427
- /**
10428
- * Indicates whether the request was sent through IP Protection proxies. If
10429
- * set to true, the request used the IP Protection privacy feature.
10430
- */
10431
- isIpProtectionUsed?: boolean;
10432
10413
  }
10433
10414
 
10434
10415
  /**
@@ -11336,20 +11317,6 @@ export namespace Network {
11336
11317
  includeCredentials: boolean;
11337
11318
  }
11338
11319
 
11339
- export interface GetIPProtectionProxyStatusResponse extends ProtocolResponseWithError {
11340
- /**
11341
- * Whether IP proxy is available
11342
- */
11343
- status: IpProxyStatus;
11344
- }
11345
-
11346
- export interface SetIPProtectionProxyBypassEnabledRequest {
11347
- /**
11348
- * Whether IP Proxy is being bypassed by devtools; false by default.
11349
- */
11350
- enabled: boolean;
11351
- }
11352
-
11353
11320
  export interface SetAcceptedEncodingsRequest {
11354
11321
  /**
11355
11322
  * List of accepted content encodings.
@@ -18516,7 +18483,8 @@ export namespace Target {
18516
18483
  targetId: TargetID;
18517
18484
  /**
18518
18485
  * The id of the panel we want DevTools to open initially. Currently
18519
- * supported panels are elements, console, network, sources and resources.
18486
+ * supported panels are elements, console, network, sources, resources
18487
+ * and performance.
18520
18488
  */
18521
18489
  panelId?: string;
18522
18490
  }
@@ -17,6 +17,7 @@ import * as TextUtils from '../../models/text_utils/text_utils.js';
17
17
  import * as Workspace from '../../models/workspace/workspace.js';
18
18
  import * as Buttons from '../../ui/components/buttons/buttons.js';
19
19
  import * as Snackbars from '../../ui/components/snackbars/snackbars.js';
20
+ import * as UIHelpers from '../../ui/helpers/helpers.js';
20
21
  import * as UI from '../../ui/legacy/legacy.js';
21
22
  import * as Lit from '../../ui/lit/lit.js';
22
23
  import * as VisualLogging from '../../ui/visual_logging/visual_logging.js';
@@ -957,7 +958,7 @@ export class AiAssistancePanel extends UI.Panel.Panel {
957
958
  onDeleteClick: this.#onDeleteClicked.bind(this),
958
959
  onExportConversationClick: this.#onExportConversationClick.bind(this),
959
960
  onHelpClick: () => {
960
- UI.UIUtils.openInNewTab(AI_ASSISTANCE_HELP);
961
+ UIHelpers.openInNewTab(AI_ASSISTANCE_HELP);
961
962
  },
962
963
  onSettingsClick: () => {
963
964
  void UI.ViewManager.ViewManager.instance().showView('chrome-ai');
@@ -8,6 +8,7 @@ import * as i18n from '../../../core/i18n/i18n.js';
8
8
  import type * as Platform from '../../../core/platform/platform.js';
9
9
  import * as Buttons from '../../../ui/components/buttons/buttons.js';
10
10
  import * as Input from '../../../ui/components/input/input.js';
11
+ import * as UIHelpers from '../../../ui/helpers/helpers.js';
11
12
  import * as UI from '../../../ui/legacy/legacy.js';
12
13
  import * as Lit from '../../../ui/lit/lit.js';
13
14
  import * as VisualLogging from '../../../ui/visual_logging/visual_logging.js';
@@ -321,7 +322,7 @@ export class UserActionRow extends UI.Widget.Widget implements UserActionRowWidg
321
322
  {
322
323
  onSuggestionClick: this.onSuggestionClick,
323
324
  onRatingClick: this.#handleRateClick.bind(this),
324
- onReportClick: () => UI.UIUtils.openInNewTab(REPORT_URL),
325
+ onReportClick: () => UIHelpers.openInNewTab(REPORT_URL),
325
326
  onCopyResponseClick: this.onCopyResponseClick,
326
327
  scrollSuggestionsScrollContainer: this.#scrollSuggestionsScrollContainer.bind(this),
327
328
  onSuggestionsScrollOrResize: this.#handleSuggestionsScrollOrResize.bind(this),
@@ -51,13 +51,13 @@ import {BackForwardCacheTreeElement} from './BackForwardCacheTreeElement.js';
51
51
  import {BackgroundServiceModel} from './BackgroundServiceModel.js';
52
52
  import {BackgroundServiceView} from './BackgroundServiceView.js';
53
53
  import {BounceTrackingMitigationsTreeElement} from './BounceTrackingMitigationsTreeElement.js';
54
- import * as ApplicationComponents from './components/components.js';
55
54
  import {type DOMStorage, DOMStorageModel, Events as DOMStorageModelEvents} from './DOMStorageModel.js';
56
55
  import {
57
56
  Events as ExtensionStorageModelEvents,
58
57
  type ExtensionStorage,
59
58
  ExtensionStorageModel,
60
59
  } from './ExtensionStorageModel.js';
60
+ import {FrameDetailsReportView} from './FrameDetailsView.js';
61
61
  import {
62
62
  type Database as IndexedDBModelDatabase,
63
63
  type DatabaseId,
@@ -2149,8 +2149,7 @@ export class FrameTreeElement extends ApplicationPanelTreeElement {
2149
2149
  private readonly treeElementForResource: Map<string, FrameResourceTreeElement>;
2150
2150
  private treeElementForWindow: Map<Protocol.Target.TargetID, FrameWindowTreeElement>;
2151
2151
  private treeElementForWorker: Map<Protocol.Target.TargetID, WorkerTreeElement>;
2152
- private view: LegacyWrapper.LegacyWrapper
2153
- .LegacyWrapper<UI.Widget.Widget, ApplicationComponents.FrameDetailsView.FrameDetailsReportView>|null;
2152
+ private view: FrameDetailsReportView|null;
2154
2153
 
2155
2154
  constructor(section: ResourcesSection, frame: SDK.ResourceTreeModel.ResourceTreeFrame) {
2156
2155
  super(section.panel, '', false, 'frame');
@@ -2195,8 +2194,8 @@ export class FrameTreeElement extends ApplicationPanelTreeElement {
2195
2194
  this.treeElementForWorker.clear();
2196
2195
 
2197
2196
  if (this.selected) {
2198
- this.view = LegacyWrapper.LegacyWrapper.legacyWrapper(
2199
- UI.Widget.Widget, new ApplicationComponents.FrameDetailsView.FrameDetailsReportView(this.frame));
2197
+ this.view = new FrameDetailsReportView();
2198
+ this.view.frame = this.frame;
2200
2199
  this.showView(this.view);
2201
2200
  } else {
2202
2201
  this.view = null;
@@ -2233,8 +2232,8 @@ export class FrameTreeElement extends ApplicationPanelTreeElement {
2233
2232
  override onselect(selectedByUser?: boolean): boolean {
2234
2233
  super.onselect(selectedByUser);
2235
2234
  if (!this.view) {
2236
- this.view = LegacyWrapper.LegacyWrapper.legacyWrapper(
2237
- UI.Widget.Widget, new ApplicationComponents.FrameDetailsView.FrameDetailsReportView(this.frame));
2235
+ this.view = new FrameDetailsReportView();
2236
+ this.view.frame = this.frame;
2238
2237
  }
2239
2238
  Host.userMetrics.panelShown('frame-details');
2240
2239
  this.showView(this.view);