@@ -1033,25 +1033,44 @@ index 0d2d53003b..03489411bb 100644
10331033 group: '5_update',
10341034 command: {
10351035diff --git a/src/vs/workbench/contrib/webview/browser/pre/index.html b/src/vs/workbench/contrib/webview/browser/pre/index.html
1036- index ac53ce590e..2ce2b9d9f2 100644
1036+ index ac53ce590e..69dbbd859c 100644
10371037--- a/src/vs/workbench/contrib/webview/browser/pre/index.html
10381038+++ b/src/vs/workbench/contrib/webview/browser/pre/index.html
10391039@@ -4,7 +4,7 @@
10401040 <head>
10411041 <meta charset="UTF-8">
10421042 <meta http-equiv="Content-Security-Policy"
10431043- content="default-src 'none'; script-src 'self'; frame-src 'self'; style-src 'unsafe-inline'; worker-src 'self';" />
1044- + content="default-src 'none'; script-src 'self'; frame-src 'self'; style-src 'self' 'unsafe-inline'; worker-src 'self'; img-src https: data:;" />
1044+ + content="default-src 'none'; script-src 'self' 'unsafe-inline' ; frame-src 'self'; style-src 'self' 'unsafe-inline'; worker-src 'self'; img-src https: data:; font-src 'self' ;" />
10451045
10461046 <meta name="viewport" content="width=device-width, initial-scale=1.0">
10471047 <meta http-equiv="X-UA-Compatible" content="ie=edge">
1048- @@ -16,4 +16,4 @@
1049- <script src="host.js"></script>
1050- </body>
1048+ diff --git a/src/vs/workbench/contrib/webview/browser/pre/main.js b/src/vs/workbench/contrib/webview/browser/pre/main.js
1049+ index 63585fc25c..f49b63e024 100644
1050+ --- a/src/vs/workbench/contrib/webview/browser/pre/main.js
1051+ +++ b/src/vs/workbench/contrib/webview/browser/pre/main.js
1052+ @@ -256,7 +256,7 @@
1053+ */
1054+ function toContentHtml(data) {
1055+ const options = data.options;
1056+ - const text = data.contents;
1057+ + const text = data.contents.replace(/vscode-resource:/g, "'self'");
1058+ const newDocument = new DOMParser().parseFromString(text, 'text/html');
1059+
1060+ newDocument.querySelectorAll('a').forEach(a => {
1061+ @@ -265,6 +265,12 @@
1062+ }
1063+ });
10511064
1052- - </html>
1053- \ No newline at end of file
1054- + </html>
1065+ + // REVIEW: Why is it required for scripts to be loaded at the end?
1066+ + // Without this the document in the iframe appears to simply truncate.
1067+ + newDocument.querySelectorAll('script').forEach(script => {
1068+ + newDocument.body.appendChild(script);
1069+ + });
1070+ +
1071+ // apply default script
1072+ if (options.allowScripts) {
1073+ const defaultScript = newDocument.createElement('script');
10551074diff --git a/src/vs/workbench/services/environment/browser/environmentService.ts b/src/vs/workbench/services/environment/browser/environmentService.ts
10561075index 73e8b7c1d1..653d88e4f4 100644
10571076--- a/src/vs/workbench/services/environment/browser/environmentService.ts
0 commit comments