<html xmlns="http://www.w3.org/1999/xhtml" class="reftest-wait"> <!-- Any copyright is dedicated to the Public Domain. http://creativecommons.org/publicdomain/zero/1.0/ --> <head> <title>CSS Test: CSS display:contents in XBL</title> <link rel="author" title="William Chen" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1040291"/> <link rel="author" title="Mats Palmgren" href="https://bugzilla.mozilla.org/show_bug.cgi?id=907396"/> <link rel="help" href="http://dev.w3.org/csswg/css-display"/> <style> .c { display:contents; } </style> <bindings xmlns="http://www.mozilla.org/xbl" xmlns:xhtml="http://www.w3.org/1999/xhtml"> <binding id="a"> <content> <style xmlns="http://www.w3.org/1999/xhtml"> .a { display: contents; color: blue; } </style> <xhtml:span>a</xhtml:span> <xhtml:span class="a"> <children></children> </xhtml:span> <xhtml:span>c</xhtml:span> </content> </binding> <binding id="b"> <content> <style xmlns="http://www.w3.org/1999/xhtml"> .b { display: contents; color: blue; } .b::after { content: 'c'; } </style> <xhtml:span class="b"> a <children></children> </xhtml:span> </content> </binding> <binding id="c"> <content> <xhtml:span>a</xhtml:span> <xhtml:span style="color:blue"> <children></children> </xhtml:span> <xhtml:span>c</xhtml:span> </content> </binding> <binding id="d"> <content> <style xmlns="http://www.w3.org/1999/xhtml"> .d { display: contents; color: blue; } #d1::after { content: "a"; } #d2::before { content: "c"; } </style> <xhtml:span id="d1"></xhtml:span> <xhtml:span class="d"> <children></children> </xhtml:span> <xhtml:span id="d2"></xhtml:span> </content> </binding> <binding id="e"> <content> <style xmlns="http://www.w3.org/1999/xhtml"> .e { display: contents; color: blue; } .e::before { content: 'a'; color: black; } </style> <xhtml:span class="e"> <children></children> <xhtml:span style="color:black">c</xhtml:span> </xhtml:span> </content> </binding> <binding id="f"> <content><children includes="b"/><children includes="i"/></content> </binding> <binding id="g"> <content> <style xmlns="http://www.w3.org/1999/xhtml"> .a { display: contents; color: blue; } </style> <xhtml:span class="a"><children includes="b"></children></xhtml:span> <xhtml:span class="a" style="color:green"><children includes="c"></children></xhtml:span> </content> </binding> </bindings> </head> <body> <div id="host1" style="-moz-binding: url(#a);"></div> <div id="host2" style="-moz-binding: url(#b);"></div> <div id="host3" style="-moz-binding: url(#c); display: contents;"></div>d <div id="host4" style="-moz-binding: url(#d);"></div> <div id="host5" style="-moz-binding: url(#e);"></div> <div style="-moz-binding: url(#f)"><i>Two</i><b>One</b></div> <div style="-moz-binding: url(#f)"><i style="display: contents;">Two</i><b>One</b></div> <div style="-moz-binding: url(#f)"><i>Two</i><b style="display: contents;">One</b></div> <div id="host6" style="-moz-binding: url(#f)"><i>Two</i><b>One</b></div> <div id="host7" style="-moz-binding: url(#f)"><i style="display: contents;">Two</i><b>One</b></div> <div id="host8" style="-moz-binding: url(#f)"><i>Two</i><b style="display: contents;">One</b></div> <div id="host9" style="-moz-binding: url(#f)"><i>Two</i><b>One</b></div> <div id="hostA" style="-moz-binding: url(#f)"><i style="display: contents;">Two</i><b>One</b></div> <div id="hostB" style="-moz-binding: url(#f)"><i>Two</i><b style="display: contents;">One</b></div> <div id="hostC" style="-moz-binding: url(#f)"><i>Two</i><b>One</b></div> <div id="hostD" style="-moz-binding: url(#f)"><i style="display: contents;">Two</i><b>One</b></div> <div id="hostE" style="-moz-binding: url(#f)"><i>Two</i><b style="display: contents;">One</b></div> <div id="hostF" style="-moz-binding: url(#f)"><i>Two</i><b>One</b></div> <div id="hostG" style="-moz-binding: url(#f)"><i style="display: contents;">Two</i><b>One</b></div> <div id="hostH" style="-moz-binding: url(#f)"><i>Two</i><b style="display: contents;">One</b></div> <div id="hostI" style="color:green"><b style="display:contents">I</b></div> <div id="hostJ" style="-moz-binding:url(#a); color:green"><b>J</b></div> <div id="hostK" style="-moz-binding:url(#b); color:red"><b>K</b></div> <div id="hostL" style="color:red"><c>2</c><b style="display:contents">L1</b></div> <div id="hostM" style="-moz-binding:url(#g); color:red"><c>2</c><b style="display:contents">M1</b></div> <div id="hostO" class="c" style="-moz-binding:url(#a); color:green"><b>O</b></div> <div id="hostP" class="c" style="-moz-binding:url(#b); color:red"><b>P</b></div> <div id="hostQ" class="c" style="color:red"><c>2</c><b style="display:contents">Q1</b></div> <div id="hostR" class="c" style="-moz-binding:url(#g); color:red"><c>2</c><b style="display:contents">R1</b></div> <div id="hostS" style="-moz-binding: url(#a);"></div> <div id="hostT" style="-moz-binding: url(#b);"></div> <div id="hostU" style="-moz-binding: url(#c); display: contents;"></div>d <div id="hostV" style="-moz-binding: url(#d);"></div> <div id="hostW" style="-moz-binding: url(#e);"></div> <div class="c" style="-moz-binding: url(#f)"><i>Two</i><b>One</b></div> <div class="c" style="-moz-binding: url(#f)"><i style="display: contents;">Two</i><b>One</b></div> <div class="c" style="-moz-binding: url(#f)"><i>Two</i><b style="display: contents;">One</b></div> <div id="hostX" style="-moz-binding: url(#f)"><i>Two</i><b>One</b></div> <div id="hostY" style="-moz-binding: url(#f)"><i style="display: contents;">Two</i><b>One</b></div> <div id="hostZ" style="-moz-binding: url(#f)"><i>Two</i><b style="display: contents;">One</b></div> <div id="hosta" style="-moz-binding: url(#f)"><i>Two</i><b>One</b></div> <div id="hostb" style="-moz-binding: url(#f)"><i style="display: contents;">Two</i><b>One</b></div> <div id="hostc" style="-moz-binding: url(#f)"><i>Two</i><b style="display: contents;">One</b></div> <div id="hostd" style="-moz-binding: url(#f)"><i>Two</i><b>One</b></div> <div id="hoste" style="-moz-binding: url(#f)"><i style="display: contents;">Two</i><b>One</b></div> <div id="hostf" style="-moz-binding: url(#f)"><i>Two</i><b style="display: contents;">One</b></div> <div id="hostg" style="-moz-binding: url(#f)"><i>Two</i><b>One</b></div> <div id="hosth" style="-moz-binding: url(#f)"><i style="display: contents;">Two</i><b>One</b></div> <div id="hosti" style="-moz-binding: url(#f)"><i>Two</i><b style="display: contents;">One</b></div> <div id="hostj" style="-moz-binding: url(#f)"><i>Two</i><b style="display: contents;">One</b></div> <script> function tweak() { document.body.offsetHeight; function span(s) { var elm = document.createElement("span"); elm.textContent = s; return elm; } function elem(tag) { var elm = document.createElement(tag); elm.textContent = tag; return elm; } // Span should be distributed to the xbl:children insertion point between 'a' and 'c'. host1.appendChild(span("b")); var elm = span("b"); elm.style.display = "contents"; elm.style.color = "blue"; host2.appendChild(elm); host3.appendChild(span("b")); host4.appendChild(span("b")); host5.appendChild(span("b")); host6.appendChild(elem("b")); host7.appendChild(elem("b")); host8.appendChild(elem("b")); host9.appendChild(elem("i")); hostA.appendChild(elem("i")); hostB.appendChild(elem("i")); hostC.insertBefore(elem("b"), hostC.firstChild); hostD.insertBefore(elem("b"), hostD.firstChild); hostE.insertBefore(elem("b"), hostE.firstChild); hostF.insertBefore(elem("i"), hostF.firstChild); hostG.insertBefore(elem("i"), hostG.firstChild); hostH.insertBefore(elem("i"), hostH.firstChild); document.body.offsetHeight; hostI.style.MozBinding='url(#a)'; hostL.style.MozBinding='url(#g)'; hostO.style.MozBinding='url(#a)'; hostQ.style.MozBinding='url(#g)'; hostS.className="c"; hostT.className="c"; hostU.className="c"; hostV.className="c"; hostW.className="c"; hostX.className="c"; hostY.className="c"; hostZ.className="c"; hosta.className="c"; hostb.className="c"; hostc.className="c"; hostd.className="c"; hoste.className="c"; hostf.className="c"; hostg.className="c"; hosth.className="c"; hosti.className="c"; hostS.appendChild(span("b")); var elm = span("b"); elm.style.display = "contents"; elm.style.color = "blue"; hostT.appendChild(elm); hostU.appendChild(span("b")); hostV.appendChild(span("b")); hostW.appendChild(span("b")); hostX.appendChild(elem("b")); hostY.appendChild(elem("b")); hostZ.appendChild(elem("b")); hosta.appendChild(elem("i")); hostb.appendChild(elem("i")); hostc.appendChild(elem("i")); hostd.insertBefore(elem("b"), hostd.firstChild); hoste.insertBefore(elem("b"), hoste.firstChild); hostf.insertBefore(elem("b"), hostf.firstChild); hostg.insertBefore(elem("i"), hostg.firstChild); hosth.insertBefore(elem("i"), hosth.firstChild); hosti.insertBefore(elem("i"), hosti.firstChild); document.body.offsetHeight; hostj.children[0].style.MozBinding='url(#a)'; hostj.children[1].style.MozBinding='url(#a)'; document.body.offsetHeight; hostj.insertBefore(elem("i"), hostj.firstChild); document.body.offsetHeight; document.documentElement.removeAttribute("class"); } window.addEventListener("MozReftestInvalidate", tweak); </script> </body> </html>