mirror of
https://github.com/microsoft/vscode.git
synced 2026-04-24 18:49:00 +01:00
Adopt DisposableMap in mainThreadWebviewView (#164091)
This commit is contained in:
@@ -5,7 +5,7 @@
|
||||
|
||||
import { CancellationToken } from 'vs/base/common/cancellation';
|
||||
import { onUnexpectedError } from 'vs/base/common/errors';
|
||||
import { Disposable, dispose, IDisposable } from 'vs/base/common/lifecycle';
|
||||
import { Disposable, DisposableMap } from 'vs/base/common/lifecycle';
|
||||
import { MainThreadWebviews, reviveWebviewExtension } from 'vs/workbench/api/browser/mainThreadWebviews';
|
||||
import * as extHostProtocol from 'vs/workbench/api/common/extHost.protocol';
|
||||
import { IViewBadge } from 'vs/workbench/common/views';
|
||||
@@ -17,8 +17,8 @@ export class MainThreadWebviewsViews extends Disposable implements extHostProtoc
|
||||
|
||||
private readonly _proxy: extHostProtocol.ExtHostWebviewViewsShape;
|
||||
|
||||
private readonly _webviewViews = new Map<string, WebviewView>();
|
||||
private readonly _webviewViewProviders = new Map<string, IDisposable>();
|
||||
private readonly _webviewViews = this._register(new DisposableMap<string, WebviewView>());
|
||||
private readonly _webviewViewProviders = this._register(new DisposableMap<string>());
|
||||
|
||||
constructor(
|
||||
context: IExtHostContext,
|
||||
@@ -30,15 +30,6 @@ export class MainThreadWebviewsViews extends Disposable implements extHostProtoc
|
||||
this._proxy = context.getProxy(extHostProtocol.ExtHostContext.ExtHostWebviewViews);
|
||||
}
|
||||
|
||||
override dispose() {
|
||||
super.dispose();
|
||||
|
||||
dispose(this._webviewViewProviders.values());
|
||||
this._webviewViewProviders.clear();
|
||||
|
||||
dispose(this._webviewViews.values());
|
||||
}
|
||||
|
||||
public $setWebviewViewTitle(handle: extHostProtocol.WebviewHandle, value: string | undefined): void {
|
||||
const webviewView = this.getWebviewView(handle);
|
||||
webviewView.title = value;
|
||||
@@ -98,7 +89,7 @@ export class MainThreadWebviewsViews extends Disposable implements extHostProtoc
|
||||
|
||||
webviewView.onDispose(() => {
|
||||
this._proxy.$disposeWebviewView(handle);
|
||||
this._webviewViews.delete(handle);
|
||||
this._webviewViews.deleteAndDispose(handle);
|
||||
});
|
||||
|
||||
try {
|
||||
@@ -114,13 +105,11 @@ export class MainThreadWebviewsViews extends Disposable implements extHostProtoc
|
||||
}
|
||||
|
||||
public $unregisterWebviewViewProvider(viewType: string): void {
|
||||
const provider = this._webviewViewProviders.get(viewType);
|
||||
if (!provider) {
|
||||
if (!this._webviewViewProviders.has(viewType)) {
|
||||
throw new Error(`No view provider for ${viewType} registered`);
|
||||
}
|
||||
|
||||
provider.dispose();
|
||||
this._webviewViewProviders.delete(viewType);
|
||||
this._webviewViewProviders.deleteAndDispose(viewType);
|
||||
}
|
||||
|
||||
private getWebviewView(handle: string): WebviewView {
|
||||
|
||||
Reference in New Issue
Block a user