Adopt DisposableMap in mainThreadWebviewView (#164091)

This commit is contained in:
Matt Bierner
2022-10-20 04:26:02 -07:00
committed by GitHub
parent 10bbedca57
commit c275f7a6d8

View File

@@ -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 {