chrome-devtools-frontend 1.0.1650232 → 1.0.1651641
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.
- package/.agents/skills/version-control/SKILL.md +5 -1
- package/config/typescript/tsconfig.base.json +1 -0
- package/front_end/core/host/InspectorFrontendHostAPI.ts +0 -1
- package/front_end/core/host/UserMetrics.ts +0 -11
- package/front_end/core/sdk/CSSMatchedStyles.ts +20 -4
- package/front_end/devtools_compatibility.js +1 -2
- package/front_end/entrypoints/heap_snapshot_worker/HeapSnapshot.ts +94 -0
- package/front_end/foundation/Universe.ts +7 -0
- package/front_end/generated/InspectorBackendCommands.ts +4 -1
- package/front_end/generated/SupportedCSSProperties.js +284 -0
- package/front_end/generated/protocol-mapping.d.ts +7 -0
- package/front_end/generated/protocol-proxy-api.d.ts +5 -0
- package/front_end/generated/protocol.ts +60 -0
- package/front_end/models/ai_assistance/AiAgent2.ts +11 -1
- package/front_end/models/ai_assistance/README.md +4 -0
- package/front_end/models/ai_assistance/agents/AccessibilityAgent.ts +2 -0
- package/front_end/models/ai_assistance/agents/AiAgent.ts +3 -0
- package/front_end/models/ai_assistance/agents/PerformanceAgent.ts +2 -0
- package/front_end/models/ai_assistance/ai_assistance.ts +4 -0
- package/front_end/models/ai_assistance/skills/Skill.ts +1 -1
- package/front_end/models/ai_assistance/skills/SkillRegistry.ts +2 -0
- package/front_end/models/ai_assistance/skills/accessibility.md +13 -0
- package/front_end/models/ai_assistance/tools/GetLighthouseAudits.ts +54 -0
- package/front_end/models/ai_assistance/tools/ResolveLighthousePath.ts +124 -0
- package/front_end/models/ai_assistance/tools/Tool.ts +12 -2
- package/front_end/models/ai_assistance/tools/ToolRegistry.ts +4 -0
- package/front_end/models/heap_snapshot/HeapSnapshotModel.ts +14 -0
- package/front_end/models/heap_snapshot/HeapSnapshotProxy.ts +4 -0
- package/front_end/models/javascript_metadata/NativeFunctions.js +4 -0
- package/front_end/models/persistence/NetworkPersistenceManager.ts +9 -1
- package/front_end/panels/ai_assistance/components/ChatMessage.ts +3 -11
- package/front_end/panels/common/ExtensionServer.ts +70 -50
- package/front_end/panels/elements/CSSSpecificityBreakdown.ts +106 -0
- package/front_end/panels/elements/ElementsPanel.ts +1 -1
- package/front_end/panels/elements/StylePropertiesSection.ts +40 -13
- package/front_end/panels/elements/StylePropertyTreeElement.ts +6 -5
- package/front_end/panels/elements/components/CSSQuery.ts +119 -4
- package/front_end/panels/elements/elements.ts +3 -0
- package/front_end/panels/elements/stylesSidebarPane.css +34 -0
- package/front_end/panels/js_timeline/js_timeline-meta.ts +1 -2
- package/front_end/panels/layer_viewer/PaintProfilerView.ts +0 -3
- package/front_end/panels/network/RequestHeadersView.ts +2 -2
- package/front_end/panels/network/components/RequestHeadersView.css +1 -0
- package/front_end/panels/network/components/ResponseHeaderSection.css +5 -1
- package/front_end/panels/recorder/testing/RecorderHelpers.ts +2 -0
- package/front_end/panels/timeline/timeline-meta.ts +1 -1
- package/front_end/third_party/chromium/README.chromium +1 -1
- package/front_end/third_party/puppeteer/README.chromium +2 -2
- package/front_end/third_party/puppeteer/package/README.md +14 -0
- package/front_end/third_party/puppeteer/package/lib/es5-iife/puppeteer-core-browser.d.ts +60 -24
- package/front_end/third_party/puppeteer/package/lib/es5-iife/puppeteer-core-browser.js +271 -164
- package/front_end/third_party/puppeteer/package/lib/puppeteer/api/Browser.d.ts +2 -6
- package/front_end/third_party/puppeteer/package/lib/puppeteer/api/Browser.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/api/Browser.js +2 -2
- package/front_end/third_party/puppeteer/package/lib/puppeteer/api/Browser.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/api/BrowserContext.js +2 -2
- package/front_end/third_party/puppeteer/package/lib/puppeteer/api/BrowserContext.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/api/HTTPRequest.js +11 -7
- package/front_end/third_party/puppeteer/package/lib/puppeteer/api/HTTPRequest.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/api/JSHandle.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/api/JSHandle.js +3 -10
- package/front_end/third_party/puppeteer/package/lib/puppeteer/api/JSHandle.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/api/Page.d.ts +9 -4
- package/front_end/third_party/puppeteer/package/lib/puppeteer/api/Page.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/api/Page.js +4 -4
- package/front_end/third_party/puppeteer/package/lib/puppeteer/api/Page.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/api/WebWorker.d.ts +13 -0
- package/front_end/third_party/puppeteer/package/lib/puppeteer/api/WebWorker.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/api/WebWorker.js +14 -0
- package/front_end/third_party/puppeteer/package/lib/puppeteer/api/WebWorker.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/api/locators/locators.js +5 -5
- package/front_end/third_party/puppeteer/package/lib/puppeteer/api/locators/locators.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/bidi/BidiOverCdp.js +2 -2
- package/front_end/third_party/puppeteer/package/lib/puppeteer/bidi/BidiOverCdp.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/bidi/Browser.js +3 -3
- package/front_end/third_party/puppeteer/package/lib/puppeteer/bidi/Browser.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/bidi/BrowserConnector.js +5 -3
- package/front_end/third_party/puppeteer/package/lib/puppeteer/bidi/BrowserConnector.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/bidi/BrowserContext.js +6 -6
- package/front_end/third_party/puppeteer/package/lib/puppeteer/bidi/BrowserContext.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/bidi/Connection.d.ts +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/bidi/Connection.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/bidi/Connection.js +3 -3
- package/front_end/third_party/puppeteer/package/lib/puppeteer/bidi/Connection.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/bidi/Deserializer.js +2 -2
- package/front_end/third_party/puppeteer/package/lib/puppeteer/bidi/Deserializer.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/bidi/ExposedFunction.js +6 -6
- package/front_end/third_party/puppeteer/package/lib/puppeteer/bidi/ExposedFunction.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/bidi/Frame.js +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/bidi/Frame.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/bidi/Page.d.ts +1 -0
- package/front_end/third_party/puppeteer/package/lib/puppeteer/bidi/Page.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/bidi/Page.js +3 -0
- package/front_end/third_party/puppeteer/package/lib/puppeteer/bidi/Page.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/bidi/Realm.js +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/bidi/Realm.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/bidi/core/BrowsingContext.d.ts +1 -0
- package/front_end/third_party/puppeteer/package/lib/puppeteer/bidi/core/BrowsingContext.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/bidi/core/BrowsingContext.js +11 -0
- package/front_end/third_party/puppeteer/package/lib/puppeteer/bidi/core/BrowsingContext.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/Accessibility.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/Accessibility.js +4 -4
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/Accessibility.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/Binding.js +3 -3
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/Binding.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/Browser.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/Browser.js +13 -2
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/Browser.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/BrowserConnector.js +2 -2
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/BrowserConnector.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/Connection.js +2 -2
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/Connection.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/Coverage.js +2 -2
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/Coverage.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/ElementHandle.js +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/ElementHandle.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/EmulationManager.d.ts +1 -0
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/EmulationManager.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/EmulationManager.js +25 -4
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/EmulationManager.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/ExecutionContext.js +3 -3
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/ExecutionContext.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/Extension.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/Extension.js +9 -11
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/Extension.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/Frame.js +3 -3
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/Frame.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/FrameManager.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/FrameManager.js +7 -7
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/FrameManager.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/HTTPRequest.js +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/HTTPRequest.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/JSHandle.js +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/JSHandle.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/NetworkManager.d.ts +3 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/NetworkManager.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/NetworkManager.js +18 -10
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/NetworkManager.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/Page.d.ts +1 -0
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/Page.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/Page.js +17 -11
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/Page.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/Target.js +3 -3
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/Target.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/TargetManager.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/TargetManager.js +28 -10
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/TargetManager.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/WebMCP.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/WebMCP.js +10 -6
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/WebMCP.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/WebWorker.d.ts +3 -0
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/WebWorker.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/WebWorker.js +20 -5
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/WebWorker.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/common/BrowserConnector.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/common/BrowserConnector.js +11 -0
- package/front_end/third_party/puppeteer/package/lib/puppeteer/common/BrowserConnector.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/common/BrowserWebSocketTransport.js +2 -2
- package/front_end/third_party/puppeteer/package/lib/puppeteer/common/BrowserWebSocketTransport.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/common/CallbackRegistry.js +2 -2
- package/front_end/third_party/puppeteer/package/lib/puppeteer/common/CallbackRegistry.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/common/Configuration.d.ts +4 -2
- package/front_end/third_party/puppeteer/package/lib/puppeteer/common/Configuration.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/common/ConnectOptions.d.ts +26 -13
- package/front_end/third_party/puppeteer/package/lib/puppeteer/common/ConnectOptions.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/common/Debug.d.ts +1 -6
- package/front_end/third_party/puppeteer/package/lib/puppeteer/common/Debug.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/common/Debug.js +24 -33
- package/front_end/third_party/puppeteer/package/lib/puppeteer/common/Debug.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/common/EventEmitter.js +2 -2
- package/front_end/third_party/puppeteer/package/lib/puppeteer/common/EventEmitter.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/common/util.d.ts +8 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/common/util.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/common/util.js +8 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/common/util.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/environment.d.ts +2 -0
- package/front_end/third_party/puppeteer/package/lib/puppeteer/environment.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/environment.js +4 -2
- package/front_end/third_party/puppeteer/package/lib/puppeteer/environment.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/generated/injected.d.ts +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/generated/injected.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/generated/injected.js +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/generated/injected.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/injected/TextContent.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/injected/TextContent.js +15 -5
- package/front_end/third_party/puppeteer/package/lib/puppeteer/injected/TextContent.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/node/BrowserLauncher.d.ts +5 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/node/BrowserLauncher.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/node/BrowserLauncher.js +17 -16
- package/front_end/third_party/puppeteer/package/lib/puppeteer/node/BrowserLauncher.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/node/ChromeLauncher.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/node/ChromeLauncher.js +14 -9
- package/front_end/third_party/puppeteer/package/lib/puppeteer/node/ChromeLauncher.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/node/FirefoxLauncher.js +2 -2
- package/front_end/third_party/puppeteer/package/lib/puppeteer/node/FirefoxLauncher.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/node/NodeWebSocketTransport.js +2 -2
- package/front_end/third_party/puppeteer/package/lib/puppeteer/node/NodeWebSocketTransport.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/node/PipeTransport.js +3 -3
- package/front_end/third_party/puppeteer/package/lib/puppeteer/node/PipeTransport.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/node/ScreenRecorder.d.ts +20 -0
- package/front_end/third_party/puppeteer/package/lib/puppeteer/node/ScreenRecorder.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/node/ScreenRecorder.js +38 -9
- package/front_end/third_party/puppeteer/package/lib/puppeteer/node/ScreenRecorder.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/node-env-setup.d.ts +7 -0
- package/front_end/third_party/puppeteer/package/lib/puppeteer/node-env-setup.d.ts.map +1 -0
- package/front_end/third_party/puppeteer/package/lib/puppeteer/node-env-setup.js +16 -0
- package/front_end/third_party/puppeteer/package/lib/puppeteer/node-env-setup.js.map +1 -0
- package/front_end/third_party/puppeteer/package/lib/puppeteer/puppeteer-core.d.ts +1 -0
- package/front_end/third_party/puppeteer/package/lib/puppeteer/puppeteer-core.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/puppeteer-core.js +3 -8
- package/front_end/third_party/puppeteer/package/lib/puppeteer/puppeteer-core.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/revisions.d.ts +3 -3
- package/front_end/third_party/puppeteer/package/lib/puppeteer/revisions.js +3 -3
- package/front_end/third_party/puppeteer/package/lib/puppeteer/revisions.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/util/version.d.ts +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/util/version.js +1 -1
- package/front_end/third_party/puppeteer/package/lib/types.d.ts +60 -24
- package/front_end/third_party/puppeteer/package/package.json +4 -4
- package/front_end/third_party/puppeteer/package/src/api/Browser.ts +4 -8
- package/front_end/third_party/puppeteer/package/src/api/BrowserContext.ts +2 -2
- package/front_end/third_party/puppeteer/package/src/api/HTTPRequest.ts +10 -10
- package/front_end/third_party/puppeteer/package/src/api/JSHandle.ts +3 -10
- package/front_end/third_party/puppeteer/package/src/api/Page.ts +14 -8
- package/front_end/third_party/puppeteer/package/src/api/WebWorker.ts +30 -0
- package/front_end/third_party/puppeteer/package/src/api/locators/locators.ts +5 -5
- package/front_end/third_party/puppeteer/package/src/bidi/BidiOverCdp.ts +2 -2
- package/front_end/third_party/puppeteer/package/src/bidi/Browser.ts +3 -3
- package/front_end/third_party/puppeteer/package/src/bidi/BrowserConnector.ts +5 -3
- package/front_end/third_party/puppeteer/package/src/bidi/BrowserContext.ts +6 -6
- package/front_end/third_party/puppeteer/package/src/bidi/Connection.ts +4 -4
- package/front_end/third_party/puppeteer/package/src/bidi/Deserializer.ts +2 -2
- package/front_end/third_party/puppeteer/package/src/bidi/ExposedFunction.ts +6 -6
- package/front_end/third_party/puppeteer/package/src/bidi/Frame.ts +1 -1
- package/front_end/third_party/puppeteer/package/src/bidi/Page.ts +4 -0
- package/front_end/third_party/puppeteer/package/src/bidi/Realm.ts +1 -1
- package/front_end/third_party/puppeteer/package/src/bidi/core/BrowsingContext.ts +11 -0
- package/front_end/third_party/puppeteer/package/src/cdp/Accessibility.ts +6 -4
- package/front_end/third_party/puppeteer/package/src/cdp/Binding.ts +3 -3
- package/front_end/third_party/puppeteer/package/src/cdp/Browser.ts +14 -2
- package/front_end/third_party/puppeteer/package/src/cdp/BrowserConnector.ts +2 -2
- package/front_end/third_party/puppeteer/package/src/cdp/Connection.ts +2 -2
- package/front_end/third_party/puppeteer/package/src/cdp/Coverage.ts +2 -2
- package/front_end/third_party/puppeteer/package/src/cdp/ElementHandle.ts +1 -1
- package/front_end/third_party/puppeteer/package/src/cdp/EmulationManager.ts +36 -4
- package/front_end/third_party/puppeteer/package/src/cdp/ExecutionContext.ts +3 -3
- package/front_end/third_party/puppeteer/package/src/cdp/Extension.ts +16 -17
- package/front_end/third_party/puppeteer/package/src/cdp/Frame.ts +3 -3
- package/front_end/third_party/puppeteer/package/src/cdp/FrameManager.ts +12 -7
- package/front_end/third_party/puppeteer/package/src/cdp/HTTPRequest.ts +1 -1
- package/front_end/third_party/puppeteer/package/src/cdp/JSHandle.ts +1 -1
- package/front_end/third_party/puppeteer/package/src/cdp/NetworkManager.ts +22 -11
- package/front_end/third_party/puppeteer/package/src/cdp/Page.ts +18 -10
- package/front_end/third_party/puppeteer/package/src/cdp/Target.ts +3 -3
- package/front_end/third_party/puppeteer/package/src/cdp/TargetManager.ts +37 -12
- package/front_end/third_party/puppeteer/package/src/cdp/WebMCP.ts +11 -9
- package/front_end/third_party/puppeteer/package/src/cdp/WebWorker.ts +33 -5
- package/front_end/third_party/puppeteer/package/src/common/BrowserConnector.ts +11 -0
- package/front_end/third_party/puppeteer/package/src/common/BrowserWebSocketTransport.ts +2 -2
- package/front_end/third_party/puppeteer/package/src/common/CallbackRegistry.ts +2 -2
- package/front_end/third_party/puppeteer/package/src/common/Configuration.ts +4 -2
- package/front_end/third_party/puppeteer/package/src/common/ConnectOptions.ts +26 -13
- package/front_end/third_party/puppeteer/package/src/common/Debug.ts +30 -40
- package/front_end/third_party/puppeteer/package/src/common/EventEmitter.ts +2 -2
- package/front_end/third_party/puppeteer/package/src/common/util.ts +9 -1
- package/front_end/third_party/puppeteer/package/src/environment.ts +7 -3
- package/front_end/third_party/puppeteer/package/src/generated/injected.ts +1 -1
- package/front_end/third_party/puppeteer/package/src/injected/TextContent.ts +15 -5
- package/front_end/third_party/puppeteer/package/src/node/BrowserLauncher.ts +23 -23
- package/front_end/third_party/puppeteer/package/src/node/ChromeLauncher.ts +19 -13
- package/front_end/third_party/puppeteer/package/src/node/FirefoxLauncher.ts +2 -2
- package/front_end/third_party/puppeteer/package/src/node/NodeWebSocketTransport.ts +2 -2
- package/front_end/third_party/puppeteer/package/src/node/PipeTransport.ts +3 -3
- package/front_end/third_party/puppeteer/package/src/node/ScreenRecorder.ts +44 -9
- package/front_end/third_party/puppeteer/package/src/node-env-setup.ts +18 -0
- package/front_end/third_party/puppeteer/package/src/puppeteer-core.ts +5 -9
- package/front_end/third_party/puppeteer/package/src/revisions.ts +3 -3
- package/front_end/third_party/puppeteer/package/src/util/version.ts +1 -1
- package/front_end/third_party/puppeteer/puppeteer-tsconfig.json +1 -0
- package/front_end/tsconfig.json +1 -2
- package/inspector_overlay/tsconfig.json +3 -10
- package/mcp/tsconfig.json +1 -5
- package/package.json +1 -2
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
import type Protocol from 'devtools-protocol';
|
|
8
8
|
|
|
9
9
|
import type {EvaluateFuncWith, HandleFor, HandleOr} from '../common/types.js';
|
|
10
|
-
import {
|
|
10
|
+
import {withSourcePuppeteerURLIfNone, debugCatchError} from '../common/util.js';
|
|
11
11
|
import {moveable, throwIfDisposed} from '../util/decorators.js';
|
|
12
12
|
import {disposeSymbol, asyncDisposeSymbol} from '../util/disposable.js';
|
|
13
13
|
|
|
@@ -135,14 +135,7 @@ export abstract class JSHandle<T = unknown> {
|
|
|
135
135
|
@throwIfDisposed()
|
|
136
136
|
async getProperties(): Promise<Map<string, JSHandle>> {
|
|
137
137
|
const propertyNames = await this.evaluate(object => {
|
|
138
|
-
|
|
139
|
-
const descriptors = Object.getOwnPropertyDescriptors(object);
|
|
140
|
-
for (const propertyName in descriptors) {
|
|
141
|
-
if (descriptors[propertyName]?.enumerable) {
|
|
142
|
-
enumerableProperties.push(propertyName);
|
|
143
|
-
}
|
|
144
|
-
}
|
|
145
|
-
return enumerableProperties;
|
|
138
|
+
return Object.keys(object ?? {});
|
|
146
139
|
});
|
|
147
140
|
const map = new Map<string, JSHandle>();
|
|
148
141
|
const results = await Promise.all(
|
|
@@ -202,7 +195,7 @@ export abstract class JSHandle<T = unknown> {
|
|
|
202
195
|
|
|
203
196
|
/** @internal */
|
|
204
197
|
[disposeSymbol](): void {
|
|
205
|
-
return void this[asyncDisposeSymbol]().catch(
|
|
198
|
+
return void this[asyncDisposeSymbol]().catch(debugCatchError);
|
|
206
199
|
}
|
|
207
200
|
|
|
208
201
|
/** @internal */
|
|
@@ -61,7 +61,6 @@ import type {
|
|
|
61
61
|
NodeFor,
|
|
62
62
|
} from '../common/types.js';
|
|
63
63
|
import {
|
|
64
|
-
debugError,
|
|
65
64
|
fromEmitterEvent,
|
|
66
65
|
filterAsync,
|
|
67
66
|
isString,
|
|
@@ -69,6 +68,7 @@ import {
|
|
|
69
68
|
timeout,
|
|
70
69
|
withSourcePuppeteerURLIfNone,
|
|
71
70
|
fromAbortSignal,
|
|
71
|
+
debugCatchError,
|
|
72
72
|
} from '../common/util.js';
|
|
73
73
|
import type {Viewport} from '../common/Viewport.js';
|
|
74
74
|
import {environment} from '../environment.js';
|
|
@@ -910,7 +910,8 @@ export abstract class Page extends EventEmitter<PageEvents> {
|
|
|
910
910
|
/**
|
|
911
911
|
* A target this page was created from.
|
|
912
912
|
*
|
|
913
|
-
* @deprecated
|
|
913
|
+
* @deprecated To create CDP session use {@link Page.createCDPSession} directly. To
|
|
914
|
+
* identify pages spawned by this one, use {@link PageEvent.Popup} event instead.
|
|
914
915
|
*/
|
|
915
916
|
abstract target(): Target;
|
|
916
917
|
|
|
@@ -955,9 +956,8 @@ export abstract class Page extends EventEmitter<PageEvents> {
|
|
|
955
956
|
abstract get tracing(): Tracing;
|
|
956
957
|
|
|
957
958
|
/**
|
|
958
|
-
* Experimental API for {@link https://github.com/webmachinelearning/webmcp
|
|
959
|
-
*
|
|
960
|
-
* `--enable-features=WebMCPTesting,DevToolsWebMCPSupport` flags enabled.
|
|
959
|
+
* Experimental API for {@link https://github.com/webmachinelearning/webmcp| WebMCP}.
|
|
960
|
+
* Requires Chrome 150+ with the `--enable-features=WebMCP` flag enabled.
|
|
961
961
|
*
|
|
962
962
|
* @experimental
|
|
963
963
|
*/
|
|
@@ -2220,6 +2220,12 @@ export abstract class Page extends EventEmitter<PageEvents> {
|
|
|
2220
2220
|
*/
|
|
2221
2221
|
abstract emulateMediaFeatures(features?: MediaFeature[]): Promise<void>;
|
|
2222
2222
|
|
|
2223
|
+
/**
|
|
2224
|
+
* @param locale - Locale to emulate on the page. Passing no locale disables
|
|
2225
|
+
* locale emulation.
|
|
2226
|
+
*/
|
|
2227
|
+
abstract emulateLocale(locale?: string): Promise<void>;
|
|
2228
|
+
|
|
2223
2229
|
/**
|
|
2224
2230
|
* @param timezoneId - Changes the timezone of the page. See
|
|
2225
2231
|
* {@link https://source.chromium.org/chromium/chromium/deps/icu.git/+/faee8bc70570192d82d2978a71e2a615788597d1:source/data/misc/metaZones.txt | ICU’s metaZones.txt}
|
|
@@ -2614,7 +2620,7 @@ export abstract class Page extends EventEmitter<PageEvents> {
|
|
|
2614
2620
|
if (viewport && viewport.deviceScaleFactor !== 0) {
|
|
2615
2621
|
await this.setViewport({...viewport, deviceScaleFactor: 0});
|
|
2616
2622
|
stack.defer(() => {
|
|
2617
|
-
void this.setViewport(viewport).catch(
|
|
2623
|
+
void this.setViewport(viewport).catch(debugCatchError);
|
|
2618
2624
|
});
|
|
2619
2625
|
}
|
|
2620
2626
|
return await this.mainFrame()
|
|
@@ -2738,7 +2744,7 @@ export abstract class Page extends EventEmitter<PageEvents> {
|
|
|
2738
2744
|
...scrollDimensions,
|
|
2739
2745
|
});
|
|
2740
2746
|
stack.defer(async () => {
|
|
2741
|
-
await this.setViewport(viewport).catch(
|
|
2747
|
+
await this.setViewport(viewport).catch(debugCatchError);
|
|
2742
2748
|
});
|
|
2743
2749
|
}
|
|
2744
2750
|
} else {
|
|
@@ -3228,7 +3234,7 @@ export abstract class Page extends EventEmitter<PageEvents> {
|
|
|
3228
3234
|
|
|
3229
3235
|
/** @internal */
|
|
3230
3236
|
override [disposeSymbol](): void {
|
|
3231
|
-
return void this[asyncDisposeSymbol]().catch(
|
|
3237
|
+
return void this[asyncDisposeSymbol]().catch(debugCatchError);
|
|
3232
3238
|
}
|
|
3233
3239
|
|
|
3234
3240
|
/** @internal */
|
|
@@ -155,6 +155,36 @@ export abstract class WebWorker extends EventEmitter<WebWorkerEvents> {
|
|
|
155
155
|
return await this.mainRealm().evaluateHandle(func, ...args);
|
|
156
156
|
}
|
|
157
157
|
|
|
158
|
+
/**
|
|
159
|
+
* Waits for the provided function, `workerFunction`, to return a truthy value when
|
|
160
|
+
* evaluated in the page's context.
|
|
161
|
+
*
|
|
162
|
+
* @param workerFunction - Function to be evaluated in browser context until it
|
|
163
|
+
* returns a truthy value.
|
|
164
|
+
* @param options - Options for configuring waiting behavior.
|
|
165
|
+
*/
|
|
166
|
+
waitForFunction<
|
|
167
|
+
Params extends unknown[],
|
|
168
|
+
Func extends EvaluateFunc<Params> = EvaluateFunc<Params>,
|
|
169
|
+
>(
|
|
170
|
+
workerFunction: Func | string,
|
|
171
|
+
options: {
|
|
172
|
+
polling?: number;
|
|
173
|
+
timeout?: number;
|
|
174
|
+
signal?: AbortSignal;
|
|
175
|
+
} = {},
|
|
176
|
+
...args: Params
|
|
177
|
+
): Promise<HandleFor<Awaited<ReturnType<Func>>>> {
|
|
178
|
+
return this.mainRealm().waitForFunction(
|
|
179
|
+
workerFunction,
|
|
180
|
+
{
|
|
181
|
+
polling: 100,
|
|
182
|
+
...options,
|
|
183
|
+
},
|
|
184
|
+
...args,
|
|
185
|
+
);
|
|
186
|
+
}
|
|
187
|
+
|
|
158
188
|
async close(): Promise<void> {
|
|
159
189
|
throw new UnsupportedOperation('WebWorker.close() is not supported');
|
|
160
190
|
}
|
|
@@ -33,7 +33,7 @@ import {
|
|
|
33
33
|
import type {EventType} from '../../common/EventEmitter.js';
|
|
34
34
|
import {EventEmitter} from '../../common/EventEmitter.js';
|
|
35
35
|
import type {Awaitable, HandleFor, NodeFor} from '../../common/types.js';
|
|
36
|
-
import {
|
|
36
|
+
import {fromAbortSignal, timeout, debugCatchError} from '../../common/util.js';
|
|
37
37
|
import type {
|
|
38
38
|
BoundingBox,
|
|
39
39
|
ClickOptions,
|
|
@@ -400,7 +400,7 @@ export abstract class Locator<T> extends EventEmitter<LocatorEvents> {
|
|
|
400
400
|
mergeMap(handle => {
|
|
401
401
|
return from(handle.click(options)).pipe(
|
|
402
402
|
catchError(err => {
|
|
403
|
-
void handle.dispose().catch(
|
|
403
|
+
void handle.dispose().catch(debugCatchError);
|
|
404
404
|
throw err;
|
|
405
405
|
}),
|
|
406
406
|
);
|
|
@@ -595,7 +595,7 @@ export abstract class Locator<T> extends EventEmitter<LocatorEvents> {
|
|
|
595
595
|
)
|
|
596
596
|
.pipe(
|
|
597
597
|
catchError(err => {
|
|
598
|
-
void handle.dispose().catch(
|
|
598
|
+
void handle.dispose().catch(debugCatchError);
|
|
599
599
|
throw err;
|
|
600
600
|
}),
|
|
601
601
|
);
|
|
@@ -624,7 +624,7 @@ export abstract class Locator<T> extends EventEmitter<LocatorEvents> {
|
|
|
624
624
|
mergeMap(handle => {
|
|
625
625
|
return from(handle.hover()).pipe(
|
|
626
626
|
catchError(err => {
|
|
627
|
-
void handle.dispose().catch(
|
|
627
|
+
void handle.dispose().catch(debugCatchError);
|
|
628
628
|
throw err;
|
|
629
629
|
}),
|
|
630
630
|
);
|
|
@@ -666,7 +666,7 @@ export abstract class Locator<T> extends EventEmitter<LocatorEvents> {
|
|
|
666
666
|
),
|
|
667
667
|
).pipe(
|
|
668
668
|
catchError(err => {
|
|
669
|
-
void handle.dispose().catch(
|
|
669
|
+
void handle.dispose().catch(debugCatchError);
|
|
670
670
|
throw err;
|
|
671
671
|
}),
|
|
672
672
|
);
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
import
|
|
7
|
+
import {BidiMapper} from 'chromium-bidi';
|
|
8
8
|
import type {ProtocolMapping} from 'devtools-protocol/types/protocol-mapping.js';
|
|
9
9
|
|
|
10
10
|
import type {CDPEvents, CDPSession} from '../api/CDPSession.js';
|
|
@@ -16,7 +16,7 @@ import type {Handler} from '../common/EventEmitter.js';
|
|
|
16
16
|
import {BidiConnection} from './Connection.js';
|
|
17
17
|
|
|
18
18
|
const bidiServerLogger = (prefix: string, ...args: unknown[]): void => {
|
|
19
|
-
debug(`bidi:${prefix}`)(args);
|
|
19
|
+
debug(`bidi:${prefix}`)?.(args);
|
|
20
20
|
};
|
|
21
21
|
|
|
22
22
|
/**
|
|
@@ -130,7 +130,7 @@ export class BidiBrowser extends Browser {
|
|
|
130
130
|
});
|
|
131
131
|
} catch (err) {
|
|
132
132
|
if (err instanceof ProtocolError) {
|
|
133
|
-
debugError(err);
|
|
133
|
+
debugError?.(err);
|
|
134
134
|
} else {
|
|
135
135
|
throw err;
|
|
136
136
|
}
|
|
@@ -250,7 +250,7 @@ export class BidiBrowser extends Browser {
|
|
|
250
250
|
await this.#closeCallback?.call(null);
|
|
251
251
|
} catch (error) {
|
|
252
252
|
// Fail silently.
|
|
253
|
-
debugError(error);
|
|
253
|
+
debugError?.(error);
|
|
254
254
|
} finally {
|
|
255
255
|
this.connection.dispose();
|
|
256
256
|
}
|
|
@@ -364,7 +364,7 @@ export class BidiBrowser extends Browser {
|
|
|
364
364
|
await this.#browserCore.session.end();
|
|
365
365
|
} catch (error) {
|
|
366
366
|
// Fail silently.
|
|
367
|
-
debugError(error);
|
|
367
|
+
debugError?.(error);
|
|
368
368
|
} finally {
|
|
369
369
|
this.connection.dispose();
|
|
370
370
|
}
|
|
@@ -9,7 +9,7 @@ import {Connection} from '../cdp/Connection.js';
|
|
|
9
9
|
import type {ConnectionTransport} from '../common/ConnectionTransport.js';
|
|
10
10
|
import type {ConnectOptions} from '../common/ConnectOptions.js';
|
|
11
11
|
import {ProtocolError, UnsupportedOperation} from '../common/Errors.js';
|
|
12
|
-
import {
|
|
12
|
+
import {DEFAULT_VIEWPORT, debugCatchError} from '../common/util.js';
|
|
13
13
|
import {createIncrementalIdGenerator} from '../util/incremental-id-generator.js';
|
|
14
14
|
|
|
15
15
|
import type {BidiBrowser} from './Browser.js';
|
|
@@ -90,7 +90,9 @@ async function getBiDiConnection(
|
|
|
90
90
|
return {
|
|
91
91
|
bidiConnection: pureBidiConnection,
|
|
92
92
|
closeCallback: async () => {
|
|
93
|
-
await pureBidiConnection
|
|
93
|
+
await pureBidiConnection
|
|
94
|
+
.send('browser.close', {})
|
|
95
|
+
.catch(debugCatchError);
|
|
94
96
|
},
|
|
95
97
|
};
|
|
96
98
|
}
|
|
@@ -126,7 +128,7 @@ async function getBiDiConnection(
|
|
|
126
128
|
bidiConnection: bidiOverCdpConnection,
|
|
127
129
|
closeCallback: async () => {
|
|
128
130
|
// In case of BiDi over CDP, we need to close browser via CDP.
|
|
129
|
-
await cdpConnection.send('Browser.close').catch(
|
|
131
|
+
await cdpConnection.send('Browser.close').catch(debugCatchError);
|
|
130
132
|
},
|
|
131
133
|
};
|
|
132
134
|
}
|
|
@@ -20,7 +20,7 @@ import type {Target} from '../api/Target.js';
|
|
|
20
20
|
import type {Cookie, CookieData} from '../common/Cookie.js';
|
|
21
21
|
import {UnsupportedOperation} from '../common/Errors.js';
|
|
22
22
|
import {EventEmitter} from '../common/EventEmitter.js';
|
|
23
|
-
import {debugError} from '../common/util.js';
|
|
23
|
+
import {debugError, debugCatchError} from '../common/util.js';
|
|
24
24
|
import type {Viewport} from '../common/Viewport.js';
|
|
25
25
|
import {assert} from '../util/assert.js';
|
|
26
26
|
import {bubble} from '../util/decorators.js';
|
|
@@ -214,7 +214,7 @@ export class BidiBrowserContext extends BrowserContext {
|
|
|
214
214
|
await page.setViewport(this.#defaultViewport);
|
|
215
215
|
} catch (error) {
|
|
216
216
|
// Tolerate not supporting `browsingContext.setViewport`. Only log it.
|
|
217
|
-
debugError(error);
|
|
217
|
+
debugError?.(error);
|
|
218
218
|
}
|
|
219
219
|
}
|
|
220
220
|
if (options?.type === 'window' && options?.windowBounds !== undefined) {
|
|
@@ -225,7 +225,7 @@ export class BidiBrowserContext extends BrowserContext {
|
|
|
225
225
|
);
|
|
226
226
|
} catch (error) {
|
|
227
227
|
// Tolerate not supporting `browser.setClientWindowState`. Only log it.
|
|
228
|
-
debugError(error);
|
|
228
|
+
debugError?.(error);
|
|
229
229
|
}
|
|
230
230
|
}
|
|
231
231
|
|
|
@@ -241,7 +241,7 @@ export class BidiBrowserContext extends BrowserContext {
|
|
|
241
241
|
try {
|
|
242
242
|
await this.userContext.remove();
|
|
243
243
|
} catch (error) {
|
|
244
|
-
debugError(error);
|
|
244
|
+
debugError?.(error);
|
|
245
245
|
}
|
|
246
246
|
|
|
247
247
|
this.#targets.clear();
|
|
@@ -287,7 +287,7 @@ export class BidiBrowserContext extends BrowserContext {
|
|
|
287
287
|
// TODO: some permissions are outdated and setting them to denied does
|
|
288
288
|
// not work.
|
|
289
289
|
if (!permissionsSet.has(permission)) {
|
|
290
|
-
return result.catch(
|
|
290
|
+
return result.catch(debugCatchError);
|
|
291
291
|
}
|
|
292
292
|
return result;
|
|
293
293
|
},
|
|
@@ -345,7 +345,7 @@ export class BidiBrowserContext extends BrowserContext {
|
|
|
345
345
|
},
|
|
346
346
|
Bidi.Permissions.PermissionState.Prompt,
|
|
347
347
|
)
|
|
348
|
-
.catch(
|
|
348
|
+
.catch(debugCatchError);
|
|
349
349
|
});
|
|
350
350
|
this.#overrides = [];
|
|
351
351
|
await Promise.all(promises);
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
import type
|
|
7
|
+
import type {Protocol as ChromiumBidi} from 'chromium-bidi';
|
|
8
8
|
import type * as Bidi from 'webdriver-bidi-protocol';
|
|
9
9
|
|
|
10
10
|
import {CallbackRegistry} from '../common/CallbackRegistry.js';
|
|
@@ -131,7 +131,7 @@ export class BidiConnection
|
|
|
131
131
|
method,
|
|
132
132
|
params,
|
|
133
133
|
} as Bidi.Command);
|
|
134
|
-
debugProtocolSend(stringifiedMessage);
|
|
134
|
+
debugProtocolSend?.(stringifiedMessage);
|
|
135
135
|
this.#transport.send(stringifiedMessage);
|
|
136
136
|
}) as Promise<{result: Commands[T]['returnType']}>;
|
|
137
137
|
}
|
|
@@ -145,7 +145,7 @@ export class BidiConnection
|
|
|
145
145
|
return setTimeout(f, this.#delay);
|
|
146
146
|
});
|
|
147
147
|
}
|
|
148
|
-
debugProtocolReceive(message);
|
|
148
|
+
debugProtocolReceive?.(message);
|
|
149
149
|
const object: Bidi.Message | CdpEvent = JSON.parse(message);
|
|
150
150
|
if ('type' in object) {
|
|
151
151
|
switch (object.type) {
|
|
@@ -183,7 +183,7 @@ export class BidiConnection
|
|
|
183
183
|
object.message,
|
|
184
184
|
);
|
|
185
185
|
}
|
|
186
|
-
debugError(object);
|
|
186
|
+
debugError?.(object);
|
|
187
187
|
}
|
|
188
188
|
|
|
189
189
|
/**
|
|
@@ -14,7 +14,7 @@ import {debugError} from '../common/util.js';
|
|
|
14
14
|
export class BidiDeserializer {
|
|
15
15
|
static deserialize(result: Bidi.Script.RemoteValue): any {
|
|
16
16
|
if (!result) {
|
|
17
|
-
debugError('Service did not produce a result.');
|
|
17
|
+
debugError?.('Service did not produce a result.');
|
|
18
18
|
return undefined;
|
|
19
19
|
}
|
|
20
20
|
|
|
@@ -58,7 +58,7 @@ export class BidiDeserializer {
|
|
|
58
58
|
return result.value;
|
|
59
59
|
}
|
|
60
60
|
|
|
61
|
-
debugError(`Deserialization of type ${result.type} not supported.`);
|
|
61
|
+
debugError?.(`Deserialization of type ${result.type} not supported.`);
|
|
62
62
|
return undefined;
|
|
63
63
|
}
|
|
64
64
|
|
|
@@ -8,7 +8,7 @@ import * as Bidi from 'webdriver-bidi-protocol';
|
|
|
8
8
|
|
|
9
9
|
import {EventEmitter} from '../common/EventEmitter.js';
|
|
10
10
|
import type {Awaitable, FlattenHandle} from '../common/types.js';
|
|
11
|
-
import {debugError} from '../common/util.js';
|
|
11
|
+
import {debugError, debugCatchError} from '../common/util.js';
|
|
12
12
|
import {DisposableStack} from '../util/disposable.js';
|
|
13
13
|
import {interpolateFunction, stringifyFunction} from '../util/Function.js';
|
|
14
14
|
|
|
@@ -119,7 +119,7 @@ export class ExposableFunction<Args extends unknown[], Ret> {
|
|
|
119
119
|
} catch (error) {
|
|
120
120
|
// If it errors, the frame probably doesn't support call function. We
|
|
121
121
|
// fail gracefully.
|
|
122
|
-
debugError(error);
|
|
122
|
+
debugError?.(error);
|
|
123
123
|
}
|
|
124
124
|
}),
|
|
125
125
|
);
|
|
@@ -192,7 +192,7 @@ export class ExposableFunction<Args extends unknown[], Ret> {
|
|
|
192
192
|
}, error);
|
|
193
193
|
}
|
|
194
194
|
} catch (error) {
|
|
195
|
-
debugError(error);
|
|
195
|
+
debugError?.(error);
|
|
196
196
|
}
|
|
197
197
|
return;
|
|
198
198
|
}
|
|
@@ -202,7 +202,7 @@ export class ExposableFunction<Args extends unknown[], Ret> {
|
|
|
202
202
|
resolve(result);
|
|
203
203
|
}, result);
|
|
204
204
|
} catch (error) {
|
|
205
|
-
debugError(error);
|
|
205
|
+
debugError?.(error);
|
|
206
206
|
}
|
|
207
207
|
};
|
|
208
208
|
|
|
@@ -227,7 +227,7 @@ export class ExposableFunction<Args extends unknown[], Ret> {
|
|
|
227
227
|
}
|
|
228
228
|
|
|
229
229
|
[Symbol.dispose](): void {
|
|
230
|
-
void this[Symbol.asyncDispose]().catch(
|
|
230
|
+
void this[Symbol.asyncDispose]().catch(debugCatchError);
|
|
231
231
|
}
|
|
232
232
|
|
|
233
233
|
async [Symbol.asyncDispose](): Promise<void> {
|
|
@@ -248,7 +248,7 @@ export class ExposableFunction<Args extends unknown[], Ret> {
|
|
|
248
248
|
frame.browsingContext.removePreloadScript(script),
|
|
249
249
|
]);
|
|
250
250
|
} catch (error) {
|
|
251
|
-
debugError(error);
|
|
251
|
+
debugError?.(error);
|
|
252
252
|
}
|
|
253
253
|
}),
|
|
254
254
|
);
|
|
@@ -198,7 +198,7 @@ export class BidiFrame extends Frame {
|
|
|
198
198
|
error.stack = [...messageLines, ...stackLines].join('\n');
|
|
199
199
|
this.page().trustedEmitter.emit(PageEvent.PageError, error);
|
|
200
200
|
} else {
|
|
201
|
-
debugError(
|
|
201
|
+
debugError?.(
|
|
202
202
|
`Unhandled LogEntry with type "${entry.type}", text "${entry.text}" and level "${entry.level}"`,
|
|
203
203
|
);
|
|
204
204
|
}
|
|
@@ -382,6 +382,10 @@ export class BidiPage extends Page {
|
|
|
382
382
|
return await this.#frame.browsingContext.setTimezoneOverride(timezoneId);
|
|
383
383
|
}
|
|
384
384
|
|
|
385
|
+
override async emulateLocale(locale?: string): Promise<void> {
|
|
386
|
+
return await this.#frame.browsingContext.setLocaleOverride(locale);
|
|
387
|
+
}
|
|
388
|
+
|
|
385
389
|
override async emulateIdleState(overrides?: {
|
|
386
390
|
isUserActive: boolean;
|
|
387
391
|
isScreenUnlocked: boolean;
|
|
@@ -269,7 +269,7 @@ export abstract class BidiRealm extends Realm {
|
|
|
269
269
|
await this.realm.disown(handleIds).catch(error => {
|
|
270
270
|
// Exceptions might happen in case of a page been navigated or closed.
|
|
271
271
|
// Swallow these since they are harmless and we don't leak anything in this case.
|
|
272
|
-
debugError(error);
|
|
272
|
+
debugError?.(error);
|
|
273
273
|
});
|
|
274
274
|
}
|
|
275
275
|
|
|
@@ -606,6 +606,17 @@ export class BrowsingContext extends EventEmitter<{
|
|
|
606
606
|
);
|
|
607
607
|
}
|
|
608
608
|
|
|
609
|
+
@throwIfDisposed<BrowsingContext>(context => {
|
|
610
|
+
// SAFETY: Disposal implies this exists.
|
|
611
|
+
return context.#reason!;
|
|
612
|
+
})
|
|
613
|
+
async setLocaleOverride(locale?: string): Promise<void> {
|
|
614
|
+
await this.userContext.browser.session.send('emulation.setLocaleOverride', {
|
|
615
|
+
locale: locale ?? null,
|
|
616
|
+
contexts: [this.id],
|
|
617
|
+
});
|
|
618
|
+
}
|
|
619
|
+
|
|
609
620
|
@throwIfDisposed<BrowsingContext>(context => {
|
|
610
621
|
// SAFETY: Disposal implies this exists.
|
|
611
622
|
return context.#reason!;
|
|
@@ -281,12 +281,14 @@ export class Accessibility {
|
|
|
281
281
|
root.iframeSnapshot = iframeSnapshot ?? undefined;
|
|
282
282
|
} catch (error) {
|
|
283
283
|
// Frames can get detached at any time resulting in errors.
|
|
284
|
-
debugError(error);
|
|
284
|
+
debugError?.(error);
|
|
285
285
|
}
|
|
286
286
|
}
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
287
|
+
await Promise.all(
|
|
288
|
+
root.children.map(child => {
|
|
289
|
+
return populateIframes(child);
|
|
290
|
+
}),
|
|
291
|
+
);
|
|
290
292
|
};
|
|
291
293
|
|
|
292
294
|
let needle: AXNode | null = defaultRoot;
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
import {JSHandle} from '../api/JSHandle.js';
|
|
7
|
-
import {
|
|
7
|
+
import {debugCatchError} from '../common/util.js';
|
|
8
8
|
import {DisposableStack} from '../util/disposable.js';
|
|
9
9
|
import {isErrorLike} from '../util/ErrorLike.js';
|
|
10
10
|
|
|
@@ -112,7 +112,7 @@ export class Binding {
|
|
|
112
112
|
error.message,
|
|
113
113
|
error.stack,
|
|
114
114
|
)
|
|
115
|
-
.catch(
|
|
115
|
+
.catch(debugCatchError);
|
|
116
116
|
} else {
|
|
117
117
|
await context
|
|
118
118
|
.evaluate(
|
|
@@ -126,7 +126,7 @@ export class Binding {
|
|
|
126
126
|
id,
|
|
127
127
|
error,
|
|
128
128
|
)
|
|
129
|
-
.catch(
|
|
129
|
+
.catch(debugCatchError);
|
|
130
130
|
}
|
|
131
131
|
}
|
|
132
132
|
}
|
|
@@ -28,6 +28,7 @@ import type {Page} from '../api/Page.js';
|
|
|
28
28
|
import type {Target} from '../api/Target.js';
|
|
29
29
|
import type {DownloadBehavior} from '../common/DownloadBehavior.js';
|
|
30
30
|
import type {Viewport} from '../common/Viewport.js';
|
|
31
|
+
import {Deferred} from '../util/Deferred.js';
|
|
31
32
|
|
|
32
33
|
import {CdpBrowserContext} from './BrowserContext.js';
|
|
33
34
|
import type {CdpCDPSession} from './CdpSession.js';
|
|
@@ -121,6 +122,7 @@ export class CdpBrowser extends BrowserBase {
|
|
|
121
122
|
#targetManager: TargetManager;
|
|
122
123
|
#handleDevToolsAsPage = false;
|
|
123
124
|
#extensions = new Map<string, Extension>();
|
|
125
|
+
#version?: Deferred<Protocol.Browser.GetVersionResponse>;
|
|
124
126
|
|
|
125
127
|
constructor(
|
|
126
128
|
connection: Connection,
|
|
@@ -601,8 +603,18 @@ export class CdpBrowser extends BrowserBase {
|
|
|
601
603
|
return !this.#connection._closed;
|
|
602
604
|
}
|
|
603
605
|
|
|
604
|
-
#getVersion(): Promise<Protocol.Browser.GetVersionResponse> {
|
|
605
|
-
|
|
606
|
+
async #getVersion(): Promise<Protocol.Browser.GetVersionResponse> {
|
|
607
|
+
if (!this.#version) {
|
|
608
|
+
this.#version = Deferred.create<Protocol.Browser.GetVersionResponse>();
|
|
609
|
+
try {
|
|
610
|
+
this.#version.resolve(
|
|
611
|
+
await this.#connection.send('Browser.getVersion'),
|
|
612
|
+
);
|
|
613
|
+
} catch (error) {
|
|
614
|
+
this.#version.reject(error as Error);
|
|
615
|
+
}
|
|
616
|
+
}
|
|
617
|
+
return await this.#version.valueOrThrow();
|
|
606
618
|
}
|
|
607
619
|
|
|
608
620
|
override get debugInfo(): DebugInfo {
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
|
|
7
7
|
import type {ConnectionTransport} from '../common/ConnectionTransport.js';
|
|
8
8
|
import type {ConnectOptions} from '../common/ConnectOptions.js';
|
|
9
|
-
import {
|
|
9
|
+
import {DEFAULT_VIEWPORT, debugCatchError} from '../common/util.js';
|
|
10
10
|
import {createIncrementalIdGenerator} from '../util/incremental-id-generator.js';
|
|
11
11
|
|
|
12
12
|
import {CdpBrowser} from './Browser.js';
|
|
@@ -59,7 +59,7 @@ export async function _connectToCdpBrowser(
|
|
|
59
59
|
downloadBehavior,
|
|
60
60
|
undefined,
|
|
61
61
|
() => {
|
|
62
|
-
return connection.send('Browser.close').catch(
|
|
62
|
+
return connection.send('Browser.close').catch(debugCatchError);
|
|
63
63
|
},
|
|
64
64
|
targetFilter,
|
|
65
65
|
isPageTarget,
|
|
@@ -176,7 +176,7 @@ export class Connection extends EventEmitter<CDPSessionEvents> {
|
|
|
176
176
|
id,
|
|
177
177
|
sessionId,
|
|
178
178
|
});
|
|
179
|
-
debugProtocolSend(stringifiedMessage);
|
|
179
|
+
debugProtocolSend?.(stringifiedMessage);
|
|
180
180
|
this.#transport.send(stringifiedMessage);
|
|
181
181
|
}) as Promise<ProtocolMapping.Commands[T]['returnType']>;
|
|
182
182
|
}
|
|
@@ -197,7 +197,7 @@ export class Connection extends EventEmitter<CDPSessionEvents> {
|
|
|
197
197
|
return setTimeout(r, this.#delay);
|
|
198
198
|
});
|
|
199
199
|
}
|
|
200
|
-
debugProtocolReceive(message);
|
|
200
|
+
debugProtocolReceive?.(message);
|
|
201
201
|
const object = JSON.parse(message);
|
|
202
202
|
if (object.method === 'Target.attachedToTarget') {
|
|
203
203
|
const sessionId = object.params.sessionId;
|
|
@@ -281,7 +281,7 @@ export class JSCoverage {
|
|
|
281
281
|
this.#scriptSources.set(event.scriptId, response.scriptSource);
|
|
282
282
|
} catch (error) {
|
|
283
283
|
// This might happen if the page has already navigated away.
|
|
284
|
-
debugError(error);
|
|
284
|
+
debugError?.(error);
|
|
285
285
|
}
|
|
286
286
|
}
|
|
287
287
|
|
|
@@ -393,7 +393,7 @@ export class CSSCoverage {
|
|
|
393
393
|
this.#stylesheetSources.set(header.styleSheetId, response.text);
|
|
394
394
|
} catch (error) {
|
|
395
395
|
// This might happen if the page has already navigated away.
|
|
396
|
-
debugError(error);
|
|
396
|
+
debugError?.(error);
|
|
397
397
|
}
|
|
398
398
|
}
|
|
399
399
|
|