chrome-devtools-frontend 1.0.1721762 → 1.0.1726686
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/review-ui-widgets/SKILL.md +7 -7
- package/.agents/skills/ui-eng-vision-local-lit-renderer/SKILL.md +12 -0
- package/.agents/skills/ui-eng-vision-widget-promoter/SKILL.md +3 -3
- package/.agents/skills/ui-widgets/SKILL.md +2 -1
- package/docs/cookbook/dependencies.md +57 -11
- package/docs/get_the_code.md +15 -0
- package/front_end/core/i18n/collect-ui-strings.js +58 -12
- package/front_end/core/i18n/i18nImpl.ts +1 -1
- package/front_end/core/root/Runtime.ts +1 -1
- package/front_end/core/sdk/ResourceTreeModel.ts +16 -0
- package/front_end/core/sdk/WebAuthnModel.ts +17 -10
- package/front_end/entrypoints/js_app/js_app.ts +2 -5
- package/front_end/entrypoints/node_app/node_app.ts +2 -3
- package/front_end/generated/InspectorBackendCommands.ts +3 -3
- package/front_end/generated/protocol.ts +17 -0
- package/front_end/models/ai_assistance/skills/lighthouse.md +2 -1
- package/front_end/models/ai_assistance/skills/network.md +1 -0
- package/front_end/models/ai_assistance/tools/ExecuteJavaScript.ts +26 -2
- package/front_end/models/ai_assistance/tools/GetLighthouseAudits.ts +1 -1
- package/front_end/models/ai_assistance/tools/ListNetworkRequests.ts +2 -7
- package/front_end/models/ai_assistance/tools/RunLighthouse.ts +2 -2
- package/front_end/models/comment_manager/CD4ABridge.ts +4 -0
- package/front_end/models/comment_manager/CommentManager.ts +0 -6
- package/front_end/models/comment_manager/CommentThread.ts +39 -19
- package/front_end/models/elements/StyleChanges.ts +66 -0
- package/front_end/models/trace/EventsSerializer.ts +2 -7
- package/front_end/models/trace/ModelImpl.ts +0 -2
- package/front_end/models/trace/handlers/FlowsHandler.ts +37 -29
- package/front_end/models/trace/handlers/NetworkRequestsHandler.ts +13 -6
- package/front_end/models/trace/helpers/SyntheticEvents.ts +10 -37
- package/front_end/models/trace/insights/RenderBlocking.ts +3 -1
- package/front_end/models/trace/lantern/simulation/Simulator.ts +4 -0
- package/front_end/models/trace/lantern/types/Lantern.ts +1 -0
- package/front_end/panels/accessibility/AccessibilityAnnouncementRecordingView.ts +92 -0
- package/front_end/panels/accessibility/SourceOrderView.ts +1 -1
- package/front_end/panels/accessibility/accessibilityAnnouncementRecordingListView.css +3 -1
- package/front_end/panels/accessibility/accessibilityAnnouncementRecordingView.css +12 -1
- package/front_end/panels/application/ApplicationPanelSidebar.ts +90 -0
- package/front_end/panels/application/StorageView.ts +348 -254
- package/front_end/panels/application/SubAppsView.ts +159 -0
- package/front_end/panels/application/application.ts +2 -0
- package/front_end/panels/application/preloading/PreloadingView.ts +360 -336
- package/front_end/panels/application/preloading/components/PreloadingDisabledInfobar.ts +3 -3
- package/front_end/panels/application/preloading/components/PreloadingGrid.ts +6 -3
- package/front_end/panels/application/preloading/components/RuleSetGrid.ts +17 -17
- package/front_end/panels/application/preloading/components/UsedPreloadingView.ts +2 -2
- package/front_end/panels/application/preloading/preloadingView.css +12 -4
- package/front_end/panels/application/preloading/preloadingViewDropDown.css +1 -1
- package/front_end/panels/application/storageView.css +16 -21
- package/front_end/panels/application/subAppsView.css +21 -0
- package/front_end/panels/browser_debugger/CategorizedBreakpointsSidebarPane.ts +2 -2
- package/front_end/panels/browser_debugger/browser_debugger-meta.ts +6 -8
- package/front_end/panels/comments/CommentsPane.ts +26 -9
- package/front_end/panels/comments/commentsPane.css +25 -6
- package/front_end/panels/common/CommentThreadWidget.ts +2 -2
- package/front_end/panels/common/CommentsOverlayWidget.ts +94 -35
- package/front_end/panels/common/commentThreadWidget.css +17 -0
- package/front_end/panels/common/commentsOverlay.css +5 -10
- package/front_end/panels/common/common-meta.ts +11 -1
- package/front_end/panels/elements/ClassesPaneWidget.ts +133 -89
- package/front_end/panels/elements/ColorSwatchPopoverIcon.ts +7 -33
- package/front_end/panels/elements/DOMTreeElementWidget.ts +3 -1
- package/front_end/panels/elements/DOMTreeWidget.ts +19 -3
- package/front_end/panels/elements/ElementStatePaneWidget.ts +11 -1
- package/front_end/panels/elements/PropertyRenderer.ts +3 -2
- package/front_end/panels/elements/StyleEditorWidget.ts +87 -39
- package/front_end/panels/elements/StylePropertiesSection.ts +32 -5
- package/front_end/panels/elements/StylePropertyTreeElement.ts +227 -162
- package/front_end/panels/elements/StylesSidebarPane.ts +1 -0
- package/front_end/panels/event_listeners/EventListenersView.ts +11 -8
- package/front_end/panels/layer_viewer/Layers3DView.ts +21 -37
- package/front_end/panels/linear_memory_inspector/components/ValueInterpreterSettings.ts +1 -1
- package/front_end/panels/network/NetworkConfigView.ts +12 -10
- package/front_end/panels/network/NetworkDataGridNode.ts +3 -1
- package/front_end/panels/network/RequestConditionsDrawer.ts +1 -1
- package/front_end/panels/network/RequestPayloadView.ts +12 -5
- package/front_end/panels/network/networkConfigView.css +8 -8
- package/front_end/panels/profiler/HeapProfileView.ts +28 -6
- package/front_end/panels/profiler/HeapSnapshotDataGrids.ts +7 -3
- package/front_end/panels/protocol_monitor/JSONEditor.ts +0 -1
- package/front_end/panels/recorder/RecorderPanel.ts +2 -2
- package/front_end/panels/screencast/ScreencastView.ts +3 -6
- package/front_end/panels/security/SecurityPanelSidebar.ts +0 -31
- package/front_end/panels/settings/SettingsScreen.ts +1 -1
- package/front_end/panels/settings/emulation/DevicesSettingsTab.ts +9 -16
- package/front_end/panels/settings/emulation/components/UserAgentClientHintsForm.ts +358 -345
- package/front_end/panels/settings/emulation/components/userAgentClientHintsForm.css +136 -121
- package/front_end/panels/sources/NavigatorView.ts +105 -45
- package/front_end/panels/sources/ScopeChainSidebarPane.ts +8 -5
- package/front_end/panels/sources/SourcesNavigator.ts +421 -213
- package/front_end/panels/sources/SourcesPanel.ts +9 -5
- package/front_end/panels/sources/TabbedEditorContainer.ts +41 -18
- package/front_end/panels/sources/UISourceCodeFrame.ts +1 -1
- package/front_end/panels/sources/WatchExpressionsSidebarPane.ts +10 -5
- package/front_end/panels/sources/sources-meta.ts +4 -15
- package/front_end/panels/sources/sourcesNavigator.css +5 -0
- package/front_end/panels/timeline/ModificationsManager.ts +0 -2
- package/front_end/panels/timeline/README.md +2 -0
- package/front_end/panels/timeline/TimelineCommentContext.ts +171 -0
- package/front_end/panels/timeline/TimelineCommentController.ts +168 -30
- package/front_end/panels/timeline/TimelinePanel.ts +4 -0
- package/front_end/panels/timeline/components/IgnoreListSetting.ts +1 -1
- package/front_end/panels/timeline/timeline.ts +2 -0
- package/front_end/panels/timeline/utils/Treemap.ts +8 -0
- package/front_end/panels/webauthn/WebauthnPane.ts +15 -13
- 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/lib/es5-iife/puppeteer-core-browser.d.ts +113 -3
- package/front_end/third_party/puppeteer/package/lib/es5-iife/puppeteer-core-browser.js +21311 -20981
- package/front_end/third_party/puppeteer/package/lib/puppeteer/api/Browser.d.ts +36 -0
- 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 +22 -0
- 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.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/api/BrowserContext.js +20 -18
- 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.d.ts +20 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/api/HTTPRequest.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/api/HTTPRequest.js +2 -2
- 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/Page.d.ts +40 -1
- 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 +3 -1
- 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/locators/locators.d.ts +2 -0
- package/front_end/third_party/puppeteer/package/lib/puppeteer/api/locators/locators.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/api/locators/locators.js +41 -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/HTTPRequest.d.ts +2 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/bidi/HTTPRequest.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/bidi/HTTPRequest.js +23 -2
- package/front_end/third_party/puppeteer/package/lib/puppeteer/bidi/HTTPRequest.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/bidi/Input.js +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/bidi/Page.d.ts +3 -2
- 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 +13 -1
- 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/core/Request.d.ts +1 -0
- package/front_end/third_party/puppeteer/package/lib/puppeteer/bidi/core/Request.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/bidi/core/Request.js +18 -11
- package/front_end/third_party/puppeteer/package/lib/puppeteer/bidi/core/Request.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/Accessibility.d.ts +2 -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 +8 -1
- 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/Browser.d.ts +2 -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 +24 -12
- 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/EmulationManager.d.ts +1 -1
- 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 +13 -7
- 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/Frame.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/Frame.js +5 -1
- 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/HTTPRequest.d.ts +22 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/HTTPRequest.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/HTTPRequest.js +75 -9
- 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/NetworkEventManager.d.ts +18 -4
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/NetworkEventManager.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/NetworkEventManager.js +8 -4
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/NetworkEventManager.js.map +1 -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 +65 -26
- 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 +3 -2
- 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 +19 -0
- 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/ScreenRecording.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/ScreenRecording.js +4 -3
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/ScreenRecording.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/Target.d.ts +1 -0
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/Target.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/Target.js +4 -0
- 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 +2 -0
- 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 +95 -8
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/TargetManager.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/common/BrowserConnector.d.ts +0 -8
- 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 +8 -24
- 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.d.ts +1 -0
- package/front_end/third_party/puppeteer/package/lib/puppeteer/common/BrowserWebSocketTransport.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/common/BrowserWebSocketTransport.js +5 -4
- 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/ConnectOptions.d.ts +9 -0
- 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/WaitTask.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/common/WaitTask.js +10 -0
- package/front_end/third_party/puppeteer/package/lib/puppeteer/common/WaitTask.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/common/util.d.ts +10 -0
- 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 +30 -5
- package/front_end/third_party/puppeteer/package/lib/puppeteer/common/util.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/Poller.d.ts +2 -0
- package/front_end/third_party/puppeteer/package/lib/puppeteer/injected/Poller.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/injected/Poller.js +33 -3
- package/front_end/third_party/puppeteer/package/lib/puppeteer/injected/Poller.js.map +1 -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 +1 -2
- 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/NodeWebSocketTransport.d.ts +4 -0
- package/front_end/third_party/puppeteer/package/lib/puppeteer/node/NodeWebSocketTransport.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/node/NodeWebSocketTransport.js +1 -0
- package/front_end/third_party/puppeteer/package/lib/puppeteer/node/NodeWebSocketTransport.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/encoding.d.ts +2 -2
- package/front_end/third_party/puppeteer/package/lib/puppeteer/util/encoding.d.ts.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 +113 -3
- package/front_end/third_party/puppeteer/package/package.json +4 -4
- package/front_end/third_party/puppeteer/package/src/api/Browser.ts +42 -0
- package/front_end/third_party/puppeteer/package/src/api/BrowserContext.ts +25 -22
- package/front_end/third_party/puppeteer/package/src/api/HTTPRequest.ts +22 -2
- package/front_end/third_party/puppeteer/package/src/api/Page.ts +45 -2
- package/front_end/third_party/puppeteer/package/src/api/locators/locators.ts +79 -32
- package/front_end/third_party/puppeteer/package/src/bidi/HTTPRequest.ts +32 -12
- package/front_end/third_party/puppeteer/package/src/bidi/Input.ts +1 -1
- package/front_end/third_party/puppeteer/package/src/bidi/Page.ts +18 -2
- package/front_end/third_party/puppeteer/package/src/bidi/core/Request.ts +21 -13
- package/front_end/third_party/puppeteer/package/src/cdp/Accessibility.ts +12 -2
- package/front_end/third_party/puppeteer/package/src/cdp/Browser.ts +37 -16
- package/front_end/third_party/puppeteer/package/src/cdp/EmulationManager.ts +14 -11
- package/front_end/third_party/puppeteer/package/src/cdp/Frame.ts +7 -1
- package/front_end/third_party/puppeteer/package/src/cdp/HTTPRequest.ts +101 -14
- package/front_end/third_party/puppeteer/package/src/cdp/NetworkEventManager.ts +26 -6
- package/front_end/third_party/puppeteer/package/src/cdp/NetworkManager.ts +111 -29
- package/front_end/third_party/puppeteer/package/src/cdp/Page.ts +37 -1
- package/front_end/third_party/puppeteer/package/src/cdp/ScreenRecording.ts +5 -4
- package/front_end/third_party/puppeteer/package/src/cdp/Target.ts +5 -0
- package/front_end/third_party/puppeteer/package/src/cdp/TargetManager.ts +122 -7
- package/front_end/third_party/puppeteer/package/src/common/BrowserConnector.ts +13 -33
- package/front_end/third_party/puppeteer/package/src/common/BrowserWebSocketTransport.ts +10 -5
- package/front_end/third_party/puppeteer/package/src/common/ConnectOptions.ts +10 -0
- package/front_end/third_party/puppeteer/package/src/common/WaitTask.ts +12 -0
- package/front_end/third_party/puppeteer/package/src/common/util.ts +39 -5
- package/front_end/third_party/puppeteer/package/src/generated/injected.ts +1 -1
- package/front_end/third_party/puppeteer/package/src/injected/Poller.ts +35 -3
- package/front_end/third_party/puppeteer/package/src/node/BrowserLauncher.ts +4 -2
- package/front_end/third_party/puppeteer/package/src/node/NodeWebSocketTransport.ts +5 -0
- package/front_end/third_party/puppeteer/package/src/revisions.ts +3 -3
- package/front_end/third_party/puppeteer/package/src/util/encoding.ts +2 -2
- package/front_end/third_party/puppeteer/package/src/util/version.ts +1 -1
- package/front_end/ui/comments/CommentAnchorResolver.ts +3 -0
- package/front_end/ui/comments/CommentOverlayManager.ts +2 -4
- package/front_end/ui/components/lists/List.ts +14 -1
- package/front_end/ui/components/panel_feedback/PreviewToggle.ts +1 -1
- package/front_end/ui/components/text_editor/AiCodeCompletionProvider.ts +23 -14
- package/front_end/ui/components/text_editor/AiCodeGenerationProvider.ts +3 -0
- package/front_end/ui/helpers/OpenInNewTab.ts +8 -0
- package/front_end/ui/legacy/LinkContextMenuProvider.ts +1 -1
- package/front_end/ui/legacy/ListWidget.ts +14 -18
- package/front_end/ui/legacy/TabbedPane.ts +46 -3
- package/front_end/ui/legacy/Toolbar.ts +0 -1
- package/front_end/ui/legacy/Treeoutline.ts +10 -3
- package/front_end/ui/legacy/UIUtils.ts +5 -2
- package/front_end/ui/legacy/components/inline_editor/Swatches.ts +19 -6
- package/front_end/ui/legacy/components/object_ui/ObjectPropertiesSection.ts +20 -11
- package/front_end/ui/legacy/components/source_frame/XMLView.ts +27 -7
- package/front_end/ui/visual_logging/KnownContextValues.ts +5 -0
- package/package.json +1 -1
|
@@ -9,9 +9,34 @@ import type * as PerfUI from '../../ui/legacy/components/perf_ui/perf_ui.js';
|
|
|
9
9
|
import * as VisualLogging from '../../ui/visual_logging/visual_logging.js';
|
|
10
10
|
|
|
11
11
|
import * as Overlays from './overlays/overlays.js';
|
|
12
|
-
import
|
|
12
|
+
import {agentContextForEntry} from './TimelineCommentContext.js';
|
|
13
|
+
import {
|
|
14
|
+
Events as TimelineFlameChartDataProviderEvents,
|
|
15
|
+
type TimelineFlameChartDataProvider,
|
|
16
|
+
} from './TimelineFlameChartDataProvider.js';
|
|
13
17
|
import type {TimelineFlameChartNetworkDataProvider} from './TimelineFlameChartNetworkDataProvider.js';
|
|
14
18
|
|
|
19
|
+
/**
|
|
20
|
+
* Prefix for keys of entries that EventsSerializer cannot key. The full key is
|
|
21
|
+
* `fc-<chartLocation>-<entryIndex>`.
|
|
22
|
+
*/
|
|
23
|
+
const SYNTHETIC_KEY_PREFIX = 'fc-';
|
|
24
|
+
|
|
25
|
+
function entryStartTimeMicro(timelineData: PerfUI.FlameChart.FlameChartTimelineData, entryIndex: number): number {
|
|
26
|
+
return Trace.Helpers.Timing.milliToMicro(Trace.Types.Timing.Milli(timelineData.entryStartTimes[entryIndex]));
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* Returns the entry's duration, or undefined for instant entries.
|
|
31
|
+
*/
|
|
32
|
+
function entryDurationMicro(timelineData: PerfUI.FlameChart.FlameChartTimelineData, entryIndex: number): number|
|
|
33
|
+
undefined {
|
|
34
|
+
const totalTime = timelineData.entryTotalTimes[entryIndex];
|
|
35
|
+
return !Number.isNaN(totalTime) && totalTime > 0 ?
|
|
36
|
+
Trace.Helpers.Timing.milliToMicro(Trace.Types.Timing.Milli(totalTime)) :
|
|
37
|
+
undefined;
|
|
38
|
+
}
|
|
39
|
+
|
|
15
40
|
/**
|
|
16
41
|
* Supplies the flame charts, data providers, overlays and events serializer
|
|
17
42
|
* that the controller needs to resolve and pin comments.
|
|
@@ -44,10 +69,10 @@ interface ResolvedEntry {
|
|
|
44
69
|
* flame chart canvas:
|
|
45
70
|
* - It registers a CustomAnchorResolver that maps a pointer position on a
|
|
46
71
|
* flame chart canvas to a timeline anchor.
|
|
47
|
-
* - It keeps one COMMENT_PIN overlay
|
|
48
|
-
* positions each COMMENT_PIN element over its
|
|
49
|
-
* returns that element from getAnchorElement() so
|
|
50
|
-
* draw the pin on it.
|
|
72
|
+
* - It keeps one COMMENT_PIN overlay for each thread on the current trace
|
|
73
|
+
* whose entry it finds. Overlays positions each COMMENT_PIN element over its
|
|
74
|
+
* entry, and the resolver returns that element from getAnchorElement() so
|
|
75
|
+
* the shared overlay can draw the pin on it.
|
|
51
76
|
* - It requests repositioning after every Overlays update, because panning or
|
|
52
77
|
* zooming the flame chart moves the COMMENT_PIN elements without any DOM
|
|
53
78
|
* scroll or resize.
|
|
@@ -68,6 +93,15 @@ export class TimelineCommentController {
|
|
|
68
93
|
this.#syncCommentOverlays();
|
|
69
94
|
};
|
|
70
95
|
|
|
96
|
+
/**
|
|
97
|
+
* The main flame chart rebuilds its entries when entries are hidden or
|
|
98
|
+
* shown from the context menu, or the ignore list changes. Threads with a
|
|
99
|
+
* synthetic key whose entry was missing can then be pinned.
|
|
100
|
+
*/
|
|
101
|
+
readonly #onMainDataChanged = (): void => {
|
|
102
|
+
this.#syncCommentOverlays();
|
|
103
|
+
};
|
|
104
|
+
|
|
71
105
|
// Overlays updates on every pan and zoom, so the notification is skipped
|
|
72
106
|
// while there are no COMMENT_PIN overlays.
|
|
73
107
|
readonly #onOverlaysUpdated = (): void => {
|
|
@@ -112,13 +146,15 @@ export class TimelineCommentController {
|
|
|
112
146
|
}
|
|
113
147
|
|
|
114
148
|
/**
|
|
115
|
-
* Starts listening for thread and
|
|
116
|
-
* resolver and shows pins for existing threads.
|
|
149
|
+
* Starts listening for thread, overlay and flame chart data changes,
|
|
150
|
+
* registers the anchor resolver and shows pins for existing threads.
|
|
117
151
|
*/
|
|
118
152
|
wasShown(): void {
|
|
119
153
|
this.#commentManager.addEventListener(CommentManager.CommentManager.Events.COMMENT_THREADS_CHANGED,
|
|
120
154
|
this.#onCommentThreadsChanged);
|
|
121
155
|
this.#delegate.overlays.addEventListener(Overlays.Overlays.OverlaysUpdated.eventName, this.#onOverlaysUpdated);
|
|
156
|
+
this.#delegate.mainDataProvider.addEventListener(TimelineFlameChartDataProviderEvents.DATA_CHANGED,
|
|
157
|
+
this.#onMainDataChanged);
|
|
122
158
|
Comments.CommentAnchorResolver.registerCustomAnchorResolver(this.#customAnchorResolver);
|
|
123
159
|
this.#syncCommentOverlays();
|
|
124
160
|
// COMMENT_PIN overlays that survived while the view was hidden need their
|
|
@@ -129,14 +165,16 @@ export class TimelineCommentController {
|
|
|
129
165
|
}
|
|
130
166
|
|
|
131
167
|
/**
|
|
132
|
-
* Stops listening for thread and
|
|
133
|
-
* resolver. The final notification removes the shared
|
|
134
|
-
* resolver no longer supplies their anchor elements.
|
|
168
|
+
* Stops listening for thread, overlay and flame chart data changes and
|
|
169
|
+
* unregisters the anchor resolver. The final notification removes the shared
|
|
170
|
+
* pins, because the resolver no longer supplies their anchor elements.
|
|
135
171
|
*/
|
|
136
172
|
willHide(): void {
|
|
137
173
|
this.#commentManager.removeEventListener(CommentManager.CommentManager.Events.COMMENT_THREADS_CHANGED,
|
|
138
174
|
this.#onCommentThreadsChanged);
|
|
139
175
|
this.#delegate.overlays.removeEventListener(Overlays.Overlays.OverlaysUpdated.eventName, this.#onOverlaysUpdated);
|
|
176
|
+
this.#delegate.mainDataProvider.removeEventListener(TimelineFlameChartDataProviderEvents.DATA_CHANGED,
|
|
177
|
+
this.#onMainDataChanged);
|
|
140
178
|
Comments.CommentAnchorResolver.unregisterCustomAnchorResolver(this.#customAnchorResolver);
|
|
141
179
|
Comments.CommentAnchorResolver.notifyCustomAnchorsMoved();
|
|
142
180
|
this.#notifiedWithCommentPins = false;
|
|
@@ -176,6 +214,67 @@ export class TimelineCommentController {
|
|
|
176
214
|
return `trace-${min}-${max}`;
|
|
177
215
|
}
|
|
178
216
|
|
|
217
|
+
#dataProviderFor(chartLocation: 'main'|'network'): TimelineFlameChartDataProvider
|
|
218
|
+
|TimelineFlameChartNetworkDataProvider {
|
|
219
|
+
return chartLocation === 'network' ? this.#delegate.networkDataProvider : this.#delegate.mainDataProvider;
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
/**
|
|
223
|
+
* Returns the event for a thread's timeline anchor, or null if the anchor
|
|
224
|
+
* has a synthetic key and no flame chart entry matches it.
|
|
225
|
+
*/
|
|
226
|
+
#eventForTimelineAnchor(anchor: CommentManager.CommentManager.TimelineAnchorSignature,
|
|
227
|
+
parsedTrace: Trace.TraceModel.ParsedTrace): Trace.Types.Events.Event|null {
|
|
228
|
+
if (!anchor.traceEventKey.startsWith(SYNTHETIC_KEY_PREFIX)) {
|
|
229
|
+
// The key was created by EventsSerializer for this trace, because the
|
|
230
|
+
// thread's traceId matches.
|
|
231
|
+
return this.#delegate.eventsSerializer.eventForKey(anchor.traceEventKey as Trace.Types.File.SerializableKey,
|
|
232
|
+
parsedTrace);
|
|
233
|
+
}
|
|
234
|
+
const entryIndex = this.#findEntryIndexForSyntheticKey(anchor);
|
|
235
|
+
if (entryIndex === -1) {
|
|
236
|
+
return null;
|
|
237
|
+
}
|
|
238
|
+
return this.#dataProviderFor(anchor.chartLocation).eventByIndex(entryIndex);
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
/**
|
|
242
|
+
* Returns the index of the flame chart entry with the anchor's start time,
|
|
243
|
+
* duration and title, or -1 if there is none. Duration separates nested
|
|
244
|
+
* entries that share a start time and title, such as recursive calls.
|
|
245
|
+
*
|
|
246
|
+
* Entry indexes change when the flame chart rebuilds its entries, for
|
|
247
|
+
* example after entries are hidden from the context menu. The index encoded
|
|
248
|
+
* in the synthetic key is therefore checked first and used only if that
|
|
249
|
+
* entry still matches. Otherwise every entry is scanned, because
|
|
250
|
+
* `entryStartTimes` concatenates all tracks and is not sorted.
|
|
251
|
+
*/
|
|
252
|
+
#findEntryIndexForSyntheticKey(anchor: CommentManager.CommentManager.TimelineAnchorSignature): number {
|
|
253
|
+
const dataProvider = this.#dataProviderFor(anchor.chartLocation);
|
|
254
|
+
const timelineData = dataProvider.timelineData();
|
|
255
|
+
const entryCount = timelineData.entryStartTimes.length;
|
|
256
|
+
const matchesAnchor = (index: number): boolean => {
|
|
257
|
+
// The anchor's times were computed by entryStartTimeMicro() and
|
|
258
|
+
// entryDurationMicro() from the same trace, so exact comparisons are
|
|
259
|
+
// safe.
|
|
260
|
+
return entryStartTimeMicro(timelineData, index) === anchor.startTimeMicro &&
|
|
261
|
+
entryDurationMicro(timelineData, index) === anchor.durationMicro &&
|
|
262
|
+
(dataProvider.entryTitle(index) ?? '') === anchor.entryName;
|
|
263
|
+
};
|
|
264
|
+
|
|
265
|
+
const encodedIndex = Number(anchor.traceEventKey.slice(`${SYNTHETIC_KEY_PREFIX}${anchor.chartLocation}-`.length));
|
|
266
|
+
if (Number.isInteger(encodedIndex) && encodedIndex >= 0 && encodedIndex < entryCount &&
|
|
267
|
+
matchesAnchor(encodedIndex)) {
|
|
268
|
+
return encodedIndex;
|
|
269
|
+
}
|
|
270
|
+
for (let index = 0; index < entryCount; index++) {
|
|
271
|
+
if (matchesAnchor(index)) {
|
|
272
|
+
return index;
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
return -1;
|
|
276
|
+
}
|
|
277
|
+
|
|
179
278
|
#syncCommentOverlays(): void {
|
|
180
279
|
const existingOverlays = this.#delegate.overlays.overlaysOfType<Trace.Types.Overlays.CommentPin>('COMMENT_PIN');
|
|
181
280
|
const currentTraceId = this.#traceId();
|
|
@@ -202,10 +301,13 @@ export class TimelineCommentController {
|
|
|
202
301
|
if (existingOverlays.some(overlay => overlay.commentThreadId === thread.id)) {
|
|
203
302
|
continue;
|
|
204
303
|
}
|
|
205
|
-
|
|
206
|
-
//
|
|
207
|
-
|
|
208
|
-
|
|
304
|
+
const event = this.#eventForTimelineAnchor(thread.anchor.timeline, parsedTrace);
|
|
305
|
+
// The entry of a synthetic key can be missing from the flame chart, for
|
|
306
|
+
// example after it is hidden from the context menu. The thread then has
|
|
307
|
+
// no pin until #onMainDataChanged() syncs again and finds the entry.
|
|
308
|
+
if (!event) {
|
|
309
|
+
continue;
|
|
310
|
+
}
|
|
209
311
|
this.#delegate.overlays.add({
|
|
210
312
|
type: 'COMMENT_PIN',
|
|
211
313
|
entry: event,
|
|
@@ -223,6 +325,11 @@ export class TimelineCommentController {
|
|
|
223
325
|
|
|
224
326
|
if (mutationsMade) {
|
|
225
327
|
void this.#delegate.overlays.update();
|
|
328
|
+
} else {
|
|
329
|
+
// Overlays#reset() clears previous overlays before setParsedTrace() runs.
|
|
330
|
+
// Run #onOverlaysUpdated() so notifyCustomAnchorsMoved() still fires when
|
|
331
|
+
// the new trace adds no comment pins of its own.
|
|
332
|
+
this.#onOverlaysUpdated();
|
|
226
333
|
}
|
|
227
334
|
}
|
|
228
335
|
|
|
@@ -304,27 +411,23 @@ export class TimelineCommentController {
|
|
|
304
411
|
if (!traceId) {
|
|
305
412
|
return null;
|
|
306
413
|
}
|
|
307
|
-
|
|
308
|
-
//
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
const {flameChart, dataProvider, chartLocation, canvas, entryIndex, highlightRect} = entry;
|
|
414
|
+
const {flameChart, dataProvider, chartLocation, canvas, entryIndex, event, highlightRect} = entry;
|
|
415
|
+
// Events that EventsSerializer cannot key, such as JS samples, get a
|
|
416
|
+
// synthetic key that encodes the chart and the entry index.
|
|
417
|
+
// #findEntryIndexForSyntheticKey() uses the stored start time, duration
|
|
418
|
+
// and title to find the entry again if the index has changed.
|
|
419
|
+
const traceEventKey =
|
|
420
|
+
this.#delegate.eventsSerializer.keyForEvent(event) ?? `${SYNTHETIC_KEY_PREFIX}${chartLocation}-${entryIndex}`;
|
|
315
421
|
const timelineData = flameChart.timelineData();
|
|
316
422
|
if (!timelineData) {
|
|
317
423
|
throw new Error('Flame chart resolved an entry index without timeline data.');
|
|
318
424
|
}
|
|
319
|
-
// Store the raw title, even when it is empty.
|
|
320
|
-
// display fallback for
|
|
425
|
+
// Store the raw title, even when it is empty. #findEntryIndexForSyntheticKey()
|
|
426
|
+
// compares against it, and the UI applies its own display fallback for
|
|
427
|
+
// untitled entries.
|
|
321
428
|
const entryName = dataProvider.entryTitle(entryIndex) ?? '';
|
|
322
|
-
const startTimeMicro =
|
|
323
|
-
|
|
324
|
-
const totalTime = timelineData.entryTotalTimes[entryIndex];
|
|
325
|
-
const durationMicro = !Number.isNaN(totalTime) && totalTime > 0 ?
|
|
326
|
-
Trace.Helpers.Timing.milliToMicro(Trace.Types.Timing.Milli(totalTime)) :
|
|
327
|
-
undefined;
|
|
429
|
+
const startTimeMicro = entryStartTimeMicro(timelineData, entryIndex);
|
|
430
|
+
const durationMicro = entryDurationMicro(timelineData, entryIndex);
|
|
328
431
|
|
|
329
432
|
return {
|
|
330
433
|
anchor: {
|
|
@@ -338,9 +441,44 @@ export class TimelineCommentController {
|
|
|
338
441
|
durationMicro,
|
|
339
442
|
chartLocation,
|
|
340
443
|
},
|
|
444
|
+
agentContext: this.#agentContextFor(entry),
|
|
341
445
|
},
|
|
342
446
|
anchorElement: canvas,
|
|
343
447
|
highlightRect,
|
|
344
448
|
};
|
|
345
449
|
}
|
|
450
|
+
|
|
451
|
+
/**
|
|
452
|
+
* Returns the lines that describe the entry to the AI agent, or undefined
|
|
453
|
+
* if no trace is active.
|
|
454
|
+
*/
|
|
455
|
+
#agentContextFor(entry: ResolvedEntry): string[]|undefined {
|
|
456
|
+
if (!this.#parsedTrace) {
|
|
457
|
+
return undefined;
|
|
458
|
+
}
|
|
459
|
+
return agentContextForEntry(entry.event, this.#trackNameFor(entry), this.#parsedTrace);
|
|
460
|
+
}
|
|
461
|
+
|
|
462
|
+
/**
|
|
463
|
+
* Returns the name of the track that contains the entry. Groups are stored
|
|
464
|
+
* in level order and nested groups follow their parent, so the entry's
|
|
465
|
+
* track is the last group that starts at or above the entry's level. The
|
|
466
|
+
* data provider's groupForEvent() is not used because it only knows tracks
|
|
467
|
+
* built by track appenders, and not, for example, the Frames track.
|
|
468
|
+
*/
|
|
469
|
+
#trackNameFor(entry: ResolvedEntry): string|null {
|
|
470
|
+
const timelineData = entry.flameChart.timelineData();
|
|
471
|
+
if (!timelineData) {
|
|
472
|
+
return null;
|
|
473
|
+
}
|
|
474
|
+
const level = timelineData.entryLevels[entry.entryIndex];
|
|
475
|
+
let trackName: string|null = null;
|
|
476
|
+
for (const group of timelineData.groups) {
|
|
477
|
+
if (group.startLevel > level) {
|
|
478
|
+
break;
|
|
479
|
+
}
|
|
480
|
+
trackName = group.name;
|
|
481
|
+
}
|
|
482
|
+
return trackName;
|
|
483
|
+
}
|
|
346
484
|
}
|
|
@@ -962,6 +962,10 @@ export class TimelinePanel extends TimelinePanelBase implements Client, Timeline
|
|
|
962
962
|
// We also hide the sidebar - else if the user is viewing a trace and
|
|
963
963
|
// then load/record another, the sidebar remains visible.
|
|
964
964
|
this.#hideSidebar();
|
|
965
|
+
// Hide the SearchableView so Ctrl/Cmd-F cannot search a hidden trace
|
|
966
|
+
// and flame chart overlays (such as comment pins rendered on
|
|
967
|
+
// document.body) do not remain visible above the StatusDialog.
|
|
968
|
+
this.#searchableView.hideWidget();
|
|
965
969
|
return;
|
|
966
970
|
}
|
|
967
971
|
default:
|
|
@@ -89,7 +89,7 @@ export const DEFAULT_VIEW: View = (input, output, target) => {
|
|
|
89
89
|
// clang-format off
|
|
90
90
|
return html`
|
|
91
91
|
<div class='regex-row'>
|
|
92
|
-
<devtools-checkbox title=${helpText} aria-label=${helpText}
|
|
92
|
+
<devtools-checkbox title=${helpText} aria-label=${helpText} .checked=${!regex.disabled}
|
|
93
93
|
@change=${(event: Event) => onExistingRegexEnableToggle(regex, (event.currentTarget as UI.UIUtils.CheckboxLabel).checked)}
|
|
94
94
|
.jslogContext=${'timeline.ignore-list-pattern'}>${regex.pattern}</devtools-checkbox>
|
|
95
95
|
<devtools-button
|
|
@@ -23,6 +23,7 @@ import * as StatusDialog from './StatusDialog.js';
|
|
|
23
23
|
import * as TargetForEvent from './TargetForEvent.js';
|
|
24
24
|
import * as ThirdPartyTreeView from './ThirdPartyTreeView.js';
|
|
25
25
|
import * as ThreadAppender from './ThreadAppender.js';
|
|
26
|
+
import * as TimelineCommentContext from './TimelineCommentContext.js';
|
|
26
27
|
import * as TimelineCommentController from './TimelineCommentController.js';
|
|
27
28
|
import * as TimelineController from './TimelineController.js';
|
|
28
29
|
import * as TimelineDetailsView from './TimelineDetailsView.js';
|
|
@@ -69,6 +70,7 @@ export {
|
|
|
69
70
|
TargetForEvent,
|
|
70
71
|
ThirdPartyTreeView,
|
|
71
72
|
ThreadAppender,
|
|
73
|
+
TimelineCommentContext,
|
|
72
74
|
TimelineCommentController,
|
|
73
75
|
TimelineController,
|
|
74
76
|
TimelineDetailsView,
|
|
@@ -197,12 +197,20 @@ export function createTreemapData(
|
|
|
197
197
|
duplication: Trace.Extras.ScriptDuplication.ScriptDuplication): TreemapData {
|
|
198
198
|
const nodes: TreemapNode[] = [];
|
|
199
199
|
const htmlNodesByFrameId = new Map<string, TreemapNode>();
|
|
200
|
+
const seenRequests = new Set<Trace.Types.Events.SyntheticNetworkRequest>();
|
|
200
201
|
|
|
201
202
|
for (const script of scripts.scripts) {
|
|
202
203
|
if (!script.url) {
|
|
203
204
|
continue;
|
|
204
205
|
}
|
|
205
206
|
|
|
207
|
+
if (!script.inline && script.request) {
|
|
208
|
+
if (seenRequests.has(script.request)) {
|
|
209
|
+
continue;
|
|
210
|
+
}
|
|
211
|
+
seenRequests.add(script.request);
|
|
212
|
+
}
|
|
213
|
+
|
|
206
214
|
const name = script.url;
|
|
207
215
|
const sizes = Trace.Handlers.ModelHandlers.Scripts.getScriptGeneratedSizes(script);
|
|
208
216
|
|
|
@@ -753,20 +753,22 @@ export class WebauthnPaneImpl extends UI.Panel.Panel implements
|
|
|
753
753
|
Host.userMetrics.actionTaken(Host.UserMetrics.Action.VirtualAuthenticatorEnvironmentEnabled);
|
|
754
754
|
this.#hasBeenEnabled = true;
|
|
755
755
|
}
|
|
756
|
-
|
|
757
|
-
|
|
756
|
+
try {
|
|
757
|
+
if (this.#model) {
|
|
758
|
+
await this.#model.setVirtualAuthEnvEnabled(enable);
|
|
759
|
+
}
|
|
760
|
+
|
|
761
|
+
if (enable) {
|
|
762
|
+
await this.#loadInitialAuthenticators();
|
|
763
|
+
} else {
|
|
764
|
+
this.#removeAuthenticatorSections();
|
|
765
|
+
}
|
|
766
|
+
this.#enabled = enable;
|
|
767
|
+
} finally {
|
|
768
|
+
this.#isEnabling = undefined;
|
|
769
|
+
this.requestUpdate();
|
|
770
|
+
resolve();
|
|
758
771
|
}
|
|
759
|
-
|
|
760
|
-
if (enable) {
|
|
761
|
-
await this.#loadInitialAuthenticators();
|
|
762
|
-
} else {
|
|
763
|
-
this.#removeAuthenticatorSections();
|
|
764
|
-
}
|
|
765
|
-
|
|
766
|
-
this.#isEnabling = undefined;
|
|
767
|
-
this.#enabled = enable;
|
|
768
|
-
this.requestUpdate();
|
|
769
|
-
resolve();
|
|
770
772
|
});
|
|
771
773
|
}
|
|
772
774
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
Name: Dependencies sourced from the upstream `chromium` repository
|
|
2
2
|
URL: Internal
|
|
3
3
|
Version: N/A
|
|
4
|
-
Revision:
|
|
4
|
+
Revision: d4d613355ad137685e4f35deed6a3697cd9d5202
|
|
5
5
|
Update Mechanism: Manual (https://crbug.com/428069060)
|
|
6
6
|
License: BSD-3-Clause
|
|
7
7
|
License File: LICENSE
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
Name: Puppeteer Core
|
|
2
2
|
Short Name: Puppeteer Core
|
|
3
3
|
URL: https://github.com/puppeteer/puppeteer/tree/main/packages/puppeteer-core
|
|
4
|
-
Version: 25.
|
|
4
|
+
Version: 25.16.0
|
|
5
5
|
License: Apache-2.0
|
|
6
6
|
License File: LICENSE
|
|
7
|
-
Revision:
|
|
7
|
+
Revision: a207faf527ce4305b33a6c0f9706b090c21c115e
|
|
8
8
|
Security Critical: no
|
|
9
9
|
Shipped: yes
|
|
10
10
|
Update Mechanism: Autoroll
|
|
@@ -439,6 +439,24 @@ export declare abstract class Browser extends EventEmitter<BrowserEvents> {
|
|
|
439
439
|
* {@link Browser.defaultBrowserContext | default browser context}).
|
|
440
440
|
*/
|
|
441
441
|
abstract target(): Target;
|
|
442
|
+
/**
|
|
443
|
+
* Sets the network conditions (blocklist or allowlist) and re-applies the
|
|
444
|
+
* conditions to all targets.
|
|
445
|
+
* To clear all network conditions, omit the argument or pass `null`.
|
|
446
|
+
*
|
|
447
|
+
* @param conditions - The network conditions to apply.
|
|
448
|
+
*
|
|
449
|
+
* @remarks
|
|
450
|
+
* Currently only supported for Chrome and the CDP protocol.
|
|
451
|
+
*
|
|
452
|
+
* Targets that are already on a blocked URL when `restrictNetwork` is called
|
|
453
|
+
* will remain attached and stay on the blocked page. This is a behavior difference
|
|
454
|
+
* compared to launching the browser with network restrictions, where such targets
|
|
455
|
+
* are detached immediately upon initial attach.
|
|
456
|
+
*
|
|
457
|
+
* @experimental
|
|
458
|
+
*/
|
|
459
|
+
restrictNetwork(conditions?: NetworkRestrictions | null): Promise<void>;
|
|
442
460
|
/**
|
|
443
461
|
* Waits until a {@link Target | target} matching the given `predicate`
|
|
444
462
|
* appears and returns it.
|
|
@@ -4056,9 +4074,28 @@ export declare abstract class HTTPRequest {
|
|
|
4056
4074
|
* Fetches the POST data for the request from the browser.
|
|
4057
4075
|
*/
|
|
4058
4076
|
abstract fetchPostData(): Promise<string | undefined>;
|
|
4077
|
+
/**
|
|
4078
|
+
* Fetches the POST data for the request from the browser as a `Uint8Array`.
|
|
4079
|
+
*
|
|
4080
|
+
* @remarks
|
|
4081
|
+
* If the request has no POST data or fetching the POST data from the browser
|
|
4082
|
+
* fails, this method resolves to `undefined`.
|
|
4083
|
+
*
|
|
4084
|
+
* @returns A promise that resolves to the raw POST data bytes, or
|
|
4085
|
+
* `undefined` when the request has no POST data or fetching it fails.
|
|
4086
|
+
*/
|
|
4087
|
+
abstract content(): Promise<Uint8Array | undefined>;
|
|
4059
4088
|
/**
|
|
4060
4089
|
* An object with HTTP headers associated with the request. All
|
|
4061
4090
|
* header names are lower-case.
|
|
4091
|
+
*
|
|
4092
|
+
* @remarks
|
|
4093
|
+
*
|
|
4094
|
+
* Under CDP, `page.on('request')` fires before the browser's network stack
|
|
4095
|
+
* attaches all headers (such as `accept`, `accept-encoding`, `cookie`,
|
|
4096
|
+
* `host`, and `sec-fetch-*`). The full set of headers is populated
|
|
4097
|
+
* asynchronously and is available by the time `page.on('response')` or
|
|
4098
|
+
* `page.on('requestfinished')` fires.
|
|
4062
4099
|
*/
|
|
4063
4100
|
abstract headers(): Record<string, string>;
|
|
4064
4101
|
/**
|
|
@@ -4068,7 +4105,7 @@ export declare abstract class HTTPRequest {
|
|
|
4068
4105
|
*
|
|
4069
4106
|
* Headers are copied to the new Request instance. The request URL and
|
|
4070
4107
|
* method are preserved. The body is built from
|
|
4071
|
-
* {@link HTTPRequest.
|
|
4108
|
+
* {@link HTTPRequest.content} when the request has post data,
|
|
4072
4109
|
* otherwise the Request is created without a body. For `GET` and
|
|
4073
4110
|
* `HEAD` requests the body is always omitted, as required by the
|
|
4074
4111
|
* Fetch API.
|
|
@@ -5503,6 +5540,8 @@ export declare abstract class Locator<T> extends EventEmitter<LocatorEvents> {
|
|
|
5503
5540
|
* method is chosen based on the type. `contenteditable`, select, textarea and
|
|
5504
5541
|
* input elements are supported. For checkboxes, radio buttons and switches
|
|
5505
5542
|
* specify a boolean value.
|
|
5543
|
+
* Read-only elements and values the element does not accept are rejected without
|
|
5544
|
+
* modifying the element.
|
|
5506
5545
|
*/
|
|
5507
5546
|
fill<ElementType extends Element>(
|
|
5508
5547
|
this: Locator<ElementType>,
|
|
@@ -5992,6 +6031,25 @@ export declare interface NetworkConditions {
|
|
|
5992
6031
|
latency?: number;
|
|
5993
6032
|
}
|
|
5994
6033
|
|
|
6034
|
+
/**
|
|
6035
|
+
* @experimental
|
|
6036
|
+
* @public
|
|
6037
|
+
*/
|
|
6038
|
+
export declare interface NetworkRestrictions {
|
|
6039
|
+
/**
|
|
6040
|
+
* A list of {@link https://urlpattern.spec.whatwg.org/ | URLPattern} strings to block.
|
|
6041
|
+
* Mutually exclusive with {@link NetworkRestrictions.allowlist}.
|
|
6042
|
+
* Passing `[]` or omitting this option means no restriction.
|
|
6043
|
+
*/
|
|
6044
|
+
blocklist?: string[];
|
|
6045
|
+
/**
|
|
6046
|
+
* A list of {@link https://urlpattern.spec.whatwg.org/ | URLPattern} strings to allow.
|
|
6047
|
+
* Mutually exclusive with {@link NetworkRestrictions.blocklist}.
|
|
6048
|
+
* Passing `[]` or omitting this option means no restriction.
|
|
6049
|
+
*/
|
|
6050
|
+
allowlist?: string[];
|
|
6051
|
+
}
|
|
6052
|
+
|
|
5995
6053
|
/**
|
|
5996
6054
|
* @public
|
|
5997
6055
|
*/
|
|
@@ -6129,13 +6187,17 @@ export declare abstract class Page extends EventEmitter<PageEvents> {
|
|
|
6129
6187
|
* Consider using {@link BrowserContext.overridePermissions} to grant
|
|
6130
6188
|
* permissions for the page to read its geolocation.
|
|
6131
6189
|
*
|
|
6190
|
+
* Pass `null` to remove the geolocation override.
|
|
6191
|
+
*
|
|
6132
6192
|
* @example
|
|
6133
6193
|
*
|
|
6134
6194
|
* ```ts
|
|
6135
6195
|
* await page.setGeolocation({latitude: 59.95, longitude: 30.31667});
|
|
6196
|
+
* // Later, go back to the browser's real geolocation:
|
|
6197
|
+
* await page.setGeolocation(null);
|
|
6136
6198
|
* ```
|
|
6137
6199
|
*/
|
|
6138
|
-
abstract setGeolocation(options: GeolocationOptions): Promise<void>;
|
|
6200
|
+
abstract setGeolocation(options: GeolocationOptions | null): Promise<void>;
|
|
6139
6201
|
/**
|
|
6140
6202
|
* A target this page was created from.
|
|
6141
6203
|
*
|
|
@@ -7983,6 +8045,17 @@ export declare abstract class Page extends EventEmitter<PageEvents> {
|
|
|
7983
8045
|
* @experimental
|
|
7984
8046
|
*/
|
|
7985
8047
|
abstract windowId(): Promise<WindowId>;
|
|
8048
|
+
/**
|
|
8049
|
+
* Returns information about the browser tab of this page. The result is a
|
|
8050
|
+
* snapshot and is not updated when the tab changes.
|
|
8051
|
+
*
|
|
8052
|
+
* @returns `null` if the page is not in a tab strip, for example, in
|
|
8053
|
+
* `chrome-headless-shell`. Chrome before M150 does not report tab
|
|
8054
|
+
* information, so the method also returns `null` there.
|
|
8055
|
+
*
|
|
8056
|
+
* @experimental
|
|
8057
|
+
*/
|
|
8058
|
+
abstract tabInfo(): Promise<TabInfo | null>;
|
|
7986
8059
|
[disposeSymbol](): void;
|
|
7987
8060
|
[asyncDisposeSymbol](): Promise<void>;
|
|
7988
8061
|
/**
|
|
@@ -8624,6 +8697,7 @@ declare namespace Puppeteer_2 {
|
|
|
8624
8697
|
LaunchPWAOptions,
|
|
8625
8698
|
GetPWAStateOptions,
|
|
8626
8699
|
PWAState,
|
|
8700
|
+
NetworkRestrictions,
|
|
8627
8701
|
BrowserContextEvents,
|
|
8628
8702
|
CDPEvents,
|
|
8629
8703
|
CDPSessionEvents,
|
|
@@ -8679,6 +8753,7 @@ declare namespace Puppeteer_2 {
|
|
|
8679
8753
|
NewDocumentScriptEvaluation,
|
|
8680
8754
|
ReloadOptions,
|
|
8681
8755
|
HeapSnapshotOptions,
|
|
8756
|
+
TabInfo,
|
|
8682
8757
|
WritableDestination,
|
|
8683
8758
|
WebWorkerEvents,
|
|
8684
8759
|
VisibilityOption,
|
|
@@ -9625,7 +9700,8 @@ export declare interface SerializedAXNode {
|
|
|
9625
9700
|
* Get an ElementHandle for this AXNode if available.
|
|
9626
9701
|
*
|
|
9627
9702
|
* If the underlying DOM element has been disposed, the method might return an
|
|
9628
|
-
* error.
|
|
9703
|
+
* error. If the frame has navigated to a new document since the snapshot,
|
|
9704
|
+
* the method returns `null`.
|
|
9629
9705
|
*/
|
|
9630
9706
|
elementHandle(): Promise<ElementHandle | null>;
|
|
9631
9707
|
}
|
|
@@ -9700,6 +9776,31 @@ export declare type SupportedWebDriverCapability = Exclude<
|
|
|
9700
9776
|
'unhandledPromptBehavior' | 'acceptInsecureCerts'
|
|
9701
9777
|
>;
|
|
9702
9778
|
|
|
9779
|
+
/**
|
|
9780
|
+
* Information about the browser tab of a page. See {@link Page.tabInfo}.
|
|
9781
|
+
*
|
|
9782
|
+
* @public
|
|
9783
|
+
* @experimental
|
|
9784
|
+
*/
|
|
9785
|
+
export declare interface TabInfo {
|
|
9786
|
+
/**
|
|
9787
|
+
* Zero-based index of the tab in its window's tab strip.
|
|
9788
|
+
*/
|
|
9789
|
+
index: number;
|
|
9790
|
+
/**
|
|
9791
|
+
* Whether the tab is the active tab in its window.
|
|
9792
|
+
*/
|
|
9793
|
+
active: boolean;
|
|
9794
|
+
/**
|
|
9795
|
+
* Whether the tab is pinned.
|
|
9796
|
+
*/
|
|
9797
|
+
pinned: boolean;
|
|
9798
|
+
/**
|
|
9799
|
+
* ID of the tab group the tab belongs to, if any.
|
|
9800
|
+
*/
|
|
9801
|
+
groupId?: string;
|
|
9802
|
+
}
|
|
9803
|
+
|
|
9703
9804
|
/**
|
|
9704
9805
|
* Target represents a
|
|
9705
9806
|
* {@link https://chromedevtools.github.io/devtools-protocol/tot/Target/ | CDP target}.
|
|
@@ -10481,6 +10582,15 @@ export declare interface WsOptions {
|
|
|
10481
10582
|
* @defaultValue `256 * 1024 * 1024`
|
|
10482
10583
|
*/
|
|
10483
10584
|
maxPayload?: number;
|
|
10585
|
+
/**
|
|
10586
|
+
* Time in milliseconds to wait for the WebSocket opening handshake before
|
|
10587
|
+
* failing. Without it, connecting to a host that accepts the TCP connection
|
|
10588
|
+
* but never answers the upgrade request waits until the operating system
|
|
10589
|
+
* gives up. Node.js only.
|
|
10590
|
+
*
|
|
10591
|
+
* @defaultValue no timeout
|
|
10592
|
+
*/
|
|
10593
|
+
handshakeTimeout?: number;
|
|
10484
10594
|
}
|
|
10485
10595
|
|
|
10486
10596
|
export {};
|