@@ -1033,25 +1033,44 @@ index 0d2d53003b..03489411bb 100644
1033
1033
group: '5_update',
1034
1034
command: {
1035
1035
diff --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
1037
1037
--- a/src/vs/workbench/contrib/webview/browser/pre/index.html
1038
1038
+++ b/src/vs/workbench/contrib/webview/browser/pre/index.html
1039
1039
@@ -4,7 +4,7 @@
1040
1040
<head>
1041
1041
<meta charset="UTF-8">
1042
1042
<meta http-equiv="Content-Security-Policy"
1043
1043
- 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' ;" />
1045
1045
1046
1046
<meta name="viewport" content="width=device-width, initial-scale=1.0">
1047
1047
<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
+ });
1051
1064
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');
1055
1074
diff --git a/src/vs/workbench/services/environment/browser/environmentService.ts b/src/vs/workbench/services/environment/browser/environmentService.ts
1056
1075
index 73e8b7c1d1..653d88e4f4 100644
1057
1076
--- a/src/vs/workbench/services/environment/browser/environmentService.ts
0 commit comments