Add serializer for simple browser

Fixes #119057
This commit is contained in:
Matt Bierner
2021-10-07 16:49:11 -07:00
parent f542a0e83a
commit 62d631a165
5 changed files with 53 additions and 15 deletions

View File

@@ -24,14 +24,12 @@ export class SimpleBrowserView extends Disposable {
private readonly _onDidDispose = this._register(new vscode.EventEmitter<void>());
public readonly onDispose = this._onDidDispose.event;
constructor(
private readonly extensionUri: vscode.Uri,
public static create(
extensionUri: vscode.Uri,
url: string,
showOptions?: ShowOptions
) {
super();
this._webviewPanel = this._register(vscode.window.createWebviewPanel(SimpleBrowserView.viewType, SimpleBrowserView.title, {
): SimpleBrowserView {
const webview = vscode.window.createWebviewPanel(SimpleBrowserView.viewType, SimpleBrowserView.title, {
viewColumn: showOptions?.viewColumn ?? vscode.ViewColumn.Active,
preserveFocus: showOptions?.preserveFocus
}, {
@@ -41,7 +39,26 @@ export class SimpleBrowserView extends Disposable {
localResourceRoots: [
vscode.Uri.joinPath(extensionUri, 'media')
]
}));
});
return new SimpleBrowserView(extensionUri, url, webview);
}
public static restore(
extensionUri: vscode.Uri,
url: string,
webview: vscode.WebviewPanel,
): SimpleBrowserView {
return new SimpleBrowserView(extensionUri, url, webview);
}
private constructor(
private readonly extensionUri: vscode.Uri,
url: string,
webviewPanel: vscode.WebviewPanel,
) {
super();
this._webviewPanel = this._register(webviewPanel);
this._register(this._webviewPanel.webview.onDidReceiveMessage(e => {
switch (e.type) {