chrome-devtools-mcp 0.23.0 → 0.25.0

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 (83) hide show
  1. package/README.md +22 -5
  2. package/build/src/DevToolsConnectionAdapter.js +1 -0
  3. package/build/src/DevtoolsUtils.js +1 -0
  4. package/build/src/HeapSnapshotManager.js +16 -0
  5. package/build/src/McpContext.js +57 -4
  6. package/build/src/McpPage.js +10 -4
  7. package/build/src/McpResponse.js +55 -19
  8. package/build/src/Mutex.js +1 -0
  9. package/build/src/PageCollector.js +1 -0
  10. package/build/src/SlimMcpResponse.js +1 -0
  11. package/build/src/TextSnapshot.js +13 -7
  12. package/build/src/WaitForHelper.js +6 -0
  13. package/build/src/bin/check-latest-version.js +1 -0
  14. package/build/src/bin/chrome-devtools-cli-options.js +229 -46
  15. package/build/src/bin/chrome-devtools-mcp-cli-options.js +10 -5
  16. package/build/src/bin/chrome-devtools-mcp-main.js +1 -5
  17. package/build/src/bin/chrome-devtools-mcp.js +1 -0
  18. package/build/src/bin/chrome-devtools.js +5 -13
  19. package/build/src/browser.js +1 -0
  20. package/build/src/daemon/client.js +4 -2
  21. package/build/src/daemon/daemon.js +1 -0
  22. package/build/src/daemon/types.js +1 -0
  23. package/build/src/daemon/utils.js +1 -0
  24. package/build/src/formatters/ConsoleFormatter.js +48 -1
  25. package/build/src/formatters/HeapSnapshotFormatter.js +18 -2
  26. package/build/src/formatters/IssueFormatter.js +1 -0
  27. package/build/src/formatters/NetworkFormatter.js +1 -0
  28. package/build/src/formatters/SnapshotFormatter.js +2 -1
  29. package/build/src/index.js +114 -51
  30. package/build/src/issue-descriptions.js +1 -0
  31. package/build/src/logger.js +1 -0
  32. package/build/src/polyfill.js +1 -0
  33. package/build/src/telemetry/ClearcutLogger.js +13 -1
  34. package/build/src/telemetry/WatchdogClient.js +1 -0
  35. package/build/src/telemetry/flagUtils.js +1 -0
  36. package/build/src/telemetry/metricUtils.js +1 -0
  37. package/build/src/telemetry/persistence.js +1 -0
  38. package/build/src/telemetry/toolMetricsUtils.js +2 -1
  39. package/build/src/telemetry/types.js +1 -0
  40. package/build/src/telemetry/watchdog/ClearcutSender.js +1 -0
  41. package/build/src/telemetry/watchdog/main.js +1 -0
  42. package/build/src/third_party/THIRD_PARTY_NOTICES +8 -8
  43. package/build/src/third_party/bundled-packages.json +3 -3
  44. package/build/src/third_party/devtools-formatter-worker.js +2469 -2933
  45. package/build/src/third_party/devtools-heap-snapshot-worker.js +50 -26
  46. package/build/src/third_party/index.js +1107 -407
  47. package/build/src/third_party/issue-descriptions/genericFormModelContextMissingToolDescription.md +5 -0
  48. package/build/src/third_party/issue-descriptions/genericFormModelContextMissingToolName.md +5 -0
  49. package/build/src/third_party/issue-descriptions/genericFormModelContextParameterMissingName.md +5 -0
  50. package/build/src/third_party/issue-descriptions/genericFormModelContextParameterMissingTitleAndDescription.md +5 -0
  51. package/build/src/third_party/issue-descriptions/genericFormModelContextRequiredParameterMissingName.md +5 -0
  52. package/build/src/third_party/lighthouse-devtools-mcp-bundle.js +21717 -20261
  53. package/build/src/tools/ToolDefinition.js +1 -0
  54. package/build/src/tools/categories.js +10 -3
  55. package/build/src/tools/console.js +3 -0
  56. package/build/src/tools/emulation.js +2 -0
  57. package/build/src/tools/extensions.js +6 -0
  58. package/build/src/tools/input.js +57 -2
  59. package/build/src/tools/lighthouse.js +17 -9
  60. package/build/src/tools/memory.js +34 -1
  61. package/build/src/tools/network.js +5 -0
  62. package/build/src/tools/pages.js +14 -5
  63. package/build/src/tools/performance.js +6 -0
  64. package/build/src/tools/screencast.js +6 -2
  65. package/build/src/tools/screenshot.js +3 -0
  66. package/build/src/tools/script.js +2 -0
  67. package/build/src/tools/slim/tools.js +4 -0
  68. package/build/src/tools/snapshot.js +5 -1
  69. package/build/src/tools/{inPage.js → thirdPartyDeveloper.js} +17 -16
  70. package/build/src/tools/tools.js +3 -2
  71. package/build/src/tools/webmcp.js +5 -4
  72. package/build/src/trace-processing/parse.js +1 -0
  73. package/build/src/types.js +1 -0
  74. package/build/src/utils/check-for-updates.js +1 -0
  75. package/build/src/utils/files.js +5 -10
  76. package/build/src/utils/id.js +1 -0
  77. package/build/src/utils/keyboard.js +1 -0
  78. package/build/src/utils/pagination.js +1 -0
  79. package/build/src/utils/string.js +1 -0
  80. package/build/src/utils/types.js +1 -0
  81. package/build/src/version.js +2 -1
  82. package/package.json +10 -11
  83. package/build/src/bin/cliDefinitions.js +0 -621
@@ -31,7 +31,7 @@ import require$$3$3 from 'dns';
31
31
  import require$$2$1 from 'crypto';
32
32
  import 'node:assert';
33
33
  import require$$0$a from 'zlib';
34
- import { generateReport as generateReport$1, navigation as navigation$1, snapshot as snapshot$1 } from './lighthouse-devtools-mcp-bundle.js';
34
+ import { agenticBrowsingConfig as agenticBrowsingConfig$1, generateReport as generateReport$1, navigation as navigation$1, snapshot as snapshot$1 } from './lighthouse-devtools-mcp-bundle.js';
35
35
 
36
36
  function _mergeNamespaces(n, m) {
37
37
  m.forEach(function (e) {
@@ -50666,7 +50666,7 @@ function mergeUint8Arrays(items) {
50666
50666
  * Copyright 2025 Google Inc.
50667
50667
  * SPDX-License-Identifier: Apache-2.0
50668
50668
  */
50669
- const packageVersion = '24.42.0';
50669
+ const packageVersion = '24.43.0';
50670
50670
 
50671
50671
  /**
50672
50672
  * @license
@@ -51466,7 +51466,7 @@ const _isElementHandle = Symbol('_isElementHandle');
51466
51466
  * Copyright 2022 Google Inc.
51467
51467
  * SPDX-License-Identifier: Apache-2.0
51468
51468
  */
51469
- function isErrorLike$1(obj) {
51469
+ function isErrorLike$2(obj) {
51470
51470
  return (typeof obj === 'object' && obj !== null && 'name' in obj && 'message' in obj);
51471
51471
  }
51472
51472
  function rewriteError$1(error, message, originalMessage) {
@@ -51849,7 +51849,7 @@ class QueryHandler {
51849
51849
  }
51850
51850
  }
51851
51851
  catch (error) {
51852
- if (!isErrorLike$1(error)) {
51852
+ if (!isErrorLike$2(error)) {
51853
51853
  throw error;
51854
51854
  }
51855
51855
  if (error.name === 'AbortError') {
@@ -52980,22 +52980,28 @@ class Locator extends EventEmitter {
52980
52980
  return 'typeable-input';
52981
52981
  }
52982
52982
  if (el instanceof HTMLInputElement) {
52983
- if (new Set([
52984
- 'textarea',
52985
- 'text',
52986
- 'url',
52987
- 'tel',
52988
- 'search',
52989
- 'password',
52990
- 'number',
52991
- 'email',
52992
- ]).has(el.type)) {
52993
- return 'typeable-input';
52994
- }
52995
- else {
52996
- return 'other-input';
52983
+ switch (el.type) {
52984
+ case 'checkbox':
52985
+ case 'radio':
52986
+ return 'checkable-input';
52987
+ case 'text':
52988
+ case 'url':
52989
+ case 'tel':
52990
+ case 'search':
52991
+ case 'password':
52992
+ case 'number':
52993
+ case 'email':
52994
+ return 'typeable-input';
52995
+ default:
52996
+ return 'other-input';
52997
52997
  }
52998
52998
  }
52999
+ switch (el.getAttribute('role')) {
53000
+ case 'checkbox':
53001
+ case 'radio':
53002
+ case 'switch':
53003
+ return 'checkable-input';
53004
+ }
52999
53005
  if (el.isContentEditable) {
53000
53006
  return 'contenteditable';
53001
53007
  }
@@ -53006,43 +53012,66 @@ class Locator extends EventEmitter {
53006
53012
  return from(handle.focus()).pipe(mergeMap(() => {
53007
53013
  return from(handle.evaluate((input, newValue) => {
53008
53014
  const element = input;
53015
+ const valString = String(newValue);
53009
53016
  const currentValue = element.isContentEditable
53010
53017
  ? element.innerText
53011
53018
  : element.value;
53012
- if (currentValue === newValue) {
53019
+ if (currentValue === valString) {
53013
53020
  return;
53014
53021
  }
53015
53022
  if (element.isContentEditable) {
53016
- element.innerText = newValue;
53023
+ element.innerText = valString;
53017
53024
  }
53018
53025
  else {
53019
- element.value = newValue;
53026
+ element.value = valString;
53020
53027
  }
53021
53028
  element.dispatchEvent(new Event('input', { bubbles: true }));
53022
53029
  element.dispatchEvent(new Event('change', { bubbles: true }));
53023
53030
  }, value));
53024
53031
  }));
53025
53032
  };
53033
+ const toggleIfNeeded = () => {
53034
+ return from(handle.evaluate(toggleEl => {
53035
+ if (toggleEl.indeterminate ||
53036
+ toggleEl.getAttribute('aria-checked') === 'mixed') {
53037
+ return 'mixed';
53038
+ }
53039
+ return (toggleEl.checked ||
53040
+ toggleEl.getAttribute('aria-checked') === 'true');
53041
+ })).pipe(mergeMap(currentState => {
53042
+ if (currentState === 'mixed' || currentState !== !!value) {
53043
+ return from(handle.click());
53044
+ }
53045
+ return of(undefined);
53046
+ }));
53047
+ };
53026
53048
  switch (inputType) {
53049
+ case 'checkable-input':
53050
+ return toggleIfNeeded();
53027
53051
  case 'select':
53028
53052
  return from(handle.select(value).then(noop));
53029
53053
  case 'contenteditable':
53030
53054
  case 'typeable-input':
53031
- if (value.length < typingThreshold) {
53055
+ if (typeof value === 'string' &&
53056
+ value.length < typingThreshold) {
53032
53057
  return from(handle.evaluate((input, newValue) => {
53033
53058
  const element = input;
53059
+ const valString = String(newValue);
53034
53060
  const currentValue = element.isContentEditable
53035
53061
  ? element.innerText
53036
53062
  : input.value;
53037
- if (newValue.length <= currentValue.length ||
53038
- !newValue.startsWith(currentValue)) {
53063
+ if (currentValue === valString) {
53064
+ return '';
53065
+ }
53066
+ if (!valString.startsWith(currentValue) ||
53067
+ !currentValue) {
53039
53068
  if (element.isContentEditable) {
53040
53069
  element.innerText = '';
53041
53070
  }
53042
53071
  else {
53043
53072
  input.value = '';
53044
53073
  }
53045
- return newValue;
53074
+ return valString;
53046
53075
  }
53047
53076
  if (element.isContentEditable) {
53048
53077
  element.innerText = '';
@@ -53052,7 +53081,7 @@ class Locator extends EventEmitter {
53052
53081
  input.value = '';
53053
53082
  input.value = currentValue;
53054
53083
  }
53055
- return newValue.substring(currentValue.length);
53084
+ return valString.substring(currentValue.length);
53056
53085
  }, value)).pipe(mergeMap(textToType => {
53057
53086
  if (!textToType) {
53058
53087
  return of(undefined);
@@ -55852,7 +55881,7 @@ class WaitTask {
55852
55881
  }
55853
55882
  }
55854
55883
  getBadError(error) {
55855
- if (isErrorLike$1(error)) {
55884
+ if (isErrorLike$2(error)) {
55856
55885
  if (error.message.includes('Execution context is not available in detached frame')) {
55857
55886
  return new Error('Waiting failed: Frame detached');
55858
55887
  }
@@ -56610,7 +56639,7 @@ let Binding$2 = class Binding {
56610
56639
  }
56611
56640
  }
56612
56641
  catch (error) {
56613
- if (isErrorLike$1(error)) {
56642
+ if (isErrorLike$2(error)) {
56614
56643
  await context
56615
56644
  .evaluate((name, seq, message, stack) => {
56616
56645
  const error = new Error(message);
@@ -57576,7 +57605,7 @@ let EmulationManager = (() => {
57576
57605
  });
57577
57606
  }
57578
57607
  catch (error) {
57579
- if (isErrorLike$1(error) && error.message.includes('Invalid timezone')) {
57608
+ if (isErrorLike$2(error) && error.message.includes('Invalid timezone')) {
57580
57609
  throw new Error(`Invalid timezone ID: ${timezoneState.timezoneId}`);
57581
57610
  }
57582
57611
  throw error;
@@ -59425,7 +59454,7 @@ let CdpFrame = (() => {
59425
59454
  : null;
59426
59455
  }
59427
59456
  catch (error) {
59428
- if (isErrorLike$1(error)) {
59457
+ if (isErrorLike$2(error)) {
59429
59458
  return error;
59430
59459
  }
59431
59460
  throw error;
@@ -60162,7 +60191,7 @@ let NetworkManager$1 = class NetworkManager extends EventEmitter {
60162
60191
  this.#networkEnabled = networkEnabled ?? true;
60163
60192
  }
60164
60193
  #canIgnoreError(error) {
60165
- return (isErrorLike$1(error) &&
60194
+ return (isErrorLike$2(error) &&
60166
60195
  (isTargetClosedError(error) ||
60167
60196
  error.message.includes('Not supported') ||
60168
60197
  error.message.includes("wasn't found")));
@@ -60811,7 +60840,7 @@ let FrameManager$1 = class FrameManager extends EventEmitter {
60811
60840
  }
60812
60841
  catch (error) {
60813
60842
  this.#frameTreeHandled?.resolve();
60814
- if (isErrorLike$1(error) && isTargetClosedError(error)) {
60843
+ if (isErrorLike$2(error) && isTargetClosedError(error)) {
60815
60844
  return;
60816
60845
  }
60817
60846
  throw error;
@@ -62008,7 +62037,7 @@ class Tracing {
62008
62037
  contentDeferred.resolve(typedArray ?? undefined);
62009
62038
  }
62010
62039
  catch (error) {
62011
- if (isErrorLike$1(error)) {
62040
+ if (isErrorLike$2(error)) {
62012
62041
  contentDeferred.reject(error);
62013
62042
  }
62014
62043
  else {
@@ -62281,7 +62310,7 @@ class CdpPage extends Page {
62281
62310
  await page.setViewport(defaultViewport);
62282
62311
  }
62283
62312
  catch (err) {
62284
- if (isErrorLike$1(err) && isTargetClosedError(err)) {
62313
+ if (isErrorLike$2(err) && isTargetClosedError(err)) {
62285
62314
  debugError(err);
62286
62315
  }
62287
62316
  else {
@@ -62484,7 +62513,7 @@ class CdpPage extends Page {
62484
62513
  ]);
62485
62514
  }
62486
62515
  catch (err) {
62487
- if (isErrorLike$1(err) && isTargetClosedError(err)) {
62516
+ if (isErrorLike$2(err) && isTargetClosedError(err)) {
62488
62517
  debugError(err);
62489
62518
  }
62490
62519
  else {
@@ -62542,6 +62571,10 @@ class CdpPage extends Page {
62542
62571
  async openDevTools() {
62543
62572
  const pageTargetId = this.target()._targetId;
62544
62573
  const browser = this.browser();
62574
+ const devtoolsTargetId = await browser._hasDevToolsTarget(this.target()._targetId);
62575
+ if (devtoolsTargetId) {
62576
+ return await browser._getDevToolsTargetPage(devtoolsTargetId);
62577
+ }
62545
62578
  const devtoolsPage = await browser._createDevToolsPage(pageTargetId);
62546
62579
  return devtoolsPage;
62547
62580
  }
@@ -63390,7 +63423,7 @@ class CdpExtension extends Extension {
63390
63423
  });
63391
63424
  }
63392
63425
  #canIgnoreError(error) {
63393
- return (isErrorLike$1(error) &&
63426
+ return (isErrorLike$2(error) &&
63394
63427
  (isTargetClosedError(error) ||
63395
63428
  error.message.includes('No target with given id found')));
63396
63429
  }
@@ -64433,14 +64466,19 @@ let TargetManager$1 = class TargetManager extends EventEmitter {
64433
64466
  #discoveryFilter = [{}];
64434
64467
  #targetsIdsForInit = new Set();
64435
64468
  #initialAttachDone = false;
64436
- #blockList;
64437
- constructor(connection, targetFactory, targetFilterCallback, waitForInitiallyDiscoveredTargets = true, networkConditions) {
64469
+ #blocklist = [];
64470
+ #allowlist = [];
64471
+ constructor(connection, targetFactory, targetFilterCallback, waitForInitiallyDiscoveredTargets = true, blocklist, allowlist) {
64438
64472
  super();
64473
+ if (blocklist && allowlist) {
64474
+ throw new Error('Cannot specify both blockList and allowList');
64475
+ }
64439
64476
  this.#connection = connection;
64440
64477
  this.#targetFilterCallback = targetFilterCallback;
64441
64478
  this.#targetFactory = targetFactory;
64442
64479
  this.#waitForInitiallyDiscoveredTargets = waitForInitiallyDiscoveredTargets;
64443
- this.#blockList = networkConditions;
64480
+ this.#blocklist = this.#mapPatterns(blocklist);
64481
+ this.#allowlist = this.#mapPatterns(allowlist);
64444
64482
  this.#connection.on('Target.targetCreated', this.#onTargetCreated);
64445
64483
  this.#connection.on('Target.targetDestroyed', this.#onTargetDestroyed);
64446
64484
  this.#connection.on('Target.targetInfoChanged', this.#onTargetInfoChanged);
@@ -64677,40 +64715,69 @@ let TargetManager$1 = class TargetManager extends EventEmitter {
64677
64715
  this.emit("targetGone" , target);
64678
64716
  };
64679
64717
  #isUrlAllowed = (url) => {
64680
- if (!this.#blockList) {
64718
+ if (this.#blocklist.length === 0 && this.#allowlist.length === 0) {
64681
64719
  return true;
64682
64720
  }
64683
64721
  if (!url || url === 'about:blank') {
64684
64722
  return true;
64685
64723
  }
64686
- for (const rule of this.#blockList) {
64687
- try {
64688
- const pattern = new Y(rule);
64689
- if (pattern.test(url)) {
64690
- return false;
64691
- }
64724
+ for (const item of this.#blocklist) {
64725
+ if (item.pattern.test(url)) {
64726
+ return false;
64692
64727
  }
64693
- catch {
64694
- debugError(`Invalid URL pattern: ${rule}`);
64728
+ }
64729
+ if (this.#allowlist.length > 0) {
64730
+ for (const item of this.#allowlist) {
64731
+ if (item.pattern.test(url)) {
64732
+ return true;
64733
+ }
64695
64734
  }
64735
+ return false;
64696
64736
  }
64697
64737
  return true;
64698
64738
  };
64739
+ #mapPatterns(rules) {
64740
+ const result = [];
64741
+ for (const rule of rules ?? []) {
64742
+ result.push({ pattern: new Y(rule), rule });
64743
+ }
64744
+ return result;
64745
+ }
64699
64746
  #maybeSetupNetworkConditions = async (session) => {
64700
- if (!this.#blockList?.length) {
64747
+ if (this.#blocklist.length === 0 && this.#allowlist.length === 0) {
64701
64748
  return;
64702
64749
  }
64703
- const matchedNetworkConditions = this.#blockList.map(pattern => {
64704
- return {
64705
- urlPattern: pattern,
64750
+ const matchedNetworkConditions = [];
64751
+ for (const item of this.#blocklist) {
64752
+ matchedNetworkConditions.push({
64753
+ urlPattern: item.rule,
64754
+ offline: true,
64706
64755
  latency: 0,
64707
64756
  downloadThroughput: -1,
64708
64757
  uploadThroughput: -1,
64709
- };
64710
- });
64758
+ });
64759
+ }
64760
+ if (this.#allowlist.length > 0) {
64761
+ for (const item of this.#allowlist) {
64762
+ matchedNetworkConditions.push({
64763
+ urlPattern: item.rule,
64764
+ offline: false,
64765
+ latency: 0,
64766
+ downloadThroughput: -1,
64767
+ uploadThroughput: -1,
64768
+ });
64769
+ }
64770
+ matchedNetworkConditions.push({
64771
+ urlPattern: '',
64772
+ offline: true,
64773
+ latency: 0,
64774
+ downloadThroughput: -1,
64775
+ uploadThroughput: -1,
64776
+ });
64777
+ }
64711
64778
  await session.send('Network.emulateNetworkConditionsByRule', {
64779
+ offline: this.#blocklist.length > 0 ? true : undefined,
64712
64780
  matchedNetworkConditions,
64713
- offline: true,
64714
64781
  });
64715
64782
  };
64716
64783
  };
@@ -64725,8 +64792,15 @@ function isDevToolsPageTarget(url) {
64725
64792
  }
64726
64793
  class CdpBrowser extends Browser$1 {
64727
64794
  protocol = 'cdp';
64728
- static async _create(connection, contextIds, acceptInsecureCerts, defaultViewport, downloadBehavior, process, closeCallback, targetFilterCallback, isPageTargetCallback, waitForInitiallyDiscoveredTargets = true, networkEnabled = true, issuesEnabled = true, handleDevToolsAsPage = false, blockList) {
64729
- const browser = new CdpBrowser(connection, contextIds, defaultViewport, process, closeCallback, targetFilterCallback, isPageTargetCallback, waitForInitiallyDiscoveredTargets, networkEnabled, issuesEnabled, handleDevToolsAsPage, blockList);
64795
+ static async _create(connection, contextIds, acceptInsecureCerts, defaultViewport, downloadBehavior, process, closeCallback, targetFilterCallback, isPageTargetCallback, waitForInitiallyDiscoveredTargets = true, networkEnabled = true, issuesEnabled = true, handleDevToolsAsPage = false, blocklist, allowlist) {
64796
+ const browser = new CdpBrowser(connection, contextIds, defaultViewport, process, closeCallback, targetFilterCallback, isPageTargetCallback, waitForInitiallyDiscoveredTargets, networkEnabled, issuesEnabled, handleDevToolsAsPage, blocklist, allowlist);
64797
+ if (allowlist) {
64798
+ const version = await browser.#getVersion();
64799
+ const majorVersion = parseInt(version.product.match(/\d+/)?.[0] ?? '0', 10);
64800
+ if (majorVersion < 149) {
64801
+ throw new Error('The allowlist option require Chrome 149 or greater.');
64802
+ }
64803
+ }
64730
64804
  if (acceptInsecureCerts) {
64731
64805
  await connection.send('Security.setIgnoreCertificateErrors', {
64732
64806
  ignore: true,
@@ -64748,7 +64822,7 @@ class CdpBrowser extends Browser$1 {
64748
64822
  #targetManager;
64749
64823
  #handleDevToolsAsPage = false;
64750
64824
  #extensions = new Map();
64751
- constructor(connection, contextIds, defaultViewport, process, closeCallback, targetFilterCallback, isPageTargetCallback, waitForInitiallyDiscoveredTargets = true, networkEnabled = true, issuesEnabled = true, handleDevToolsAsPage = false, networkConditions) {
64825
+ constructor(connection, contextIds, defaultViewport, process, closeCallback, targetFilterCallback, isPageTargetCallback, waitForInitiallyDiscoveredTargets = true, networkEnabled = true, issuesEnabled = true, handleDevToolsAsPage = false, blocklist, allowlist) {
64752
64826
  super();
64753
64827
  this.#networkEnabled = networkEnabled;
64754
64828
  this.#issuesEnabled = issuesEnabled;
@@ -64763,7 +64837,7 @@ class CdpBrowser extends Browser$1 {
64763
64837
  });
64764
64838
  this.#handleDevToolsAsPage = handleDevToolsAsPage;
64765
64839
  this.#setIsPageTargetCallback(isPageTargetCallback);
64766
- this.#targetManager = new TargetManager$1(connection, this.#createTarget, this.#targetFilterCallback, waitForInitiallyDiscoveredTargets, networkConditions);
64840
+ this.#targetManager = new TargetManager$1(connection, this.#createTarget, this.#targetFilterCallback, waitForInitiallyDiscoveredTargets, blocklist, allowlist);
64767
64841
  this.#defaultContext = new CdpBrowserContext(this.#connection, this);
64768
64842
  for (const contextId of contextIds) {
64769
64843
  this.#contexts.set(contextId, new CdpBrowserContext(this.#connection, this, contextId));
@@ -64931,20 +65005,23 @@ class CdpBrowser extends Browser$1 {
64931
65005
  const openDevToolsResponse = await this.#connection.send('Target.openDevTools', {
64932
65006
  targetId: pageTargetId,
64933
65007
  });
65008
+ return await this._getDevToolsTargetPage(openDevToolsResponse.targetId);
65009
+ }
65010
+ async _getDevToolsTargetPage(devtoolsTargetId) {
64934
65011
  const target = (await this.waitForTarget(t => {
64935
- return t._targetId === openDevToolsResponse.targetId;
65012
+ return t._targetId === devtoolsTargetId;
64936
65013
  }));
64937
65014
  if (!target) {
64938
- throw new Error(`Missing target for DevTools page (id = ${pageTargetId})`);
65015
+ throw new Error(`Missing target for DevTools page (id = ${devtoolsTargetId})`);
64939
65016
  }
64940
65017
  const initialized = (await target._initializedDeferred.valueOrThrow()) ===
64941
65018
  InitializationStatus.SUCCESS;
64942
65019
  if (!initialized) {
64943
- throw new Error(`Failed to create target for DevTools page (id = ${pageTargetId})`);
65020
+ throw new Error(`Failed to create target for DevTools page (id = ${devtoolsTargetId})`);
64944
65021
  }
64945
65022
  const page = await target.page();
64946
65023
  if (!page) {
64947
- throw new Error(`Failed to create a DevTools Page for target (id = ${pageTargetId})`);
65024
+ throw new Error(`Failed to create a DevTools Page for target (id = ${devtoolsTargetId})`);
64948
65025
  }
64949
65026
  return page;
64950
65027
  }
@@ -65079,13 +65156,13 @@ class CdpBrowser extends Browser$1 {
65079
65156
  * SPDX-License-Identifier: Apache-2.0
65080
65157
  */
65081
65158
  async function _connectToCdpBrowser(connectionTransport, url, options) {
65082
- const { acceptInsecureCerts = false, networkEnabled = true, issuesEnabled = true, defaultViewport = DEFAULT_VIEWPORT, downloadBehavior, targetFilter, _isPageTarget: isPageTarget, slowMo = 0, protocolTimeout, handleDevToolsAsPage, idGenerator = createIncrementalIdGenerator(), blockList, } = options;
65159
+ const { acceptInsecureCerts = false, networkEnabled = true, issuesEnabled = true, defaultViewport = DEFAULT_VIEWPORT, downloadBehavior, targetFilter, _isPageTarget: isPageTarget, slowMo = 0, protocolTimeout, handleDevToolsAsPage, idGenerator = createIncrementalIdGenerator(), blocklist, allowlist, } = options;
65083
65160
  const connection = new Connection(url, connectionTransport, slowMo, protocolTimeout,
65084
65161
  false, idGenerator);
65085
65162
  const { browserContextIds } = await connection.send('Target.getBrowserContexts');
65086
65163
  const browser = await CdpBrowser._create(connection, browserContextIds, acceptInsecureCerts, defaultViewport, downloadBehavior, undefined, () => {
65087
65164
  return connection.send('Browser.close').catch(debugError);
65088
- }, targetFilter, isPageTarget, undefined, networkEnabled, issuesEnabled, handleDevToolsAsPage, blockList);
65165
+ }, targetFilter, isPageTarget, undefined, networkEnabled, issuesEnabled, handleDevToolsAsPage, blocklist, allowlist);
65089
65166
  return browser;
65090
65167
  }
65091
65168
 
@@ -66813,6 +66890,9 @@ const getWebSocketTransportClass = async () => {
66813
66890
  .BrowserWebSocketTransport;
66814
66891
  };
66815
66892
  async function _connectToBrowser(options) {
66893
+ if (options.blocklist && options.allowlist) {
66894
+ throw new Error('Cannot specify both blocklist and allowlist');
66895
+ }
66816
66896
  const { connectionTransport, endpointUrl } = await getConnectionTransport(options);
66817
66897
  if (options.protocol === 'webDriverBiDi') {
66818
66898
  const bidiBrowser = await _connectToBiDiBrowser(connectionTransport, endpointUrl, options);
@@ -66906,7 +66986,7 @@ async function getWSEndpoint(browserURL) {
66906
66986
  return data.webSocketDebuggerUrl;
66907
66987
  }
66908
66988
  catch (error) {
66909
- if (isErrorLike$1(error)) {
66989
+ if (isErrorLike$2(error)) {
66910
66990
  error.message =
66911
66991
  `Failed to fetch browser webSocket URL from ${endpointURL}: ` +
66912
66992
  error.message;
@@ -66951,9 +67031,9 @@ class Puppeteer {
66951
67031
  * SPDX-License-Identifier: Apache-2.0
66952
67032
  */
66953
67033
  const PUPPETEER_REVISIONS = Object.freeze({
66954
- chrome: '147.0.7727.57',
66955
- 'chrome-headless-shell': '147.0.7727.57',
66956
- firefox: 'stable_149.0.2',
67034
+ chrome: '148.0.7778.97',
67035
+ 'chrome-headless-shell': '148.0.7778.97',
67036
+ firefox: 'stable_150.0.1',
66957
67037
  });
66958
67038
 
66959
67039
  /**
@@ -95003,7 +95083,7 @@ class Process {
95003
95083
  }
95004
95084
  }
95005
95085
  catch (error) {
95006
- throw new Error(`${PROCESS_ERROR_EXPLANATION}\nError cause: ${isErrorLike(error) ? error.stack : error}`);
95086
+ throw new Error(`${PROCESS_ERROR_EXPLANATION}\nError cause: ${isErrorLike$1(error) ? error.stack : error}`);
95007
95087
  }
95008
95088
  }
95009
95089
  this.#clearListeners();
@@ -95099,11 +95179,11 @@ function pidExists(pid) {
95099
95179
  throw error;
95100
95180
  }
95101
95181
  }
95102
- function isErrorLike(obj) {
95182
+ function isErrorLike$1(obj) {
95103
95183
  return (typeof obj === 'object' && obj !== null && 'name' in obj && 'message' in obj);
95104
95184
  }
95105
95185
  function isErrnoException(obj) {
95106
- return (isErrorLike(obj) &&
95186
+ return (isErrorLike$1(obj) &&
95107
95187
  ('errno' in obj || 'code' in obj || 'path' in obj || 'syscall' in obj));
95108
95188
  }
95109
95189
  class TimeoutError extends Error {
@@ -95465,12 +95545,12 @@ function requirePermessageDeflate () {
95465
95545
  const kError = Symbol('error');
95466
95546
  let zlibLimiter;
95467
95547
  class PerMessageDeflate {
95468
- constructor(options, isServer, maxPayload) {
95469
- this._maxPayload = maxPayload | 0;
95548
+ constructor(options) {
95470
95549
  this._options = options || {};
95471
95550
  this._threshold =
95472
95551
  this._options.threshold !== undefined ? this._options.threshold : 1024;
95473
- this._isServer = !!isServer;
95552
+ this._maxPayload = this._options.maxPayload | 0;
95553
+ this._isServer = !!this._options.isServer;
95474
95554
  this._deflate = null;
95475
95555
  this._inflate = null;
95476
95556
  this.params = null;
@@ -97458,7 +97538,7 @@ function requireWebsocket () {
97458
97538
  } else {
97459
97539
  try {
97460
97540
  parsedUrl = new URL(address);
97461
- } catch (e) {
97541
+ } catch {
97462
97542
  throw new SyntaxError(`Invalid URL: ${address}`);
97463
97543
  }
97464
97544
  }
@@ -97511,11 +97591,11 @@ function requireWebsocket () {
97511
97591
  opts.path = parsedUrl.pathname + parsedUrl.search;
97512
97592
  opts.timeout = opts.handshakeTimeout;
97513
97593
  if (opts.perMessageDeflate) {
97514
- perMessageDeflate = new PerMessageDeflate(
97515
- opts.perMessageDeflate !== true ? opts.perMessageDeflate : {},
97516
- false,
97517
- opts.maxPayload
97518
- );
97594
+ perMessageDeflate = new PerMessageDeflate({
97595
+ ...opts.perMessageDeflate,
97596
+ isServer: false,
97597
+ maxPayload: opts.maxPayload
97598
+ });
97519
97599
  opts.headers['Sec-WebSocket-Extensions'] = format({
97520
97600
  [PerMessageDeflate.extensionName]: perMessageDeflate.offer()
97521
97601
  });
@@ -97978,13 +98058,14 @@ function requireStream () {
97978
98058
 
97979
98059
  requireStream();
97980
98060
 
98061
+ requireExtension();
98062
+
98063
+ requirePermessageDeflate();
98064
+
97981
98065
  requireReceiver();
97982
98066
 
97983
98067
  requireSender();
97984
98068
 
97985
- var websocketExports = requireWebsocket();
97986
- var WebSocket$1 = /*@__PURE__*/getDefaultExportFromCjs(websocketExports);
97987
-
97988
98069
  var subprotocol;
97989
98070
  var hasRequiredSubprotocol;
97990
98071
 
@@ -98035,6 +98116,11 @@ function requireSubprotocol () {
98035
98116
  return subprotocol;
98036
98117
  }
98037
98118
 
98119
+ requireSubprotocol();
98120
+
98121
+ var websocketExports = requireWebsocket();
98122
+ var WebSocket$1 = /*@__PURE__*/getDefaultExportFromCjs(websocketExports);
98123
+
98038
98124
  var websocketServer;
98039
98125
  var hasRequiredWebsocketServer;
98040
98126
 
@@ -98221,11 +98307,11 @@ function requireWebsocketServer () {
98221
98307
  this.options.perMessageDeflate &&
98222
98308
  secWebSocketExtensions !== undefined
98223
98309
  ) {
98224
- const perMessageDeflate = new PerMessageDeflate(
98225
- this.options.perMessageDeflate,
98226
- true,
98227
- this.options.maxPayload
98228
- );
98310
+ const perMessageDeflate = new PerMessageDeflate({
98311
+ ...this.options.perMessageDeflate,
98312
+ isServer: true,
98313
+ maxPayload: this.options.maxPayload
98314
+ });
98229
98315
  try {
98230
98316
  const offers = extension.parse(secWebSocketExtensions);
98231
98317
  if (offers[PerMessageDeflate.extensionName]) {
@@ -98509,7 +98595,10 @@ class BrowserLauncher {
98509
98595
  return this.#browser;
98510
98596
  }
98511
98597
  async launch(options = {}) {
98512
- const { dumpio = false, enableExtensions = false, env = process.env, handleSIGINT = true, handleSIGTERM = true, handleSIGHUP = true, acceptInsecureCerts = false, networkEnabled = true, issuesEnabled = true, defaultViewport = DEFAULT_VIEWPORT, downloadBehavior, slowMo = 0, timeout = 30000, waitForInitialPage = true, protocolTimeout, handleDevToolsAsPage, idGenerator = createIncrementalIdGenerator(), blockList, } = options;
98598
+ if (options.blocklist && options.allowlist) {
98599
+ throw new Error('Cannot specify both blocklist and allowlist');
98600
+ }
98601
+ const { dumpio = false, enableExtensions = false, env = process.env, handleSIGINT = true, handleSIGTERM = true, handleSIGHUP = true, acceptInsecureCerts = false, networkEnabled = true, issuesEnabled = true, defaultViewport = DEFAULT_VIEWPORT, downloadBehavior, slowMo = 0, timeout = 30000, waitForInitialPage = true, protocolTimeout, handleDevToolsAsPage, idGenerator = createIncrementalIdGenerator(), blocklist, allowlist, } = options;
98513
98602
  let { protocol } = options;
98514
98603
  if (this.#browser === 'firefox' && protocol === undefined) {
98515
98604
  protocol = 'webDriverBiDi';
@@ -98595,7 +98684,7 @@ class BrowserLauncher {
98595
98684
  });
98596
98685
  }
98597
98686
  else {
98598
- browser = await CdpBrowser._create(cdpConnection, [], acceptInsecureCerts, defaultViewport, downloadBehavior, browserProcess.nodeProcess, browserCloseCallback, options.targetFilter, undefined, undefined, networkEnabled, issuesEnabled, handleDevToolsAsPage, blockList);
98687
+ browser = await CdpBrowser._create(cdpConnection, [], acceptInsecureCerts, defaultViewport, downloadBehavior, browserProcess.nodeProcess, browserCloseCallback, options.targetFilter, undefined, undefined, networkEnabled, issuesEnabled, handleDevToolsAsPage, blocklist, allowlist);
98599
98688
  }
98600
98689
  }
98601
98690
  }
@@ -98887,6 +98976,7 @@ class ChromeLauncher extends BrowserLauncher {
98887
98976
  'AcceptCHFrame',
98888
98977
  'MediaRouter',
98889
98978
  'OptimizationHints',
98979
+ 'WebUIReloadButton',
98890
98980
  ...(turnOnExperimentalFeaturesForTesting
98891
98981
  ? []
98892
98982
  : [
@@ -99567,9 +99657,7 @@ var ExperimentName;
99567
99657
  ExperimentName["CAPTURE_NODE_CREATION_STACKS"] = "capture-node-creation-stacks";
99568
99658
  ExperimentName["LIVE_HEAP_PROFILE"] = "live-heap-profile";
99569
99659
  ExperimentName["PROTOCOL_MONITOR"] = "protocol-monitor";
99570
- ExperimentName["SAMPLING_HEAP_PROFILER_TIMELINE"] = "sampling-heap-profiler-timeline";
99571
99660
  ExperimentName["TIMELINE_INVALIDATION_TRACKING"] = "timeline-invalidation-tracking";
99572
- ExperimentName["APCA"] = "apca";
99573
99661
  ExperimentName["FONT_EDITOR"] = "font-editor";
99574
99662
  ExperimentName["INSTRUMENTATION_BREAKPOINTS"] = "instrumentation-breakpoints";
99575
99663
  ExperimentName["USE_SOURCE_MAP_SCOPES"] = "use-source-map-scopes";
@@ -99634,8 +99722,13 @@ function decode$1(input) {
99634
99722
  }
99635
99723
  return bytes;
99636
99724
  }
99637
- function encode(input) {
99638
- return new Promise((resolve, reject) => {
99725
+ async function encode(input) {
99726
+ if (typeof FileReader === 'undefined') {
99727
+ const blob = new Blob([input]);
99728
+ const arrayBuffer = await blob.arrayBuffer();
99729
+ return globalThis.Buffer.from(arrayBuffer).toString('base64');
99730
+ }
99731
+ return await new Promise((resolve, reject) => {
99639
99732
  const reader = new FileReader();
99640
99733
  reader.onerror = () => reject(new Error('failed to convert to base64: internal error'));
99641
99734
  reader.onload = () => {
@@ -99818,8 +99911,8 @@ const EmptyUrlString = '';
99818
99911
 
99819
99912
  // Copyright 2025 The Chromium Authors
99820
99913
  class WebWorkerScope {
99821
- postMessage(message) {
99822
- self.postMessage(message);
99914
+ postMessage(message, transfer) {
99915
+ self.postMessage(message, transfer);
99823
99916
  }
99824
99917
  set onmessage(listener) {
99825
99918
  self.addEventListener('message', listener);
@@ -99876,6 +99969,15 @@ const HOST_RUNTIME$2 = {
99876
99969
  return new WebWorker(url);
99877
99970
  },
99878
99971
  workerScope: new WebWorkerScope(),
99972
+ getOnLine() {
99973
+ return navigator.onLine;
99974
+ },
99975
+ getUserAgent() {
99976
+ return navigator.userAgent;
99977
+ },
99978
+ getLocalStorage() {
99979
+ return 'localStorage' in globalThis ? globalThis.localStorage : undefined;
99980
+ },
99879
99981
  };
99880
99982
 
99881
99983
  var HostRuntime$1 = /*#__PURE__*/Object.freeze({
@@ -99892,8 +99994,8 @@ var browser = /*#__PURE__*/Object.freeze({
99892
99994
 
99893
99995
  // Copyright 2025 The Chromium Authors
99894
99996
  class NodeWorkerScope {
99895
- postMessage(message) {
99896
- WorkerThreads.parentPort?.postMessage(message);
99997
+ postMessage(message, transfer) {
99998
+ WorkerThreads.parentPort?.postMessage(message, transfer);
99897
99999
  }
99898
100000
  set onmessage(listener) {
99899
100001
  WorkerThreads.parentPort?.addEventListener('message', msg => {
@@ -99958,6 +100060,15 @@ const HOST_RUNTIME$1 = {
99958
100060
  return new NodeWorker(url);
99959
100061
  },
99960
100062
  workerScope: new NodeWorkerScope(),
100063
+ getOnLine() {
100064
+ return true;
100065
+ },
100066
+ getUserAgent() {
100067
+ return 'Node.js';
100068
+ },
100069
+ getLocalStorage() {
100070
+ return undefined;
100071
+ },
99961
100072
  };
99962
100073
 
99963
100074
  var HostRuntime = /*#__PURE__*/Object.freeze({
@@ -102941,6 +103052,9 @@ function eventMixin(base) {
102941
103052
  }
102942
103053
  dispatchEventToListeners(eventType, ...eventData) {
102943
103054
  this.__events.dispatchEventToListeners(eventType, ...eventData);
103055
+ if (typeof this.dispatchDOMEvent === 'function') {
103056
+ this.dispatchDOMEvent(new CustomEvent(eventType, { detail: eventData[0] }));
103057
+ }
102944
103058
  }
102945
103059
  };
102946
103060
  }
@@ -104955,13 +105069,13 @@ function getAllSupportedDevToolsLocales() {
104955
105069
  return [...i18nInstance.supportedLocales];
104956
105070
  }
104957
105071
  function getLocaleFetchUrl(locale, location) {
104958
- undefined(location);
104959
105072
  const path = LOCAL_FETCH_PATTERN.replace('@LOCALE@', locale);
104960
105073
  return new URL(path, import.meta.url).toString();
104961
105074
  }
104962
- async function fetchAndRegisterLocaleData(locale, location = self.location.toString()) {
104963
- const localeDataTextPromise = fetch(getLocaleFetchUrl(locale, location)).then(result => result.json());
104964
- const timeoutPromise = new Promise((_, reject) => window.setTimeout(() => reject(new Error('timed out fetching locale')), 5000));
105075
+ async function fetchAndRegisterLocaleData(locale,
105076
+ location = globalThis.location?.toString() ?? '') {
105077
+ const localeDataTextPromise = fetch(getLocaleFetchUrl(locale)).then(result => result.json());
105078
+ const timeoutPromise = new Promise((_, reject) => globalThis.setTimeout(() => reject(new Error('timed out fetching locale')), 5000));
104965
105079
  const localeData = await Promise.race([timeoutPromise, localeDataTextPromise]);
104966
105080
  i18nInstance.registerLocaleData(locale, localeData);
104967
105081
  }
@@ -106837,7 +106951,7 @@ class VersionController {
106837
106951
  static GLOBAL_VERSION_SETTING_NAME = 'inspectorVersion';
106838
106952
  static SYNCED_VERSION_SETTING_NAME = 'syncedInspectorVersion';
106839
106953
  static LOCAL_VERSION_SETTING_NAME = 'localInspectorVersion';
106840
- static CURRENT_VERSION = 43;
106954
+ static CURRENT_VERSION = 44;
106841
106955
  #settings;
106842
106956
  #globalVersionSetting;
106843
106957
  #syncedVersionSetting;
@@ -107452,6 +107566,20 @@ class VersionController {
107452
107566
  }
107453
107567
  }
107454
107568
  }
107569
+ updateVersionFrom43To44() {
107570
+ const apcaExperimentEnabled = experiments.getValueFromStorage('apca');
107571
+ if (apcaExperimentEnabled !== undefined) {
107572
+ if (this.#settings.syncedStorage.has('apca')) {
107573
+ return;
107574
+ }
107575
+ try {
107576
+ const apcaSetting = this.#settings.moduleSetting('apca');
107577
+ apcaSetting.set(apcaExperimentEnabled);
107578
+ }
107579
+ catch {
107580
+ }
107581
+ }
107582
+ }
107455
107583
  migrateSettingsFromLocalStorage() {
107456
107584
  const localSettings = new Set([
107457
107585
  'advancedSearchConfig',
@@ -108590,6 +108718,7 @@ const UIStrings$19 = {
108590
108718
  enableCssSourceMaps: 'Enable CSS source maps',
108591
108719
  disableCssSourceMaps: 'Disable CSS source maps',
108592
108720
  logXmlhttprequests: 'Log XMLHttpRequests',
108721
+ apca: 'Advanced Perceptual Contrast Algorithm (APCA) replacing previous contrast ratio and AA/AAA guidelines',
108593
108722
  };
108594
108723
  const str_$18 = registerUIStrings('core/sdk/sdk-meta.ts', UIStrings$19);
108595
108724
  const i18nLazyString$f = getLazilyComputedLocalizedString.bind(undefined, str_$18);
@@ -108699,6 +108828,14 @@ registerSettingExtension({
108699
108828
  ],
108700
108829
  defaultValue: false,
108701
108830
  });
108831
+ registerSettingExtension({
108832
+ category: "ELEMENTS" ,
108833
+ storageType: "Synced" ,
108834
+ title: i18nLazyString$f(UIStrings$19.apca),
108835
+ settingName: 'apca',
108836
+ settingType: "boolean" ,
108837
+ defaultValue: false,
108838
+ });
108702
108839
  registerSettingExtension({
108703
108840
  category: "GRID" ,
108704
108841
  storageType: "Synced" ,
@@ -110385,7 +110522,7 @@ function registerCommands(inspectorBackend) {
110385
110522
  inspectorBackend.registerEnum("Audits.SRIMessageSignatureError", { MissingSignatureHeader: "MissingSignatureHeader", MissingSignatureInputHeader: "MissingSignatureInputHeader", InvalidSignatureHeader: "InvalidSignatureHeader", InvalidSignatureInputHeader: "InvalidSignatureInputHeader", SignatureHeaderValueIsNotByteSequence: "SignatureHeaderValueIsNotByteSequence", SignatureHeaderValueIsParameterized: "SignatureHeaderValueIsParameterized", SignatureHeaderValueIsIncorrectLength: "SignatureHeaderValueIsIncorrectLength", SignatureInputHeaderMissingLabel: "SignatureInputHeaderMissingLabel", SignatureInputHeaderValueNotInnerList: "SignatureInputHeaderValueNotInnerList", SignatureInputHeaderValueMissingComponents: "SignatureInputHeaderValueMissingComponents", SignatureInputHeaderInvalidComponentType: "SignatureInputHeaderInvalidComponentType", SignatureInputHeaderInvalidComponentName: "SignatureInputHeaderInvalidComponentName", SignatureInputHeaderInvalidHeaderComponentParameter: "SignatureInputHeaderInvalidHeaderComponentParameter", SignatureInputHeaderInvalidDerivedComponentParameter: "SignatureInputHeaderInvalidDerivedComponentParameter", SignatureInputHeaderKeyIdLength: "SignatureInputHeaderKeyIdLength", SignatureInputHeaderInvalidParameter: "SignatureInputHeaderInvalidParameter", SignatureInputHeaderMissingRequiredParameters: "SignatureInputHeaderMissingRequiredParameters", ValidationFailedSignatureExpired: "ValidationFailedSignatureExpired", ValidationFailedInvalidLength: "ValidationFailedInvalidLength", ValidationFailedSignatureMismatch: "ValidationFailedSignatureMismatch", ValidationFailedIntegrityMismatch: "ValidationFailedIntegrityMismatch" });
110386
110523
  inspectorBackend.registerEnum("Audits.UnencodedDigestError", { MalformedDictionary: "MalformedDictionary", UnknownAlgorithm: "UnknownAlgorithm", IncorrectDigestType: "IncorrectDigestType", IncorrectDigestLength: "IncorrectDigestLength" });
110387
110524
  inspectorBackend.registerEnum("Audits.ConnectionAllowlistError", { InvalidHeader: "InvalidHeader", MoreThanOneList: "MoreThanOneList", ItemNotInnerList: "ItemNotInnerList", InvalidAllowlistItemType: "InvalidAllowlistItemType", ReportingEndpointNotToken: "ReportingEndpointNotToken", InvalidUrlPattern: "InvalidUrlPattern" });
110388
- inspectorBackend.registerEnum("Audits.GenericIssueErrorType", { FormLabelForNameError: "FormLabelForNameError", FormDuplicateIdForInputError: "FormDuplicateIdForInputError", FormInputWithNoLabelError: "FormInputWithNoLabelError", FormAutocompleteAttributeEmptyError: "FormAutocompleteAttributeEmptyError", FormEmptyIdAndNameAttributesForInputError: "FormEmptyIdAndNameAttributesForInputError", FormAriaLabelledByToNonExistingIdError: "FormAriaLabelledByToNonExistingIdError", FormInputAssignedAutocompleteValueToIdOrNameAttributeError: "FormInputAssignedAutocompleteValueToIdOrNameAttributeError", FormLabelHasNeitherForNorNestedInputError: "FormLabelHasNeitherForNorNestedInputError", FormLabelForMatchesNonExistingIdError: "FormLabelForMatchesNonExistingIdError", FormInputHasWrongButWellIntendedAutocompleteValueError: "FormInputHasWrongButWellIntendedAutocompleteValueError", ResponseWasBlockedByORB: "ResponseWasBlockedByORB", NavigationEntryMarkedSkippable: "NavigationEntryMarkedSkippable", AutofillAndManualTextPolicyControlledFeaturesInfo: "AutofillAndManualTextPolicyControlledFeaturesInfo", AutofillPolicyControlledFeatureInfo: "AutofillPolicyControlledFeatureInfo", ManualTextPolicyControlledFeatureInfo: "ManualTextPolicyControlledFeatureInfo", FormModelContextParameterMissingTitleAndDescription: "FormModelContextParameterMissingTitleAndDescription" });
110525
+ inspectorBackend.registerEnum("Audits.GenericIssueErrorType", { FormLabelForNameError: "FormLabelForNameError", FormDuplicateIdForInputError: "FormDuplicateIdForInputError", FormInputWithNoLabelError: "FormInputWithNoLabelError", FormAutocompleteAttributeEmptyError: "FormAutocompleteAttributeEmptyError", FormEmptyIdAndNameAttributesForInputError: "FormEmptyIdAndNameAttributesForInputError", FormAriaLabelledByToNonExistingIdError: "FormAriaLabelledByToNonExistingIdError", FormInputAssignedAutocompleteValueToIdOrNameAttributeError: "FormInputAssignedAutocompleteValueToIdOrNameAttributeError", FormLabelHasNeitherForNorNestedInputError: "FormLabelHasNeitherForNorNestedInputError", FormLabelForMatchesNonExistingIdError: "FormLabelForMatchesNonExistingIdError", FormInputHasWrongButWellIntendedAutocompleteValueError: "FormInputHasWrongButWellIntendedAutocompleteValueError", ResponseWasBlockedByORB: "ResponseWasBlockedByORB", NavigationEntryMarkedSkippable: "NavigationEntryMarkedSkippable", AutofillAndManualTextPolicyControlledFeaturesInfo: "AutofillAndManualTextPolicyControlledFeaturesInfo", AutofillPolicyControlledFeatureInfo: "AutofillPolicyControlledFeatureInfo", ManualTextPolicyControlledFeatureInfo: "ManualTextPolicyControlledFeatureInfo", FormModelContextParameterMissingTitleAndDescription: "FormModelContextParameterMissingTitleAndDescription", FormModelContextMissingToolName: "FormModelContextMissingToolName", FormModelContextMissingToolDescription: "FormModelContextMissingToolDescription", FormModelContextRequiredParameterMissingName: "FormModelContextRequiredParameterMissingName", FormModelContextParameterMissingName: "FormModelContextParameterMissingName" });
110389
110526
  inspectorBackend.registerEnum("Audits.ClientHintIssueReason", { MetaTagAllowListInvalidOrigin: "MetaTagAllowListInvalidOrigin", MetaTagModifiedHTML: "MetaTagModifiedHTML" });
110390
110527
  inspectorBackend.registerEnum("Audits.FederatedAuthRequestIssueReason", { ShouldEmbargo: "ShouldEmbargo", TooManyRequests: "TooManyRequests", WellKnownHttpNotFound: "WellKnownHttpNotFound", WellKnownNoResponse: "WellKnownNoResponse", WellKnownInvalidResponse: "WellKnownInvalidResponse", WellKnownListEmpty: "WellKnownListEmpty", WellKnownInvalidContentType: "WellKnownInvalidContentType", ConfigNotInWellKnown: "ConfigNotInWellKnown", WellKnownTooBig: "WellKnownTooBig", ConfigHttpNotFound: "ConfigHttpNotFound", ConfigNoResponse: "ConfigNoResponse", ConfigInvalidResponse: "ConfigInvalidResponse", ConfigInvalidContentType: "ConfigInvalidContentType", IdpNotPotentiallyTrustworthy: "IdpNotPotentiallyTrustworthy", DisabledInSettings: "DisabledInSettings", DisabledInFlags: "DisabledInFlags", ErrorFetchingSignin: "ErrorFetchingSignin", InvalidSigninResponse: "InvalidSigninResponse", AccountsHttpNotFound: "AccountsHttpNotFound", AccountsNoResponse: "AccountsNoResponse", AccountsInvalidResponse: "AccountsInvalidResponse", AccountsListEmpty: "AccountsListEmpty", AccountsInvalidContentType: "AccountsInvalidContentType", IdTokenHttpNotFound: "IdTokenHttpNotFound", IdTokenNoResponse: "IdTokenNoResponse", IdTokenInvalidResponse: "IdTokenInvalidResponse", IdTokenIdpErrorResponse: "IdTokenIdpErrorResponse", IdTokenCrossSiteIdpErrorResponse: "IdTokenCrossSiteIdpErrorResponse", IdTokenInvalidRequest: "IdTokenInvalidRequest", IdTokenInvalidContentType: "IdTokenInvalidContentType", ErrorIdToken: "ErrorIdToken", Canceled: "Canceled", RpPageNotVisible: "RpPageNotVisible", SilentMediationFailure: "SilentMediationFailure", NotSignedInWithIdp: "NotSignedInWithIdp", MissingTransientUserActivation: "MissingTransientUserActivation", ReplacedByActiveMode: "ReplacedByActiveMode", RelyingPartyOriginIsOpaque: "RelyingPartyOriginIsOpaque", TypeNotMatching: "TypeNotMatching", UiDismissedNoEmbargo: "UiDismissedNoEmbargo", CorsError: "CorsError", SuppressedBySegmentationPlatform: "SuppressedBySegmentationPlatform" });
110391
110528
  inspectorBackend.registerEnum("Audits.FederatedAuthUserInfoRequestIssueReason", { NotSameOrigin: "NotSameOrigin", NotIframe: "NotIframe", NotPotentiallyTrustworthy: "NotPotentiallyTrustworthy", NoAPIPermission: "NoApiPermission", NotSignedInWithIdp: "NotSignedInWithIdp", NoAccountSharingPermission: "NoAccountSharingPermission", InvalidConfigOrWellKnown: "InvalidConfigOrWellKnown", InvalidAccountsResponse: "InvalidAccountsResponse", NoReturningUserFromFetchedAccounts: "NoReturningUserFromFetchedAccounts" });
@@ -110633,7 +110770,7 @@ function registerCommands(inspectorBackend) {
110633
110770
  inspectorBackend.registerType("Cast.Sink", [{ "name": "name", "type": "string", "optional": false, "description": "", "typeRef": null }, { "name": "id", "type": "string", "optional": false, "description": "", "typeRef": null }, { "name": "session", "type": "string", "optional": true, "description": "Text describing the current session. Present only if there is an active session on the sink.", "typeRef": null }]);
110634
110771
  inspectorBackend.registerCommand("CrashReportContext.getEntries", [], ["entries"], "Returns all entries in the CrashReportContext across all frames in the page.");
110635
110772
  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" }]);
110636
- inspectorBackend.registerEnum("DOM.PseudoType", { FirstLine: "first-line", FirstLetter: "first-letter", Checkmark: "checkmark", Before: "before", After: "after", ExpandIcon: "expand-icon", PickerIcon: "picker-icon", InterestHint: "interest-hint", 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", PermissionIcon: "permission-icon", OverscrollAreaParent: "overscroll-area-parent" });
110773
+ 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", PermissionIcon: "permission-icon", OverscrollAreaParent: "overscroll-area-parent" });
110637
110774
  inspectorBackend.registerEnum("DOM.ShadowRootType", { UserAgent: "user-agent", Open: "open", Closed: "closed" });
110638
110775
  inspectorBackend.registerEnum("DOM.CompatibilityMode", { QuirksMode: "QuirksMode", LimitedQuirksMode: "LimitedQuirksMode", NoQuirksMode: "NoQuirksMode" });
110639
110776
  inspectorBackend.registerEnum("DOM.PhysicalAxes", { Horizontal: "Horizontal", Vertical: "Vertical", Both: "Both" });
@@ -110853,10 +110990,10 @@ function registerCommands(inspectorBackend) {
110853
110990
  inspectorBackend.registerCommand("EventBreakpoints.removeInstrumentationBreakpoint", [{ "name": "eventName", "type": "string", "optional": false, "description": "Instrumentation name to stop on.", "typeRef": null }], [], "Removes breakpoint on particular native event.");
110854
110991
  inspectorBackend.registerCommand("EventBreakpoints.disable", [], [], "Removes all breakpoints");
110855
110992
  inspectorBackend.registerEnum("Extensions.StorageArea", { Session: "session", Local: "local", Sync: "sync", Managed: "managed" });
110856
- inspectorBackend.registerCommand("Extensions.triggerAction", [{ "name": "id", "type": "string", "optional": false, "description": "Extension id.", "typeRef": null }, { "name": "targetId", "type": "string", "optional": false, "description": "A tab target ID to trigger the default extension action on.", "typeRef": null }], [], "Runs an extension default action. Available if the client is connected using the --remote-debugging-pipe flag and the --enable-unsafe-extension-debugging flag is set.");
110857
- inspectorBackend.registerCommand("Extensions.loadUnpacked", [{ "name": "path", "type": "string", "optional": false, "description": "Absolute file path.", "typeRef": null }, { "name": "enableInIncognito", "type": "boolean", "optional": true, "description": "Enable the extension in incognito", "typeRef": null }], ["id"], "Installs an unpacked extension from the filesystem similar to --load-extension CLI flags. Returns extension ID once the extension has been installed. Available if the client is connected using the --remote-debugging-pipe flag and the --enable-unsafe-extension-debugging flag is set.");
110858
- inspectorBackend.registerCommand("Extensions.getExtensions", [], ["extensions"], "Gets a list of all unpacked extensions. Available if the client is connected using the --remote-debugging-pipe flag and the --enable-unsafe-extension-debugging flag is set.");
110859
- inspectorBackend.registerCommand("Extensions.uninstall", [{ "name": "id", "type": "string", "optional": false, "description": "Extension id.", "typeRef": null }], [], "Uninstalls an unpacked extension (others not supported) from the profile. Available if the client is connected using the --remote-debugging-pipe flag and the --enable-unsafe-extension-debugging.");
110993
+ inspectorBackend.registerCommand("Extensions.triggerAction", [{ "name": "id", "type": "string", "optional": false, "description": "Extension id.", "typeRef": null }, { "name": "targetId", "type": "string", "optional": false, "description": "A tab target ID to trigger the default extension action on.", "typeRef": null }], [], "Runs an extension default action.");
110994
+ inspectorBackend.registerCommand("Extensions.loadUnpacked", [{ "name": "path", "type": "string", "optional": false, "description": "Absolute file path.", "typeRef": null }, { "name": "enableInIncognito", "type": "boolean", "optional": true, "description": "Enable the extension in incognito", "typeRef": null }], ["id"], "Installs an unpacked extension from the filesystem similar to --load-extension CLI flags. Returns extension ID once the extension has been installed.");
110995
+ inspectorBackend.registerCommand("Extensions.getExtensions", [], ["extensions"], "Gets a list of all unpacked extensions.");
110996
+ inspectorBackend.registerCommand("Extensions.uninstall", [{ "name": "id", "type": "string", "optional": false, "description": "Extension id.", "typeRef": null }], [], "Uninstalls an unpacked extension (others not supported) from the profile.");
110860
110997
  inspectorBackend.registerCommand("Extensions.getStorageItems", [{ "name": "id", "type": "string", "optional": false, "description": "ID of extension.", "typeRef": null }, { "name": "storageArea", "type": "string", "optional": false, "description": "StorageArea to retrieve data from.", "typeRef": "Extensions.StorageArea" }, { "name": "keys", "type": "array", "optional": true, "description": "Keys to retrieve.", "typeRef": "string" }], ["data"], "Gets data from extension storage in the given `storageArea`. If `keys` is specified, these are used to filter the result.");
110861
110998
  inspectorBackend.registerCommand("Extensions.removeStorageItems", [{ "name": "id", "type": "string", "optional": false, "description": "ID of extension.", "typeRef": null }, { "name": "storageArea", "type": "string", "optional": false, "description": "StorageArea to remove data from.", "typeRef": "Extensions.StorageArea" }, { "name": "keys", "type": "array", "optional": false, "description": "Keys to remove.", "typeRef": "string" }], [], "Removes `keys` from extension storage in the given `storageArea`.");
110862
110999
  inspectorBackend.registerCommand("Extensions.clearStorageItems", [{ "name": "id", "type": "string", "optional": false, "description": "ID of extension.", "typeRef": null }, { "name": "storageArea", "type": "string", "optional": false, "description": "StorageArea to remove data from.", "typeRef": "Extensions.StorageArea" }], [], "Clears extension storage in the given `storageArea`.");
@@ -111050,8 +111187,8 @@ function registerCommands(inspectorBackend) {
111050
111187
  inspectorBackend.registerEnum("Network.DeviceBoundSessionWithUsageUsage", { NotInScope: "NotInScope", InScopeRefreshNotYetNeeded: "InScopeRefreshNotYetNeeded", InScopeRefreshNotAllowed: "InScopeRefreshNotAllowed", ProactiveRefreshNotPossible: "ProactiveRefreshNotPossible", ProactiveRefreshAttempted: "ProactiveRefreshAttempted", Deferred: "Deferred" });
111051
111188
  inspectorBackend.registerEnum("Network.DeviceBoundSessionUrlRuleRuleType", { Exclude: "Exclude", Include: "Include" });
111052
111189
  inspectorBackend.registerEnum("Network.DeviceBoundSessionFetchResult", { Success: "Success", KeyError: "KeyError", SigningError: "SigningError", ServerRequestedTermination: "ServerRequestedTermination", InvalidSessionId: "InvalidSessionId", InvalidChallenge: "InvalidChallenge", TooManyChallenges: "TooManyChallenges", InvalidFetcherUrl: "InvalidFetcherUrl", InvalidRefreshUrl: "InvalidRefreshUrl", TransientHttpError: "TransientHttpError", ScopeOriginSameSiteMismatch: "ScopeOriginSameSiteMismatch", RefreshUrlSameSiteMismatch: "RefreshUrlSameSiteMismatch", MismatchedSessionId: "MismatchedSessionId", MissingScope: "MissingScope", NoCredentials: "NoCredentials", SubdomainRegistrationWellKnownUnavailable: "SubdomainRegistrationWellKnownUnavailable", SubdomainRegistrationUnauthorized: "SubdomainRegistrationUnauthorized", SubdomainRegistrationWellKnownMalformed: "SubdomainRegistrationWellKnownMalformed", SessionProviderWellKnownUnavailable: "SessionProviderWellKnownUnavailable", RelyingPartyWellKnownUnavailable: "RelyingPartyWellKnownUnavailable", FederatedKeyThumbprintMismatch: "FederatedKeyThumbprintMismatch", InvalidFederatedSessionUrl: "InvalidFederatedSessionUrl", InvalidFederatedKey: "InvalidFederatedKey", TooManyRelyingOriginLabels: "TooManyRelyingOriginLabels", BoundCookieSetForbidden: "BoundCookieSetForbidden", NetError: "NetError", ProxyError: "ProxyError", EmptySessionConfig: "EmptySessionConfig", InvalidCredentialsConfig: "InvalidCredentialsConfig", InvalidCredentialsType: "InvalidCredentialsType", InvalidCredentialsEmptyName: "InvalidCredentialsEmptyName", InvalidCredentialsCookie: "InvalidCredentialsCookie", PersistentHttpError: "PersistentHttpError", RegistrationAttemptedChallenge: "RegistrationAttemptedChallenge", InvalidScopeOrigin: "InvalidScopeOrigin", ScopeOriginContainsPath: "ScopeOriginContainsPath", RefreshInitiatorNotString: "RefreshInitiatorNotString", RefreshInitiatorInvalidHostPattern: "RefreshInitiatorInvalidHostPattern", InvalidScopeSpecification: "InvalidScopeSpecification", MissingScopeSpecificationType: "MissingScopeSpecificationType", EmptyScopeSpecificationDomain: "EmptyScopeSpecificationDomain", EmptyScopeSpecificationPath: "EmptyScopeSpecificationPath", InvalidScopeSpecificationType: "InvalidScopeSpecificationType", InvalidScopeIncludeSite: "InvalidScopeIncludeSite", MissingScopeIncludeSite: "MissingScopeIncludeSite", FederatedNotAuthorizedByProvider: "FederatedNotAuthorizedByProvider", FederatedNotAuthorizedByRelyingParty: "FederatedNotAuthorizedByRelyingParty", SessionProviderWellKnownMalformed: "SessionProviderWellKnownMalformed", SessionProviderWellKnownHasProviderOrigin: "SessionProviderWellKnownHasProviderOrigin", RelyingPartyWellKnownMalformed: "RelyingPartyWellKnownMalformed", RelyingPartyWellKnownHasRelyingOrigins: "RelyingPartyWellKnownHasRelyingOrigins", InvalidFederatedSessionProviderSessionMissing: "InvalidFederatedSessionProviderSessionMissing", InvalidFederatedSessionWrongProviderOrigin: "InvalidFederatedSessionWrongProviderOrigin", InvalidCredentialsCookieCreationTime: "InvalidCredentialsCookieCreationTime", InvalidCredentialsCookieName: "InvalidCredentialsCookieName", InvalidCredentialsCookieParsing: "InvalidCredentialsCookieParsing", InvalidCredentialsCookieUnpermittedAttribute: "InvalidCredentialsCookieUnpermittedAttribute", InvalidCredentialsCookieInvalidDomain: "InvalidCredentialsCookieInvalidDomain", InvalidCredentialsCookiePrefix: "InvalidCredentialsCookiePrefix", InvalidScopeRulePath: "InvalidScopeRulePath", InvalidScopeRuleHostPattern: "InvalidScopeRuleHostPattern", ScopeRuleOriginScopedHostPatternMismatch: "ScopeRuleOriginScopedHostPatternMismatch", ScopeRuleSiteScopedHostPatternMismatch: "ScopeRuleSiteScopedHostPatternMismatch", SigningQuotaExceeded: "SigningQuotaExceeded", InvalidConfigJson: "InvalidConfigJson", InvalidFederatedSessionProviderFailedToRestoreKey: "InvalidFederatedSessionProviderFailedToRestoreKey", FailedToUnwrapKey: "FailedToUnwrapKey", SessionDeletedDuringRefresh: "SessionDeletedDuringRefresh" });
111053
- inspectorBackend.registerEnum("Network.RefreshEventDetailsRefreshResult", { Refreshed: "Refreshed", InitializedService: "InitializedService", Unreachable: "Unreachable", ServerError: "ServerError", RefreshQuotaExceeded: "RefreshQuotaExceeded", FatalError: "FatalError", SigningQuotaExceeded: "SigningQuotaExceeded" });
111054
- inspectorBackend.registerEnum("Network.TerminationEventDetailsDeletionReason", { Expired: "Expired", FailedToRestoreKey: "FailedToRestoreKey", FailedToUnwrapKey: "FailedToUnwrapKey", StoragePartitionCleared: "StoragePartitionCleared", ClearBrowsingData: "ClearBrowsingData", ServerRequested: "ServerRequested", InvalidSessionParams: "InvalidSessionParams", RefreshFatalError: "RefreshFatalError" });
111190
+ inspectorBackend.registerEnum("Network.RefreshEventDetailsRefreshResult", { Refreshed: "Refreshed", RefreshedAsWaiter: "RefreshedAsWaiter", InitializedService: "InitializedService", Unreachable: "Unreachable", ServerError: "ServerError", RefreshQuotaExceeded: "RefreshQuotaExceeded", FatalError: "FatalError", SigningQuotaExceeded: "SigningQuotaExceeded" });
111191
+ inspectorBackend.registerEnum("Network.TerminationEventDetailsDeletionReason", { Expired: "Expired", FailedToRestoreKey: "FailedToRestoreKey", FailedToUnwrapKey: "FailedToUnwrapKey", StoragePartitionCleared: "StoragePartitionCleared", ClearBrowsingData: "ClearBrowsingData", ServerRequested: "ServerRequested", InvalidSessionParams: "InvalidSessionParams", RefreshFatalError: "RefreshFatalError", DevTools: "DevTools" });
111055
111192
  inspectorBackend.registerEnum("Network.ChallengeEventDetailsChallengeResult", { Success: "Success", NoSessionId: "NoSessionId", NoSessionMatch: "NoSessionMatch", CantSetBoundCookie: "CantSetBoundCookie" });
111056
111193
  inspectorBackend.registerEvent("Network.dataReceived", ["requestId", "timestamp", "dataLength", "encodedDataLength", "data"]);
111057
111194
  inspectorBackend.registerEvent("Network.eventSourceMessageReceived", ["requestId", "timestamp", "eventName", "eventId", "data"]);
@@ -111135,6 +111272,7 @@ function registerCommands(inspectorBackend) {
111135
111272
  inspectorBackend.registerCommand("Network.getSecurityIsolationStatus", [{ "name": "frameId", "type": "string", "optional": true, "description": "If no frameId is provided, the status of the target is provided.", "typeRef": "Page.FrameId" }], ["status"], "Returns information about the COEP/COOP isolation status.");
111136
111273
  inspectorBackend.registerCommand("Network.enableReportingApi", [{ "name": "enable", "type": "boolean", "optional": false, "description": "Whether to enable or disable events for the Reporting API", "typeRef": null }], [], "Enables tracking for the Reporting API, events generated by the Reporting API will now be delivered to the client. Enabling triggers 'reportingApiReportAdded' for all existing reports.");
111137
111274
  inspectorBackend.registerCommand("Network.enableDeviceBoundSessions", [{ "name": "enable", "type": "boolean", "optional": false, "description": "Whether to enable or disable events.", "typeRef": null }], [], "Sets up tracking device bound sessions and fetching of initial set of sessions.");
111275
+ inspectorBackend.registerCommand("Network.deleteDeviceBoundSession", [{ "name": "key", "type": "object", "optional": false, "description": "", "typeRef": "Network.DeviceBoundSessionKey" }], [], "Deletes a device bound session.");
111138
111276
  inspectorBackend.registerCommand("Network.fetchSchemefulSite", [{ "name": "origin", "type": "string", "optional": false, "description": "The URL origin.", "typeRef": null }], ["schemefulSite"], "Fetches the schemeful site for a specific origin.");
111139
111277
  inspectorBackend.registerCommand("Network.loadNetworkResource", [{ "name": "frameId", "type": "string", "optional": true, "description": "Frame id to get the resource for. Mandatory for frame targets, and should be omitted for worker targets.", "typeRef": "Page.FrameId" }, { "name": "url", "type": "string", "optional": false, "description": "URL of the resource to get content for.", "typeRef": null }, { "name": "options", "type": "object", "optional": false, "description": "Options for the request.", "typeRef": "Network.LoadNetworkResourceOptions" }], ["resource"], "Fetches the resource and returns the content.");
111140
111278
  inspectorBackend.registerCommand("Network.setCookieControls", [{ "name": "enableThirdPartyCookieRestriction", "type": "boolean", "optional": false, "description": "Whether 3pc restriction is enabled.", "typeRef": null }], [], "Sets Controls for third-party cookie access Page reload is required before the new cookie behavior will be observed");
@@ -111267,7 +111405,7 @@ function registerCommands(inspectorBackend) {
111267
111405
  inspectorBackend.registerEnum("Page.SecureContextType", { Secure: "Secure", SecureLocalhost: "SecureLocalhost", InsecureScheme: "InsecureScheme", InsecureAncestor: "InsecureAncestor" });
111268
111406
  inspectorBackend.registerEnum("Page.CrossOriginIsolatedContextType", { Isolated: "Isolated", NotIsolated: "NotIsolated", NotIsolatedFeatureDisabled: "NotIsolatedFeatureDisabled" });
111269
111407
  inspectorBackend.registerEnum("Page.GatedAPIFeatures", { SharedArrayBuffers: "SharedArrayBuffers", SharedArrayBuffersTransferAllowed: "SharedArrayBuffersTransferAllowed", PerformanceMeasureMemory: "PerformanceMeasureMemory", PerformanceProfile: "PerformanceProfile" });
111270
- inspectorBackend.registerEnum("Page.PermissionsPolicyFeature", { Accelerometer: "accelerometer", AllScreensCapture: "all-screens-capture", AmbientLightSensor: "ambient-light-sensor", AriaNotify: "aria-notify", AttributionReporting: "attribution-reporting", Autofill: "autofill", Autoplay: "autoplay", Bluetooth: "bluetooth", BrowsingTopics: "browsing-topics", Camera: "camera", CapturedSurfaceControl: "captured-surface-control", ChDpr: "ch-dpr", ChDeviceMemory: "ch-device-memory", ChDownlink: "ch-downlink", ChEct: "ch-ect", ChPrefersColorScheme: "ch-prefers-color-scheme", ChPrefersReducedMotion: "ch-prefers-reduced-motion", ChPrefersReducedTransparency: "ch-prefers-reduced-transparency", ChRtt: "ch-rtt", ChSaveData: "ch-save-data", ChUa: "ch-ua", ChUaArch: "ch-ua-arch", ChUaBitness: "ch-ua-bitness", ChUaHighEntropyValues: "ch-ua-high-entropy-values", ChUaPlatform: "ch-ua-platform", ChUaModel: "ch-ua-model", ChUaMobile: "ch-ua-mobile", ChUaFormFactors: "ch-ua-form-factors", ChUaFullVersion: "ch-ua-full-version", ChUaFullVersionList: "ch-ua-full-version-list", ChUaPlatformVersion: "ch-ua-platform-version", ChUaWow64: "ch-ua-wow64", ChViewportHeight: "ch-viewport-height", ChViewportWidth: "ch-viewport-width", ChWidth: "ch-width", ClipboardRead: "clipboard-read", ClipboardWrite: "clipboard-write", ComputePressure: "compute-pressure", ControlledFrame: "controlled-frame", CrossOriginIsolated: "cross-origin-isolated", DeferredFetch: "deferred-fetch", DeferredFetchMinimal: "deferred-fetch-minimal", DeviceAttributes: "device-attributes", DigitalCredentialsCreate: "digital-credentials-create", DigitalCredentialsGet: "digital-credentials-get", DirectSockets: "direct-sockets", DirectSocketsMulticast: "direct-sockets-multicast", DirectSocketsPrivate: "direct-sockets-private", DisplayCapture: "display-capture", DocumentDomain: "document-domain", EncryptedMedia: "encrypted-media", ExecutionWhileOutOfViewport: "execution-while-out-of-viewport", ExecutionWhileNotRendered: "execution-while-not-rendered", FocusWithoutUserActivation: "focus-without-user-activation", Fullscreen: "fullscreen", Frobulate: "frobulate", Gamepad: "gamepad", Geolocation: "geolocation", Gyroscope: "gyroscope", Hid: "hid", IdentityCredentialsGet: "identity-credentials-get", IdleDetection: "idle-detection", InterestCohort: "interest-cohort", JoinAdInterestGroup: "join-ad-interest-group", KeyboardMap: "keyboard-map", LanguageDetector: "language-detector", LanguageModel: "language-model", LocalFonts: "local-fonts", LocalNetwork: "local-network", LocalNetworkAccess: "local-network-access", LoopbackNetwork: "loopback-network", Magnetometer: "magnetometer", ManualText: "manual-text", MediaPlaybackWhileNotVisible: "media-playback-while-not-visible", Microphone: "microphone", Midi: "midi", OnDeviceSpeechRecognition: "on-device-speech-recognition", OtpCredentials: "otp-credentials", Payment: "payment", PictureInPicture: "picture-in-picture", PrivateAggregation: "private-aggregation", PrivateStateTokenIssuance: "private-state-token-issuance", PrivateStateTokenRedemption: "private-state-token-redemption", PublickeyCredentialsCreate: "publickey-credentials-create", PublickeyCredentialsGet: "publickey-credentials-get", RecordAdAuctionEvents: "record-ad-auction-events", Rewriter: "rewriter", RunAdAuction: "run-ad-auction", ScreenWakeLock: "screen-wake-lock", Serial: "serial", SharedStorage: "shared-storage", SharedStorageSelectUrl: "shared-storage-select-url", SmartCard: "smart-card", SpeakerSelection: "speaker-selection", StorageAccess: "storage-access", SubApps: "sub-apps", Summarizer: "summarizer", SyncXhr: "sync-xhr", Translator: "translator", Unload: "unload", Usb: "usb", UsbUnrestricted: "usb-unrestricted", VerticalScroll: "vertical-scroll", WebAppInstallation: "web-app-installation", WebPrinting: "web-printing", WebShare: "web-share", WindowManagement: "window-management", Writer: "writer", XrSpatialTracking: "xr-spatial-tracking" });
111408
+ inspectorBackend.registerEnum("Page.PermissionsPolicyFeature", { Accelerometer: "accelerometer", AllScreensCapture: "all-screens-capture", AmbientLightSensor: "ambient-light-sensor", AriaNotify: "aria-notify", AttributionReporting: "attribution-reporting", Autofill: "autofill", Autoplay: "autoplay", Bluetooth: "bluetooth", BrowsingTopics: "browsing-topics", Camera: "camera", CapturedSurfaceControl: "captured-surface-control", ChDpr: "ch-dpr", ChDeviceMemory: "ch-device-memory", ChDownlink: "ch-downlink", ChEct: "ch-ect", ChPrefersColorScheme: "ch-prefers-color-scheme", ChPrefersReducedMotion: "ch-prefers-reduced-motion", ChPrefersReducedTransparency: "ch-prefers-reduced-transparency", ChRtt: "ch-rtt", ChSaveData: "ch-save-data", ChUa: "ch-ua", ChUaArch: "ch-ua-arch", ChUaBitness: "ch-ua-bitness", ChUaHighEntropyValues: "ch-ua-high-entropy-values", ChUaPlatform: "ch-ua-platform", ChUaModel: "ch-ua-model", ChUaMobile: "ch-ua-mobile", ChUaFormFactors: "ch-ua-form-factors", ChUaFullVersion: "ch-ua-full-version", ChUaFullVersionList: "ch-ua-full-version-list", ChUaPlatformVersion: "ch-ua-platform-version", ChUaWow64: "ch-ua-wow64", ChViewportHeight: "ch-viewport-height", ChViewportWidth: "ch-viewport-width", ChWidth: "ch-width", ClipboardRead: "clipboard-read", ClipboardWrite: "clipboard-write", ComputePressure: "compute-pressure", ControlledFrame: "controlled-frame", CrossOriginIsolated: "cross-origin-isolated", DeferredFetch: "deferred-fetch", DeferredFetchMinimal: "deferred-fetch-minimal", DeviceAttributes: "device-attributes", DigitalCredentialsCreate: "digital-credentials-create", DigitalCredentialsGet: "digital-credentials-get", DirectSockets: "direct-sockets", DirectSocketsMulticast: "direct-sockets-multicast", DirectSocketsPrivate: "direct-sockets-private", DisplayCapture: "display-capture", DocumentDomain: "document-domain", EncryptedMedia: "encrypted-media", ExecutionWhileOutOfViewport: "execution-while-out-of-viewport", ExecutionWhileNotRendered: "execution-while-not-rendered", FocusWithoutUserActivation: "focus-without-user-activation", Fullscreen: "fullscreen", Frobulate: "frobulate", Gamepad: "gamepad", Geolocation: "geolocation", Gyroscope: "gyroscope", Hid: "hid", IdentityCredentialsGet: "identity-credentials-get", IdleDetection: "idle-detection", InterestCohort: "interest-cohort", JoinAdInterestGroup: "join-ad-interest-group", KeyboardMap: "keyboard-map", LanguageDetector: "language-detector", LanguageModel: "language-model", LocalFonts: "local-fonts", LocalNetwork: "local-network", LocalNetworkAccess: "local-network-access", LoopbackNetwork: "loopback-network", Magnetometer: "magnetometer", ManualText: "manual-text", MediaPlaybackWhileNotVisible: "media-playback-while-not-visible", Microphone: "microphone", Midi: "midi", OnDeviceSpeechRecognition: "on-device-speech-recognition", OtpCredentials: "otp-credentials", Payment: "payment", PictureInPicture: "picture-in-picture", PrivateAggregation: "private-aggregation", PrivateStateTokenIssuance: "private-state-token-issuance", PrivateStateTokenRedemption: "private-state-token-redemption", PublickeyCredentialsCreate: "publickey-credentials-create", PublickeyCredentialsGet: "publickey-credentials-get", RecordAdAuctionEvents: "record-ad-auction-events", Rewriter: "rewriter", RunAdAuction: "run-ad-auction", ScreenWakeLock: "screen-wake-lock", Serial: "serial", SharedStorage: "shared-storage", SharedStorageSelectUrl: "shared-storage-select-url", SmartCard: "smart-card", SpeakerSelection: "speaker-selection", StorageAccess: "storage-access", SubApps: "sub-apps", Summarizer: "summarizer", SyncXhr: "sync-xhr", Tools: "tools", Translator: "translator", Unload: "unload", Usb: "usb", UsbUnrestricted: "usb-unrestricted", VerticalScroll: "vertical-scroll", WebAppInstallation: "web-app-installation", WebPrinting: "web-printing", WebShare: "web-share", WindowManagement: "window-management", Writer: "writer", XrSpatialTracking: "xr-spatial-tracking" });
111271
111409
  inspectorBackend.registerEnum("Page.PermissionsPolicyBlockReason", { Header: "Header", IframeAttribute: "IframeAttribute", InFencedFrameTree: "InFencedFrameTree", InIsolatedApp: "InIsolatedApp" });
111272
111410
  inspectorBackend.registerEnum("Page.OriginTrialTokenStatus", { Success: "Success", NotSupported: "NotSupported", Insecure: "Insecure", Expired: "Expired", WrongOrigin: "WrongOrigin", InvalidSignature: "InvalidSignature", Malformed: "Malformed", WrongVersion: "WrongVersion", FeatureDisabled: "FeatureDisabled", TokenDisabled: "TokenDisabled", FeatureDisabledForUser: "FeatureDisabledForUser", UnknownTrial: "UnknownTrial" });
111273
111411
  inspectorBackend.registerEnum("Page.OriginTrialStatus", { Enabled: "Enabled", ValidTokenNotProvided: "ValidTokenNotProvided", OSNotSupported: "OSNotSupported", TrialNotAllowed: "TrialNotAllowed" });
@@ -111278,7 +111416,7 @@ function registerCommands(inspectorBackend) {
111278
111416
  inspectorBackend.registerEnum("Page.ClientNavigationDisposition", { CurrentTab: "currentTab", NewTab: "newTab", NewWindow: "newWindow", Download: "download" });
111279
111417
  inspectorBackend.registerEnum("Page.ReferrerPolicy", { NoReferrer: "noReferrer", NoReferrerWhenDowngrade: "noReferrerWhenDowngrade", Origin: "origin", OriginWhenCrossOrigin: "originWhenCrossOrigin", SameOrigin: "sameOrigin", StrictOrigin: "strictOrigin", StrictOriginWhenCrossOrigin: "strictOriginWhenCrossOrigin", UnsafeUrl: "unsafeUrl" });
111280
111418
  inspectorBackend.registerEnum("Page.NavigationType", { Navigation: "Navigation", BackForwardCacheRestore: "BackForwardCacheRestore" });
111281
- inspectorBackend.registerEnum("Page.BackForwardCacheNotRestoredReason", { NotPrimaryMainFrame: "NotPrimaryMainFrame", BackForwardCacheDisabled: "BackForwardCacheDisabled", RelatedActiveContentsExist: "RelatedActiveContentsExist", HTTPStatusNotOK: "HTTPStatusNotOK", SchemeNotHTTPOrHTTPS: "SchemeNotHTTPOrHTTPS", Loading: "Loading", WasGrantedMediaAccess: "WasGrantedMediaAccess", DisableForRenderFrameHostCalled: "DisableForRenderFrameHostCalled", DomainNotAllowed: "DomainNotAllowed", HTTPMethodNotGET: "HTTPMethodNotGET", SubframeIsNavigating: "SubframeIsNavigating", Timeout: "Timeout", CacheLimit: "CacheLimit", JavaScriptExecution: "JavaScriptExecution", RendererProcessKilled: "RendererProcessKilled", RendererProcessCrashed: "RendererProcessCrashed", SchedulerTrackedFeatureUsed: "SchedulerTrackedFeatureUsed", ConflictingBrowsingInstance: "ConflictingBrowsingInstance", CacheFlushed: "CacheFlushed", ServiceWorkerVersionActivation: "ServiceWorkerVersionActivation", SessionRestored: "SessionRestored", ServiceWorkerPostMessage: "ServiceWorkerPostMessage", EnteredBackForwardCacheBeforeServiceWorkerHostAdded: "EnteredBackForwardCacheBeforeServiceWorkerHostAdded", RenderFrameHostReused_SameSite: "RenderFrameHostReused_SameSite", RenderFrameHostReused_CrossSite: "RenderFrameHostReused_CrossSite", ServiceWorkerClaim: "ServiceWorkerClaim", IgnoreEventAndEvict: "IgnoreEventAndEvict", HaveInnerContents: "HaveInnerContents", TimeoutPuttingInCache: "TimeoutPuttingInCache", BackForwardCacheDisabledByLowMemory: "BackForwardCacheDisabledByLowMemory", BackForwardCacheDisabledByCommandLine: "BackForwardCacheDisabledByCommandLine", NetworkRequestDatAPIpeDrainedAsBytesConsumer: "NetworkRequestDatapipeDrainedAsBytesConsumer", NetworkRequestRedirected: "NetworkRequestRedirected", NetworkRequestTimeout: "NetworkRequestTimeout", NetworkExceedsBufferLimit: "NetworkExceedsBufferLimit", NavigationCancelledWhileRestoring: "NavigationCancelledWhileRestoring", NotMostRecentNavigationEntry: "NotMostRecentNavigationEntry", BackForwardCacheDisabledForPrerender: "BackForwardCacheDisabledForPrerender", UserAgentOverrideDiffers: "UserAgentOverrideDiffers", ForegroundCacheLimit: "ForegroundCacheLimit", ForwardCacheDisabled: "ForwardCacheDisabled", BrowsingInstanceNotSwapped: "BrowsingInstanceNotSwapped", BackForwardCacheDisabledForDelegate: "BackForwardCacheDisabledForDelegate", UnloadHandlerExistsInMainFrame: "UnloadHandlerExistsInMainFrame", UnloadHandlerExistsInSubFrame: "UnloadHandlerExistsInSubFrame", ServiceWorkerUnregistration: "ServiceWorkerUnregistration", CacheControlNoStore: "CacheControlNoStore", CacheControlNoStoreCookieModified: "CacheControlNoStoreCookieModified", CacheControlNoStoreHTTPOnlyCookieModified: "CacheControlNoStoreHTTPOnlyCookieModified", NoResponseHead: "NoResponseHead", Unknown: "Unknown", ActivationNavigationsDisallowedForBug1234857: "ActivationNavigationsDisallowedForBug1234857", ErrorDocument: "ErrorDocument", FencedFramesEmbedder: "FencedFramesEmbedder", CookieDisabled: "CookieDisabled", HTTPAuthRequired: "HTTPAuthRequired", CookieFlushed: "CookieFlushed", BroadcastChannelOnMessage: "BroadcastChannelOnMessage", WebViewSettingsChanged: "WebViewSettingsChanged", WebViewJavaScriptObjectChanged: "WebViewJavaScriptObjectChanged", WebViewMessageListenerInjected: "WebViewMessageListenerInjected", WebViewSafeBrowsingAllowlistChanged: "WebViewSafeBrowsingAllowlistChanged", WebViewDocumentStartJavascriptChanged: "WebViewDocumentStartJavascriptChanged", WebSocket: "WebSocket", WebTransport: "WebTransport", WebRTC: "WebRTC", MainResourceHasCacheControlNoStore: "MainResourceHasCacheControlNoStore", MainResourceHasCacheControlNoCache: "MainResourceHasCacheControlNoCache", SubresourceHasCacheControlNoStore: "SubresourceHasCacheControlNoStore", SubresourceHasCacheControlNoCache: "SubresourceHasCacheControlNoCache", ContainsPlugins: "ContainsPlugins", DocumentLoaded: "DocumentLoaded", OutstandingNetworkRequestOthers: "OutstandingNetworkRequestOthers", RequestedMIDIPermission: "RequestedMIDIPermission", RequestedAudioCapturePermission: "RequestedAudioCapturePermission", RequestedVideoCapturePermission: "RequestedVideoCapturePermission", RequestedBackForwardCacheBlockedSensors: "RequestedBackForwardCacheBlockedSensors", RequestedBackgroundWorkPermission: "RequestedBackgroundWorkPermission", BroadcastChannel: "BroadcastChannel", WebXR: "WebXR", SharedWorker: "SharedWorker", SharedWorkerMessage: "SharedWorkerMessage", SharedWorkerWithNoActiveClient: "SharedWorkerWithNoActiveClient", WebLocks: "WebLocks", WebLocksContention: "WebLocksContention", WebHID: "WebHID", WebBluetooth: "WebBluetooth", WebShare: "WebShare", RequestedStorageAccessGrant: "RequestedStorageAccessGrant", WebNfc: "WebNfc", OutstandingNetworkRequestFetch: "OutstandingNetworkRequestFetch", OutstandingNetworkRequestXHR: "OutstandingNetworkRequestXHR", AppBanner: "AppBanner", Printing: "Printing", WebDatabase: "WebDatabase", PictureInPicture: "PictureInPicture", SpeechRecognizer: "SpeechRecognizer", IdleManager: "IdleManager", PaymentManager: "PaymentManager", SpeechSynthesis: "SpeechSynthesis", KeyboardLock: "KeyboardLock", WebOTPService: "WebOTPService", OutstandingNetworkRequestDirectSocket: "OutstandingNetworkRequestDirectSocket", InjectedJavascript: "InjectedJavascript", InjectedStyleSheet: "InjectedStyleSheet", KeepaliveRequest: "KeepaliveRequest", IndexedDBEvent: "IndexedDBEvent", Dummy: "Dummy", JsNetworkRequestReceivedCacheControlNoStoreResource: "JsNetworkRequestReceivedCacheControlNoStoreResource", WebRTCUsedWithCCNS: "WebRTCUsedWithCCNS", WebTransportUsedWithCCNS: "WebTransportUsedWithCCNS", WebSocketUsedWithCCNS: "WebSocketUsedWithCCNS", SmartCard: "SmartCard", LiveMediaStreamTrack: "LiveMediaStreamTrack", UnloadHandler: "UnloadHandler", ParserAborted: "ParserAborted", ContentSecurityHandler: "ContentSecurityHandler", ContentWebAuthenticationAPI: "ContentWebAuthenticationAPI", ContentFileChooser: "ContentFileChooser", ContentSerial: "ContentSerial", ContentFileSystemAccess: "ContentFileSystemAccess", ContentMediaDevicesDispatcherHost: "ContentMediaDevicesDispatcherHost", ContentWebBluetooth: "ContentWebBluetooth", ContentWebUSB: "ContentWebUSB", ContentMediaSessionService: "ContentMediaSessionService", ContentScreenReader: "ContentScreenReader", ContentDiscarded: "ContentDiscarded", EmbedderPopupBlockerTabHelper: "EmbedderPopupBlockerTabHelper", EmbedderSafeBrowsingTriggeredPopupBlocker: "EmbedderSafeBrowsingTriggeredPopupBlocker", EmbedderSafeBrowsingThreatDetails: "EmbedderSafeBrowsingThreatDetails", EmbedderAppBannerManager: "EmbedderAppBannerManager", EmbedderDomDistillerViewerSource: "EmbedderDomDistillerViewerSource", EmbedderDomDistillerSelfDeletingRequestDelegate: "EmbedderDomDistillerSelfDeletingRequestDelegate", EmbedderOomInterventionTabHelper: "EmbedderOomInterventionTabHelper", EmbedderOfflinePage: "EmbedderOfflinePage", EmbedderChromePasswordManagerClientBindCredentialManager: "EmbedderChromePasswordManagerClientBindCredentialManager", EmbedderPermissionRequestManager: "EmbedderPermissionRequestManager", EmbedderModalDialog: "EmbedderModalDialog", EmbedderExtensions: "EmbedderExtensions", EmbedderExtensionMessaging: "EmbedderExtensionMessaging", EmbedderExtensionMessagingForOpenPort: "EmbedderExtensionMessagingForOpenPort", EmbedderExtensionSentMessageToCachedFrame: "EmbedderExtensionSentMessageToCachedFrame", RequestedByWebViewClient: "RequestedByWebViewClient", PostMessageByWebViewClient: "PostMessageByWebViewClient", CacheControlNoStoreDeviceBoundSessionTerminated: "CacheControlNoStoreDeviceBoundSessionTerminated", CacheLimitPrunedOnModerateMemoryPressure: "CacheLimitPrunedOnModerateMemoryPressure", CacheLimitPrunedOnCriticalMemoryPressure: "CacheLimitPrunedOnCriticalMemoryPressure" });
111419
+ inspectorBackend.registerEnum("Page.BackForwardCacheNotRestoredReason", { NotPrimaryMainFrame: "NotPrimaryMainFrame", BackForwardCacheDisabled: "BackForwardCacheDisabled", RelatedActiveContentsExist: "RelatedActiveContentsExist", HTTPStatusNotOK: "HTTPStatusNotOK", SchemeNotHTTPOrHTTPS: "SchemeNotHTTPOrHTTPS", Loading: "Loading", WasGrantedMediaAccess: "WasGrantedMediaAccess", DisableForRenderFrameHostCalled: "DisableForRenderFrameHostCalled", DomainNotAllowed: "DomainNotAllowed", HTTPMethodNotGET: "HTTPMethodNotGET", SubframeIsNavigating: "SubframeIsNavigating", Timeout: "Timeout", CacheLimit: "CacheLimit", JavaScriptExecution: "JavaScriptExecution", RendererProcessKilled: "RendererProcessKilled", RendererProcessCrashed: "RendererProcessCrashed", SchedulerTrackedFeatureUsed: "SchedulerTrackedFeatureUsed", ConflictingBrowsingInstance: "ConflictingBrowsingInstance", CacheFlushed: "CacheFlushed", ServiceWorkerVersionActivation: "ServiceWorkerVersionActivation", SessionRestored: "SessionRestored", ServiceWorkerPostMessage: "ServiceWorkerPostMessage", EnteredBackForwardCacheBeforeServiceWorkerHostAdded: "EnteredBackForwardCacheBeforeServiceWorkerHostAdded", RenderFrameHostReused_SameSite: "RenderFrameHostReused_SameSite", RenderFrameHostReused_CrossSite: "RenderFrameHostReused_CrossSite", ServiceWorkerClaim: "ServiceWorkerClaim", IgnoreEventAndEvict: "IgnoreEventAndEvict", HaveInnerContents: "HaveInnerContents", TimeoutPuttingInCache: "TimeoutPuttingInCache", BackForwardCacheDisabledByLowMemory: "BackForwardCacheDisabledByLowMemory", BackForwardCacheDisabledByCommandLine: "BackForwardCacheDisabledByCommandLine", NetworkRequestDatAPIpeDrainedAsBytesConsumer: "NetworkRequestDatapipeDrainedAsBytesConsumer", NetworkRequestRedirected: "NetworkRequestRedirected", NetworkRequestTimeout: "NetworkRequestTimeout", NetworkExceedsBufferLimit: "NetworkExceedsBufferLimit", NavigationCancelledWhileRestoring: "NavigationCancelledWhileRestoring", NotMostRecentNavigationEntry: "NotMostRecentNavigationEntry", BackForwardCacheDisabledForPrerender: "BackForwardCacheDisabledForPrerender", UserAgentOverrideDiffers: "UserAgentOverrideDiffers", ForegroundCacheLimit: "ForegroundCacheLimit", ForwardCacheDisabled: "ForwardCacheDisabled", BrowsingInstanceNotSwapped: "BrowsingInstanceNotSwapped", BackForwardCacheDisabledForDelegate: "BackForwardCacheDisabledForDelegate", UnloadHandlerExistsInMainFrame: "UnloadHandlerExistsInMainFrame", UnloadHandlerExistsInSubFrame: "UnloadHandlerExistsInSubFrame", ServiceWorkerUnregistration: "ServiceWorkerUnregistration", CacheControlNoStore: "CacheControlNoStore", CacheControlNoStoreCookieModified: "CacheControlNoStoreCookieModified", CacheControlNoStoreHTTPOnlyCookieModified: "CacheControlNoStoreHTTPOnlyCookieModified", NoResponseHead: "NoResponseHead", Unknown: "Unknown", ActivationNavigationsDisallowedForBug1234857: "ActivationNavigationsDisallowedForBug1234857", ErrorDocument: "ErrorDocument", FencedFramesEmbedder: "FencedFramesEmbedder", CookieDisabled: "CookieDisabled", HTTPAuthRequired: "HTTPAuthRequired", CookieFlushed: "CookieFlushed", BroadcastChannelOnMessage: "BroadcastChannelOnMessage", WebViewSettingsChanged: "WebViewSettingsChanged", WebViewJavaScriptObjectChanged: "WebViewJavaScriptObjectChanged", WebViewMessageListenerInjected: "WebViewMessageListenerInjected", WebViewSafeBrowsingAllowlistChanged: "WebViewSafeBrowsingAllowlistChanged", WebViewDocumentStartJavascriptChanged: "WebViewDocumentStartJavascriptChanged", WebSocket: "WebSocket", WebTransport: "WebTransport", WebRTC: "WebRTC", MainResourceHasCacheControlNoStore: "MainResourceHasCacheControlNoStore", MainResourceHasCacheControlNoCache: "MainResourceHasCacheControlNoCache", SubresourceHasCacheControlNoStore: "SubresourceHasCacheControlNoStore", SubresourceHasCacheControlNoCache: "SubresourceHasCacheControlNoCache", ContainsPlugins: "ContainsPlugins", DocumentLoaded: "DocumentLoaded", OutstandingNetworkRequestOthers: "OutstandingNetworkRequestOthers", RequestedMIDIPermission: "RequestedMIDIPermission", RequestedAudioCapturePermission: "RequestedAudioCapturePermission", RequestedVideoCapturePermission: "RequestedVideoCapturePermission", RequestedBackForwardCacheBlockedSensors: "RequestedBackForwardCacheBlockedSensors", RequestedBackgroundWorkPermission: "RequestedBackgroundWorkPermission", BroadcastChannel: "BroadcastChannel", WebXR: "WebXR", SharedWorker: "SharedWorker", SharedWorkerMessage: "SharedWorkerMessage", SharedWorkerWithNoActiveClient: "SharedWorkerWithNoActiveClient", WebLocks: "WebLocks", WebLocksContention: "WebLocksContention", WebHID: "WebHID", WebBluetooth: "WebBluetooth", WebShare: "WebShare", RequestedStorageAccessGrant: "RequestedStorageAccessGrant", WebNfc: "WebNfc", OutstandingNetworkRequestFetch: "OutstandingNetworkRequestFetch", OutstandingNetworkRequestXHR: "OutstandingNetworkRequestXHR", AppBanner: "AppBanner", Printing: "Printing", WebDatabase: "WebDatabase", PictureInPicture: "PictureInPicture", SpeechRecognizer: "SpeechRecognizer", IdleManager: "IdleManager", PaymentManager: "PaymentManager", SpeechSynthesis: "SpeechSynthesis", KeyboardLock: "KeyboardLock", WebOTPService: "WebOTPService", OutstandingNetworkRequestDirectSocket: "OutstandingNetworkRequestDirectSocket", InjectedJavascript: "InjectedJavascript", InjectedStyleSheet: "InjectedStyleSheet", KeepaliveRequest: "KeepaliveRequest", IndexedDBEvent: "IndexedDBEvent", Dummy: "Dummy", JsNetworkRequestReceivedCacheControlNoStoreResource: "JsNetworkRequestReceivedCacheControlNoStoreResource", WebRTCUsedWithCCNS: "WebRTCUsedWithCCNS", WebTransportUsedWithCCNS: "WebTransportUsedWithCCNS", WebSocketUsedWithCCNS: "WebSocketUsedWithCCNS", SmartCard: "SmartCard", LiveMediaStreamTrack: "LiveMediaStreamTrack", UnloadHandler: "UnloadHandler", ParserAborted: "ParserAborted", ContentSecurityHandler: "ContentSecurityHandler", ContentWebAuthenticationAPI: "ContentWebAuthenticationAPI", ContentFileChooser: "ContentFileChooser", ContentSerial: "ContentSerial", ContentFileSystemAccess: "ContentFileSystemAccess", ContentMediaDevicesDispatcherHost: "ContentMediaDevicesDispatcherHost", ContentWebBluetooth: "ContentWebBluetooth", ContentWebUSB: "ContentWebUSB", ContentMediaSessionService: "ContentMediaSessionService", ContentScreenReader: "ContentScreenReader", ContentDiscarded: "ContentDiscarded", EmbedderPopupBlockerTabHelper: "EmbedderPopupBlockerTabHelper", EmbedderSafeBrowsingTriggeredPopupBlocker: "EmbedderSafeBrowsingTriggeredPopupBlocker", EmbedderSafeBrowsingThreatDetails: "EmbedderSafeBrowsingThreatDetails", EmbedderAppBannerManager: "EmbedderAppBannerManager", EmbedderDomDistillerViewerSource: "EmbedderDomDistillerViewerSource", EmbedderDomDistillerSelfDeletingRequestDelegate: "EmbedderDomDistillerSelfDeletingRequestDelegate", EmbedderOomInterventionTabHelper: "EmbedderOomInterventionTabHelper", EmbedderOfflinePage: "EmbedderOfflinePage", EmbedderChromePasswordManagerClientBindCredentialManager: "EmbedderChromePasswordManagerClientBindCredentialManager", EmbedderPermissionRequestManager: "EmbedderPermissionRequestManager", EmbedderModalDialog: "EmbedderModalDialog", EmbedderExtensions: "EmbedderExtensions", EmbedderExtensionMessaging: "EmbedderExtensionMessaging", EmbedderExtensionMessagingForOpenPort: "EmbedderExtensionMessagingForOpenPort", EmbedderExtensionSentMessageToCachedFrame: "EmbedderExtensionSentMessageToCachedFrame", EmbedderExtensionFrame: "EmbedderExtensionFrame", RequestedByWebViewClient: "RequestedByWebViewClient", PostMessageByWebViewClient: "PostMessageByWebViewClient", CacheControlNoStoreDeviceBoundSessionTerminated: "CacheControlNoStoreDeviceBoundSessionTerminated", CacheLimitPrunedOnModerateMemoryPressure: "CacheLimitPrunedOnModerateMemoryPressure", CacheLimitPrunedOnCriticalMemoryPressure: "CacheLimitPrunedOnCriticalMemoryPressure" });
111282
111420
  inspectorBackend.registerEnum("Page.BackForwardCacheNotRestoredReasonType", { SupportPending: "SupportPending", PageSupportNeeded: "PageSupportNeeded", Circumstantial: "Circumstantial" });
111283
111421
  inspectorBackend.registerEvent("Page.domContentEventFired", ["timestamp"]);
111284
111422
  inspectorBackend.registerEnum("Page.FileChooserOpenedEventMode", { SelectSingle: "selectSingle", SelectMultiple: "selectMultiple" });
@@ -111626,7 +111764,7 @@ function registerCommands(inspectorBackend) {
111626
111764
  inspectorBackend.registerCommand("Target.setRemoteLocations", [{ "name": "locations", "type": "array", "optional": false, "description": "List of remote locations.", "typeRef": "Target.RemoteLocation" }], [], "Enables target discovery for the specified locations, when `setDiscoverTargets` was set to `true`.");
111627
111765
  inspectorBackend.registerCommand("Target.getDevToolsTarget", [{ "name": "targetId", "type": "string", "optional": false, "description": "Page or tab target ID.", "typeRef": "Target.TargetID" }], ["targetId"], "Gets the targetId of the DevTools page target opened for the given target (if any).");
111628
111766
  inspectorBackend.registerCommand("Target.openDevTools", [{ "name": "targetId", "type": "string", "optional": false, "description": "This can be the page or tab target ID.", "typeRef": "Target.TargetID" }, { "name": "panelId", "type": "string", "optional": true, "description": "The id of the panel we want DevTools to open initially. Currently supported panels are elements, console, network, sources, resources and performance.", "typeRef": null }], ["targetId"], "Opens a DevTools window for the target.");
111629
- inspectorBackend.registerType("Target.TargetInfo", [{ "name": "targetId", "type": "string", "optional": false, "description": "", "typeRef": "Target.TargetID" }, { "name": "type", "type": "string", "optional": false, "description": "List of types: https://source.chromium.org/chromium/chromium/src/+/main:content/browser/devtools/devtools_agent_host_impl.cc?ss=chromium&q=f:devtools%20-f:out%20%22::kTypeTab%5B%5D%22", "typeRef": null }, { "name": "title", "type": "string", "optional": false, "description": "", "typeRef": null }, { "name": "url", "type": "string", "optional": false, "description": "", "typeRef": null }, { "name": "attached", "type": "boolean", "optional": false, "description": "Whether the target has an attached client.", "typeRef": null }, { "name": "openerId", "type": "string", "optional": true, "description": "Opener target Id", "typeRef": "Target.TargetID" }, { "name": "canAccessOpener", "type": "boolean", "optional": false, "description": "Whether the target has access to the originating window.", "typeRef": null }, { "name": "openerFrameId", "type": "string", "optional": true, "description": "Frame id of originating window (is only set if target has an opener).", "typeRef": "Page.FrameId" }, { "name": "parentFrameId", "type": "string", "optional": true, "description": "Id of the parent frame, only present for the \\\"iframe\\\" targets.", "typeRef": "Page.FrameId" }, { "name": "browserContextId", "type": "string", "optional": true, "description": "", "typeRef": "Browser.BrowserContextID" }, { "name": "subtype", "type": "string", "optional": true, "description": "Provides additional details for specific target types. For example, for the type of \\\"page\\\", this may be set to \\\"prerender\\\".", "typeRef": null }]);
111767
+ inspectorBackend.registerType("Target.TargetInfo", [{ "name": "targetId", "type": "string", "optional": false, "description": "", "typeRef": "Target.TargetID" }, { "name": "type", "type": "string", "optional": false, "description": "List of types: https://source.chromium.org/chromium/chromium/src/+/main:content/browser/devtools/devtools_agent_host_impl.cc?ss=chromium&q=f:devtools%20-f:out%20%22::kTypeTab%5B%5D%22", "typeRef": null }, { "name": "title", "type": "string", "optional": false, "description": "", "typeRef": null }, { "name": "url", "type": "string", "optional": false, "description": "", "typeRef": null }, { "name": "attached", "type": "boolean", "optional": false, "description": "Whether the target has an attached client.", "typeRef": null }, { "name": "parentId", "type": "string", "optional": true, "description": "Id of the parent target, if any. For example, \\\"iframe\\\" target may have a \\\"page\\\" parent.", "typeRef": "Target.TargetID" }, { "name": "openerId", "type": "string", "optional": true, "description": "Opener target Id", "typeRef": "Target.TargetID" }, { "name": "canAccessOpener", "type": "boolean", "optional": false, "description": "Whether the target has access to the originating window.", "typeRef": null }, { "name": "openerFrameId", "type": "string", "optional": true, "description": "Frame id of originating window (is only set if target has an opener).", "typeRef": "Page.FrameId" }, { "name": "parentFrameId", "type": "string", "optional": true, "description": "Id of the parent frame, present for \\\"iframe\\\" and \\\"worker\\\" targets. For nested workers, this is the \\\"ancestor\\\" frame that created the first worker in the nested chain.", "typeRef": "Page.FrameId" }, { "name": "browserContextId", "type": "string", "optional": true, "description": "", "typeRef": "Browser.BrowserContextID" }, { "name": "subtype", "type": "string", "optional": true, "description": "Provides additional details for specific target types. For example, for the type of \\\"page\\\", this may be set to \\\"prerender\\\".", "typeRef": null }]);
111630
111768
  inspectorBackend.registerType("Target.FilterEntry", [{ "name": "exclude", "type": "boolean", "optional": true, "description": "If set, causes exclusion of matching targets from the list.", "typeRef": null }, { "name": "type", "type": "string", "optional": true, "description": "If not present, matches any type.", "typeRef": null }]);
111631
111769
  inspectorBackend.registerType("Target.TargetFilter", [{ "name": "TargetFilter", "type": "array", "optional": false, "description": "The entries in TargetFilter are matched sequentially against targets and the first entry that matches determines if the target is included or not, depending on the value of `exclude` field in the entry. If filter is not specified, the one assumed is [{type: \\\"browser\\\", exclude: true}, {type: \\\"tab\\\", exclude: true}, {}] (i.e. include everything but `browser` and `tab`).", "typeRef": "Target.FilterEntry" }]);
111632
111770
  inspectorBackend.registerType("Target.RemoteLocation", [{ "name": "host", "type": "string", "optional": false, "description": "", "typeRef": null }, { "name": "port", "type": "number", "optional": false, "description": "", "typeRef": null }]);
@@ -111697,15 +111835,18 @@ function registerCommands(inspectorBackend) {
111697
111835
  inspectorBackend.registerCommand("WebAuthn.setCredentialProperties", [{ "name": "authenticatorId", "type": "string", "optional": false, "description": "", "typeRef": "WebAuthn.AuthenticatorId" }, { "name": "credentialId", "type": "string", "optional": false, "description": "", "typeRef": null }, { "name": "backupEligibility", "type": "boolean", "optional": true, "description": "", "typeRef": null }, { "name": "backupState", "type": "boolean", "optional": true, "description": "", "typeRef": null }], [], "Allows setting credential properties. https://w3c.github.io/webauthn/#sctn-automation-set-credential-properties");
111698
111836
  inspectorBackend.registerType("WebAuthn.VirtualAuthenticatorOptions", [{ "name": "protocol", "type": "string", "optional": false, "description": "", "typeRef": "WebAuthn.AuthenticatorProtocol" }, { "name": "ctap2Version", "type": "string", "optional": true, "description": "Defaults to ctap2_0. Ignored if |protocol| == u2f.", "typeRef": "WebAuthn.Ctap2Version" }, { "name": "transport", "type": "string", "optional": false, "description": "", "typeRef": "WebAuthn.AuthenticatorTransport" }, { "name": "hasResidentKey", "type": "boolean", "optional": true, "description": "Defaults to false.", "typeRef": null }, { "name": "hasUserVerification", "type": "boolean", "optional": true, "description": "Defaults to false.", "typeRef": null }, { "name": "hasLargeBlob", "type": "boolean", "optional": true, "description": "If set to true, the authenticator will support the largeBlob extension. https://w3c.github.io/webauthn#largeBlob Defaults to false.", "typeRef": null }, { "name": "hasCredBlob", "type": "boolean", "optional": true, "description": "If set to true, the authenticator will support the credBlob extension. https://fidoalliance.org/specs/fido-v2.1-rd-20201208/fido-client-to-authenticator-protocol-v2.1-rd-20201208.html#sctn-credBlob-extension Defaults to false.", "typeRef": null }, { "name": "hasMinPinLength", "type": "boolean", "optional": true, "description": "If set to true, the authenticator will support the minPinLength extension. https://fidoalliance.org/specs/fido-v2.1-ps-20210615/fido-client-to-authenticator-protocol-v2.1-ps-20210615.html#sctn-minpinlength-extension Defaults to false.", "typeRef": null }, { "name": "hasPrf", "type": "boolean", "optional": true, "description": "If set to true, the authenticator will support the prf extension. https://w3c.github.io/webauthn/#prf-extension Defaults to false.", "typeRef": null }, { "name": "hasHmacSecret", "type": "boolean", "optional": true, "description": "If set to true, the authenticator will support the hmac-secret extension. https://fidoalliance.org/specs/fido-v2.1-ps-20210615/fido-client-to-authenticator-protocol-v2.1-ps-20210615.html#sctn-hmac-secret-extension Defaults to false.", "typeRef": null }, { "name": "hasHmacSecretMc", "type": "boolean", "optional": true, "description": "If set to true, the authenticator will support the hmac-secret-mc extension. https://fidoalliance.org/specs/fido-v2.2-rd-20241003/fido-client-to-authenticator-protocol-v2.2-rd-20241003.html#sctn-hmac-secret-make-cred-extension Defaults to false.", "typeRef": null }, { "name": "automaticPresenceSimulation", "type": "boolean", "optional": true, "description": "If set to true, tests of user presence will succeed immediately. Otherwise, they will not be resolved. Defaults to true.", "typeRef": null }, { "name": "isUserVerified", "type": "boolean", "optional": true, "description": "Sets whether User Verification succeeds or fails for an authenticator. Defaults to false.", "typeRef": null }, { "name": "defaultBackupEligibility", "type": "boolean", "optional": true, "description": "Credentials created by this authenticator will have the backup eligibility (BE) flag set to this value. Defaults to false. https://w3c.github.io/webauthn/#sctn-credential-backup", "typeRef": null }, { "name": "defaultBackupState", "type": "boolean", "optional": true, "description": "Credentials created by this authenticator will have the backup state (BS) flag set to this value. Defaults to false. https://w3c.github.io/webauthn/#sctn-credential-backup", "typeRef": null }]);
111699
111837
  inspectorBackend.registerType("WebAuthn.Credential", [{ "name": "credentialId", "type": "string", "optional": false, "description": "", "typeRef": null }, { "name": "isResidentCredential", "type": "boolean", "optional": false, "description": "", "typeRef": null }, { "name": "rpId", "type": "string", "optional": true, "description": "Relying Party ID the credential is scoped to. Must be set when adding a credential.", "typeRef": null }, { "name": "privateKey", "type": "string", "optional": false, "description": "The ECDSA P-256 private key in PKCS#8 format.", "typeRef": null }, { "name": "userHandle", "type": "string", "optional": true, "description": "An opaque byte sequence with a maximum size of 64 bytes mapping the credential to a specific user.", "typeRef": null }, { "name": "signCount", "type": "number", "optional": false, "description": "Signature counter. This is incremented by one for each successful assertion. See https://w3c.github.io/webauthn/#signature-counter", "typeRef": null }, { "name": "largeBlob", "type": "string", "optional": true, "description": "The large blob associated with the credential. See https://w3c.github.io/webauthn/#sctn-large-blob-extension", "typeRef": null }, { "name": "backupEligibility", "type": "boolean", "optional": true, "description": "Assertions returned by this credential will have the backup eligibility (BE) flag set to this value. Defaults to the authenticator's defaultBackupEligibility value.", "typeRef": null }, { "name": "backupState", "type": "boolean", "optional": true, "description": "Assertions returned by this credential will have the backup state (BS) flag set to this value. Defaults to the authenticator's defaultBackupState value.", "typeRef": null }, { "name": "userName", "type": "string", "optional": true, "description": "The credential's user.name property. Equivalent to empty if not set. https://w3c.github.io/webauthn/#dom-publickeycredentialentity-name", "typeRef": null }, { "name": "userDisplayName", "type": "string", "optional": true, "description": "The credential's user.displayName property. Equivalent to empty if not set. https://w3c.github.io/webauthn/#dom-publickeycredentialuserentity-displayname", "typeRef": null }]);
111700
- inspectorBackend.registerEnum("WebMCP.InvocationStatus", { Success: "Success", Canceled: "Canceled", Error: "Error" });
111838
+ inspectorBackend.registerEnum("WebMCP.InvocationStatus", { Completed: "Completed", Canceled: "Canceled", Error: "Error" });
111701
111839
  inspectorBackend.registerEvent("WebMCP.toolsAdded", ["tools"]);
111702
111840
  inspectorBackend.registerEvent("WebMCP.toolsRemoved", ["tools"]);
111703
111841
  inspectorBackend.registerEvent("WebMCP.toolInvoked", ["toolName", "frameId", "invocationId", "input"]);
111704
111842
  inspectorBackend.registerEvent("WebMCP.toolResponded", ["invocationId", "status", "output", "errorText", "exception"]);
111705
111843
  inspectorBackend.registerCommand("WebMCP.enable", [], [], "Enables the WebMCP domain, allowing events to be sent. Enabling the domain will trigger a toolsAdded event for all currently registered tools.");
111706
111844
  inspectorBackend.registerCommand("WebMCP.disable", [], [], "Disables the WebMCP domain.");
111707
- inspectorBackend.registerType("WebMCP.Annotation", [{ "name": "readOnly", "type": "boolean", "optional": true, "description": "A hint indicating that the tool does not modify any state.", "typeRef": null }, { "name": "autosubmit", "type": "boolean", "optional": true, "description": "If the declarative tool was declared with the autosubmit attribute.", "typeRef": null }]);
111845
+ inspectorBackend.registerCommand("WebMCP.invokeTool", [{ "name": "frameId", "type": "string", "optional": false, "description": "Frame in which to invoke the tool.", "typeRef": "Page.FrameId" }, { "name": "toolName", "type": "string", "optional": false, "description": "Name of the tool to invoke.", "typeRef": null }, { "name": "input", "type": "object", "optional": false, "description": "Input parameters for the tool, matching the tool's inputSchema.", "typeRef": null }], ["invocationId"], "Invokes a registered tool.");
111846
+ inspectorBackend.registerCommand("WebMCP.cancelInvocation", [{ "name": "invocationId", "type": "string", "optional": false, "description": "Invocation identifier to cancel.", "typeRef": null }], [], "Cancels a pending tool invocation.");
111847
+ inspectorBackend.registerType("WebMCP.Annotation", [{ "name": "readOnly", "type": "boolean", "optional": true, "description": "A hint indicating that the tool does not modify any state.", "typeRef": null }, { "name": "untrustedContent", "type": "boolean", "optional": true, "description": "A hint indicating that the tool output may contain untrusted content, ex: UGC, 3rd party data.", "typeRef": null }, { "name": "autosubmit", "type": "boolean", "optional": true, "description": "If the declarative tool was declared with the autosubmit attribute.", "typeRef": null }]);
111708
111848
  inspectorBackend.registerType("WebMCP.Tool", [{ "name": "name", "type": "string", "optional": false, "description": "Tool name.", "typeRef": null }, { "name": "description", "type": "string", "optional": false, "description": "Tool description.", "typeRef": null }, { "name": "inputSchema", "type": "object", "optional": true, "description": "Schema for the tool's input parameters.", "typeRef": null }, { "name": "annotations", "type": "object", "optional": true, "description": "Optional annotations for the tool.", "typeRef": "WebMCP.Annotation" }, { "name": "frameId", "type": "string", "optional": false, "description": "Frame identifier associated with the tool registration.", "typeRef": "Page.FrameId" }, { "name": "backendNodeId", "type": "number", "optional": true, "description": "Optional node ID for declarative tools.", "typeRef": "DOM.BackendNodeId" }, { "name": "stackTrace", "type": "object", "optional": true, "description": "The stack trace at the time of the registration.", "typeRef": "Runtime.StackTrace" }]);
111849
+ inspectorBackend.registerType("WebMCP.RemovedTool", [{ "name": "name", "type": "string", "optional": false, "description": "Tool name.", "typeRef": null }, { "name": "frameId", "type": "string", "optional": false, "description": "Frame identifier associated with the tool registration.", "typeRef": "Page.FrameId" }]);
111709
111850
  inspectorBackend.registerEnum("Debugger.ScopeType", { Global: "global", Local: "local", With: "with", Closure: "closure", Catch: "catch", Block: "block", Script: "script", Eval: "eval", Module: "module", WasmExpressionStack: "wasm-expression-stack" });
111710
111851
  inspectorBackend.registerEnum("Debugger.BreakLocationType", { DebuggerStatement: "debuggerStatement", Call: "call", Return: "return" });
111711
111852
  inspectorBackend.registerEnum("Debugger.ScriptLanguage", { JavaScript: "JavaScript", WebAssembly: "WebAssembly" });
@@ -113248,14 +113389,57 @@ class RemoteFunction {
113248
113389
  return functionDetails;
113249
113390
  }
113250
113391
  }
113392
+ class RemoteError {
113393
+ #object;
113394
+ #exceptionDetails;
113395
+ #cause;
113396
+ constructor(object) {
113397
+ this.#object = object;
113398
+ }
113399
+ static objectAsError(object) {
113400
+ if (object.subtype !== 'error') {
113401
+ throw new Error(`Object of type ${object.subtype} is not an error`);
113402
+ }
113403
+ return new RemoteError(object);
113404
+ }
113405
+ get errorStack() {
113406
+ return this.#object.description ?? '';
113407
+ }
113408
+ exceptionDetails() {
113409
+ if (!this.#exceptionDetails) {
113410
+ this.#exceptionDetails = this.#lookupExceptionDetails();
113411
+ }
113412
+ return this.#exceptionDetails;
113413
+ }
113414
+ #lookupExceptionDetails() {
113415
+ if (this.#object.objectId) {
113416
+ return this.#object.runtimeModel().getExceptionDetails(this.#object.objectId);
113417
+ }
113418
+ return Promise.resolve(undefined);
113419
+ }
113420
+ cause() {
113421
+ if (!this.#cause) {
113422
+ this.#cause = this.#lookupCause();
113423
+ }
113424
+ return this.#cause;
113425
+ }
113426
+ async #lookupCause() {
113427
+ const allProperties = await this.#object.getAllProperties(false , false );
113428
+ const cause = allProperties.properties?.find(prop => prop.name === 'cause');
113429
+ return cause?.value;
113430
+ }
113431
+ }
113251
113432
  const descriptionLengthParenRegex = /\(([0-9]+)\)/;
113252
113433
  const descriptionLengthSquareRegex = /\[([0-9]+)\]/;
113253
113434
 
113435
+ const cssStreamParser = () => Promise.resolve({ startState: () => ({}) });
113436
+ class StringStream { constructor() {} }
113437
+
113254
113438
  // Copyright 2022 The Chromium Authors
113255
113439
  function createCssTokenizer() {
113256
113440
  async function tokenize(line, callback) {
113257
- const streamParser = await undefined();
113258
- const stream = new undefined(line, 4, 2);
113441
+ const streamParser = await cssStreamParser();
113442
+ const stream = new StringStream(line, 4, 2);
113259
113443
  const state = streamParser.startState(2);
113260
113444
  let lastPos = stream.pos;
113261
113445
  while (!stream.eol()) {
@@ -113601,12 +113785,17 @@ class Text {
113601
113785
  }
113602
113786
 
113603
113787
  // Copyright 2023 The Chromium Authors
113788
+ const objectUrlRegistry = new FinalizationRegistry(url => {
113789
+ URL.revokeObjectURL(url);
113790
+ });
113791
+ const MAX_BLOB_SIZE_BYTES = 10 * 1024 * 1024;
113604
113792
  class ContentData {
113605
113793
  mimeType;
113606
113794
  charset;
113607
113795
  #contentAsBase64;
113608
113796
  #contentAsText;
113609
113797
  #contentAsTextObj;
113798
+ #imagePreviewUrl;
113610
113799
  constructor(data, isBase64, mimeType, charset) {
113611
113800
  this.charset = charset || 'utf-8';
113612
113801
  if (isBase64) {
@@ -113633,12 +113822,7 @@ class ContentData {
113633
113822
  if (!this.isTextContent) {
113634
113823
  throw new Error('Cannot interpret binary data as text');
113635
113824
  }
113636
- const binaryString = window.atob(this.#contentAsBase64);
113637
- const len = binaryString.length;
113638
- const bytes = new Uint8Array(len);
113639
- for (let i = 0; i < len; i++) {
113640
- bytes[i] = binaryString.charCodeAt(i);
113641
- }
113825
+ const bytes = decode$1(this.#contentAsBase64);
113642
113826
  this.#contentAsText = new TextDecoder(this.charset).decode(bytes);
113643
113827
  return this.#contentAsText;
113644
113828
  }
@@ -113679,6 +113863,37 @@ class ContentData {
113679
113863
  }
113680
113864
  return contentAsDataURL(this.text, this.mimeType ?? '', false, 'utf-8');
113681
113865
  }
113866
+ asBlob() {
113867
+ if (this.#contentAsBase64 !== undefined) {
113868
+ if (this.#contentAsBase64.length * 0.75 > MAX_BLOB_SIZE_BYTES) {
113869
+ return null;
113870
+ }
113871
+ const bytes = decode$1(this.#contentAsBase64);
113872
+ return new Blob([bytes], { type: this.mimeType });
113873
+ }
113874
+ const text = this.#contentAsText ?? '';
113875
+ if (text.length > MAX_BLOB_SIZE_BYTES) {
113876
+ return null;
113877
+ }
113878
+ return new Blob([text], { type: this.mimeType });
113879
+ }
113880
+ asImagePreviewUrl() {
113881
+ if (this.#imagePreviewUrl) {
113882
+ return this.#imagePreviewUrl;
113883
+ }
113884
+ const url = this.asDataUrl();
113885
+ if (url !== null) {
113886
+ this.#imagePreviewUrl = url;
113887
+ return this.#imagePreviewUrl;
113888
+ }
113889
+ const blob = this.asBlob();
113890
+ if (blob === null) {
113891
+ return null;
113892
+ }
113893
+ this.#imagePreviewUrl = URL.createObjectURL(blob);
113894
+ objectUrlRegistry.register(this, this.#imagePreviewUrl);
113895
+ return this.#imagePreviewUrl;
113896
+ }
113682
113897
  asDeferedContent() {
113683
113898
  if (this.isTextContent) {
113684
113899
  return { content: this.text, isEncoded: false };
@@ -114155,11 +114370,12 @@ var ErrorType;
114155
114370
  ErrorType["ABORT"] = "ABORT";
114156
114371
  })(ErrorType || (ErrorType = {}));
114157
114372
  function setDebugDispatchHttpRequestEnabled(enabled) {
114373
+ const localStorage = HOST_RUNTIME.getLocalStorage();
114158
114374
  if (enabled) {
114159
- localStorage.setItem('debugDispatchHttpRequestEnabled', 'true');
114375
+ localStorage?.setItem('debugDispatchHttpRequestEnabled', 'true');
114160
114376
  }
114161
114377
  else {
114162
- localStorage.removeItem('debugDispatchHttpRequestEnabled');
114378
+ localStorage?.removeItem('debugDispatchHttpRequestEnabled');
114163
114379
  }
114164
114380
  }
114165
114381
  globalThis.setDebugDispatchHttpRequestEnabled = setDebugDispatchHttpRequestEnabled;
@@ -114859,9 +115075,7 @@ var DevtoolsExperiments;
114859
115075
  DevtoolsExperiments[DevtoolsExperiments["capture-node-creation-stacks"] = 1] = "capture-node-creation-stacks";
114860
115076
  DevtoolsExperiments[DevtoolsExperiments["live-heap-profile"] = 11] = "live-heap-profile";
114861
115077
  DevtoolsExperiments[DevtoolsExperiments["protocol-monitor"] = 13] = "protocol-monitor";
114862
- DevtoolsExperiments[DevtoolsExperiments["sampling-heap-profiler-timeline"] = 17] = "sampling-heap-profiler-timeline";
114863
115078
  DevtoolsExperiments[DevtoolsExperiments["timeline-invalidation-tracking"] = 26] = "timeline-invalidation-tracking";
114864
- DevtoolsExperiments[DevtoolsExperiments["apca"] = 39] = "apca";
114865
115079
  DevtoolsExperiments[DevtoolsExperiments["font-editor"] = 41] = "font-editor";
114866
115080
  DevtoolsExperiments[DevtoolsExperiments["instrumentation-breakpoints"] = 61] = "instrumentation-breakpoints";
114867
115081
  DevtoolsExperiments[DevtoolsExperiments["use-source-map-scopes"] = 76] = "use-source-map-scopes";
@@ -115551,10 +115765,10 @@ const generatedProperties = [
115551
115765
  "column-height",
115552
115766
  "column-rule-break",
115553
115767
  "column-rule-color",
115554
- "column-rule-edge-inset-end",
115555
- "column-rule-edge-inset-start",
115556
- "column-rule-interior-inset-end",
115557
- "column-rule-interior-inset-start",
115768
+ "column-rule-inset-cap-end",
115769
+ "column-rule-inset-cap-start",
115770
+ "column-rule-inset-junction-end",
115771
+ "column-rule-inset-junction-start",
115558
115772
  "column-rule-style",
115559
115773
  "column-rule-visibility-items",
115560
115774
  "column-rule-width",
@@ -115600,6 +115814,7 @@ const generatedProperties = [
115600
115814
  "flex-basis",
115601
115815
  "flex-direction",
115602
115816
  "flex-grow",
115817
+ "flex-line-count",
115603
115818
  "flex-shrink",
115604
115819
  "flex-wrap",
115605
115820
  "float",
@@ -115783,10 +115998,10 @@ const generatedProperties = [
115783
115998
  "row-gap",
115784
115999
  "row-rule-break",
115785
116000
  "row-rule-color",
115786
- "row-rule-edge-inset-end",
115787
- "row-rule-edge-inset-start",
115788
- "row-rule-interior-inset-end",
115789
- "row-rule-interior-inset-start",
116001
+ "row-rule-inset-cap-end",
116002
+ "row-rule-inset-cap-start",
116003
+ "row-rule-inset-junction-end",
116004
+ "row-rule-inset-junction-start",
115790
116005
  "row-rule-style",
115791
116006
  "row-rule-visibility-items",
115792
116007
  "row-rule-width",
@@ -115861,6 +116076,7 @@ const generatedProperties = [
115861
116076
  "text-decoration-color",
115862
116077
  "text-decoration-line",
115863
116078
  "text-decoration-skip-ink",
116079
+ "text-decoration-skip-spaces",
115864
116080
  "text-decoration-style",
115865
116081
  "text-decoration-thickness",
115866
116082
  "text-emphasis-color",
@@ -116205,7 +116421,7 @@ const generatedProperties = [
116205
116421
  {
116206
116422
  "inherited": true,
116207
116423
  "keywords": [
116208
- "auto",
116424
+ "ellipsis",
116209
116425
  "no-ellipsis"
116210
116426
  ],
116211
116427
  "name": "block-ellipsis"
@@ -116873,68 +117089,68 @@ const generatedProperties = [
116873
117089
  },
116874
117090
  {
116875
117091
  "longhands": [
116876
- "column-rule-edge-inset-start",
116877
- "column-rule-edge-inset-end"
117092
+ "column-rule-inset-cap-start",
117093
+ "column-rule-inset-cap-end",
117094
+ "column-rule-inset-junction-start",
117095
+ "column-rule-inset-junction-end"
116878
117096
  ],
116879
- "name": "column-rule-edge-inset"
117097
+ "name": "column-rule-inset"
116880
117098
  },
116881
117099
  {
116882
- "inherited": false,
116883
- "keywords": [
116884
- "overlap-join"
117100
+ "longhands": [
117101
+ "column-rule-inset-cap-start",
117102
+ "column-rule-inset-cap-end"
116885
117103
  ],
116886
- "name": "column-rule-edge-inset-end"
117104
+ "name": "column-rule-inset-cap"
116887
117105
  },
116888
117106
  {
116889
117107
  "inherited": false,
116890
117108
  "keywords": [
116891
117109
  "overlap-join"
116892
117110
  ],
116893
- "name": "column-rule-edge-inset-start"
117111
+ "name": "column-rule-inset-cap-end"
116894
117112
  },
116895
117113
  {
116896
- "longhands": [
116897
- "column-rule-edge-inset-start",
116898
- "column-rule-edge-inset-end",
116899
- "column-rule-interior-inset-start",
116900
- "column-rule-interior-inset-end"
117114
+ "inherited": false,
117115
+ "keywords": [
117116
+ "overlap-join"
116901
117117
  ],
116902
- "name": "column-rule-inset"
117118
+ "name": "column-rule-inset-cap-start"
116903
117119
  },
116904
117120
  {
116905
117121
  "longhands": [
116906
- "column-rule-edge-inset-end",
116907
- "column-rule-interior-inset-end"
117122
+ "column-rule-inset-cap-end",
117123
+ "column-rule-inset-junction-end"
116908
117124
  ],
116909
117125
  "name": "column-rule-inset-end"
116910
117126
  },
116911
117127
  {
116912
117128
  "longhands": [
116913
- "column-rule-edge-inset-start",
116914
- "column-rule-interior-inset-start"
116915
- ],
116916
- "name": "column-rule-inset-start"
116917
- },
116918
- {
116919
- "longhands": [
116920
- "column-rule-interior-inset-start",
116921
- "column-rule-interior-inset-end"
117129
+ "column-rule-inset-junction-start",
117130
+ "column-rule-inset-junction-end"
116922
117131
  ],
116923
- "name": "column-rule-interior-inset"
117132
+ "name": "column-rule-inset-junction"
116924
117133
  },
116925
117134
  {
116926
117135
  "inherited": false,
116927
117136
  "keywords": [
116928
117137
  "overlap-join"
116929
117138
  ],
116930
- "name": "column-rule-interior-inset-end"
117139
+ "name": "column-rule-inset-junction-end"
116931
117140
  },
116932
117141
  {
116933
117142
  "inherited": false,
116934
117143
  "keywords": [
116935
117144
  "overlap-join"
116936
117145
  ],
116937
- "name": "column-rule-interior-inset-start"
117146
+ "name": "column-rule-inset-junction-start"
117147
+ },
117148
+ {
117149
+ "longhands": [
117150
+ "column-rule-inset-cap-start",
117151
+ "column-rule-inset-junction-start"
117152
+ ],
117153
+ "name": "column-rule-inset-start"
116938
117154
  },
116939
117155
  {
116940
117156
  "keywords": [
@@ -117074,7 +117290,7 @@ const generatedProperties = [
117074
117290
  },
117075
117291
  {
117076
117292
  "keywords": [
117077
- "auto",
117293
+ "normal",
117078
117294
  "collapse",
117079
117295
  "-webkit-legacy"
117080
117296
  ],
@@ -117438,6 +117654,9 @@ const generatedProperties = [
117438
117654
  {
117439
117655
  "name": "flex-grow"
117440
117656
  },
117657
+ {
117658
+ "name": "flex-line-count"
117659
+ },
117441
117660
  {
117442
117661
  "name": "flex-shrink"
117443
117662
  },
@@ -118966,68 +119185,68 @@ const generatedProperties = [
118966
119185
  },
118967
119186
  {
118968
119187
  "longhands": [
118969
- "row-rule-edge-inset-start",
118970
- "row-rule-edge-inset-end"
119188
+ "row-rule-inset-cap-start",
119189
+ "row-rule-inset-cap-end",
119190
+ "row-rule-inset-junction-start",
119191
+ "row-rule-inset-junction-end"
118971
119192
  ],
118972
- "name": "row-rule-edge-inset"
119193
+ "name": "row-rule-inset"
118973
119194
  },
118974
119195
  {
118975
- "inherited": false,
118976
- "keywords": [
118977
- "overlap-join"
119196
+ "longhands": [
119197
+ "row-rule-inset-cap-start",
119198
+ "row-rule-inset-cap-end"
118978
119199
  ],
118979
- "name": "row-rule-edge-inset-end"
119200
+ "name": "row-rule-inset-cap"
118980
119201
  },
118981
119202
  {
118982
119203
  "inherited": false,
118983
119204
  "keywords": [
118984
119205
  "overlap-join"
118985
119206
  ],
118986
- "name": "row-rule-edge-inset-start"
119207
+ "name": "row-rule-inset-cap-end"
118987
119208
  },
118988
119209
  {
118989
- "longhands": [
118990
- "row-rule-edge-inset-start",
118991
- "row-rule-edge-inset-end",
118992
- "row-rule-interior-inset-start",
118993
- "row-rule-interior-inset-end"
119210
+ "inherited": false,
119211
+ "keywords": [
119212
+ "overlap-join"
118994
119213
  ],
118995
- "name": "row-rule-inset"
119214
+ "name": "row-rule-inset-cap-start"
118996
119215
  },
118997
119216
  {
118998
119217
  "longhands": [
118999
- "row-rule-edge-inset-end",
119000
- "row-rule-interior-inset-end"
119218
+ "row-rule-inset-cap-end",
119219
+ "row-rule-inset-junction-end"
119001
119220
  ],
119002
119221
  "name": "row-rule-inset-end"
119003
119222
  },
119004
119223
  {
119005
119224
  "longhands": [
119006
- "row-rule-edge-inset-start",
119007
- "row-rule-interior-inset-start"
119225
+ "row-rule-inset-junction-start",
119226
+ "row-rule-inset-junction-end"
119008
119227
  ],
119009
- "name": "row-rule-inset-start"
119010
- },
119011
- {
119012
- "longhands": [
119013
- "row-rule-interior-inset-start",
119014
- "row-rule-interior-inset-end"
119015
- ],
119016
- "name": "row-rule-interior-inset"
119228
+ "name": "row-rule-inset-junction"
119017
119229
  },
119018
119230
  {
119019
119231
  "inherited": false,
119020
119232
  "keywords": [
119021
119233
  "overlap-join"
119022
119234
  ],
119023
- "name": "row-rule-interior-inset-end"
119235
+ "name": "row-rule-inset-junction-end"
119024
119236
  },
119025
119237
  {
119026
119238
  "inherited": false,
119027
119239
  "keywords": [
119028
119240
  "overlap-join"
119029
119241
  ],
119030
- "name": "row-rule-interior-inset-start"
119242
+ "name": "row-rule-inset-junction-start"
119243
+ },
119244
+ {
119245
+ "longhands": [
119246
+ "row-rule-inset-cap-start",
119247
+ "row-rule-inset-junction-start"
119248
+ ],
119249
+ "name": "row-rule-inset-start"
119031
119250
  },
119032
119251
  {
119033
119252
  "keywords": [
@@ -119076,7 +119295,7 @@ const generatedProperties = [
119076
119295
  "inherited": true,
119077
119296
  "keywords": [
119078
119297
  "auto",
119079
- "none"
119298
+ "spaces"
119080
119299
  ],
119081
119300
  "name": "ruby-overhang"
119082
119301
  },
@@ -119115,52 +119334,52 @@ const generatedProperties = [
119115
119334
  },
119116
119335
  {
119117
119336
  "longhands": [
119118
- "row-rule-edge-inset-start",
119119
- "row-rule-edge-inset-end",
119120
- "column-rule-edge-inset-start",
119121
- "column-rule-edge-inset-end"
119337
+ "row-rule-inset-cap-start",
119338
+ "row-rule-inset-cap-end",
119339
+ "row-rule-inset-junction-start",
119340
+ "row-rule-inset-junction-end",
119341
+ "column-rule-inset-cap-start",
119342
+ "column-rule-inset-cap-end",
119343
+ "column-rule-inset-junction-start",
119344
+ "column-rule-inset-junction-end"
119122
119345
  ],
119123
- "name": "rule-edge-inset"
119346
+ "name": "rule-inset"
119124
119347
  },
119125
119348
  {
119126
119349
  "longhands": [
119127
- "row-rule-edge-inset-start",
119128
- "row-rule-edge-inset-end",
119129
- "row-rule-interior-inset-start",
119130
- "row-rule-interior-inset-end",
119131
- "column-rule-edge-inset-start",
119132
- "column-rule-edge-inset-end",
119133
- "column-rule-interior-inset-start",
119134
- "column-rule-interior-inset-end"
119350
+ "row-rule-inset-cap-start",
119351
+ "row-rule-inset-cap-end",
119352
+ "column-rule-inset-cap-start",
119353
+ "column-rule-inset-cap-end"
119135
119354
  ],
119136
- "name": "rule-inset"
119355
+ "name": "rule-inset-cap"
119137
119356
  },
119138
119357
  {
119139
119358
  "longhands": [
119140
- "column-rule-edge-inset-end",
119141
- "column-rule-interior-inset-end",
119142
- "row-rule-edge-inset-end",
119143
- "row-rule-interior-inset-end"
119359
+ "column-rule-inset-cap-end",
119360
+ "column-rule-inset-junction-end",
119361
+ "row-rule-inset-cap-end",
119362
+ "row-rule-inset-junction-end"
119144
119363
  ],
119145
119364
  "name": "rule-inset-end"
119146
119365
  },
119147
119366
  {
119148
119367
  "longhands": [
119149
- "column-rule-edge-inset-start",
119150
- "column-rule-interior-inset-start",
119151
- "row-rule-edge-inset-start",
119152
- "row-rule-interior-inset-start"
119368
+ "row-rule-inset-junction-start",
119369
+ "row-rule-inset-junction-end",
119370
+ "column-rule-inset-junction-start",
119371
+ "column-rule-inset-junction-end"
119153
119372
  ],
119154
- "name": "rule-inset-start"
119373
+ "name": "rule-inset-junction"
119155
119374
  },
119156
119375
  {
119157
119376
  "longhands": [
119158
- "row-rule-interior-inset-start",
119159
- "row-rule-interior-inset-end",
119160
- "column-rule-interior-inset-start",
119161
- "column-rule-interior-inset-end"
119377
+ "column-rule-inset-cap-start",
119378
+ "column-rule-inset-junction-start",
119379
+ "row-rule-inset-cap-start",
119380
+ "row-rule-inset-junction-start"
119162
119381
  ],
119163
- "name": "rule-interior-inset"
119382
+ "name": "rule-inset-start"
119164
119383
  },
119165
119384
  {
119166
119385
  "inherited": false,
@@ -119655,6 +119874,16 @@ const generatedProperties = [
119655
119874
  ],
119656
119875
  "name": "text-decoration-skip-ink"
119657
119876
  },
119877
+ {
119878
+ "inherited": true,
119879
+ "keywords": [
119880
+ "none",
119881
+ "start",
119882
+ "end",
119883
+ "all"
119884
+ ],
119885
+ "name": "text-decoration-skip-spaces"
119886
+ },
119658
119887
  {
119659
119888
  "keywords": [
119660
119889
  "solid",
@@ -120440,7 +120669,7 @@ const generatedPropertyValues = {
120440
120669
  },
120441
120670
  "block-ellipsis": {
120442
120671
  "values": [
120443
- "auto",
120672
+ "ellipsis",
120444
120673
  "no-ellipsis"
120445
120674
  ]
120446
120675
  },
@@ -120770,22 +120999,22 @@ const generatedPropertyValues = {
120770
120999
  "currentcolor"
120771
121000
  ]
120772
121001
  },
120773
- "column-rule-edge-inset-end": {
121002
+ "column-rule-inset-cap-end": {
120774
121003
  "values": [
120775
121004
  "overlap-join"
120776
121005
  ]
120777
121006
  },
120778
- "column-rule-edge-inset-start": {
121007
+ "column-rule-inset-cap-start": {
120779
121008
  "values": [
120780
121009
  "overlap-join"
120781
121010
  ]
120782
121011
  },
120783
- "column-rule-interior-inset-end": {
121012
+ "column-rule-inset-junction-end": {
120784
121013
  "values": [
120785
121014
  "overlap-join"
120786
121015
  ]
120787
121016
  },
120788
- "column-rule-interior-inset-start": {
121017
+ "column-rule-inset-junction-start": {
120789
121018
  "values": [
120790
121019
  "overlap-join"
120791
121020
  ]
@@ -120883,7 +121112,7 @@ const generatedPropertyValues = {
120883
121112
  },
120884
121113
  "continue": {
120885
121114
  "values": [
120886
- "auto",
121115
+ "normal",
120887
121116
  "collapse",
120888
121117
  "-webkit-legacy"
120889
121118
  ]
@@ -121941,22 +122170,22 @@ const generatedPropertyValues = {
121941
122170
  "currentcolor"
121942
122171
  ]
121943
122172
  },
121944
- "row-rule-edge-inset-end": {
122173
+ "row-rule-inset-cap-end": {
121945
122174
  "values": [
121946
122175
  "overlap-join"
121947
122176
  ]
121948
122177
  },
121949
- "row-rule-edge-inset-start": {
122178
+ "row-rule-inset-cap-start": {
121950
122179
  "values": [
121951
122180
  "overlap-join"
121952
122181
  ]
121953
122182
  },
121954
- "row-rule-interior-inset-end": {
122183
+ "row-rule-inset-junction-end": {
121955
122184
  "values": [
121956
122185
  "overlap-join"
121957
122186
  ]
121958
122187
  },
121959
- "row-rule-interior-inset-start": {
122188
+ "row-rule-inset-junction-start": {
121960
122189
  "values": [
121961
122190
  "overlap-join"
121962
122191
  ]
@@ -122001,7 +122230,7 @@ const generatedPropertyValues = {
122001
122230
  "ruby-overhang": {
122002
122231
  "values": [
122003
122232
  "auto",
122004
- "none"
122233
+ "spaces"
122005
122234
  ]
122006
122235
  },
122007
122236
  "ruby-position": {
@@ -122263,6 +122492,14 @@ const generatedPropertyValues = {
122263
122492
  "all"
122264
122493
  ]
122265
122494
  },
122495
+ "text-decoration-skip-spaces": {
122496
+ "values": [
122497
+ "none",
122498
+ "start",
122499
+ "end",
122500
+ "all"
122501
+ ]
122502
+ },
122266
122503
  "text-decoration-style": {
122267
122504
  "values": [
122268
122505
  "solid",
@@ -125218,8 +125455,8 @@ class LinkableNameMatcher extends matcherBase(LinkableNameMatch) {
125218
125455
  if (!currentDeclarationNodes) {
125219
125456
  return null;
125220
125457
  }
125221
- const computedText = matching.getComputedTextRange(currentDeclarationNodes[0], node);
125222
- const tokenized = tokenizeDeclaration('--p', computedText);
125458
+ matching.getComputedTextRange(currentDeclarationNodes[0], node);
125459
+ const tokenized = tokenizeDeclaration();
125223
125460
  if (!tokenized) {
125224
125461
  return null;
125225
125462
  }
@@ -125785,41 +126022,6 @@ class EnvFunctionMatcher extends matcherBase(EnvFunctionMatch) {
125785
126022
  function stripComments(value) {
125786
126023
  return value.replaceAll(/(\/\*(?:.|\s)*?\*\/)/g, '');
125787
126024
  }
125788
- function nodeText(node, text) {
125789
- return nodeTextRange(node, node, text);
125790
- }
125791
- function nodeTextRange(from, to, text) {
125792
- return text.substring(from.from, to.to);
125793
- }
125794
- class SyntaxTree {
125795
- propertyValue;
125796
- rule;
125797
- tree;
125798
- trailingNodes;
125799
- propertyName;
125800
- constructor(propertyValue, rule, tree, propertyName, trailingNodes = []) {
125801
- this.propertyName = propertyName;
125802
- this.propertyValue = propertyValue;
125803
- this.rule = rule;
125804
- this.tree = tree;
125805
- this.trailingNodes = trailingNodes;
125806
- }
125807
- text(node) {
125808
- if (node === null) {
125809
- return '';
125810
- }
125811
- return nodeText(node ?? this.tree, this.rule);
125812
- }
125813
- textRange(from, to) {
125814
- if (!from || !to) {
125815
- return '';
125816
- }
125817
- return nodeTextRange(from, to, this.rule);
125818
- }
125819
- subtree(node) {
125820
- return new SyntaxTree(this.propertyValue, this.rule, node);
125821
- }
125822
- }
125823
126025
  class TreeWalker {
125824
126026
  ast;
125825
126027
  constructor(ast) {
@@ -126100,7 +126302,7 @@ class ComputedText {
126100
126302
  #countTopLevelValuesInStringPiece(piece) {
126101
126303
  let count = this.#topLevelValueCounts.get(piece);
126102
126304
  if (count === undefined) {
126103
- count = ASTUtils.siblings(ASTUtils.declValue(tokenizeDeclaration('--p', piece)?.tree ?? null)).length;
126305
+ count = ASTUtils.siblings(ASTUtils.declValue(tokenizeDeclaration()?.tree ?? null)).length;
126104
126306
  this.#topLevelValueCounts.set(piece, count);
126105
126307
  }
126106
126308
  return count;
@@ -126190,53 +126392,22 @@ var ASTUtils;
126190
126392
  }
126191
126393
  ASTUtils.equals = equals;
126192
126394
  })(ASTUtils || (ASTUtils = {}));
126193
- function declaration(rule) {
126194
- const cssParser = undefined.cssLanguage.parser;
126195
- return cssParser.parse(rule).topNode.getChild('RuleSet')?.getChild('Block')?.getChild('Declaration') ?? null;
126196
- }
126197
126395
  function tokenizeDeclaration(propertyName, propertyValue) {
126198
- const name = tokenizePropertyName(propertyName);
126396
+ const name = tokenizePropertyName();
126199
126397
  if (!name) {
126200
126398
  return null;
126201
126399
  }
126202
- const rule = `*{${name}: ${propertyValue};}`;
126203
- const decl = declaration(rule);
126204
- if (!decl || decl.type.isError) {
126205
- return null;
126206
- }
126207
- const childNodes = ASTUtils.children(decl);
126208
- if (childNodes.length < 2) {
126209
- return null;
126210
- }
126211
- const [varName, colon, tree] = childNodes;
126212
- if (!varName || varName.type.isError || !colon || colon.type.isError || tree?.type.isError) {
126213
- return null;
126214
- }
126215
- const trailingNodes = ASTUtils.siblings(decl).slice(1);
126216
- const [semicolon, brace] = trailingNodes.splice(trailingNodes.length - 2, 2);
126217
- if (semicolon?.name !== ';' && brace?.name !== '}') {
126218
- return null;
126219
- }
126220
- const ast = new SyntaxTree(propertyValue, rule, decl, name, trailingNodes);
126221
- if (ast.text(varName) !== name || colon.name !== ':') {
126400
+ {
126222
126401
  return null;
126223
126402
  }
126224
- return ast;
126225
126403
  }
126226
126404
  function tokenizePropertyName(name) {
126227
- const rule = `*{${name}: inherit;}`;
126228
- const decl = declaration(rule);
126229
- if (!decl || decl.type.isError) {
126230
- return null;
126231
- }
126232
- const propertyName = decl.getChild('PropertyName') ?? decl.getChild('VariableName');
126233
- if (!propertyName) {
126405
+ {
126234
126406
  return null;
126235
126407
  }
126236
- return nodeText(propertyName, rule);
126237
126408
  }
126238
126409
  function matchDeclaration(name, value, matchers) {
126239
- const ast = tokenizeDeclaration(name, value);
126410
+ const ast = tokenizeDeclaration();
126240
126411
  const matchedResult = ast && BottomUpTreeMatching.walk(ast, matchers);
126241
126412
  ast?.trailingNodes.forEach(n => matchedResult?.matchText(n));
126242
126413
  return matchedResult;
@@ -128587,7 +128758,7 @@ class DOMInheritanceCascade {
128587
128758
  if (rawValue === null) {
128588
128759
  return null;
128589
128760
  }
128590
- const ast = tokenizeDeclaration('--property', rawValue);
128761
+ const ast = tokenizeDeclaration();
128591
128762
  if (!ast) {
128592
128763
  return null;
128593
128764
  }
@@ -129770,7 +129941,7 @@ class Base64TextDecoder {
129770
129941
  void this.#decoder.readable.pipeTo(new WritableStream({ write: onTextChunk }));
129771
129942
  }
129772
129943
  async addBase64Chunk(chunk) {
129773
- const binString = window.atob(chunk);
129944
+ const binString = globalThis.atob(chunk);
129774
129945
  const bytes = Uint8Array.from(binString, m => m.codePointAt(0));
129775
129946
  await this.#writer.ready;
129776
129947
  await this.#writer.write(bytes);
@@ -131211,16 +131382,8 @@ class NetworkRequest extends ObjectWrapper {
131211
131382
  if (ContentData.isError(contentData)) {
131212
131383
  return;
131213
131384
  }
131214
- let imageSrc = contentData.asDataUrl();
131215
- if (imageSrc === null && !this.#failed) {
131216
- const cacheControl = this.responseHeaderValue('cache-control') || '';
131217
- if (!cacheControl.includes('no-cache')) {
131218
- imageSrc = this.#url;
131219
- }
131220
- }
131221
- if (imageSrc !== null) {
131222
- image.src = imageSrc;
131223
- }
131385
+ const imageSrc = contentData.asImagePreviewUrl();
131386
+ image.src = imageSrc ?? '';
131224
131387
  }
131225
131388
  initiator() {
131226
131389
  return this.#initiator || null;
@@ -131998,10 +132161,14 @@ class NetworkManager extends SDKModel {
131998
132161
  }
131999
132162
  void this.#networkAgent.invoke_enable({
132000
132163
  maxPostDataSize: MAX_EAGER_POST_REQUEST_BODY_LENGTH,
132001
- enableDurableMessages: hostConfig.devToolsEnableDurableMessages?.enabled,
132002
132164
  maxTotalBufferSize: MAX_RESPONSE_BODY_TOTAL_BUFFER_LENGTH,
132003
132165
  reportDirectSocketTraffic: true,
132004
132166
  });
132167
+ if (hostConfig.devToolsEnableDurableMessages?.enabled) {
132168
+ const preserveLogSetting = settings.moduleSetting('network-log.preserve-log');
132169
+ this.#updateDurableMessages(preserveLogSetting.get());
132170
+ preserveLogSetting.addChangeListener(this.preserveLogChanged, this);
132171
+ }
132005
132172
  void this.#networkAgent.invoke_setAttachDebugStack({ enabled: true });
132006
132173
  this.#bypassServiceWorkerSetting = settings.createSetting('bypass-service-worker', false);
132007
132174
  if (this.#bypassServiceWorkerSetting.get()) {
@@ -132099,7 +132266,7 @@ class NetworkManager extends SDKModel {
132099
132266
  try {
132100
132267
  const { postData, base64Encoded } = await manager.#networkAgent.invoke_getRequestPostData({ requestId });
132101
132268
  if (base64Encoded && postData) {
132102
- const binaryString = window.atob(postData);
132269
+ const binaryString = globalThis.atob(postData);
132103
132270
  const bytes = new Uint8Array(binaryString.length);
132104
132271
  for (let i = 0; i < binaryString.length; i++) {
132105
132272
  bytes[i] = binaryString.charCodeAt(i);
@@ -132171,9 +132338,23 @@ class NetworkManager extends SDKModel {
132171
132338
  cacheDisabledSettingChanged({ data: enabled }) {
132172
132339
  void this.#networkAgent.invoke_setCacheDisabled({ cacheDisabled: enabled });
132173
132340
  }
132341
+ preserveLogChanged({ data: enabled }) {
132342
+ this.#updateDurableMessages(enabled);
132343
+ }
132344
+ #updateDurableMessages(enabled) {
132345
+ if (enabled) {
132346
+ void this.#networkAgent.invoke_configureDurableMessages({
132347
+ maxTotalBufferSize: MAX_RESPONSE_BODY_TOTAL_BUFFER_LENGTH,
132348
+ });
132349
+ }
132350
+ else {
132351
+ void this.#networkAgent.invoke_configureDurableMessages({});
132352
+ }
132353
+ }
132174
132354
  dispose() {
132175
132355
  const settings = this.target().targetManager().settings;
132176
132356
  settings.moduleSetting('cache-disabled').removeChangeListener(this.cacheDisabledSettingChanged, this);
132357
+ settings.moduleSetting('network-log.preserve-log').removeChangeListener(this.preserveLogChanged, this);
132177
132358
  }
132178
132359
  bypassServiceWorkerChanged() {
132179
132360
  void this.#networkAgent.invoke_setBypassServiceWorker({ bypass: this.#bypassServiceWorkerSetting.get() });
@@ -132191,6 +132372,9 @@ class NetworkManager extends SDKModel {
132191
132372
  async enableDeviceBoundSessions(enable = true) {
132192
132373
  return await this.#networkAgent.invoke_enableDeviceBoundSessions({ enable });
132193
132374
  }
132375
+ async deleteDeviceBoundSession(key) {
132376
+ return await this.#networkAgent.invoke_deleteDeviceBoundSession({ key });
132377
+ }
132194
132378
  async loadNetworkResource(frameId, url, options) {
132195
132379
  const result = await this.#networkAgent.invoke_loadNetworkResource({ frameId: frameId ?? undefined, url, options });
132196
132380
  if (result.getError()) {
@@ -138205,8 +138389,7 @@ class OverlayModel extends SDKModel {
138205
138389
  gridHighlightConfig: {},
138206
138390
  flexContainerHighlightConfig: {},
138207
138391
  flexItemHighlightConfig: {},
138208
- contrastAlgorithm: experiments.isEnabled(ExperimentName.APCA) ?
138209
- "apca" :
138392
+ contrastAlgorithm: settings.moduleSetting('apca').get() ? "apca" :
138210
138393
  "aa" ,
138211
138394
  };
138212
138395
  if (mode === 'all' || mode === 'content') {
@@ -141212,7 +141395,8 @@ class Resource {
141212
141395
  if (ContentData.isError(contentData)) {
141213
141396
  return;
141214
141397
  }
141215
- image.src = contentData.asDataUrl() ?? this.#url;
141398
+ const imageSrc = contentData.asImagePreviewUrl();
141399
+ image.src = imageSrc ?? '';
141216
141400
  }
141217
141401
  async innerRequestContent() {
141218
141402
  if (this.request) {
@@ -148149,6 +148333,169 @@ class WebAuthnDispatcher {
148149
148333
  }
148150
148334
  SDKModel.register(WebAuthnModel, { capabilities: 65536 , autostart: false });
148151
148335
 
148336
+ // Copyright 2026 The Chromium Authors
148337
+ const CALL_FRAME_REGEX = /^\s*at\s+/;
148338
+ function parseRawFramesFromErrorStack(stack) {
148339
+ const lines = stack.split('\n');
148340
+ const firstAtLineIndex = findFramesStartLine(lines);
148341
+ const rawFrames = [];
148342
+ if (firstAtLineIndex === -1) {
148343
+ return rawFrames;
148344
+ }
148345
+ for (let i = firstAtLineIndex; i < lines.length; ++i) {
148346
+ const line = lines[i];
148347
+ const match = CALL_FRAME_REGEX.exec(line);
148348
+ if (!match) {
148349
+ if (line.trim() === '') {
148350
+ continue;
148351
+ }
148352
+ return null;
148353
+ }
148354
+ let lineContent = line.substring(match[0].length);
148355
+ let isAsync = false;
148356
+ if (lineContent.startsWith('async ')) {
148357
+ isAsync = true;
148358
+ lineContent = lineContent.substring(6);
148359
+ }
148360
+ let isConstructor = false;
148361
+ if (lineContent.startsWith('new ')) {
148362
+ isConstructor = true;
148363
+ lineContent = lineContent.substring(4);
148364
+ }
148365
+ let functionName = '';
148366
+ let url = '';
148367
+ let lineNumber = -1;
148368
+ let columnNumber = -1;
148369
+ let typeName;
148370
+ let methodName;
148371
+ let isEval = false;
148372
+ let isWasm = false;
148373
+ let wasmModuleName;
148374
+ let wasmFunctionIndex;
148375
+ let promiseIndex;
148376
+ let evalOrigin;
148377
+ const openParenIndex = lineContent.indexOf(' (');
148378
+ if (lineContent.endsWith(')') && openParenIndex !== -1) {
148379
+ functionName = lineContent.substring(0, openParenIndex).trim();
148380
+ let location = lineContent.substring(openParenIndex + 2, lineContent.length - 1);
148381
+ if (location.startsWith('eval at ')) {
148382
+ isEval = true;
148383
+ const commaIndex = location.lastIndexOf(', ');
148384
+ let evalOriginStr = location;
148385
+ if (commaIndex !== -1) {
148386
+ evalOriginStr = location.substring(0, commaIndex);
148387
+ location = location.substring(commaIndex + 2);
148388
+ }
148389
+ else {
148390
+ location = '';
148391
+ }
148392
+ if (evalOriginStr.startsWith('eval at ')) {
148393
+ evalOriginStr = evalOriginStr.substring(8);
148394
+ }
148395
+ const innerOpenParen = evalOriginStr.indexOf(' (');
148396
+ let evalFunctionName = evalOriginStr;
148397
+ let evalLocation = '';
148398
+ if (innerOpenParen !== -1) {
148399
+ evalFunctionName = evalOriginStr.substring(0, innerOpenParen).trim();
148400
+ evalLocation = evalOriginStr.substring(innerOpenParen + 2, evalOriginStr.length - 1);
148401
+ evalOrigin = parseRawFramesFromErrorStack(` at ${evalFunctionName} (${evalLocation})`)?.[0];
148402
+ }
148403
+ else {
148404
+ evalOrigin = parseRawFramesFromErrorStack(` at ${evalFunctionName}`)?.[0];
148405
+ }
148406
+ }
148407
+ if (location.startsWith('index ')) {
148408
+ promiseIndex = parseInt(location.substring(6), 10);
148409
+ url = '';
148410
+ }
148411
+ else if (location === '<anonymous>' || location === 'native') {
148412
+ url = '';
148413
+ }
148414
+ else if (location.includes(':wasm-function[')) {
148415
+ isWasm = true;
148416
+ const wasmMatch = /^(.*):wasm-function\[(\d+)\]:(0x[0-9a-fA-F]+)$/.exec(location);
148417
+ if (wasmMatch) {
148418
+ url = wasmMatch[1];
148419
+ wasmFunctionIndex = parseInt(wasmMatch[2], 10);
148420
+ columnNumber = parseInt(wasmMatch[3], 16);
148421
+ }
148422
+ }
148423
+ else {
148424
+ const splitResult = ParsedURL.splitLineAndColumn(location);
148425
+ url = splitResult.url;
148426
+ lineNumber = splitResult.lineNumber ?? -1;
148427
+ columnNumber = splitResult.columnNumber ?? -1;
148428
+ }
148429
+ }
148430
+ else {
148431
+ const splitResult = ParsedURL.splitLineAndColumn(lineContent);
148432
+ url = splitResult.url;
148433
+ lineNumber = splitResult.lineNumber ?? -1;
148434
+ columnNumber = splitResult.columnNumber ?? -1;
148435
+ }
148436
+ if (functionName) {
148437
+ const aliasMatch = /(.*)\s+\[as\s+(.*)\]/.exec(functionName);
148438
+ if (aliasMatch) {
148439
+ methodName = aliasMatch[2];
148440
+ functionName = aliasMatch[1];
148441
+ }
148442
+ const dotIndex = functionName.indexOf('.');
148443
+ if (dotIndex !== -1) {
148444
+ typeName = functionName.substring(0, dotIndex);
148445
+ methodName = methodName ?? functionName.substring(dotIndex + 1);
148446
+ }
148447
+ if (isWasm && typeName) {
148448
+ wasmModuleName = typeName;
148449
+ }
148450
+ }
148451
+ rawFrames.push({
148452
+ url: url,
148453
+ functionName,
148454
+ lineNumber,
148455
+ columnNumber,
148456
+ parsedFrameInfo: {
148457
+ isAsync,
148458
+ isConstructor,
148459
+ isEval,
148460
+ evalOrigin,
148461
+ isWasm,
148462
+ wasmModuleName,
148463
+ wasmFunctionIndex,
148464
+ typeName,
148465
+ methodName,
148466
+ promiseIndex,
148467
+ },
148468
+ });
148469
+ }
148470
+ return rawFrames;
148471
+ }
148472
+ function findFramesStartLine(lines) {
148473
+ return lines.findIndex(line => CALL_FRAME_REGEX.test(line));
148474
+ }
148475
+ function parseMessage(stack) {
148476
+ const lines = stack.split('\n');
148477
+ const firstAtLineIndex = findFramesStartLine(lines);
148478
+ if (firstAtLineIndex !== -1) {
148479
+ return lines.slice(0, firstAtLineIndex).join('\n');
148480
+ }
148481
+ return stack;
148482
+ }
148483
+ function augmentRawFramesWithScriptIds(rawFrames, protocolStackTrace) {
148484
+ for (const rawFrame of rawFrames) {
148485
+ const isWasm = rawFrame.parsedFrameInfo?.isWasm;
148486
+ const protocolFrame = protocolStackTrace.callFrames.find(frame => {
148487
+ if (isWasm) {
148488
+ return rawFrame.url === frame.url && rawFrame.columnNumber === frame.columnNumber;
148489
+ }
148490
+ return rawFrame.url === frame.url && rawFrame.lineNumber === frame.lineNumber &&
148491
+ rawFrame.columnNumber === frame.columnNumber;
148492
+ });
148493
+ if (protocolFrame) {
148494
+ rawFrame.scriptId = protocolFrame.scriptId;
148495
+ }
148496
+ }
148497
+ }
148498
+
148152
148499
  // Copyright 2025 The Chromium Authors
148153
148500
  class StackTraceImpl extends ObjectWrapper {
148154
148501
  syncFragment;
@@ -148157,7 +148504,9 @@ class StackTraceImpl extends ObjectWrapper {
148157
148504
  super();
148158
148505
  this.syncFragment = syncFragment;
148159
148506
  this.asyncFragments = asyncFragments;
148160
- const fragment = syncFragment instanceof DebuggableFragmentImpl ? syncFragment.fragment : syncFragment;
148507
+ const fragment = (syncFragment instanceof DebuggableFragmentImpl || syncFragment instanceof ParsedErrorStackFragmentImpl) ?
148508
+ syncFragment.fragment :
148509
+ syncFragment;
148161
148510
  fragment.stackTraces.add(this);
148162
148511
  this.asyncFragments.forEach(asyncFragment => asyncFragment.fragment.stackTraces.add(this));
148163
148512
  }
@@ -148215,6 +148564,88 @@ class FrameImpl {
148215
148564
  this.rawName = rawName;
148216
148565
  }
148217
148566
  }
148567
+ class ParsedErrorStackFragmentImpl {
148568
+ fragment;
148569
+ constructor(fragment) {
148570
+ this.fragment = fragment;
148571
+ }
148572
+ get frames() {
148573
+ if (!this.fragment.node) {
148574
+ return [];
148575
+ }
148576
+ const frames = [];
148577
+ for (const node of this.fragment.node.getCallStack()) {
148578
+ for (const frame of node.frames) {
148579
+ frames.push(new ParsedErrorStackFrameImpl(frame, node.parsedFrameInfo, node.evalOriginFrames));
148580
+ }
148581
+ }
148582
+ return frames;
148583
+ }
148584
+ }
148585
+ class ParsedErrorStackFrameImpl {
148586
+ #frame;
148587
+ #parsedFrameInfo;
148588
+ #evalOriginFrames;
148589
+ constructor(frame, parsedFrameInfo, evalOriginFrames) {
148590
+ this.#frame = frame;
148591
+ this.#parsedFrameInfo = parsedFrameInfo;
148592
+ this.#evalOriginFrames = evalOriginFrames;
148593
+ }
148594
+ get url() {
148595
+ return this.#frame.url;
148596
+ }
148597
+ get uiSourceCode() {
148598
+ return this.#frame.uiSourceCode;
148599
+ }
148600
+ get name() {
148601
+ return this.#frame.name;
148602
+ }
148603
+ get line() {
148604
+ return this.#frame.line;
148605
+ }
148606
+ get column() {
148607
+ return this.#frame.column;
148608
+ }
148609
+ get missingDebugInfo() {
148610
+ return this.#frame.missingDebugInfo;
148611
+ }
148612
+ get rawName() {
148613
+ return this.#frame.rawName;
148614
+ }
148615
+ get isAsync() {
148616
+ return this.#parsedFrameInfo?.isAsync;
148617
+ }
148618
+ get isConstructor() {
148619
+ return this.#parsedFrameInfo?.isConstructor;
148620
+ }
148621
+ get isEval() {
148622
+ return this.#parsedFrameInfo?.isEval;
148623
+ }
148624
+ get evalOrigin() {
148625
+ if (!this.#evalOriginFrames || this.#evalOriginFrames.length === 0) {
148626
+ return undefined;
148627
+ }
148628
+ return new ParsedErrorStackFrameImpl(this.#evalOriginFrames[0], this.#parsedFrameInfo?.evalOrigin?.parsedFrameInfo);
148629
+ }
148630
+ get isWasm() {
148631
+ return this.#parsedFrameInfo?.isWasm;
148632
+ }
148633
+ get wasmModuleName() {
148634
+ return this.#parsedFrameInfo?.wasmModuleName;
148635
+ }
148636
+ get wasmFunctionIndex() {
148637
+ return this.#parsedFrameInfo?.wasmFunctionIndex;
148638
+ }
148639
+ get typeName() {
148640
+ return this.#parsedFrameInfo?.typeName;
148641
+ }
148642
+ get methodName() {
148643
+ return this.#parsedFrameInfo?.methodName;
148644
+ }
148645
+ get promiseIndex() {
148646
+ return this.#parsedFrameInfo?.promiseIndex;
148647
+ }
148648
+ }
148218
148649
  class DebuggableFragmentImpl {
148219
148650
  fragment;
148220
148651
  callFrames;
@@ -148273,6 +148704,13 @@ class DebuggableFrameImpl {
148273
148704
  }
148274
148705
 
148275
148706
  // Copyright 2022 The Chromium Authors
148707
+ function concatErrorDescriptionAndIssueSummary(description, issueSummary) {
148708
+ const pos = description.indexOf('\n');
148709
+ const prefix = pos === -1 ? description : description.substring(0, pos);
148710
+ const suffix = pos === -1 ? '' : description.substring(pos);
148711
+ description = `${prefix}. ${issueSummary}${suffix}`;
148712
+ return description;
148713
+ }
148276
148714
  function parseSourcePositionsFromErrorStack(runtimeModel, stack) {
148277
148715
  if (!(/\n\s*at\s/.test(stack) || stack.startsWith('SyntaxError:'))) {
148278
148716
  return null;
@@ -148376,6 +148814,7 @@ function framesMatch(parsedFrame, protocolFrame) {
148376
148814
  var ErrorStackParser = /*#__PURE__*/Object.freeze({
148377
148815
  __proto__: null,
148378
148816
  augmentErrorStackWithScriptIds: augmentErrorStackWithScriptIds,
148817
+ concatErrorDescriptionAndIssueSummary: concatErrorDescriptionAndIssueSummary,
148379
148818
  parseSourcePositionsFromErrorStack: parseSourcePositionsFromErrorStack
148380
148819
  });
148381
148820
 
@@ -148426,9 +148865,12 @@ class FrameNode {
148426
148865
  rawFrame;
148427
148866
  frames = [];
148428
148867
  fragment;
148868
+ parsedFrameInfo;
148869
+ evalOriginFrames;
148429
148870
  constructor(rawFrame, parent) {
148430
148871
  this.rawFrame = rawFrame;
148431
148872
  this.parent = parent;
148873
+ this.parsedFrameInfo = rawFrame.parsedFrameInfo;
148432
148874
  }
148433
148875
  *getCallStack() {
148434
148876
  for (let node = this; node.parent; node = node.parent) {
@@ -148458,6 +148900,9 @@ class Trie {
148458
148900
  }
148459
148901
  const compareResult = compareRawFrames(child.rawFrame, rawFrame);
148460
148902
  if (compareResult === 0) {
148903
+ if (rawFrame.parsedFrameInfo && !child.parsedFrameInfo) {
148904
+ child.parsedFrameInfo = rawFrame.parsedFrameInfo;
148905
+ }
148461
148906
  return child;
148462
148907
  }
148463
148908
  if (compareResult > 0) {
@@ -148523,6 +148968,21 @@ class StackTraceModel extends SDKModel {
148523
148968
  ]);
148524
148969
  return new StackTraceImpl(syncFragment, asyncFragments);
148525
148970
  }
148971
+ async createFromErrorStackLikeString(stack, rawFramesToUIFrames, exceptionDetails) {
148972
+ const rawFrames = parseRawFramesFromErrorStack(stack);
148973
+ if (!rawFrames) {
148974
+ return null;
148975
+ }
148976
+ if (exceptionDetails?.stackTrace) {
148977
+ augmentRawFramesWithScriptIds(rawFrames, exceptionDetails.stackTrace);
148978
+ }
148979
+ const [syncFragment, asyncFragments] = await Promise.all([
148980
+ this.#createFragment(rawFrames, rawFramesToUIFrames),
148981
+ exceptionDetails?.stackTrace ? this.#createAsyncFragments(exceptionDetails.stackTrace, rawFramesToUIFrames) :
148982
+ Promise.resolve([]),
148983
+ ]);
148984
+ return new StackTraceImpl(new ParsedErrorStackFragmentImpl(syncFragment), asyncFragments);
148985
+ }
148526
148986
  async createFromDebuggerPaused(pausedDetails, rawFramesToUIFrames) {
148527
148987
  const [syncFragment, asyncFragments] = await Promise.all([
148528
148988
  this.#createDebuggableFragment(pausedDetails, rawFramesToUIFrames),
@@ -148601,9 +149061,21 @@ class StackTraceModel extends SDKModel {
148601
149061
  const rawFrames = fragment.node.getCallStack().map(node => node.rawFrame).toArray();
148602
149062
  const uiFrames = await rawFramesToUIFrames(rawFrames, this.target());
148603
149063
  console.assert(rawFrames.length === uiFrames.length, 'Broken rawFramesToUIFrames implementation');
149064
+ const evalOriginPromises = [];
149065
+ for (const node of fragment.node.getCallStack()) {
149066
+ if (node.parsedFrameInfo?.evalOrigin) {
149067
+ evalOriginPromises.push(rawFramesToUIFrames([node.parsedFrameInfo.evalOrigin], this.target()));
149068
+ }
149069
+ }
149070
+ const evalUiFrames = await Promise.all(evalOriginPromises);
148604
149071
  let i = 0;
149072
+ let evalI = 0;
148605
149073
  for (const node of fragment.node.getCallStack()) {
148606
149074
  node.frames = uiFrames[i++].map(frame => new FrameImpl(frame.url, frame.uiSourceCode, frame.name, frame.line, frame.column, frame.missingDebugInfo, node.rawFrame.functionName));
149075
+ if (node.parsedFrameInfo?.evalOrigin) {
149076
+ const evalOriginRawFrame = node.parsedFrameInfo.evalOrigin;
149077
+ node.evalOriginFrames = evalUiFrames[evalI++][0].map(frame => new FrameImpl(frame.url, frame.uiSourceCode, frame.name, frame.line, frame.column, frame.missingDebugInfo, evalOriginRawFrame.functionName));
149078
+ }
148607
149079
  }
148608
149080
  }
148609
149081
  #affectedFragments(script) {
@@ -149017,8 +149489,8 @@ class UISourceCode extends ObjectWrapper {
149017
149489
  editDisabled() {
149018
149490
  return this.#disableEdit;
149019
149491
  }
149020
- isIgnoreListed() {
149021
- return IgnoreListManager.instance().isUserOrSourceMapIgnoreListedUISourceCode(this);
149492
+ isIgnoreListed(ignoreListManager = IgnoreListManager.instance()) {
149493
+ return ignoreListManager.isUserOrSourceMapIgnoreListedUISourceCode(this);
149022
149494
  }
149023
149495
  }
149024
149496
  var Events$2;
@@ -149094,8 +149566,8 @@ class UILocation {
149094
149566
  }
149095
149567
  return this.columnNumber - other.columnNumber;
149096
149568
  }
149097
- isIgnoreListed() {
149098
- return this.uiSourceCode.isIgnoreListed();
149569
+ isIgnoreListed(ignoreListManager = IgnoreListManager.instance()) {
149570
+ return this.uiSourceCode.isIgnoreListed(ignoreListManager);
149099
149571
  }
149100
149572
  }
149101
149573
  class UIFunctionBounds {
@@ -152518,6 +152990,85 @@ class ResourceScriptFile extends ObjectWrapper {
152518
152990
  }
152519
152991
  }
152520
152992
 
152993
+ // Copyright 2026 The Chromium Authors
152994
+ function isErrorLike(stack) {
152995
+ return /\n\s*at\s/.test(stack) || stack.startsWith('SyntaxError:');
152996
+ }
152997
+ class UnparsableError extends ObjectWrapper {
152998
+ errorStack;
152999
+ cause;
153000
+ constructor(errorStack, cause) {
153001
+ super();
153002
+ this.errorStack = errorStack;
153003
+ this.cause = cause;
153004
+ this.cause?.addEventListener("UPDATED" , this.#fireUpdated, this);
153005
+ }
153006
+ dispose() {
153007
+ this.cause?.removeEventListener("UPDATED" , this.#fireUpdated, this);
153008
+ if (this.cause instanceof SymbolizedErrorObject || this.cause instanceof UnparsableError) {
153009
+ this.cause.dispose();
153010
+ }
153011
+ }
153012
+ #fireUpdated() {
153013
+ this.dispatchEventToListeners("UPDATED" );
153014
+ }
153015
+ }
153016
+ class SymbolizedErrorObject extends ObjectWrapper {
153017
+ message;
153018
+ stackTrace;
153019
+ cause;
153020
+ constructor(message, stackTrace, cause) {
153021
+ super();
153022
+ this.message = message;
153023
+ this.stackTrace = stackTrace;
153024
+ this.cause = cause;
153025
+ this.stackTrace.addEventListener("UPDATED" , this.#fireUpdated, this);
153026
+ this.cause?.addEventListener("UPDATED" , this.#fireUpdated, this);
153027
+ }
153028
+ dispose() {
153029
+ this.stackTrace.removeEventListener("UPDATED" , this.#fireUpdated, this);
153030
+ this.cause?.removeEventListener("UPDATED" , this.#fireUpdated, this);
153031
+ if (this.cause instanceof SymbolizedErrorObject || this.cause instanceof UnparsableError) {
153032
+ this.cause.dispose();
153033
+ }
153034
+ }
153035
+ #fireUpdated() {
153036
+ this.dispatchEventToListeners("UPDATED" );
153037
+ }
153038
+ }
153039
+ class SymbolizedSyntaxError extends ObjectWrapper {
153040
+ message;
153041
+ #uiLocation = null;
153042
+ constructor(message) {
153043
+ super();
153044
+ this.message = message;
153045
+ }
153046
+ get uiLocation() {
153047
+ return this.#uiLocation;
153048
+ }
153049
+ static async fromExceptionDetails(target, debuggerWorkspaceBinding, exceptionDetails) {
153050
+ const { exception, scriptId, lineNumber, columnNumber } = exceptionDetails;
153051
+ if (!exception || exception.subtype !== 'error' || exception.className !== 'SyntaxError') {
153052
+ throw new Error('SymbolizedSyntaxError.fromExceptionDetails expects a SyntaxError');
153053
+ }
153054
+ if (!scriptId) {
153055
+ return null;
153056
+ }
153057
+ const debuggerModel = target.model(DebuggerModel);
153058
+ if (!debuggerModel) {
153059
+ return null;
153060
+ }
153061
+ const rawLocation = debuggerModel.createRawLocationByScriptId(scriptId, lineNumber, columnNumber);
153062
+ const symbolizedSyntaxError = new SymbolizedSyntaxError(exception.description || '');
153063
+ await debuggerWorkspaceBinding.createLiveLocation(rawLocation, symbolizedSyntaxError.#update.bind(symbolizedSyntaxError), new LiveLocationPool());
153064
+ return symbolizedSyntaxError;
153065
+ }
153066
+ async #update(liveLocation) {
153067
+ this.#uiLocation = await liveLocation.uiLocation();
153068
+ this.dispatchEventToListeners("UPDATED" );
153069
+ }
153070
+ }
153071
+
152521
153072
  // Copyright 2014 The Chromium Authors
152522
153073
  class DebuggerWorkspaceBinding {
152523
153074
  resourceMapping;
@@ -152649,6 +153200,55 @@ class DebuggerWorkspaceBinding {
152649
153200
  this.recordLiveLocationChange(stackTracePromise);
152650
153201
  return await stackTracePromise;
152651
153202
  }
153203
+ async createStackTraceFromErrorStackLikeString(target, stack, exceptionDetails) {
153204
+ const model = target.model(StackTraceModel);
153205
+ const stackTracePromise = model.createFromErrorStackLikeString(stack, this.#translateRawFrames.bind(this), exceptionDetails);
153206
+ this.recordLiveLocationChange(stackTracePromise);
153207
+ return await stackTracePromise;
153208
+ }
153209
+ async createSymbolizedError(remoteObject, exceptionDetails) {
153210
+ let errorStack = '';
153211
+ let causeRemoteObject;
153212
+ let fetchedExceptionDetails = exceptionDetails;
153213
+ if (remoteObject.subtype === 'error') {
153214
+ const remoteError = RemoteError.objectAsError(remoteObject);
153215
+ errorStack = remoteError.errorStack;
153216
+ const [details, causeRemote] = await Promise.all([
153217
+ exceptionDetails ? Promise.resolve(exceptionDetails) : remoteError.exceptionDetails(),
153218
+ remoteError.cause(),
153219
+ ]);
153220
+ fetchedExceptionDetails = details;
153221
+ causeRemoteObject = causeRemote;
153222
+ if (remoteObject.className === 'SyntaxError' && fetchedExceptionDetails) {
153223
+ const syntaxError = await SymbolizedSyntaxError.fromExceptionDetails(remoteObject.runtimeModel().target(), this, fetchedExceptionDetails);
153224
+ if (syntaxError) {
153225
+ return syntaxError;
153226
+ }
153227
+ }
153228
+ }
153229
+ else if (remoteObject.type === 'string') {
153230
+ errorStack = remoteObject.description || '';
153231
+ if (!isErrorLike(errorStack)) {
153232
+ return null;
153233
+ }
153234
+ }
153235
+ else {
153236
+ return null;
153237
+ }
153238
+ const [stackTrace, cause] = await Promise.all([
153239
+ this.createStackTraceFromErrorStackLikeString(remoteObject.runtimeModel().target(), errorStack, fetchedExceptionDetails),
153240
+ causeRemoteObject ? this.createSymbolizedError(causeRemoteObject) : Promise.resolve(null),
153241
+ ]);
153242
+ const issueSummary = fetchedExceptionDetails?.exceptionMetaData?.issueSummary;
153243
+ if (typeof issueSummary === 'string') {
153244
+ errorStack = concatErrorDescriptionAndIssueSummary(errorStack, issueSummary);
153245
+ }
153246
+ if (!stackTrace) {
153247
+ return new UnparsableError(errorStack, cause);
153248
+ }
153249
+ const message = parseMessage(errorStack);
153250
+ return new SymbolizedErrorObject(message, stackTrace, cause);
153251
+ }
152652
153252
  async createLiveLocation(rawLocation, updateDelegate, locationPool) {
152653
153253
  const modelData = this.#debuggerModelToData.get(rawLocation.debuggerModel);
152654
153254
  if (!modelData) {
@@ -154814,7 +155414,12 @@ class NetworkRequestFormatter {
154814
155414
  static formatFailureReasons(reasons) {
154815
155415
  const lines = [];
154816
155416
  if (reasons.blockedReason) {
154817
- lines.push(`Blocked reason: ${reasons.blockedReason}`);
155417
+ if (reasons.blockedReason === "inspector" ) {
155418
+ lines.push('Blocked reason: a custom network condition in DevTools is blocking this request');
155419
+ }
155420
+ else {
155421
+ lines.push(`Blocked reason: ${reasons.blockedReason}`);
155422
+ }
154818
155423
  }
154819
155424
  if (reasons.corsErrorStatus) {
154820
155425
  lines.push(`CORS error: ${reasons.corsErrorStatus.corsError} ${reasons.corsErrorStatus.failedParameter}`);
@@ -164264,13 +164869,61 @@ var Statistics = /*#__PURE__*/Object.freeze({
164264
164869
  linearInterpolation: linearInterpolation
164265
164870
  });
164266
164871
 
164872
+ // Copyright 2024 The Chromium Authors
164873
+ var InsightWarning;
164874
+ (function (InsightWarning) {
164875
+ InsightWarning["NO_FP"] = "NO_FP";
164876
+ InsightWarning["NO_LCP"] = "NO_LCP";
164877
+ InsightWarning["NO_DOCUMENT_REQUEST"] = "NO_DOCUMENT_REQUEST";
164878
+ InsightWarning["NO_LAYOUT"] = "NO_LAYOUT";
164879
+ })(InsightWarning || (InsightWarning = {}));
164880
+ var InsightCategory;
164881
+ (function (InsightCategory) {
164882
+ InsightCategory["ALL"] = "All";
164883
+ InsightCategory["INP"] = "INP";
164884
+ InsightCategory["LCP"] = "LCP";
164885
+ InsightCategory["CLS"] = "CLS";
164886
+ })(InsightCategory || (InsightCategory = {}));
164887
+ var InsightKeys;
164888
+ (function (InsightKeys) {
164889
+ InsightKeys["LCP_BREAKDOWN"] = "LCPBreakdown";
164890
+ InsightKeys["INP_BREAKDOWN"] = "INPBreakdown";
164891
+ InsightKeys["CLS_CULPRITS"] = "CLSCulprits";
164892
+ InsightKeys["THIRD_PARTIES"] = "ThirdParties";
164893
+ InsightKeys["DOCUMENT_LATENCY"] = "DocumentLatency";
164894
+ InsightKeys["DOM_SIZE"] = "DOMSize";
164895
+ InsightKeys["DUPLICATE_JAVASCRIPT"] = "DuplicatedJavaScript";
164896
+ InsightKeys["FONT_DISPLAY"] = "FontDisplay";
164897
+ InsightKeys["FORCED_REFLOW"] = "ForcedReflow";
164898
+ InsightKeys["IMAGE_DELIVERY"] = "ImageDelivery";
164899
+ InsightKeys["LCP_DISCOVERY"] = "LCPDiscovery";
164900
+ InsightKeys["LEGACY_JAVASCRIPT"] = "LegacyJavaScript";
164901
+ InsightKeys["NETWORK_DEPENDENCY_TREE"] = "NetworkDependencyTree";
164902
+ InsightKeys["RENDER_BLOCKING"] = "RenderBlocking";
164903
+ InsightKeys["SLOW_CSS_SELECTOR"] = "SlowCSSSelector";
164904
+ InsightKeys["VIEWPORT"] = "Viewport";
164905
+ InsightKeys["MODERN_HTTP"] = "ModernHTTP";
164906
+ InsightKeys["CACHE"] = "Cache";
164907
+ InsightKeys["CHARACTER_SET"] = "CharacterSet";
164908
+ })(InsightKeys || (InsightKeys = {}));
164909
+
164910
+ var types$1 = /*#__PURE__*/Object.freeze({
164911
+ __proto__: null,
164912
+ get InsightCategory () { return InsightCategory; },
164913
+ get InsightKeys () { return InsightKeys; },
164914
+ get InsightWarning () { return InsightWarning; }
164915
+ });
164916
+
164267
164917
  // Copyright 2024 The Chromium Authors
164268
164918
  const GRAPH_SAVINGS_PRECISION = 50;
164269
164919
  function getInsight(insightName, insightSet) {
164270
164920
  return insightSet.model[insightName];
164271
164921
  }
164922
+ function isInsightKey(key) {
164923
+ return Object.values(InsightKeys).includes(key);
164924
+ }
164272
164925
  function getLCP(insightSet) {
164273
- const insight = getInsight("LCPBreakdown" , insightSet);
164926
+ const insight = getInsight(InsightKeys.LCP_BREAKDOWN, insightSet);
164274
164927
  if (!insight || !insight.lcpMs || !insight.lcpEvent) {
164275
164928
  return null;
164276
164929
  }
@@ -164278,7 +164931,7 @@ function getLCP(insightSet) {
164278
164931
  return { value, event: insight.lcpEvent };
164279
164932
  }
164280
164933
  function getINP(insightSet) {
164281
- const insight = getInsight("INPBreakdown" , insightSet);
164934
+ const insight = getInsight(InsightKeys.INP_BREAKDOWN, insightSet);
164282
164935
  if (!insight?.longestInteractionEvent?.dur) {
164283
164936
  return null;
164284
164937
  }
@@ -164286,7 +164939,7 @@ function getINP(insightSet) {
164286
164939
  return { value, event: insight.longestInteractionEvent };
164287
164940
  }
164288
164941
  function getCLS(insightSet) {
164289
- const insight = getInsight("CLSCulprits" , insightSet);
164942
+ const insight = getInsight(InsightKeys.CLS_CULPRITS, insightSet);
164290
164943
  if (!insight) {
164291
164944
  return { value: 0, worstClusterEvent: null };
164292
164945
  }
@@ -164546,33 +165199,12 @@ var Common = /*#__PURE__*/Object.freeze({
164546
165199
  getInsight: getInsight,
164547
165200
  getLCP: getLCP,
164548
165201
  insightBounds: insightBounds,
165202
+ isInsightKey: isInsightKey,
164549
165203
  isRequestCompressed: isRequestCompressed,
164550
165204
  isRequestServedFromBrowserCache: isRequestServedFromBrowserCache,
164551
165205
  metricSavingsForWastedBytes: metricSavingsForWastedBytes
164552
165206
  });
164553
165207
 
164554
- // Copyright 2024 The Chromium Authors
164555
- var InsightWarning;
164556
- (function (InsightWarning) {
164557
- InsightWarning["NO_FP"] = "NO_FP";
164558
- InsightWarning["NO_LCP"] = "NO_LCP";
164559
- InsightWarning["NO_DOCUMENT_REQUEST"] = "NO_DOCUMENT_REQUEST";
164560
- InsightWarning["NO_LAYOUT"] = "NO_LAYOUT";
164561
- })(InsightWarning || (InsightWarning = {}));
164562
- var InsightCategory;
164563
- (function (InsightCategory) {
164564
- InsightCategory["ALL"] = "All";
164565
- InsightCategory["INP"] = "INP";
164566
- InsightCategory["LCP"] = "LCP";
164567
- InsightCategory["CLS"] = "CLS";
164568
- })(InsightCategory || (InsightCategory = {}));
164569
-
164570
- var types$1 = /*#__PURE__*/Object.freeze({
164571
- __proto__: null,
164572
- get InsightCategory () { return InsightCategory; },
164573
- get InsightWarning () { return InsightWarning; }
164574
- });
164575
-
164576
165208
  // Copyright 2025 The Chromium Authors
164577
165209
  const UIStrings$J = {
164578
165210
  title: 'Use efficient cache lifetimes',
@@ -164587,7 +165219,7 @@ const i18nString$v = getLocalizedString.bind(undefined, str_$I);
164587
165219
  const IGNORE_THRESHOLD_IN_PERCENT = 0.925;
164588
165220
  function finalize$i(partialModel) {
164589
165221
  return {
164590
- insightKey: "Cache" ,
165222
+ insightKey: InsightKeys.CACHE,
164591
165223
  strings: UIStrings$J,
164592
165224
  title: i18nString$v(UIStrings$J.title),
164593
165225
  description: i18nString$v(UIStrings$J.description),
@@ -164661,7 +165293,7 @@ function cachingDisabled(headers, parsedCacheControl) {
164661
165293
  return false;
164662
165294
  }
164663
165295
  function isCacheInsight(model) {
164664
- return model.insightKey === "Cache" ;
165296
+ return model.insightKey === InsightKeys.CACHE;
164665
165297
  }
164666
165298
  function generateInsight$i(data, context) {
164667
165299
  const isWithinContext = (event) => eventIsInBounds(event, context.bounds);
@@ -164748,7 +165380,7 @@ const str_$H = registerUIStrings('models/trace/insights/CharacterSet.ts', UIStri
164748
165380
  const i18nString$u = getLocalizedString.bind(undefined, str_$H);
164749
165381
  const CHARSET_HTTP_REGEX = /charset\s*=\s*[a-zA-Z0-9\-_:.()]{2,}/i;
164750
165382
  function isCharacterSetInsight(model) {
164751
- return model.insightKey === "CharacterSet" ;
165383
+ return model.insightKey === InsightKeys.CHARACTER_SET;
164752
165384
  }
164753
165385
  function finalize$h(partialModel) {
164754
165386
  let hasFailure = false;
@@ -164756,7 +165388,7 @@ function finalize$h(partialModel) {
164756
165388
  hasFailure = !partialModel.data.checklist.httpCharset.value && !partialModel.data.checklist.metaCharset.value;
164757
165389
  }
164758
165390
  return {
164759
- insightKey: "CharacterSet" ,
165391
+ insightKey: InsightKeys.CHARACTER_SET,
164760
165392
  strings: UIStrings$I,
164761
165393
  title: i18nString$u(UIStrings$I.title),
164762
165394
  description: i18nString$u(UIStrings$I.description),
@@ -165075,7 +165707,7 @@ function getUnsizedImageRootCauses(unsizedImageEvents, paintImageEvents, shiftsB
165075
165707
  return rootCausesByShift;
165076
165708
  }
165077
165709
  function isCLSCulpritsInsight(insight) {
165078
- return insight.insightKey === "CLSCulprits" ;
165710
+ return insight.insightKey === InsightKeys.CLS_CULPRITS;
165079
165711
  }
165080
165712
  function getFontRootCauses(networkRequests, prePaintEvents, shiftsByPrePaint, rootCausesByShift) {
165081
165713
  const fontRequests = networkRequests.filter(req => req.args.data.resourceType === 'Font' && req.args.data.mimeType.startsWith('font'));
@@ -165150,7 +165782,7 @@ function finalize$g(partialModel) {
165150
165782
  }
165151
165783
  }
165152
165784
  return {
165153
- insightKey: "CLSCulprits" ,
165785
+ insightKey: InsightKeys.CLS_CULPRITS,
165154
165786
  strings: UIStrings$H,
165155
165787
  title: i18nString$t(UIStrings$H.title),
165156
165788
  description: i18nString$t(UIStrings$H.description),
@@ -165315,7 +165947,7 @@ function finalize$f(partialModel) {
165315
165947
  !partialModel.data.checklist.serverResponseIsFast.value || !partialModel.data.checklist.noRedirects.value;
165316
165948
  }
165317
165949
  return {
165318
- insightKey: "DocumentLatency" ,
165950
+ insightKey: InsightKeys.DOCUMENT_LATENCY,
165319
165951
  strings: UIStrings$G,
165320
165952
  title: i18nString$s(UIStrings$G.title),
165321
165953
  description: i18nString$s(UIStrings$G.description),
@@ -165457,7 +166089,7 @@ const STYLE_RECALC_ELEMENTS_THRESHOLD = 300;
165457
166089
  function finalize$e(partialModel) {
165458
166090
  const relatedEvents = [...partialModel.largeLayoutUpdates, ...partialModel.largeStyleRecalcs];
165459
166091
  return {
165460
- insightKey: "DOMSize" ,
166092
+ insightKey: InsightKeys.DOM_SIZE,
165461
166093
  strings: UIStrings$F,
165462
166094
  title: i18nString$r(UIStrings$F.title),
165463
166095
  description: i18nString$r(UIStrings$F.description),
@@ -165469,7 +166101,7 @@ function finalize$e(partialModel) {
165469
166101
  };
165470
166102
  }
165471
166103
  function isDomSizeInsight(model) {
165472
- return model.insightKey === "DOMSize" ;
166104
+ return model.insightKey === InsightKeys.DOM_SIZE;
165473
166105
  }
165474
166106
  function generateInsight$e(data, context) {
165475
166107
  const isWithinContext = (event) => eventIsInBounds(event, context.bounds);
@@ -165578,13 +166210,14 @@ const UIStrings$E = {
165578
166210
  description: 'Remove large, [duplicate JavaScript modules](https://developer.chrome.com/docs/performance/insights/duplicated-javascript) from bundles to reduce unnecessary bytes consumed by network activity.',
165579
166211
  columnSource: 'Source',
165580
166212
  columnDuplicatedBytes: 'Duplicated bytes',
166213
+ noDuplicatedJavaScript: 'No duplicated JavaScript found',
165581
166214
  };
165582
166215
  const str_$D = registerUIStrings('models/trace/insights/DuplicatedJavaScript.ts', UIStrings$E);
165583
166216
  const i18nString$q = getLocalizedString.bind(undefined, str_$D);
165584
166217
  function finalize$d(partialModel) {
165585
166218
  const requests = partialModel.scriptsWithDuplication.map(script => script.request).filter(e => !!e);
165586
166219
  return {
165587
- insightKey: "DuplicatedJavaScript" ,
166220
+ insightKey: InsightKeys.DUPLICATE_JAVASCRIPT,
165588
166221
  strings: UIStrings$E,
165589
166222
  title: i18nString$q(UIStrings$E.title),
165590
166223
  description: i18nString$q(UIStrings$E.description),
@@ -165596,7 +166229,7 @@ function finalize$d(partialModel) {
165596
166229
  };
165597
166230
  }
165598
166231
  function isDuplicatedJavaScriptInsight(model) {
165599
- return model.insightKey === "DuplicatedJavaScript" ;
166232
+ return model.insightKey === InsightKeys.DUPLICATE_JAVASCRIPT;
165600
166233
  }
165601
166234
  function generateInsight$d(data, context) {
165602
166235
  const scripts = data.Scripts.scripts.filter(script => {
@@ -165663,12 +166296,13 @@ const UIStrings$D = {
165663
166296
  description: 'Consider setting [`font-display`](https://developer.chrome.com/docs/performance/insights/font-display) to `swap` or `optional` to ensure text is consistently visible. `swap` can be further optimized to mitigate layout shifts with [font metric overrides](https://developer.chrome.com/blog/font-fallbacks).',
165664
166297
  fontColumn: 'Font',
165665
166298
  wastedTimeColumn: 'Wasted time',
166299
+ noFonts: 'No fonts with suboptimal font-display found',
165666
166300
  };
165667
166301
  const str_$C = registerUIStrings('models/trace/insights/FontDisplay.ts', UIStrings$D);
165668
166302
  const i18nString$p = getLocalizedString.bind(undefined, str_$C);
165669
166303
  function finalize$c(partialModel) {
165670
166304
  return {
165671
- insightKey: "FontDisplay" ,
166305
+ insightKey: InsightKeys.FONT_DISPLAY,
165672
166306
  strings: UIStrings$D,
165673
166307
  title: i18nString$p(UIStrings$D.title),
165674
166308
  description: i18nString$p(UIStrings$D.description),
@@ -165679,7 +166313,7 @@ function finalize$c(partialModel) {
165679
166313
  };
165680
166314
  }
165681
166315
  function isFontDisplayInsight(model) {
165682
- return model.insightKey === "FontDisplay" ;
166316
+ return model.insightKey === InsightKeys.FONT_DISPLAY;
165683
166317
  }
165684
166318
  function generateInsight$c(data, context) {
165685
166319
  const fonts = [];
@@ -165801,7 +166435,7 @@ function getLargestTopLevelFunctionData(forcedReflowEvents, traceParsedData) {
165801
166435
  }
165802
166436
  function finalize$b(partialModel) {
165803
166437
  return {
165804
- insightKey: "ForcedReflow" ,
166438
+ insightKey: InsightKeys.FORCED_REFLOW,
165805
166439
  strings: UIStrings$C,
165806
166440
  title: i18nString$o(UIStrings$C.title),
165807
166441
  description: i18nString$o(UIStrings$C.description),
@@ -165817,7 +166451,7 @@ function getBottomCallFrameForEvent(event, traceParsedData) {
165817
166451
  return profileStackTrace?.callFrames[0] ?? eventTopCallFrame ?? null;
165818
166452
  }
165819
166453
  function isForcedReflowInsight(model) {
165820
- return model.insightKey === "ForcedReflow" ;
166454
+ return model.insightKey === InsightKeys.FORCED_REFLOW;
165821
166455
  }
165822
166456
  function generateInsight$b(traceParsedData, context) {
165823
166457
  const isWithinContext = (event) => {
@@ -165926,7 +166560,7 @@ function getOptimizationMessageWithBytes(optimization) {
165926
166560
  }
165927
166561
  function finalize$a(partialModel) {
165928
166562
  return {
165929
- insightKey: "ImageDelivery" ,
166563
+ insightKey: InsightKeys.IMAGE_DELIVERY,
165930
166564
  strings: UIStrings$B,
165931
166565
  title: i18nString$n(UIStrings$B.title),
165932
166566
  description: i18nString$n(UIStrings$B.description),
@@ -166082,7 +166716,7 @@ const UIStrings$A = {
166082
166716
  const str_$z = registerUIStrings('models/trace/insights/INPBreakdown.ts', UIStrings$A);
166083
166717
  const i18nString$m = getLocalizedString.bind(undefined, str_$z);
166084
166718
  function isINPBreakdownInsight(insight) {
166085
- return insight.insightKey === "INPBreakdown" ;
166719
+ return insight.insightKey === InsightKeys.INP_BREAKDOWN;
166086
166720
  }
166087
166721
  function finalize$9(partialModel) {
166088
166722
  let state = 'pass';
@@ -166096,7 +166730,7 @@ function finalize$9(partialModel) {
166096
166730
  }
166097
166731
  }
166098
166732
  return {
166099
- insightKey: "INPBreakdown" ,
166733
+ insightKey: InsightKeys.INP_BREAKDOWN,
166100
166734
  strings: UIStrings$A,
166101
166735
  title: i18nString$m(UIStrings$A.title),
166102
166736
  description: i18nString$m(UIStrings$A.description),
@@ -166242,7 +166876,7 @@ function finalize$8(partialModel) {
166242
166876
  }
166243
166877
  }
166244
166878
  return {
166245
- insightKey: "LCPBreakdown" ,
166879
+ insightKey: InsightKeys.LCP_BREAKDOWN,
166246
166880
  strings: UIStrings$z,
166247
166881
  title: i18nString$l(UIStrings$z.title),
166248
166882
  description: i18nString$l(UIStrings$z.description),
@@ -166335,7 +166969,7 @@ function finalize$7(partialModel) {
166335
166969
  [partialModel.lcpEvent, partialModel.lcpRequest] :
166336
166970
  [];
166337
166971
  return {
166338
- insightKey: "LCPDiscovery" ,
166972
+ insightKey: InsightKeys.LCP_DISCOVERY,
166339
166973
  strings: UIStrings$y,
166340
166974
  title: i18nString$k(UIStrings$y.title),
166341
166975
  description: i18nString$k(UIStrings$y.description),
@@ -167376,6 +168010,7 @@ const UIStrings$x = {
167376
168010
  description: 'Polyfills and transforms enable older browsers to use new JavaScript features. However, many aren\'t necessary for modern browsers. Consider modifying your JavaScript build process to not transpile [Baseline](https://web.dev/articles/baseline-and-polyfills) features, unless you know you must support older browsers. [Learn why most sites can deploy ES6+ code without transpiling](https://developer.chrome.com/docs/performance/insights/legacy-javascript)',
167377
168011
  columnScript: 'Script',
167378
168012
  columnWastedBytes: 'Wasted bytes',
168013
+ noLegacyJavaScript: 'No legacy JavaScript found',
167379
168014
  };
167380
168015
  const str_$w = registerUIStrings('models/trace/insights/LegacyJavaScript.ts', UIStrings$x);
167381
168016
  const i18nString$j = getLocalizedString.bind(undefined, str_$w);
@@ -167383,7 +168018,7 @@ const BYTE_THRESHOLD = 5000;
167383
168018
  function finalize$6(partialModel) {
167384
168019
  const requests = [...partialModel.legacyJavaScriptResults.keys()].map(script => script.request).filter(e => !!e);
167385
168020
  return {
167386
- insightKey: "LegacyJavaScript" ,
168021
+ insightKey: InsightKeys.LEGACY_JAVASCRIPT,
167387
168022
  strings: UIStrings$x,
167388
168023
  title: i18nString$j(UIStrings$x.title),
167389
168024
  description: i18nString$j(UIStrings$x.description),
@@ -167395,7 +168030,7 @@ function finalize$6(partialModel) {
167395
168030
  };
167396
168031
  }
167397
168032
  function isLegacyJavaScript(model) {
167398
- return model.insightKey === "LegacyJavaScript" ;
168033
+ return model.insightKey === InsightKeys.LEGACY_JAVASCRIPT;
167399
168034
  }
167400
168035
  function generateInsight$6(data, context) {
167401
168036
  const scripts = data.Scripts.scripts.filter(script => {
@@ -167464,7 +168099,7 @@ const UIStrings$w = {
167464
168099
  const str_$v = registerUIStrings('models/trace/insights/ModernHTTP.ts', UIStrings$w);
167465
168100
  const i18nString$i = getLocalizedString.bind(undefined, str_$v);
167466
168101
  function isModernHTTPInsight(model) {
167467
- return model.insightKey === "ModernHTTP" ;
168102
+ return model.insightKey === InsightKeys.MODERN_HTTP;
167468
168103
  }
167469
168104
  function isMultiplexableStaticAsset(request, entityMappings, firstPartyEntity) {
167470
168105
  if (!STATIC_RESOURCE_TYPES.has(request.args.data.resourceType)) {
@@ -167560,7 +168195,7 @@ function computeMetricSavings(http1Requests, context) {
167560
168195
  }
167561
168196
  function finalize$5(partialModel) {
167562
168197
  return {
167563
- insightKey: "ModernHTTP" ,
168198
+ insightKey: InsightKeys.MODERN_HTTP,
167564
168199
  strings: UIStrings$w,
167565
168200
  title: i18nString$i(UIStrings$w.title),
167566
168201
  description: i18nString$i(UIStrings$w.description),
@@ -167640,7 +168275,7 @@ const IGNORE_THRESHOLD_IN_MILLISECONDS = Milli(50);
167640
168275
  const TOO_MANY_PRECONNECTS_THRESHOLD = 4;
167641
168276
  function finalize$4(partialModel) {
167642
168277
  return {
167643
- insightKey: "NetworkDependencyTree" ,
168278
+ insightKey: InsightKeys.NETWORK_DEPENDENCY_TREE,
167644
168279
  strings: UIStrings$v,
167645
168280
  title: i18nString$h(UIStrings$v.title),
167646
168281
  description: i18nString$h(UIStrings$v.description),
@@ -167979,7 +168614,7 @@ function generatePreconnectCandidates(data, context, contextRequests) {
167979
168614
  return preconnectCandidates.slice(0, TOO_MANY_PRECONNECTS_THRESHOLD);
167980
168615
  }
167981
168616
  function isNetworkDependencyTreeInsight(model) {
167982
- return model.insightKey === "NetworkDependencyTree" ;
168617
+ return model.insightKey === InsightKeys.NETWORK_DEPENDENCY_TREE;
167983
168618
  }
167984
168619
  function generateInsight$4(data, context) {
167985
168620
  if (!context.navigation) {
@@ -168115,7 +168750,7 @@ function computeSavings(data, context, renderBlockingRequests) {
168115
168750
  }
168116
168751
  function finalize$3(partialModel) {
168117
168752
  return {
168118
- insightKey: "RenderBlocking" ,
168753
+ insightKey: InsightKeys.RENDER_BLOCKING,
168119
168754
  strings: UIStrings$u,
168120
168755
  title: i18nString$g(UIStrings$u.title),
168121
168756
  description: i18nString$g(UIStrings$u.description),
@@ -168239,7 +168874,7 @@ function aggregateSelectorStats(data, context) {
168239
168874
  }
168240
168875
  function finalize$2(partialModel) {
168241
168876
  return {
168242
- insightKey: "SlowCSSSelector" ,
168877
+ insightKey: InsightKeys.SLOW_CSS_SELECTOR,
168243
168878
  strings: UIStrings$t,
168244
168879
  title: i18nString$f(UIStrings$t.title),
168245
168880
  description: i18nString$f(UIStrings$t.description),
@@ -168250,7 +168885,7 @@ function finalize$2(partialModel) {
168250
168885
  };
168251
168886
  }
168252
168887
  function isSlowCSSSelectorInsight(model) {
168253
- return model.insightKey === "SlowCSSSelector" ;
168888
+ return model.insightKey === InsightKeys.SLOW_CSS_SELECTOR;
168254
168889
  }
168255
168890
  function generateInsight$2(data, context) {
168256
168891
  const selectorStatsData = data.SelectorStats;
@@ -168324,7 +168959,7 @@ function getRelatedEvents(summaries, firstPartyEntity) {
168324
168959
  }
168325
168960
  function finalize$1(partialModel) {
168326
168961
  return {
168327
- insightKey: "ThirdParties" ,
168962
+ insightKey: InsightKeys.THIRD_PARTIES,
168328
168963
  strings: UIStrings$s,
168329
168964
  title: i18nString$e(UIStrings$s.title),
168330
168965
  description: i18nString$e(UIStrings$s.description),
@@ -168337,7 +168972,7 @@ function finalize$1(partialModel) {
168337
168972
  };
168338
168973
  }
168339
168974
  function isThirdPartyInsight(model) {
168340
- return model.insightKey === "ThirdParties" ;
168975
+ return model.insightKey === InsightKeys.THIRD_PARTIES;
168341
168976
  }
168342
168977
  function generateInsight$1(data, context) {
168343
168978
  const entitySummaries = summarizeByThirdParty(data, context.bounds);
@@ -168398,7 +169033,7 @@ const str_$q = registerUIStrings('models/trace/insights/Viewport.ts', UIStrings$
168398
169033
  const i18nString$d = getLocalizedString.bind(undefined, str_$q);
168399
169034
  function finalize(partialModel) {
168400
169035
  return {
168401
- insightKey: "Viewport" ,
169036
+ insightKey: InsightKeys.VIEWPORT,
168402
169037
  strings: UIStrings$r,
168403
169038
  title: i18nString$d(UIStrings$r.title),
168404
169039
  description: i18nString$d(UIStrings$r.description),
@@ -168409,7 +169044,7 @@ function finalize(partialModel) {
168409
169044
  };
168410
169045
  }
168411
169046
  function isViewportInsight(model) {
168412
- return model.insightKey === "Viewport" ;
169047
+ return model.insightKey === InsightKeys.VIEWPORT;
168413
169048
  }
168414
169049
  function generateInsight(data, context) {
168415
169050
  const viewportEvent = data.UserInteractions.parseMetaViewportEvents.find(event => {
@@ -172601,7 +173236,7 @@ var Show;
172601
173236
  },
172602
173237
  'capabilities': ['touch', 'mobile'],
172603
173238
  'user-agent': 'Mozilla/5.0 (Linux; Android 13; Pixel 7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/%s Mobile Safari/537.36',
172604
- 'user-agent-metadata': { 'platform': 'Android', 'platformVersion': '13', 'architecture': '', 'model': 'Pixel 5', 'mobile': true },
173239
+ 'user-agent-metadata': { 'platform': 'Android', 'platformVersion': '13', 'architecture': '', 'model': 'Pixel 7', 'mobile': true },
172605
173240
  'type': 'phone',
172606
173241
  },
172607
173242
  {
@@ -174130,7 +174765,7 @@ class DeviceModeModel extends ObjectWrapper {
174130
174765
  this.#appliedUserAgentType = this.#uaSetting.get();
174131
174766
  this.applyDeviceMetrics(new Size(screenWidth, screenHeight), new Insets(0, 0, 0, 0), new Insets(0, 0, 0, 0), this.#scaleSetting.get(), this.#deviceScaleFactorSetting.get() || defaultDeviceScaleFactor, mobile, screenHeight >= screenWidth ? "portraitPrimary" :
174132
174767
  "landscapePrimary" , resetPageScaleFactor);
174133
- this.applyUserAgent(mobile ? defaultMobileUserAgent : '', mobile ? defaultMobileUserAgentMetadata : null);
174768
+ this.applyUserAgent(mobile ? DeviceModeModel.defaultMobileUserAgent() : '', mobile ? DeviceModeModel.defaultMobileUserAgentMetadata() : null);
174134
174769
  this.applyTouch(this.#uaSetting.get() === "Desktop (touch)" || this.#uaSetting.get() === "Mobile" , this.#uaSetting.get() === "Mobile" );
174135
174770
  }
174136
174771
  if (overlayModel) {
@@ -174325,6 +174960,28 @@ class DeviceModeModel extends ObjectWrapper {
174325
174960
  maskLength: (this.#mode.orientation === VerticalSpanned) ? hinge.width : hinge.height,
174326
174961
  };
174327
174962
  }
174963
+ static getDynamicMobileUA() {
174964
+ const now = new Date();
174965
+ const year = now.getFullYear();
174966
+ const isLateInYear = now.getMonth() >= 9;
174967
+ const androidVersion = isLateInYear ? (year - 2010) : (year - 2011);
174968
+ const pixelModel = isLateInYear ? (year - 2016) : (year - 2017);
174969
+ const ua = `Mozilla/5.0 (Linux; Android ${androidVersion}; Pixel ${pixelModel}) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/%s Mobile Safari/537.36`;
174970
+ const metadata = {
174971
+ platform: 'Android',
174972
+ platformVersion: androidVersion.toString(),
174973
+ architecture: '',
174974
+ model: `Pixel ${pixelModel}`,
174975
+ mobile: true,
174976
+ };
174977
+ return { userAgent: ua, metadata };
174978
+ }
174979
+ static defaultMobileUserAgent() {
174980
+ return MultitargetNetworkManager.patchUserAgentWithChromeVersion(DeviceModeModel.getDynamicMobileUA().userAgent);
174981
+ }
174982
+ static defaultMobileUserAgentMetadata() {
174983
+ return DeviceModeModel.getDynamicMobileUA().metadata;
174984
+ }
174328
174985
  }
174329
174986
  class Insets {
174330
174987
  left;
@@ -174377,15 +175034,6 @@ const MinDeviceSize = 50;
174377
175034
  const MaxDeviceSize = 9999;
174378
175035
  const MinDeviceScaleFactor = 0;
174379
175036
  const MaxDeviceScaleFactor = 10;
174380
- const mobileUserAgent = 'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/%s Mobile Safari/537.36';
174381
- const defaultMobileUserAgent = MultitargetNetworkManager.patchUserAgentWithChromeVersion(mobileUserAgent);
174382
- const defaultMobileUserAgentMetadata = {
174383
- platform: 'Android',
174384
- platformVersion: '6.0',
174385
- architecture: '',
174386
- model: 'Nexus 5',
174387
- mobile: true,
174388
- };
174389
175037
  const defaultMobileScaleFactor = 2;
174390
175038
 
174391
175039
  // Copyright 2024 The Chromium Authors
@@ -181098,6 +181746,7 @@ const UIStrings$g = {
181098
181746
  PrefixedVideoExitFullScreen: "HTMLVideoElement.webkitExitFullScreen() is deprecated. Please use Document.exitFullscreen() instead.",
181099
181747
  PrefixedVideoExitFullscreen: "HTMLVideoElement.webkitExitFullscreen() is deprecated. Please use Document.exitFullscreen() instead.",
181100
181748
  PrefixedVideoSupportsFullscreen: "HTMLVideoElement.webkitSupportsFullscreen is deprecated. Please use Document.fullscreenEnabled instead.",
181749
+ PreventSvgFilterPaint: "SVG filters cannot be applied to cross-origin iframes, restricted iframes (e.g., sandboxed), or plugins.",
181101
181750
  RangeExpand: "Range.expand() is deprecated. Please use Selection.modify() instead.",
181102
181751
  RelatedWebsiteSets: "`Related Website Sets` is deprecated and will be removed. See https://privacysandbox.com/news/update-on-plans-for-privacy-sandbox-technologies/ for more details.",
181103
181752
  RequestedSubresourceWithEmbeddedCredentials: "Subresource requests whose URLs contain embedded credentials (e.g. `https://user:pass@host/`) are blocked.",
@@ -181218,6 +181867,9 @@ const DEPRECATIONS_METADATA = {
181218
181867
  "chromeStatusFeature": 5176235376246784,
181219
181868
  "milestone": 106
181220
181869
  },
181870
+ "PreventSvgFilterPaint": {
181871
+ "chromeStatusFeature": 5117170452398080
181872
+ },
181221
181873
  "RTCConstraintEnableDtlsSrtpFalse": {
181222
181874
  "milestone": 97
181223
181875
  },
@@ -181566,6 +182218,26 @@ const genericNavigationEntryMarkedSkippable = {
181566
182218
  linkTitle: i18nLazyString$7(UIStrings$e.historyManipulationInterventionPageTitle),
181567
182219
  }],
181568
182220
  };
182221
+ const genericFormModelContextMissingToolName = {
182222
+ file: 'genericFormModelContextMissingToolName.md',
182223
+ links: [],
182224
+ };
182225
+ const genericFormModelContextMissingToolDescription = {
182226
+ file: 'genericFormModelContextMissingToolDescription.md',
182227
+ links: [],
182228
+ };
182229
+ const genericFormModelContextParameterMissingTitleAndDescription = {
182230
+ file: 'genericFormModelContextParameterMissingTitleAndDescription.md',
182231
+ links: [],
182232
+ };
182233
+ const genericFormModelContextRequiredParameterMissingName = {
182234
+ file: 'genericFormModelContextRequiredParameterMissingName.md',
182235
+ links: [],
182236
+ };
182237
+ const genericFormModelContextParameterMissingName = {
182238
+ file: 'genericFormModelContextParameterMissingName.md',
182239
+ links: [],
182240
+ };
181569
182241
  const issueDescriptions$4 = new Map([
181570
182242
  ["FormLabelForNameError" , genericFormLabelForNameError],
181571
182243
  ["FormInputWithNoLabelError" , genericFormInputWithNoLabelError],
@@ -181606,6 +182278,26 @@ const issueDescriptions$4 = new Map([
181606
182278
  "NavigationEntryMarkedSkippable" ,
181607
182279
  genericNavigationEntryMarkedSkippable,
181608
182280
  ],
182281
+ [
182282
+ "FormModelContextMissingToolName" ,
182283
+ genericFormModelContextMissingToolName,
182284
+ ],
182285
+ [
182286
+ "FormModelContextMissingToolDescription" ,
182287
+ genericFormModelContextMissingToolDescription,
182288
+ ],
182289
+ [
182290
+ "FormModelContextParameterMissingTitleAndDescription" ,
182291
+ genericFormModelContextParameterMissingTitleAndDescription,
182292
+ ],
182293
+ [
182294
+ "FormModelContextRequiredParameterMissingName" ,
182295
+ genericFormModelContextRequiredParameterMissingName,
182296
+ ],
182297
+ [
182298
+ "FormModelContextParameterMissingName" ,
182299
+ genericFormModelContextParameterMissingName,
182300
+ ],
181609
182301
  ]);
181610
182302
  const issueTypes = new Map([
181611
182303
  ["FormLabelForNameError" , "PageError" ],
@@ -181621,6 +182313,11 @@ const issueTypes = new Map([
181621
182313
  ["FormLabelForMatchesNonExistingIdError" , "PageError" ],
181622
182314
  ["FormLabelHasNeitherForNorNestedInputError" , "Improvement" ],
181623
182315
  ["FormInputHasWrongButWellIntendedAutocompleteValueError" , "Improvement" ],
182316
+ ["FormModelContextMissingToolName" , "PageError" ],
182317
+ ["FormModelContextMissingToolDescription" , "PageError" ],
182318
+ ["FormModelContextParameterMissingTitleAndDescription" , "PageError" ],
182319
+ ["FormModelContextRequiredParameterMissingName" , "PageError" ],
182320
+ ["FormModelContextParameterMissingName" , "PageError" ],
181624
182321
  ]);
181625
182322
 
181626
182323
  // Copyright 2020 The Chromium Authors
@@ -183772,12 +184469,11 @@ class IssuesManager extends ObjectWrapper {
183772
184469
  #updateIssueHiddenStatus(issue, values) {
183773
184470
  const code = issue.code();
183774
184471
  if (values?.[code]) {
183775
- if (values[code] === "Hidden" ) {
183776
- issue.setHidden(true);
183777
- return;
184472
+ const isHidden = values[code] === "Hidden" ;
184473
+ if (issue.isHidden() !== isHidden) {
184474
+ issue.setHidden(isHidden);
184475
+ this.dispatchEventToListeners("IssueHiddenStatusUpdated" , { issue });
183778
184476
  }
183779
- issue.setHidden(false);
183780
- return;
183781
184477
  }
183782
184478
  }
183783
184479
  #updateFilteredIssues() {
@@ -183806,7 +184502,10 @@ class IssuesManager extends ObjectWrapper {
183806
184502
  }
183807
184503
  unhideAllIssues() {
183808
184504
  for (const issue of this.#allIssues.values()) {
183809
- issue.setHidden(false);
184505
+ if (issue.isHidden()) {
184506
+ issue.setHidden(false);
184507
+ this.dispatchEventToListeners("IssueHiddenStatusUpdated" , { issue });
184508
+ }
183810
184509
  }
183811
184510
  this.hideIssueSetting?.set(defaultHideIssueByCodeSetting());
183812
184511
  }
@@ -183860,8 +184559,9 @@ var mcp = /*#__PURE__*/Object.freeze({
183860
184559
  * Copyright 2025 Google LLC
183861
184560
  * SPDX-License-Identifier: Apache-2.0
183862
184561
  */
184562
+ const agenticBrowsingConfig = agenticBrowsingConfig$1;
183863
184563
  const snapshot = snapshot$1;
183864
184564
  const navigation = navigation$1;
183865
184565
  const generateReport = generateReport$1;
183866
184566
 
183867
- export { Browser as BrowserEnum, CDPSessionEvent, Client$1 as Client, mcp as DevTools, KnownDevices, Locator, McpServer, PipeTransport, PredefinedNetworkConditions, SetLevelRequestSchema, StdioClientTransport, StdioServerTransport, ajv, debug$2 as debug, detectBrowserPlatform, generateReport, hideBin, navigation, puppeteer, resolveDefaultUserDataDir, semver, snapshot, Yargs as yargs, z$1 as zod };
184567
+ export { Browser as BrowserEnum, CDPSessionEvent, Client$1 as Client, mcp as DevTools, KnownDevices, ListRootsRequestSchema, ListRootsResultSchema, Locator, McpServer, PipeTransport, PredefinedNetworkConditions, RootsListChangedNotificationSchema, SetLevelRequestSchema, StdioClientTransport, StdioServerTransport, agenticBrowsingConfig, ajv, debug$2 as debug, detectBrowserPlatform, generateReport, hideBin, navigation, puppeteer, resolveDefaultUserDataDir, semver, snapshot, Yargs as yargs, z$1 as zod };