Status: CRASH | Duration: 4ms | Subtests: 0/1 | Open test on wpt.live | Open ref on wpt.live | wpt.fyi
/css/css-display/display-contents-shadow-dom-1.html
<!DOCTYPE html> <!-- Any copyright is dedicated to the Public Domain. http://creativecommons.org/publicdomain/zero/1.0/ --> <html class="reftest-wait" lang="en-US"> <head> <meta charset="utf-8"> <title>CSS Test: CSS display:contents; in Shadow DOM</title> <link rel="author" title="Mats Palmgren" href="https://bugzilla.mozilla.org/show_bug.cgi?id=907396"> <link rel="help" href="https://drafts.csswg.org/css-display/"> <link rel="match" href="display-contents-shadow-dom-1-ref.html"> <style> html,body { color:black; background-color:white; font:20px/1 monospace; padding:0; margin:0; } .before::before, ::slotted(.before)::before {content: "a ";} .after::after, ::slotted(.after)::after {content: " c";} div.before::before {content: "X ";} div.after::after {content: " Y";} .b, .c, ::slotted(.b), ::slotted(.c) { display:contents; } </style> </head> <body> <div id="host1" class="before"></div> <span id="host2"></span> <div id="host3" class="after"></div> <div id="host4" class="before after"></div> <div id="host5" class="after"></div> <div id="host6" class="before"></div> <div id="host7"></div> <div id="host8" class="after"></div> <div id="host9" class="before after"></div> <div id="hostA" class="after"></div> <div id="hostB"></div> <div id="hostC"></div> <div id="hostD"></div> <div id="hostE"></div> <div id="hostF" class="before"></div> <div id="hostG"></div> <span id="hostH"></span> <div id="hostI"></div> <div id="hostJ"></div> <span id="hostK"></span> <div id="hostL"></div> <div id="hostM"><i slot=i>Two</i><b slot=b>One</b></div> <div id="hostN"><i slot=i class="c">Two</i><b slot=b>One</b></div> <div id="hostO"><i slot=i>Two</i><b slot=b class="c">One</b></div> <div id="hostP"><i slot=i class="c">Two</i><b slot=b class="c">One</b></div> <div id="hostQ" class="c" style="color:blue"><i slot=i class="c">Two</i><b slot=b class="c">One</b></div>Three <div id="hostS" class="c"><span class="c">S</span></div> <div id="hostT" class="c">T</div> <div id="hostU"><span slot="c">U</span></div> <div id="hostV" class="c" style="color:red"><b slot="b" class="c" style="color:inherit">V</b></div> <script> function shadow(id) { return document.getElementById(id).attachShadow({mode:"open"}); } function span(s) { var e = document.createElement("span"); var t = document.createTextNode(s); e.appendChild(t); return e; } function text(s) { return document.createTextNode(s); } function contents(n, slotName) { var e = document.createElement("z"); e.style.display = "contents"; e.style.color = "blue"; if (n) e.appendChild(n); if (slotName) e.setAttribute("slot", slotName); return e; } function run() { document.body.offsetHeight; shadow("host1").innerHTML = '<slot style="display:inline"></slot> c'; shadow("host2").innerHTML = 'a <slot style="display:contents"></slot> c'; shadow("host3").innerHTML = 'a <slot style="display:contents"></slot>'; shadow("host4").innerHTML = '<slot style="display:contents"></slot>'; shadow("host5").innerHTML = 'a <slot style="display:contents"></slot>'; shadow("host6").innerHTML = '<z style="color:blue; display:contents"><slot style="display:inline"></slot></z> c'; shadow("host7").innerHTML = 'a <slot style="display:contents"></slot> c'; shadow("host8").innerHTML = 'a <z style="color:blue; display:contents"><slot style="display:contents"></z></slot>'; shadow("host9").innerHTML = '<slot style="display:contents"></slot>'; shadow("hostA").innerHTML = 'a <slot style="display:contents"></slot>'; shadow("hostB").innerHTML = 'a <slot name="c" style="display:contents"></slot> <slot name="b" style="display:contents"></slot> B'; shadow("hostC").innerHTML = 'A <slot name="c" style="display:contents"></slot> <slot name="b" style="display:contents"></slot> B'; shadow("hostD").innerHTML = 'A <slot name="c" style="display:contents"></slot> <slot name="b" style="display:contents"></slot> B <slot name="b"></slot>'; shadow("hostE").innerHTML = 'A <slot name="c" style="display:contents"></slot> <slot name="b" style="display:contents"></slot> B'; shadow("hostF").innerHTML = '<slot name="c" style="display:contents"></slot> <slot name="b" style="display:contents"></slot> B'; shadow("hostG").innerHTML = '<slot name="b" style="display:contents"></slot>'; shadow("hostH").innerHTML = '<slot name="b" style="display:contents"></slot>'; shadow("hostI").innerHTML = 'A<slot name="b" style="display:contents"></slot>'; shadow("hostJ").innerHTML = 'A<slot name="b" style="display:contents"></slot>'; shadow("hostK").innerHTML = '<slot name="b" style="display:contents"></slot>'; shadow("hostL").innerHTML = '<slot name="b" style="display:contents"></slot>'; shadow("hostM").innerHTML = '<slot name="b" style="display:contents"></slot><slot name="i" style="display:inline"></slot>'; shadow("hostN").innerHTML = '<slot name="b" style="display:contents"></slot><slot name="i" style="display:inline"></slot>'; shadow("hostO").innerHTML = '<slot name="b" style="display:contents"></slot><slot name="i" style="display:inline"></slot>'; shadow("hostP").innerHTML = '<slot name="b" style="display:contents"></slot><slot name="i" style="display:inline"></slot>'; shadow("hostQ").innerHTML = '<slot name="b" style="display:contents"></slot><slot name="i" style="display:inline"></slot>'; } function tweak() { document.body.offsetHeight; host1.appendChild(span("1")); host2.appendChild(text("2")); host3.appendChild(span("3")); host4.appendChild(text("4")); var e = span("5"); e.style.display = "contents"; host5.appendChild(e); host6.appendChild(span("6")); host7.appendChild(contents(text("7"))); host8.appendChild(contents(span("8"))); host9.appendChild(contents(text("9"))); var e = contents(span("A")); hostA.appendChild(e); var e = contents(text("2"), "b"); hostB.appendChild(e); var e = contents(text("1"), "c"); hostB.appendChild(e); var e = contents(text("2"), "b"); e.className = "after"; hostC.appendChild(e); var e = contents(text("1"), "c"); e.className = "before"; hostC.appendChild(e); var e = contents(text("2"), "b"); e.className = "before after"; hostD.appendChild(e); var e = contents(text(" 3"), "b"); e.className = "before after"; hostD.appendChild(e); var e = contents(text("1"), "c"); e.className = "before"; hostD.appendChild(e); var e = contents(contents(text("2")), "b"); e.className = "before after"; hostE.appendChild(e); var e2 = contents(text("1"), "c"); e2.className = "before after"; hostE.insertBefore(e2, e); var e = contents(text("2"), "b"); e.className = "before after"; hostF.appendChild(e); var e2 = contents(text("1"), "c"); e2.className = "before after"; hostF.insertBefore(e2, e); var e = contents(contents(text("1")), "b"); hostG.appendChild(e); var e = contents(text("2"), "b"); e.className = "before after"; hostG.appendChild(e); var e = contents(contents(text("2")), "b"); hostH.appendChild(e); var e2 = contents(text("1"), "b"); e2.className = "before after"; hostH.insertBefore(e2, e); var e = contents(text("b"), "b"); hostI.appendChild(e); var e = span("c"); e.setAttribute("slot", "b"); hostI.appendChild(e); var e = contents(contents(text("b")), "b"); hostJ.appendChild(e); var e = span("c"); e.setAttribute("slot", "b"); hostJ.appendChild(e); var inner = span("b"); inner.className = "after"; var e = contents(contents(inner), "b"); hostK.appendChild(e); var e = span("d"); e.setAttribute("slot", "b"); hostK.appendChild(e); var inner = contents(null); inner.className = "before"; var e = contents(inner, "b"); hostL.appendChild(e); var e = span("b"); e.setAttribute("slot", "b"); hostL.appendChild(e); document.body.offsetHeight; setTimeout(function() { shadow("hostS"); shadow("hostT"); shadow("hostU"); shadow("hostV").innerHTML = '<z style="color:green"><slot name="b"></slot></z>'; document.body.offsetHeight; document.documentElement.removeAttribute("class"); },0); } run(); setTimeout(tweak, 0); </script> </body> </html>
/css/css-display/display-contents-shadow-dom-1-ref.html
<!DOCTYPE html> <!-- Any copyright is dedicated to the Public Domain. http://creativecommons.org/publicdomain/zero/1.0/ --> <html> <head> <title>Reference: CSS display:contents; in Shadow DOM</title> <link rel="author" title="Mats Palmgren" href="https://bugzilla.mozilla.org/show_bug.cgi?id=907396"> <style> html,body { color:black; background-color:white; font:20px/1 monospace; padding:0; margin:0; } span { color:blue; } </style> </head> <body> <div>X 1 c</div> <div>a 2 c</div> <div>a 3 Y</div> <div>X 4 Y</div> <div>a 5 Y</div> <div>X <span>6</span> c</div> <div>a <span>7</span> c</div> <div>a <span>8</span> Y</div> <div>X <span>9</span> Y</div> <div>a <span>A</span> Y</div> <div>a <span>1 2</span> B</div> <div>A <span>a 1 2 c</span> B</div> <div>A <span>a 1 a 2 ca 3 c</span> B</div> <div>A <span>a 1 c a 2 c</span> B</div> <div>X <span>a 1 c a 2 c</span> B</div> <div><span>1a 2 c</span></div> <div><span>a 1 c2</span></div> <div>A<span>b</span>c</div> <div>A<span>b</span>c</div> <div><span>b c</span>d</div> <div><span>a </span>b</div> <div><b>One</b><i>Two</i></div> <div><b>One</b><i>Two</i></div> <div><b>One</b><i>Two</i></div> <div><b>One</b><i>Two</i></div> <b style="color:blue">One</b><i style="color:blue">Two</i>Three <div></div> <b style="color:green">V</b> </body> </html>