Skip to content

Commit 21b7409

Browse files
authored
Merge pull request #789 from CodinGame/workaround-firefox-bug
Workaround firefox bug
2 parents 483c6e8 + f5b1dee commit 21b7409

File tree

1 file changed

+118
-0
lines changed

1 file changed

+118
-0
lines changed
Lines changed: 118 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,118 @@
1+
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
2+
From: =?UTF-8?q?Lo=C3=AFc=20Mangeonjean?= <loic@coderpad.io>
3+
Date: Fri, 10 Apr 2026 19:19:44 +0200
4+
Subject: [PATCH] fix: workaround firefox bug
5+
6+
https://bugzilla.mozilla.org/show_bug.cgi?id=2029029
7+
---
8+
.../src/preview/documentRenderer.ts | 4 ++--
9+
extensions/media-preview/src/audioPreview.ts | 2 +-
10+
extensions/media-preview/src/imagePreview/index.ts | 2 +-
11+
extensions/media-preview/src/videoPreview.ts | 2 +-
12+
extensions/mermaid-chat-features/src/chatOutputRenderer.ts | 2 +-
13+
extensions/mermaid-chat-features/src/editorManager.ts | 2 +-
14+
extensions/simple-browser/src/simpleBrowserView.ts | 4 ++--
15+
7 files changed, 9 insertions(+), 9 deletions(-)
16+
17+
diff --git a/extensions/markdown-language-features/src/preview/documentRenderer.ts b/extensions/markdown-language-features/src/preview/documentRenderer.ts
18+
index f96fce9b745..872b737ebb2 100644
19+
--- a/extensions/markdown-language-features/src/preview/documentRenderer.ts
20+
+++ b/extensions/markdown-language-features/src/preview/documentRenderer.ts
21+
@@ -186,7 +186,7 @@ export class MdDocumentRenderer {
22+
}
23+
const out: string[] = [];
24+
for (const style of config.styles) {
25+
- out.push(`<link rel="stylesheet" class="code-user-style" data-source="${escapeAttribute(style)}" href="${escapeAttribute(this.#fixHref(resourceProvider, resource, style))}" type="text/css" media="screen">`);
26+
+ out.push(`<link rel="stylesheet" class="code-user-style" data-source="${escapeAttribute(style)}" href="${escapeAttribute(this.#fixHref(resourceProvider, resource, style))}" type="text/css" media="screen" crossorigin="anonymous">`);
27+
}
28+
return out.join('\n');
29+
}
30+
@@ -219,7 +219,7 @@ export class MdDocumentRenderer {
31+
#getStyles(resourceProvider: WebviewResourceProvider, resource: vscode.Uri, config: MarkdownPreviewConfiguration, imageInfo: readonly ImageInfo[]): string {
32+
const baseStyles: string[] = [];
33+
for (const resource of this.#contributionProvider.contributions.previewStyles) {
34+
- baseStyles.push(`<link rel="stylesheet" type="text/css" href="${escapeAttribute(resourceProvider.asWebviewUri(resource))}">`);
35+
+ baseStyles.push(`<link rel="stylesheet" type="text/css" href="${escapeAttribute(resourceProvider.asWebviewUri(resource))}" crossorigin="anonymous">`);
36+
}
37+
38+
return `${baseStyles.join('\n')}
39+
diff --git a/extensions/media-preview/src/audioPreview.ts b/extensions/media-preview/src/audioPreview.ts
40+
index 282d579b380..e4119b60297 100644
41+
--- a/extensions/media-preview/src/audioPreview.ts
42+
+++ b/extensions/media-preview/src/audioPreview.ts
43+
@@ -72,7 +72,7 @@ class AudioPreview extends MediaPreview {
44+
45+
<title>Audio Preview</title>
46+
47+
- <link rel="stylesheet" href="${escapeAttribute(this.extensionResource('media', 'audioPreview.css'))}" type="text/css" media="screen" nonce="${nonce}">
48+
+ <link rel="stylesheet" href="${escapeAttribute(this.extensionResource('media', 'audioPreview.css'))}" type="text/css" media="screen" nonce="${nonce}" crossorigin="anonymous">
49+
50+
<meta http-equiv="Content-Security-Policy" content="default-src 'none'; img-src data: ${cspSource}; media-src ${cspSource}; script-src 'nonce-${nonce}'; style-src ${cspSource} 'nonce-${nonce}';">
51+
<meta id="settings" data-settings="${escapeAttribute(JSON.stringify(settings))}">
52+
diff --git a/extensions/media-preview/src/imagePreview/index.ts b/extensions/media-preview/src/imagePreview/index.ts
53+
index 6c2c8a73f66..60cdc96f680 100644
54+
--- a/extensions/media-preview/src/imagePreview/index.ts
55+
+++ b/extensions/media-preview/src/imagePreview/index.ts
56+
@@ -199,7 +199,7 @@ class ImagePreview extends MediaPreview {
57+
58+
<title>Image Preview</title>
59+
60+
- <link rel="stylesheet" href="${escapeAttribute(this.extensionResource('media', 'imagePreview.css'))}" type="text/css" media="screen" nonce="${nonce}">
61+
+ <link rel="stylesheet" href="${escapeAttribute(this.extensionResource('media', 'imagePreview.css'))}" type="text/css" media="screen" nonce="${nonce}" crossorigin="anonymous">
62+
63+
<meta http-equiv="Content-Security-Policy" content="default-src 'none'; img-src data: ${cspSource}; connect-src ${cspSource}; script-src 'nonce-${nonce}'; style-src ${cspSource} 'nonce-${nonce}';">
64+
<meta id="image-preview-settings" data-settings="${escapeAttribute(JSON.stringify(settings))}">
65+
diff --git a/extensions/media-preview/src/videoPreview.ts b/extensions/media-preview/src/videoPreview.ts
66+
index 1cb74c58426..796aa49bf2e 100644
67+
--- a/extensions/media-preview/src/videoPreview.ts
68+
+++ b/extensions/media-preview/src/videoPreview.ts
69+
@@ -76,7 +76,7 @@ class VideoPreview extends MediaPreview {
70+
71+
<title>Video Preview</title>
72+
73+
- <link rel="stylesheet" href="${escapeAttribute(this.extensionResource('media', 'videoPreview.css'))}" type="text/css" media="screen" nonce="${nonce}">
74+
+ <link rel="stylesheet" href="${escapeAttribute(this.extensionResource('media', 'videoPreview.css'))}" type="text/css" media="screen" nonce="${nonce}" crossorigin="anonymous">
75+
76+
<meta http-equiv="Content-Security-Policy" content="default-src 'none'; img-src data: ${cspSource}; media-src ${cspSource}; script-src 'nonce-${nonce}'; style-src ${cspSource} 'nonce-${nonce}';">
77+
<meta id="settings" data-settings="${escapeAttribute(JSON.stringify(settings))}">
78+
diff --git a/extensions/mermaid-chat-features/src/chatOutputRenderer.ts b/extensions/mermaid-chat-features/src/chatOutputRenderer.ts
79+
index c6aacbd748e..83ef9189540 100644
80+
--- a/extensions/mermaid-chat-features/src/chatOutputRenderer.ts
81+
+++ b/extensions/mermaid-chat-features/src/chatOutputRenderer.ts
82+
@@ -73,7 +73,7 @@ class MermaidChatOutputRenderer implements vscode.ChatOutputRenderer {
83+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
84+
<title>Mermaid Diagram</title>
85+
<meta http-equiv="Content-Security-Policy" content="default-src 'none'; script-src 'nonce-${nonce}'; style-src ${webview.cspSource} 'unsafe-inline'; font-src data:;" />
86+
- <link rel="stylesheet" type="text/css" href="${codiconsUri}">
87+
+ <link rel="stylesheet" type="text/css" href="${codiconsUri}" crossorigin="anonymous">
88+
89+
<style>
90+
body {
91+
diff --git a/extensions/mermaid-chat-features/src/editorManager.ts b/extensions/mermaid-chat-features/src/editorManager.ts
92+
index 5ee5cec29da..4147709002e 100644
93+
--- a/extensions/mermaid-chat-features/src/editorManager.ts
94+
+++ b/extensions/mermaid-chat-features/src/editorManager.ts
95+
@@ -219,7 +219,7 @@ class MermaidPreview extends Disposable {
96+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
97+
<title>Mermaid Diagram</title>
98+
<meta http-equiv="Content-Security-Policy" content="default-src 'none'; script-src 'nonce-${nonce}'; style-src ${this._webviewPanel.webview.cspSource} 'unsafe-inline'; font-src data:;" />
99+
- <link rel="stylesheet" type="text/css" href="${codiconsUri}">
100+
+ <link rel="stylesheet" type="text/css" href="${codiconsUri}" crossorigin="anonymous">
101+
<style>
102+
html, body {
103+
margin: 0;
104+
diff --git a/extensions/simple-browser/src/simpleBrowserView.ts b/extensions/simple-browser/src/simpleBrowserView.ts
105+
index 56c5aff5c8a..ff123619f56 100644
106+
--- a/extensions/simple-browser/src/simpleBrowserView.ts
107+
+++ b/extensions/simple-browser/src/simpleBrowserView.ts
108+
@@ -137,8 +137,8 @@ export class SimpleBrowserView extends Disposable {
109+
focusLockEnabled: configuration.get<boolean>('focusLockIndicator.enabled', true)
110+
}))}">
111+
112+
- <link rel="stylesheet" type="text/css" href="${mainCss}">
113+
- <link rel="stylesheet" type="text/css" href="${codiconsUri}">
114+
+ <link rel="stylesheet" type="text/css" href="${mainCss}" crossorigin="anonymous">
115+
+ <link rel="stylesheet" type="text/css" href="${codiconsUri}" crossorigin="anonymous">
116+
</head>
117+
<body>
118+
<header class="header">

0 commit comments

Comments
 (0)