Skip to content

Commit 72fe124

Browse files
committed
Fix loading resources in webviews
Fixes #901.
1 parent a48c2fb commit 72fe124

File tree

1 file changed

+27
-8
lines changed

1 file changed

+27
-8
lines changed

scripts/vscode.patch

Lines changed: 27 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1033,25 +1033,44 @@ index 0d2d53003b..03489411bb 100644
10331033
group: '5_update',
10341034
command: {
10351035
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
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');
10551074
diff --git a/src/vs/workbench/services/environment/browser/environmentService.ts b/src/vs/workbench/services/environment/browser/environmentService.ts
10561075
index 73e8b7c1d1..653d88e4f4 100644
10571076
--- a/src/vs/workbench/services/environment/browser/environmentService.ts

0 commit comments

Comments
 (0)