Skip to content

Commit

Permalink
Force a new token chunk after a declarative shadow DOM end-tag.
Browse files Browse the repository at this point in the history
This ensures that that a DSD root is always at the end of
a token chunk. This is important because the parser can
only yield or pause at token chunk boundaries. Pausing
may be forced by a declarative Shadow DOM shadow root, if it
includes a stylesheet, which blocks the HTML parser.

Bug: 904966
Change-Id: Icb170b7dd15910661dd3245f6cb277d13eec0ad7
Fixed: 1203645
  • Loading branch information
Mason Freed authored and chromium-wpt-export-bot committed May 5, 2021
1 parent 49d9c78 commit 22fb0ac
Showing 1 changed file with 39 additions and 0 deletions.
@@ -0,0 +1,39 @@
<!DOCTYPE html>
<meta charset="utf-8">
<title>Declarative Shadow DOM</title>
<link rel="author" href="mailto:masonf@chromium.org">
<link rel="help" href="https://github.com/whatwg/dom/issues/831">
<link rel="help" href="https://crbug.com/1203645">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="support/helpers.js"></script>


This test should not crash, and there should be two lines of text visible below.
<x-1>
<template shadowroot="open">
<style>
@import 'non-existent.css';
</style>
<slot></slot>
</template>
<p>Line 1</p>
</x-1>

<x-2>
<template shadowroot="open">
<slot></slot>
</template>
<p>Line 2</p>
</x-2>

<script>
window.onload = function() {
const x1 = document.querySelector('x-1');
const x2 = document.querySelector('x-2');
test(() => {
assert_true(!!x1);
assert_true(!!x2);
}, 'Declarative Shadow DOM: Test for crashes and improper parsing');
}
</script>

0 comments on commit 22fb0ac

Please sign in to comment.