chrome-devtools-frontend 1.0.1626437 → 1.0.1628368

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 (206) hide show
  1. package/front_end/core/common/VersionController.ts +33 -1
  2. package/front_end/core/host/UserMetrics.ts +11 -8
  3. package/front_end/core/root/ExperimentNames.ts +1 -3
  4. package/front_end/core/sdk/CSSContainerQuery.ts +3 -1
  5. package/front_end/core/sdk/CSSModel.ts +23 -0
  6. package/front_end/core/sdk/HeapProfilerModel.ts +1 -11
  7. package/front_end/entrypoints/formatter_worker/AcornTokenizer.ts +2 -1
  8. package/front_end/entrypoints/formatter_worker/CSSFormatter.ts +2 -4
  9. package/front_end/entrypoints/formatter_worker/ESTreeWalker.ts +3 -2
  10. package/front_end/entrypoints/formatter_worker/JavaScriptFormatter.ts +13 -0
  11. package/front_end/entrypoints/formatter_worker/Substitute.ts +1 -1
  12. package/front_end/entrypoints/greendev_floaty/FloatyEntrypoint.ts +0 -1
  13. package/front_end/entrypoints/greendev_floaty/greendev_floaty.ts +0 -1
  14. package/front_end/entrypoints/main/MainImpl.ts +4 -36
  15. package/front_end/generated/InspectorBackendCommands.ts +4 -3
  16. package/front_end/generated/protocol-mapping.d.ts +5 -0
  17. package/front_end/generated/protocol-proxy-api.d.ts +4 -0
  18. package/front_end/generated/protocol.ts +22 -0
  19. package/front_end/models/ai_assistance/agents/AiAgent.ts +2 -1
  20. package/front_end/models/ai_assistance/agents/PerformanceAgent.ts +11 -5
  21. package/front_end/models/javascript_metadata/NativeFunctions.js +4 -0
  22. package/front_end/models/lighthouse/RunTypes.ts +1 -1
  23. package/front_end/models/workspace/UISourceCode.ts +0 -1
  24. package/front_end/panels/ai_assistance/components/ChatMessage.ts +4 -3
  25. package/front_end/panels/common/AiCodeCompletionTeaser.ts +9 -0
  26. package/front_end/panels/common/common.ts +1 -1
  27. package/front_end/panels/console/ConsoleView.ts +2 -2
  28. package/front_end/panels/elements/StylePropertiesSection.ts +6 -2
  29. package/front_end/panels/elements/StylesAiCodeCompletionProvider.ts +1 -1
  30. package/front_end/panels/elements/StylesSidebarPane.ts +8 -7
  31. package/front_end/panels/emulation/DeviceModeToolbar.ts +20 -26
  32. package/front_end/panels/emulation/DeviceModeView.ts +2 -2
  33. package/front_end/panels/lighthouse/LighthouseController.ts +18 -0
  34. package/front_end/panels/profiler/HeapSnapshotGridNodes.ts +9 -4
  35. package/front_end/panels/profiler/profiler-meta.ts +0 -71
  36. package/front_end/panels/profiler/profiler.ts +0 -2
  37. package/front_end/panels/sources/AiCodeCompletionPlugin.ts +7 -6
  38. package/front_end/panels/sources/ProfilePlugin.ts +12 -65
  39. package/front_end/panels/sources/UISourceCodeFrame.ts +1 -2
  40. package/front_end/panels/timeline/TimelineController.ts +1 -2
  41. package/front_end/panels/timeline/TimelinePanel.ts +1 -1
  42. package/front_end/panels/timeline/TimelineUIUtils.ts +2 -10
  43. package/front_end/panels/timeline/timeline-meta.ts +26 -0
  44. package/front_end/third_party/acorn/README.chromium +1 -1
  45. package/front_end/third_party/acorn/acorn.ts +1 -1
  46. package/front_end/third_party/acorn/package/CHANGELOG.md +128 -0
  47. package/front_end/third_party/acorn/package/README.md +42 -19
  48. package/front_end/third_party/acorn/package/dist/acorn.d.mts +883 -26
  49. package/front_end/third_party/acorn/package/dist/acorn.d.ts +859 -268
  50. package/front_end/third_party/acorn/package/dist/acorn.js +420 -115
  51. package/front_end/third_party/acorn/package/dist/acorn.mjs +420 -115
  52. package/front_end/third_party/acorn/package/dist/bin.js +1 -1
  53. package/front_end/third_party/acorn/package/package.json +3 -3
  54. package/front_end/third_party/chromium/README.chromium +1 -1
  55. package/front_end/third_party/lighthouse/README.chromium +2 -2
  56. package/front_end/third_party/lighthouse/lighthouse-dt-bundle.js +4213 -4208
  57. package/front_end/third_party/lighthouse/locales/en-US.json +26 -8
  58. package/front_end/third_party/lighthouse/locales/en-XL.json +26 -8
  59. package/front_end/third_party/lighthouse/report-assets/report-generator.mjs +1 -1
  60. package/front_end/third_party/puppeteer/README.chromium +2 -2
  61. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Browser.d.ts.map +1 -1
  62. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Browser.js +7 -7
  63. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Browser.js.map +1 -1
  64. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/BrowserContext.d.ts.map +1 -1
  65. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/BrowserContext.js +4 -3
  66. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/BrowserContext.js.map +1 -1
  67. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Frame.d.ts +15 -1
  68. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Frame.d.ts.map +1 -1
  69. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Frame.js.map +1 -1
  70. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/JSHandle.js +1 -1
  71. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/JSHandle.js.map +1 -1
  72. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Page.d.ts +2 -2
  73. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Page.d.ts.map +1 -1
  74. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Page.js +4 -3
  75. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Page.js.map +1 -1
  76. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Frame.d.ts +2 -2
  77. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Frame.d.ts.map +1 -1
  78. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Frame.js.map +1 -1
  79. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/ExecutionContext.d.ts.map +1 -1
  80. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/ExecutionContext.js +1 -0
  81. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/ExecutionContext.js.map +1 -1
  82. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Frame.d.ts +2 -5
  83. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Frame.d.ts.map +1 -1
  84. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Frame.js +4 -0
  85. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Frame.js.map +1 -1
  86. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/FrameManager.d.ts.map +1 -1
  87. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/FrameManager.js +3 -1
  88. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/FrameManager.js.map +1 -1
  89. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/IsolatedWorld.js +1 -1
  90. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/IsolatedWorld.js.map +1 -1
  91. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Page.d.ts +1 -0
  92. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Page.d.ts.map +1 -1
  93. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Page.js +3 -0
  94. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Page.js.map +1 -1
  95. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/TargetManager.d.ts +4 -0
  96. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/TargetManager.d.ts.map +1 -1
  97. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/TargetManager.js +2 -2
  98. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/TargetManager.js.map +1 -1
  99. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/BrowserConnector.d.ts +5 -0
  100. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/BrowserConnector.d.ts.map +1 -1
  101. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/BrowserConnector.js +9 -1
  102. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/BrowserConnector.js.map +1 -1
  103. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/EventEmitter.d.ts +5 -1
  104. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/EventEmitter.d.ts.map +1 -1
  105. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/EventEmitter.js +7 -0
  106. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/EventEmitter.js.map +1 -1
  107. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/injected/injected.d.ts +1 -1
  108. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/BrowserLauncher.d.ts.map +1 -1
  109. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/BrowserLauncher.js +6 -3
  110. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/BrowserLauncher.js.map +1 -1
  111. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/ScreenRecorder.d.ts.map +1 -1
  112. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/ScreenRecorder.js +1 -0
  113. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/ScreenRecorder.js.map +1 -1
  114. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/revisions.d.ts +1 -1
  115. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/revisions.js +1 -1
  116. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/util/Mutex.d.ts +2 -2
  117. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/util/version.d.ts +1 -1
  118. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/util/version.js +1 -1
  119. package/front_end/third_party/puppeteer/package/lib/es5-iife/puppeteer-core-browser.d.ts +23 -2
  120. package/front_end/third_party/puppeteer/package/lib/es5-iife/puppeteer-core-browser.js +171 -149
  121. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Browser.d.ts.map +1 -1
  122. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Browser.js +7 -7
  123. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Browser.js.map +1 -1
  124. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/BrowserContext.d.ts.map +1 -1
  125. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/BrowserContext.js +4 -3
  126. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/BrowserContext.js.map +1 -1
  127. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Frame.d.ts +15 -1
  128. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Frame.d.ts.map +1 -1
  129. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Frame.js.map +1 -1
  130. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/JSHandle.js +1 -1
  131. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/JSHandle.js.map +1 -1
  132. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Page.d.ts +2 -2
  133. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Page.d.ts.map +1 -1
  134. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Page.js +4 -3
  135. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Page.js.map +1 -1
  136. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Frame.d.ts +2 -2
  137. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Frame.d.ts.map +1 -1
  138. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Frame.js.map +1 -1
  139. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/ExecutionContext.d.ts.map +1 -1
  140. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/ExecutionContext.js +1 -0
  141. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/ExecutionContext.js.map +1 -1
  142. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Frame.d.ts +2 -5
  143. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Frame.d.ts.map +1 -1
  144. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Frame.js +4 -0
  145. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Frame.js.map +1 -1
  146. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/FrameManager.d.ts.map +1 -1
  147. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/FrameManager.js +3 -1
  148. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/FrameManager.js.map +1 -1
  149. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/IsolatedWorld.js +1 -1
  150. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/IsolatedWorld.js.map +1 -1
  151. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Page.d.ts +1 -0
  152. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Page.d.ts.map +1 -1
  153. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Page.js +3 -0
  154. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Page.js.map +1 -1
  155. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/TargetManager.d.ts +4 -0
  156. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/TargetManager.d.ts.map +1 -1
  157. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/TargetManager.js +2 -2
  158. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/TargetManager.js.map +1 -1
  159. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/BrowserConnector.d.ts +5 -0
  160. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/BrowserConnector.d.ts.map +1 -1
  161. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/BrowserConnector.js +8 -1
  162. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/BrowserConnector.js.map +1 -1
  163. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/EventEmitter.d.ts +5 -1
  164. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/EventEmitter.d.ts.map +1 -1
  165. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/EventEmitter.js +8 -1
  166. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/EventEmitter.js.map +1 -1
  167. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/BrowserLauncher.d.ts.map +1 -1
  168. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/BrowserLauncher.js +6 -3
  169. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/BrowserLauncher.js.map +1 -1
  170. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/ScreenRecorder.d.ts.map +1 -1
  171. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/ScreenRecorder.js +1 -0
  172. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/ScreenRecorder.js.map +1 -1
  173. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/revisions.d.ts +1 -1
  174. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/revisions.js +1 -1
  175. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/util/version.d.ts +1 -1
  176. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/util/version.js +1 -1
  177. package/front_end/third_party/puppeteer/package/lib/types.d.ts +23 -2
  178. package/front_end/third_party/puppeteer/package/package.json +2 -2
  179. package/front_end/third_party/puppeteer/package/src/api/Browser.ts +6 -7
  180. package/front_end/third_party/puppeteer/package/src/api/BrowserContext.ts +4 -3
  181. package/front_end/third_party/puppeteer/package/src/api/Frame.ts +21 -1
  182. package/front_end/third_party/puppeteer/package/src/api/JSHandle.ts +1 -1
  183. package/front_end/third_party/puppeteer/package/src/api/Page.ts +9 -4
  184. package/front_end/third_party/puppeteer/package/src/bidi/Frame.ts +2 -1
  185. package/front_end/third_party/puppeteer/package/src/cdp/ExecutionContext.ts +1 -0
  186. package/front_end/third_party/puppeteer/package/src/cdp/Frame.ts +9 -5
  187. package/front_end/third_party/puppeteer/package/src/cdp/FrameManager.ts +3 -1
  188. package/front_end/third_party/puppeteer/package/src/cdp/IsolatedWorld.ts +1 -1
  189. package/front_end/third_party/puppeteer/package/src/cdp/Page.ts +4 -0
  190. package/front_end/third_party/puppeteer/package/src/cdp/TargetManager.ts +2 -2
  191. package/front_end/third_party/puppeteer/package/src/common/BrowserConnector.ts +19 -3
  192. package/front_end/third_party/puppeteer/package/src/common/EventEmitter.ts +10 -1
  193. package/front_end/third_party/puppeteer/package/src/node/BrowserLauncher.ts +7 -3
  194. package/front_end/third_party/puppeteer/package/src/node/ScreenRecorder.ts +1 -0
  195. package/front_end/third_party/puppeteer/package/src/revisions.ts +1 -1
  196. package/front_end/third_party/puppeteer/package/src/util/version.ts +1 -1
  197. package/front_end/ui/components/text_editor/AiCodeCompletionProvider.ts +7 -1
  198. package/front_end/ui/components/text_editor/AiCodeGenerationProvider.ts +8 -1
  199. package/front_end/ui/legacy/components/perf_ui/LineLevelProfile.ts +0 -56
  200. package/front_end/ui/legacy/components/perf_ui/perf_ui-meta.ts +0 -35
  201. package/front_end/ui/legacy/components/perf_ui/perf_ui.ts +0 -2
  202. package/front_end/ui/visual_logging/KnownContextValues.ts +1 -0
  203. package/package.json +1 -1
  204. package/front_end/panels/profiler/LiveHeapProfileView.ts +0 -405
  205. package/front_end/panels/profiler/liveHeapProfile.css +0 -22
  206. package/front_end/ui/legacy/components/perf_ui/LiveHeapProfile.ts +0 -113
@@ -9,7 +9,7 @@ import type {Protocol} from 'devtools-protocol';
9
9
  import type {CDPSession} from '../api/CDPSession.js';
10
10
  import type {DeviceRequestPrompt} from '../api/DeviceRequestPrompt.js';
11
11
  import type {ElementHandle} from '../api/ElementHandle.js';
12
- import type {WaitForOptions} from '../api/Frame.js';
12
+ import type {SetContentWaitForOptions, WaitForOptions} from '../api/Frame.js';
13
13
  import {Frame, FrameEvent, throwIfDetached} from '../api/Frame.js';
14
14
  import type {HTTPResponse} from '../api/HTTPResponse.js';
15
15
  import type {WaitTimeoutOptions} from '../api/Page.js';
@@ -145,6 +145,12 @@ export class CdpFrame extends Frame {
145
145
  waitUntil?: PuppeteerLifeCycleEvent | PuppeteerLifeCycleEvent[];
146
146
  } = {},
147
147
  ): Promise<HTTPResponse | null> {
148
+ if (!this.page()._isUrlAllowed(url)) {
149
+ throw new Error(
150
+ `Navigation to ${url} is blocked by blocklist/allowlist rules`,
151
+ );
152
+ }
153
+
148
154
  const {
149
155
  referer = this._frameManager.networkManager.extraHTTPHeaders()['referer'],
150
156
  referrerPolicy = this._frameManager.networkManager.extraHTTPHeaders()[
@@ -273,10 +279,7 @@ export class CdpFrame extends Frame {
273
279
  @throwIfDetached
274
280
  override async setContent(
275
281
  html: string,
276
- options: {
277
- timeout?: number;
278
- waitUntil?: PuppeteerLifeCycleEvent | PuppeteerLifeCycleEvent[];
279
- } = {},
282
+ options: SetContentWaitForOptions = {},
280
283
  ): Promise<void> {
281
284
  const {
282
285
  waitUntil = ['load'],
@@ -420,6 +423,7 @@ export class CdpFrame extends Frame {
420
423
  for (const extensionWorld of Object.values(this.extensionWorlds)) {
421
424
  extensionWorld[disposeSymbol]();
422
425
  }
426
+ super[disposeSymbol]();
423
427
  }
424
428
 
425
429
  exposeFunction(): never {
@@ -615,9 +615,11 @@ export class FrameManager extends EventEmitter<FrameManagerEvents> {
615
615
  for (const child of frame.childFrames()) {
616
616
  this.#removeFramesRecursively(child);
617
617
  }
618
- frame[disposeSymbol]();
619
618
  this._frameTree.removeFrame(frame);
620
619
  this.emit(FrameManagerEvent.FrameDetached, frame);
621
620
  frame.emit(FrameEvent.FrameDetached, frame);
621
+ // Needs to be last to ensure events
622
+ // sent before handlers are cleared.
623
+ frame[disposeSymbol]();
622
624
  }
623
625
  }
@@ -266,8 +266,8 @@ export class IsolatedWorld extends Realm {
266
266
  override [disposeSymbol](): void {
267
267
  this.#context?.[disposeSymbol]();
268
268
  this.#emitter.emit('disposed', undefined);
269
- super[disposeSymbol]();
270
269
  this.#emitter.removeAllListeners();
270
+ super[disposeSymbol]();
271
271
  }
272
272
 
273
273
  override get origin(): string | undefined {
@@ -458,6 +458,10 @@ export class CdpPage extends Page {
458
458
  return this.#primaryTargetClient;
459
459
  }
460
460
 
461
+ _isUrlAllowed(url: string): boolean {
462
+ return this.#targetManager.isUrlAllowed(url);
463
+ }
464
+
461
465
  override isServiceWorkerBypassed(): boolean {
462
466
  return this.#serviceWorkerBypassed;
463
467
  }
@@ -347,7 +347,7 @@ export class TargetManager
347
347
 
348
348
  // If we connect to a browser that is already open,
349
349
  // immediately detach from any tab that is on the blocklist.
350
- if (!this.#initialAttachDone && !this.#isUrlAllowed(targetInfo.url)) {
350
+ if (!this.#initialAttachDone && !this.isUrlAllowed(targetInfo.url)) {
351
351
  await this.#silentDetach(session, parentSession);
352
352
  return;
353
353
  }
@@ -476,7 +476,7 @@ export class TargetManager
476
476
  /**
477
477
  * Helper to validate URL against blocklist patterns
478
478
  */
479
- #isUrlAllowed = (url: string): boolean => {
479
+ isUrlAllowed = (url: string): boolean => {
480
480
  if (this.#blocklist.length === 0 && this.#allowlist.length === 0) {
481
481
  return true;
482
482
  }
@@ -27,12 +27,28 @@ const getWebSocketTransportClass = async () => {
27
27
  *
28
28
  * @internal
29
29
  */
30
- export async function _connectToBrowser(
31
- options: ConnectOptions,
32
- ): Promise<Browser> {
30
+ export function assertSupportedUrlRestrictions(options: {
31
+ allowlist?: string[];
32
+ blocklist?: string[];
33
+ protocol?: string;
34
+ }): void {
33
35
  if (options.blocklist && options.allowlist) {
34
36
  throw new Error('Cannot specify both blocklist and allowlist');
35
37
  }
38
+ if (
39
+ options.protocol === 'webDriverBiDi' &&
40
+ (options.blocklist || options.allowlist)
41
+ ) {
42
+ throw new Error(
43
+ 'blocklist and allowlist are only supported with the CDP protocol',
44
+ );
45
+ }
46
+ }
47
+
48
+ export async function _connectToBrowser(
49
+ options: ConnectOptions,
50
+ ): Promise<Browser> {
51
+ assertSupportedUrlRestrictions(options);
36
52
  const {connectionTransport, endpointUrl} =
37
53
  await getConnectionTransport(options);
38
54
 
@@ -5,7 +5,9 @@
5
5
  */
6
6
 
7
7
  import mitt, {type Emitter} from '../../third_party/mitt/mitt.js';
8
- import {disposeSymbol} from '../util/disposable.js';
8
+ import {asyncDisposeSymbol, disposeSymbol} from '../util/disposable.js';
9
+
10
+ import {debugError} from './util.js';
9
11
 
10
12
  /**
11
13
  * @public
@@ -183,6 +185,13 @@ export class EventEmitter<
183
185
  * @internal
184
186
  */
185
187
  [disposeSymbol](): void {
188
+ return void this[asyncDisposeSymbol]().catch(debugError);
189
+ }
190
+
191
+ /**
192
+ * @internal
193
+ */
194
+ async [asyncDisposeSymbol](): Promise<void> {
186
195
  for (const [type, handlers] of this.#handlers) {
187
196
  for (const handler of handlers) {
188
197
  this.#emitter.off(type, handler);
@@ -26,6 +26,7 @@ import {
26
26
  import type {Browser, BrowserCloseCallback} from '../api/Browser.js';
27
27
  import {CdpBrowser} from '../cdp/Browser.js';
28
28
  import {Connection} from '../cdp/Connection.js';
29
+ import {assertSupportedUrlRestrictions} from '../common/BrowserConnector.js';
29
30
  import {TimeoutError} from '../common/Errors.js';
30
31
  import type {SupportedBrowser} from '../common/SupportedBrowser.js';
31
32
  import {debugError, DEFAULT_VIEWPORT} from '../common/util.js';
@@ -76,9 +77,6 @@ export abstract class BrowserLauncher {
76
77
  }
77
78
 
78
79
  async launch(options: LaunchOptions = {}): Promise<Browser> {
79
- if (options.blocklist && options.allowlist) {
80
- throw new Error('Cannot specify both blocklist and allowlist');
81
- }
82
80
  const {
83
81
  dumpio = false,
84
82
  enableExtensions = false,
@@ -108,6 +106,12 @@ export abstract class BrowserLauncher {
108
106
  protocol = 'webDriverBiDi';
109
107
  }
110
108
 
109
+ assertSupportedUrlRestrictions({
110
+ allowlist,
111
+ blocklist,
112
+ protocol,
113
+ });
114
+
111
115
  if (this.#browser === 'firefox' && protocol === 'cdp') {
112
116
  throw new Error('Connecting to Firefox using CDP is no longer supported');
113
117
  }
@@ -346,5 +346,6 @@ export class ScreenRecorder extends PassThrough {
346
346
  */
347
347
  override async [asyncDisposeSymbol](): Promise<void> {
348
348
  await this.stop();
349
+ await super[asyncDisposeSymbol]();
349
350
  }
350
351
  }
@@ -10,5 +10,5 @@
10
10
  export const PUPPETEER_REVISIONS = Object.freeze({
11
11
  chrome: '148.0.7778.97',
12
12
  'chrome-headless-shell': '148.0.7778.97',
13
- firefox: 'stable_150.0.1',
13
+ firefox: 'stable_150.0.2',
14
14
  });
@@ -6,5 +6,5 @@
6
6
 
7
7
  // If moved update release-please config
8
8
  // x-release-please-start-version
9
- export const packageVersion = '24.43.0';
9
+ export const packageVersion = '24.43.1';
10
10
  // x-release-please-end
@@ -134,6 +134,7 @@ export class AiCodeCompletionProvider {
134
134
  if (!this.#aiCodeCompletionSetting.get() && !this.#aiCodeCompletionTeaserDismissedSetting.get()) {
135
135
  this.#teaser = new PanelCommon.AiCodeCompletionTeaser({
136
136
  onDetach: () => this.#detachTeaser.bind(this),
137
+ panel: this.#aiCodeCompletionConfig?.panel,
137
138
  });
138
139
  this.#editor.editor.dispatch(
139
140
  {effects: this.#teaserCompartment.reconfigure([aiCodeCompletionTeaserExtension(this.#teaser)])});
@@ -320,7 +321,12 @@ export class AiCodeCompletionProvider {
320
321
  const startTime = performance.now();
321
322
  this.#aiCodeCompletionConfig?.onRequestTriggered();
322
323
  // Registering AiCodeCompletionRequestTriggered metric even if the request is served from cache
323
- Host.userMetrics.actionTaken(Host.UserMetrics.Action.AiCodeCompletionRequestTriggered);
324
+ const panel = this.#aiCodeCompletionConfig?.panel;
325
+ if (panel === AiCodeCompletion.AiCodeCompletion.ContextFlavor.CONSOLE) {
326
+ Host.userMetrics.actionTaken(Host.UserMetrics.Action.AiCodeCompletionRequestTriggeredFromConsole);
327
+ } else if (panel === AiCodeCompletion.AiCodeCompletion.ContextFlavor.SOURCES) {
328
+ Host.userMetrics.actionTaken(Host.UserMetrics.Action.AiCodeCompletionRequestTriggeredFromSources);
329
+ }
324
330
 
325
331
  try {
326
332
  const completionResponse = await this.#aiCodeCompletion.completeCode(
@@ -6,7 +6,7 @@ import * as Common from '../../../core/common/common.js';
6
6
  import * as Host from '../../../core/host/host.js';
7
7
  import * as i18n from '../../../core/i18n/i18n.js';
8
8
  import * as Root from '../../../core/root/root.js';
9
- import type * as AiCodeCompletion from '../../../models/ai_code_completion/ai_code_completion.js';
9
+ import * as AiCodeCompletion from '../../../models/ai_code_completion/ai_code_completion.js';
10
10
  import * as AiCodeGeneration from '../../../models/ai_code_generation/ai_code_generation.js';
11
11
  import * as PanelCommon from '../../../panels/common/common.js';
12
12
  import * as CodeMirror from '../../../third_party/codemirror.next/codemirror.next.js';
@@ -220,6 +220,13 @@ export class AiCodeGenerationProvider {
220
220
  }
221
221
 
222
222
  void VisualLogging.logKeyDown(event.currentTarget, event, 'ai-code-generation.triggered');
223
+ if (this.#aiCodeGenerationConfig?.panel === AiCodeCompletion.AiCodeCompletion.ContextFlavor.CONSOLE) {
224
+ Host.userMetrics.actionTaken(Host.UserMetrics.Action.AiCodeGenerationRequestTriggeredFromConsole);
225
+ void VisualLogging.logKeyDown(event.currentTarget, event, 'ai-code-generation.triggered-from-console');
226
+ } else if (this.#aiCodeGenerationConfig?.panel === AiCodeCompletion.AiCodeCompletion.ContextFlavor.SOURCES) {
227
+ Host.userMetrics.actionTaken(Host.UserMetrics.Action.AiCodeGenerationRequestTriggeredFromSources);
228
+ void VisualLogging.logKeyDown(event.currentTarget, event, 'ai-code-generation.triggered-from-sources');
229
+ }
223
230
  void this.#triggerAiCodeGeneration({signal: this.#controller.signal});
224
231
  }
225
232
 
@@ -102,62 +102,6 @@ export class Performance {
102
102
  }
103
103
  }
104
104
 
105
- let memoryInstance: Memory;
106
-
107
- // Note: this is used only by LiveHeapProfile (a drawer panel) if the experiment is enabled.
108
- export class Memory {
109
- private readonly helper: Helper;
110
- private constructor() {
111
- this.helper = new Helper(Workspace.UISourceCode.DecoratorType.MEMORY);
112
- }
113
-
114
- static instance(opts: {
115
- forceNew: boolean|null,
116
- } = {forceNew: null}): Memory {
117
- const {forceNew} = opts;
118
- if (!memoryInstance || forceNew) {
119
- memoryInstance = new Memory();
120
- }
121
-
122
- return memoryInstance;
123
- }
124
-
125
- reset(): void {
126
- this.helper.reset();
127
- void this.helper.update();
128
- }
129
-
130
- initialize(profilesAndTargets: Array<{
131
- profile: Protocol.HeapProfiler.SamplingHeapProfile,
132
- target: SDK.Target.Target,
133
- }>): void {
134
- this.helper.reset();
135
- for (const {profile, target} of profilesAndTargets) {
136
- this.appendHeapProfile(profile, target);
137
- }
138
- void this.helper.update();
139
- }
140
-
141
- private appendHeapProfile(profile: Protocol.HeapProfiler.SamplingHeapProfile, target: SDK.Target.Target|null): void {
142
- const helper = this.helper;
143
- processNode(profile.head);
144
-
145
- function processNode(node: Protocol.HeapProfiler.SamplingHeapProfileNode): void {
146
- node.children.forEach(processNode);
147
- if (!node.selfSize) {
148
- return;
149
- }
150
- const script = Number(node.callFrame.scriptId) || node.callFrame.url as Platform.DevToolsPath.UrlString;
151
- if (!script) {
152
- return;
153
- }
154
- const line = node.callFrame.lineNumber + 1;
155
- const column = node.callFrame.columnNumber + 1;
156
- helper.addLocationData(target, script, {line, column}, node.selfSize);
157
- }
158
- }
159
- }
160
-
161
105
  export class Helper {
162
106
  private readonly type: Workspace.UISourceCode.DecoratorType;
163
107
  private readonly locationPool = new Bindings.LiveLocation.LiveLocationPool();
@@ -4,7 +4,6 @@
4
4
 
5
5
  import * as Common from '../../../../core/common/common.js';
6
6
  import * as i18n from '../../../../core/i18n/i18n.js';
7
- import * as Root from '../../../../core/root/root.js';
8
7
  import * as UI from '../../legacy.js';
9
8
 
10
9
  import type * as PerfUI from './perf_ui.js';
@@ -24,21 +23,6 @@ const UIStrings = {
24
23
  * @description Classic navigation option in the Performance Panel.
25
24
  */
26
25
  classic: 'Classic',
27
- /**
28
- * @description Title of a setting under the Memory category in Settings. Live memory is memory
29
- * that is still in-use by the program (not dead). Allocation of live memory is when the program
30
- * creates new memory. This is a setting that turns on extra annotations in the UI to mark these
31
- * allocations.
32
- */
33
- liveMemoryAllocationAnnotations: 'Live memory allocation annotations',
34
- /**
35
- * @description Title of a setting under the Memory category that can be invoked through the Command Menu
36
- */
37
- showLiveMemoryAllocation: 'Show live memory allocation annotations',
38
- /**
39
- * @description Title of a setting under the Memory category that can be invoked through the Command Menu
40
- */
41
- hideLiveMemoryAllocation: 'Hide live memory allocation annotations',
42
26
  /**
43
27
  * @description Title of an action in the components tool to collect garbage
44
28
  */
@@ -88,22 +72,3 @@ Common.Settings.registerSettingExtension({
88
72
  },
89
73
  ],
90
74
  });
91
-
92
- Common.Settings.registerSettingExtension({
93
- category: Common.Settings.SettingCategory.MEMORY,
94
- experiment: Root.ExperimentNames.ExperimentName.LIVE_HEAP_PROFILE,
95
- title: i18nLazyString(UIStrings.liveMemoryAllocationAnnotations),
96
- settingName: 'memory-live-heap-profile',
97
- settingType: Common.Settings.SettingType.BOOLEAN,
98
- defaultValue: false,
99
- options: [
100
- {
101
- value: true,
102
- title: i18nLazyString(UIStrings.showLiveMemoryAllocation),
103
- },
104
- {
105
- value: false,
106
- title: i18nLazyString(UIStrings.hideLiveMemoryAllocation),
107
- },
108
- ],
109
- });
@@ -9,7 +9,6 @@ import * as FlameChart from './FlameChart.js';
9
9
  import * as Font from './Font.js';
10
10
  import * as GCActionDelegate from './GCActionDelegate.js';
11
11
  import * as LineLevelProfile from './LineLevelProfile.js';
12
- import * as LiveHeapProfile from './LiveHeapProfile.js';
13
12
  import * as NetworkPriorities from './NetworkPriorities.js';
14
13
  import * as OverviewGrid from './OverviewGrid.js';
15
14
  import * as PieChart from './PieChart.js';
@@ -25,7 +24,6 @@ export {
25
24
  Font,
26
25
  GCActionDelegate,
27
26
  LineLevelProfile,
28
- LiveHeapProfile,
29
27
  NetworkPriorities,
30
28
  OverviewGrid,
31
29
  PieChart,
@@ -2504,6 +2504,7 @@ export const knownContextValues = new Set([
2504
2504
  'lighthouse.audit.work-during-interaction',
2505
2505
  'lighthouse.cancel',
2506
2506
  'lighthouse.cat-a11y',
2507
+ 'lighthouse.cat-agentic-browsing',
2507
2508
  'lighthouse.cat-best-practices',
2508
2509
  'lighthouse.cat-perf',
2509
2510
  'lighthouse.cat-seo',
package/package.json CHANGED
@@ -105,5 +105,5 @@
105
105
  "ip-address": "10.1.0",
106
106
  "basic-ftp": "5.2.2"
107
107
  },
108
- "version": "1.0.1626437"
108
+ "version": "1.0.1628368"
109
109
  }