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.
- package/AUTHORS +1 -0
- package/docs/README.md +1 -0
- package/docs/policy/README.md +1 -0
- package/docs/policy/console-policy.md +144 -0
- package/docs/policy/images/console-policy1.png +0 -0
- package/docs/policy/images/console-policy2.png +0 -0
- package/docs/policy/images/console-policy3.png +0 -0
- package/docs/policy/slow-close.md +22 -19
- package/docs/ui_engineering.md +22 -0
- package/front_end/Tests.js +1 -1
- package/front_end/core/common/Color.ts +13 -9
- package/front_end/core/common/ColorConverter.ts +9 -7
- package/front_end/core/common/Gzip.ts +1 -1
- package/front_end/core/common/MapWithDefault.ts +5 -3
- package/front_end/core/common/ResourceType.ts +0 -12
- package/front_end/core/common/ReturnToPanel.ts +6 -4
- package/front_end/core/common/Trie.ts +4 -2
- package/front_end/core/host/AidaClient.ts +3 -3
- package/front_end/core/host/GdpClient.ts +7 -5
- package/front_end/core/host/InspectorFrontendHostAPI.ts +7 -5
- package/front_end/core/host/Platform.ts +5 -3
- package/front_end/core/host/UserMetrics.ts +6 -4
- package/front_end/core/platform/ArrayUtilities.ts +1 -1
- package/front_end/core/platform/StringUtilities.ts +34 -31
- package/front_end/core/root/Runtime.ts +1 -1
- package/front_end/core/sdk/CSSMetadata.ts +6 -4
- package/front_end/core/sdk/CSSPropertyParser.ts +17 -13
- package/front_end/core/sdk/CSSPropertyParserMatchers.ts +19 -13
- package/front_end/core/sdk/ChildTargetManager.ts +35 -0
- package/front_end/core/sdk/DOMModel.ts +1 -1
- package/front_end/core/sdk/EventBreakpointsModel.ts +4 -2
- package/front_end/core/sdk/HttpReasonPhraseStrings.ts +4 -2
- package/front_end/core/sdk/NetworkManager.ts +8 -48
- package/front_end/core/sdk/NetworkRequest.ts +0 -28
- package/front_end/core/sdk/PageResourceLoader.ts +1 -1
- package/front_end/core/sdk/PreloadingModel.ts +22 -18
- package/front_end/core/sdk/RehydratingConnection.ts +1 -1
- package/front_end/core/sdk/RehydratingObject.ts +1 -1
- package/front_end/core/sdk/RemoteObject.ts +1 -1
- package/front_end/core/sdk/ResourceTreeModel.ts +2 -0
- package/front_end/{models/source_map_scopes → core/sdk}/ScopeTreeCache.ts +8 -7
- package/front_end/core/sdk/ScreenCaptureModel.ts +24 -20
- package/front_end/core/sdk/Target.ts +7 -1
- package/front_end/core/sdk/TraceObject.ts +2 -2
- package/front_end/core/sdk/sdk.ts +2 -0
- package/front_end/entrypoints/formatter_worker/FormatterActions.ts +7 -0
- package/front_end/entrypoints/formatter_worker/ScopeParser.ts +15 -12
- package/front_end/entrypoints/formatter_worker/Substitute.ts +6 -4
- package/front_end/entrypoints/heap_snapshot_worker/HeapSnapshot.ts +24 -16
- package/front_end/entrypoints/inspector_main/OutermostTargetSelector.ts +2 -1
- package/front_end/entrypoints/main/MainImpl.ts +6 -4
- package/front_end/generated/InspectorBackendCommands.js +2 -2
- package/front_end/generated/protocol-mapping.d.ts +3 -2
- package/front_end/generated/protocol-proxy-api.d.ts +3 -1
- package/front_end/generated/protocol.ts +7 -1
- package/front_end/models/ai_assistance/agents/StylingAgent.snapshot.txt +55 -14
- package/front_end/models/ai_assistance/agents/StylingAgent.ts +83 -222
- package/front_end/models/ai_assistance/data_formatters/PerformanceTraceFormatter.snapshot.txt +23 -0
- package/front_end/models/ai_assistance/performance/AIContext.ts +19 -4
- package/front_end/models/ai_code_completion/AiCodeCompletion.ts +4 -2
- package/front_end/models/autofill_manager/AutofillManager.ts +4 -2
- package/front_end/models/cpu_profile/CPUProfileDataModel.ts +1 -1
- package/front_end/models/crux-manager/CrUXManager.ts +1 -1
- package/front_end/models/extensions/HostUrlPattern.ts +13 -5
- package/front_end/models/formatter/FormatterWorkerPool.ts +1 -1
- package/front_end/models/issues_manager/CookieDeprecationMetadataIssue.ts +1 -1
- package/front_end/models/issues_manager/CookieIssue.ts +2 -2
- package/front_end/models/issues_manager/MarkdownIssueDescription.ts +1 -1
- package/front_end/models/issues_manager/SharedDictionaryIssue.ts +20 -0
- package/front_end/models/issues_manager/descriptions/sharedDictionaryWriteErrorInvalidTTLField.md +1 -0
- package/front_end/models/issues_manager/descriptions/sharedDictionaryWriteErrorNonIntegerTTLField.md +1 -0
- package/front_end/models/javascript_metadata/NativeFunctions.js +8 -0
- package/front_end/models/network_time_calculator/Calculator.ts +4 -2
- package/front_end/models/network_time_calculator/RequestTimeRanges.ts +6 -4
- package/front_end/models/source_map_scopes/NamesResolver.ts +8 -8
- package/front_end/models/source_map_scopes/source_map_scopes.ts +0 -2
- package/front_end/models/text_utils/ContentProvider.ts +6 -4
- package/front_end/models/trace/extras/TraceTree.ts +1 -1
- package/front_end/models/trace/handlers/FramesHandler.ts +7 -5
- package/front_end/models/trace/handlers/LayoutShiftsHandler.ts +13 -7
- package/front_end/models/trace/handlers/MetaHandler.ts +16 -14
- package/front_end/models/trace/handlers/NetworkRequestsHandler.ts +20 -8
- package/front_end/models/trace/handlers/helpers.ts +1 -1
- package/front_end/models/trace/handlers/types.ts +23 -19
- package/front_end/models/trace/helpers/Timing.ts +4 -2
- package/front_end/models/trace/helpers/Trace.ts +8 -4
- package/front_end/models/trace/insights/DocumentLatency.ts +1 -1
- package/front_end/models/trace/insights/INPBreakdown.ts +13 -2
- package/front_end/models/trace/insights/LCPBreakdown.ts +14 -2
- package/front_end/models/trace/insights/NetworkDependencyTree.ts +2 -2
- package/front_end/models/trace/types/File.ts +12 -8
- package/front_end/models/trace/types/Timing.ts +1 -1
- package/front_end/models/trace/types/TraceEvents.ts +37 -23
- package/front_end/models/trace_source_maps_resolver/SourceMapsResolver.ts +1 -1
- package/front_end/panels/ai_assistance/components/MarkdownRendererWithCodeBlock.ts +12 -10
- package/front_end/panels/application/KeyValueStorageItemsView.ts +31 -33
- package/front_end/panels/application/components/InterestGroupAccessGrid.ts +6 -11
- package/front_end/panels/application/components/OriginTrialTreeView.ts +7 -5
- package/front_end/panels/application/components/PermissionsPolicySection.ts +1 -0
- package/front_end/panels/application/components/ReportsGrid.ts +4 -10
- package/front_end/panels/application/components/SharedStorageAccessGrid.ts +5 -13
- package/front_end/panels/application/preloading/components/MismatchedPreloadingGrid.ts +1 -1
- package/front_end/panels/application/preloading/components/PreloadingGrid.ts +3 -7
- package/front_end/panels/application/preloading/components/PreloadingString.ts +2 -2
- package/front_end/panels/application/preloading/components/RuleSetGrid.ts +3 -10
- package/front_end/panels/application/preloading/components/UsedPreloadingView.ts +4 -2
- package/front_end/panels/browser_debugger/browser_debugger-meta.ts +7 -5
- package/front_end/panels/changes/ChangesSidebar.ts +105 -96
- package/front_end/panels/changes/ChangesView.ts +69 -69
- package/front_end/panels/changes/CombinedDiffView.ts +1 -1
- package/front_end/panels/changes/changesSidebar.css +3 -0
- package/front_end/panels/changes/changesView.css +4 -0
- package/front_end/panels/console/ConsoleView.ts +2 -2
- package/front_end/panels/developer_resources/DeveloperResourcesListView.ts +22 -35
- package/front_end/panels/elements/ComputedStyleWidget.ts +1 -1
- package/front_end/panels/elements/ElementStatePaneWidget.ts +12 -0
- package/front_end/panels/elements/ElementsTreeElement.ts +9 -5
- package/front_end/panels/elements/ElementsTreeOutline.ts +11 -8
- package/front_end/panels/elements/PropertyRenderer.ts +19 -15
- package/front_end/panels/elements/StylePropertyTreeElement.ts +6 -4
- package/front_end/panels/elements/StylesSidebarPane.ts +2 -2
- package/front_end/panels/elements/components/AccessibilityTreeNode.ts +4 -2
- package/front_end/panels/elements/components/AdornerManager.ts +5 -3
- package/front_end/panels/lighthouse/LighthouseController.ts +5 -0
- package/front_end/panels/linear_memory_inspector/LinearMemoryInspectorPane.ts +43 -46
- package/front_end/panels/linear_memory_inspector/components/LinearMemoryInspector.ts +260 -157
- package/front_end/panels/linear_memory_inspector/components/linearMemoryInspector.css +28 -21
- package/front_end/panels/media/PlayerPropertiesView.ts +1 -1
- package/front_end/panels/network/NetworkDataGridNode.ts +2 -44
- package/front_end/panels/network/NetworkLogView.ts +6 -4
- package/front_end/panels/network/RequestPreviewView.ts +0 -7
- package/front_end/panels/network/components/RequestHeadersView.ts +0 -6
- package/front_end/panels/network/components/components.ts +0 -2
- package/front_end/panels/profiler/HeapSnapshotDataGrids.ts +1 -1
- package/front_end/panels/profiler/HeapSnapshotGridNodes.ts +4 -2
- package/front_end/panels/protocol_monitor/ProtocolMonitor.ts +12 -19
- package/front_end/panels/search/SearchResultsPane.ts +2 -3
- package/front_end/panels/security/IPProtectionView.ts +1 -1
- package/front_end/panels/settings/emulation/components/userAgentClientHintsForm.css +4 -0
- package/front_end/panels/settings/emulation/utils/StructuredHeaders.ts +45 -37
- package/front_end/panels/sources/BreakpointsViewUtils.ts +11 -9
- package/front_end/panels/sources/DebuggerPlugin.ts +8 -4
- package/front_end/panels/sources/SourcesPanel.ts +1 -1
- package/front_end/panels/sources/UISourceCodeFrame.ts +1 -1
- package/front_end/panels/timeline/CompatibilityTracksAppender.ts +4 -2
- package/front_end/panels/timeline/CountersGraph.ts +12 -5
- package/front_end/panels/timeline/EasterEgg.d.ts +5 -3
- package/front_end/panels/timeline/LayoutShiftsTrackAppender.ts +8 -6
- package/front_end/panels/timeline/ModificationsManager.ts +5 -3
- package/front_end/panels/timeline/ThreadAppender.ts +7 -5
- package/front_end/panels/timeline/TimelineFlameChartDataProvider.ts +10 -8
- package/front_end/panels/timeline/TimelineFlameChartNetworkDataProvider.ts +1 -1
- package/front_end/panels/timeline/TimelinePanel.ts +10 -8
- package/front_end/panels/timeline/TimelineSelection.ts +4 -2
- package/front_end/panels/timeline/TimelineUIUtils.ts +5 -3
- package/front_end/panels/timeline/components/BreadcrumbsUI.ts +6 -4
- package/front_end/panels/timeline/components/Utils.ts +1 -1
- package/front_end/panels/timeline/overlays/OverlaysImpl.ts +5 -3
- package/front_end/panels/timeline/utils/Helpers.ts +1 -1
- package/front_end/panels/utils/utils.ts +1 -7
- package/front_end/services/trace_bounds/TraceBounds.ts +4 -2
- package/front_end/services/tracing/PerformanceTracing.ts +1 -1
- package/front_end/third_party/chromium/README.chromium +1 -1
- package/front_end/third_party/codemirror.next/chunk/codemirror.js +1 -1
- package/front_end/third_party/codemirror.next/chunk/codemirror.js.map +1 -1
- package/front_end/third_party/codemirror.next/chunk/php.js +1 -1
- package/front_end/third_party/codemirror.next/chunk/php.js.map +1 -1
- package/front_end/third_party/codemirror.next/package.json +3 -2
- package/front_end/third_party/puppeteer/README.chromium +2 -2
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Dialog.d.ts +8 -10
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Dialog.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Dialog.js +8 -10
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Dialog.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/ElementHandle.d.ts +28 -30
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/ElementHandle.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/ElementHandle.js +27 -29
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/ElementHandle.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Frame.d.ts +34 -38
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Frame.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Frame.js +34 -38
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Frame.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/HTTPRequest.d.ts +8 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/HTTPRequest.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/HTTPRequest.js +12 -14
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/HTTPRequest.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Page.d.ts +92 -108
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Page.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Page.js +33 -39
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Page.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Browser.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Browser.js +5 -3
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Browser.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Frame.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Frame.js +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Frame.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/HTTPRequest.d.ts +4 -2
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/HTTPRequest.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/HTTPRequest.js +14 -5
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/HTTPRequest.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Page.d.ts +1 -0
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Page.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Page.js +12 -6
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Page.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/core/Browser.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/core/Browser.js +24 -2
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/core/Browser.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/core/Realm.d.ts +2 -2
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/HTTPRequest.d.ts +1 -0
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/HTTPRequest.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/HTTPRequest.js +3 -0
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/HTTPRequest.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/PredefinedNetworkConditions.d.ts +13 -22
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/PredefinedNetworkConditions.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/PredefinedNetworkConditions.js +13 -22
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/PredefinedNetworkConditions.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/Device.d.ts +6 -8
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/Device.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/Device.js +6 -8
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/Device.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/generated/version.d.ts +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/generated/version.js +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/injected/injected.d.ts +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/BrowserLauncher.d.ts +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/BrowserLauncher.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/BrowserLauncher.js +6 -3
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/BrowserLauncher.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/PuppeteerNode.d.ts +5 -7
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/PuppeteerNode.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/PuppeteerNode.js +5 -7
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/PuppeteerNode.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/revisions.d.ts +3 -3
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/revisions.js +3 -3
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/revisions.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/util/Mutex.d.ts +2 -2
- package/front_end/third_party/puppeteer/package/lib/es5-iife/puppeteer-core-browser.d.ts +188 -224
- package/front_end/third_party/puppeteer/package/lib/es5-iife/puppeteer-core-browser.js +140 -166
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Dialog.d.ts +8 -10
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Dialog.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Dialog.js +8 -10
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Dialog.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/ElementHandle.d.ts +28 -30
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/ElementHandle.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/ElementHandle.js +27 -29
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/ElementHandle.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Frame.d.ts +34 -38
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Frame.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Frame.js +34 -38
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Frame.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/HTTPRequest.d.ts +8 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/HTTPRequest.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/HTTPRequest.js +12 -14
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/HTTPRequest.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Page.d.ts +92 -108
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Page.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Page.js +33 -39
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Page.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Browser.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Browser.js +5 -3
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Browser.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Frame.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Frame.js +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Frame.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/HTTPRequest.d.ts +4 -2
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/HTTPRequest.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/HTTPRequest.js +15 -6
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/HTTPRequest.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Page.d.ts +1 -0
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Page.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Page.js +12 -6
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Page.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/core/Browser.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/core/Browser.js +24 -2
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/core/Browser.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/HTTPRequest.d.ts +1 -0
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/HTTPRequest.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/HTTPRequest.js +3 -0
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/HTTPRequest.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/PredefinedNetworkConditions.d.ts +13 -22
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/PredefinedNetworkConditions.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/PredefinedNetworkConditions.js +13 -22
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/PredefinedNetworkConditions.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/Device.d.ts +6 -8
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/Device.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/Device.js +6 -8
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/Device.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/generated/version.d.ts +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/generated/version.js +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/BrowserLauncher.d.ts +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/BrowserLauncher.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/BrowserLauncher.js +6 -3
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/BrowserLauncher.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/PuppeteerNode.d.ts +5 -7
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/PuppeteerNode.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/PuppeteerNode.js +5 -7
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/PuppeteerNode.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/revisions.d.ts +3 -3
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/revisions.js +3 -3
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/revisions.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/types.d.ts +188 -224
- package/front_end/third_party/puppeteer/package/package.json +3 -3
- package/front_end/third_party/puppeteer/package/src/api/Dialog.ts +8 -10
- package/front_end/third_party/puppeteer/package/src/api/ElementHandle.ts +27 -29
- package/front_end/third_party/puppeteer/package/src/api/Frame.ts +34 -38
- package/front_end/third_party/puppeteer/package/src/api/HTTPRequest.ts +17 -14
- package/front_end/third_party/puppeteer/package/src/api/Page.ts +92 -108
- package/front_end/third_party/puppeteer/package/src/bidi/Browser.ts +5 -3
- package/front_end/third_party/puppeteer/package/src/bidi/Frame.ts +5 -1
- package/front_end/third_party/puppeteer/package/src/bidi/HTTPRequest.ts +28 -3
- package/front_end/third_party/puppeteer/package/src/bidi/Page.ts +16 -7
- package/front_end/third_party/puppeteer/package/src/bidi/core/Browser.ts +28 -2
- package/front_end/third_party/puppeteer/package/src/cdp/HTTPRequest.ts +4 -0
- package/front_end/third_party/puppeteer/package/src/cdp/PredefinedNetworkConditions.ts +13 -22
- package/front_end/third_party/puppeteer/package/src/common/Device.ts +6 -8
- package/front_end/third_party/puppeteer/package/src/generated/version.ts +1 -1
- package/front_end/third_party/puppeteer/package/src/node/BrowserLauncher.ts +6 -3
- package/front_end/third_party/puppeteer/package/src/node/PuppeteerNode.ts +5 -7
- package/front_end/third_party/puppeteer/package/src/revisions.ts +3 -3
- package/front_end/ui/components/chrome_link/ChromeLink.ts +4 -2
- package/front_end/ui/components/dialogs/Dialog.ts +13 -9
- package/front_end/ui/components/docs/linear_memory_inspector/basic.ts +21 -9
- package/front_end/ui/components/highlighting/HighlightElement.ts +77 -0
- package/front_end/ui/components/highlighting/HighlightManager.ts +58 -1
- package/front_end/ui/components/highlighting/highlighting.ts +2 -0
- package/front_end/ui/components/markdown_view/MarkdownImagesMap.ts +5 -3
- package/front_end/ui/components/markdown_view/MarkdownLinksMap.ts +5 -3
- package/front_end/ui/components/menus/SelectMenu.ts +6 -4
- package/front_end/ui/components/survey_link/SurveyLink.ts +4 -2
- package/front_end/ui/components/text_editor/config.ts +10 -6
- package/front_end/ui/components/text_editor/javascript.ts +8 -4
- package/front_end/ui/components/tooltips/Tooltip.ts +22 -5
- package/front_end/ui/legacy/ForwardedInputEventHandler.ts +4 -2
- package/front_end/ui/legacy/GlassPane.ts +1 -1
- package/front_end/ui/legacy/SettingsUI.ts +1 -5
- package/front_end/ui/legacy/Treeoutline.ts +12 -33
- package/front_end/ui/legacy/UIUtils.ts +19 -1
- package/front_end/ui/legacy/components/color_picker/Spectrum.ts +12 -10
- package/front_end/ui/legacy/components/cookie_table/CookiesTable.ts +30 -32
- package/front_end/ui/legacy/components/data_grid/DataGrid.ts +1 -1
- package/front_end/ui/legacy/components/data_grid/DataGridElement.ts +25 -25
- package/front_end/ui/legacy/components/data_grid/dataGrid.css +5 -0
- package/front_end/ui/legacy/components/inline_editor/AnimationTimingModel.ts +4 -2
- package/front_end/ui/legacy/components/object_ui/ObjectPropertiesSection.ts +4 -2
- package/front_end/ui/legacy/components/perf_ui/FlameChart.ts +8 -6
- package/front_end/ui/legacy/components/perf_ui/PieChart.ts +6 -4
- package/front_end/ui/legacy/components/source_frame/SourceFrame.ts +3 -3
- package/front_end/ui/legacy/components/source_frame/StreamingContentHexView.ts +18 -20
- package/front_end/ui/legacy/components/source_frame/XMLView.ts +22 -16
- package/front_end/ui/legacy/components/source_frame/xmlView.css +0 -2
- package/front_end/ui/legacy/components/utils/Linkifier.ts +6 -4
- package/front_end/ui/visual_logging/Debugging.ts +10 -6
- package/front_end/ui/visual_logging/KnownContextValues.ts +1 -3
- package/inspector_overlay/common.ts +5 -3
- package/inspector_overlay/highlight_grid_common.ts +1 -1
- package/package.json +1 -1
- package/front_end/Images/src/bundle.svg +0 -3
- package/front_end/panels/network/components/WebBundleInfoView.css +0 -27
- 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
|
-
*
|
|
192
|
-
*
|
|
193
|
-
*
|
|
194
|
-
*
|
|
195
|
-
*
|
|
196
|
-
*
|
|
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
|
|
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
|
-
*
|
|
537
|
-
*
|
|
538
|
-
*
|
|
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
|
-
*
|
|
604
|
-
*
|
|
605
|
-
*
|
|
606
|
-
*
|
|
607
|
-
*
|
|
608
|
-
*
|
|
609
|
-
*
|
|
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
|
-
*
|
|
613
|
-
*
|
|
614
|
-
*
|
|
615
|
-
*
|
|
616
|
-
*
|
|
617
|
-
*
|
|
618
|
-
*
|
|
619
|
-
*
|
|
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
|
-
*
|
|
235
|
-
*
|
|
236
|
-
*
|
|
237
|
-
*
|
|
238
|
-
*
|
|
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
|
-
*
|
|
242
|
-
*
|
|
243
|
-
*
|
|
244
|
-
*
|
|
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
|
-
*
|
|
716
|
-
*
|
|
717
|
-
*
|
|
718
|
-
*
|
|
719
|
-
*
|
|
720
|
-
*
|
|
721
|
-
*
|
|
722
|
-
*
|
|
723
|
-
*
|
|
724
|
-
*
|
|
725
|
-
*
|
|
726
|
-
*
|
|
727
|
-
*
|
|
728
|
-
*
|
|
729
|
-
*
|
|
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
|
-
*
|
|
761
|
-
*
|
|
762
|
-
*
|
|
763
|
-
*
|
|
764
|
-
*
|
|
765
|
-
* .
|
|
766
|
-
*
|
|
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
|
-
|
|
388
|
-
|
|
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
|
-
|
|
428
|
+
this.verifyInterception();
|
|
429
|
+
if (!this.canBeIntercepted()) {
|
|
424
430
|
return;
|
|
425
431
|
}
|
|
426
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
*
|
|
654
|
-
*
|
|
655
|
-
*
|
|
656
|
-
*
|
|
657
|
-
*
|
|
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
|
-
*
|
|
953
|
-
*
|
|
954
|
-
*
|
|
955
|
-
*
|
|
956
|
-
*
|
|
957
|
-
*
|
|
958
|
-
*
|
|
959
|
-
*
|
|
960
|
-
* )
|
|
961
|
-
*
|
|
962
|
-
*
|
|
963
|
-
*
|
|
964
|
-
*
|
|
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
|
-
*
|
|
1014
|
-
*
|
|
1015
|
-
*
|
|
1016
|
-
*
|
|
1017
|
-
*
|
|
1018
|
-
*
|
|
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
|
-
*
|
|
1556
|
-
*
|
|
1557
|
-
*
|
|
1558
|
-
*
|
|
1559
|
-
*
|
|
1560
|
-
*
|
|
1561
|
-
*
|
|
1562
|
-
*
|
|
1563
|
-
*
|
|
1564
|
-
*
|
|
1565
|
-
*
|
|
1566
|
-
*
|
|
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
|
-
*
|
|
1580
|
-
*
|
|
1581
|
-
*
|
|
1582
|
-
*
|
|
1583
|
-
*
|
|
1584
|
-
*
|
|
1585
|
-
*
|
|
1586
|
-
*
|
|
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
|
-
*
|
|
1592
|
-
*
|
|
1593
|
-
*
|
|
1594
|
-
*
|
|
1595
|
-
*
|
|
1596
|
-
*
|
|
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
|
-
*
|
|
2040
|
-
*
|
|
2041
|
-
*
|
|
2042
|
-
*
|
|
2043
|
-
*
|
|
2044
|
-
*
|
|
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
|
-
*
|
|
2211
|
-
*
|
|
2212
|
-
*
|
|
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
|
-
*
|
|
2216
|
-
*
|
|
2202
|
+
* await page.emulateVisionDeficiency('achromatopsia');
|
|
2203
|
+
* await page.screenshot({path: 'achromatopsia.png'});
|
|
2217
2204
|
*
|
|
2218
|
-
*
|
|
2219
|
-
*
|
|
2205
|
+
* await page.emulateVisionDeficiency('deuteranopia');
|
|
2206
|
+
* await page.screenshot({path: 'deuteranopia.png'});
|
|
2220
2207
|
*
|
|
2221
|
-
*
|
|
2222
|
-
*
|
|
2208
|
+
* await page.emulateVisionDeficiency('blurredVision');
|
|
2209
|
+
* await page.screenshot({path: 'blurred-vision.png'});
|
|
2223
2210
|
*
|
|
2224
|
-
*
|
|
2225
|
-
*
|
|
2211
|
+
* await page.emulateVisionDeficiency('reducedContrast');
|
|
2212
|
+
* await page.screenshot({path: 'reduced-contrast.png'});
|
|
2226
2213
|
*
|
|
2227
|
-
*
|
|
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
|
-
*
|
|
2998
|
-
*
|
|
2999
|
-
*
|
|
3000
|
-
*
|
|
3001
|
-
*
|
|
3002
|
-
*
|
|
3003
|
-
*
|
|
3004
|
-
*
|
|
3005
|
-
*
|
|
3006
|
-
*
|
|
3007
|
-
*
|
|
3008
|
-
*
|
|
3009
|
-
*
|
|
3010
|
-
*
|
|
3011
|
-
*
|
|
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
|
-
*
|
|
3067
|
-
*
|
|
3068
|
-
*
|
|
3069
|
-
*
|
|
3070
|
-
*
|
|
3071
|
-
*
|
|
3072
|
-
*
|
|
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
|
-
(
|
|
97
|
-
? BidiBrowser.subscribeModules
|
|
98
|
-
:
|
|
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(
|
|
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(
|
|
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 =
|
|
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(
|
|
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
|
}
|