in src/screencastPanel.ts [30:72]
private constructor(
panel: vscode.WebviewPanel,
context: vscode.ExtensionContext,
telemetryReporter: TelemetryReporter,
targetUrl: string,
isJsDebugProxiedCDPConnection: boolean) {
this.panel = panel;
this.context = context;
this.targetUrl = targetUrl;
this.extensionPath = this.context.extensionPath;
this.telemetryReporter = telemetryReporter;
this.screencastStartTime = Date.now();
if (isJsDebugProxiedCDPConnection) {
this.panelSocket = new JsDebugProxyPanelSocket(this.targetUrl, (e, msg) => this.postToWebview(e, msg));
} else {
this.panelSocket = new PanelSocket(this.targetUrl, (e, msg) => this.postToWebview(e, msg));
}
this.panelSocket.on('close', () => this.onSocketClose());
// Handle closing
this.panel.onDidDispose(() => {
this.dispose();
this.panelSocket.dispose();
this.recordEnumeratedHistogram('DevTools.ScreencastToggle', 0);
const sessionDuration = Date.now() - this.screencastStartTime;
this.recordPerformanceHistogram('DevTools.ScreencastDuration', sessionDuration);
}, this);
// Handle view change
this.panel.onDidChangeViewState(_e => {
if (this.panel.visible) {
this.update();
}
}, this);
// Handle messages from the webview
this.panel.webview.onDidReceiveMessage(message => {
this.panelSocket.onMessageFromWebview(message);
}, this);
this.recordEnumeratedHistogram('DevTools.ScreencastToggle', 1);
}