Simplify logic for webview resource uris (#123740)

* Simplify logic for webview resource uris

This change attempts to simplify the logic around webview resource uris by doing the following:

- Hard code the resource origin. We always will be hitting a service worker for these paths so they don't need to be dynamic (although in the future we may want to pull them from `product.json`)

    This lets us remove these properties from the environment service

- Move remote handling from the resource loader in `asWebviewUri`.

- Remove the handling of http and https paths from the resource loader.

    I don't think these cases can be hit any longer (although I need to confirm this with more testing for the web case). Instead I added a check to `asWebviewUri` so that we return the original uri if a http(s) uri is passed in

* Restore normalizeResourcePath

We still need to convert between a remote uri and one that our remote file system can read

* Fix test

* Restore passing in remote on extension side

* Remove only
This commit is contained in:
Matt Bierner
2021-05-19 17:26:51 -07:00
committed by GitHub
parent 93be0a6fa0
commit 1ddc623e58
21 changed files with 131 additions and 194 deletions

View File

@@ -12,7 +12,7 @@ import { ILogService } from 'vs/platform/log/common/log';
import { IExtHostApiDeprecationService } from 'vs/workbench/api/common/extHostApiDeprecationService';
import { serializeWebviewMessage, deserializeWebviewMessage } from 'vs/workbench/api/common/extHostWebviewMessaging';
import { IExtHostWorkspace } from 'vs/workbench/api/common/extHostWorkspace';
import { asWebviewUri, WebviewInitData } from 'vs/workbench/api/common/shared/webview';
import { asWebviewUri, webviewGenericCspSource, WebviewInitData } from 'vs/workbench/api/common/shared/webview';
import type * as vscode from 'vscode';
import * as extHostProtocol from './extHost.protocol';
@@ -69,12 +69,11 @@ export class ExtHostWebview implements vscode.Webview {
public asWebviewUri(resource: vscode.Uri): vscode.Uri {
this.#hasCalledAsWebviewUri = true;
return asWebviewUri(this.#initData, this.#handle, resource);
return asWebviewUri(this.#handle, resource, this.#initData.remote.authority);
}
public get cspSource(): string {
return this.#initData.webviewCspSource
.replace('{{uuid}}', this.#handle);
return webviewGenericCspSource;
}
public get html(): string {