Set extension on webview views

Fixes #108689

This fixes loading resources in webview views on web
This commit is contained in:
Matt Bierner
2020-10-16 17:04:52 -07:00
parent dd124a5cae
commit c13678f258
5 changed files with 23 additions and 7 deletions

View File

@@ -6,7 +6,7 @@
import { CancellationToken } from 'vs/base/common/cancellation';
import { onUnexpectedError } from 'vs/base/common/errors';
import { Disposable, IDisposable } from 'vs/base/common/lifecycle';
import { MainThreadWebviews } from 'vs/workbench/api/browser/mainThreadWebviews';
import { MainThreadWebviews, reviveWebviewExtension } from 'vs/workbench/api/browser/mainThreadWebviews';
import * as extHostProtocol from 'vs/workbench/api/common/extHost.protocol';
import { IWebviewViewService, WebviewView } from 'vs/workbench/contrib/webviewView/browser/webviewViewService';
@@ -43,11 +43,17 @@ export class MainThreadWebviewsViews extends Disposable implements extHostProtoc
webviewView.show(preserveFocus);
}
public $registerWebviewViewProvider(viewType: string, options?: { retainContextWhenHidden?: boolean }): void {
public $registerWebviewViewProvider(
extensionData: extHostProtocol.WebviewExtensionDescription,
viewType: string,
options?: { retainContextWhenHidden?: boolean }
): void {
if (this._webviewViewProviders.has(viewType)) {
throw new Error(`View provider for ${viewType} already registered`);
}
const extension = reviveWebviewExtension(extensionData);
this._webviewViewService.register(viewType, {
resolve: async (webviewView: WebviewView, cancellation: CancellationToken) => {
const handle = webviewView.webview.id;
@@ -64,6 +70,8 @@ export class MainThreadWebviewsViews extends Disposable implements extHostProtoc
}
}
webviewView.webview.extension = extension;
if (options) {
webviewView.webview.options = options;
}