Allow registerWebviewEditorProvider to pass in a set of initial webview options

Fixes #82128
This commit is contained in:
Matt Bierner
2019-10-16 11:45:28 -07:00
parent 881e92645e
commit 721886ce10
7 changed files with 23 additions and 11 deletions

View File

@@ -530,9 +530,9 @@ export function createApiFactoryAndRegisterActors(accessor: ServicesAccessor): I
registerWebviewPanelSerializer: (viewType: string, serializer: vscode.WebviewPanelSerializer) => {
return extHostWebviews.registerWebviewPanelSerializer(extension, viewType, serializer);
},
registerWebviewEditorProvider: (viewType: string, provider: vscode.WebviewEditorProvider) => {
registerWebviewEditorProvider: (viewType: string, provider: vscode.WebviewEditorProvider, options?: vscode.WebviewPanelOptions) => {
checkProposedApiEnabled(extension);
return extHostWebviews.registerWebviewEditorProvider(extension, viewType, provider);
return extHostWebviews.registerWebviewEditorProvider(extension, viewType, provider, options);
},
registerDecorationProvider(provider: vscode.DecorationProvider) {
checkProposedApiEnabled(extension);

View File

@@ -556,7 +556,7 @@ export interface MainThreadWebviewsShape extends IDisposable {
$registerSerializer(viewType: string): void;
$unregisterSerializer(viewType: string): void;
$registerEditorProvider(viewType: string, extensionId: ExtensionIdentifier, extensionLocation: UriComponents): void;
$registerEditorProvider(viewType: string, extensionId: ExtensionIdentifier, extensionLocation: UriComponents, options: modes.IWebviewPanelOptions): void;
$unregisterEditorProvider(viewType: string): void;
}

View File

@@ -318,13 +318,14 @@ export class ExtHostWebviews implements ExtHostWebviewsShape {
extension: IExtensionDescription,
viewType: string,
provider: vscode.WebviewEditorProvider,
options?: vscode.WebviewPanelOptions,
): vscode.Disposable {
if (this._editorProviders.has(viewType)) {
throw new Error(`Editor provider for '${viewType}' already registered`);
}
this._editorProviders.set(viewType, { extension, provider, });
this._proxy.$registerEditorProvider(viewType, extension.identifier, extension.extensionLocation);
this._proxy.$registerEditorProvider(viewType, extension.identifier, extension.extensionLocation, options || {});
return new Disposable(() => {
this._editorProviders.delete(viewType);