chrome-devtools-frontend 1.0.1662289 → 1.0.1662965

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/.agents/skills/devtools-unicode-escaping/SKILL.md +64 -0
  2. package/.agents/skills/migrate-chromium-test/SKILL.md +29 -4
  3. package/front_end/core/common/SettingRegistration.ts +0 -5
  4. package/front_end/core/common/Settings.ts +69 -3
  5. package/front_end/core/platform/StringUtilities.ts +38 -6
  6. package/front_end/core/sdk/ServiceWorkerCacheModel.ts +0 -10
  7. package/front_end/core/sdk/StorageBucketsModel.ts +0 -10
  8. package/front_end/core/sdk/sdk-meta.ts +0 -1
  9. package/front_end/entrypoints/inspector_main/OutermostTargetSelector.ts +0 -13
  10. package/front_end/entrypoints/inspector_main/RenderingOptions.ts +8 -3
  11. package/front_end/entrypoints/inspector_main/inspector_main-meta.ts +3 -3
  12. package/front_end/entrypoints/main/MainImpl.ts +7 -2
  13. package/front_end/foundation/Universe.ts +16 -0
  14. package/front_end/generated/InspectorBackendCommands.ts +2 -14
  15. package/front_end/generated/protocol-mapping.d.ts +0 -53
  16. package/front_end/generated/protocol-proxy-api.d.ts +0 -46
  17. package/front_end/generated/protocol.ts +0 -148
  18. package/front_end/models/ai_assistance/AiAgent2.ts +3 -3
  19. package/front_end/models/ai_assistance/AiConversation.ts +21 -10
  20. package/front_end/models/ai_assistance/AiHistoryStorage.ts +21 -10
  21. package/front_end/models/ai_assistance/ChangeManager.ts +2 -2
  22. package/front_end/models/ai_assistance/ExtensionScope.ts +6 -2
  23. package/front_end/models/ai_assistance/agents/AccessibilityAgent.ts +1 -1
  24. package/front_end/models/ai_assistance/agents/AiAgent.ts +8 -1
  25. package/front_end/models/ai_assistance/agents/StylingAgent.ts +1 -1
  26. package/front_end/models/badges/UserBadges.ts +31 -17
  27. package/front_end/models/bindings/NetworkProject.ts +16 -4
  28. package/front_end/models/emulation/DeviceModeModel.ts +67 -5
  29. package/front_end/models/extensions/RecorderPluginManager.ts +10 -6
  30. package/front_end/models/har/Log.snapshot.txt +193 -0
  31. package/front_end/models/har/Log.ts +3 -2
  32. package/front_end/models/source_map_scopes/FunctionCodeResolver.ts +7 -5
  33. package/front_end/models/source_map_scopes/NamesResolver.ts +36 -30
  34. package/front_end/models/stack_trace/StackTrace.ts +17 -0
  35. package/front_end/panels/application/IndexedDBModel.ts +0 -10
  36. package/front_end/panels/application/IndexedDBViews.ts +240 -164
  37. package/front_end/panels/application/SharedStorageModel.ts +0 -10
  38. package/front_end/panels/application/components/AdsView.ts +23 -0
  39. package/front_end/panels/application/components/SharedStorageAccessGrid.ts +1 -1
  40. package/front_end/panels/application/components/adsView.css +21 -1
  41. package/front_end/panels/application/indexedDBViews.css +1 -1
  42. package/front_end/panels/network/NetworkDataGridNode.ts +43 -1
  43. package/front_end/panels/network/RequestInitiatorView.ts +24 -2
  44. package/front_end/panels/network/networkLogView.css +5 -0
  45. package/front_end/panels/network/requestInitiatorViewTree.css +5 -0
  46. package/front_end/panels/profiler/HeapProfileView.ts +198 -79
  47. package/front_end/panels/recorder/README.md +1 -2
  48. package/front_end/panels/recorder/RecorderPanel.ts +1749 -17
  49. package/front_end/panels/recorder/recorder.ts +0 -2
  50. package/front_end/panels/settings/AISettingsTab.ts +13 -0
  51. package/front_end/third_party/chromium/README.chromium +1 -1
  52. package/front_end/ui/components/spinners/Spinner.ts +29 -32
  53. package/front_end/ui/components/spinners/spinner.css +32 -84
  54. package/front_end/ui/legacy/Treeoutline.ts +14 -6
  55. package/front_end/ui/legacy/UIUtils.ts +25 -10
  56. package/front_end/ui/legacy/Widget.ts +17 -10
  57. package/front_end/ui/legacy/components/data_grid/DataGridElement.ts +36 -7
  58. package/front_end/ui/legacy/components/object_ui/ObjectPropertiesSection.ts +63 -68
  59. package/front_end/ui/legacy/components/object_ui/RemoteObjectPreviewFormatter.ts +1 -1
  60. package/front_end/ui/legacy/components/object_ui/objectValue.css +2 -1
  61. package/front_end/ui/legacy/inspectorCommon.css +4 -4
  62. package/front_end/ui/lit/lit.ts +1 -0
  63. package/front_end/ui/lit/render.ts +44 -10
  64. package/front_end/ui/lit/strip-whitespace.ts +23 -2
  65. package/package.json +1 -1
  66. package/front_end/panels/recorder/RecorderController.ts +0 -1759
  67. /package/front_end/panels/recorder/{recorderController.css → recorderPanel.css} +0 -0
@@ -0,0 +1,64 @@
1
+ ---
2
+ name: devtools-unicode-escaping
3
+ description: Guidelines for escaping strings and handling user-controlled data in DevTools to prevent layout bleed-through, XSS, and security issues.
4
+ ---
5
+
6
+ # Unicode Escaping and User-Controlled Data Guidelines
7
+
8
+ When displaying inspected data, user-controlled strings, or untrusted input in the DevTools UI (e.g., console messages, object properties, DOM tree nodes, or UI titles/descriptions), you must ensure they are properly escaped to prevent layout bleed-through (such as Right-to-Left leaks) or security vulnerabilities.
9
+
10
+ DevTools provides two primary Unicode escaping functions in `Platform.StringUtilities`:
11
+
12
+ ## 1. Escaping for Text Representation (`escapeUnicodeAsText`)
13
+
14
+ Use `Platform.StringUtilities.escapeUnicodeAsText(content)` when rendering values that developers need to inspect (e.g. string values inside the Console or the Object properties view) where hidden, invisible, or formatting characters should be made explicitly visible.
15
+
16
+ * **Behavior**: Escapes all formatting and surrogate characters into literal Unicode escape sequences (e.g., `\u202E`, `\u200B`).
17
+ * **Example Usage**:
18
+ ```typescript
19
+ const text = Platform.StringUtilities.escapeUnicodeAsText(JSON.stringify(description));
20
+ ```
21
+
22
+ ## 2. Escaping for UI Rendering (`safeEscapeUnicode`)
23
+
24
+ Use `Platform.StringUtilities.safeEscapeUnicode(content)` when rendering content inside templates or HTML markup where you want safe layout-critical zero-width formatting characters to function normally for word wrapping or rendering layout, but want to escape dangerous layout-disrupting characters (like bidi overrides).
25
+
26
+ * **Behavior**: Escapes dangerous formatting and surrogate characters (like `\u202E`), but leaves safe formatting characters untouched:
27
+ * Zero Width Space (`\u200B`)
28
+ * Zero Width Non-Joiner (`\u200C`)
29
+ * Zero Width Joiner (`\u200D`)
30
+ * **Example Usage**:
31
+ Used automatically by the global Lit template wrapper.
32
+
33
+ ---
34
+
35
+ ## 3. Global Lit Template Wrapper
36
+
37
+ DevTools wraps Lit's default `html` function inside `front_end/ui/lit/strip-whitespace.ts` (re-exported via `ui/lit/lit.js`). This wrapper automatically intercepts and escapes standard string values using `Platform.StringUtilities.safeEscapeUnicode(val)` at runtime.
38
+
39
+ * **What is escaped automatically**: Any standard string interpolated directly in a template (e.g., `html`<span>${myString}</span>``).
40
+ * **Array items**: Array values are traversed recursively, and string elements inside arrays are escaped automatically.
41
+ * **Lit directives**: Directives (like `ifDefined`, `live`, `repeat`, `classMap`, etc.) are automatically traversed, and any string arguments inside their `values` array are escaped recursively.
42
+
43
+ ### Directives Rule:
44
+ Because the wrapper automatically processes directive arguments, you **do not** need to manually escape strings passed to standard Lit directives. They will be handled safely at runtime.
45
+
46
+ ### Correct Example:
47
+ ```typescript
48
+ title=${ifDefined(tooLong ? undefined : description)} // Automatically escaped!
49
+ ```
50
+
51
+ ---
52
+
53
+ ## 4. Manual DOM Assignments & Non-Lit Rendering
54
+
55
+ Any manual assignments that bypass Lit entirely (e.g., setting `element.textContent`, `element.title`, or constructing DOM elements imperatively) will also bypass the Lit wrapper.
56
+
57
+ * Always wrap user-controlled strings in these contexts with the appropriate escaping helper:
58
+ * Use `escapeUnicodeAsText` if you want hidden characters to display as text (e.g., showing `\\u202E`).
59
+ * Use `safeEscapeUnicode` if you want zero-width spaces to function but other dangerous characters to be escaped.
60
+
61
+ ### Correct Example:
62
+ ```typescript
63
+ nameElement.textContent = Platform.StringUtilities.escapeUnicodeAsText(name);
64
+ ```
@@ -42,10 +42,35 @@ description: Use when migrating Chromium layout tests to DevTools unit tests
42
42
  - If the newly added test does not test any logic from the component but just the getters from the mocked data explain to the user that this test does not add value and it's better to close it without adding the test. Provide a command without executing it to close the issue as "Fixed".
43
43
  - If the newly added test uses too extensive mocks of CDP objects and methods explain to the user that the test should be foundation e2e test instead of unit test and we won't migrate it. Provide a command without executing it to close the issue as "Won't Fix (Infeasible)".
44
44
 
45
- 7. Uploading a CL with your changes using the `version-control` skill. And **STRICTLY** follow the following additional template
46
- - **Title**: `[test-migration] Migrating <chromium-test-name> to unit test`
47
- - **Body**: `Migrated <link-to-chromium-test> to <devtools-test-name>`
48
- - **Footer**: Use `Fixed: <issue number>` trailer instead of `Bug: <issue number>`.
45
+ 7. **Upload the CL:**
46
+
47
+ ## Commit message & CL upload requirements
48
+
49
+ When committing and uploading CLs, **STRICTLY** follow this format and constraints:
50
+
51
+ 1. **Title line**: `[test-migration] Migrate <short test name> test to unit test`
52
+ 2. **Body**: `This CL migrates the legacy layout test <long test name> to a unit test in <new test name>. <optional additional explanation>`
53
+ 2. **Body appendix**: `https://crsrc.org/c/third_party/blink/web_tests/<long test name>;drc=4d51e9cab50efd0f8029c45a486e199a1d519fd1`
54
+ 3. **Bug line**: `Fixed: <issue number>`
55
+ 4. **Formatting constraints**: Wrap all lines to a maximum of 72 characters per line.
56
+
57
+ Example commit message:
58
+
59
+ ```text
60
+ [test-migration] Migrate console-eval-global test to unit test
61
+
62
+ This CL migrates the legacy layout test
63
+ http/tests/devtools/console/console-eval-global.js to a unit test in
64
+ ConsolePrompt.test.ts. It verifies that the evaluation in ConsolePrompt
65
+ is performed in the correct execution context (the active one) and with
66
+ the correct expression.
67
+
68
+ https://crsrc.org/c/third_party/blink/web_tests/http/tests/devtools/console/console-eval-global.js;drc=4d51e9cab50efd0f8029c45a486e199a1d519fd1
69
+
70
+ Fixed: <issue number>
71
+ ```
72
+
73
+ Use the `version-control` skill to upload the CL.
49
74
 
50
75
  ## Example Conversion
51
76
 
@@ -268,11 +268,6 @@ export interface SettingRegistration {
268
268
  * Determines if the setting value is stored in the global, local or session storage.
269
269
  */
270
270
  storageType?: SettingStorageType;
271
- /**
272
- * A condition that, when present in the queryParamsObject of Runtime, constraints the value
273
- * of the setting to be changed only if the user set it.
274
- */
275
- userActionCondition?: string;
276
271
  /**
277
272
  * A condition is a function that will make the setting available if it
278
273
  * returns true, and not available, otherwise. Make sure that objects you
@@ -23,6 +23,75 @@ import {
23
23
  } from './SettingRegistration.js';
24
24
  import {VersionController} from './VersionController.js';
25
25
 
26
+ /**
27
+ * Describes and configures a Setting.
28
+ *
29
+ * Use `Settings#resolve` to get the concrete `Setting` instance for a descriptor.
30
+ */
31
+ export interface SettingDescriptor<ValueT> {
32
+ /** The unique identifier of a setting */
33
+ readonly name: string;
34
+
35
+ /**
36
+ * Determines how the possible values of the setting are expressed.
37
+ *
38
+ * - If the setting can only be enabled and disabled use BOOLEAN
39
+ * - If the setting has a list of possible values use ENUM
40
+ * - If each setting value is a set of objects use ARRAY
41
+ * - If the setting value is a regular expression use REGEX
42
+ */
43
+ readonly type: SettingType;
44
+
45
+ /**
46
+ * The default value for this setting.
47
+ *
48
+ * Can be computed based on the `hostConfig` (but NOTHING ELSE).
49
+ */
50
+ readonly defaultValue: ValueT|((hostConfig: Root.Runtime.HostConfig) => ValueT);
51
+
52
+ /**
53
+ * Determines if the setting value is stored in the global, local or session storage.
54
+ */
55
+ readonly storageType?: SettingStorageType;
56
+ }
57
+
58
+ /**
59
+ * Describes and configures a Setting that might be unavailable or disabled depending on the HostConfig.
60
+ *
61
+ * See {@link SettingAvailability} for details.
62
+ *
63
+ * Use `Settings#maybeResolve` to get the concrete `Setting` instance (or a reason why it's not available).
64
+ */
65
+ export interface ConditionalSettingDescriptor<ValueT, ReasonT> extends SettingDescriptor<ValueT> {
66
+ /** The function used as `isAvailable` must only read the host config, NOTHING ELSE. */
67
+ isAvailable: (hostConfig: Root.Runtime.HostConfig) => SettingAvailabilityStatus<ReasonT>;
68
+ }
69
+
70
+ export type SettingAvailabilityStatus<ReasonT> = {
71
+ status: SettingAvailability.AVAILABLE,
72
+ }|{
73
+ status: SettingAvailability.UNAVAILABLE | SettingAvailability.DISABLED,
74
+ reason: ReasonT,
75
+ };
76
+
77
+ export const enum SettingAvailability {
78
+ /**
79
+ * Setting is available and can be changed by the user or programmatically.
80
+ */
81
+ AVAILABLE = 1,
82
+
83
+ /**
84
+ * Setting is not available at all. Any `maybeResolve` or `resolve` call will fail.
85
+ * The setting should be hidden from the user.
86
+ */
87
+ UNAVAILABLE = 2,
88
+
89
+ /**
90
+ * Setting is available, but its value can't be read or written.
91
+ */
92
+ DISABLED = 3,
93
+ }
94
+
26
95
  export interface SettingsCreationOptions {
27
96
  syncedStorage: SettingsStorage;
28
97
  globalStorage: SettingsStorage;
@@ -75,9 +144,6 @@ export class Settings {
75
144
  this.createSetting(settingName, evaluatedDefaultValue, storageType);
76
145
 
77
146
  setting.setTitleFunction(registration.title);
78
- if (registration.userActionCondition) {
79
- setting.setRequiresUserAction(Boolean(Root.Runtime.Runtime.queryParam(registration.userActionCondition)));
80
- }
81
147
  setting.setRegistration(registration);
82
148
 
83
149
  this.registerModuleSetting(setting);
@@ -50,8 +50,40 @@ const escapedReplacements = new Map([
50
50
  ['</script', '\\x3C/script'],
51
51
  ]);
52
52
 
53
- export const escapeUnicode = (content: string): string => {
54
- return content.replaceAll(/[\p{Format}\p{Surrogate}]/gu, match => {
53
+ const UNICODE_ESCAPE_SOURCE = '[\\p{Format}\\p{Surrogate}]';
54
+ const UNICODE_ESCAPE_REGEX = new RegExp(UNICODE_ESCAPE_SOURCE, 'u');
55
+ const UNICODE_ESCAPE_GLOBAL_REGEX = new RegExp(UNICODE_ESCAPE_SOURCE, 'gu');
56
+
57
+ const UNICODE_ESCAPE_EXCEPT_ZWSP_SOURCE = '(?![\\u200B\\u200C\\u200D])[\\p{Format}]|\\p{Surrogate}';
58
+ const UNICODE_ESCAPE_EXCEPT_ZWSP_REGEX = new RegExp(UNICODE_ESCAPE_EXCEPT_ZWSP_SOURCE, 'u');
59
+ const UNICODE_ESCAPE_EXCEPT_ZWSP_GLOBAL_REGEX = new RegExp(UNICODE_ESCAPE_EXCEPT_ZWSP_SOURCE, 'gu');
60
+
61
+ /**
62
+ * Escapes formatting and surrogate characters in the string into literal Unicode escape sequences (e.g. \u200B).
63
+ * Use this when displaying strings to developers for inspection (e.g. in the Console or Object properties)
64
+ * where you want hidden or invisible characters to be explicitly visible as literal text.
65
+ */
66
+ export const escapeUnicodeAsText = (content: string): string => {
67
+ if (!UNICODE_ESCAPE_REGEX.test(content)) {
68
+ return content;
69
+ }
70
+ return content.replaceAll(UNICODE_ESCAPE_GLOBAL_REGEX, match => {
71
+ return match.split('').map(char => '\\u' + toHexadecimal(char.charCodeAt(0), 4)).join('');
72
+ });
73
+ };
74
+
75
+ /**
76
+ * Escapes dangerous formatting and surrogate characters (like bidi override characters) to prevent
77
+ * security and layout issues, but leaves safe, layout-critical zero-width formatting characters
78
+ * (Zero Width Space \u200B, Zero Width Non-Joiner \u200C, and Zero Width Joiner \u200D) untouched.
79
+ * Use this when rendering user-controlled content inside templates or HTML markup where you want formatting
80
+ * characters to function normally for word wrapping or rendering layout, rather than showing as literal text.
81
+ */
82
+ export const safeEscapeUnicode = (content: string): string => {
83
+ if (!UNICODE_ESCAPE_EXCEPT_ZWSP_REGEX.test(content)) {
84
+ return content;
85
+ }
86
+ return content.replaceAll(UNICODE_ESCAPE_EXCEPT_ZWSP_GLOBAL_REGEX, match => {
55
87
  return match.split('').map(char => '\\u' + toHexadecimal(char.charCodeAt(0), 4)).join('');
56
88
  });
57
89
  };
@@ -176,8 +208,8 @@ export const toBase64 = (inputString: string): string => {
176
208
  shift = i % 3;
177
209
  v |= data[i] << (16 >>> shift & 24);
178
210
  if (shift === 2) {
179
- encoded += String.fromCharCode(
180
- encodeBits(v >>> 18 & 63), encodeBits(v >>> 12 & 63), encodeBits(v >>> 6 & 63), encodeBits(v & 63));
211
+ encoded += String.fromCharCode(encodeBits(v >>> 18 & 63), encodeBits(v >>> 12 & 63), encodeBits(v >>> 6 & 63),
212
+ encodeBits(v & 63));
181
213
  v = 0;
182
214
  }
183
215
  }
@@ -312,8 +344,8 @@ export const filterRegex = function(query: string): RegExp {
312
344
  return new RegExp(regexString, 'i');
313
345
  };
314
346
 
315
- export const createSearchRegex = function(
316
- query: string, caseSensitive: boolean, isRegex: boolean, matchWholeWord = false): RegExp {
347
+ export const createSearchRegex = function(query: string, caseSensitive: boolean, isRegex: boolean,
348
+ matchWholeWord = false): RegExp {
317
349
  const regexFlags = caseSensitive ? 'g' : 'gi';
318
350
  let regexObject;
319
351
 
@@ -273,16 +273,6 @@ export class ServiceWorkerCacheModel extends SDKModel<EventTypes> implements Pro
273
273
  indexedDBContentUpdated(_event: Protocol.Storage.IndexedDBContentUpdatedEvent): void {
274
274
  }
275
275
 
276
- interestGroupAuctionEventOccurred(_event: Protocol.Storage.InterestGroupAuctionEventOccurredEvent): void {
277
- }
278
-
279
- interestGroupAccessed(_event: Protocol.Storage.InterestGroupAccessedEvent): void {
280
- }
281
-
282
- interestGroupAuctionNetworkRequestCreated(_event: Protocol.Storage.InterestGroupAuctionNetworkRequestCreatedEvent):
283
- void {
284
- }
285
-
286
276
  sharedStorageAccessed(_event: Protocol.Storage.SharedStorageAccessedEvent): void {
287
277
  }
288
278
 
@@ -142,16 +142,6 @@ export class StorageBucketsModel extends SDKModel<EventTypes> implements Protoco
142
142
  }
143
143
  }
144
144
 
145
- interestGroupAccessed(_event: Protocol.Storage.InterestGroupAccessedEvent): void {
146
- }
147
-
148
- interestGroupAuctionEventOccurred(_event: Protocol.Storage.InterestGroupAuctionEventOccurredEvent): void {
149
- }
150
-
151
- interestGroupAuctionNetworkRequestCreated(_event: Protocol.Storage.InterestGroupAuctionNetworkRequestCreatedEvent):
152
- void {
153
- }
154
-
155
145
  indexedDBListUpdated(_event: Protocol.Storage.IndexedDBListUpdatedEvent): void {
156
146
  }
157
147
 
@@ -1355,7 +1355,6 @@ Common.Settings.registerSettingExtension({
1355
1355
  settingType: Common.Settings.SettingType.BOOLEAN,
1356
1356
  order: 0,
1357
1357
  defaultValue: false,
1358
- userActionCondition: 'hasOtherClients',
1359
1358
  options: [
1360
1359
  {
1361
1360
  value: true,
@@ -27,8 +27,6 @@ const UIStrings = {
27
27
  const str_ = i18n.i18n.registerUIStrings('entrypoints/inspector_main/OutermostTargetSelector.ts', UIStrings);
28
28
  const i18nString = i18n.i18n.getLocalizedString.bind(undefined, str_);
29
29
 
30
- let outermostTargetSelectorInstance: OutermostTargetSelector;
31
-
32
30
  export class OutermostTargetSelector implements SDK.TargetManager.Observer, UI.SoftDropDown.Delegate<SDK.Target.Target>,
33
31
  UI.Toolbar.Provider {
34
32
  readonly listItems = new UI.ListModel.ListModel<SDK.Target.Target>();
@@ -54,17 +52,6 @@ export class OutermostTargetSelector implements SDK.TargetManager.Observer, UI.S
54
52
  UI.Context.Context.instance().addFlavorChangeListener(SDK.Target.Target, this.#targetChanged, this);
55
53
  }
56
54
 
57
- static instance(opts: {
58
- forceNew: boolean|null,
59
- } = {forceNew: null}): OutermostTargetSelector {
60
- const {forceNew} = opts;
61
- if (!outermostTargetSelectorInstance || forceNew) {
62
- outermostTargetSelectorInstance = new OutermostTargetSelector();
63
- }
64
-
65
- return outermostTargetSelectorInstance;
66
- }
67
-
68
55
  item(): UI.Toolbar.ToolbarItem {
69
56
  return this.#toolbarItem;
70
57
  }
@@ -216,9 +216,14 @@ export class RenderingOptionsView extends UI.Widget.VBox {
216
216
  this.#appendCheckbox(
217
217
  i18nString(UIStrings.scrollingPerformanceIssues), i18nString(UIStrings.highlightsElementsTealThatCan),
218
218
  Common.Settings.Settings.instance().moduleSetting('show-scroll-bottleneck-rects'));
219
- this.#appendCheckbox(
220
- i18nString(UIStrings.highlightAds), i18nString(UIStrings.highlightsElementsRedDetectedToBe),
221
- Common.Settings.Settings.instance().moduleSetting('show-ad-highlights'));
219
+
220
+ // The 'Highlight ads' setting now lives in the Ads panel under Application.
221
+ // We display this legacy setting only when the Ads panel isn't enabled.
222
+ if (!Root.Runtime.hostConfig.devToolsAdsPanel?.enabled) {
223
+ this.#appendCheckbox(i18nString(UIStrings.highlightAds), i18nString(UIStrings.highlightsElementsRedDetectedToBe),
224
+ Common.Settings.Settings.instance().moduleSetting('show-ad-highlights'));
225
+ }
226
+
222
227
  this.#appendCheckbox(
223
228
  i18nString(UIStrings.disableLocalFonts), i18nString(UIStrings.disablesLocalSourcesInFontface),
224
229
  Common.Settings.Settings.instance().moduleSetting('local-fonts-disabled'));
@@ -246,10 +246,10 @@ UI.Toolbar.registerToolbarItem({
246
246
  });
247
247
 
248
248
  UI.Toolbar.registerToolbarItem({
249
- async loadItem() {
249
+ loadItem: Common.Lazy.lazy(async () => {
250
250
  const InspectorMain = await loadInspectorMainModule();
251
- return InspectorMain.OutermostTargetSelector.OutermostTargetSelector.instance();
252
- },
251
+ return new InspectorMain.OutermostTargetSelector.OutermostTargetSelector();
252
+ }) as () => Promise<UI.Toolbar.Provider>,
253
253
  order: 97,
254
254
  location: UI.Toolbar.ToolbarItemLocation.MAIN_TOOLBAR_RIGHT,
255
255
  });
@@ -215,6 +215,11 @@ export class MainImpl {
215
215
  this.#universe = new Foundation.Universe.Universe(creationOptions);
216
216
  Root.DevToolsContext.setGlobalInstance(this.#universe.context as Root.DevToolsContext.WritableDevToolsContext);
217
217
 
218
+ // Mark 'cache-disabled' as requiring user interaction when multiple CDP clients are attached.
219
+ if (Root.Runtime.Runtime.queryParam('hasOtherClients')) {
220
+ this.#universe.settings.moduleSetting('cache-disabled').setRequiresUserAction(true);
221
+ }
222
+
218
223
  Root.Runtime.experiments.cleanUpStaleExperiments();
219
224
 
220
225
  await this.requestAndRegisterLocaleData();
@@ -503,8 +508,8 @@ export class MainImpl {
503
508
  'no-profile-and-not-eligible';
504
509
  void VisualLogging.logFunctionCall('gdp-client-initialize', contextString);
505
510
  });
506
- void Badges.UserBadges.instance().initialize();
507
- Badges.UserBadges.instance().addEventListener(Badges.Events.BADGE_TRIGGERED, async ev => {
511
+ void this.#universe.userBadges.initialize();
512
+ this.#universe.userBadges.addEventListener(Badges.Events.BADGE_TRIGGERED, async ev => {
508
513
  loadedPanelCommonModule ??= await import('../../panels/common/common.js') as typeof PanelCommon;
509
514
  const badgeNotification = new loadedPanelCommonModule.BadgeNotification();
510
515
  const {badge, reason} = ev.data;
@@ -6,7 +6,9 @@ import * as Common from '../core/common/common.js';
6
6
  import * as Host from '../core/host/host.js';
7
7
  import * as Root from '../core/root/root.js';
8
8
  import * as SDK from '../core/sdk/sdk.js';
9
+ import * as AiAssistance from '../models/ai_assistance/ai_assistance.js';
9
10
  import * as AutofillManager from '../models/autofill_manager/autofill_manager.js';
11
+ import * as Badges from '../models/badges/badges.js';
10
12
  import * as Bindings from '../models/bindings/bindings.js';
11
13
  import * as Breakpoints from '../models/breakpoints/breakpoints.js';
12
14
  import * as CrUXManager from '../models/crux-manager/crux-manager.js';
@@ -186,6 +188,12 @@ export class Universe {
186
188
  const liveMetrics = new LiveMetrics.LiveMetrics(targetManager, deviceModeModel);
187
189
  context.set(LiveMetrics.LiveMetrics, liveMetrics);
188
190
 
191
+ const userBadges = new Badges.UserBadges(settings, gdpClient);
192
+ context.set(Badges.UserBadges, userBadges);
193
+
194
+ const aiHistoryStorage = new AiAssistance.AiHistoryStorage.AiHistoryStorage(settings);
195
+ context.set(AiAssistance.AiHistoryStorage.AiHistoryStorage, aiHistoryStorage);
196
+
189
197
  this.autofillManager = new AutofillManager.AutofillManager.AutofillManager(targetManager, frameManager);
190
198
  }
191
199
 
@@ -198,6 +206,10 @@ export class Universe {
198
206
  return this.context.get(Persistence.AutomaticFileSystemWorkspaceBinding.AutomaticFileSystemWorkspaceBinding);
199
207
  }
200
208
 
209
+ get aiHistoryStorage(): AiAssistance.AiHistoryStorage.AiHistoryStorage {
210
+ return this.context.get(AiAssistance.AiHistoryStorage.AiHistoryStorage);
211
+ }
212
+
201
213
  get breakpointManager(): Breakpoints.BreakpointManager.BreakpointManager {
202
214
  return this.context.get(Breakpoints.BreakpointManager.BreakpointManager);
203
215
  }
@@ -286,6 +298,10 @@ export class Universe {
286
298
  return this.context.get(SDK.TargetManager.TargetManager);
287
299
  }
288
300
 
301
+ get userBadges(): Badges.UserBadges {
302
+ return this.context.get(Badges.UserBadges);
303
+ }
304
+
289
305
  get workspace(): Workspace.Workspace.WorkspaceImpl {
290
306
  return this.context.get(Workspace.Workspace.WorkspaceImpl);
291
307
  }
@@ -77,7 +77,7 @@ inspectorBackend.registerEnum("Audits.CookieOperation", {SetCookie: "SetCookie",
77
77
  inspectorBackend.registerEnum("Audits.InsightType", {GitHubResource: "GitHubResource", GracePeriod: "GracePeriod", Heuristics: "Heuristics"});
78
78
  inspectorBackend.registerEnum("Audits.PerformanceIssueType", {DocumentCookie: "DocumentCookie"});
79
79
  inspectorBackend.registerEnum("Audits.MixedContentResolutionStatus", {MixedContentBlocked: "MixedContentBlocked", MixedContentAutomaticallyUpgraded: "MixedContentAutomaticallyUpgraded", MixedContentWarning: "MixedContentWarning"});
80
- inspectorBackend.registerEnum("Audits.MixedContentResourceType", {AttributionSrc: "AttributionSrc", Audio: "Audio", Beacon: "Beacon", CSPReport: "CSPReport", Download: "Download", EventSource: "EventSource", Favicon: "Favicon", Font: "Font", Form: "Form", Frame: "Frame", Image: "Image", Import: "Import", JSON: "JSON", Manifest: "Manifest", Ping: "Ping", PluginData: "PluginData", PluginResource: "PluginResource", Prefetch: "Prefetch", Resource: "Resource", Script: "Script", ServiceWorker: "ServiceWorker", SharedWorker: "SharedWorker", SpeculationRules: "SpeculationRules", Stylesheet: "Stylesheet", Track: "Track", Video: "Video", Worker: "Worker", XMLHttpRequest: "XMLHttpRequest", XSLT: "XSLT"});
80
+ inspectorBackend.registerEnum("Audits.MixedContentResourceType", {Audio: "Audio", Beacon: "Beacon", CSPReport: "CSPReport", Download: "Download", EventSource: "EventSource", Favicon: "Favicon", Font: "Font", Form: "Form", Frame: "Frame", Image: "Image", Import: "Import", JSON: "JSON", Manifest: "Manifest", Ping: "Ping", PluginData: "PluginData", PluginResource: "PluginResource", Prefetch: "Prefetch", Resource: "Resource", Script: "Script", ServiceWorker: "ServiceWorker", SharedWorker: "SharedWorker", SpeculationRules: "SpeculationRules", Stylesheet: "Stylesheet", Track: "Track", Video: "Video", Worker: "Worker", XMLHttpRequest: "XMLHttpRequest", XSLT: "XSLT"});
81
81
  inspectorBackend.registerEnum("Audits.BlockedByResponseReason", {CoepFrameResourceNeedsCoepHeader: "CoepFrameResourceNeedsCoepHeader", CoopSandboxedIFrameCannotNavigateToCoopPage: "CoopSandboxedIFrameCannotNavigateToCoopPage", CorpNotSameOrigin: "CorpNotSameOrigin", CorpNotSameOriginAfterDefaultedToSameOriginByCoep: "CorpNotSameOriginAfterDefaultedToSameOriginByCoep", CorpNotSameOriginAfterDefaultedToSameOriginByDip: "CorpNotSameOriginAfterDefaultedToSameOriginByDip", CorpNotSameOriginAfterDefaultedToSameOriginByCoepAndDip: "CorpNotSameOriginAfterDefaultedToSameOriginByCoepAndDip", CorpNotSameSite: "CorpNotSameSite", SRIMessageSignatureMismatch: "SRIMessageSignatureMismatch"});
82
82
  inspectorBackend.registerEnum("Audits.HeavyAdResolutionStatus", {HeavyAdBlocked: "HeavyAdBlocked", HeavyAdWarning: "HeavyAdWarning"});
83
83
  inspectorBackend.registerEnum("Audits.HeavyAdReason", {NetworkTotalLimit: "NetworkTotalLimit", CpuTotalLimit: "CpuTotalLimit", CpuPeakLimit: "CpuPeakLimit"});
@@ -203,7 +203,6 @@ inspectorBackend.registerEnum("Browser.WindowState", {Normal: "normal", Minimize
203
203
  inspectorBackend.registerEnum("Browser.PermissionType", {Ar: "ar", AudioCapture: "audioCapture", AutomaticFullscreen: "automaticFullscreen", BackgroundFetch: "backgroundFetch", BackgroundSync: "backgroundSync", CameraPanTiltZoom: "cameraPanTiltZoom", CapturedSurfaceControl: "capturedSurfaceControl", ClipboardReadWrite: "clipboardReadWrite", ClipboardSanitizedWrite: "clipboardSanitizedWrite", DisplayCapture: "displayCapture", DurableStorage: "durableStorage", Geolocation: "geolocation", HandTracking: "handTracking", IdleDetection: "idleDetection", KeyboardLock: "keyboardLock", LocalFonts: "localFonts", LocalNetwork: "localNetwork", LocalNetworkAccess: "localNetworkAccess", LoopbackNetwork: "loopbackNetwork", Midi: "midi", MidiSysex: "midiSysex", Nfc: "nfc", Notifications: "notifications", PaymentHandler: "paymentHandler", PeriodicBackgroundSync: "periodicBackgroundSync", PointerLock: "pointerLock", ProtectedMediaIdentifier: "protectedMediaIdentifier", Sensors: "sensors", SmartCard: "smartCard", SpeakerSelection: "speakerSelection", StorageAccess: "storageAccess", TopLevelStorageAccess: "topLevelStorageAccess", VideoCapture: "videoCapture", Vr: "vr", WakeLockScreen: "wakeLockScreen", WakeLockSystem: "wakeLockSystem", WebAppInstallation: "webAppInstallation", WebPrinting: "webPrinting", WindowManagement: "windowManagement"});
204
204
  inspectorBackend.registerEnum("Browser.PermissionSetting", {Granted: "granted", Denied: "denied", Prompt: "prompt"});
205
205
  inspectorBackend.registerEnum("Browser.BrowserCommandId", {OpenTabSearch: "openTabSearch", CloseTabSearch: "closeTabSearch", OpenGlic: "openGlic"});
206
- inspectorBackend.registerEnum("Browser.PrivacySandboxAPI", {BiddingAndAuctionServices: "BiddingAndAuctionServices", TrustedKeyValue: "TrustedKeyValue"});
207
206
  inspectorBackend.registerEvent("Browser.downloadWillBegin", ["frameId", "guid", "url", "suggestedFilename"]);
208
207
  inspectorBackend.registerEnum("Browser.DownloadProgressEventState", {InProgress: "inProgress", Completed: "completed", Canceled: "canceled"});
209
208
  inspectorBackend.registerEvent("Browser.downloadProgress", ["guid", "totalBytes", "receivedBytes", "state", "filePath"]);
@@ -227,7 +226,6 @@ inspectorBackend.registerCommand("Browser.setContentsSize", [{"name": "windowId"
227
226
  inspectorBackend.registerCommand("Browser.setDockTile", [{"name": "badgeLabel", "type": "string", "optional": true, "description": "", "typeRef": null}, {"name": "image", "type": "string", "optional": true, "description": "Png encoded image.", "typeRef": null}], [], "Set dock tile details, platform-specific.");
228
227
  inspectorBackend.registerCommand("Browser.executeBrowserCommand", [{"name": "commandId", "type": "string", "optional": false, "description": "", "typeRef": "Browser.BrowserCommandId"}], [], "Invoke custom browser commands used by telemetry.");
229
228
  inspectorBackend.registerCommand("Browser.addPrivacySandboxEnrollmentOverride", [{"name": "url", "type": "string", "optional": false, "description": "", "typeRef": null}], [], "Allows a site to use privacy sandbox features that require enrollment without the site actually being enrolled. Only supported on page targets.");
230
- inspectorBackend.registerCommand("Browser.addPrivacySandboxCoordinatorKeyConfig", [{"name": "api", "type": "string", "optional": false, "description": "", "typeRef": "Browser.PrivacySandboxAPI"}, {"name": "coordinatorOrigin", "type": "string", "optional": false, "description": "", "typeRef": null}, {"name": "keyConfig", "type": "string", "optional": false, "description": "", "typeRef": null}, {"name": "browserContextId", "type": "string", "optional": true, "description": "BrowserContext to perform the action in. When omitted, default browser context is used.", "typeRef": "Browser.BrowserContextID"}], [], "Configures encryption keys used with a given privacy sandbox API to talk to a trusted coordinator. Since this is intended for test automation only, coordinatorOrigin must be a .test domain. No existing coordinator configuration for the origin may exist.");
231
229
  inspectorBackend.registerType("Browser.Bounds", [{"name": "left", "type": "number", "optional": true, "description": "The offset from the left edge of the screen to the window in pixels.", "typeRef": null}, {"name": "top", "type": "number", "optional": true, "description": "The offset from the top edge of the screen to the window in pixels.", "typeRef": null}, {"name": "width", "type": "number", "optional": true, "description": "The window width in pixels.", "typeRef": null}, {"name": "height", "type": "number", "optional": true, "description": "The window height in pixels.", "typeRef": null}, {"name": "windowState", "type": "string", "optional": true, "description": "The window state. Default to normal.", "typeRef": "Browser.WindowState"}]);
232
230
  inspectorBackend.registerType("Browser.PermissionDescriptor", [{"name": "name", "type": "string", "optional": false, "description": "Name of permission. See https://cs.chromium.org/chromium/src/third_party/blink/renderer/modules/permissions/permission_descriptor.idl for valid permission names.", "typeRef": null}, {"name": "sysex", "type": "boolean", "optional": true, "description": "For \\\"midi\\\" permission, may also specify sysex control.", "typeRef": null}, {"name": "userVisibleOnly", "type": "boolean", "optional": true, "description": "For \\\"push\\\" permission, may specify userVisibleOnly. Note that userVisibleOnly = true is the only currently supported type.", "typeRef": null}, {"name": "allowWithoutSanitization", "type": "boolean", "optional": true, "description": "For \\\"clipboard\\\" permission, may specify allowWithoutSanitization.", "typeRef": null}, {"name": "allowWithoutGesture", "type": "boolean", "optional": true, "description": "For \\\"fullscreen\\\" permission, must specify allowWithoutGesture:true.", "typeRef": null}, {"name": "panTiltZoom", "type": "boolean", "optional": true, "description": "For \\\"camera\\\" permission, may specify panTiltZoom.", "typeRef": null}]);
233
231
  inspectorBackend.registerType("Browser.Bucket", [{"name": "low", "type": "number", "optional": false, "description": "Minimum value (inclusive).", "typeRef": null}, {"name": "high", "type": "number", "optional": false, "description": "Maximum value (exclusive).", "typeRef": null}, {"name": "count", "type": "number", "optional": false, "description": "Number of samples.", "typeRef": null}]);
@@ -1319,19 +1317,13 @@ inspectorBackend.registerType("SmartCardEmulation.ReaderStateOut", [{"name": "re
1319
1317
 
1320
1318
  // Storage.
1321
1319
  inspectorBackend.registerEnum("Storage.StorageType", {Cookies: "cookies", File_systems: "file_systems", Indexeddb: "indexeddb", Local_storage: "local_storage", Shader_cache: "shader_cache", Websql: "websql", Service_workers: "service_workers", Cache_storage: "cache_storage", Interest_groups: "interest_groups", Shared_storage: "shared_storage", Storage_buckets: "storage_buckets", All: "all", Other: "other"});
1322
- inspectorBackend.registerEnum("Storage.InterestGroupAccessType", {Join: "join", Leave: "leave", Update: "update", Loaded: "loaded", Bid: "bid", Win: "win", AdditionalBid: "additionalBid", AdditionalBidWin: "additionalBidWin", TopLevelBid: "topLevelBid", TopLevelAdditionalBid: "topLevelAdditionalBid", Clear: "clear"});
1323
- inspectorBackend.registerEnum("Storage.InterestGroupAuctionEventType", {Started: "started", ConfigResolved: "configResolved"});
1324
- inspectorBackend.registerEnum("Storage.InterestGroupAuctionFetchType", {BidderJs: "bidderJs", BidderWasm: "bidderWasm", SellerJs: "sellerJs", BidderTrustedSignals: "bidderTrustedSignals", SellerTrustedSignals: "sellerTrustedSignals"});
1325
- inspectorBackend.registerEnum("Storage.SharedStorageAccessScope", {Window: "window", SharedStorageWorklet: "sharedStorageWorklet", ProtectedAudienceWorklet: "protectedAudienceWorklet", Header: "header"});
1320
+ inspectorBackend.registerEnum("Storage.SharedStorageAccessScope", {Window: "window", SharedStorageWorklet: "sharedStorageWorklet", Header: "header"});
1326
1321
  inspectorBackend.registerEnum("Storage.SharedStorageAccessMethod", {AddModule: "addModule", CreateWorklet: "createWorklet", SelectURL: "selectURL", Run: "run", BatchUpdate: "batchUpdate", Set: "set", Append: "append", Delete: "delete", Clear: "clear", Get: "get", Keys: "keys", Values: "values", Entries: "entries", Length: "length", RemainingBudget: "remainingBudget"});
1327
1322
  inspectorBackend.registerEnum("Storage.StorageBucketsDurability", {Relaxed: "relaxed", Strict: "strict"});
1328
1323
  inspectorBackend.registerEvent("Storage.cacheStorageContentUpdated", ["origin", "storageKey", "bucketId", "cacheName"]);
1329
1324
  inspectorBackend.registerEvent("Storage.cacheStorageListUpdated", ["origin", "storageKey", "bucketId"]);
1330
1325
  inspectorBackend.registerEvent("Storage.indexedDBContentUpdated", ["origin", "storageKey", "bucketId", "databaseName", "objectStoreName"]);
1331
1326
  inspectorBackend.registerEvent("Storage.indexedDBListUpdated", ["origin", "storageKey", "bucketId"]);
1332
- inspectorBackend.registerEvent("Storage.interestGroupAccessed", ["accessTime", "type", "ownerOrigin", "name", "componentSellerOrigin", "bid", "bidCurrency", "uniqueAuctionId"]);
1333
- inspectorBackend.registerEvent("Storage.interestGroupAuctionEventOccurred", ["eventTime", "type", "uniqueAuctionId", "parentAuctionId", "auctionConfig"]);
1334
- inspectorBackend.registerEvent("Storage.interestGroupAuctionNetworkRequestCreated", ["type", "requestId", "auctions"]);
1335
1327
  inspectorBackend.registerEvent("Storage.sharedStorageAccessed", ["accessTime", "scope", "method", "mainFrameId", "ownerOrigin", "ownerSite", "params"]);
1336
1328
  inspectorBackend.registerEvent("Storage.sharedStorageWorkletOperationExecutionFinished", ["finishedTime", "executionTime", "method", "operationId", "workletTargetId", "mainFrameId", "ownerOrigin"]);
1337
1329
  inspectorBackend.registerEvent("Storage.storageBucketCreatedOrUpdated", ["bucketInfo"]);
@@ -1355,9 +1347,6 @@ inspectorBackend.registerCommand("Storage.untrackIndexedDBForOrigin", [{"name":
1355
1347
  inspectorBackend.registerCommand("Storage.untrackIndexedDBForStorageKey", [{"name": "storageKey", "type": "string", "optional": false, "description": "Storage key.", "typeRef": null}], [], "Unregisters storage key from receiving notifications for IndexedDB.");
1356
1348
  inspectorBackend.registerCommand("Storage.getTrustTokens", [], ["tokens"], "Returns the number of stored Trust Tokens per issuer for the current browsing context.");
1357
1349
  inspectorBackend.registerCommand("Storage.clearTrustTokens", [{"name": "issuerOrigin", "type": "string", "optional": false, "description": "", "typeRef": null}], ["didDeleteTokens"], "Removes all Trust Tokens issued by the provided issuerOrigin. Leaves other stored data, including the issuer's Redemption Records, intact.");
1358
- inspectorBackend.registerCommand("Storage.getInterestGroupDetails", [{"name": "ownerOrigin", "type": "string", "optional": false, "description": "", "typeRef": null}, {"name": "name", "type": "string", "optional": false, "description": "", "typeRef": null}], ["details"], "Gets details for a named interest group.");
1359
- inspectorBackend.registerCommand("Storage.setInterestGroupTracking", [{"name": "enable", "type": "boolean", "optional": false, "description": "", "typeRef": null}], [], "Enables/Disables issuing of interestGroupAccessed events.");
1360
- inspectorBackend.registerCommand("Storage.setInterestGroupAuctionTracking", [{"name": "enable", "type": "boolean", "optional": false, "description": "", "typeRef": null}], [], "Enables/Disables issuing of interestGroupAuctionEventOccurred and interestGroupAuctionNetworkRequestCreated.");
1361
1350
  inspectorBackend.registerCommand("Storage.getSharedStorageMetadata", [{"name": "ownerOrigin", "type": "string", "optional": false, "description": "", "typeRef": null}], ["metadata"], "Gets metadata for an origin's shared storage.");
1362
1351
  inspectorBackend.registerCommand("Storage.getSharedStorageEntries", [{"name": "ownerOrigin", "type": "string", "optional": false, "description": "", "typeRef": null}], ["entries"], "Gets the entries in an given origin's shared storage.");
1363
1352
  inspectorBackend.registerCommand("Storage.setSharedStorageEntry", [{"name": "ownerOrigin", "type": "string", "optional": false, "description": "", "typeRef": null}, {"name": "key", "type": "string", "optional": false, "description": "", "typeRef": null}, {"name": "value", "type": "string", "optional": false, "description": "", "typeRef": null}, {"name": "ignoreIfPresent", "type": "boolean", "optional": true, "description": "If `ignoreIfPresent` is included and true, then only sets the entry if `key` doesn't already exist.", "typeRef": null}], [], "Sets entry with `key` and `value` for a given origin's shared storage.");
@@ -1369,7 +1358,6 @@ inspectorBackend.registerCommand("Storage.setStorageBucketTracking", [{"name": "
1369
1358
  inspectorBackend.registerCommand("Storage.deleteStorageBucket", [{"name": "bucket", "type": "object", "optional": false, "description": "", "typeRef": "Storage.StorageBucket"}], [], "Deletes the Storage Bucket with the given storage key and bucket name.");
1370
1359
  inspectorBackend.registerCommand("Storage.runBounceTrackingMitigations", [], ["deletedSites"], "Deletes state for sites identified as potential bounce trackers, immediately.");
1371
1360
  inspectorBackend.registerCommand("Storage.getRelatedWebsiteSets", [], ["sets"], "Returns the effective Related Website Sets in use by this profile for the browser session. The effective Related Website Sets will not change during a browser session.");
1372
- inspectorBackend.registerCommand("Storage.setProtectedAudienceKAnonymity", [{"name": "owner", "type": "string", "optional": false, "description": "", "typeRef": null}, {"name": "name", "type": "string", "optional": false, "description": "", "typeRef": null}, {"name": "hashes", "type": "array", "optional": false, "description": "", "typeRef": "binary"}], [], "");
1373
1361
  inspectorBackend.registerType("Storage.UsageForType", [{"name": "storageType", "type": "string", "optional": false, "description": "Name of storage type.", "typeRef": "Storage.StorageType"}, {"name": "usage", "type": "number", "optional": false, "description": "Storage usage (bytes).", "typeRef": null}]);
1374
1362
  inspectorBackend.registerType("Storage.TrustTokens", [{"name": "issuerOrigin", "type": "string", "optional": false, "description": "", "typeRef": null}, {"name": "count", "type": "number", "optional": false, "description": "", "typeRef": null}]);
1375
1363
  inspectorBackend.registerType("Storage.SharedStorageEntry", [{"name": "key", "type": "string", "optional": false, "description": "", "typeRef": null}, {"name": "value", "type": "string", "optional": false, "description": "", "typeRef": null}]);
@@ -781,23 +781,6 @@ export namespace ProtocolMapping {
781
781
  * The origin's IndexedDB database list has been modified.
782
782
  */
783
783
  'Storage.indexedDBListUpdated': [Protocol.Storage.IndexedDBListUpdatedEvent];
784
- /**
785
- * One of the interest groups was accessed. Note that these events are global
786
- * to all targets sharing an interest group store.
787
- */
788
- 'Storage.interestGroupAccessed': [Protocol.Storage.InterestGroupAccessedEvent];
789
- /**
790
- * An auction involving interest groups is taking place. These events are
791
- * target-specific.
792
- */
793
- 'Storage.interestGroupAuctionEventOccurred': [Protocol.Storage.InterestGroupAuctionEventOccurredEvent];
794
- /**
795
- * Specifies which auctions a particular network fetch may be related to, and
796
- * in what role. Note that it is not ordered with respect to
797
- * Network.requestWillBeSent (but will happen before loadingFinished
798
- * loadingFailed).
799
- */
800
- 'Storage.interestGroupAuctionNetworkRequestCreated': [Protocol.Storage.InterestGroupAuctionNetworkRequestCreatedEvent];
801
784
  /**
802
785
  * Shared storage was accessed by the associated page.
803
786
  * The following parameters are included in all events.
@@ -1510,16 +1493,6 @@ export namespace ProtocolMapping {
1510
1493
  paramsType: [Protocol.Browser.AddPrivacySandboxEnrollmentOverrideRequest];
1511
1494
  returnType: void;
1512
1495
  };
1513
- /**
1514
- * Configures encryption keys used with a given privacy sandbox API to talk
1515
- * to a trusted coordinator. Since this is intended for test automation only,
1516
- * coordinatorOrigin must be a .test domain. No existing coordinator
1517
- * configuration for the origin may exist.
1518
- */
1519
- 'Browser.addPrivacySandboxCoordinatorKeyConfig': {
1520
- paramsType: [Protocol.Browser.AddPrivacySandboxCoordinatorKeyConfigRequest];
1521
- returnType: void;
1522
- };
1523
1496
  /**
1524
1497
  * Inserts a new rule with the given `ruleText` in a stylesheet with given `styleSheetId`, at the
1525
1498
  * position specified by `location`.
@@ -4920,28 +4893,6 @@ export namespace ProtocolMapping {
4920
4893
  paramsType: [Protocol.Storage.ClearTrustTokensRequest];
4921
4894
  returnType: Protocol.Storage.ClearTrustTokensResponse;
4922
4895
  };
4923
- /**
4924
- * Gets details for a named interest group.
4925
- */
4926
- 'Storage.getInterestGroupDetails': {
4927
- paramsType: [Protocol.Storage.GetInterestGroupDetailsRequest];
4928
- returnType: Protocol.Storage.GetInterestGroupDetailsResponse;
4929
- };
4930
- /**
4931
- * Enables/Disables issuing of interestGroupAccessed events.
4932
- */
4933
- 'Storage.setInterestGroupTracking': {
4934
- paramsType: [Protocol.Storage.SetInterestGroupTrackingRequest];
4935
- returnType: void;
4936
- };
4937
- /**
4938
- * Enables/Disables issuing of interestGroupAuctionEventOccurred and
4939
- * interestGroupAuctionNetworkRequestCreated.
4940
- */
4941
- 'Storage.setInterestGroupAuctionTracking': {
4942
- paramsType: [Protocol.Storage.SetInterestGroupAuctionTrackingRequest];
4943
- returnType: void;
4944
- };
4945
4896
  /**
4946
4897
  * Gets metadata for an origin's shared storage.
4947
4898
  */
@@ -5020,10 +4971,6 @@ export namespace ProtocolMapping {
5020
4971
  paramsType: [];
5021
4972
  returnType: Protocol.Storage.GetRelatedWebsiteSetsResponse;
5022
4973
  };
5023
- 'Storage.setProtectedAudienceKAnonymity': {
5024
- paramsType: [Protocol.Storage.SetProtectedAudienceKAnonymityRequest];
5025
- returnType: void;
5026
- };
5027
4974
  /**
5028
4975
  * Returns information about the system.
5029
4976
  */