summaryrefslogtreecommitdiffstats
path: root/layout/reftests/css-display/display-contents-xbl.xhtml
diff options
context:
space:
mode:
Diffstat (limited to 'layout/reftests/css-display/display-contents-xbl.xhtml')
-rw-r--r--layout/reftests/css-display/display-contents-xbl.xhtml272
1 files changed, 272 insertions, 0 deletions
diff --git a/layout/reftests/css-display/display-contents-xbl.xhtml b/layout/reftests/css-display/display-contents-xbl.xhtml
new file mode 100644
index 000000000..c7f1b24dd
--- /dev/null
+++ b/layout/reftests/css-display/display-contents-xbl.xhtml
@@ -0,0 +1,272 @@
+<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>