Fix broken codeblocks (#213399)

* Fix broken codeblocks
Fix #213382

* Fix tests
This commit is contained in:
Rob Lourens 2024-05-24 09:30:57 -07:00 committed by GitHub
parent 1e1afd0dd7
commit b9fa819edd
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
7 changed files with 14 additions and 12 deletions

View file

@ -39,8 +39,10 @@ const allowedHtmlTags = [
'a',
'img',
// TODO@roblourens when we sanitize attributes in markdown source, we can ban these elements at that step. microsoft/vscode-copilot#5091
// Not in the official list, but used for codicons and other vscode markdown extensions
'span',
'div',
];
/**

View file

@ -1 +1 @@
<div class="rendered-markdown">&lt;!-- comment1 &lt;div&gt;&lt;/div&gt; --&gt;&lt;div&gt;content&lt;/div&gt;&lt;!-- comment2 --&gt;</div>
<div class="rendered-markdown">&lt;!-- comment1 &lt;div&gt;&lt;/div&gt; --&gt;<div>content</div>&lt;!-- comment2 --&gt;</div>

View file

@ -1 +1 @@
<div class="rendered-markdown">1&lt;canvas&gt;2&lt;div&gt;3&lt;/div&gt;&lt;/canvas&gt;4</div>
<div class="rendered-markdown">1&lt;canvas&gt;2&lt;details&gt;3&lt;/details&gt;&lt;/canvas&gt;4</div>

View file

@ -1 +1 @@
<div class="rendered-markdown">1&lt;div id="id1" style="display: none"&gt;2&lt;div id="my id 2"&gt;3&lt;/div&gt;&lt;/div&gt;4</div>
<div class="rendered-markdown">1&lt;details id="id1" style="display: none"&gt;2&lt;details id="my id 2"&gt;3&lt;/details&gt;&lt;/details&gt;4</div>

View file

@ -1,8 +1,8 @@
<div class="rendered-markdown"><h1>heading</h1>
&lt;div&gt;
&lt;details&gt;
<ul>
<li><span>&lt;div&gt;<i>1</i>&lt;/div&gt;</span></li>
<li><span>&lt;details&gt;<i>1</i>&lt;/details&gt;</span></li>
<li><b>hi</b></li>
</ul>
&lt;/div&gt;
&lt;/details&gt;
<pre>&lt;canvas&gt;canvas here&lt;/canvas&gt;</pre>&lt;details&gt;&lt;/details&gt;</div>

View file

@ -1 +1 @@
<div class="rendered-markdown"><img src="http://allowed.com/image.jpg"> &lt;div&gt;&lt;img src="http://disallowed.com/image.jpg"&gt;&lt;/div&gt;</div>
<div class="rendered-markdown"><img src="http://allowed.com/image.jpg"> <div>&lt;img src="http://disallowed.com/image.jpg"&gt;</div></div>

View file

@ -28,14 +28,14 @@ suite('ChatMarkdownRenderer', () => {
});
test('invalid HTML', async () => {
const md = new MarkdownString('1<canvas>2<div>3</div></canvas>4');
const md = new MarkdownString('1<canvas>2<details>3</details></canvas>4');
md.supportHtml = true;
const result = store.add(testRenderer.render(md));
await assertSnapshot(result.element.outerHTML);
});
test('invalid HTML with attributes', async () => {
const md = new MarkdownString('1<div id="id1" style="display: none">2<div id="my id 2">3</div></div>4');
const md = new MarkdownString('1<details id="id1" style="display: none">2<details id="my id 2">3</details></details>4');
md.supportHtml = true;
const result = store.add(testRenderer.render(md));
await assertSnapshot(result.element.outerHTML);
@ -57,12 +57,12 @@ suite('ChatMarkdownRenderer', () => {
test('mixed valid and invalid HTML', async () => {
const md = new MarkdownString(`
<h1>heading</h1>
<div>
<details>
<ul>
<li><span><div><i>1</i></div></span></li>
<li><span><details><i>1</i></details></span></li>
<li><b>hi</b></li>
</ul>
</div>
</details>
<pre><canvas>canvas here</canvas></pre><details></details>`);
md.supportHtml = true;
const result = store.add(testRenderer.render(md));