Merge vscode source through 1.62 release (#19981)

* Build breaks 1

* Build breaks

* Build breaks

* Build breaks

* More build breaks

* Build breaks (#2512)

* Runtime breaks

* Build breaks

* Fix dialog location break

* Update typescript

* Fix ASAR break issue

* Unit test breaks

* Update distro

* Fix breaks in ADO builds (#2513)

* Bump to node 16

* Fix hygiene errors

* Bump distro

* Remove reference to node type

* Delete vscode specific extension

* Bump to node 16 in CI yaml

* Skip integration tests in CI builds (while fixing)

* yarn.lock update

* Bump moment dependency in remote yarn

* Fix drop-down chevron style

* Bump to node 16

* Remove playwrite from ci.yaml

* Skip building build scripts in hygine check
This commit is contained in:
Karl Burtram
2022-07-11 14:09:32 -07:00
committed by GitHub
parent fa0fcef303
commit 26455e9113
1876 changed files with 72050 additions and 37997 deletions

View File

@@ -6,6 +6,7 @@
import * as vscode from 'vscode';
import * as nls from 'vscode-nls';
import { SimpleBrowserManager } from './simpleBrowserManager';
import { SimpleBrowserView } from './simpleBrowserView';
declare class URL {
constructor(input: string, base?: string | URL);
@@ -38,6 +39,12 @@ export function activate(context: vscode.ExtensionContext) {
const manager = new SimpleBrowserManager(context.extensionUri);
context.subscriptions.push(manager);
context.subscriptions.push(vscode.window.registerWebviewPanelSerializer(SimpleBrowserView.viewType, {
deserializeWebviewPanel: async (panel, state) => {
manager.restore(panel, state);
}
}));
context.subscriptions.push(vscode.commands.registerCommand(showCommand, async (url?: string) => {
if (!url) {
url = await vscode.window.showInputBox({

View File

@@ -23,16 +23,27 @@ export class SimpleBrowserManager {
if (this._activeView) {
this._activeView.show(url, options);
} else {
const view = new SimpleBrowserView(this.extensionUri, url, options);
view.onDispose(() => {
if (this._activeView === view) {
this._activeView = undefined;
}
});
const view = SimpleBrowserView.create(this.extensionUri, url, options);
this.registerWebviewListeners(view);
this._activeView = view;
}
}
public restore(panel: vscode.WebviewPanel, state: any): void {
const url = state?.url ?? '';
const view = SimpleBrowserView.restore(this.extensionUri, url, panel);
this.registerWebviewListeners(view);
return;
}
private registerWebviewListeners(view: SimpleBrowserView) {
view.onDispose(() => {
if (this._activeView === view) {
this._activeView = undefined;
}
});
}
}

View File

@@ -24,23 +24,41 @@ 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
}, {
enableScripts: true,
enableForms: true,
retainContextWhenHidden: true,
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) {