mirror of
https://github.com/Microsoft/vscode
synced 2024-09-19 18:48:00 +00:00
Extract InternalWebviewViewType
This commit is contained in:
parent
48195455a1
commit
01dcd28add
|
@ -59,6 +59,20 @@ class WebviewHandleStore {
|
|||
}
|
||||
}
|
||||
|
||||
class InternalWebviewViewType {
|
||||
private static prefix = 'mainThreadWebview-';
|
||||
|
||||
public static fromExternal(viewType: string): string {
|
||||
return InternalWebviewViewType.prefix + viewType;
|
||||
}
|
||||
|
||||
public static toExternal(viewType: string): string | undefined {
|
||||
return startsWith(viewType, InternalWebviewViewType.prefix)
|
||||
? viewType.substr(InternalWebviewViewType.prefix.length)
|
||||
: undefined;
|
||||
}
|
||||
}
|
||||
|
||||
@extHostNamedCustomer(MainContext.MainThreadWebviews)
|
||||
export class MainThreadWebviews extends Disposable implements MainThreadWebviewsShape {
|
||||
|
||||
|
@ -100,7 +114,7 @@ export class MainThreadWebviews extends Disposable implements MainThreadWebviews
|
|||
return false;
|
||||
}
|
||||
|
||||
const viewType = this.fromInternalWebviewViewType(webview.viewType);
|
||||
const viewType = InternalWebviewViewType.toExternal(webview.viewType);
|
||||
if (typeof viewType === 'string') {
|
||||
extensionService.activateByEvent(`onWebviewPanel:${viewType}`);
|
||||
}
|
||||
|
@ -125,7 +139,7 @@ export class MainThreadWebviews extends Disposable implements MainThreadWebviews
|
|||
mainThreadShowOptions.group = viewColumnToEditorGroup(this._editorGroupService, showOptions.viewColumn);
|
||||
}
|
||||
|
||||
const webview = this._webviewWorkbenchService.createWebview(handle, this.getInternalWebviewViewType(viewType), title, mainThreadShowOptions, reviveWebviewOptions(options), {
|
||||
const webview = this._webviewWorkbenchService.createWebview(handle, InternalWebviewViewType.fromExternal(viewType), title, mainThreadShowOptions, reviveWebviewOptions(options), {
|
||||
location: URI.revive(extensionLocation),
|
||||
id: extensionId
|
||||
});
|
||||
|
@ -198,10 +212,10 @@ export class MainThreadWebviews extends Disposable implements MainThreadWebviews
|
|||
|
||||
this._revivers.set(viewType, this._webviewWorkbenchService.registerResolver({
|
||||
canResolve: (webviewEditorInput) => {
|
||||
return webviewEditorInput.viewType === this.getInternalWebviewViewType(viewType);
|
||||
return webviewEditorInput.viewType === InternalWebviewViewType.fromExternal(viewType);
|
||||
},
|
||||
resolveWebview: async (webviewEditorInput): Promise<void> => {
|
||||
const viewType = this.fromInternalWebviewViewType(webviewEditorInput.viewType);
|
||||
const viewType = InternalWebviewViewType.toExternal(webviewEditorInput.viewType);
|
||||
if (!viewType) {
|
||||
webviewEditorInput.webview.html = MainThreadWebviews.getDeserializationFailedContents(webviewEditorInput.viewType);
|
||||
return;
|
||||
|
@ -291,17 +305,6 @@ export class MainThreadWebviews extends Disposable implements MainThreadWebviews
|
|||
this._editorProviders.delete(viewType);
|
||||
}
|
||||
|
||||
private getInternalWebviewViewType(viewType: string): string {
|
||||
return `mainThreadWebview-${viewType}`;
|
||||
}
|
||||
|
||||
private fromInternalWebviewViewType(viewType: string): string | undefined {
|
||||
if (!startsWith(viewType, 'mainThreadWebview-')) {
|
||||
return undefined;
|
||||
}
|
||||
return viewType.replace(/^mainThreadWebview-/, '');
|
||||
}
|
||||
|
||||
private hookupWebviewEventDelegate(handle: WebviewPanelHandle, input: WebviewInput) {
|
||||
input.webview.onDidClickLink((uri: URI) => this.onDidClickLink(handle, uri));
|
||||
input.webview.onMessage((message: any) => this._proxy.$onMessage(handle, message));
|
||||
|
|
Loading…
Reference in a new issue