mirror of
https://github.com/ckaczor/azuredatastudio.git
synced 2026-02-16 10:58:30 -05:00
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:
@@ -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({
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user