Skip to content

Commit 593ee44

Browse files
committed
Clean up registered custom editor providers when ext host crashes
Fixes microsoft#99053
1 parent aa01066 commit 593ee44

1 file changed

Lines changed: 10 additions & 3 deletions

File tree

src/vs/workbench/api/browser/mainThreadWebview.ts

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -185,6 +185,15 @@ export class MainThreadWebviews extends Disposable implements extHostProtocol.Ma
185185
});
186186
}
187187

188+
dispose() {
189+
super.dispose();
190+
191+
for (const disposable of this._editorProviders.values()) {
192+
disposable.dispose();
193+
}
194+
this._editorProviders.clear();
195+
}
196+
188197
public $createWebviewPanel(
189198
extensionData: extHostProtocol.WebviewExtensionDescription,
190199
handle: extHostProtocol.WebviewPanelHandle,
@@ -320,7 +329,7 @@ export class MainThreadWebviews extends Disposable implements extHostProtocol.Ma
320329
options: modes.IWebviewPanelOptions,
321330
capabilities: extHostProtocol.CustomTextEditorCapabilities,
322331
supportsMultipleEditorsPerDocument: boolean,
323-
): DisposableStore {
332+
): void {
324333
if (this._editorProviders.has(viewType)) {
325334
throw new Error(`Provider for ${viewType} already registered`);
326335
}
@@ -396,8 +405,6 @@ export class MainThreadWebviews extends Disposable implements extHostProtocol.Ma
396405
}));
397406

398407
this._editorProviders.set(viewType, disposables);
399-
400-
return disposables;
401408
}
402409

403410
public $unregisterEditorProvider(viewType: string): void {

0 commit comments

Comments
 (0)