chrome-devtools-frontend 1.0.1652307 → 1.0.1654411

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 (94) hide show
  1. package/.agents/skills/fixing-skipped-tests/SKILL.md +32 -0
  2. package/.agents/skills/migrate-chromium-test/SKILL.md +144 -0
  3. package/docs/get_the_code.md +1 -2
  4. package/docs/ui_engineering.md +3 -1
  5. package/eslint.config.mjs +0 -5
  6. package/front_end/core/sdk/CPUThrottlingManager.ts +13 -8
  7. package/front_end/core/sdk/CSSMetadata.ts +23 -0
  8. package/front_end/core/sdk/CompilerSourceMappingContentProvider.ts +8 -4
  9. package/front_end/core/sdk/DOMModel.ts +4 -0
  10. package/front_end/core/sdk/EmulationModel.ts +4 -0
  11. package/front_end/core/sdk/ResourceTreeModel.ts +3 -2
  12. package/front_end/entrypoints/heap_snapshot_worker/HeapSnapshot.ts +459 -74
  13. package/front_end/entrypoints/main/MainImpl.ts +0 -6
  14. package/front_end/foundation/Universe.ts +18 -0
  15. package/front_end/generated/InspectorBackendCommands.ts +6 -5
  16. package/front_end/generated/SupportedCSSProperties.js +122 -28
  17. package/front_end/generated/protocol.ts +58 -0
  18. package/front_end/models/ai_assistance/AiConversation.ts +2 -1
  19. package/front_end/models/ai_assistance/README.md +4 -3
  20. package/front_end/models/ai_assistance/agents/ContextSelectionAgent.ts +1 -1
  21. package/front_end/models/ai_assistance/agents/PerformanceAgent.snapshot.txt +2 -2
  22. package/front_end/models/ai_assistance/agents/PerformanceAgent.ts +11 -164
  23. package/front_end/models/ai_assistance/ai_assistance.ts +6 -2
  24. package/front_end/models/ai_assistance/contexts/PerformanceTraceContext.ts +295 -0
  25. package/front_end/models/ai_assistance/data_formatters/PerformanceInsightFormatter.snapshot.txt +10 -10
  26. package/front_end/models/ai_assistance/data_formatters/PerformanceInsightFormatter.ts +12 -11
  27. package/front_end/models/ai_assistance/data_formatters/PerformanceTraceFormatter.snapshot.txt +6 -6
  28. package/front_end/models/ai_assistance/skills/accessibility.md +4 -2
  29. package/front_end/models/ai_assistance/tools/GetElementAccessibilityDetails.ts +142 -0
  30. package/front_end/models/ai_assistance/tools/GetStyles.ts +1 -1
  31. package/front_end/models/ai_assistance/tools/README.md +21 -1
  32. package/front_end/models/ai_assistance/tools/{ResolveLighthousePath.ts → ResolveDevtoolsNodePath.ts} +18 -17
  33. package/front_end/models/ai_assistance/tools/Tool.ts +6 -1
  34. package/front_end/models/ai_assistance/tools/ToolRegistry.ts +4 -2
  35. package/front_end/models/autofill_manager/AutofillManager.ts +7 -15
  36. package/front_end/models/bindings/NetworkProject.ts +4 -8
  37. package/front_end/models/breakpoints/BreakpointManager.ts +9 -9
  38. package/front_end/models/emulation/DeviceModeModel.ts +24 -0
  39. package/front_end/models/emulation/EmulatedDevices.ts +108 -0
  40. package/front_end/models/heap_snapshot/HeapSnapshotModel.ts +36 -0
  41. package/front_end/models/heap_snapshot/HeapSnapshotProxy.ts +8 -0
  42. package/front_end/models/issues_manager/IssuesManager.ts +10 -6
  43. package/front_end/models/javascript_metadata/JavaScriptMetadata.ts +4 -5
  44. package/front_end/models/live-metrics/LiveMetrics.ts +6 -6
  45. package/front_end/models/live-metrics/web-vitals-injected/spec/spec.ts +5 -5
  46. package/front_end/models/live-metrics/web-vitals-injected/web-vitals-injected.ts +3 -3
  47. package/front_end/models/logs/LogManager.ts +25 -10
  48. package/front_end/models/logs/NetworkLog.ts +24 -19
  49. package/front_end/models/persistence/AutomaticFileSystemWorkspaceBinding.ts +14 -5
  50. package/front_end/models/persistence/IsolatedFileSystem.ts +9 -11
  51. package/front_end/models/persistence/IsolatedFileSystemManager.ts +5 -3
  52. package/front_end/models/persistence/NetworkPersistenceManager.ts +73 -44
  53. package/front_end/models/persistence/PersistenceImpl.ts +4 -5
  54. package/front_end/models/trace/EntityMapper.ts +1 -1
  55. package/front_end/panels/ai_assistance/AiAssistancePanel.ts +9 -9
  56. package/front_end/panels/ai_assistance/ExportConversation.ts +4 -1
  57. package/front_end/panels/ai_assistance/components/ChatInput.ts +2 -2
  58. package/front_end/panels/application/IndexedDBViews.ts +38 -36
  59. package/front_end/panels/application/components/AdsView.ts +4 -0
  60. package/front_end/panels/autofill/AutofillView.ts +1 -1
  61. package/front_end/panels/autofill/autofill-meta.ts +3 -2
  62. package/front_end/panels/elements/AccessibilityTreeUtils.ts +26 -15
  63. package/front_end/panels/elements/AccessibilityTreeView.ts +12 -9
  64. package/front_end/panels/elements/ElementsTreeOutline.ts +5 -0
  65. package/front_end/panels/layer_viewer/LayerTreeOutline.ts +118 -68
  66. package/front_end/panels/layer_viewer/Layers3DView.ts +1 -1
  67. package/front_end/panels/layer_viewer/layerTreeOutline.css +20 -13
  68. package/front_end/panels/layers/LayersPanel.ts +1 -1
  69. package/front_end/panels/mobile_throttling/ThrottlingSettingsTab.ts +64 -17
  70. package/front_end/panels/mobile_throttling/throttlingSettingsTab.css +5 -0
  71. package/front_end/panels/network/LinkPreloadGenerator.ts +101 -0
  72. package/front_end/panels/network/NetworkLogView.ts +28 -0
  73. package/front_end/panels/network/network.ts +2 -0
  74. package/front_end/panels/profiler/HeapSnapshotView.ts +121 -33
  75. package/front_end/panels/profiler/ModuleUIStrings.ts +4 -0
  76. package/front_end/panels/timeline/TimelineHistoryManager.ts +38 -37
  77. package/front_end/panels/timeline/TimelinePanel.ts +32 -8
  78. package/front_end/panels/timeline/components/CPUThrottlingSelector.ts +7 -6
  79. package/front_end/panels/timeline/components/LiveMetricsView.ts +38 -38
  80. package/front_end/panels/timeline/components/MetricCard.ts +18 -18
  81. package/front_end/panels/timeline/components/liveMetricsView.css +6 -6
  82. package/front_end/panels/timeline/components/metricCard.css +4 -4
  83. package/front_end/panels/whats_new/ReleaseNoteText.ts +3 -3
  84. package/front_end/panels/whats_new/resources/WNDT.md +1 -1
  85. package/front_end/third_party/chromium/README.chromium +1 -1
  86. package/front_end/ui/legacy/InspectorDrawerView.ts +7 -5
  87. package/front_end/ui/legacy/ListWidget.ts +12 -0
  88. package/front_end/ui/legacy/SplitWidget.ts +12 -11
  89. package/front_end/ui/legacy/components/data_grid/DataGridElement.ts +23 -19
  90. package/front_end/ui/legacy/components/object_ui/CustomPreviewComponent.ts +8 -1
  91. package/front_end/ui/legacy/components/object_ui/ObjectPropertiesSection.ts +110 -17
  92. package/front_end/ui/legacy/treeoutline.css +1 -1
  93. package/front_end/ui/visual_logging/KnownContextValues.ts +1 -0
  94. package/package.json +4 -3
@@ -43,14 +43,12 @@ import * as Root from '../../core/root/root.js';
43
43
  import * as SDK from '../../core/sdk/sdk.js';
44
44
  import * as Foundation from '../../foundation/foundation.js';
45
45
  import * as AiAssistanceModel from '../../models/ai_assistance/ai_assistance.js';
46
- import * as AutofillManager from '../../models/autofill_manager/autofill_manager.js';
47
46
  import * as Badges from '../../models/badges/badges.js';
48
47
  import * as Bindings from '../../models/bindings/bindings.js';
49
48
  import * as Breakpoints from '../../models/breakpoints/breakpoints.js';
50
49
  import * as CrUXManager from '../../models/crux-manager/crux-manager.js';
51
50
  import * as IssuesManager from '../../models/issues_manager/issues_manager.js';
52
51
  import * as LiveMetrics from '../../models/live-metrics/live-metrics.js';
53
- import * as Logs from '../../models/logs/logs.js';
54
52
  import * as Persistence from '../../models/persistence/persistence.js';
55
53
  import * as ProjectSettings from '../../models/project_settings/project_settings.js';
56
54
  import * as Workspace from '../../models/workspace/workspace.js';
@@ -435,8 +433,6 @@ export class MainImpl {
435
433
  UI.ViewManager.ViewManager.instance({forceNew: true, universe: this.#universe});
436
434
 
437
435
  // These instances need to be created early so they don't miss any events about requests/issues/etc.
438
- Logs.NetworkLog.NetworkLog.instance();
439
- Logs.LogManager.LogManager.instance();
440
436
  IssuesManager.IssuesManager.IssuesManager.instance({
441
437
  forceNew: true,
442
438
  ensureFirst: true,
@@ -505,8 +501,6 @@ export class MainImpl {
505
501
  workspace: Workspace.Workspace.WorkspaceImpl.instance(),
506
502
  });
507
503
 
508
- AutofillManager.AutofillManager.AutofillManager.instance();
509
-
510
504
  LiveMetrics.LiveMetrics.instance();
511
505
  CrUXManager.CrUXManager.instance();
512
506
 
@@ -5,7 +5,9 @@
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 AutofillManager from '../models/autofill_manager/autofill_manager.js';
8
9
  import * as Bindings from '../models/bindings/bindings.js';
10
+ import * as Logs from '../models/logs/logs.js';
9
11
  import * as Workspace from '../models/workspace/workspace.js';
10
12
 
11
13
  export interface CreationOptions {
@@ -18,6 +20,7 @@ export class Universe {
18
20
  // static method, we can move it out of the `DevToolsContext` and store it
19
21
  // directly on the `Universe`.
20
22
  readonly context: Root.DevToolsContext.DevToolsContext;
23
+ readonly autofillManager: AutofillManager.AutofillManager.AutofillManager;
21
24
 
22
25
  constructor(options: CreationOptions) {
23
26
  const context = new Root.DevToolsContext.WritableDevToolsContext();
@@ -48,6 +51,9 @@ export class Universe {
48
51
  new SDK.PageResourceLoader.PageResourceLoader(targetManager, settings, multitargetNetworkManager, null);
49
52
  context.set(SDK.PageResourceLoader.PageResourceLoader, pageResourceLoader);
50
53
 
54
+ const cpuThrottlingManager = new SDK.CPUThrottlingManager.CPUThrottlingManager(settings, targetManager);
55
+ context.set(SDK.CPUThrottlingManager.CPUThrottlingManager, cpuThrottlingManager);
56
+
51
57
  const workspace = new Workspace.Workspace.WorkspaceImpl();
52
58
  context.set(Workspace.Workspace.WorkspaceImpl, workspace);
53
59
 
@@ -61,6 +67,18 @@ export class Universe {
61
67
  const debuggerWorkspaceBinding = new Bindings.DebuggerWorkspaceBinding.DebuggerWorkspaceBinding(
62
68
  resourceMapping, targetManager, ignoreListManager, workspace);
63
69
  context.set(Bindings.DebuggerWorkspaceBinding.DebuggerWorkspaceBinding, debuggerWorkspaceBinding);
70
+
71
+ const networkLog = new Logs.NetworkLog.NetworkLog(targetManager, settings);
72
+ context.set(Logs.NetworkLog.NetworkLog, networkLog);
73
+
74
+ const logManager = new Logs.LogManager.LogManager(targetManager, networkLog);
75
+ context.set(Logs.LogManager.LogManager, logManager);
76
+
77
+ this.autofillManager = new AutofillManager.AutofillManager.AutofillManager(targetManager, frameManager);
78
+ }
79
+
80
+ get cpuThrottlingManager(): SDK.CPUThrottlingManager.CPUThrottlingManager {
81
+ return this.context.get(SDK.CPUThrottlingManager.CPUThrottlingManager);
64
82
  }
65
83
 
66
84
  get pageResourceLoader(): SDK.PageResourceLoader.PageResourceLoader {
@@ -45,7 +45,8 @@ inspectorBackend.registerType("Accessibility.AXNode", [{"name": "nodeId", "type"
45
45
 
46
46
  // Ads.
47
47
  inspectorBackend.registerCommand("Ads.getAdMetrics", [], ["metrics"], "Retrieves ad metrics for the current page.");
48
- inspectorBackend.registerType("Ads.AdMetrics", [{"name": "viewportAdDensityByArea", "type": "number", "optional": false, "description": "The viewport ad density by area, represented as a percentage (an integer between 0 and 100).", "typeRef": null}, {"name": "averageViewportAdDensityByArea", "type": "number", "optional": false, "description": "The time-weighted average of the viewport ad density by area, measured across the duration of the page.", "typeRef": null}, {"name": "viewportAdCount", "type": "number", "optional": false, "description": "The number of ads currently visible within the viewport.", "typeRef": null}, {"name": "averageViewportAdCount", "type": "number", "optional": false, "description": "The time-weighted average of the viewport ad count, measured across the duration of the page.", "typeRef": null}, {"name": "totalAdCpuTime", "type": "number", "optional": false, "description": "The total ad CPU usage, in milliseconds.", "typeRef": null}, {"name": "totalAdNetworkBytes", "type": "number", "optional": false, "description": "The total ad network bytes.", "typeRef": null}]);
48
+ inspectorBackend.registerType("Ads.AdFrameData", [{"name": "frameId", "type": "string", "optional": false, "description": "The DevTools frame token.", "typeRef": "Page.FrameId"}, {"name": "initialOrigin", "type": "string", "optional": true, "description": "The initial origin of the frame. To minimize the payload size, this is only sent once per frame.", "typeRef": null}, {"name": "networkBytes", "type": "number", "optional": false, "description": "The network bytes of the frame.", "typeRef": null}, {"name": "cpuTime", "type": "number", "optional": false, "description": "The CPU time of the frame, in milliseconds.", "typeRef": null}]);
49
+ inspectorBackend.registerType("Ads.AdMetrics", [{"name": "viewportAdDensityByArea", "type": "number", "optional": false, "description": "The viewport ad density by area, represented as a percentage (an integer between 0 and 100).", "typeRef": null}, {"name": "averageViewportAdDensityByArea", "type": "number", "optional": false, "description": "The time-weighted average of the viewport ad density by area, measured across the duration of the page.", "typeRef": null}, {"name": "viewportAdCount", "type": "number", "optional": false, "description": "The number of ads currently visible within the viewport.", "typeRef": null}, {"name": "averageViewportAdCount", "type": "number", "optional": false, "description": "The time-weighted average of the viewport ad count, measured across the duration of the page.", "typeRef": null}, {"name": "totalAdCpuTime", "type": "number", "optional": false, "description": "The total ad CPU usage, in milliseconds.", "typeRef": null}, {"name": "totalAdNetworkBytes", "type": "number", "optional": false, "description": "The total ad network bytes.", "typeRef": null}, {"name": "updateAdFrames", "type": "array", "optional": false, "description": "The list of ad frames that have been updated since the last event.", "typeRef": "Ads.AdFrameData"}, {"name": "removeAdFrames", "type": "array", "optional": false, "description": "The list of ad frame IDs that have been removed since the last event.", "typeRef": "Page.FrameId"}]);
49
50
 
50
51
  // Animation.
51
52
  inspectorBackend.registerEnum("Animation.AnimationType", {CSSTransition: "CSSTransition", CSSAnimation: "CSSAnimation", WebAnimation: "WebAnimation"});
@@ -97,7 +98,7 @@ inspectorBackend.registerEnum("Audits.ElementAccessibilityIssueReason", {Disallo
97
98
  inspectorBackend.registerEnum("Audits.StyleSheetLoadingIssueReason", {LateImportRule: "LateImportRule", RequestFailed: "RequestFailed"});
98
99
  inspectorBackend.registerEnum("Audits.PropertyRuleIssueReason", {InvalidSyntax: "InvalidSyntax", InvalidInitialValue: "InvalidInitialValue", InvalidInherits: "InvalidInherits", InvalidName: "InvalidName"});
99
100
  inspectorBackend.registerEnum("Audits.UserReidentificationIssueType", {BlockedFrameNavigation: "BlockedFrameNavigation", BlockedSubresource: "BlockedSubresource", NoisedCanvasReadback: "NoisedCanvasReadback"});
100
- inspectorBackend.registerEnum("Audits.PermissionElementIssueType", {InvalidType: "InvalidType", FencedFrameDisallowed: "FencedFrameDisallowed", CspFrameAncestorsMissing: "CspFrameAncestorsMissing", PermissionsPolicyBlocked: "PermissionsPolicyBlocked", PaddingRightUnsupported: "PaddingRightUnsupported", PaddingBottomUnsupported: "PaddingBottomUnsupported", InsetBoxShadowUnsupported: "InsetBoxShadowUnsupported", RequestInProgress: "RequestInProgress", UntrustedEvent: "UntrustedEvent", RegistrationFailed: "RegistrationFailed", TypeNotSupported: "TypeNotSupported", InvalidTypeActivation: "InvalidTypeActivation", SecurityChecksFailed: "SecurityChecksFailed", ActivationDisabled: "ActivationDisabled", GeolocationDeprecated: "GeolocationDeprecated", InvalidDisplayStyle: "InvalidDisplayStyle", NonOpaqueColor: "NonOpaqueColor", LowContrast: "LowContrast", FontSizeTooSmall: "FontSizeTooSmall", FontSizeTooLarge: "FontSizeTooLarge", InvalidSizeValue: "InvalidSizeValue"});
101
+ inspectorBackend.registerEnum("Audits.PermissionElementIssueType", {InvalidType: "InvalidType", FencedFrameDisallowed: "FencedFrameDisallowed", CspFrameAncestorsMissing: "CspFrameAncestorsMissing", PermissionsPolicyBlocked: "PermissionsPolicyBlocked", PaddingRightUnsupported: "PaddingRightUnsupported", PaddingBottomUnsupported: "PaddingBottomUnsupported", InsetBoxShadowUnsupported: "InsetBoxShadowUnsupported", RequestInProgress: "RequestInProgress", UntrustedEvent: "UntrustedEvent", RegistrationFailed: "RegistrationFailed", TypeNotSupported: "TypeNotSupported", InvalidTypeActivation: "InvalidTypeActivation", SecurityChecksFailed: "SecurityChecksFailed", ActivationDisabled: "ActivationDisabled", GeolocationDeprecated: "GeolocationDeprecated", InvalidDisplayStyle: "InvalidDisplayStyle", NonOpaqueColor: "NonOpaqueColor", LowContrast: "LowContrast", FontSizeTooSmall: "FontSizeTooSmall", FontSizeTooLarge: "FontSizeTooLarge", InvalidSizeValue: "InvalidSizeValue", NonSecureContext: "NonSecureContext", MissingTransientUserActivation: "MissingTransientUserActivation"});
101
102
  inspectorBackend.registerEnum("Audits.InspectorIssueCode", {CookieIssue: "CookieIssue", MixedContentIssue: "MixedContentIssue", BlockedByResponseIssue: "BlockedByResponseIssue", HeavyAdIssue: "HeavyAdIssue", ContentSecurityPolicyIssue: "ContentSecurityPolicyIssue", SharedArrayBufferIssue: "SharedArrayBufferIssue", CorsIssue: "CorsIssue", AttributionReportingIssue: "AttributionReportingIssue", QuirksModeIssue: "QuirksModeIssue", PartitioningBlobURLIssue: "PartitioningBlobURLIssue", NavigatorUserAgentIssue: "NavigatorUserAgentIssue", GenericIssue: "GenericIssue", DeprecationIssue: "DeprecationIssue", ClientHintIssue: "ClientHintIssue", FederatedAuthRequestIssue: "FederatedAuthRequestIssue", BounceTrackingIssue: "BounceTrackingIssue", CookieDeprecationMetadataIssue: "CookieDeprecationMetadataIssue", StylesheetLoadingIssue: "StylesheetLoadingIssue", FederatedAuthUserInfoRequestIssue: "FederatedAuthUserInfoRequestIssue", PropertyRuleIssue: "PropertyRuleIssue", SharedDictionaryIssue: "SharedDictionaryIssue", ElementAccessibilityIssue: "ElementAccessibilityIssue", SRIMessageSignatureIssue: "SRIMessageSignatureIssue", UnencodedDigestIssue: "UnencodedDigestIssue", ConnectionAllowlistIssue: "ConnectionAllowlistIssue", UserReidentificationIssue: "UserReidentificationIssue", PermissionElementIssue: "PermissionElementIssue", PerformanceIssue: "PerformanceIssue", SelectivePermissionsInterventionIssue: "SelectivePermissionsInterventionIssue", EmailVerificationRequestIssue: "EmailVerificationRequestIssue"});
102
103
  inspectorBackend.registerEvent("Audits.issueAdded", ["issue"]);
103
104
  inspectorBackend.registerEnum("Audits.GetEncodedResponseRequestEncoding", {Webp: "webp", Jpeg: "jpeg", Png: "png"});
@@ -357,7 +358,7 @@ inspectorBackend.registerCommand("CrashReportContext.getEntries", [], ["entries"
357
358
  inspectorBackend.registerType("CrashReportContext.CrashReportContextEntry", [{"name": "key", "type": "string", "optional": false, "description": "", "typeRef": null}, {"name": "value", "type": "string", "optional": false, "description": "", "typeRef": null}, {"name": "frameId", "type": "string", "optional": false, "description": "The ID of the frame where the key-value pair was set.", "typeRef": "Page.FrameId"}]);
358
359
 
359
360
  // DOM.
360
- inspectorBackend.registerEnum("DOM.PseudoType", {FirstLine: "first-line", FirstLetter: "first-letter", Checkmark: "checkmark", Before: "before", After: "after", ExpandIcon: "expand-icon", PickerIcon: "picker-icon", InterestButton: "interest-button", Marker: "marker", Backdrop: "backdrop", Column: "column", Selection: "selection", SearchText: "search-text", TargetText: "target-text", SpellingError: "spelling-error", GrammarError: "grammar-error", Highlight: "highlight", FirstLineInherited: "first-line-inherited", ScrollMarker: "scroll-marker", ScrollMarkerGroup: "scroll-marker-group", ScrollButton: "scroll-button", Scrollbar: "scrollbar", ScrollbarThumb: "scrollbar-thumb", ScrollbarButton: "scrollbar-button", ScrollbarTrack: "scrollbar-track", ScrollbarTrackPiece: "scrollbar-track-piece", ScrollbarCorner: "scrollbar-corner", Resizer: "resizer", InputListButton: "input-list-button", ViewTransition: "view-transition", ViewTransitionGroup: "view-transition-group", ViewTransitionImagePair: "view-transition-image-pair", ViewTransitionGroupChildren: "view-transition-group-children", ViewTransitionOld: "view-transition-old", ViewTransitionNew: "view-transition-new", Placeholder: "placeholder", FileSelectorButton: "file-selector-button", DetailsContent: "details-content", Picker: "picker", SelectListbox: "select-listbox", PermissionIcon: "permission-icon", OverscrollAreaParent: "overscroll-area-parent", Skeleton: "skeleton"});
361
+ inspectorBackend.registerEnum("DOM.PseudoType", {FirstLine: "first-line", FirstLetter: "first-letter", Checkmark: "checkmark", Before: "before", After: "after", ExpandIcon: "expand-icon", PickerIcon: "picker-icon", InterestButton: "interest-button", Marker: "marker", Backdrop: "backdrop", Column: "column", Selection: "selection", SearchText: "search-text", TargetText: "target-text", SpellingError: "spelling-error", GrammarError: "grammar-error", Highlight: "highlight", FirstLineInherited: "first-line-inherited", ScrollMarker: "scroll-marker", ScrollMarkerGroup: "scroll-marker-group", ScrollButton: "scroll-button", Scrollbar: "scrollbar", ScrollbarThumb: "scrollbar-thumb", ScrollbarButton: "scrollbar-button", ScrollbarTrack: "scrollbar-track", ScrollbarTrackPiece: "scrollbar-track-piece", ScrollbarCorner: "scrollbar-corner", Resizer: "resizer", InputListButton: "input-list-button", ViewTransition: "view-transition", ViewTransitionGroup: "view-transition-group", ViewTransitionImagePair: "view-transition-image-pair", ViewTransitionGroupChildren: "view-transition-group-children", ViewTransitionOld: "view-transition-old", ViewTransitionNew: "view-transition-new", Placeholder: "placeholder", FileSelectorButton: "file-selector-button", DetailsContent: "details-content", Picker: "picker", SelectListbox: "select-listbox", PermissionIcon: "permission-icon", OverscrollAreaParent: "overscroll-area-parent", OverscrollBackdrop: "overscroll-backdrop", Skeleton: "skeleton"});
361
362
  inspectorBackend.registerEnum("DOM.ShadowRootType", {UserAgent: "user-agent", Open: "open", Closed: "closed"});
362
363
  inspectorBackend.registerEnum("DOM.CompatibilityMode", {QuirksMode: "QuirksMode", LimitedQuirksMode: "LimitedQuirksMode", NoQuirksMode: "NoQuirksMode"});
363
364
  inspectorBackend.registerEnum("DOM.PhysicalAxes", {Horizontal: "Horizontal", Vertical: "Vertical", Both: "Both"});
@@ -1098,7 +1099,7 @@ inspectorBackend.registerCommand("Page.captureSnapshot", [{"name": "format", "ty
1098
1099
  inspectorBackend.registerCommand("Page.clearDeviceMetricsOverride", [], [], "Clears the overridden device metrics.");
1099
1100
  inspectorBackend.registerCommand("Page.clearDeviceOrientationOverride", [], [], "Clears the overridden Device Orientation.");
1100
1101
  inspectorBackend.registerCommand("Page.clearGeolocationOverride", [], [], "Clears the overridden Geolocation Position and Error.");
1101
- inspectorBackend.registerCommand("Page.createIsolatedWorld", [{"name": "frameId", "type": "string", "optional": false, "description": "Id of the frame in which the isolated world should be created.", "typeRef": "Page.FrameId"}, {"name": "worldName", "type": "string", "optional": true, "description": "An optional name which is reported in the Execution Context.", "typeRef": null}, {"name": "grantUniveralAccess", "type": "boolean", "optional": true, "description": "Whether or not universal access should be granted to the isolated world. This is a powerful option, use with caution.", "typeRef": null}], ["executionContextId"], "Creates an isolated world for the given frame.");
1102
+ inspectorBackend.registerCommand("Page.createIsolatedWorld", [{"name": "frameId", "type": "string", "optional": false, "description": "Id of the frame in which the isolated world should be created.", "typeRef": "Page.FrameId"}, {"name": "worldName", "type": "string", "optional": true, "description": "An optional name which is reported in the Execution Context.", "typeRef": null}, {"name": "grantUniveralAccess", "type": "boolean", "optional": true, "description": "Whether or not universal access should be granted to the isolated world. This is a powerful option, use with caution.", "typeRef": null}, {"name": "contentSecurityPolicy", "type": "string", "optional": true, "description": "An optional content security policy to set for the isolated world. If omitted, any existing CSP for the world will be cleared. Note that clearing or updating the CSP does not immediately affect the active context in the same document because LocalDOMWindow caches the ContentSecurityPolicy object. The change takes effect on subsequent navigations when a new window context is created.", "typeRef": null}], ["executionContextId"], "Creates an isolated world for the given frame.");
1102
1103
  inspectorBackend.registerCommand("Page.deleteCookie", [{"name": "cookieName", "type": "string", "optional": false, "description": "Name of the cookie to remove.", "typeRef": null}, {"name": "url", "type": "string", "optional": false, "description": "URL to match cooke domain and path.", "typeRef": null}], [], "Deletes browser cookie with given name, domain and path.");
1103
1104
  inspectorBackend.registerCommand("Page.disable", [], [], "Disables page domain notifications.");
1104
1105
  inspectorBackend.registerCommand("Page.enable", [{"name": "enableFileChooserOpenedEvent", "type": "boolean", "optional": true, "description": "If true, the `Page.fileChooserOpened` event will be emitted regardless of the state set by `Page.setInterceptFileChooserDialog` command (default: false).", "typeRef": null}], [], "Enables page domain notifications.");
@@ -1444,7 +1445,7 @@ inspectorBackend.registerCommand("Tracing.getTrackEventDescriptor", [], ["descri
1444
1445
  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.");
1445
1446
  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.");
1446
1447
  inspectorBackend.registerEnum("Tracing.StartRequestTransferMode", {ReportEvents: "ReportEvents", ReturnAsStream: "ReturnAsStream"});
1447
- inspectorBackend.registerCommand("Tracing.start", [{"name": "categories", "type": "string", "optional": true, "description": "Category/tag filter", "typeRef": null}, {"name": "options", "type": "string", "optional": true, "description": "Tracing options", "typeRef": null}, {"name": "bufferUsageReportingInterval", "type": "number", "optional": true, "description": "If set, the agent will issue bufferUsage events at this interval, specified in milliseconds", "typeRef": null}, {"name": "transferMode", "type": "string", "optional": true, "description": "Whether to report trace events as series of dataCollected events or to save trace to a stream (defaults to `ReportEvents`).", "typeRef": "Tracing.StartRequestTransferMode"}, {"name": "streamFormat", "type": "string", "optional": true, "description": "Trace data format to use. This only applies when using `ReturnAsStream` transfer mode (defaults to `json`).", "typeRef": "Tracing.StreamFormat"}, {"name": "streamCompression", "type": "string", "optional": true, "description": "Compression format to use. This only applies when using `ReturnAsStream` transfer mode (defaults to `none`)", "typeRef": "Tracing.StreamCompression"}, {"name": "traceConfig", "type": "object", "optional": true, "description": "", "typeRef": "Tracing.TraceConfig"}, {"name": "perfettoConfig", "type": "string", "optional": true, "description": "Base64-encoded serialized perfetto.protos.TraceConfig protobuf message When specified, the parameters `categories`, `options`, `traceConfig` are ignored.", "typeRef": null}, {"name": "tracingBackend", "type": "string", "optional": true, "description": "Backend type (defaults to `auto`)", "typeRef": "Tracing.TracingBackend"}], [], "Start trace events collection.");
1448
+ inspectorBackend.registerCommand("Tracing.start", [{"name": "categories", "type": "string", "optional": true, "description": "Category/tag filter", "typeRef": null}, {"name": "options", "type": "string", "optional": true, "description": "Tracing options", "typeRef": null}, {"name": "bufferUsageReportingInterval", "type": "number", "optional": true, "description": "If set, the agent will issue bufferUsage events at this interval, specified in milliseconds", "typeRef": null}, {"name": "transferMode", "type": "string", "optional": true, "description": "Whether to report trace events as series of dataCollected events or to save trace to a stream (defaults to `ReportEvents`).", "typeRef": "Tracing.StartRequestTransferMode"}, {"name": "streamFormat", "type": "string", "optional": true, "description": "Trace data format to use. This only applies when using `ReturnAsStream` transfer mode (defaults to `json`).", "typeRef": "Tracing.StreamFormat"}, {"name": "streamCompression", "type": "string", "optional": true, "description": "Compression format to use. This only applies when using `ReturnAsStream` transfer mode (defaults to `none`)", "typeRef": "Tracing.StreamCompression"}, {"name": "traceConfig", "type": "object", "optional": true, "description": "", "typeRef": "Tracing.TraceConfig"}, {"name": "perfettoConfig", "type": "string", "optional": true, "description": "Base64-encoded serialized perfetto.protos.TraceConfig protobuf message When specified, the parameters `categories`, `options`, `traceConfig` are ignored.", "typeRef": null}, {"name": "tracingBackend", "type": "string", "optional": true, "description": "Backend type (defaults to `auto`)", "typeRef": "Tracing.TracingBackend"}, {"name": "screenshotMaxSize", "type": "number", "optional": true, "description": "Maximum width and height (in pixels) of each captured screenshot. Only used when the `disabled-by-default-devtools.screenshot` category is enabled. Defaults to 500. The combined memory footprint of screenshots (`screenshotMaxSize` * `screenshotMaxSize` * 4 * `screenshotMaxCount`) is clamped to the existing per-session budget.", "typeRef": null}, {"name": "screenshotMaxCount", "type": "number", "optional": true, "description": "Maximum number of screenshots captured during a single tracing session. Only used when the `disabled-by-default-devtools.screenshot` category is enabled. Defaults to 450. Clamped together with `screenshotMaxSize` to stay within the per-session screenshot memory budget.", "typeRef": null}], [], "Start trace events collection.");
1448
1449
  inspectorBackend.registerType("Tracing.TraceConfig", [{"name": "recordMode", "type": "string", "optional": true, "description": "Controls how the trace buffer stores data. The default is `recordUntilFull`.", "typeRef": null}, {"name": "traceBufferSizeInKb", "type": "number", "optional": true, "description": "Size of the trace buffer in kilobytes. If not specified or zero is passed, a default value of 200 MB would be used.", "typeRef": null}, {"name": "enableSampling", "type": "boolean", "optional": true, "description": "Turns on JavaScript stack sampling.", "typeRef": null}, {"name": "enableSystrace", "type": "boolean", "optional": true, "description": "Turns on system tracing.", "typeRef": null}, {"name": "enableArgumentFilter", "type": "boolean", "optional": true, "description": "Turns on argument filter.", "typeRef": null}, {"name": "includedCategories", "type": "array", "optional": true, "description": "Included category filters.", "typeRef": "string"}, {"name": "excludedCategories", "type": "array", "optional": true, "description": "Excluded category filters.", "typeRef": "string"}, {"name": "syntheticDelays", "type": "array", "optional": true, "description": "Configuration to synthesize the delays in tracing.", "typeRef": "string"}, {"name": "memoryDumpConfig", "type": "object", "optional": true, "description": "Configuration for memory dump triggers. Used only when \\\"memory-infra\\\" category is enabled.", "typeRef": "Tracing.MemoryDumpConfig"}]);
1449
1450
 
1450
1451
  // WebAudio.
@@ -20,7 +20,7 @@ export const generatedProperties = [
20
20
  ],
21
21
  "name": "-alternative-webkit-line-clamp-longhand",
22
22
  "runtime_flag": "CSSLineClamp",
23
- "runtime_flag_status": "stable"
23
+ "runtime_flag_status": "experimental"
24
24
  },
25
25
  {
26
26
  "longhands": [
@@ -253,6 +253,12 @@ export const generatedProperties = [
253
253
  },
254
254
  {
255
255
  "inherited": true,
256
+ "keywords": [
257
+ "sideways",
258
+ "upright",
259
+ "sideways-right",
260
+ "vertical-right"
261
+ ],
256
262
  "name": "-webkit-text-orientation"
257
263
  },
258
264
  {
@@ -2677,6 +2683,35 @@ export const generatedProperties = [
2677
2683
  "name": "direction"
2678
2684
  },
2679
2685
  {
2686
+ "devtools_keywords": [
2687
+ "inline",
2688
+ "block",
2689
+ "list-item",
2690
+ "inline-block",
2691
+ "table",
2692
+ "inline-table",
2693
+ "table-row-group",
2694
+ "table-header-group",
2695
+ "table-footer-group",
2696
+ "table-row",
2697
+ "table-column-group",
2698
+ "table-column",
2699
+ "table-cell",
2700
+ "table-caption",
2701
+ "-webkit-box",
2702
+ "-webkit-inline-box",
2703
+ "flex",
2704
+ "inline-flex",
2705
+ "grid",
2706
+ "inline-grid",
2707
+ "contents",
2708
+ "flow-root",
2709
+ "none",
2710
+ "flow",
2711
+ "math",
2712
+ "ruby",
2713
+ "ruby-text"
2714
+ ],
2680
2715
  "keywords": [
2681
2716
  "inline",
2682
2717
  "block",
@@ -3430,8 +3465,6 @@ export const generatedProperties = [
3430
3465
  "inherited": true,
3431
3466
  "keywords": [
3432
3467
  "auto",
3433
- "optimizespeed",
3434
- "optimizequality",
3435
3468
  "-webkit-optimize-contrast",
3436
3469
  "pixelated",
3437
3470
  "crisp-edges"
@@ -3591,6 +3624,13 @@ export const generatedProperties = [
3591
3624
  "name": "lighting-color"
3592
3625
  },
3593
3626
  {
3627
+ "devtools_keywords": [
3628
+ "auto",
3629
+ "loose",
3630
+ "normal",
3631
+ "strict",
3632
+ "anywhere"
3633
+ ],
3594
3634
  "inherited": true,
3595
3635
  "keywords": [
3596
3636
  "auto",
@@ -3603,6 +3643,12 @@ export const generatedProperties = [
3603
3643
  "name": "line-break"
3604
3644
  },
3605
3645
  {
3646
+ "devtools_keywords": [
3647
+ "none",
3648
+ "auto",
3649
+ "ellipsis",
3650
+ "no-ellipsis"
3651
+ ],
3606
3652
  "keywords": [
3607
3653
  "none",
3608
3654
  "auto",
@@ -3612,7 +3658,7 @@ export const generatedProperties = [
3612
3658
  ],
3613
3659
  "name": "line-clamp",
3614
3660
  "runtime_flag": "CSSLineClamp",
3615
- "runtime_flag_status": "stable"
3661
+ "runtime_flag_status": "experimental"
3616
3662
  },
3617
3663
  {
3618
3664
  "is_descriptor": true,
@@ -4085,6 +4131,18 @@ export const generatedProperties = [
4085
4131
  "name": "outline-offset"
4086
4132
  },
4087
4133
  {
4134
+ "devtools_keywords": [
4135
+ "none",
4136
+ "auto",
4137
+ "inset",
4138
+ "groove",
4139
+ "outset",
4140
+ "ridge",
4141
+ "dotted",
4142
+ "dashed",
4143
+ "solid",
4144
+ "double"
4145
+ ],
4088
4146
  "keywords": [
4089
4147
  "none",
4090
4148
  "hidden",
@@ -5314,6 +5372,17 @@ export const generatedProperties = [
5314
5372
  "name": "table-layout"
5315
5373
  },
5316
5374
  {
5375
+ "devtools_keywords": [
5376
+ "left",
5377
+ "right",
5378
+ "center",
5379
+ "justify",
5380
+ "-webkit-left",
5381
+ "-webkit-right",
5382
+ "-webkit-center",
5383
+ "start",
5384
+ "end"
5385
+ ],
5317
5386
  "inherited": true,
5318
5387
  "keywords": [
5319
5388
  "left",
@@ -5330,6 +5399,15 @@ export const generatedProperties = [
5330
5399
  "name": "text-align"
5331
5400
  },
5332
5401
  {
5402
+ "devtools_keywords": [
5403
+ "auto",
5404
+ "start",
5405
+ "end",
5406
+ "left",
5407
+ "right",
5408
+ "center",
5409
+ "justify"
5410
+ ],
5333
5411
  "inherited": true,
5334
5412
  "keywords": [
5335
5413
  "auto",
@@ -5513,7 +5591,8 @@ export const generatedProperties = [
5513
5591
  "keywords": [
5514
5592
  "sideways",
5515
5593
  "mixed",
5516
- "upright"
5594
+ "upright",
5595
+ "sideways-right"
5517
5596
  ],
5518
5597
  "name": "text-orientation"
5519
5598
  },
@@ -5570,6 +5649,13 @@ export const generatedProperties = [
5570
5649
  "name": "text-spacing-trim"
5571
5650
  },
5572
5651
  {
5652
+ "devtools_keywords": [
5653
+ "none",
5654
+ "capitalize",
5655
+ "uppercase",
5656
+ "lowercase",
5657
+ "math-auto"
5658
+ ],
5573
5659
  "inherited": true,
5574
5660
  "keywords": [
5575
5661
  "none",
@@ -5627,6 +5713,9 @@ export const generatedProperties = [
5627
5713
  "name": "text-wrap-style"
5628
5714
  },
5629
5715
  {
5716
+ "devtools_keywords": [
5717
+ "none"
5718
+ ],
5630
5719
  "keywords": [
5631
5720
  "none",
5632
5721
  "all"
@@ -5838,6 +5927,12 @@ export const generatedProperties = [
5838
5927
  "name": "unicode-range"
5839
5928
  },
5840
5929
  {
5930
+ "devtools_keywords": [
5931
+ "auto",
5932
+ "none",
5933
+ "text",
5934
+ "all"
5935
+ ],
5841
5936
  "inherited": true,
5842
5937
  "keywords": [
5843
5938
  "auto",
@@ -5907,6 +6002,9 @@ export const generatedProperties = [
5907
6002
  "name": "view-transition-group"
5908
6003
  },
5909
6004
  {
6005
+ "devtools_keywords": [
6006
+ "none"
6007
+ ],
5910
6008
  "keywords": [
5911
6009
  "none",
5912
6010
  "auto"
@@ -6145,6 +6243,14 @@ export const generatedPropertyValues = {
6145
6243
  "grammar-error"
6146
6244
  ]
6147
6245
  },
6246
+ "-webkit-text-orientation": {
6247
+ "values": [
6248
+ "sideways",
6249
+ "upright",
6250
+ "sideways-right",
6251
+ "vertical-right"
6252
+ ]
6253
+ },
6148
6254
  "-webkit-text-security": {
6149
6255
  "values": [
6150
6256
  "none",
@@ -7242,9 +7348,7 @@ export const generatedPropertyValues = {
7242
7348
  "flow",
7243
7349
  "math",
7244
7350
  "ruby",
7245
- "ruby-text",
7246
- "grid-lanes",
7247
- "inline-grid-lanes"
7351
+ "ruby-text"
7248
7352
  ]
7249
7353
  },
7250
7354
  "dominant-baseline": {
@@ -7693,8 +7797,6 @@ export const generatedPropertyValues = {
7693
7797
  "image-rendering": {
7694
7798
  "values": [
7695
7799
  "auto",
7696
- "optimizespeed",
7697
- "optimizequality",
7698
7800
  "-webkit-optimize-contrast",
7699
7801
  "pixelated",
7700
7802
  "crisp-edges"
@@ -7789,8 +7891,7 @@ export const generatedPropertyValues = {
7789
7891
  "loose",
7790
7892
  "normal",
7791
7893
  "strict",
7792
- "anywhere",
7793
- "after-white-space"
7894
+ "anywhere"
7794
7895
  ]
7795
7896
  },
7796
7897
  "line-clamp": {
@@ -7798,8 +7899,7 @@ export const generatedPropertyValues = {
7798
7899
  "none",
7799
7900
  "auto",
7800
7901
  "ellipsis",
7801
- "no-ellipsis",
7802
- "-webkit-legacy"
7902
+ "no-ellipsis"
7803
7903
  ]
7804
7904
  },
7805
7905
  "line-height": {
@@ -8094,7 +8194,7 @@ export const generatedPropertyValues = {
8094
8194
  "outline-style": {
8095
8195
  "values": [
8096
8196
  "none",
8097
- "hidden",
8197
+ "auto",
8098
8198
  "inset",
8099
8199
  "groove",
8100
8200
  "outset",
@@ -8681,8 +8781,7 @@ export const generatedPropertyValues = {
8681
8781
  "-webkit-right",
8682
8782
  "-webkit-center",
8683
8783
  "start",
8684
- "end",
8685
- "match-parent"
8784
+ "end"
8686
8785
  ]
8687
8786
  },
8688
8787
  "text-align-last": {
@@ -8693,8 +8792,7 @@ export const generatedPropertyValues = {
8693
8792
  "left",
8694
8793
  "right",
8695
8794
  "center",
8696
- "justify",
8697
- "match-parent"
8795
+ "justify"
8698
8796
  ]
8699
8797
  },
8700
8798
  "text-anchor": {
@@ -8802,7 +8900,8 @@ export const generatedPropertyValues = {
8802
8900
  "values": [
8803
8901
  "sideways",
8804
8902
  "mixed",
8805
- "upright"
8903
+ "upright",
8904
+ "sideways-right"
8806
8905
  ]
8807
8906
  },
8808
8907
  "text-overflow": {
@@ -8844,8 +8943,6 @@ export const generatedPropertyValues = {
8844
8943
  "capitalize",
8845
8944
  "uppercase",
8846
8945
  "lowercase",
8847
- "full-width",
8848
- "full-size-kana",
8849
8946
  "math-auto"
8850
8947
  ]
8851
8948
  },
@@ -8879,8 +8976,7 @@ export const generatedPropertyValues = {
8879
8976
  },
8880
8977
  "timeline-scope": {
8881
8978
  "values": [
8882
- "none",
8883
- "all"
8979
+ "none"
8884
8980
  ]
8885
8981
  },
8886
8982
  "timeline-trigger-active-range-end": {
@@ -8997,8 +9093,7 @@ export const generatedPropertyValues = {
8997
9093
  "auto",
8998
9094
  "none",
8999
9095
  "text",
9000
- "all",
9001
- "contain"
9096
+ "all"
9002
9097
  ]
9003
9098
  },
9004
9099
  "vector-effect": {
@@ -9046,8 +9141,7 @@ export const generatedPropertyValues = {
9046
9141
  },
9047
9142
  "view-transition-name": {
9048
9143
  "values": [
9049
- "none",
9050
- "auto"
9144
+ "none"
9051
9145
  ]
9052
9146
  },
9053
9147
  "view-transition-scope": {
@@ -440,6 +440,29 @@ export namespace Accessibility {
440
440
  */
441
441
  export namespace Ads {
442
442
 
443
+ /**
444
+ * Ad frame data.
445
+ */
446
+ export interface AdFrameData {
447
+ /**
448
+ * The DevTools frame token.
449
+ */
450
+ frameId: Page.FrameId;
451
+ /**
452
+ * The initial origin of the frame. To minimize the payload size, this is
453
+ * only sent once per frame.
454
+ */
455
+ initialOrigin?: string;
456
+ /**
457
+ * The network bytes of the frame.
458
+ */
459
+ networkBytes: number;
460
+ /**
461
+ * The CPU time of the frame, in milliseconds.
462
+ */
463
+ cpuTime: number;
464
+ }
465
+
443
466
  /**
444
467
  * Ad metrics for a page.
445
468
  */
@@ -471,6 +494,14 @@ export namespace Ads {
471
494
  * The total ad network bytes.
472
495
  */
473
496
  totalAdNetworkBytes: number;
497
+ /**
498
+ * The list of ad frames that have been updated since the last event.
499
+ */
500
+ updateAdFrames: AdFrameData[];
501
+ /**
502
+ * The list of ad frame IDs that have been removed since the last event.
503
+ */
504
+ removeAdFrames: Page.FrameId[];
474
505
  }
475
506
 
476
507
  export interface GetAdMetricsResponse extends ProtocolResponseWithError {
@@ -1617,6 +1648,8 @@ export namespace Audits {
1617
1648
  FontSizeTooSmall = 'FontSizeTooSmall',
1618
1649
  FontSizeTooLarge = 'FontSizeTooLarge',
1619
1650
  InvalidSizeValue = 'InvalidSizeValue',
1651
+ NonSecureContext = 'NonSecureContext',
1652
+ MissingTransientUserActivation = 'MissingTransientUserActivation',
1620
1653
  }
1621
1654
 
1622
1655
  /**
@@ -4807,6 +4840,7 @@ export namespace DOM {
4807
4840
  SelectListbox = 'select-listbox',
4808
4841
  PermissionIcon = 'permission-icon',
4809
4842
  OverscrollAreaParent = 'overscroll-area-parent',
4843
+ OverscrollBackdrop = 'overscroll-backdrop',
4810
4844
  Skeleton = 'skeleton',
4811
4845
  }
4812
4846
 
@@ -15790,6 +15824,15 @@ export namespace Page {
15790
15824
  * option, use with caution.
15791
15825
  */
15792
15826
  grantUniveralAccess?: boolean;
15827
+ /**
15828
+ * An optional content security policy to set for the isolated world.
15829
+ * If omitted, any existing CSP for the world will be cleared.
15830
+ * Note that clearing or updating the CSP does not immediately affect the active
15831
+ * context in the same document because LocalDOMWindow caches the
15832
+ * ContentSecurityPolicy object. The change takes effect on subsequent
15833
+ * navigations when a new window context is created.
15834
+ */
15835
+ contentSecurityPolicy?: string;
15793
15836
  }
15794
15837
 
15795
15838
  export interface CreateIsolatedWorldResponse extends ProtocolResponseWithError {
@@ -19952,6 +19995,21 @@ export namespace Tracing {
19952
19995
  * Backend type (defaults to `auto`)
19953
19996
  */
19954
19997
  tracingBackend?: TracingBackend;
19998
+ /**
19999
+ * Maximum width and height (in pixels) of each captured screenshot.
20000
+ * Only used when the `disabled-by-default-devtools.screenshot` category is
20001
+ * enabled. Defaults to 500. The combined memory footprint of screenshots
20002
+ * (`screenshotMaxSize` * `screenshotMaxSize` * 4 * `screenshotMaxCount`)
20003
+ * is clamped to the existing per-session budget.
20004
+ */
20005
+ screenshotMaxSize?: integer;
20006
+ /**
20007
+ * Maximum number of screenshots captured during a single tracing session.
20008
+ * Only used when the `disabled-by-default-devtools.screenshot` category is
20009
+ * enabled. Defaults to 450. Clamped together with `screenshotMaxSize` to
20010
+ * stay within the per-session screenshot memory budget.
20011
+ */
20012
+ screenshotMaxCount?: integer;
19955
20013
  }
19956
20014
 
19957
20015
  export interface BufferUsageEvent {
@@ -27,7 +27,7 @@ import {
27
27
  import {ContextSelectionAgent} from './agents/ContextSelectionAgent.js';
28
28
  import {FileAgent} from './agents/FileAgent.js';
29
29
  import {NetworkAgent} from './agents/NetworkAgent.js';
30
- import {PerformanceAgent, PerformanceTraceContext} from './agents/PerformanceAgent.js';
30
+ import {PerformanceAgent} from './agents/PerformanceAgent.js';
31
31
  import {StorageAgent, StorageContext} from './agents/StorageAgent.js';
32
32
  import {StylingAgent} from './agents/StylingAgent.js';
33
33
  import {AiAgent2} from './AiAgent2.js';
@@ -36,6 +36,7 @@ import type {ChangeManager} from './ChangeManager.js';
36
36
  import {AccessibilityContext} from './contexts/AccessibilityContext.js';
37
37
  import {DOMNodeContext} from './contexts/DOMNodeContext.js';
38
38
  import {FileContext} from './contexts/FileContext.js';
39
+ import {PerformanceTraceContext} from './contexts/PerformanceTraceContext.js';
39
40
  import {RequestContext} from './contexts/RequestContext.js';
40
41
 
41
42
  export const NOT_FOUND_IMAGE_DATA = '';
@@ -8,7 +8,7 @@ When the user interacts with AI via the AI Assistance Panel, they are having a _
8
8
 
9
9
  Each agent has a _context_ defined, which represents the selected data that forms the context of the conversation the user is having with that agent. For example:
10
10
 
11
- - The `PerformanceAgent` has an individual performance trace and a specific focus (an insight, or a call tree) as its context.
11
+ - The `PerformanceAgent` uses `PerformanceTraceContext` wrapping an individual performance trace and a specific focus (an insight, or a call tree) as its context.
12
12
  - The `StylingAgent` has a DOM Node as its context.
13
13
 
14
14
  Contexts are defined as subclasses extending the `ConversationContext` abstract class, which defines the following key methods:
@@ -51,9 +51,9 @@ To support skills requiring execution of code or fetching page state (like compu
51
51
 
52
52
  ## Performance specific documentation
53
53
 
54
- ### `TimelineUtils.AIContext.AgentFocus`
54
+ ### `PerformanceTraceContext`
55
55
 
56
- The context for `PerformanceAgent` is `AgentFocus`, which supports different behavior for different entry-points of the "Ask AI" feature for a trace. The two entry-points now are "insight" and "call-tree". The agent modifies its capabilities based on this focus.
56
+ The context for `PerformanceAgent` is `PerformanceTraceContext`, which wraps `AgentFocus`. `AgentFocus` supports different behavior for different entry-points of the "Ask AI" feature for a trace (such as a specific performance insight, flame chart call tree, trace event, or the whole parsed trace). `PerformanceTraceContext` implements `ConversationContext<AgentFocus>` to fetch prompt details, user-facing accordion details, and context-specific AI suggestions.
57
57
 
58
58
  ### Adding "Ask AI" to a new Insight
59
59
 
@@ -116,4 +116,5 @@ To prevent prompt injection attacks and cross-origin data leaks, the AI Assistan
116
116
  * **Origin Locking**: Once a conversation session begins, it locks to the origin of the initial data context (e.g. `https://google.com` or a specific file path).
117
117
  * **Opaque Origins**: Any origin classified as opaque (e.g. `data:`, `about:`, `detached` nodes, unparsed `undefined://` or empty origins) is blocked from starting AI assistance (`isOpaqueOrigin()`).
118
118
  * **File Isolation**: Local files (`file://`) do not share a single wildcard origin. Instead, the path is appended (e.g. `file:///path/to/file.js`) to treat each local file as its own unique origin. Swapping local files in the same conversation is blocked.
119
+ * **Trace Isolation**: Imported performance trace recordings are isolated using the virtual origin `imported-trace://${domain}`. This ensures that loaded local trace files do not share origins with live pages, preventing potential cross-origin prompt injection attacks when switching contexts.
119
120
  * **Equivalence**: `areOriginsEquivalent()` ensures opaque origins are never equivalent to anything (including themselves), forcing a conversation reset on transitions.