chrome-devtools-frontend 1.0.1651641 → 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 (96) 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 +7 -6
  16. package/front_end/generated/SupportedCSSProperties.js +208 -34
  17. package/front_end/generated/protocol.ts +64 -7
  18. package/front_end/models/ai_assistance/AiAgent2.ts +3 -3
  19. package/front_end/models/ai_assistance/AiConversation.ts +2 -1
  20. package/front_end/models/ai_assistance/README.md +5 -4
  21. package/front_end/models/ai_assistance/agents/ContextSelectionAgent.ts +1 -1
  22. package/front_end/models/ai_assistance/agents/PerformanceAgent.snapshot.txt +2 -2
  23. package/front_end/models/ai_assistance/agents/PerformanceAgent.ts +11 -164
  24. package/front_end/models/ai_assistance/ai_assistance.ts +6 -2
  25. package/front_end/models/ai_assistance/contexts/PerformanceTraceContext.ts +295 -0
  26. package/front_end/models/ai_assistance/data_formatters/PerformanceInsightFormatter.snapshot.txt +10 -10
  27. package/front_end/models/ai_assistance/data_formatters/PerformanceInsightFormatter.ts +12 -11
  28. package/front_end/models/ai_assistance/data_formatters/PerformanceTraceFormatter.snapshot.txt +6 -6
  29. package/front_end/models/ai_assistance/skills/accessibility.md +4 -2
  30. package/front_end/models/ai_assistance/tools/GetElementAccessibilityDetails.ts +142 -0
  31. package/front_end/models/ai_assistance/tools/GetStyles.ts +1 -1
  32. package/front_end/models/ai_assistance/tools/README.md +22 -2
  33. package/front_end/models/ai_assistance/tools/{ResolveLighthousePath.ts → ResolveDevtoolsNodePath.ts} +18 -17
  34. package/front_end/models/ai_assistance/tools/Tool.ts +7 -2
  35. package/front_end/models/ai_assistance/tools/ToolRegistry.ts +10 -8
  36. package/front_end/models/autofill_manager/AutofillManager.ts +7 -15
  37. package/front_end/models/bindings/NetworkProject.ts +4 -8
  38. package/front_end/models/breakpoints/BreakpointManager.ts +9 -9
  39. package/front_end/models/emulation/DeviceModeModel.ts +24 -0
  40. package/front_end/models/emulation/EmulatedDevices.ts +108 -0
  41. package/front_end/models/heap_snapshot/HeapSnapshotModel.ts +36 -0
  42. package/front_end/models/heap_snapshot/HeapSnapshotProxy.ts +8 -0
  43. package/front_end/models/issues_manager/IssuesManager.ts +10 -6
  44. package/front_end/models/javascript_metadata/JavaScriptMetadata.ts +4 -5
  45. package/front_end/models/live-metrics/LiveMetrics.ts +6 -6
  46. package/front_end/models/live-metrics/web-vitals-injected/spec/spec.ts +5 -5
  47. package/front_end/models/live-metrics/web-vitals-injected/web-vitals-injected.ts +3 -3
  48. package/front_end/models/logs/LogManager.ts +25 -10
  49. package/front_end/models/logs/NetworkLog.ts +24 -19
  50. package/front_end/models/persistence/AutomaticFileSystemWorkspaceBinding.ts +14 -5
  51. package/front_end/models/persistence/IsolatedFileSystem.ts +9 -11
  52. package/front_end/models/persistence/IsolatedFileSystemManager.ts +5 -3
  53. package/front_end/models/persistence/NetworkPersistenceManager.ts +73 -44
  54. package/front_end/models/persistence/PersistenceImpl.ts +4 -5
  55. package/front_end/models/trace/EntityMapper.ts +1 -1
  56. package/front_end/panels/ai_assistance/AiAssistancePanel.ts +9 -9
  57. package/front_end/panels/ai_assistance/ExportConversation.ts +4 -1
  58. package/front_end/panels/ai_assistance/components/ChatInput.ts +2 -2
  59. package/front_end/panels/application/IndexedDBViews.ts +38 -36
  60. package/front_end/panels/application/components/AdsView.ts +4 -0
  61. package/front_end/panels/autofill/AutofillView.ts +1 -1
  62. package/front_end/panels/autofill/autofill-meta.ts +3 -2
  63. package/front_end/panels/elements/AccessibilityTreeUtils.ts +26 -15
  64. package/front_end/panels/elements/AccessibilityTreeView.ts +12 -9
  65. package/front_end/panels/elements/ElementsTreeOutline.ts +5 -0
  66. package/front_end/panels/layer_viewer/LayerTreeOutline.ts +118 -68
  67. package/front_end/panels/layer_viewer/Layers3DView.ts +1 -1
  68. package/front_end/panels/layer_viewer/layerTreeOutline.css +20 -13
  69. package/front_end/panels/layers/LayersPanel.ts +1 -1
  70. package/front_end/panels/mobile_throttling/ThrottlingSettingsTab.ts +64 -17
  71. package/front_end/panels/mobile_throttling/throttlingSettingsTab.css +5 -0
  72. package/front_end/panels/network/LinkPreloadGenerator.ts +101 -0
  73. package/front_end/panels/network/NetworkLogView.ts +28 -0
  74. package/front_end/panels/network/network.ts +2 -0
  75. package/front_end/panels/profiler/HeapSnapshotView.ts +121 -33
  76. package/front_end/panels/profiler/ModuleUIStrings.ts +4 -0
  77. package/front_end/panels/sources/ScopeChainSidebarPane.ts +0 -12
  78. package/front_end/panels/timeline/TimelineHistoryManager.ts +38 -37
  79. package/front_end/panels/timeline/TimelinePanel.ts +32 -8
  80. package/front_end/panels/timeline/components/CPUThrottlingSelector.ts +7 -6
  81. package/front_end/panels/timeline/components/LiveMetricsView.ts +38 -38
  82. package/front_end/panels/timeline/components/MetricCard.ts +18 -18
  83. package/front_end/panels/timeline/components/liveMetricsView.css +6 -6
  84. package/front_end/panels/timeline/components/metricCard.css +4 -4
  85. package/front_end/panels/whats_new/ReleaseNoteText.ts +3 -3
  86. package/front_end/panels/whats_new/resources/WNDT.md +1 -1
  87. package/front_end/third_party/chromium/README.chromium +1 -1
  88. package/front_end/ui/legacy/InspectorDrawerView.ts +7 -5
  89. package/front_end/ui/legacy/ListWidget.ts +12 -0
  90. package/front_end/ui/legacy/SplitWidget.ts +12 -11
  91. package/front_end/ui/legacy/components/data_grid/DataGridElement.ts +23 -19
  92. package/front_end/ui/legacy/components/object_ui/CustomPreviewComponent.ts +8 -1
  93. package/front_end/ui/legacy/components/object_ui/ObjectPropertiesSection.ts +110 -17
  94. package/front_end/ui/legacy/treeoutline.css +1 -1
  95. package/front_end/ui/visual_logging/KnownContextValues.ts +1 -0
  96. package/package.json +4 -3
@@ -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": [
@@ -216,6 +216,10 @@ export const generatedProperties = [
216
216
  },
217
217
  {
218
218
  "inherited": true,
219
+ "keywords": [
220
+ "before",
221
+ "after"
222
+ ],
219
223
  "name": "-webkit-ruby-position"
220
224
  },
221
225
  {
@@ -249,6 +253,12 @@ export const generatedProperties = [
249
253
  },
250
254
  {
251
255
  "inherited": true,
256
+ "keywords": [
257
+ "sideways",
258
+ "upright",
259
+ "sideways-right",
260
+ "vertical-right"
261
+ ],
252
262
  "name": "-webkit-text-orientation"
253
263
  },
254
264
  {
@@ -2150,8 +2160,7 @@ export const generatedProperties = [
2150
2160
  "layout",
2151
2161
  "style",
2152
2162
  "paint",
2153
- "inline-size",
2154
- "block-size"
2163
+ "inline-size"
2155
2164
  ],
2156
2165
  "name": "contain"
2157
2166
  },
@@ -2674,6 +2683,35 @@ export const generatedProperties = [
2674
2683
  "name": "direction"
2675
2684
  },
2676
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
+ ],
2677
2715
  "keywords": [
2678
2716
  "inline",
2679
2717
  "block",
@@ -3427,8 +3465,6 @@ export const generatedProperties = [
3427
3465
  "inherited": true,
3428
3466
  "keywords": [
3429
3467
  "auto",
3430
- "optimizespeed",
3431
- "optimizequality",
3432
3468
  "-webkit-optimize-contrast",
3433
3469
  "pixelated",
3434
3470
  "crisp-edges"
@@ -3588,6 +3624,13 @@ export const generatedProperties = [
3588
3624
  "name": "lighting-color"
3589
3625
  },
3590
3626
  {
3627
+ "devtools_keywords": [
3628
+ "auto",
3629
+ "loose",
3630
+ "normal",
3631
+ "strict",
3632
+ "anywhere"
3633
+ ],
3591
3634
  "inherited": true,
3592
3635
  "keywords": [
3593
3636
  "auto",
@@ -3600,6 +3643,12 @@ export const generatedProperties = [
3600
3643
  "name": "line-break"
3601
3644
  },
3602
3645
  {
3646
+ "devtools_keywords": [
3647
+ "none",
3648
+ "auto",
3649
+ "ellipsis",
3650
+ "no-ellipsis"
3651
+ ],
3603
3652
  "keywords": [
3604
3653
  "none",
3605
3654
  "auto",
@@ -3609,7 +3658,7 @@ export const generatedProperties = [
3609
3658
  ],
3610
3659
  "name": "line-clamp",
3611
3660
  "runtime_flag": "CSSLineClamp",
3612
- "runtime_flag_status": "stable"
3661
+ "runtime_flag_status": "experimental"
3613
3662
  },
3614
3663
  {
3615
3664
  "is_descriptor": true,
@@ -4082,6 +4131,18 @@ export const generatedProperties = [
4082
4131
  "name": "outline-offset"
4083
4132
  },
4084
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
+ ],
4085
4146
  "keywords": [
4086
4147
  "none",
4087
4148
  "hidden",
@@ -4433,7 +4494,43 @@ export const generatedProperties = [
4433
4494
  "end",
4434
4495
  "self-start",
4435
4496
  "self-end",
4436
- "all"
4497
+ "span-all",
4498
+ "span-left",
4499
+ "span-right",
4500
+ "span-x-start",
4501
+ "span-x-end",
4502
+ "self-x-start",
4503
+ "self-x-end",
4504
+ "span-self-x-start",
4505
+ "span-self-x-end",
4506
+ "span-top",
4507
+ "span-bottom",
4508
+ "span-y-start",
4509
+ "span-y-end",
4510
+ "self-y-start",
4511
+ "self-y-end",
4512
+ "span-self-y-start",
4513
+ "span-self-y-end",
4514
+ "block-start",
4515
+ "block-end",
4516
+ "span-block-start",
4517
+ "span-block-end",
4518
+ "inline-start",
4519
+ "inline-end",
4520
+ "span-inline-start",
4521
+ "span-inline-end",
4522
+ "self-block-start",
4523
+ "self-block-end",
4524
+ "span-self-block-start",
4525
+ "span-self-block-end",
4526
+ "self-inline-start",
4527
+ "self-inline-end",
4528
+ "span-self-inline-start",
4529
+ "span-self-inline-end",
4530
+ "span-start",
4531
+ "span-end",
4532
+ "span-self-start",
4533
+ "span-self-end"
4437
4534
  ],
4438
4535
  "name": "position-area"
4439
4536
  },
@@ -5275,6 +5372,17 @@ export const generatedProperties = [
5275
5372
  "name": "table-layout"
5276
5373
  },
5277
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
+ ],
5278
5386
  "inherited": true,
5279
5387
  "keywords": [
5280
5388
  "left",
@@ -5291,6 +5399,15 @@ export const generatedProperties = [
5291
5399
  "name": "text-align"
5292
5400
  },
5293
5401
  {
5402
+ "devtools_keywords": [
5403
+ "auto",
5404
+ "start",
5405
+ "end",
5406
+ "left",
5407
+ "right",
5408
+ "center",
5409
+ "justify"
5410
+ ],
5294
5411
  "inherited": true,
5295
5412
  "keywords": [
5296
5413
  "auto",
@@ -5474,7 +5591,8 @@ export const generatedProperties = [
5474
5591
  "keywords": [
5475
5592
  "sideways",
5476
5593
  "mixed",
5477
- "upright"
5594
+ "upright",
5595
+ "sideways-right"
5478
5596
  ],
5479
5597
  "name": "text-orientation"
5480
5598
  },
@@ -5531,6 +5649,13 @@ export const generatedProperties = [
5531
5649
  "name": "text-spacing-trim"
5532
5650
  },
5533
5651
  {
5652
+ "devtools_keywords": [
5653
+ "none",
5654
+ "capitalize",
5655
+ "uppercase",
5656
+ "lowercase",
5657
+ "math-auto"
5658
+ ],
5534
5659
  "inherited": true,
5535
5660
  "keywords": [
5536
5661
  "none",
@@ -5588,6 +5713,9 @@ export const generatedProperties = [
5588
5713
  "name": "text-wrap-style"
5589
5714
  },
5590
5715
  {
5716
+ "devtools_keywords": [
5717
+ "none"
5718
+ ],
5591
5719
  "keywords": [
5592
5720
  "none",
5593
5721
  "all"
@@ -5799,6 +5927,12 @@ export const generatedProperties = [
5799
5927
  "name": "unicode-range"
5800
5928
  },
5801
5929
  {
5930
+ "devtools_keywords": [
5931
+ "auto",
5932
+ "none",
5933
+ "text",
5934
+ "all"
5935
+ ],
5802
5936
  "inherited": true,
5803
5937
  "keywords": [
5804
5938
  "auto",
@@ -5868,6 +6002,9 @@ export const generatedProperties = [
5868
6002
  "name": "view-transition-group"
5869
6003
  },
5870
6004
  {
6005
+ "devtools_keywords": [
6006
+ "none"
6007
+ ],
5871
6008
  "keywords": [
5872
6009
  "none",
5873
6010
  "auto"
@@ -6083,6 +6220,12 @@ export const generatedPropertyValues = {
6083
6220
  "visual"
6084
6221
  ]
6085
6222
  },
6223
+ "-webkit-ruby-position": {
6224
+ "values": [
6225
+ "before",
6226
+ "after"
6227
+ ]
6228
+ },
6086
6229
  "-webkit-text-combine": {
6087
6230
  "values": [
6088
6231
  "none",
@@ -6100,6 +6243,14 @@ export const generatedPropertyValues = {
6100
6243
  "grammar-error"
6101
6244
  ]
6102
6245
  },
6246
+ "-webkit-text-orientation": {
6247
+ "values": [
6248
+ "sideways",
6249
+ "upright",
6250
+ "sideways-right",
6251
+ "vertical-right"
6252
+ ]
6253
+ },
6103
6254
  "-webkit-text-security": {
6104
6255
  "values": [
6105
6256
  "none",
@@ -6912,8 +7063,7 @@ export const generatedPropertyValues = {
6912
7063
  "layout",
6913
7064
  "style",
6914
7065
  "paint",
6915
- "inline-size",
6916
- "block-size"
7066
+ "inline-size"
6917
7067
  ]
6918
7068
  },
6919
7069
  "contain-intrinsic-block-size": {
@@ -7198,9 +7348,7 @@ export const generatedPropertyValues = {
7198
7348
  "flow",
7199
7349
  "math",
7200
7350
  "ruby",
7201
- "ruby-text",
7202
- "grid-lanes",
7203
- "inline-grid-lanes"
7351
+ "ruby-text"
7204
7352
  ]
7205
7353
  },
7206
7354
  "dominant-baseline": {
@@ -7649,8 +7797,6 @@ export const generatedPropertyValues = {
7649
7797
  "image-rendering": {
7650
7798
  "values": [
7651
7799
  "auto",
7652
- "optimizespeed",
7653
- "optimizequality",
7654
7800
  "-webkit-optimize-contrast",
7655
7801
  "pixelated",
7656
7802
  "crisp-edges"
@@ -7745,8 +7891,7 @@ export const generatedPropertyValues = {
7745
7891
  "loose",
7746
7892
  "normal",
7747
7893
  "strict",
7748
- "anywhere",
7749
- "after-white-space"
7894
+ "anywhere"
7750
7895
  ]
7751
7896
  },
7752
7897
  "line-clamp": {
@@ -7754,8 +7899,7 @@ export const generatedPropertyValues = {
7754
7899
  "none",
7755
7900
  "auto",
7756
7901
  "ellipsis",
7757
- "no-ellipsis",
7758
- "-webkit-legacy"
7902
+ "no-ellipsis"
7759
7903
  ]
7760
7904
  },
7761
7905
  "line-height": {
@@ -8050,7 +8194,7 @@ export const generatedPropertyValues = {
8050
8194
  "outline-style": {
8051
8195
  "values": [
8052
8196
  "none",
8053
- "hidden",
8197
+ "auto",
8054
8198
  "inset",
8055
8199
  "groove",
8056
8200
  "outset",
@@ -8224,7 +8368,43 @@ export const generatedPropertyValues = {
8224
8368
  "end",
8225
8369
  "self-start",
8226
8370
  "self-end",
8227
- "all"
8371
+ "span-all",
8372
+ "span-left",
8373
+ "span-right",
8374
+ "span-x-start",
8375
+ "span-x-end",
8376
+ "self-x-start",
8377
+ "self-x-end",
8378
+ "span-self-x-start",
8379
+ "span-self-x-end",
8380
+ "span-top",
8381
+ "span-bottom",
8382
+ "span-y-start",
8383
+ "span-y-end",
8384
+ "self-y-start",
8385
+ "self-y-end",
8386
+ "span-self-y-start",
8387
+ "span-self-y-end",
8388
+ "block-start",
8389
+ "block-end",
8390
+ "span-block-start",
8391
+ "span-block-end",
8392
+ "inline-start",
8393
+ "inline-end",
8394
+ "span-inline-start",
8395
+ "span-inline-end",
8396
+ "self-block-start",
8397
+ "self-block-end",
8398
+ "span-self-block-start",
8399
+ "span-self-block-end",
8400
+ "self-inline-start",
8401
+ "self-inline-end",
8402
+ "span-self-inline-start",
8403
+ "span-self-inline-end",
8404
+ "span-start",
8405
+ "span-end",
8406
+ "span-self-start",
8407
+ "span-self-end"
8228
8408
  ]
8229
8409
  },
8230
8410
  "position-try-fallbacks": {
@@ -8601,8 +8781,7 @@ export const generatedPropertyValues = {
8601
8781
  "-webkit-right",
8602
8782
  "-webkit-center",
8603
8783
  "start",
8604
- "end",
8605
- "match-parent"
8784
+ "end"
8606
8785
  ]
8607
8786
  },
8608
8787
  "text-align-last": {
@@ -8613,8 +8792,7 @@ export const generatedPropertyValues = {
8613
8792
  "left",
8614
8793
  "right",
8615
8794
  "center",
8616
- "justify",
8617
- "match-parent"
8795
+ "justify"
8618
8796
  ]
8619
8797
  },
8620
8798
  "text-anchor": {
@@ -8722,7 +8900,8 @@ export const generatedPropertyValues = {
8722
8900
  "values": [
8723
8901
  "sideways",
8724
8902
  "mixed",
8725
- "upright"
8903
+ "upright",
8904
+ "sideways-right"
8726
8905
  ]
8727
8906
  },
8728
8907
  "text-overflow": {
@@ -8764,8 +8943,6 @@ export const generatedPropertyValues = {
8764
8943
  "capitalize",
8765
8944
  "uppercase",
8766
8945
  "lowercase",
8767
- "full-width",
8768
- "full-size-kana",
8769
8946
  "math-auto"
8770
8947
  ]
8771
8948
  },
@@ -8799,8 +8976,7 @@ export const generatedPropertyValues = {
8799
8976
  },
8800
8977
  "timeline-scope": {
8801
8978
  "values": [
8802
- "none",
8803
- "all"
8979
+ "none"
8804
8980
  ]
8805
8981
  },
8806
8982
  "timeline-trigger-active-range-end": {
@@ -8917,8 +9093,7 @@ export const generatedPropertyValues = {
8917
9093
  "auto",
8918
9094
  "none",
8919
9095
  "text",
8920
- "all",
8921
- "contain"
9096
+ "all"
8922
9097
  ]
8923
9098
  },
8924
9099
  "vector-effect": {
@@ -8966,8 +9141,7 @@ export const generatedPropertyValues = {
8966
9141
  },
8967
9142
  "view-transition-name": {
8968
9143
  "values": [
8969
- "none",
8970
- "auto"
9144
+ "none"
8971
9145
  ]
8972
9146
  },
8973
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
  /**
@@ -4804,8 +4837,10 @@ export namespace DOM {
4804
4837
  FileSelectorButton = 'file-selector-button',
4805
4838
  DetailsContent = 'details-content',
4806
4839
  Picker = 'picker',
4840
+ SelectListbox = 'select-listbox',
4807
4841
  PermissionIcon = 'permission-icon',
4808
4842
  OverscrollAreaParent = 'overscroll-area-parent',
4843
+ OverscrollBackdrop = 'overscroll-backdrop',
4809
4844
  Skeleton = 'skeleton',
4810
4845
  }
4811
4846
 
@@ -15789,6 +15824,15 @@ export namespace Page {
15789
15824
  * option, use with caution.
15790
15825
  */
15791
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;
15792
15836
  }
15793
15837
 
15794
15838
  export interface CreateIsolatedWorldResponse extends ProtocolResponseWithError {
@@ -19491,13 +19535,11 @@ export namespace Target {
19491
19535
  */
19492
19536
  hidden?: boolean;
19493
19537
  /**
19494
- * If specified, the option is used to determine if the new target should
19495
- * be focused or not. By default, the focus behavior depends on the
19496
- * value of the background field. For example, background=false and focus=false
19497
- * will result in the target tab being opened but the browser window remain
19498
- * unchanged (if it was in the background, it will remain in the background)
19499
- * and background=false with focus=undefined will result in the window being focused.
19500
- * Using background: true and focus: true is not supported and will result in an error.
19538
+ * If specified, determines whether the new target should be focused.
19539
+ * By default, the focus behavior depends on the `background` parameter:
19540
+ * - If `background` is false (default) and `focus` is omitted, the new target is focused and the browser window is brought to the foreground.
19541
+ * - If `background` is false and `focus` is false, the target is opened but the browser window's focus remains unchanged (e.g., if the window was in the background, it stays there).
19542
+ * - If `background` is true, setting `focus` to true is not supported and will result in an error.
19501
19543
  */
19502
19544
  focus?: boolean;
19503
19545
  }
@@ -19953,6 +19995,21 @@ export namespace Tracing {
19953
19995
  * Backend type (defaults to `auto`)
19954
19996
  */
19955
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;
19956
20013
  }
19957
20014
 
19958
20015
  export interface BufferUsageEvent {
@@ -22,7 +22,7 @@ import {debugLog} from './debug.js';
22
22
  import {ExtensionScope} from './ExtensionScope.js';
23
23
  import type {Skill, SkillName} from './skills/Skill.js';
24
24
  import {SKILLS} from './skills/SkillRegistry.js';
25
- import type {AllToolsContext, Tool, ToolArgs} from './tools/Tool.js';
25
+ import type {AllToolsCapabilities, Tool, ToolArgs} from './tools/Tool.js';
26
26
  import {ToolRegistry} from './tools/ToolRegistry.js';
27
27
 
28
28
  const SKILL_DISPLAY_NAMES: Record<SkillName, string> = {
@@ -214,7 +214,7 @@ User query: ${enhancedQuery}`;
214
214
  * Declares a tool to be available to the agent model, verifying first that
215
215
  * it hasn't already been declared to prevent duplicate declaration errors.
216
216
  */
217
- #declareTool(tool: Tool<ToolArgs, unknown, AllToolsContext>): void {
217
+ #declareTool(tool: Tool<ToolArgs, unknown, AllToolsCapabilities>): void {
218
218
  if (this.#declaredTools.has(tool.name)) {
219
219
  debugLog(`AiAgent2: Tool ${tool.name} is already declared`);
220
220
  return;
@@ -225,7 +225,7 @@ User query: ${enhancedQuery}`;
225
225
  parameters: tool.parameters,
226
226
  displayInfoFromArgs: tool.displayInfoFromArgs,
227
227
  handler: (args, options) => {
228
- const context: AllToolsContext = {
228
+ const context: AllToolsCapabilities = {
229
229
  conversationContext: this.context ?? null,
230
230
  changeManager: this.#changes,
231
231
  createExtensionScope: this.#createExtensionScope.bind(this),
@@ -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:
@@ -46,14 +46,14 @@ To support skills requiring execution of code or fetching page state (like compu
46
46
 
47
47
  - **BaseTool**: A non-generic base interface capturing tool metadata (`name`, `description`, `parameters`). This acts as the type-erased representation for generic registry storage and fallback string lookups.
48
48
  - **Tool**: A generic interface parameterized by `<Args, ReturnType, ContextType>` that binds parameter argument types and handler execution to strict contracts. `ContextType` defaults to `BaseToolCapability`, ensuring that each tool explicitly requests only the dependencies it requires.
49
- - **Capability Contexts**: Instead of passing a monolithic grab-bag context to all tools, dependencies are broken into narrow capability interfaces (e.g. `PageExecutionCapability`, `StyleMutationCapability`, `TargetCapability`, `OriginLockCapability`). Tools declare their required dependencies by intersecting these interfaces on their generic `ContextType` definition. The caller/Agent fulfills the complete capability context (`AllToolsContext`), guaranteeing 100% compile-time type safety for dependencies without runtime checks.
49
+ - **Capability Contexts**: Instead of passing a monolithic grab-bag context to all tools, dependencies are broken into narrow capability interfaces (e.g. `PageExecutionCapability`, `StyleMutationCapability`, `TargetCapability`, `OriginLockCapability`). Tools declare their required dependencies by intersecting these interfaces on their generic `ContextType` definition. The caller/Agent fulfills the complete capability context (`AllToolsCapabilities`), guaranteeing 100% compile-time type safety for dependencies without runtime checks.
50
50
  - **ToolRegistry**: A static registry (`ToolRegistry`) storing instantiated tools. It uses TypeScript function overloading and generic lookups (`static get<K extends keyof typeof TOOLS>(name: K): typeof TOOLS[K]`) to return the precise class type of each tool, preventing type-erasure and escape-hatches (such as `any` or `as unknown` type assertions) at integration points like `AiAgent2.ts`. See the [Tools README](tools/README.md) for authoring instructions.
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.
@@ -17,6 +17,7 @@ import {isOpaqueOrigin} from '../AiOrigins.js';
17
17
  import {AccessibilityContext} from '../contexts/AccessibilityContext.js';
18
18
  import {DOMNodeContext} from '../contexts/DOMNodeContext.js';
19
19
  import {FileContext} from '../contexts/FileContext.js';
20
+ import {PerformanceTraceContext} from '../contexts/PerformanceTraceContext.js';
20
21
  import {getRequestContextOrigin, RequestContext} from '../contexts/RequestContext.js';
21
22
  import {debugLog} from '../debug.js';
22
23
  import {StorageItem} from '../StorageItem.js';
@@ -28,7 +29,6 @@ import {
28
29
  type ContextResponse,
29
30
  type RequestOptions,
30
31
  } from './AiAgent.js';
31
- import {PerformanceTraceContext} from './PerformanceAgent.js';
32
32
  import {StorageContext} from './StorageAgent.js';
33
33
 
34
34
  const lockedString = i18n.i18n.lockedString;