diff options
Diffstat (limited to 'layout/reftests/dom')
42 files changed, 1306 insertions, 0 deletions
diff --git a/layout/reftests/dom/appendmultiple-ref.html b/layout/reftests/dom/appendmultiple-ref.html new file mode 100644 index 000000000..e634909e8 --- /dev/null +++ b/layout/reftests/dom/appendmultiple-ref.html @@ -0,0 +1,9 @@ +<html> +<body> +<div>1</div> +<div>2</div> +<div>3</div> +<div>4</div> +<div>5</div> +</body> +</html> diff --git a/layout/reftests/dom/appendmultiple.html b/layout/reftests/dom/appendmultiple.html new file mode 100644 index 000000000..26d2d8540 --- /dev/null +++ b/layout/reftests/dom/appendmultiple.html @@ -0,0 +1,27 @@ +<html class="reftest-wait"> +<head> + +<script> +function boom() +{ + document.body.offsetHeight; + + var parent = document.getElementById("body"); + + for (var i = 3; i <= 5; i++) { + var newdiv = document.createElement("div"); + newdiv.appendChild(document.createTextNode(i)); + parent.appendChild(newdiv); + } + + document.body.offsetHeight; + document.documentElement.className = ""; +} +</script> + +</head> +<body id="body" onload="boom();"> +<div>1</div> +<div>2</div> +</body> +</html> diff --git a/layout/reftests/dom/appendsingle-ref.html b/layout/reftests/dom/appendsingle-ref.html new file mode 100644 index 000000000..e634909e8 --- /dev/null +++ b/layout/reftests/dom/appendsingle-ref.html @@ -0,0 +1,9 @@ +<html> +<body> +<div>1</div> +<div>2</div> +<div>3</div> +<div>4</div> +<div>5</div> +</body> +</html> diff --git a/layout/reftests/dom/appendsingle.html b/layout/reftests/dom/appendsingle.html new file mode 100644 index 000000000..321c60da4 --- /dev/null +++ b/layout/reftests/dom/appendsingle.html @@ -0,0 +1,27 @@ +<html class="reftest-wait"> +<head> + +<script> +function boom() +{ + document.body.offsetHeight; + + var parent = document.getElementById("body"); + + var newdiv = document.createElement("div"); + newdiv.appendChild(document.createTextNode("5")); + parent.appendChild(newdiv); + + document.body.offsetHeight; + document.documentElement.className = ""; +} +</script> + +</head> +<body id="body" onload="boom();"> +<div>1</div> +<div>2</div> +<div>3</div> +<div>4</div> +</body> +</html> diff --git a/layout/reftests/dom/insertmultiple-ref.html b/layout/reftests/dom/insertmultiple-ref.html new file mode 100644 index 000000000..e634909e8 --- /dev/null +++ b/layout/reftests/dom/insertmultiple-ref.html @@ -0,0 +1,9 @@ +<html> +<body> +<div>1</div> +<div>2</div> +<div>3</div> +<div>4</div> +<div>5</div> +</body> +</html> diff --git a/layout/reftests/dom/insertmultiple.html b/layout/reftests/dom/insertmultiple.html new file mode 100644 index 000000000..cb58f5bdd --- /dev/null +++ b/layout/reftests/dom/insertmultiple.html @@ -0,0 +1,28 @@ +<html class="reftest-wait"> +<head> + +<script> +function boom() +{ + document.body.offsetHeight; + + var lastdiv = document.getElementById("last"); + var parent = lastdiv.parentNode; + + for (var i = 2; i <= 4; i++) { + var newdiv = document.createElement("div"); + newdiv.appendChild(document.createTextNode(i)); + parent.insertBefore(newdiv, lastdiv); + } + + document.body.offsetHeight; + document.documentElement.className = ""; +} +</script> + +</head> +<body onload="boom();"> +<div>1</div> +<div id="last">5</div> +</body> +</html> diff --git a/layout/reftests/dom/insertmultiplemultiple-1.html b/layout/reftests/dom/insertmultiplemultiple-1.html new file mode 100644 index 000000000..20cec325a --- /dev/null +++ b/layout/reftests/dom/insertmultiplemultiple-1.html @@ -0,0 +1,51 @@ +<html class="reftest-wait"> +<head> + +<script> +function boom() +{ + document.body.offsetHeight; + + var sixdiv = document.getElementById("six"); + var parent = sixdiv.parentNode; + + for (var i = 3; i <= 5; i++) { + var newdiv = document.createElement("div"); + newdiv.appendChild(document.createTextNode(i)); + parent.insertBefore(newdiv, sixdiv); + } + + var elevendiv = document.getElementById("eleven"); + parent = elevendiv.parentNode; + + for (var i = 8; i <= 10; i++) { + var newdiv = document.createElement("div"); + newdiv.appendChild(document.createTextNode(i)); + parent.insertBefore(newdiv, elevendiv); + } + + var lastdiv = document.getElementById("last"); + parent = lastdiv.parentNode; + + for (var i = 13; i <= 14; i++) { + var newdiv = document.createElement("div"); + newdiv.appendChild(document.createTextNode(i)); + parent.insertBefore(newdiv, lastdiv); + } + + document.body.offsetHeight; + document.documentElement.className = ""; +} +</script> + +</head> +<body onload="boom();"> +<div>1</div> +<div>2</div> +<div id="six">6</div> +<div>7</div> +<div id="eleven">11</div> +<div>12</div> +<div id="last">15</div> +</body> +</html> diff --git a/layout/reftests/dom/insertmultiplemultiple-2.html b/layout/reftests/dom/insertmultiplemultiple-2.html new file mode 100644 index 000000000..5a9845b7b --- /dev/null +++ b/layout/reftests/dom/insertmultiplemultiple-2.html @@ -0,0 +1,39 @@ +<html class="reftest-wait"> +<head> + +<script> +function boom() +{ + document.body.offsetHeight; + + var ninediv = document.getElementById("nine"); + var parent = ninediv.parentNode; + + for (var i = 4; i <= 8; i++) { + var newdiv = document.createElement("div"); + newdiv.appendChild(document.createTextNode(i)); + parent.insertBefore(newdiv, ninediv); + } + + for (var i = 13; i <= 15; i++) { + var newdiv = document.createElement("div"); + newdiv.appendChild(document.createTextNode(i)); + parent.appendChild(newdiv); + } + + document.body.offsetHeight; + document.documentElement.className = ""; +} +</script> + +</head> +<body onload="boom();"> +<div>1</div> +<div>2</div> +<div>3</div> +<div id="nine">9</div> +<div>10</div> +<div>11</div> +<div>12</div> +</body> +</html> diff --git a/layout/reftests/dom/insertmultiplemultiple-3.html b/layout/reftests/dom/insertmultiplemultiple-3.html new file mode 100644 index 000000000..f9fdb2d33 --- /dev/null +++ b/layout/reftests/dom/insertmultiplemultiple-3.html @@ -0,0 +1,48 @@ +<html class="reftest-wait"> +<head> + +<script> +function boom() +{ + document.body.offsetHeight; + + var sixdiv = document.getElementById("six"); + var parent = sixdiv.parentNode; + + for (var i = 3; i <= 5; i++) { + var newdiv = document.createElement("div"); + newdiv.appendChild(document.createTextNode(i)); + parent.insertBefore(newdiv, sixdiv); + } + + var elevendiv = document.getElementById("eleven"); + parent = elevendiv.parentNode; + + for (var i = 8; i <= 10; i++) { + var newdiv = document.createElement("div"); + newdiv.appendChild(document.createTextNode(i)); + parent.insertBefore(newdiv, elevendiv); + } + + for (var i = 14; i <= 15; i++) { + var newdiv = document.createElement("div"); + newdiv.appendChild(document.createTextNode(i)); + parent.appendChild(newdiv); + } + + document.body.offsetHeight; + document.documentElement.className = ""; +} +</script> + +</head> +<body onload="boom();"> +<div>1</div> +<div>2</div> +<div id="six">6</div> +<div>7</div> +<div id="eleven">11</div> +<div>12</div> +<div>13</div> +</body> +</html> diff --git a/layout/reftests/dom/insertmultiplemultiple-ref.html b/layout/reftests/dom/insertmultiplemultiple-ref.html new file mode 100644 index 000000000..01da6614c --- /dev/null +++ b/layout/reftests/dom/insertmultiplemultiple-ref.html @@ -0,0 +1,19 @@ +<html> +<body> +<div>1</div> +<div>2</div> +<div>3</div> +<div>4</div> +<div>5</div> +<div>6</div> +<div>7</div> +<div>8</div> +<div>9</div> +<div>10</div> +<div>11</div> +<div>12</div> +<div>13</div> +<div>14</div> +<div>15</div> +</body> +</html> diff --git a/layout/reftests/dom/insertparentandchild-ref.html b/layout/reftests/dom/insertparentandchild-ref.html new file mode 100644 index 000000000..0bd911e7f --- /dev/null +++ b/layout/reftests/dom/insertparentandchild-ref.html @@ -0,0 +1,18 @@ +<html> +<body> +<div>1</div> +<div>2</div> +<div>3</div> +<div>4</div> +<div> + <div>5a</div> + <div>5b</div> + <div>5c</div> + <div>5d</div> +</div> +<div>6</div> +<div>7</div> +<div>8</div> +<div>9</div> +</body> +</html> diff --git a/layout/reftests/dom/insertparentandchild.html b/layout/reftests/dom/insertparentandchild.html new file mode 100644 index 000000000..b5d5b8236 --- /dev/null +++ b/layout/reftests/dom/insertparentandchild.html @@ -0,0 +1,44 @@ +<html class="reftest-wait"> +<head> + +<script> +function boom() +{ + document.body.offsetHeight; + + var sixdiv = document.getElementById("six"); + var parent = sixdiv.parentNode; + + var newdiv = document.createElement("div"); + var childdiv = document.createElement("div"); + childdiv.appendChild(document.createTextNode("5c")); + newdiv.appendChild(childdiv); + childdiv = document.createElement("div"); + childdiv.appendChild(document.createTextNode("5d")); + newdiv.appendChild(childdiv); + parent.insertBefore(newdiv, sixdiv); + + childdiv = document.createElement("div"); + childdiv.appendChild(document.createTextNode("5b")); + newdiv.insertBefore(childdiv, newdiv.firstChild); + childdiv = document.createElement("div"); + childdiv.appendChild(document.createTextNode("5a")); + newdiv.insertBefore(childdiv, newdiv.firstChild); + + document.body.offsetHeight; + document.documentElement.className = ""; +} +</script> + +</head> +<body onload="boom();"> +<div>1</div> +<div>2</div> +<div>3</div> +<div>4</div> +<div id="six">6</div> +<div>7</div> +<div>8</div> +<div>9</div> +</body> +</html> diff --git a/layout/reftests/dom/insertsingle-ref.html b/layout/reftests/dom/insertsingle-ref.html new file mode 100644 index 000000000..e634909e8 --- /dev/null +++ b/layout/reftests/dom/insertsingle-ref.html @@ -0,0 +1,9 @@ +<html> +<body> +<div>1</div> +<div>2</div> +<div>3</div> +<div>4</div> +<div>5</div> +</body> +</html> diff --git a/layout/reftests/dom/insertsingle.html b/layout/reftests/dom/insertsingle.html new file mode 100644 index 000000000..42a12ee7b --- /dev/null +++ b/layout/reftests/dom/insertsingle.html @@ -0,0 +1,28 @@ +<html class="reftest-wait"> +<head> + +<script> +function boom() +{ + document.body.offsetHeight; + + var fourdiv = document.getElementById("four"); + var parent = fourdiv.parentNode; + + var newdiv = document.createElement("div"); + newdiv.appendChild(document.createTextNode("3")); + parent.insertBefore(newdiv, fourdiv); + + document.body.offsetHeight; + document.documentElement.className = ""; +} +</script> + +</head> +<body onload="boom();"> +<div>1</div> +<div>2</div> +<div id="four">4</div> +<div>5</div> +</body> +</html> diff --git a/layout/reftests/dom/inserttoparentandchild-1.html b/layout/reftests/dom/inserttoparentandchild-1.html new file mode 100644 index 000000000..7219e786d --- /dev/null +++ b/layout/reftests/dom/inserttoparentandchild-1.html @@ -0,0 +1,47 @@ +<html class="reftest-wait"> +<head> + +<script> +function boom() +{ + document.body.offsetHeight; + + var fivediv = document.getElementById("five"); + var parent = fivediv.parentNode; + + for (var i = 3; i <= 4; i++) { + var newdiv = document.createElement("div"); + newdiv.appendChild(document.createTextNode(i)); + parent.insertBefore(newdiv, fivediv); + } + + var fivedeediv = document.getElementById("fivedee"); + parent = fivedeediv.parentNode; + + var newdiv = document.createElement("div"); + newdiv.appendChild(document.createTextNode("5b")); + parent.insertBefore(newdiv, fivedeediv); + + newdiv = document.createElement("div"); + newdiv.appendChild(document.createTextNode("5c")); + parent.insertBefore(newdiv, fivedeediv); + + document.body.offsetHeight; + document.documentElement.className = ""; +} +</script> + +</head> +<body onload="boom();"> +<div>1</div> +<div>2</div> +<div id="five"> + <div>5a</div> + <div id="fivedee">5d</div> +</div> +<div>6</div> +<div>7</div> +<div>8</div> +<div>9</div> +</body> +</html> diff --git a/layout/reftests/dom/inserttoparentandchild-2.html b/layout/reftests/dom/inserttoparentandchild-2.html new file mode 100644 index 000000000..cdd0ccdc4 --- /dev/null +++ b/layout/reftests/dom/inserttoparentandchild-2.html @@ -0,0 +1,47 @@ +<html class="reftest-wait"> +<head> + +<script> +function boom() +{ + document.body.offsetHeight; + + var eightdiv = document.getElementById("eight"); + var parent = eightdiv.parentNode; + + for (var i = 6; i <= 7; i++) { + var newdiv = document.createElement("div"); + newdiv.appendChild(document.createTextNode(i)); + parent.insertBefore(newdiv, eightdiv); + } + + var fivedeediv = document.getElementById("fivedee"); + parent = fivedeediv.parentNode; + + var newdiv = document.createElement("div"); + newdiv.appendChild(document.createTextNode("5b")); + parent.insertBefore(newdiv, fivedeediv); + + newdiv = document.createElement("div"); + newdiv.appendChild(document.createTextNode("5c")); + parent.insertBefore(newdiv, fivedeediv); + + document.body.offsetHeight; + document.documentElement.className = ""; +} +</script> + +</head> +<body onload="boom();"> +<div>1</div> +<div>2</div> +<div>3</div> +<div>4</div> +<div id="five"> + <div>5a</div> + <div id="fivedee">5d</div> +</div> +<div id="eight">8</div> +<div>9</div> +</body> +</html> diff --git a/layout/reftests/dom/inserttoparentandchild-ref.html b/layout/reftests/dom/inserttoparentandchild-ref.html new file mode 100644 index 000000000..0bd911e7f --- /dev/null +++ b/layout/reftests/dom/inserttoparentandchild-ref.html @@ -0,0 +1,18 @@ +<html> +<body> +<div>1</div> +<div>2</div> +<div>3</div> +<div>4</div> +<div> + <div>5a</div> + <div>5b</div> + <div>5c</div> + <div>5d</div> +</div> +<div>6</div> +<div>7</div> +<div>8</div> +<div>9</div> +</body> +</html> diff --git a/layout/reftests/dom/inserttwoparents-ref.html b/layout/reftests/dom/inserttwoparents-ref.html new file mode 100644 index 000000000..daf6c0627 --- /dev/null +++ b/layout/reftests/dom/inserttwoparents-ref.html @@ -0,0 +1,18 @@ +<html> +<body> +<div> + <div>1a</div> + <div>2a</div> + <div>3a</div> + <div>4a</div> + <div>5a</div> +</div> +<div> + <div>1b</div> + <div>2b</div> + <div>3b</div> + <div>4b</div> + <div>5b</div> +</div> +</body> +</html> diff --git a/layout/reftests/dom/inserttwoparents.html b/layout/reftests/dom/inserttwoparents.html new file mode 100644 index 000000000..16b94491d --- /dev/null +++ b/layout/reftests/dom/inserttwoparents.html @@ -0,0 +1,45 @@ +<html class="reftest-wait"> +<head> + +<script> +function boom() +{ + document.body.offsetHeight; + + var fourehdiv = document.getElementById("foureh"); + var parent = fourehdiv.parentNode; + + for (var i = 2; i <= 3; i++) { + var newdiv = document.createElement("div"); + newdiv.appendChild(document.createTextNode(i + "a")); + parent.insertBefore(newdiv, fourehdiv); + } + + var fourbeediv = document.getElementById("fourbee"); + parent = fourbeediv.parentNode; + + for (var i = 2; i <= 3; i++) { + var newdiv = document.createElement("div"); + newdiv.appendChild(document.createTextNode(i + "b")); + parent.insertBefore(newdiv, fourbeediv); + } + + document.body.offsetHeight; + document.documentElement.className = ""; +} +</script> + +</head> +<body onload="boom();"> +<div> + <div>1a</div> + <div id="foureh">4a</div> + <div>5a</div> +</div> +<div> + <div>1b</div> + <div id="fourbee">4b</div> + <div>5b</div> +</div> +</body> +</html> diff --git a/layout/reftests/dom/multipleappendwitheditable-ref.xhtml b/layout/reftests/dom/multipleappendwitheditable-ref.xhtml new file mode 100644 index 000000000..fb80a5fac --- /dev/null +++ b/layout/reftests/dom/multipleappendwitheditable-ref.xhtml @@ -0,0 +1,11 @@ +<html xmlns="http://www.w3.org/1999/xhtml"> +<body> +<div id="parent"> + <div>1</div> + <div>2</div> + <div>3</div> + <div>4</div> + <div contenteditable="true">5</div> +</div> +</body> +</html>
\ No newline at end of file diff --git a/layout/reftests/dom/multipleappendwitheditable.xhtml b/layout/reftests/dom/multipleappendwitheditable.xhtml new file mode 100644 index 000000000..71fefd519 --- /dev/null +++ b/layout/reftests/dom/multipleappendwitheditable.xhtml @@ -0,0 +1,37 @@ +<html xmlns="http://www.w3.org/1999/xhtml" class="reftest-wait"> +<head> +<script type="text/javascript"> + +function boom() +{ + document.body.offsetHeight; + + var parent = document.getElementById("parent"); + + var newelt = document.createElement("div"); + newelt.appendChild(document.createTextNode(3)); + parent.appendChild(newelt); + + newelt = document.createElement("div"); + newelt.appendChild(document.createTextNode(4)); + parent.appendChild(newelt); + + newelt = document.createElement("div"); + newelt.appendChild(document.createTextNode(5)); + newelt.setAttribute("contenteditable", "true"); + parent.appendChild(newelt); + + document.body.offsetHeight; + document.documentElement.className = ""; +} + +</script> +</head> + +<body onload="boom();"> +<div id="parent"> + <div>1</div> + <div>2</div> +</div> +</body> +</html>
\ No newline at end of file diff --git a/layout/reftests/dom/multipleappendwithinput-ref.xhtml b/layout/reftests/dom/multipleappendwithinput-ref.xhtml new file mode 100644 index 000000000..2f79bc027 --- /dev/null +++ b/layout/reftests/dom/multipleappendwithinput-ref.xhtml @@ -0,0 +1,11 @@ +<html xmlns="http://www.w3.org/1999/xhtml"> +<body> +<div id="parent"> + <div>1</div> + <div>2</div> + <div>3</div> + <div>4</div> + <input type="text"></input> +</div> +</body> +</html>
\ No newline at end of file diff --git a/layout/reftests/dom/multipleappendwithinput.xhtml b/layout/reftests/dom/multipleappendwithinput.xhtml new file mode 100644 index 000000000..762a15b84 --- /dev/null +++ b/layout/reftests/dom/multipleappendwithinput.xhtml @@ -0,0 +1,36 @@ +<html xmlns="http://www.w3.org/1999/xhtml" class="reftest-wait"> +<head> +<script type="text/javascript"> + +function boom() +{ + document.body.offsetHeight; + + var parent = document.getElementById("parent"); + + var newelt = document.createElement("div"); + newelt.appendChild(document.createTextNode(3)); + parent.appendChild(newelt); + + newelt = document.createElement("div"); + newelt.appendChild(document.createTextNode(4)); + parent.appendChild(newelt); + + var input = document.createElement("input"); + input.setAttribute("type", "text"); + parent.appendChild(input); + + document.body.offsetHeight; + document.documentElement.className = ""; +} + +</script> +</head> + +<body onload="boom();"> +<div id="parent"> + <div>1</div> + <div>2</div> +</div> +</body> +</html>
\ No newline at end of file diff --git a/layout/reftests/dom/multipleappendwithxul-ref.xhtml b/layout/reftests/dom/multipleappendwithxul-ref.xhtml new file mode 100644 index 000000000..0573a5df9 --- /dev/null +++ b/layout/reftests/dom/multipleappendwithxul-ref.xhtml @@ -0,0 +1,11 @@ +<html xmlns="http://www.w3.org/1999/xhtml"> +<body> +<div id="parent"> + <div>1</div> + <div>2</div> + <div>3</div> + <div>4</div> + <hbox xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">5</hbox> +</div> +</body> +</html>
\ No newline at end of file diff --git a/layout/reftests/dom/multipleappendwithxul.xhtml b/layout/reftests/dom/multipleappendwithxul.xhtml new file mode 100644 index 000000000..365d4b37c --- /dev/null +++ b/layout/reftests/dom/multipleappendwithxul.xhtml @@ -0,0 +1,37 @@ +<html xmlns="http://www.w3.org/1999/xhtml" class="reftest-wait"> +<head> +<script type="text/javascript"> + +function boom() +{ + document.body.offsetHeight; + + var parent = document.getElementById("parent"); + + var newelt = document.createElement("div"); + newelt.appendChild(document.createTextNode(3)); + parent.appendChild(newelt); + + newelt = document.createElement("div"); + newelt.appendChild(document.createTextNode(4)); + parent.appendChild(newelt); + + var XUL_NS = "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"; + var hbox = document.createElementNS(XUL_NS, "hbox"); + hbox.appendChild(document.createTextNode(5)); + parent.appendChild(hbox); + + document.body.offsetHeight; + document.documentElement.className = ""; +} + +</script> +</head> + +<body onload="boom();"> +<div id="parent"> + <div>1</div> + <div>2</div> +</div> +</body> +</html>
\ No newline at end of file diff --git a/layout/reftests/dom/multipleinsertionpoints-appendmultiple.xhtml b/layout/reftests/dom/multipleinsertionpoints-appendmultiple.xhtml new file mode 100644 index 000000000..c92da0ba2 --- /dev/null +++ b/layout/reftests/dom/multipleinsertionpoints-appendmultiple.xhtml @@ -0,0 +1,44 @@ +<html xmlns="http://www.w3.org/1999/xhtml" class="reftest-wait"> +<head> + +<bindings xmlns="http://www.mozilla.org/xbl" + xmlns:xhtml="http://www.w3.org/1999/xhtml"> + <binding id="a"> + <content> + <xhtml:div> + <children includes="span"/> + </xhtml:div> + <xhtml:div> + <children/> + </xhtml:div> + </content> + </binding> +</bindings> + +<script> +function boom() +{ + document.body.offsetHeight; + + var parent = document.getElementById("parent"); + + var newelt = document.createElement("span"); + newelt.appendChild(document.createTextNode(2)); + parent.appendChild(newelt); + + newelt = document.createElement("div"); + newelt.appendChild(document.createTextNode(5)); + parent.appendChild(newelt); + + document.body.offsetHeight; + document.documentElement.className = ""; +} +</script> + +</head> +<body onload="boom();"> +<div id="parent" style="-moz-binding: url(#a);"> + <div>3</div><span>1</span><div>4</div> +</div> +</body> +</html> diff --git a/layout/reftests/dom/multipleinsertionpoints-appendsingle-1.xhtml b/layout/reftests/dom/multipleinsertionpoints-appendsingle-1.xhtml new file mode 100644 index 000000000..5bfb94674 --- /dev/null +++ b/layout/reftests/dom/multipleinsertionpoints-appendsingle-1.xhtml @@ -0,0 +1,40 @@ +<html xmlns="http://www.w3.org/1999/xhtml" class="reftest-wait"> +<head> + +<bindings xmlns="http://www.mozilla.org/xbl" + xmlns:xhtml="http://www.w3.org/1999/xhtml"> + <binding id="a"> + <content> + <xhtml:div> + <children includes="span"/> + </xhtml:div> + <xhtml:div> + <children/> + </xhtml:div> + </content> + </binding> +</bindings> + +<script> +function boom() +{ + document.body.offsetHeight; + + var parent = document.getElementById("parent"); + + var newelt = document.createElement("div"); + newelt.appendChild(document.createTextNode(5)); + parent.appendChild(newelt); + + document.body.offsetHeight; + document.documentElement.className = ""; +} +</script> + +</head> +<body onload="boom();"> +<div id="parent" style="-moz-binding: url(#a);"> + <div>3</div><span>1</span><div>4</div><span>2</span> +</div> +</body> +</html> diff --git a/layout/reftests/dom/multipleinsertionpoints-appendsingle-2.xhtml b/layout/reftests/dom/multipleinsertionpoints-appendsingle-2.xhtml new file mode 100644 index 000000000..0a12f0d5a --- /dev/null +++ b/layout/reftests/dom/multipleinsertionpoints-appendsingle-2.xhtml @@ -0,0 +1,40 @@ +<html xmlns="http://www.w3.org/1999/xhtml" class="reftest-wait"> +<head> + +<bindings xmlns="http://www.mozilla.org/xbl" + xmlns:xhtml="http://www.w3.org/1999/xhtml"> + <binding id="a"> + <content> + <xhtml:div> + <children includes="span"/> + </xhtml:div> + <xhtml:div> + <children/> + </xhtml:div> + </content> + </binding> +</bindings> + +<script> +function boom() +{ + document.body.offsetHeight; + + var parent = document.getElementById("parent"); + + var newelt = document.createElement("span"); + newelt.appendChild(document.createTextNode(2)); + parent.appendChild(newelt); + + document.body.offsetHeight; + document.documentElement.className = ""; +} +</script> + +</head> +<body onload="boom();"> +<div id="parent" style="-moz-binding: url(#a);"> + <div>3</div><span>1</span><div>4</div><div>5</div> +</div> +</body> +</html> diff --git a/layout/reftests/dom/multipleinsertionpoints-insertmultiple.xhtml b/layout/reftests/dom/multipleinsertionpoints-insertmultiple.xhtml new file mode 100644 index 000000000..7af09689a --- /dev/null +++ b/layout/reftests/dom/multipleinsertionpoints-insertmultiple.xhtml @@ -0,0 +1,49 @@ +<html xmlns="http://www.w3.org/1999/xhtml" class="reftest-wait"> +<head> + +<bindings xmlns="http://www.mozilla.org/xbl" + xmlns:xhtml="http://www.w3.org/1999/xhtml"> + <binding id="a"> + <content> + <xhtml:div> + <children includes="span"/> + </xhtml:div> + <xhtml:div> + <children/> + </xhtml:div> + </content> + </binding> +</bindings> + +<script> +function boom() +{ + document.body.offsetHeight; + + var lastdiv = document.getElementById("last"); + var parent = lastdiv.parentNode; + + var newelt = document.createElement("span"); + newelt.appendChild(document.createTextNode(1)); + parent.insertBefore(newelt, lastdiv); + + newelt = document.createElement("div"); + newelt.appendChild(document.createTextNode(4)); + parent.insertBefore(newelt, lastdiv); + + newelt = document.createElement("span"); + newelt.appendChild(document.createTextNode(2)); + parent.insertBefore(newelt, lastdiv); + + document.body.offsetHeight; + document.documentElement.className = ""; +} +</script> + +</head> +<body onload="boom();"> +<div style="-moz-binding: url(#a);"> + <div>3</div><div id="last">5</div> +</div> +</body> +</html> diff --git a/layout/reftests/dom/multipleinsertionpoints-insertsingle-1.xhtml b/layout/reftests/dom/multipleinsertionpoints-insertsingle-1.xhtml new file mode 100644 index 000000000..b7abfbffb --- /dev/null +++ b/layout/reftests/dom/multipleinsertionpoints-insertsingle-1.xhtml @@ -0,0 +1,41 @@ +<html xmlns="http://www.w3.org/1999/xhtml" class="reftest-wait"> +<head> + +<bindings xmlns="http://www.mozilla.org/xbl" + xmlns:xhtml="http://www.w3.org/1999/xhtml"> + <binding id="a"> + <content> + <xhtml:div> + <children includes="span"/> + </xhtml:div> + <xhtml:div> + <children/> + </xhtml:div> + </content> + </binding> +</bindings> + +<script> +function boom() +{ + document.body.offsetHeight; + + var lastdiv = document.getElementById("last"); + var parent = lastdiv.parentNode; + + var newelt = document.createElement("span"); + newelt.appendChild(document.createTextNode(2)); + parent.insertBefore(newelt, lastdiv); + + document.body.offsetHeight; + document.documentElement.className = ""; +} +</script> + +</head> +<body onload="boom();"> +<div style="-moz-binding: url(#a);"> + <div>3</div><span>1</span><div>4</div><div id="last">5</div> +</div> +</body> +</html> diff --git a/layout/reftests/dom/multipleinsertionpoints-insertsingle-2.xhtml b/layout/reftests/dom/multipleinsertionpoints-insertsingle-2.xhtml new file mode 100644 index 000000000..46b16cd79 --- /dev/null +++ b/layout/reftests/dom/multipleinsertionpoints-insertsingle-2.xhtml @@ -0,0 +1,41 @@ +<html xmlns="http://www.w3.org/1999/xhtml" class="reftest-wait"> +<head> + +<bindings xmlns="http://www.mozilla.org/xbl" + xmlns:xhtml="http://www.w3.org/1999/xhtml"> + <binding id="a"> + <content> + <xhtml:div> + <children includes="span"/> + </xhtml:div> + <xhtml:div> + <children/> + </xhtml:div> + </content> + </binding> +</bindings> + +<script> +function boom() +{ + document.body.offsetHeight; + + var afterelt = document.getElementById("after"); + var parent = afterelt.parentNode; + + var newelt = document.createElement("div"); + newelt.appendChild(document.createTextNode(4)); + parent.insertBefore(newelt, afterelt); + + document.body.offsetHeight; + document.documentElement.className = ""; +} +</script> + +</head> +<body onload="boom();"> +<div style="-moz-binding: url(#a);"> + <div>3</div><span>1</span><span id="after">2</span><div>5</div> +</div> +</body> +</html> diff --git a/layout/reftests/dom/multipleinsertionpoints-ref.xhtml b/layout/reftests/dom/multipleinsertionpoints-ref.xhtml new file mode 100644 index 000000000..0f8ed4206 --- /dev/null +++ b/layout/reftests/dom/multipleinsertionpoints-ref.xhtml @@ -0,0 +1,12 @@ +<html xmlns="http://www.w3.org/1999/xhtml"> +<body> +<div> + <div> + <span>1</span><span>2</span> + </div> + <div> + <div>3</div><div>4</div><div>5</div> + </div> +</div> +</body> +</html> diff --git a/layout/reftests/dom/multipleinsertionpoints-ref2.xhtml b/layout/reftests/dom/multipleinsertionpoints-ref2.xhtml new file mode 100644 index 000000000..b5b9a0750 --- /dev/null +++ b/layout/reftests/dom/multipleinsertionpoints-ref2.xhtml @@ -0,0 +1,25 @@ +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> + +<bindings xmlns="http://www.mozilla.org/xbl" + xmlns:xhtml="http://www.w3.org/1999/xhtml"> + <binding id="a"> + <content> + <xhtml:div> + <children includes="span"/> + </xhtml:div> + <xhtml:div> + <children/> + </xhtml:div> + </content> + </binding> +</bindings> + +</head> + +<body> +<div style="-moz-binding: url(#a);"> + <div>3</div><span>1</span><div>4</div><span>2</span><div>5</div> +</div> +</body> +</html> diff --git a/layout/reftests/dom/reftest-stylo.list b/layout/reftests/dom/reftest-stylo.list new file mode 100644 index 000000000..266ec1c2b --- /dev/null +++ b/layout/reftests/dom/reftest-stylo.list @@ -0,0 +1,76 @@ +# DO NOT EDIT! This is a auto-generated temporary list for Stylo testing +# various tests involving dynamic insertion using the DOM + +# append a single element +skip == appendsingle.html appendsingle.html + +# append several elements +skip == appendmultiple.html appendmultiple.html + +# insert a single element +== insertsingle.html insertsingle.html + +# insert several elements +== insertmultiple.html insertmultiple.html + +# insert multiple nodes to a parent and one of its children +== inserttoparentandchild-1.html inserttoparentandchild-1.html +== inserttoparentandchild-2.html inserttoparentandchild-2.html + +# insert a parent with child and then insert more children to the parent +== insertparentandchild.html insertparentandchild.html + +# insert nodes to two different parents +== inserttwoparents.html inserttwoparents.html + +# multiple content inserts and appends +# multiple range inserts +== insertmultiplemultiple-1.html insertmultiplemultiple-1.html +# a range insert and an append +== insertmultiplemultiple-2.html insertmultiplemultiple-2.html +# multiple range inserts and an append +== insertmultiplemultiple-2.html insertmultiplemultiple-2.html + +# testing bindings that have multiple insertion points +# skip XBL test case on B2G +skip-if(B2G||Mulet) == multipleinsertionpoints-ref2.xhtml multipleinsertionpoints-ref2.xhtml +# Initial mulet triage: parity with B2G/B2G Desktop +# append a single element +skip skip-if(B2G||Mulet) == multipleinsertionpoints-appendsingle-1.xhtml multipleinsertionpoints-appendsingle-1.xhtml +# bug 773482 +# Initial mulet triage: parity with B2G/B2G Desktop +skip skip-if(B2G||Mulet) == multipleinsertionpoints-appendsingle-2.xhtml multipleinsertionpoints-appendsingle-2.xhtml +# bug 773482 +# Initial mulet triage: parity with B2G/B2G Desktop +# append several elements +skip skip-if(B2G||Mulet) == multipleinsertionpoints-appendmultiple.xhtml multipleinsertionpoints-appendmultiple.xhtml +# bug 773482 +# Initial mulet triage: parity with B2G/B2G Desktop +# insert a single element +skip-if(B2G||Mulet) == multipleinsertionpoints-insertsingle-1.xhtml multipleinsertionpoints-insertsingle-1.xhtml +# bug 773482 +# Initial mulet triage: parity with B2G/B2G Desktop +skip-if(B2G||Mulet) == multipleinsertionpoints-insertsingle-2.xhtml multipleinsertionpoints-insertsingle-2.xhtml +# bug 773482 +# Initial mulet triage: parity with B2G/B2G Desktop +# insert several elements +skip-if(B2G||Mulet) == multipleinsertionpoints-insertmultiple.xhtml multipleinsertionpoints-insertmultiple.xhtml +# bug 773482 +# Initial mulet triage: parity with B2G/B2G Desktop + +# test appending some nodes whose frame construction should be done lazily +# followed by appending a node that might not be done lazily +skip skip-if((B2G&&browserIsRemote)||Mulet) == multipleappendwithxul.xhtml multipleappendwithxul.xhtml +# Bug 974780 +# Initial mulet triage: parity with B2G/B2G Desktop +skip == multipleappendwithinput.xhtml multipleappendwithinput.xhtml +skip == multipleappendwitheditable.xhtml multipleappendwitheditable.xhtml + +skip-if(B2G||Mulet) == xbl-children-1.xhtml xbl-children-1.xhtml +# Initial mulet triage: parity with B2G/B2G Desktop +skip-if(B2G||Mulet) == xbl-children-2.xhtml xbl-children-2.xhtml +# Initial mulet triage: parity with B2G/B2G Desktop +skip-if(B2G||Mulet) == xbl-children-3.xhtml xbl-children-3.xhtml +# Initial mulet triage: parity with B2G/B2G Desktop +skip-if(B2G||Mulet) == xbl-children-4.xhtml xbl-children-4.xhtml +# Initial mulet triage: parity with B2G/B2G Desktop diff --git a/layout/reftests/dom/reftest.list b/layout/reftests/dom/reftest.list new file mode 100644 index 000000000..6e8a18108 --- /dev/null +++ b/layout/reftests/dom/reftest.list @@ -0,0 +1,55 @@ +# various tests involving dynamic insertion using the DOM + +# append a single element +== appendsingle.html appendsingle-ref.html + +# append several elements +== appendmultiple.html appendmultiple-ref.html + +# insert a single element +== insertsingle.html insertsingle-ref.html + +# insert several elements +== insertmultiple.html insertmultiple-ref.html + +# insert multiple nodes to a parent and one of its children +== inserttoparentandchild-1.html inserttoparentandchild-ref.html +== inserttoparentandchild-2.html inserttoparentandchild-ref.html + +# insert a parent with child and then insert more children to the parent +== insertparentandchild.html insertparentandchild-ref.html + +# insert nodes to two different parents +== inserttwoparents.html inserttwoparents-ref.html + +# multiple content inserts and appends +# multiple range inserts +== insertmultiplemultiple-1.html insertmultiplemultiple-ref.html +# a range insert and an append +== insertmultiplemultiple-2.html insertmultiplemultiple-ref.html +# multiple range inserts and an append +== insertmultiplemultiple-2.html insertmultiplemultiple-ref.html + +# testing bindings that have multiple insertion points +== multipleinsertionpoints-ref2.xhtml multipleinsertionpoints-ref.xhtml +# append a single element +== multipleinsertionpoints-appendsingle-1.xhtml multipleinsertionpoints-ref.xhtml +== multipleinsertionpoints-appendsingle-2.xhtml multipleinsertionpoints-ref.xhtml +# append several elements +== multipleinsertionpoints-appendmultiple.xhtml multipleinsertionpoints-ref.xhtml +# insert a single element +== multipleinsertionpoints-insertsingle-1.xhtml multipleinsertionpoints-ref.xhtml +== multipleinsertionpoints-insertsingle-2.xhtml multipleinsertionpoints-ref.xhtml +# insert several elements +== multipleinsertionpoints-insertmultiple.xhtml multipleinsertionpoints-ref.xhtml + +# test appending some nodes whose frame construction should be done lazily +# followed by appending a node that might not be done lazily +== multipleappendwithxul.xhtml multipleappendwithxul-ref.xhtml +== multipleappendwithinput.xhtml multipleappendwithinput-ref.xhtml +== multipleappendwitheditable.xhtml multipleappendwitheditable-ref.xhtml + +== xbl-children-1.xhtml xbl-children-1-ref.xhtml +== xbl-children-2.xhtml about:blank +== xbl-children-3.xhtml xbl-children-3-ref.html +== xbl-children-4.xhtml xbl-children-4-ref.html diff --git a/layout/reftests/dom/xbl-children-1-ref.xhtml b/layout/reftests/dom/xbl-children-1-ref.xhtml new file mode 100644 index 000000000..db526e901 --- /dev/null +++ b/layout/reftests/dom/xbl-children-1-ref.xhtml @@ -0,0 +1,16 @@ +<html xmlns="http://www.w3.org/1999/xhtml"> + <head> + <style> + #result { + color: green; + text-decoration: underline; + text-transform: lowercase; + background: yellow; + } + </style> + </head> + <body> + <div id="result">text</div> + </body> +</html> + diff --git a/layout/reftests/dom/xbl-children-1.xhtml b/layout/reftests/dom/xbl-children-1.xhtml new file mode 100644 index 000000000..6d065b61a --- /dev/null +++ b/layout/reftests/dom/xbl-children-1.xhtml @@ -0,0 +1,39 @@ +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> + +<bindings xmlns="http://www.mozilla.org/xbl" + xmlns:xhtml="http://www.w3.org/1999/xhtml"> + <binding id="a"> + <content> + <xhtml:div class="aparent"> + <xhtml:div class="a"> + <children> + <xhtml:div class="b"> + TEXT + </xhtml:div> + </children> + </xhtml:div> + </xhtml:div> + </content> + </binding> +</bindings> + +<style> + + @namespace xbl "http://www.mozilla.org/xbl"; + .a > .b { color: green; } + .a > xbl|children > .b { text-decoration: underline; } + .a .b { text-transform: lowercase; } + .aparent > * > .b { background: yellow; } + + /* Inverse cases. */ + .a > * > xbl|children > .b { color: red !important; } + +</style> + +</head> + +<body> +<div style="-moz-binding: url(#a);" /> +</body> +</html> diff --git a/layout/reftests/dom/xbl-children-2.xhtml b/layout/reftests/dom/xbl-children-2.xhtml new file mode 100644 index 000000000..97b511538 --- /dev/null +++ b/layout/reftests/dom/xbl-children-2.xhtml @@ -0,0 +1,28 @@ +<html xmlns="http://www.w3.org/1999/xhtml" + xmlns:xbl="http://www.mozilla.org/xbl"> +<head> + <style> + .forced { display:block; } + </style> +</head> +<body> + <xbl:children> + FAIL + </xbl:children> + + <xbl:children class="forced"> + FAIL + </xbl:children> + + <xbl:children /> + + <script> + var third = document.body.children[2]; + third.appendChild(document.createTextNode("FAIL")); + + var fourth = document.createElementNS("http://www.mozilla.org/xbl", "children"); + fourth.appendChild(document.createTextNode("FAIL")); + document.body.appendChild(fourth); + </script> +</body> +</html> diff --git a/layout/reftests/dom/xbl-children-3-ref.html b/layout/reftests/dom/xbl-children-3-ref.html new file mode 100644 index 000000000..5c749d9c8 --- /dev/null +++ b/layout/reftests/dom/xbl-children-3-ref.html @@ -0,0 +1,20 @@ +<!DOCTYPE html> +<html> + <head> + <meta charset="UTF-8"> + </head> + <body> + <div style="border: dashed green"> + <span style="color: green">should be green in a green border</span> + </div> + <div style="border: dashed green"> + <span style="color: green">should be green in a green border</span> + </div> + <div><div>Should be uncolored with no border</div></div> + <div>true, true</div> + <div><span>In a span</span><div>Should be uncolored with no border</div></div> + <div>PASS</div> + <div><span style="color: green">PASS</span></div> + <div>PASS</div> + </body> +</html> diff --git a/layout/reftests/dom/xbl-children-3.xhtml b/layout/reftests/dom/xbl-children-3.xhtml new file mode 100644 index 000000000..50ceca357 --- /dev/null +++ b/layout/reftests/dom/xbl-children-3.xhtml @@ -0,0 +1,61 @@ +<html xmlns="http://www.w3.org/1999/xhtml" + xmlns:html="http://www.w3.org/1999/xhtml" + xmlns:xbl="http://www.mozilla.org/xbl" + xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" + class="reftest-wait"> +<head> + <xbl:bindings xmlns="http://www.mozilla.org/xbl"> + <binding id="base"> + <content> + <html:div style="border: solid red"> + <children /> + </html:div> + </content> + <implementation> + <property name="foo" onget="return 42" /> + </implementation> + </binding> + <binding id="derived" extends="#base"> + <content> + <html:div style="border: dashed green"> + <children includes="span" /> + </html:div> + </content> + </binding> + <binding id="nochildren"> + <content> + PASS + </content> + </binding> + </xbl:bindings> +</head> +<body> + <!-- Control case: our (only) child matches the children element. --> + <div id="first" style="-moz-binding: url(#derived)"><span style="color: green">should be green in a green border</span></div> + <!-- Make sure we ignore xul:template and xul:observes elements! --> + <div style="-moz-binding: url(#derived)"><xul:template /><xul:observes /><span style="color: green">should be green in a green border</span></div> + <!-- Case where our (only) child doesn't match any children elements. --> + <div id="second" style="-moz-binding: url(#derived)"><div>Should be uncolored with no border</div></div> + <!-- But make sure the binding was still applied! --> + <div id="output" /> + <script> + var $ = document.getElementById.bind(document); + // Note: Done in an onload handler because binding instantiation is + // asynchronous. + onload = function() { + $('output').textContent = + ($('first').foo === 42) + ", " + ($('first').foo === $('second').foo); + document.documentElement.removeAttribute('class'); + } + </script> + <!-- Case where one of our children matches but the other one doesn't. --> + <div id="third" style="-moz-binding: url(#derived)"><span>In a span</span><div>Should be uncolored with no border</div></div> + + <!-- Control case with no <children> in the binding. --> + <div style="-moz-binding: url(#nochildren)" /> + <!-- Case where we have a child but no <children> in the binding. --> + <div style="-moz-binding: url(#nochildren)"><span style="color: green">PASS</span></div> + <!-- But we must ignore xul:template and xul:observes elements! --> + <div style="-moz-binding: url(#nochildren)"><xul:template /><xul:observes /></div> +</body> +</html> diff --git a/layout/reftests/dom/xbl-children-4-ref.html b/layout/reftests/dom/xbl-children-4-ref.html new file mode 100644 index 000000000..9a4534998 --- /dev/null +++ b/layout/reftests/dom/xbl-children-4-ref.html @@ -0,0 +1,7 @@ +<html> + <body> + <div> + <span>PASS</span> + </div> + </body> +</html> diff --git a/layout/reftests/dom/xbl-children-4.xhtml b/layout/reftests/dom/xbl-children-4.xhtml new file mode 100644 index 000000000..b8d8f8b59 --- /dev/null +++ b/layout/reftests/dom/xbl-children-4.xhtml @@ -0,0 +1,29 @@ +<!DOCTYPE html> +<html xmlns="http://www.w3.org/1999/xhtml" + xmlns:xbl="http://www.mozilla.org/xbl" + class="reftest-wait"> +<head> + <meta charset="UTF-8" /> + <style> + children { display:block; } + </style> +</head> +<body> + <xbl:children /> + <script> + onload = function() { + /* First, schedule a pending restyle of the whole tree. */ + var newSheet = document.createElementNS("http://www.w3.org/1999/xhtml", "style"); + newSheet.appendChild(document.createTextNode("#nosuchelement { }")); + document.head.appendChild(newSheet); + + /* Now, append a frame to our children element, causing the pending restyle to descend into it. */ + var children = document.getElementsByTagName("xbl:children")[0]; + var span = document.createElementNS("http://www.w3.org/1999/xhtml", "span"); + span.appendChild(document.createTextNode("PASS")); + children.appendChild(span); + document.documentElement.removeAttribute("class"); + } + </script> +</body> +</html> |