chrome-devtools-frontend 1.0.1522585 → 1.0.1525561

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 (357) hide show
  1. package/AUTHORS +1 -0
  2. package/docs/README.md +1 -0
  3. package/docs/policy/README.md +1 -0
  4. package/docs/policy/console-policy.md +144 -0
  5. package/docs/policy/images/console-policy1.png +0 -0
  6. package/docs/policy/images/console-policy2.png +0 -0
  7. package/docs/policy/images/console-policy3.png +0 -0
  8. package/docs/policy/slow-close.md +22 -19
  9. package/docs/ui_engineering.md +22 -0
  10. package/front_end/Tests.js +1 -1
  11. package/front_end/core/common/Color.ts +13 -9
  12. package/front_end/core/common/ColorConverter.ts +9 -7
  13. package/front_end/core/common/Gzip.ts +1 -1
  14. package/front_end/core/common/MapWithDefault.ts +5 -3
  15. package/front_end/core/common/ResourceType.ts +0 -12
  16. package/front_end/core/common/ReturnToPanel.ts +6 -4
  17. package/front_end/core/common/Trie.ts +4 -2
  18. package/front_end/core/host/AidaClient.ts +3 -3
  19. package/front_end/core/host/GdpClient.ts +7 -5
  20. package/front_end/core/host/InspectorFrontendHostAPI.ts +7 -5
  21. package/front_end/core/host/Platform.ts +5 -3
  22. package/front_end/core/host/UserMetrics.ts +6 -4
  23. package/front_end/core/platform/ArrayUtilities.ts +1 -1
  24. package/front_end/core/platform/StringUtilities.ts +34 -31
  25. package/front_end/core/root/Runtime.ts +1 -1
  26. package/front_end/core/sdk/CSSMetadata.ts +6 -4
  27. package/front_end/core/sdk/CSSPropertyParser.ts +17 -13
  28. package/front_end/core/sdk/CSSPropertyParserMatchers.ts +19 -13
  29. package/front_end/core/sdk/ChildTargetManager.ts +35 -0
  30. package/front_end/core/sdk/DOMModel.ts +1 -1
  31. package/front_end/core/sdk/EventBreakpointsModel.ts +4 -2
  32. package/front_end/core/sdk/HttpReasonPhraseStrings.ts +4 -2
  33. package/front_end/core/sdk/NetworkManager.ts +8 -48
  34. package/front_end/core/sdk/NetworkRequest.ts +0 -28
  35. package/front_end/core/sdk/PageResourceLoader.ts +1 -1
  36. package/front_end/core/sdk/PreloadingModel.ts +22 -18
  37. package/front_end/core/sdk/RehydratingConnection.ts +1 -1
  38. package/front_end/core/sdk/RehydratingObject.ts +1 -1
  39. package/front_end/core/sdk/RemoteObject.ts +1 -1
  40. package/front_end/core/sdk/ResourceTreeModel.ts +2 -0
  41. package/front_end/{models/source_map_scopes → core/sdk}/ScopeTreeCache.ts +8 -7
  42. package/front_end/core/sdk/ScreenCaptureModel.ts +24 -20
  43. package/front_end/core/sdk/Target.ts +7 -1
  44. package/front_end/core/sdk/TraceObject.ts +2 -2
  45. package/front_end/core/sdk/sdk.ts +2 -0
  46. package/front_end/entrypoints/formatter_worker/FormatterActions.ts +7 -0
  47. package/front_end/entrypoints/formatter_worker/ScopeParser.ts +15 -12
  48. package/front_end/entrypoints/formatter_worker/Substitute.ts +6 -4
  49. package/front_end/entrypoints/heap_snapshot_worker/HeapSnapshot.ts +24 -16
  50. package/front_end/entrypoints/inspector_main/OutermostTargetSelector.ts +2 -1
  51. package/front_end/entrypoints/main/MainImpl.ts +6 -4
  52. package/front_end/generated/InspectorBackendCommands.js +2 -2
  53. package/front_end/generated/protocol-mapping.d.ts +3 -2
  54. package/front_end/generated/protocol-proxy-api.d.ts +3 -1
  55. package/front_end/generated/protocol.ts +7 -1
  56. package/front_end/models/ai_assistance/agents/StylingAgent.snapshot.txt +55 -14
  57. package/front_end/models/ai_assistance/agents/StylingAgent.ts +83 -222
  58. package/front_end/models/ai_assistance/data_formatters/PerformanceTraceFormatter.snapshot.txt +23 -0
  59. package/front_end/models/ai_assistance/performance/AIContext.ts +19 -4
  60. package/front_end/models/ai_code_completion/AiCodeCompletion.ts +4 -2
  61. package/front_end/models/autofill_manager/AutofillManager.ts +4 -2
  62. package/front_end/models/cpu_profile/CPUProfileDataModel.ts +1 -1
  63. package/front_end/models/crux-manager/CrUXManager.ts +1 -1
  64. package/front_end/models/extensions/HostUrlPattern.ts +13 -5
  65. package/front_end/models/formatter/FormatterWorkerPool.ts +1 -1
  66. package/front_end/models/issues_manager/CookieDeprecationMetadataIssue.ts +1 -1
  67. package/front_end/models/issues_manager/CookieIssue.ts +2 -2
  68. package/front_end/models/issues_manager/MarkdownIssueDescription.ts +1 -1
  69. package/front_end/models/issues_manager/SharedDictionaryIssue.ts +20 -0
  70. package/front_end/models/issues_manager/descriptions/sharedDictionaryWriteErrorInvalidTTLField.md +1 -0
  71. package/front_end/models/issues_manager/descriptions/sharedDictionaryWriteErrorNonIntegerTTLField.md +1 -0
  72. package/front_end/models/javascript_metadata/NativeFunctions.js +8 -0
  73. package/front_end/models/network_time_calculator/Calculator.ts +4 -2
  74. package/front_end/models/network_time_calculator/RequestTimeRanges.ts +6 -4
  75. package/front_end/models/source_map_scopes/NamesResolver.ts +8 -8
  76. package/front_end/models/source_map_scopes/source_map_scopes.ts +0 -2
  77. package/front_end/models/text_utils/ContentProvider.ts +6 -4
  78. package/front_end/models/trace/extras/TraceTree.ts +1 -1
  79. package/front_end/models/trace/handlers/FramesHandler.ts +7 -5
  80. package/front_end/models/trace/handlers/LayoutShiftsHandler.ts +13 -7
  81. package/front_end/models/trace/handlers/MetaHandler.ts +16 -14
  82. package/front_end/models/trace/handlers/NetworkRequestsHandler.ts +20 -8
  83. package/front_end/models/trace/handlers/helpers.ts +1 -1
  84. package/front_end/models/trace/handlers/types.ts +23 -19
  85. package/front_end/models/trace/helpers/Timing.ts +4 -2
  86. package/front_end/models/trace/helpers/Trace.ts +8 -4
  87. package/front_end/models/trace/insights/DocumentLatency.ts +1 -1
  88. package/front_end/models/trace/insights/INPBreakdown.ts +13 -2
  89. package/front_end/models/trace/insights/LCPBreakdown.ts +14 -2
  90. package/front_end/models/trace/insights/NetworkDependencyTree.ts +2 -2
  91. package/front_end/models/trace/types/File.ts +12 -8
  92. package/front_end/models/trace/types/Timing.ts +1 -1
  93. package/front_end/models/trace/types/TraceEvents.ts +37 -23
  94. package/front_end/models/trace_source_maps_resolver/SourceMapsResolver.ts +1 -1
  95. package/front_end/panels/ai_assistance/components/MarkdownRendererWithCodeBlock.ts +12 -10
  96. package/front_end/panels/application/KeyValueStorageItemsView.ts +31 -33
  97. package/front_end/panels/application/components/InterestGroupAccessGrid.ts +6 -11
  98. package/front_end/panels/application/components/OriginTrialTreeView.ts +7 -5
  99. package/front_end/panels/application/components/PermissionsPolicySection.ts +1 -0
  100. package/front_end/panels/application/components/ReportsGrid.ts +4 -10
  101. package/front_end/panels/application/components/SharedStorageAccessGrid.ts +5 -13
  102. package/front_end/panels/application/preloading/components/MismatchedPreloadingGrid.ts +1 -1
  103. package/front_end/panels/application/preloading/components/PreloadingGrid.ts +3 -7
  104. package/front_end/panels/application/preloading/components/PreloadingString.ts +2 -2
  105. package/front_end/panels/application/preloading/components/RuleSetGrid.ts +3 -10
  106. package/front_end/panels/application/preloading/components/UsedPreloadingView.ts +4 -2
  107. package/front_end/panels/browser_debugger/browser_debugger-meta.ts +7 -5
  108. package/front_end/panels/changes/ChangesSidebar.ts +105 -96
  109. package/front_end/panels/changes/ChangesView.ts +69 -69
  110. package/front_end/panels/changes/CombinedDiffView.ts +1 -1
  111. package/front_end/panels/changes/changesSidebar.css +3 -0
  112. package/front_end/panels/changes/changesView.css +4 -0
  113. package/front_end/panels/console/ConsoleView.ts +2 -2
  114. package/front_end/panels/developer_resources/DeveloperResourcesListView.ts +22 -35
  115. package/front_end/panels/elements/ComputedStyleWidget.ts +1 -1
  116. package/front_end/panels/elements/ElementStatePaneWidget.ts +12 -0
  117. package/front_end/panels/elements/ElementsTreeElement.ts +9 -5
  118. package/front_end/panels/elements/ElementsTreeOutline.ts +11 -8
  119. package/front_end/panels/elements/PropertyRenderer.ts +19 -15
  120. package/front_end/panels/elements/StylePropertyTreeElement.ts +6 -4
  121. package/front_end/panels/elements/StylesSidebarPane.ts +2 -2
  122. package/front_end/panels/elements/components/AccessibilityTreeNode.ts +4 -2
  123. package/front_end/panels/elements/components/AdornerManager.ts +5 -3
  124. package/front_end/panels/lighthouse/LighthouseController.ts +5 -0
  125. package/front_end/panels/linear_memory_inspector/LinearMemoryInspectorPane.ts +43 -46
  126. package/front_end/panels/linear_memory_inspector/components/LinearMemoryInspector.ts +260 -157
  127. package/front_end/panels/linear_memory_inspector/components/linearMemoryInspector.css +28 -21
  128. package/front_end/panels/media/PlayerPropertiesView.ts +1 -1
  129. package/front_end/panels/network/NetworkDataGridNode.ts +2 -44
  130. package/front_end/panels/network/NetworkLogView.ts +6 -4
  131. package/front_end/panels/network/RequestPreviewView.ts +0 -7
  132. package/front_end/panels/network/components/RequestHeadersView.ts +0 -6
  133. package/front_end/panels/network/components/components.ts +0 -2
  134. package/front_end/panels/profiler/HeapSnapshotDataGrids.ts +1 -1
  135. package/front_end/panels/profiler/HeapSnapshotGridNodes.ts +4 -2
  136. package/front_end/panels/protocol_monitor/ProtocolMonitor.ts +12 -19
  137. package/front_end/panels/search/SearchResultsPane.ts +2 -3
  138. package/front_end/panels/security/IPProtectionView.ts +1 -1
  139. package/front_end/panels/settings/emulation/components/userAgentClientHintsForm.css +4 -0
  140. package/front_end/panels/settings/emulation/utils/StructuredHeaders.ts +45 -37
  141. package/front_end/panels/sources/BreakpointsViewUtils.ts +11 -9
  142. package/front_end/panels/sources/DebuggerPlugin.ts +8 -4
  143. package/front_end/panels/sources/SourcesPanel.ts +1 -1
  144. package/front_end/panels/sources/UISourceCodeFrame.ts +1 -1
  145. package/front_end/panels/timeline/CompatibilityTracksAppender.ts +4 -2
  146. package/front_end/panels/timeline/CountersGraph.ts +12 -5
  147. package/front_end/panels/timeline/EasterEgg.d.ts +5 -3
  148. package/front_end/panels/timeline/LayoutShiftsTrackAppender.ts +8 -6
  149. package/front_end/panels/timeline/ModificationsManager.ts +5 -3
  150. package/front_end/panels/timeline/ThreadAppender.ts +7 -5
  151. package/front_end/panels/timeline/TimelineFlameChartDataProvider.ts +10 -8
  152. package/front_end/panels/timeline/TimelineFlameChartNetworkDataProvider.ts +1 -1
  153. package/front_end/panels/timeline/TimelinePanel.ts +10 -8
  154. package/front_end/panels/timeline/TimelineSelection.ts +4 -2
  155. package/front_end/panels/timeline/TimelineUIUtils.ts +5 -3
  156. package/front_end/panels/timeline/components/BreadcrumbsUI.ts +6 -4
  157. package/front_end/panels/timeline/components/Utils.ts +1 -1
  158. package/front_end/panels/timeline/overlays/OverlaysImpl.ts +5 -3
  159. package/front_end/panels/timeline/utils/Helpers.ts +1 -1
  160. package/front_end/panels/utils/utils.ts +1 -7
  161. package/front_end/services/trace_bounds/TraceBounds.ts +4 -2
  162. package/front_end/services/tracing/PerformanceTracing.ts +1 -1
  163. package/front_end/third_party/chromium/README.chromium +1 -1
  164. package/front_end/third_party/codemirror.next/chunk/codemirror.js +1 -1
  165. package/front_end/third_party/codemirror.next/chunk/codemirror.js.map +1 -1
  166. package/front_end/third_party/codemirror.next/chunk/php.js +1 -1
  167. package/front_end/third_party/codemirror.next/chunk/php.js.map +1 -1
  168. package/front_end/third_party/codemirror.next/package.json +3 -2
  169. package/front_end/third_party/puppeteer/README.chromium +2 -2
  170. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Dialog.d.ts +8 -10
  171. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Dialog.d.ts.map +1 -1
  172. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Dialog.js +8 -10
  173. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Dialog.js.map +1 -1
  174. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/ElementHandle.d.ts +28 -30
  175. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/ElementHandle.d.ts.map +1 -1
  176. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/ElementHandle.js +27 -29
  177. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/ElementHandle.js.map +1 -1
  178. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Frame.d.ts +34 -38
  179. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Frame.d.ts.map +1 -1
  180. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Frame.js +34 -38
  181. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Frame.js.map +1 -1
  182. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/HTTPRequest.d.ts +8 -1
  183. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/HTTPRequest.d.ts.map +1 -1
  184. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/HTTPRequest.js +12 -14
  185. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/HTTPRequest.js.map +1 -1
  186. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Page.d.ts +92 -108
  187. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Page.d.ts.map +1 -1
  188. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Page.js +33 -39
  189. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Page.js.map +1 -1
  190. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Browser.d.ts.map +1 -1
  191. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Browser.js +5 -3
  192. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Browser.js.map +1 -1
  193. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Frame.d.ts.map +1 -1
  194. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Frame.js +1 -1
  195. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Frame.js.map +1 -1
  196. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/HTTPRequest.d.ts +4 -2
  197. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/HTTPRequest.d.ts.map +1 -1
  198. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/HTTPRequest.js +14 -5
  199. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/HTTPRequest.js.map +1 -1
  200. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Page.d.ts +1 -0
  201. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Page.d.ts.map +1 -1
  202. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Page.js +12 -6
  203. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Page.js.map +1 -1
  204. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/core/Browser.d.ts.map +1 -1
  205. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/core/Browser.js +24 -2
  206. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/core/Browser.js.map +1 -1
  207. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/core/Realm.d.ts +2 -2
  208. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/HTTPRequest.d.ts +1 -0
  209. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/HTTPRequest.d.ts.map +1 -1
  210. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/HTTPRequest.js +3 -0
  211. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/HTTPRequest.js.map +1 -1
  212. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/PredefinedNetworkConditions.d.ts +13 -22
  213. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/PredefinedNetworkConditions.d.ts.map +1 -1
  214. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/PredefinedNetworkConditions.js +13 -22
  215. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/PredefinedNetworkConditions.js.map +1 -1
  216. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/Device.d.ts +6 -8
  217. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/Device.d.ts.map +1 -1
  218. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/Device.js +6 -8
  219. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/Device.js.map +1 -1
  220. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/generated/version.d.ts +1 -1
  221. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/generated/version.js +1 -1
  222. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/injected/injected.d.ts +1 -1
  223. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/BrowserLauncher.d.ts +1 -1
  224. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/BrowserLauncher.d.ts.map +1 -1
  225. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/BrowserLauncher.js +6 -3
  226. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/BrowserLauncher.js.map +1 -1
  227. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/PuppeteerNode.d.ts +5 -7
  228. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/PuppeteerNode.d.ts.map +1 -1
  229. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/PuppeteerNode.js +5 -7
  230. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/PuppeteerNode.js.map +1 -1
  231. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/revisions.d.ts +3 -3
  232. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/revisions.js +3 -3
  233. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/revisions.js.map +1 -1
  234. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/util/Mutex.d.ts +2 -2
  235. package/front_end/third_party/puppeteer/package/lib/es5-iife/puppeteer-core-browser.d.ts +188 -224
  236. package/front_end/third_party/puppeteer/package/lib/es5-iife/puppeteer-core-browser.js +140 -166
  237. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Dialog.d.ts +8 -10
  238. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Dialog.d.ts.map +1 -1
  239. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Dialog.js +8 -10
  240. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Dialog.js.map +1 -1
  241. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/ElementHandle.d.ts +28 -30
  242. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/ElementHandle.d.ts.map +1 -1
  243. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/ElementHandle.js +27 -29
  244. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/ElementHandle.js.map +1 -1
  245. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Frame.d.ts +34 -38
  246. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Frame.d.ts.map +1 -1
  247. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Frame.js +34 -38
  248. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Frame.js.map +1 -1
  249. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/HTTPRequest.d.ts +8 -1
  250. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/HTTPRequest.d.ts.map +1 -1
  251. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/HTTPRequest.js +12 -14
  252. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/HTTPRequest.js.map +1 -1
  253. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Page.d.ts +92 -108
  254. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Page.d.ts.map +1 -1
  255. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Page.js +33 -39
  256. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Page.js.map +1 -1
  257. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Browser.d.ts.map +1 -1
  258. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Browser.js +5 -3
  259. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Browser.js.map +1 -1
  260. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Frame.d.ts.map +1 -1
  261. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Frame.js +1 -1
  262. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Frame.js.map +1 -1
  263. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/HTTPRequest.d.ts +4 -2
  264. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/HTTPRequest.d.ts.map +1 -1
  265. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/HTTPRequest.js +15 -6
  266. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/HTTPRequest.js.map +1 -1
  267. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Page.d.ts +1 -0
  268. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Page.d.ts.map +1 -1
  269. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Page.js +12 -6
  270. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Page.js.map +1 -1
  271. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/core/Browser.d.ts.map +1 -1
  272. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/core/Browser.js +24 -2
  273. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/core/Browser.js.map +1 -1
  274. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/HTTPRequest.d.ts +1 -0
  275. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/HTTPRequest.d.ts.map +1 -1
  276. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/HTTPRequest.js +3 -0
  277. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/HTTPRequest.js.map +1 -1
  278. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/PredefinedNetworkConditions.d.ts +13 -22
  279. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/PredefinedNetworkConditions.d.ts.map +1 -1
  280. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/PredefinedNetworkConditions.js +13 -22
  281. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/PredefinedNetworkConditions.js.map +1 -1
  282. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/Device.d.ts +6 -8
  283. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/Device.d.ts.map +1 -1
  284. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/Device.js +6 -8
  285. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/Device.js.map +1 -1
  286. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/generated/version.d.ts +1 -1
  287. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/generated/version.js +1 -1
  288. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/BrowserLauncher.d.ts +1 -1
  289. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/BrowserLauncher.d.ts.map +1 -1
  290. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/BrowserLauncher.js +6 -3
  291. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/BrowserLauncher.js.map +1 -1
  292. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/PuppeteerNode.d.ts +5 -7
  293. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/PuppeteerNode.d.ts.map +1 -1
  294. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/PuppeteerNode.js +5 -7
  295. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/PuppeteerNode.js.map +1 -1
  296. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/revisions.d.ts +3 -3
  297. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/revisions.js +3 -3
  298. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/revisions.js.map +1 -1
  299. package/front_end/third_party/puppeteer/package/lib/types.d.ts +188 -224
  300. package/front_end/third_party/puppeteer/package/package.json +3 -3
  301. package/front_end/third_party/puppeteer/package/src/api/Dialog.ts +8 -10
  302. package/front_end/third_party/puppeteer/package/src/api/ElementHandle.ts +27 -29
  303. package/front_end/third_party/puppeteer/package/src/api/Frame.ts +34 -38
  304. package/front_end/third_party/puppeteer/package/src/api/HTTPRequest.ts +17 -14
  305. package/front_end/third_party/puppeteer/package/src/api/Page.ts +92 -108
  306. package/front_end/third_party/puppeteer/package/src/bidi/Browser.ts +5 -3
  307. package/front_end/third_party/puppeteer/package/src/bidi/Frame.ts +5 -1
  308. package/front_end/third_party/puppeteer/package/src/bidi/HTTPRequest.ts +28 -3
  309. package/front_end/third_party/puppeteer/package/src/bidi/Page.ts +16 -7
  310. package/front_end/third_party/puppeteer/package/src/bidi/core/Browser.ts +28 -2
  311. package/front_end/third_party/puppeteer/package/src/cdp/HTTPRequest.ts +4 -0
  312. package/front_end/third_party/puppeteer/package/src/cdp/PredefinedNetworkConditions.ts +13 -22
  313. package/front_end/third_party/puppeteer/package/src/common/Device.ts +6 -8
  314. package/front_end/third_party/puppeteer/package/src/generated/version.ts +1 -1
  315. package/front_end/third_party/puppeteer/package/src/node/BrowserLauncher.ts +6 -3
  316. package/front_end/third_party/puppeteer/package/src/node/PuppeteerNode.ts +5 -7
  317. package/front_end/third_party/puppeteer/package/src/revisions.ts +3 -3
  318. package/front_end/ui/components/chrome_link/ChromeLink.ts +4 -2
  319. package/front_end/ui/components/dialogs/Dialog.ts +13 -9
  320. package/front_end/ui/components/docs/linear_memory_inspector/basic.ts +21 -9
  321. package/front_end/ui/components/highlighting/HighlightElement.ts +77 -0
  322. package/front_end/ui/components/highlighting/HighlightManager.ts +58 -1
  323. package/front_end/ui/components/highlighting/highlighting.ts +2 -0
  324. package/front_end/ui/components/markdown_view/MarkdownImagesMap.ts +5 -3
  325. package/front_end/ui/components/markdown_view/MarkdownLinksMap.ts +5 -3
  326. package/front_end/ui/components/menus/SelectMenu.ts +6 -4
  327. package/front_end/ui/components/survey_link/SurveyLink.ts +4 -2
  328. package/front_end/ui/components/text_editor/config.ts +10 -6
  329. package/front_end/ui/components/text_editor/javascript.ts +8 -4
  330. package/front_end/ui/components/tooltips/Tooltip.ts +22 -5
  331. package/front_end/ui/legacy/ForwardedInputEventHandler.ts +4 -2
  332. package/front_end/ui/legacy/GlassPane.ts +1 -1
  333. package/front_end/ui/legacy/SettingsUI.ts +1 -5
  334. package/front_end/ui/legacy/Treeoutline.ts +12 -33
  335. package/front_end/ui/legacy/UIUtils.ts +19 -1
  336. package/front_end/ui/legacy/components/color_picker/Spectrum.ts +12 -10
  337. package/front_end/ui/legacy/components/cookie_table/CookiesTable.ts +30 -32
  338. package/front_end/ui/legacy/components/data_grid/DataGrid.ts +1 -1
  339. package/front_end/ui/legacy/components/data_grid/DataGridElement.ts +25 -25
  340. package/front_end/ui/legacy/components/data_grid/dataGrid.css +5 -0
  341. package/front_end/ui/legacy/components/inline_editor/AnimationTimingModel.ts +4 -2
  342. package/front_end/ui/legacy/components/object_ui/ObjectPropertiesSection.ts +4 -2
  343. package/front_end/ui/legacy/components/perf_ui/FlameChart.ts +8 -6
  344. package/front_end/ui/legacy/components/perf_ui/PieChart.ts +6 -4
  345. package/front_end/ui/legacy/components/source_frame/SourceFrame.ts +3 -3
  346. package/front_end/ui/legacy/components/source_frame/StreamingContentHexView.ts +18 -20
  347. package/front_end/ui/legacy/components/source_frame/XMLView.ts +22 -16
  348. package/front_end/ui/legacy/components/source_frame/xmlView.css +0 -2
  349. package/front_end/ui/legacy/components/utils/Linkifier.ts +6 -4
  350. package/front_end/ui/visual_logging/Debugging.ts +10 -6
  351. package/front_end/ui/visual_logging/KnownContextValues.ts +1 -3
  352. package/inspector_overlay/common.ts +5 -3
  353. package/inspector_overlay/highlight_grid_common.ts +1 -1
  354. package/package.json +1 -1
  355. package/front_end/Images/src/bundle.svg +0 -3
  356. package/front_end/panels/network/components/WebBundleInfoView.css +0 -27
  357. package/front_end/panels/network/components/WebBundleInfoView.ts +0 -95
@@ -188,19 +188,18 @@ export function bindIsolatedHandle<This extends ElementHandle<Node>>(
188
188
  * ```ts
189
189
  * import puppeteer from 'puppeteer';
190
190
  *
191
- * (async () => {
192
- * const browser = await puppeteer.launch();
193
- * const page = await browser.newPage();
194
- * await page.goto('https://example.com');
195
- * const hrefElement = await page.$('a');
196
- * await hrefElement.click();
197
- * // ...
198
- * })();
191
+ * const browser = await puppeteer.launch();
192
+ * const page = await browser.newPage();
193
+ * await page.goto('https://example.com');
194
+ * const hrefElement = await page.$('a');
195
+ * await hrefElement.click();
196
+ * // ...
199
197
  * ```
200
198
  *
201
199
  * ElementHandle prevents the DOM element from being garbage-collected unless the
202
200
  * handle is {@link JSHandle.dispose | disposed}. ElementHandles are auto-disposed
203
- * when their origin frame gets navigated.
201
+ * when their associated frame is navigated away or the parent
202
+ * context gets destroyed.
204
203
  *
205
204
  * ElementHandle instances can be used as arguments in {@link Page.$eval} and
206
205
  * {@link Page.evaluate} methods.
@@ -533,9 +532,10 @@ export abstract class ElementHandle<
533
532
  *
534
533
  * ```ts
535
534
  * const feedHandle = await page.$('.feed');
536
- * expect(
537
- * await feedHandle.$$eval('.tweet', nodes => nodes.map(n => n.innerText)),
538
- * ).toEqual(['Hello!', 'Hi!']);
535
+ *
536
+ * const listOfTweets = await feedHandle.$$eval('.tweet', nodes =>
537
+ * nodes.map(n => n.innerText),
538
+ * );
539
539
  * ```
540
540
  *
541
541
  * @param selector -
@@ -600,24 +600,22 @@ export abstract class ElementHandle<
600
600
  * ```ts
601
601
  * import puppeteer from 'puppeteer';
602
602
  *
603
- * (async () => {
604
- * const browser = await puppeteer.launch();
605
- * const page = await browser.newPage();
606
- * let currentURL;
607
- * page
608
- * .mainFrame()
609
- * .waitForSelector('img')
610
- * .then(() => console.log('First URL with image: ' + currentURL));
603
+ * const browser = await puppeteer.launch();
604
+ * const page = await browser.newPage();
605
+ * let currentURL;
606
+ * page
607
+ * .mainFrame()
608
+ * .waitForSelector('img')
609
+ * .then(() => console.log('First URL with image: ' + currentURL));
611
610
  *
612
- * for (currentURL of [
613
- * 'https://example.com',
614
- * 'https://google.com',
615
- * 'https://bbc.com',
616
- * ]) {
617
- * await page.goto(currentURL);
618
- * }
619
- * await browser.close();
620
- * })();
611
+ * for (currentURL of [
612
+ * 'https://example.com',
613
+ * 'https://google.com',
614
+ * 'https://bbc.com',
615
+ * ]) {
616
+ * await page.goto(currentURL);
617
+ * }
618
+ * await browser.close();
621
619
  * ```
622
620
  *
623
621
  * @param selector - The selector to query and wait for.
@@ -231,20 +231,18 @@ export const throwIfDetached = throwIfDisposed<Frame>(frame => {
231
231
  * ```ts
232
232
  * import puppeteer from 'puppeteer';
233
233
  *
234
- * (async () => {
235
- * const browser = await puppeteer.launch();
236
- * const page = await browser.newPage();
237
- * await page.goto('https://www.google.com/chrome/browser/canary.html');
238
- * dumpFrameTree(page.mainFrame(), '');
239
- * await browser.close();
234
+ * const browser = await puppeteer.launch();
235
+ * const page = await browser.newPage();
236
+ * await page.goto('https://www.google.com/chrome/browser/canary.html');
237
+ * dumpFrameTree(page.mainFrame(), '');
238
+ * await browser.close();
240
239
  *
241
- * function dumpFrameTree(frame, indent) {
242
- * console.log(indent + frame.url());
243
- * for (const child of frame.childFrames()) {
244
- * dumpFrameTree(child, indent + ' ');
245
- * }
240
+ * function dumpFrameTree(frame, indent) {
241
+ * console.log(indent + frame.url());
242
+ * for (const child of frame.childFrames()) {
243
+ * dumpFrameTree(child, indent + ' ');
246
244
  * }
247
- * })();
245
+ * }
248
246
  * ```
249
247
  *
250
248
  * @example
@@ -712,24 +710,22 @@ export abstract class Frame extends EventEmitter<FrameEvents> {
712
710
  * ```ts
713
711
  * import puppeteer from 'puppeteer';
714
712
  *
715
- * (async () => {
716
- * const browser = await puppeteer.launch();
717
- * const page = await browser.newPage();
718
- * let currentURL;
719
- * page
720
- * .mainFrame()
721
- * .waitForSelector('img')
722
- * .then(() => console.log('First URL with image: ' + currentURL));
723
- *
724
- * for (currentURL of [
725
- * 'https://example.com',
726
- * 'https://google.com',
727
- * 'https://bbc.com',
728
- * ]) {
729
- * await page.goto(currentURL);
730
- * }
731
- * await browser.close();
732
- * })();
713
+ * const browser = await puppeteer.launch();
714
+ * const page = await browser.newPage();
715
+ * let currentURL;
716
+ * page
717
+ * .mainFrame()
718
+ * .waitForSelector('img')
719
+ * .then(() => console.log('First URL with image: ' + currentURL));
720
+ *
721
+ * for (currentURL of [
722
+ * 'https://example.com',
723
+ * 'https://google.com',
724
+ * 'https://bbc.com',
725
+ * ]) {
726
+ * await page.goto(currentURL);
727
+ * }
728
+ * await browser.close();
733
729
  * ```
734
730
  *
735
731
  * @param selector - The selector to query and wait for.
@@ -757,14 +753,14 @@ export abstract class Frame extends EventEmitter<FrameEvents> {
757
753
  * ```ts
758
754
  * import puppeteer from 'puppeteer';
759
755
  *
760
- * (async () => {
761
- * . const browser = await puppeteer.launch();
762
- * . const page = await browser.newPage();
763
- * . const watchDog = page.mainFrame().waitForFunction('window.innerWidth < 100');
764
- * . page.setViewport({width: 50, height: 50});
765
- * . await watchDog;
766
- * . await browser.close();
767
- * })();
756
+ * const browser = await puppeteer.launch();
757
+ * const page = await browser.newPage();
758
+ * const watchDog = page
759
+ * .mainFrame()
760
+ * .waitForFunction('window.innerWidth < 100');
761
+ * page.setViewport({width: 50, height: 50});
762
+ * await watchDog;
763
+ * await browser.close();
768
764
  * ```
769
765
  *
770
766
  * To pass arguments from Node.js to the predicate of `page.waitForFunction` function:
@@ -174,7 +174,6 @@ export abstract class HTTPRequest {
174
174
  * `respond()` aren't called).
175
175
  */
176
176
  continueRequestOverrides(): ContinueRequestOverrides {
177
- assert(this.interception.enabled, 'Request Interception is not enabled!');
178
177
  return this.interception.requestOverrides;
179
178
  }
180
179
 
@@ -183,7 +182,6 @@ export abstract class HTTPRequest {
183
182
  * interception is allowed to respond (ie, `abort()` is not called).
184
183
  */
185
184
  responseForRequest(): Partial<ResponseForRequest> | null {
186
- assert(this.interception.enabled, 'Request Interception is not enabled!');
187
185
  return this.interception.response;
188
186
  }
189
187
 
@@ -191,7 +189,6 @@ export abstract class HTTPRequest {
191
189
  * The most recent reason for aborting the request
192
190
  */
193
191
  abortErrorReason(): Protocol.Network.ErrorReason | null {
194
- assert(this.interception.enabled, 'Request Interception is not enabled!');
195
192
  return this.interception.abortReason;
196
193
  }
197
194
 
@@ -384,9 +381,17 @@ export abstract class HTTPRequest {
384
381
  */
385
382
  abstract failure(): {errorText: string} | null;
386
383
 
387
- #canBeIntercepted(): boolean {
388
- return !this.url().startsWith('data:') && !this._fromMemoryCache;
384
+ /**
385
+ * @internal
386
+ */
387
+ protected verifyInterception(): void {
388
+ assert(this.interception.enabled, 'Request Interception is not enabled!');
389
+ assert(!this.interception.handled, 'Request is already handled!');
389
390
  }
391
+ /**
392
+ * @internal
393
+ */
394
+ protected abstract canBeIntercepted(): boolean;
390
395
 
391
396
  /**
392
397
  * Continues request with optional request overrides.
@@ -420,11 +425,11 @@ export abstract class HTTPRequest {
420
425
  overrides: ContinueRequestOverrides = {},
421
426
  priority?: number,
422
427
  ): Promise<void> {
423
- if (!this.#canBeIntercepted()) {
428
+ this.verifyInterception();
429
+ if (!this.canBeIntercepted()) {
424
430
  return;
425
431
  }
426
- assert(this.interception.enabled, 'Request Interception is not enabled!');
427
- assert(!this.interception.handled, 'Request is already handled!');
432
+
428
433
  if (priority === undefined) {
429
434
  return await this._continue(overrides);
430
435
  }
@@ -488,11 +493,10 @@ export abstract class HTTPRequest {
488
493
  response: Partial<ResponseForRequest>,
489
494
  priority?: number,
490
495
  ): Promise<void> {
491
- if (!this.#canBeIntercepted()) {
496
+ this.verifyInterception();
497
+ if (!this.canBeIntercepted()) {
492
498
  return;
493
499
  }
494
- assert(this.interception.enabled, 'Request Interception is not enabled!');
495
- assert(!this.interception.handled, 'Request is already handled!');
496
500
  if (priority === undefined) {
497
501
  return await this._respond(response);
498
502
  }
@@ -534,13 +538,12 @@ export abstract class HTTPRequest {
534
538
  errorCode: ErrorCode = 'failed',
535
539
  priority?: number,
536
540
  ): Promise<void> {
537
- if (!this.#canBeIntercepted()) {
541
+ this.verifyInterception();
542
+ if (!this.canBeIntercepted()) {
538
543
  return;
539
544
  }
540
545
  const errorReason = errorReasons[errorCode];
541
546
  assert(errorReason, 'Unknown error code: ' + errorCode);
542
- assert(this.interception.enabled, 'Request Interception is not enabled!');
543
- assert(!this.interception.handled, 'Request is already handled!');
544
547
  if (priority === undefined) {
545
548
  return await this._abort(errorReason);
546
549
  }
@@ -650,13 +650,11 @@ export function setDefaultScreenshotOptions(options: ScreenshotOptions): void {
650
650
  * ```ts
651
651
  * import puppeteer from 'puppeteer';
652
652
  *
653
- * (async () => {
654
- * const browser = await puppeteer.launch();
655
- * const page = await browser.newPage();
656
- * await page.goto('https://example.com');
657
- * await page.screenshot({path: 'screenshot.png'});
658
- * await browser.close();
659
- * })();
653
+ * const browser = await puppeteer.launch();
654
+ * const page = await browser.newPage();
655
+ * await page.goto('https://example.com');
656
+ * await page.screenshot({path: 'screenshot.png'});
657
+ * await browser.close();
660
658
  * ```
661
659
  *
662
660
  * The Page class extends from Puppeteer's {@link EventEmitter} class and will
@@ -949,21 +947,19 @@ export abstract class Page extends EventEmitter<PageEvents> {
949
947
  *
950
948
  * ```ts
951
949
  * import puppeteer from 'puppeteer';
952
- * (async () => {
953
- * const browser = await puppeteer.launch();
954
- * const page = await browser.newPage();
955
- * await page.setRequestInterception(true);
956
- * page.on('request', interceptedRequest => {
957
- * if (
958
- * interceptedRequest.url().endsWith('.png') ||
959
- * interceptedRequest.url().endsWith('.jpg')
960
- * )
961
- * interceptedRequest.abort();
962
- * else interceptedRequest.continue();
963
- * });
964
- * await page.goto('https://example.com');
965
- * await browser.close();
966
- * })();
950
+ * const browser = await puppeteer.launch();
951
+ * const page = await browser.newPage();
952
+ * await page.setRequestInterception(true);
953
+ * page.on('request', interceptedRequest => {
954
+ * if (
955
+ * interceptedRequest.url().endsWith('.png') ||
956
+ * interceptedRequest.url().endsWith('.jpg')
957
+ * )
958
+ * interceptedRequest.abort();
959
+ * else interceptedRequest.continue();
960
+ * });
961
+ * await page.goto('https://example.com');
962
+ * await browser.close();
967
963
  * ```
968
964
  *
969
965
  * @param value - Whether to enable request interception.
@@ -1010,14 +1006,12 @@ export abstract class Page extends EventEmitter<PageEvents> {
1010
1006
  * import {PredefinedNetworkConditions} from 'puppeteer';
1011
1007
  * const slow3G = PredefinedNetworkConditions['Slow 3G'];
1012
1008
  *
1013
- * (async () => {
1014
- * const browser = await puppeteer.launch();
1015
- * const page = await browser.newPage();
1016
- * await page.emulateNetworkConditions(slow3G);
1017
- * await page.goto('https://www.google.com');
1018
- * // other actions...
1019
- * await browser.close();
1020
- * })();
1009
+ * const browser = await puppeteer.launch();
1010
+ * const page = await browser.newPage();
1011
+ * await page.emulateNetworkConditions(slow3G);
1012
+ * await page.goto('https://www.google.com');
1013
+ * // other actions...
1014
+ * await browser.close();
1021
1015
  * ```
1022
1016
  *
1023
1017
  * @param networkConditions - Passing `null` disables network condition
@@ -1552,21 +1546,19 @@ export abstract class Page extends EventEmitter<PageEvents> {
1552
1546
  * import puppeteer from 'puppeteer';
1553
1547
  * import crypto from 'crypto';
1554
1548
  *
1555
- * (async () => {
1556
- * const browser = await puppeteer.launch();
1557
- * const page = await browser.newPage();
1558
- * page.on('console', msg => console.log(msg.text()));
1559
- * await page.exposeFunction('md5', text =>
1560
- * crypto.createHash('md5').update(text).digest('hex'),
1561
- * );
1562
- * await page.evaluate(async () => {
1563
- * // use window.md5 to compute hashes
1564
- * const myString = 'PUPPETEER';
1565
- * const myHash = await window.md5(myString);
1566
- * console.log(`md5 of ${myString} is ${myHash}`);
1567
- * });
1568
- * await browser.close();
1569
- * })();
1549
+ * const browser = await puppeteer.launch();
1550
+ * const page = await browser.newPage();
1551
+ * page.on('console', msg => console.log(msg.text()));
1552
+ * await page.exposeFunction('md5', text =>
1553
+ * crypto.createHash('md5').update(text).digest('hex'),
1554
+ * );
1555
+ * await page.evaluate(async () => {
1556
+ * // use window.md5 to compute hashes
1557
+ * const myString = 'PUPPETEER';
1558
+ * const myHash = await window.md5(myString);
1559
+ * console.log(`md5 of ${myString} is ${myHash}`);
1560
+ * });
1561
+ * await browser.close();
1570
1562
  * ```
1571
1563
  *
1572
1564
  * @example
@@ -1576,25 +1568,23 @@ export abstract class Page extends EventEmitter<PageEvents> {
1576
1568
  * import puppeteer from 'puppeteer';
1577
1569
  * import fs from 'node:fs';
1578
1570
  *
1579
- * (async () => {
1580
- * const browser = await puppeteer.launch();
1581
- * const page = await browser.newPage();
1582
- * page.on('console', msg => console.log(msg.text()));
1583
- * await page.exposeFunction('readfile', async filePath => {
1584
- * return new Promise((resolve, reject) => {
1585
- * fs.readFile(filePath, 'utf8', (err, text) => {
1586
- * if (err) reject(err);
1587
- * else resolve(text);
1588
- * });
1571
+ * const browser = await puppeteer.launch();
1572
+ * const page = await browser.newPage();
1573
+ * page.on('console', msg => console.log(msg.text()));
1574
+ * await page.exposeFunction('readfile', async filePath => {
1575
+ * return new Promise((resolve, reject) => {
1576
+ * fs.readFile(filePath, 'utf8', (err, text) => {
1577
+ * if (err) reject(err);
1578
+ * else resolve(text);
1589
1579
  * });
1590
1580
  * });
1591
- * await page.evaluate(async () => {
1592
- * // use window.readfile to read contents of a file
1593
- * const content = await window.readfile('/etc/hosts');
1594
- * console.log(content);
1595
- * });
1596
- * await browser.close();
1597
- * })();
1581
+ * });
1582
+ * await page.evaluate(async () => {
1583
+ * // use window.readfile to read contents of a file
1584
+ * const content = await window.readfile('/etc/hosts');
1585
+ * console.log(content);
1586
+ * });
1587
+ * await browser.close();
1598
1588
  * ```
1599
1589
  *
1600
1590
  * @param name - Name of the function on the window object
@@ -2036,14 +2026,12 @@ export abstract class Page extends EventEmitter<PageEvents> {
2036
2026
  * import {KnownDevices} from 'puppeteer';
2037
2027
  * const iPhone = KnownDevices['iPhone 15 Pro'];
2038
2028
  *
2039
- * (async () => {
2040
- * const browser = await puppeteer.launch();
2041
- * const page = await browser.newPage();
2042
- * await page.emulate(iPhone);
2043
- * await page.goto('https://www.google.com');
2044
- * // other actions...
2045
- * await browser.close();
2046
- * })();
2029
+ * const browser = await puppeteer.launch();
2030
+ * const page = await browser.newPage();
2031
+ * await page.emulate(iPhone);
2032
+ * await page.goto('https://www.google.com');
2033
+ * // other actions...
2034
+ * await browser.close();
2047
2035
  * ```
2048
2036
  */
2049
2037
  async emulate(device: Device): Promise<void> {
@@ -2207,25 +2195,23 @@ export abstract class Page extends EventEmitter<PageEvents> {
2207
2195
  * ```ts
2208
2196
  * import puppeteer from 'puppeteer';
2209
2197
  *
2210
- * (async () => {
2211
- * const browser = await puppeteer.launch();
2212
- * const page = await browser.newPage();
2213
- * await page.goto('https://v8.dev/blog/10-years');
2198
+ * const browser = await puppeteer.launch();
2199
+ * const page = await browser.newPage();
2200
+ * await page.goto('https://v8.dev/blog/10-years');
2214
2201
  *
2215
- * await page.emulateVisionDeficiency('achromatopsia');
2216
- * await page.screenshot({path: 'achromatopsia.png'});
2202
+ * await page.emulateVisionDeficiency('achromatopsia');
2203
+ * await page.screenshot({path: 'achromatopsia.png'});
2217
2204
  *
2218
- * await page.emulateVisionDeficiency('deuteranopia');
2219
- * await page.screenshot({path: 'deuteranopia.png'});
2205
+ * await page.emulateVisionDeficiency('deuteranopia');
2206
+ * await page.screenshot({path: 'deuteranopia.png'});
2220
2207
  *
2221
- * await page.emulateVisionDeficiency('blurredVision');
2222
- * await page.screenshot({path: 'blurred-vision.png'});
2208
+ * await page.emulateVisionDeficiency('blurredVision');
2209
+ * await page.screenshot({path: 'blurred-vision.png'});
2223
2210
  *
2224
- * await page.emulateVisionDeficiency('reducedContrast');
2225
- * await page.screenshot({path: 'reduced-contrast.png'});
2211
+ * await page.emulateVisionDeficiency('reducedContrast');
2212
+ * await page.screenshot({path: 'reduced-contrast.png'});
2226
2213
  *
2227
- * await browser.close();
2228
- * })();
2214
+ * await browser.close();
2229
2215
  * ```
2230
2216
  *
2231
2217
  * @param type - the type of deficiency to simulate, or `'none'` to reset.
@@ -2994,22 +2980,21 @@ export abstract class Page extends EventEmitter<PageEvents> {
2994
2980
  *
2995
2981
  * ```ts
2996
2982
  * import puppeteer from 'puppeteer';
2997
- * (async () => {
2998
- * const browser = await puppeteer.launch();
2999
- * const page = await browser.newPage();
3000
- * let currentURL;
3001
- * page
3002
- * .waitForSelector('img')
3003
- * .then(() => console.log('First URL with image: ' + currentURL));
3004
- * for (currentURL of [
3005
- * 'https://example.com',
3006
- * 'https://google.com',
3007
- * 'https://bbc.com',
3008
- * ]) {
3009
- * await page.goto(currentURL);
3010
- * }
3011
- * await browser.close();
3012
- * })();
2983
+ *
2984
+ * const browser = await puppeteer.launch();
2985
+ * const page = await browser.newPage();
2986
+ * let currentURL;
2987
+ * page
2988
+ * .waitForSelector('img')
2989
+ * .then(() => console.log('First URL with image: ' + currentURL));
2990
+ * for (currentURL of [
2991
+ * 'https://example.com',
2992
+ * 'https://google.com',
2993
+ * 'https://bbc.com',
2994
+ * ]) {
2995
+ * await page.goto(currentURL);
2996
+ * }
2997
+ * await browser.close();
3013
2998
  * ```
3014
2999
  *
3015
3000
  * @param selector -
@@ -3063,14 +3048,13 @@ export abstract class Page extends EventEmitter<PageEvents> {
3063
3048
  *
3064
3049
  * ```ts
3065
3050
  * import puppeteer from 'puppeteer';
3066
- * (async () => {
3067
- * const browser = await puppeteer.launch();
3068
- * const page = await browser.newPage();
3069
- * const watchDog = page.waitForFunction('window.innerWidth < 100');
3070
- * await page.setViewport({width: 50, height: 50});
3071
- * await watchDog;
3072
- * await browser.close();
3073
- * })();
3051
+ *
3052
+ * const browser = await puppeteer.launch();
3053
+ * const page = await browser.newPage();
3054
+ * const watchDog = page.waitForFunction('window.innerWidth < 100');
3055
+ * await page.setViewport({width: 50, height: 50});
3056
+ * await watchDog;
3057
+ * await browser.close();
3074
3058
  * ```
3075
3059
  *
3076
3060
  * @example
@@ -92,10 +92,12 @@ export class BidiBrowser extends Browser {
92
92
  },
93
93
  });
94
94
 
95
+ // Subscribe to all WebDriver BiDi events. Also subscribe to CDP events if CDP
96
+ // connection is available.
95
97
  await session.subscribe(
96
- (session.capabilities.browserName.toLocaleLowerCase().includes('firefox')
97
- ? BidiBrowser.subscribeModules
98
- : [...BidiBrowser.subscribeModules, ...BidiBrowser.subscribeCdpEvents]
98
+ (opts.cdpConnection
99
+ ? [...BidiBrowser.subscribeModules, ...BidiBrowser.subscribeCdpEvents]
100
+ : BidiBrowser.subscribeModules
99
101
  ).filter(module => {
100
102
  if (!opts.networkEnabled) {
101
103
  return (
@@ -136,7 +136,11 @@ export class BidiFrame extends Frame {
136
136
  });
137
137
 
138
138
  this.browsingContext.on('request', ({request}) => {
139
- const httpRequest = BidiHTTPRequest.from(request, this);
139
+ const httpRequest = BidiHTTPRequest.from(
140
+ request,
141
+ this,
142
+ this.page().isNetworkInterceptionEnabled,
143
+ );
140
144
  request.once('success', () => {
141
145
  this.page().trustedEmitter.emit(PageEvent.RequestFinished, httpRequest);
142
146
  });
@@ -9,6 +9,7 @@ import type * as Bidi from 'webdriver-bidi-protocol';
9
9
  import type {CDPSession} from '../api/CDPSession.js';
10
10
  import type {
11
11
  ContinueRequestOverrides,
12
+ InterceptResolutionState,
12
13
  ResponseForRequest,
13
14
  } from '../api/HTTPRequest.js';
14
15
  import {
@@ -16,6 +17,7 @@ import {
16
17
  STATUS_TEXTS,
17
18
  type ResourceType,
18
19
  handleError,
20
+ InterceptResolutionAction,
19
21
  } from '../api/HTTPRequest.js';
20
22
  import {PageEvent} from '../api/Page.js';
21
23
  import {UnsupportedOperation} from '../common/Errors.js';
@@ -34,9 +36,15 @@ export class BidiHTTPRequest extends HTTPRequest {
34
36
  static from(
35
37
  bidiRequest: Request,
36
38
  frame: BidiFrame,
39
+ isNetworkInterceptionEnabled: boolean,
37
40
  redirect?: BidiHTTPRequest,
38
41
  ): BidiHTTPRequest {
39
- const request = new BidiHTTPRequest(bidiRequest, frame, redirect);
42
+ const request = new BidiHTTPRequest(
43
+ bidiRequest,
44
+ frame,
45
+ isNetworkInterceptionEnabled,
46
+ redirect,
47
+ );
40
48
  request.#initialize();
41
49
  return request;
42
50
  }
@@ -50,12 +58,13 @@ export class BidiHTTPRequest extends HTTPRequest {
50
58
  private constructor(
51
59
  request: Request,
52
60
  frame: BidiFrame,
61
+ isNetworkInterceptionEnabled: boolean,
53
62
  redirect?: BidiHTTPRequest,
54
63
  ) {
55
64
  super();
56
65
  requests.set(request, this);
57
66
 
58
- this.interception.enabled = request.isBlocked;
67
+ this.interception.enabled = isNetworkInterceptionEnabled;
59
68
 
60
69
  this.#request = request;
61
70
  this.#frame = frame;
@@ -69,7 +78,12 @@ export class BidiHTTPRequest extends HTTPRequest {
69
78
 
70
79
  #initialize() {
71
80
  this.#request.on('redirect', request => {
72
- const httpRequest = BidiHTTPRequest.from(request, this.#frame, this);
81
+ const httpRequest = BidiHTTPRequest.from(
82
+ request,
83
+ this.#frame,
84
+ this.interception.enabled,
85
+ this,
86
+ );
73
87
  this.#redirectChain.push(this);
74
88
 
75
89
  request.once('success', () => {
@@ -108,6 +122,17 @@ export class BidiHTTPRequest extends HTTPRequest {
108
122
  }
109
123
  }
110
124
 
125
+ protected canBeIntercepted(): boolean {
126
+ return this.#request.isBlocked;
127
+ }
128
+
129
+ override interceptResolutionState(): InterceptResolutionState {
130
+ if (!this.#request.isBlocked) {
131
+ return {action: InterceptResolutionAction.Disabled};
132
+ }
133
+ return super.interceptResolutionState();
134
+ }
135
+
111
136
  override url(): string {
112
137
  return this.#request.url;
113
138
  }