chrome-devtools-frontend 1.0.1538523 → 1.0.1539972
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/eslint.config.mjs +1 -1
- package/front_end/core/common/Debouncer.ts +2 -2
- package/front_end/core/common/Gzip.ts +1 -1
- package/front_end/core/common/Throttler.ts +3 -3
- package/front_end/core/host/GdpClient.ts +4 -0
- package/front_end/core/protocol_client/CDPConnection.ts +12 -10
- package/front_end/core/protocol_client/DevToolsCDPConnection.ts +181 -0
- package/front_end/core/protocol_client/InspectorBackend.ts +55 -249
- package/front_end/core/protocol_client/protocol_client.ts +2 -2
- package/front_end/core/sdk/ChildTargetManager.ts +5 -41
- package/front_end/core/sdk/Connections.ts +9 -58
- package/front_end/core/sdk/DOMModel.ts +1 -0
- package/front_end/core/sdk/DebuggerModel.ts +3 -16
- package/front_end/core/sdk/RehydratingConnection.ts +1 -1
- package/front_end/core/sdk/RemoteObject.ts +4 -0
- package/front_end/core/sdk/Target.ts +3 -6
- package/front_end/core/sdk/TargetManager.ts +1 -2
- package/front_end/entrypoints/lighthouse_worker/LighthouseWorkerService.ts +13 -26
- package/front_end/entrypoints/node_app/{NodeConnectionsPanel.ts → app/NodeConnectionsPanel.ts} +8 -8
- package/front_end/entrypoints/node_app/{NodeMain.ts → app/NodeMain.ts} +12 -11
- package/front_end/entrypoints/node_app/app/app.ts +6 -0
- package/front_end/entrypoints/node_app/node_app.ts +4 -2
- package/front_end/generated/Deprecation.ts +8 -0
- package/front_end/generated/{InspectorBackendCommands.js → InspectorBackendCommands.ts} +18 -36
- package/front_end/generated/SupportedCSSProperties.js +50 -9
- package/front_end/generated/protocol.ts +2 -2
- package/front_end/models/ai_assistance/EvaluateAction.ts +88 -5
- package/front_end/models/ai_assistance/injected.ts +15 -2
- package/front_end/models/live-metrics/web-vitals-injected/README.md +1 -1
- package/front_end/models/trace/Styles.ts +1 -1
- package/front_end/models/trace/handlers/NetworkRequestsHandler.ts +18 -3
- package/front_end/models/trace/types/TraceEvents.ts +19 -0
- package/front_end/panels/ai_assistance/AiAssistancePanel.ts +49 -26
- package/front_end/panels/ai_assistance/PatchWidget.ts +22 -12
- package/front_end/panels/ai_assistance/aiAssistancePanel.css +1 -1
- package/front_end/panels/ai_assistance/ai_assistance.ts +1 -0
- package/front_end/panels/ai_assistance/components/ChatView.ts +2 -135
- package/front_end/panels/ai_assistance/components/DisabledWidget.ts +170 -0
- package/front_end/panels/ai_assistance/components/ExploreWidget.ts +4 -4
- package/front_end/panels/ai_assistance/components/chatView.css +0 -31
- package/front_end/panels/ai_assistance/components/disabledWidget.css +45 -0
- package/front_end/panels/animation/AnimationTimeline.ts +1 -1
- package/front_end/panels/application/components/FrameDetailsView.ts +1 -1
- package/front_end/panels/common/AiCodeCompletionDisclaimer.ts +4 -4
- package/front_end/panels/common/AiCodeCompletionSummaryToolbar.ts +2 -2
- package/front_end/panels/console/ConsoleViewMessage.ts +1 -1
- package/front_end/panels/css_overview/CSSOverviewCompletedView.ts +3 -3
- package/front_end/panels/elements/ElementsTreeElement.ts +123 -95
- package/front_end/panels/elements/ElementsTreeOutline.ts +2 -2
- package/front_end/panels/elements/NodeStackTraceWidget.ts +8 -2
- package/front_end/panels/elements/PropertiesWidget.ts +3 -2
- package/front_end/panels/event_listeners/EventListenersView.ts +9 -5
- package/front_end/panels/explain/components/ConsoleInsight.ts +2 -3
- package/front_end/panels/lighthouse/LighthouseProtocolService.ts +57 -33
- package/front_end/panels/linear_memory_inspector/LinearMemoryInspectorController.ts +2 -2
- package/front_end/panels/linear_memory_inspector/components/LinearMemoryInspector.ts +1 -1
- package/front_end/panels/linear_memory_inspector/components/LinearMemoryNavigator.ts +12 -5
- package/front_end/panels/network/RequestInitiatorView.ts +1 -1
- package/front_end/panels/network/RequestPayloadView.ts +2 -1
- package/front_end/panels/network/RequestTimingView.ts +4 -2
- package/front_end/panels/network/components/EditableSpan.ts +1 -1
- package/front_end/panels/network/components/RequestHeadersView.ts +24 -17
- package/front_end/panels/protocol_monitor/JSONEditor.ts +2 -2
- package/front_end/panels/recorder/RecorderController.ts +6 -7
- package/front_end/panels/recorder/components/StepView.ts +1 -1
- package/front_end/panels/recorder/models/RecordingPlayer.ts +7 -6
- package/front_end/panels/settings/components/SyncSection.ts +1 -1
- package/front_end/panels/settings/emulation/components/UserAgentClientHintsForm.ts +4 -4
- package/front_end/panels/sources/BreakpointsView.ts +3 -3
- package/front_end/panels/sources/ScopeChainSidebarPane.ts +4 -3
- package/front_end/panels/sources/WatchExpressionsSidebarPane.ts +3 -2
- package/front_end/panels/timeline/TimelineFlameChartView.ts +10 -10
- package/front_end/panels/timeline/TimelinePanel.ts +3 -3
- package/front_end/panels/timeline/TimelineUIUtils.ts +21 -24
- package/front_end/panels/timeline/components/FieldSettingsDialog.ts +9 -5
- package/front_end/panels/timeline/components/LiveMetricsView.ts +20 -9
- package/front_end/panels/timeline/components/MetricCard.ts +4 -2
- package/front_end/panels/timeline/components/SidebarSingleInsightSet.ts +3 -2
- package/front_end/panels/utils/utils.ts +4 -2
- package/front_end/services/puppeteer/PuppeteerConnection.ts +57 -53
- 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/cjs/puppeteer/api/Browser.d.ts +3 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Browser.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Browser.js +4 -2
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Browser.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/BrowserContext.d.ts +3 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/BrowserContext.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/BrowserContext.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Page.d.ts +5 -0
- 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.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/BidiOverCdp.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/BidiOverCdp.js +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/BidiOverCdp.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/BrowserConnector.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/BrowserConnector.js +4 -3
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/BrowserConnector.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/BrowserContext.d.ts +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/BrowserContext.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/BrowserContext.js +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/BrowserContext.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Connection.d.ts +2 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Connection.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Connection.js +3 -2
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Connection.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 +29 -9
- 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/BrowsingContext.d.ts +1 -0
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/core/BrowsingContext.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/core/BrowsingContext.js +11 -0
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/core/BrowsingContext.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Accessibility.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Accessibility.js +9 -2
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Accessibility.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Browser.d.ts +1 -0
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Browser.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Browser.js +21 -0
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Browser.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/BrowserConnector.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/BrowserConnector.js +4 -2
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/BrowserConnector.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/BrowserContext.d.ts +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/BrowserContext.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/BrowserContext.js +2 -2
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/BrowserContext.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/CdpSession.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/CdpSession.js +2 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/CdpSession.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Connection.d.ts +6 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Connection.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Connection.js +11 -2
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Connection.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/ExtensionTransport.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/ExtensionTransport.js +5 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/ExtensionTransport.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Page.d.ts +1 -0
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Page.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Page.js +6 -0
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Page.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/TargetManager.d.ts +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/TargetManager.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/TargetManager.js +29 -27
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/TargetManager.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/CallbackRegistry.d.ts +2 -0
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/CallbackRegistry.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/CallbackRegistry.js +4 -3
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/CallbackRegistry.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/ConnectOptions.d.ts +7 -0
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/ConnectOptions.d.ts.map +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 +4 -0
- 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 +10 -4
- 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/util/Mutex.d.ts +2 -2
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/util/version.d.ts +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/util/version.js +1 -1
- package/front_end/third_party/puppeteer/package/lib/es5-iife/puppeteer-core-browser.d.ts +14 -3
- package/front_end/third_party/puppeteer/package/lib/es5-iife/puppeteer-core-browser.js +97 -43
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Browser.d.ts +3 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Browser.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Browser.js +4 -2
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Browser.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/BrowserContext.d.ts +3 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/BrowserContext.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/BrowserContext.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Page.d.ts +5 -0
- 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.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/BidiOverCdp.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/BidiOverCdp.js +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/BidiOverCdp.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/BrowserConnector.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/BrowserConnector.js +4 -3
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/BrowserConnector.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/BrowserContext.d.ts +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/BrowserContext.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/BrowserContext.js +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/BrowserContext.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Connection.d.ts +2 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Connection.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Connection.js +3 -2
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Connection.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 +29 -9
- 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/BrowsingContext.d.ts +1 -0
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/core/BrowsingContext.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/core/BrowsingContext.js +11 -0
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/core/BrowsingContext.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Accessibility.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Accessibility.js +9 -2
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Accessibility.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Browser.d.ts +1 -0
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Browser.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Browser.js +21 -0
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Browser.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/BrowserConnector.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/BrowserConnector.js +4 -2
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/BrowserConnector.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/BrowserContext.d.ts +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/BrowserContext.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/BrowserContext.js +2 -2
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/BrowserContext.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/CdpSession.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/CdpSession.js +2 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/CdpSession.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Connection.d.ts +6 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Connection.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Connection.js +11 -2
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Connection.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/ExtensionTransport.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/ExtensionTransport.js +5 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/ExtensionTransport.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Page.d.ts +1 -0
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Page.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Page.js +6 -0
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Page.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/TargetManager.d.ts +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/TargetManager.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/TargetManager.js +30 -28
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/TargetManager.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/CallbackRegistry.d.ts +2 -0
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/CallbackRegistry.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/CallbackRegistry.js +4 -3
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/CallbackRegistry.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/ConnectOptions.d.ts +7 -0
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/ConnectOptions.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/BrowserLauncher.d.ts +4 -0
- 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 +10 -4
- 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/util/version.d.ts +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/util/version.js +1 -1
- package/front_end/third_party/puppeteer/package/lib/types.d.ts +14 -3
- package/front_end/third_party/puppeteer/package/package.json +3 -3
- package/front_end/third_party/puppeteer/package/src/api/Browser.ts +4 -2
- package/front_end/third_party/puppeteer/package/src/api/BrowserContext.ts +3 -1
- package/front_end/third_party/puppeteer/package/src/api/Page.ts +6 -0
- package/front_end/third_party/puppeteer/package/src/bidi/BidiOverCdp.ts +1 -0
- package/front_end/third_party/puppeteer/package/src/bidi/BrowserConnector.ts +8 -1
- package/front_end/third_party/puppeteer/package/src/bidi/BrowserContext.ts +1 -1
- package/front_end/third_party/puppeteer/package/src/bidi/Connection.ts +4 -1
- package/front_end/third_party/puppeteer/package/src/bidi/Page.ts +38 -10
- package/front_end/third_party/puppeteer/package/src/bidi/core/BrowsingContext.ts +13 -0
- package/front_end/third_party/puppeteer/package/src/cdp/Accessibility.ts +8 -2
- package/front_end/third_party/puppeteer/package/src/cdp/Browser.ts +32 -0
- package/front_end/third_party/puppeteer/package/src/cdp/BrowserConnector.ts +4 -0
- package/front_end/third_party/puppeteer/package/src/cdp/BrowserContext.ts +2 -2
- package/front_end/third_party/puppeteer/package/src/cdp/CdpSession.ts +2 -1
- package/front_end/third_party/puppeteer/package/src/cdp/Connection.ts +15 -1
- package/front_end/third_party/puppeteer/package/src/cdp/ExtensionTransport.ts +5 -1
- package/front_end/third_party/puppeteer/package/src/cdp/Page.ts +8 -0
- package/front_end/third_party/puppeteer/package/src/cdp/TargetManager.ts +36 -43
- package/front_end/third_party/puppeteer/package/src/common/CallbackRegistry.ts +7 -5
- package/front_end/third_party/puppeteer/package/src/common/ConnectOptions.ts +8 -0
- package/front_end/third_party/puppeteer/package/src/node/BrowserLauncher.ts +22 -1
- package/front_end/third_party/puppeteer/package/src/util/version.ts +1 -1
- package/front_end/ui/components/dialogs/ButtonDialog.ts +15 -5
- package/front_end/ui/components/expandable_list/ExpandableList.ts +1 -1
- package/front_end/ui/components/helpers/helpers.ts +0 -2
- package/front_end/ui/components/menus/Menu.ts +5 -3
- package/front_end/ui/components/panel_feedback/PreviewToggle.ts +1 -1
- package/front_end/ui/components/survey_link/SurveyLink.docs.ts +22 -0
- package/front_end/ui/components/switch/Switch.docs.ts +38 -0
- package/front_end/ui/components/tooltips/Tooltip.ts +69 -45
- package/front_end/ui/components/tree_outline/TreeOutline.ts +1 -2
- package/front_end/ui/legacy/SelectMenu.docs.ts +14 -0
- package/front_end/ui/legacy/Slider.docs.ts +49 -0
- package/front_end/ui/legacy/components/object_ui/CustomPreviewComponent.ts +3 -1
- package/front_end/ui/legacy/components/object_ui/ObjectPropertiesSection.ts +453 -347
- package/front_end/ui/legacy/components/utils/JSPresentationUtils.ts +77 -5
- package/front_end/ui/legacy/components/utils/Linkifier.ts +62 -3
- package/front_end/ui/visual_logging/KnownContextValues.ts +8 -0
- package/package.json +1 -1
- package/front_end/core/protocol_client/NodeURL.ts +0 -42
- package/front_end/third_party/puppeteer/package/src/templates/version.ts.tmpl +0 -4
- package/front_end/ui/components/docs/color_swatch/basic.html +0 -32
- package/front_end/ui/components/docs/color_swatch/basic.ts +0 -38
- package/front_end/ui/components/docs/color_swatch/change-color.html +0 -24
- package/front_end/ui/components/docs/color_swatch/change-color.ts +0 -28
- package/front_end/ui/components/docs/combo_box/basic.html +0 -20
- package/front_end/ui/components/docs/combo_box/basic.ts +0 -49
- package/front_end/ui/components/docs/computed_style_property/basic.html +0 -25
- package/front_end/ui/components/docs/computed_style_property/basic.ts +0 -19
- package/front_end/ui/components/docs/computed_style_property/traceable.html +0 -25
- package/front_end/ui/components/docs/computed_style_property/traceable.ts +0 -16
- package/front_end/ui/components/docs/computed_style_trace/basic.html +0 -25
- package/front_end/ui/components/docs/computed_style_trace/basic.ts +0 -24
- package/front_end/ui/components/docs/console_insight/basic.html +0 -28
- package/front_end/ui/components/docs/console_insight/basic.ts +0 -103
- package/front_end/ui/components/docs/console_insight/error.html +0 -28
- package/front_end/ui/components/docs/console_insight/error.ts +0 -33
- package/front_end/ui/components/docs/console_insight/loading.html +0 -28
- package/front_end/ui/components/docs/console_insight/loading.ts +0 -47
- package/front_end/ui/components/docs/elements_breadcrumbs/basic.html +0 -43
- package/front_end/ui/components/docs/elements_breadcrumbs/basic.ts +0 -54
- package/front_end/ui/components/docs/elements_breadcrumbs/helpers.ts +0 -29
- package/front_end/ui/components/docs/elements_breadcrumbs/scroll-to-active-element.html +0 -38
- package/front_end/ui/components/docs/elements_breadcrumbs/scroll-to-active-element.ts +0 -90
- package/front_end/ui/components/docs/elements_breadcrumbs/scroll.html +0 -29
- package/front_end/ui/components/docs/elements_breadcrumbs/scroll.ts +0 -62
- package/front_end/ui/components/docs/icon_button/basic.html +0 -34
- package/front_end/ui/components/docs/icon_button/basic.ts +0 -67
- package/front_end/ui/components/docs/issue_counter/basic.html +0 -35
- package/front_end/ui/components/docs/issue_counter/basic.ts +0 -34
- package/front_end/ui/components/docs/issue_link_icon/basic.html +0 -31
- package/front_end/ui/components/docs/issue_link_icon/basic.ts +0 -26
- package/front_end/ui/components/docs/legacy_color_invert/basic.html +0 -77
- package/front_end/ui/components/docs/legacy_color_invert/basic.ts +0 -98
- package/front_end/ui/components/docs/linear_memory_inspector/basic.html +0 -26
- package/front_end/ui/components/docs/linear_memory_inspector/basic.ts +0 -44
- package/front_end/ui/components/docs/menu/basic.html +0 -28
- package/front_end/ui/components/docs/menu/basic.ts +0 -66
- package/front_end/ui/components/docs/recorder_control_button/basic.html +0 -20
- package/front_end/ui/components/docs/recorder_control_button/basic.ts +0 -15
- package/front_end/ui/components/docs/recorder_recording_list_view/basic.html +0 -20
- package/front_end/ui/components/docs/recorder_recording_list_view/basic.ts +0 -26
- package/front_end/ui/components/docs/recorder_select_button/basic.html +0 -20
- package/front_end/ui/components/docs/recorder_select_button/basic.ts +0 -81
- package/front_end/ui/components/docs/recorder_split_view/basic.html +0 -17
- package/front_end/ui/components/docs/recorder_split_view/basic.ts +0 -22
- package/front_end/ui/components/docs/request_link_icon/basic.html +0 -31
- package/front_end/ui/components/docs/request_link_icon/basic.ts +0 -21
- package/front_end/ui/components/docs/slider/basic.ts +0 -62
- package/front_end/ui/components/docs/style_property_editor/flex.html +0 -21
- package/front_end/ui/components/docs/style_property_editor/flex.ts +0 -52
- package/front_end/ui/components/docs/style_property_editor/grid.html +0 -22
- package/front_end/ui/components/docs/style_property_editor/grid.ts +0 -50
- package/front_end/ui/components/docs/style_property_editor/masonry.html +0 -21
- package/front_end/ui/components/docs/style_property_editor/masonry.ts +0 -50
- package/front_end/ui/components/docs/survey_link/basic.html +0 -20
- package/front_end/ui/components/docs/survey_link/basic.ts +0 -28
- package/front_end/ui/components/docs/switch/basic.ts +0 -51
- package/front_end/ui/components/docs/tree_outline/basic.html +0 -33
- package/front_end/ui/components/docs/tree_outline/basic.ts +0 -38
- package/front_end/ui/components/docs/tree_outline/custom-renderers.html +0 -32
- package/front_end/ui/components/docs/tree_outline/custom-renderers.ts +0 -61
- package/front_end/ui/components/docs/tree_outline/lazy-children.html +0 -32
- package/front_end/ui/components/docs/tree_outline/lazy-children.ts +0 -91
- package/front_end/ui/components/docs/tree_outline/sample-data.ts +0 -67
- package/front_end/ui/components/helpers/directives.ts +0 -38
- /package/front_end/entrypoints/node_app/{nodeConnectionsPanel.css → app/nodeConnectionsPanel.css} +0 -0
|
@@ -6,16 +6,17 @@ import * as i18n from '../../core/i18n/i18n.js';
|
|
|
6
6
|
import type * as Platform from '../../core/platform/platform.js';
|
|
7
7
|
import type * as ProtocolClient from '../../core/protocol_client/protocol_client.js';
|
|
8
8
|
import * as SDK from '../../core/sdk/sdk.js';
|
|
9
|
+
import type * as Protocol from '../../generated/protocol.js';
|
|
9
10
|
|
|
10
11
|
import type * as ReportRenderer from './LighthouseReporterTypes.js';
|
|
11
12
|
|
|
12
13
|
/**
|
|
13
14
|
* @file
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
15
|
+
* ┌───────────────┐
|
|
16
|
+
* │ CDPConnection │
|
|
17
|
+
* └───────────────┘
|
|
17
18
|
* │ ▲
|
|
18
|
-
* │ │
|
|
19
|
+
* │ │
|
|
19
20
|
* ┌┐ ▼ │ ┌┐
|
|
20
21
|
* ││ dispatchProtocolMessage sendProtocolMessage ││
|
|
21
22
|
* ││ │ ▲ ││
|
|
@@ -28,7 +29,10 @@ import type * as ReportRenderer from './LighthouseReporterTypes.js';
|
|
|
28
29
|
* ││ onFrontendMessage notifyFrontendViaWorkerMessage ││
|
|
29
30
|
* ││ │ ▲ ││
|
|
30
31
|
* ││ ▼ │ ││
|
|
31
|
-
* LighthouseWorkerService ││
|
|
32
|
+
* LighthouseWorkerService ││ WorkerConnectionTransport ││
|
|
33
|
+
* ││ │ ▲ ││
|
|
34
|
+
* ││ ▼ │ ││
|
|
35
|
+
* ││ CDPConnection ││
|
|
32
36
|
* ││ │ ▲ ││
|
|
33
37
|
* ││ ┌─────────────────────┼─┼───────────────────────┐ ││
|
|
34
38
|
* ││ │ Lighthouse ┌────▼──────┐ │ ││
|
|
@@ -37,10 +41,10 @@ import type * as ReportRenderer from './LighthouseReporterTypes.js';
|
|
|
37
41
|
* └┘ └───────────────────────────────────────────────┘ └┘
|
|
38
42
|
*
|
|
39
43
|
* - All messages traversing the worker boundary are action-wrapped.
|
|
40
|
-
* - All messages over the
|
|
41
|
-
* -
|
|
42
|
-
*
|
|
43
|
-
* - All
|
|
44
|
+
* - All messages over the CDPConnection speak pure CDP.
|
|
45
|
+
* - Within the worker we also use a 'CDPConnection' but with a custom
|
|
46
|
+
* transport called WorkerConnectionTransport.
|
|
47
|
+
* - All messages within WorkerConnectionTransport/LegacyPort speak pure CDP.
|
|
44
48
|
*/
|
|
45
49
|
|
|
46
50
|
let lastId = 1;
|
|
@@ -57,14 +61,15 @@ export interface LighthouseRun {
|
|
|
57
61
|
/**
|
|
58
62
|
* ProtocolService manages a connection between the frontend (Lighthouse panel) and the Lighthouse worker.
|
|
59
63
|
*/
|
|
60
|
-
export class ProtocolService {
|
|
61
|
-
private mainSessionId?:
|
|
64
|
+
export class ProtocolService implements ProtocolClient.CDPConnection.CDPConnectionObserver {
|
|
65
|
+
private mainSessionId?: Protocol.Target.SessionID;
|
|
62
66
|
private rootTargetId?: string;
|
|
63
|
-
private
|
|
67
|
+
private rootTarget?: SDK.Target.Target;
|
|
64
68
|
private lighthouseWorkerPromise?: Promise<Worker>;
|
|
65
69
|
private lighthouseMessageUpdateCallback?: ((arg0: string) => void);
|
|
66
70
|
private removeDialogHandler?: () => void;
|
|
67
71
|
private configForTesting?: object;
|
|
72
|
+
private connection?: ProtocolClient.CDPConnection.CDPConnection;
|
|
68
73
|
|
|
69
74
|
async attach(): Promise<void> {
|
|
70
75
|
await SDK.TargetManager.TargetManager.instance().suspendAllTargets();
|
|
@@ -90,12 +95,15 @@ export class ProtocolService {
|
|
|
90
95
|
throw new Error('Could not find the child target manager class for the root target');
|
|
91
96
|
}
|
|
92
97
|
|
|
93
|
-
const
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
98
|
+
const connection = rootTarget.router()?.connection;
|
|
99
|
+
if (!connection) {
|
|
100
|
+
throw new Error('Expected root target to have a session router');
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
const rootTargetId = await rootChildTargetManager.getParentTargetId();
|
|
104
|
+
const {sessionId} = await rootTarget.targetAgent().invoke_attachToTarget({targetId: rootTargetId, flatten: true});
|
|
105
|
+
this.connection = connection;
|
|
106
|
+
this.connection.observe(this);
|
|
99
107
|
|
|
100
108
|
// Lighthouse implements its own dialog handler like this, however its lifecycle ends when
|
|
101
109
|
// the internal Lighthouse session is disposed.
|
|
@@ -114,8 +122,8 @@ export class ProtocolService {
|
|
|
114
122
|
this.removeDialogHandler = () =>
|
|
115
123
|
resourceTreeModel.removeEventListener(SDK.ResourceTreeModel.Events.JavaScriptDialogOpening, dialogHandler);
|
|
116
124
|
|
|
117
|
-
this.
|
|
118
|
-
this.
|
|
125
|
+
this.rootTargetId = rootTargetId;
|
|
126
|
+
this.rootTarget = rootTarget;
|
|
119
127
|
this.mainSessionId = sessionId;
|
|
120
128
|
}
|
|
121
129
|
|
|
@@ -166,20 +174,22 @@ export class ProtocolService {
|
|
|
166
174
|
|
|
167
175
|
async detach(): Promise<void> {
|
|
168
176
|
const oldLighthouseWorker = this.lighthouseWorkerPromise;
|
|
169
|
-
const
|
|
177
|
+
const oldRootTarget = this.rootTarget;
|
|
170
178
|
|
|
171
179
|
// When detaching, make sure that we remove the old promises, before we
|
|
172
180
|
// perform any async cleanups. That way, if there is a message coming from
|
|
173
181
|
// lighthouse while we are in the process of cleaning up, we shouldn't deliver
|
|
174
182
|
// them to the backend.
|
|
175
183
|
this.lighthouseWorkerPromise = undefined;
|
|
176
|
-
this.
|
|
184
|
+
this.rootTarget = undefined;
|
|
185
|
+
this.connection?.unobserve(this);
|
|
186
|
+
this.connection = undefined;
|
|
177
187
|
|
|
178
188
|
if (oldLighthouseWorker) {
|
|
179
189
|
(await oldLighthouseWorker).terminate();
|
|
180
190
|
}
|
|
181
|
-
if (
|
|
182
|
-
await
|
|
191
|
+
if (oldRootTarget && this.mainSessionId) {
|
|
192
|
+
await oldRootTarget.targetAgent().invoke_detachFromTarget({sessionId: this.mainSessionId});
|
|
183
193
|
}
|
|
184
194
|
await SDK.TargetManager.TargetManager.instance().resumeAllTargets();
|
|
185
195
|
this.removeDialogHandler?.();
|
|
@@ -189,7 +199,11 @@ export class ProtocolService {
|
|
|
189
199
|
this.lighthouseMessageUpdateCallback = callback;
|
|
190
200
|
}
|
|
191
201
|
|
|
192
|
-
|
|
202
|
+
onEvent<T extends ProtocolClient.CDPConnection.Event>(event: ProtocolClient.CDPConnection.CDPEvent<T>): void {
|
|
203
|
+
this.dispatchProtocolMessage(event);
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
private dispatchProtocolMessage(message: ProtocolClient.CDPConnection.CDPReceivableMessage): void {
|
|
193
207
|
// A message without a sessionId is the main session of the main target (call it "Main session").
|
|
194
208
|
// A parallel connection and session was made that connects to the same main target (call it "Lighthouse session").
|
|
195
209
|
// Messages from the "Lighthouse session" have a sessionId.
|
|
@@ -199,15 +213,15 @@ export class ProtocolService {
|
|
|
199
213
|
// * the message has a sessionId (is not for the "Main session")
|
|
200
214
|
// * the message does not have a sessionId (is for the "Main session"), but only for the Target domain
|
|
201
215
|
// (to kickstart autoAttach in LH).
|
|
202
|
-
|
|
203
|
-
sessionId?: string,
|
|
204
|
-
method?: string,
|
|
205
|
-
};
|
|
206
|
-
if (protocolMessage.sessionId || (protocolMessage.method?.startsWith('Target'))) {
|
|
216
|
+
if (message.sessionId || ('method' in message && message.method?.startsWith('Target'))) {
|
|
207
217
|
void this.send('dispatchProtocolMessage', {message});
|
|
208
218
|
}
|
|
209
219
|
}
|
|
210
220
|
|
|
221
|
+
onDisconnect(): void {
|
|
222
|
+
// Do nothing.
|
|
223
|
+
}
|
|
224
|
+
|
|
211
225
|
private initWorker(): Promise<Worker> {
|
|
212
226
|
this.lighthouseWorkerPromise = new Promise<Worker>(resolve => {
|
|
213
227
|
const workerUrl = new URL('../../entrypoints/lighthouse_worker/lighthouse_worker.js', import.meta.url);
|
|
@@ -255,9 +269,19 @@ export class ProtocolService {
|
|
|
255
269
|
}
|
|
256
270
|
|
|
257
271
|
private sendProtocolMessage(message: string): void {
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
272
|
+
const {id, method, params, sessionId} = JSON.parse(message);
|
|
273
|
+
// CDPConnection manages it's own message IDs and it's important, otherwise we'd clash
|
|
274
|
+
// with the rest of the DevTools traffic.
|
|
275
|
+
// Instead, we ignore the ID coming from the worker when sending the command, but
|
|
276
|
+
// patch it back in when sending the response back to the worker.
|
|
277
|
+
void this.connection?.send(method, params, sessionId).then(response => {
|
|
278
|
+
this.dispatchProtocolMessage({
|
|
279
|
+
id,
|
|
280
|
+
sessionId,
|
|
281
|
+
result: 'result' in response ? response.result : undefined,
|
|
282
|
+
error: 'error' in response ? response.error : undefined,
|
|
283
|
+
});
|
|
284
|
+
});
|
|
261
285
|
}
|
|
262
286
|
|
|
263
287
|
private async send(action: string, args: Record<string, string|string[]|object> = {}): Promise<void> {
|
|
@@ -318,9 +318,9 @@ export class LinearMemoryInspectorController extends SDK.TargetManager.SDKModelO
|
|
|
318
318
|
appendApplicableItems(
|
|
319
319
|
_event: Event, contextMenu: UI.ContextMenu.ContextMenu,
|
|
320
320
|
target: ObjectUI.ObjectPropertiesSection.ObjectPropertyTreeElement): void {
|
|
321
|
-
if (target.property.
|
|
321
|
+
if (target.property.object?.isLinearMemoryInspectable()) {
|
|
322
322
|
const expression = target.path();
|
|
323
|
-
const object = target.property.
|
|
323
|
+
const object = target.property.object;
|
|
324
324
|
contextMenu.debugSection().appendItem(
|
|
325
325
|
i18nString(UIStrings.openInMemoryInspectorPanel),
|
|
326
326
|
this.reveal.bind(this, new SDK.RemoteObject.LinearMemoryInspectable(object, expression)),
|
|
@@ -204,7 +204,7 @@ export const DEFAULT_VIEW = (input: ViewInput, _output: Record<string, unknown>,
|
|
|
204
204
|
@endiannesschanged=${input.onEndiannessChanged}
|
|
205
205
|
@jumptopointeraddress=${input.onJumpToAddress}
|
|
206
206
|
>
|
|
207
|
-
</devtools-linear-memory-inspector-interpreter
|
|
207
|
+
</devtools-linear-memory-inspector-interpreter>
|
|
208
208
|
</div>`}
|
|
209
209
|
`,
|
|
210
210
|
target);
|
|
@@ -163,13 +163,20 @@ export class LinearMemoryNavigator extends HTMLElement {
|
|
|
163
163
|
'address-input': true,
|
|
164
164
|
invalid: !this.#valid,
|
|
165
165
|
};
|
|
166
|
-
return html
|
|
167
|
-
|
|
168
|
-
|
|
166
|
+
return html`<input
|
|
167
|
+
class=${Lit.Directives.classMap(classMap)}
|
|
168
|
+
data-input="true"
|
|
169
|
+
.value=${this.#address}
|
|
170
|
+
jslog=${VisualLogging.textField('linear-memory-inspector.address').track({
|
|
169
171
|
change: true,
|
|
170
172
|
})}
|
|
171
|
-
|
|
172
|
-
|
|
173
|
+
title=${
|
|
174
|
+
ifDefined(
|
|
175
|
+
this.#valid ? i18nString(UIStrings.enterAddress) : this.#error,
|
|
176
|
+
)}
|
|
177
|
+
@change=${this.#onAddressChange.bind(this, Mode.SUBMITTED)}
|
|
178
|
+
@input=${this.#onAddressChange.bind(this, Mode.EDIT)}
|
|
179
|
+
/>`;
|
|
173
180
|
}
|
|
174
181
|
|
|
175
182
|
#onAddressChange(mode: Mode, event: Event): void {
|
|
@@ -56,7 +56,7 @@ export class RequestInitiatorView extends UI.Widget.VBox {
|
|
|
56
56
|
const networkManager = SDK.NetworkManager.NetworkManager.forRequest(request);
|
|
57
57
|
const target = networkManager ? networkManager.target() : undefined;
|
|
58
58
|
return new Components.JSPresentationUtils.StackTracePreviewContent(
|
|
59
|
-
undefined, target, linkifier, {
|
|
59
|
+
undefined, target, linkifier, {runtimeStackTrace: initiator.stack, tabStops: focusableLink});
|
|
60
60
|
}
|
|
61
61
|
|
|
62
62
|
private createTree(): UI.TreeOutline.TreeOutlineInShadow {
|
|
@@ -435,7 +435,8 @@ export class RequestPayloadView extends UI.Widget.VBox {
|
|
|
435
435
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
436
436
|
private appendJSONPayloadParsed(rootListItem: Category, parsedObject: any, sourceText: string): void {
|
|
437
437
|
const object = (SDK.RemoteObject.RemoteObject.fromLocalObject(parsedObject) as SDK.RemoteObject.LocalJSONObject);
|
|
438
|
-
const section =
|
|
438
|
+
const section =
|
|
439
|
+
new ObjectUI.ObjectPropertiesSection.RootElement(new ObjectUI.ObjectPropertiesSection.ObjectTree(object));
|
|
439
440
|
section.title = (object.description);
|
|
440
441
|
section.expand();
|
|
441
442
|
// `editable` is not a valid property for `ObjectUI.ObjectPropertiesSection.RootElement`. Only for
|
|
@@ -608,7 +608,8 @@ export class RequestTimingView extends UI.Widget.VBox {
|
|
|
608
608
|
const origRequest = Logs.NetworkLog.NetworkLog.instance().originalRequestForURL(this.#request.url());
|
|
609
609
|
if (origRequest) {
|
|
610
610
|
const requestObject = SDK.RemoteObject.RemoteObject.fromLocalObject(origRequest);
|
|
611
|
-
const requestTreeElement = new ObjectUI.ObjectPropertiesSection.RootElement(
|
|
611
|
+
const requestTreeElement = new ObjectUI.ObjectPropertiesSection.RootElement(
|
|
612
|
+
new ObjectUI.ObjectPropertiesSection.ObjectTree(requestObject));
|
|
612
613
|
requestTreeElement.title = i18nString(UIStrings.originalRequest);
|
|
613
614
|
detailsView.appendChild(requestTreeElement);
|
|
614
615
|
}
|
|
@@ -616,7 +617,8 @@ export class RequestTimingView extends UI.Widget.VBox {
|
|
|
616
617
|
const response = Logs.NetworkLog.NetworkLog.instance().originalResponseForURL(this.#request.url());
|
|
617
618
|
if (response) {
|
|
618
619
|
const responseObject = SDK.RemoteObject.RemoteObject.fromLocalObject(response);
|
|
619
|
-
const responseTreeElement = new ObjectUI.ObjectPropertiesSection.RootElement(
|
|
620
|
+
const responseTreeElement = new ObjectUI.ObjectPropertiesSection.RootElement(
|
|
621
|
+
new ObjectUI.ObjectPropertiesSection.ObjectTree(responseObject));
|
|
620
622
|
responseTreeElement.title = i18nString(UIStrings.responseReceived);
|
|
621
623
|
detailsView.appendChild(responseTreeElement);
|
|
622
624
|
}
|
|
@@ -75,7 +75,7 @@ export class EditableSpan extends HTMLElement {
|
|
|
75
75
|
tabindex="0"
|
|
76
76
|
.innerText=${this.#value}
|
|
77
77
|
jslog=${VisualLogging.value('header-editor').track({change: true, keydown: 'Enter|Escape'})}
|
|
78
|
-
|
|
78
|
+
></span>`, this.#shadow, {host: this});
|
|
79
79
|
// clang-format on
|
|
80
80
|
}
|
|
81
81
|
|
|
@@ -14,7 +14,6 @@ import * as Persistence from '../../../models/persistence/persistence.js';
|
|
|
14
14
|
import * as Workspace from '../../../models/workspace/workspace.js';
|
|
15
15
|
import * as NetworkForward from '../../../panels/network/forward/forward.js';
|
|
16
16
|
import * as Buttons from '../../../ui/components/buttons/buttons.js';
|
|
17
|
-
import * as ComponentHelpers from '../../../ui/components/helpers/helpers.js';
|
|
18
17
|
import * as Input from '../../../ui/components/input/input.js';
|
|
19
18
|
import * as LegacyWrapper from '../../../ui/components/legacy_wrapper/legacy_wrapper.js';
|
|
20
19
|
import * as RenderCoordinator from '../../../ui/components/render_coordinator/render_coordinator.js';
|
|
@@ -401,25 +400,33 @@ export class RequestHeadersView extends LegacyWrapper.LegacyWrapper.WrappableCom
|
|
|
401
400
|
}
|
|
402
401
|
};
|
|
403
402
|
|
|
404
|
-
const addContextMenuListener = (el: Element): void => {
|
|
405
|
-
if (isShortened) {
|
|
406
|
-
el.addEventListener('contextmenu', onContextMenuOpen);
|
|
407
|
-
}
|
|
408
|
-
};
|
|
409
|
-
|
|
410
403
|
// Disabled until https://crbug.com/1079231 is fixed.
|
|
411
404
|
// clang-format off
|
|
412
405
|
return html`
|
|
413
|
-
<div
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
406
|
+
<div
|
|
407
|
+
class="row raw-headers-row"
|
|
408
|
+
@contextmenu=${(event: Event) => {
|
|
409
|
+
if (isShortened) {
|
|
410
|
+
onContextMenuOpen(event);
|
|
411
|
+
}
|
|
412
|
+
}}
|
|
413
|
+
>
|
|
414
|
+
<div class="raw-headers">
|
|
415
|
+
${isShortened ? trimmed.substring(0, RAW_HEADER_CUTOFF) : trimmed}
|
|
416
|
+
</div>
|
|
417
|
+
${isShortened
|
|
418
|
+
? html`
|
|
419
|
+
<devtools-button
|
|
420
|
+
.size=${Buttons.Button.Size.SMALL}
|
|
421
|
+
.variant=${Buttons.Button.Variant.OUTLINED}
|
|
422
|
+
@click=${showMore}
|
|
423
|
+
jslog=${VisualLogging.action('raw-headers-show-more').track({
|
|
424
|
+
click: true,
|
|
425
|
+
})}
|
|
426
|
+
>${i18nString(UIStrings.showMore)}</devtools-button
|
|
427
|
+
>
|
|
428
|
+
`
|
|
429
|
+
: Lit.nothing}
|
|
423
430
|
</div>
|
|
424
431
|
`;
|
|
425
432
|
// clang-format on
|
|
@@ -1072,7 +1072,7 @@ function renderParameters(
|
|
|
1072
1072
|
${hasNoKeys ?
|
|
1073
1073
|
html`<devtools-suggestion-input
|
|
1074
1074
|
data-paramId=${parameterId}
|
|
1075
|
-
isKey=${true}
|
|
1075
|
+
.isKey=${true}
|
|
1076
1076
|
.isCorrectInput=${live(parameter.isCorrectType)}
|
|
1077
1077
|
.options=${hasOptions ? input.computeDropdownValues(parameter) : []}
|
|
1078
1078
|
.autocomplete=${false}
|
|
@@ -1258,7 +1258,7 @@ export const DEFAULT_VIEW: View = (input, _output, target) => {
|
|
|
1258
1258
|
<div class=toolbar-spacer></div>
|
|
1259
1259
|
<devtools-button title=${Host.Platform.isMac() ? i18nString(UIStrings.sendCommandCmdEnter) : i18nString(UIStrings.sendCommandCtrlEnter)}
|
|
1260
1260
|
.iconName=${'send'}
|
|
1261
|
-
jslogContext
|
|
1261
|
+
jslogContext="protocol-monitor.send-command"
|
|
1262
1262
|
.variant=${Buttons.Button.Variant.PRIMARY_TOOLBAR}
|
|
1263
1263
|
@click=${input.onCommandSend}></devtools-button>
|
|
1264
1264
|
</devtools-toolbar>
|
|
@@ -16,7 +16,6 @@ import * as Emulation from '../../panels/emulation/emulation.js';
|
|
|
16
16
|
import * as Tracing from '../../services/tracing/tracing.js';
|
|
17
17
|
import * as Buttons from '../../ui/components/buttons/buttons.js';
|
|
18
18
|
import type * as Dialogs from '../../ui/components/dialogs/dialogs.js';
|
|
19
|
-
import * as ComponentHelpers from '../../ui/components/helpers/helpers.js';
|
|
20
19
|
import type * as Menus from '../../ui/components/menus/menus.js';
|
|
21
20
|
import * as UI from '../../ui/legacy/legacy.js';
|
|
22
21
|
import * as Lit from '../../ui/lit/lit.js';
|
|
@@ -33,7 +32,7 @@ import recorderControllerStyles from './recorderController.css.js';
|
|
|
33
32
|
import * as Events from './RecorderEvents.js';
|
|
34
33
|
|
|
35
34
|
// TODO(crbug.com/391381439): Fully migrate off of Constructable Stylesheets.
|
|
36
|
-
const {html, Decorators, LitElement} = Lit;
|
|
35
|
+
const {html, Decorators, Directives: {ref}, LitElement} = Lit;
|
|
37
36
|
const {customElement, state} = Decorators;
|
|
38
37
|
|
|
39
38
|
const UIStrings = {
|
|
@@ -1354,11 +1353,11 @@ export class RecorderController extends LitElement {
|
|
|
1354
1353
|
<devtools-button
|
|
1355
1354
|
id='origin'
|
|
1356
1355
|
@click=${this.#onExportRecording}
|
|
1357
|
-
|
|
1358
|
-
|
|
1359
|
-
this.#exportMenuButton =
|
|
1360
|
-
}
|
|
1361
|
-
)}
|
|
1356
|
+
${ref(el => {
|
|
1357
|
+
if (el instanceof HTMLElement) {
|
|
1358
|
+
this.#exportMenuButton = el as Buttons.Button.Button;
|
|
1359
|
+
}
|
|
1360
|
+
})}
|
|
1362
1361
|
.data=${
|
|
1363
1362
|
{
|
|
1364
1363
|
variant: Buttons.Button.Variant.TOOLBAR,
|
|
@@ -456,7 +456,7 @@ function viewFunction(input: ViewInput, _output: ViewOutput, target: HTMLElement
|
|
|
456
456
|
} data-section-index=${
|
|
457
457
|
input.sectionIndex
|
|
458
458
|
} class=${Lit.Directives.classMap(stepClasses)}>
|
|
459
|
-
<svg slot="icon" width="24" height="24"
|
|
459
|
+
<svg slot="icon" width="24" height="24" class="icon">
|
|
460
460
|
<circle class="circle-icon"/>
|
|
461
461
|
<g class="error-icon">
|
|
462
462
|
<path d="M1.5 1.5L6.5 6.5" stroke="white" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
|
|
@@ -104,23 +104,24 @@ export class RecordingPlayer extends Common.ObjectWrapper.ObjectWrapper<EventTyp
|
|
|
104
104
|
}
|
|
105
105
|
|
|
106
106
|
const rootChildTargetManager = rootTarget.model(SDK.ChildTargetManager.ChildTargetManager);
|
|
107
|
-
|
|
108
107
|
if (!rootChildTargetManager) {
|
|
109
108
|
throw new Error('Could not find the child target manager class for the root target');
|
|
110
109
|
}
|
|
111
110
|
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
111
|
+
const connection = rootTarget.router()?.connection;
|
|
112
|
+
if (!connection) {
|
|
113
|
+
throw new Error('Expected root target to have a router');
|
|
114
|
+
}
|
|
115
115
|
|
|
116
116
|
const mainTargetId = await childTargetManager.getParentTargetId();
|
|
117
117
|
const rootTargetId = await rootChildTargetManager.getParentTargetId();
|
|
118
|
-
|
|
118
|
+
const {sessionId} = await rootTarget.targetAgent().invoke_attachToTarget({targetId: rootTargetId, flatten: true});
|
|
119
119
|
const {page, browser, puppeteerConnection} =
|
|
120
120
|
await PuppeteerService.PuppeteerConnection.PuppeteerConnectionHelper.connectPuppeteerToConnectionViaTab(
|
|
121
121
|
{
|
|
122
122
|
connection,
|
|
123
|
-
|
|
123
|
+
targetId: rootTargetId,
|
|
124
|
+
sessionId,
|
|
124
125
|
isPageTargetCallback: isPageTarget,
|
|
125
126
|
},
|
|
126
127
|
);
|
|
@@ -107,7 +107,7 @@ function renderDataDisclaimer(): HTMLElement {
|
|
|
107
107
|
aria-details="gdp-profile-tooltip"
|
|
108
108
|
aria-describedby="gdp-profile-tooltip"
|
|
109
109
|
>${i18nString(UIStrings.relevantData)}</span>
|
|
110
|
-
<devtools-tooltip id="gdp-profile-tooltip" variant
|
|
110
|
+
<devtools-tooltip id="gdp-profile-tooltip" variant="rich">
|
|
111
111
|
<div class="tooltip-content" tabindex="0">${i18nString(UIStrings.tooltipDisclaimerText)}</div>
|
|
112
112
|
</devtools-tooltip>`;
|
|
113
113
|
|
|
@@ -662,9 +662,9 @@ export class UserAgentClientHintsForm extends HTMLElement {
|
|
|
662
662
|
change: true,
|
|
663
663
|
})}
|
|
664
664
|
/>
|
|
665
|
-
<devtools-icon name="bin"
|
|
665
|
+
<devtools-icon name="bin"
|
|
666
666
|
title=${i18nString(UIStrings.brandUserAgentDelete)}
|
|
667
|
-
class="delete-icon"
|
|
667
|
+
class="medium delete-icon"
|
|
668
668
|
tabindex="0"
|
|
669
669
|
role="button"
|
|
670
670
|
@click=${handleDeleteClick}
|
|
@@ -757,9 +757,9 @@ export class UserAgentClientHintsForm extends HTMLElement {
|
|
|
757
757
|
change: true,
|
|
758
758
|
})}
|
|
759
759
|
/>
|
|
760
|
-
<devtools-icon name="bin"
|
|
760
|
+
<devtools-icon name="bin"
|
|
761
761
|
title=${i18nString(UIStrings.brandFullVersionListDelete)}
|
|
762
|
-
class="delete-icon"
|
|
762
|
+
class="medium delete-icon"
|
|
763
763
|
tabindex="0"
|
|
764
764
|
role="button"
|
|
765
765
|
@click=${handleDeleteClick}
|
|
@@ -578,8 +578,8 @@ export const DEFAULT_VIEW: View = (input, _output, target) => {
|
|
|
578
578
|
?data-first-group=${groupIndex === 0}
|
|
579
579
|
?data-last-group=${groupIndex === input.breakpointGroups.length - 1}
|
|
580
580
|
role=group
|
|
581
|
-
aria-label
|
|
582
|
-
aria-description
|
|
581
|
+
aria-label=${group.name}
|
|
582
|
+
aria-description=${group.url}
|
|
583
583
|
?open=${live(group.expanded)}
|
|
584
584
|
@toggle=${input.groupToggleHandler.bind(undefined, group)}>
|
|
585
585
|
<summary @contextmenu=${input.groupContextMenuHandler.bind(undefined, group)}
|
|
@@ -596,7 +596,7 @@ export const DEFAULT_VIEW: View = (input, _output, target) => {
|
|
|
596
596
|
tabindex=-1
|
|
597
597
|
jslog=${VisualLogging.toggle('breakpoint-group').track({change: true,})}></input>
|
|
598
598
|
</span>
|
|
599
|
-
<span class='group-header-title' title
|
|
599
|
+
<span class='group-header-title' title=${group.url}>
|
|
600
600
|
${group.name}
|
|
601
601
|
<span class='group-header-differentiator'>
|
|
602
602
|
${input.urlToDifferentiatingPath.get(group.url)}
|
|
@@ -197,9 +197,10 @@ export class ScopeChainSidebarPane extends UI.Widget.VBox implements UI.ContextF
|
|
|
197
197
|
titleElement.createChild('div', 'scope-chain-sidebar-pane-section-subtitle').textContent = subtitle;
|
|
198
198
|
titleElement.createChild('div', 'scope-chain-sidebar-pane-section-title').textContent = title;
|
|
199
199
|
|
|
200
|
-
const
|
|
201
|
-
scope.object(),
|
|
202
|
-
|
|
200
|
+
const root = new ObjectUI.ObjectPropertiesSection.ObjectTree(
|
|
201
|
+
scope.object(), ObjectUI.ObjectPropertiesSection.ObjectPropertiesMode.ALL);
|
|
202
|
+
root.addExtraProperties(...scope.extraProperties());
|
|
203
|
+
const section = new ObjectUI.ObjectPropertiesSection.RootElement(root, this.linkifier, emptyPlaceholder);
|
|
203
204
|
section.title = titleElement;
|
|
204
205
|
section.listItemElement.classList.add('scope-chain-sidebar-pane-section');
|
|
205
206
|
section.listItemElement.setAttribute('aria-label', title);
|
|
@@ -290,7 +290,7 @@ export class WatchExpressionsSidebarPane extends UI.Widget.VBox implements
|
|
|
290
290
|
_event: Event, contextMenu: UI.ContextMenu.ContextMenu,
|
|
291
291
|
target: ObjectUI.ObjectPropertiesSection.ObjectPropertyTreeElement|UISourceCodeFrame): void {
|
|
292
292
|
if (target instanceof ObjectUI.ObjectPropertiesSection.ObjectPropertyTreeElement) {
|
|
293
|
-
if (!target.property.synthetic) {
|
|
293
|
+
if (!target.property.property.synthetic) {
|
|
294
294
|
contextMenu.debugSection().appendItem(
|
|
295
295
|
i18nString(UIStrings.addPropertyPathToWatch), () => this.focusAndAddExpressionToWatch(target.path()),
|
|
296
296
|
{jslogContext: 'add-property-path-to-watch'});
|
|
@@ -514,7 +514,8 @@ export class WatchExpression extends Common.ObjectWrapper.ObjectWrapper<EventTyp
|
|
|
514
514
|
|
|
515
515
|
if (!exceptionDetails && expressionValue && expressionValue.hasChildren && !expressionValue.customPreview()) {
|
|
516
516
|
headerElement.classList.add('watch-expression-object-header');
|
|
517
|
-
this.#treeElement = new ObjectUI.ObjectPropertiesSection.RootElement(
|
|
517
|
+
this.#treeElement = new ObjectUI.ObjectPropertiesSection.RootElement(
|
|
518
|
+
new ObjectUI.ObjectPropertiesSection.ObjectTree(expressionValue), this.linkifier);
|
|
518
519
|
this.expandController.watchSection(
|
|
519
520
|
(this.#expression as string), (this.#treeElement as ObjectUI.ObjectPropertiesSection.RootElement));
|
|
520
521
|
this.#treeElement.toggleOnClick = false;
|
|
@@ -456,12 +456,12 @@ export class TimelineFlameChartView extends Common.ObjectWrapper.eventMixin<Even
|
|
|
456
456
|
this.#overlays.addEventListener(Overlays.Overlays.EventReferenceClick.eventName, event => {
|
|
457
457
|
const eventRef = (event as Overlays.Overlays.EventReferenceClick);
|
|
458
458
|
const fromTraceEvent = selectionFromEvent(eventRef.event);
|
|
459
|
-
this.openSelectionDetailsView(fromTraceEvent);
|
|
459
|
+
void this.openSelectionDetailsView(fromTraceEvent);
|
|
460
460
|
});
|
|
461
461
|
|
|
462
462
|
// This is for the detail view of layout shift.
|
|
463
463
|
this.element.addEventListener(TimelineInsights.EventRef.EventReferenceClick.eventName, event => {
|
|
464
|
-
this.setSelectionAndReveal(selectionFromEvent(event.event));
|
|
464
|
+
void this.setSelectionAndReveal(selectionFromEvent(event.event));
|
|
465
465
|
});
|
|
466
466
|
|
|
467
467
|
this.element.addEventListener('keydown', this.#keydownHandler.bind(this));
|
|
@@ -1469,7 +1469,7 @@ export class TimelineFlameChartView extends Common.ObjectWrapper.eventMixin<Even
|
|
|
1469
1469
|
}
|
|
1470
1470
|
}
|
|
1471
1471
|
|
|
1472
|
-
setSelectionAndReveal(selection: TimelineSelection|null): void {
|
|
1472
|
+
async setSelectionAndReveal(selection: TimelineSelection|null): Promise<void> {
|
|
1473
1473
|
if (selection && this.#currentSelection && selectionsEqual(selection, this.#currentSelection)) {
|
|
1474
1474
|
return;
|
|
1475
1475
|
}
|
|
@@ -1507,8 +1507,7 @@ export class TimelineFlameChartView extends Common.ObjectWrapper.eventMixin<Even
|
|
|
1507
1507
|
this.networkFlameChart.setSelectedEntry(networkIndex);
|
|
1508
1508
|
|
|
1509
1509
|
if (this.detailsView) {
|
|
1510
|
-
|
|
1511
|
-
void this.detailsView.setSelection(selection);
|
|
1510
|
+
await this.detailsView.setSelection(selection);
|
|
1512
1511
|
}
|
|
1513
1512
|
|
|
1514
1513
|
// Create the entry selected overlay if the selection represents a trace event
|
|
@@ -1552,9 +1551,9 @@ export class TimelineFlameChartView extends Common.ObjectWrapper.eventMixin<Even
|
|
|
1552
1551
|
// Only opens the details view of a selection. This is used for Timing Markers. Timing markers replace
|
|
1553
1552
|
// their entry with a new UI. Because of that, their entries can no longer be "selected" in the timings track,
|
|
1554
1553
|
// so if clicked, we only open their details view.
|
|
1555
|
-
openSelectionDetailsView(selection: TimelineSelection|null): void {
|
|
1554
|
+
async openSelectionDetailsView(selection: TimelineSelection|null): Promise<void> {
|
|
1556
1555
|
if (this.detailsView) {
|
|
1557
|
-
|
|
1556
|
+
await this.detailsView.setSelection(selection);
|
|
1558
1557
|
}
|
|
1559
1558
|
}
|
|
1560
1559
|
|
|
@@ -1611,12 +1610,13 @@ export class TimelineFlameChartView extends Common.ObjectWrapper.eventMixin<Even
|
|
|
1611
1610
|
this.mainFlameChart.showAllGroups();
|
|
1612
1611
|
}
|
|
1613
1612
|
|
|
1614
|
-
private onAddEntryLabelAnnotation(
|
|
1613
|
+
private async onAddEntryLabelAnnotation(
|
|
1615
1614
|
dataProvider: TimelineFlameChartDataProvider|TimelineFlameChartNetworkDataProvider,
|
|
1616
|
-
event: Common.EventTarget.EventTargetEvent<{entryIndex: number, withLinkCreationButton: boolean}>):
|
|
1615
|
+
event: Common.EventTarget.EventTargetEvent<{entryIndex: number, withLinkCreationButton: boolean}>):
|
|
1616
|
+
Promise<void> {
|
|
1617
1617
|
const selection = dataProvider.createSelection(event.data.entryIndex);
|
|
1618
1618
|
if (selectionIsEvent(selection)) {
|
|
1619
|
-
this.setSelectionAndReveal(selection);
|
|
1619
|
+
await this.setSelectionAndReveal(selection);
|
|
1620
1620
|
ModificationsManager.activeManager()?.createAnnotation(
|
|
1621
1621
|
{
|
|
1622
1622
|
type: 'ENTRY_LABEL',
|
|
@@ -2130,7 +2130,7 @@ export class TimelinePanel extends Common.ObjectWrapper.eventMixin<EventTypes, t
|
|
|
2130
2130
|
this.flameChart.setModel(parsedTrace, this.#eventToRelatedInsights);
|
|
2131
2131
|
this.flameChart.resizeToPreferredHeights();
|
|
2132
2132
|
// Reset the visual selection as we've just swapped to a new trace.
|
|
2133
|
-
this.flameChart.setSelectionAndReveal(null);
|
|
2133
|
+
void this.flameChart.setSelectionAndReveal(null);
|
|
2134
2134
|
this.#sideBar.setParsedTrace(parsedTrace);
|
|
2135
2135
|
|
|
2136
2136
|
this.#searchableView.showWidget();
|
|
@@ -2964,7 +2964,7 @@ export class TimelinePanel extends Common.ObjectWrapper.eventMixin<EventTypes, t
|
|
|
2964
2964
|
select(selection: TimelineSelection|null): void {
|
|
2965
2965
|
this.#announceSelectionToAria(this.selection, selection);
|
|
2966
2966
|
this.selection = selection;
|
|
2967
|
-
this.flameChart.setSelectionAndReveal(selection);
|
|
2967
|
+
void this.flameChart.setSelectionAndReveal(selection);
|
|
2968
2968
|
}
|
|
2969
2969
|
|
|
2970
2970
|
selectEntryAtTime(events: Trace.Types.Events.Event[]|null, time: number): void {
|
|
@@ -3044,7 +3044,7 @@ export class TimelinePanel extends Common.ObjectWrapper.eventMixin<EventTypes, t
|
|
|
3044
3044
|
|
|
3045
3045
|
#openSummaryTab(): void {
|
|
3046
3046
|
// If we have a selection, we should remove it.
|
|
3047
|
-
this.flameChart.setSelectionAndReveal(null);
|
|
3047
|
+
void this.flameChart.setSelectionAndReveal(null);
|
|
3048
3048
|
this.flameChart.selectDetailsViewTab(Tab.Details, null);
|
|
3049
3049
|
}
|
|
3050
3050
|
|