summaryrefslogtreecommitdiffstats
path: root/layout/reftests/dom
diff options
context:
space:
mode:
Diffstat (limited to 'layout/reftests/dom')
-rw-r--r--layout/reftests/dom/appendmultiple-ref.html9
-rw-r--r--layout/reftests/dom/appendmultiple.html27
-rw-r--r--layout/reftests/dom/appendsingle-ref.html9
-rw-r--r--layout/reftests/dom/appendsingle.html27
-rw-r--r--layout/reftests/dom/insertmultiple-ref.html9
-rw-r--r--layout/reftests/dom/insertmultiple.html28
-rw-r--r--layout/reftests/dom/insertmultiplemultiple-1.html51
-rw-r--r--layout/reftests/dom/insertmultiplemultiple-2.html39
-rw-r--r--layout/reftests/dom/insertmultiplemultiple-3.html48
-rw-r--r--layout/reftests/dom/insertmultiplemultiple-ref.html19
-rw-r--r--layout/reftests/dom/insertparentandchild-ref.html18
-rw-r--r--layout/reftests/dom/insertparentandchild.html44
-rw-r--r--layout/reftests/dom/insertsingle-ref.html9
-rw-r--r--layout/reftests/dom/insertsingle.html28
-rw-r--r--layout/reftests/dom/inserttoparentandchild-1.html47
-rw-r--r--layout/reftests/dom/inserttoparentandchild-2.html47
-rw-r--r--layout/reftests/dom/inserttoparentandchild-ref.html18
-rw-r--r--layout/reftests/dom/inserttwoparents-ref.html18
-rw-r--r--layout/reftests/dom/inserttwoparents.html45
-rw-r--r--layout/reftests/dom/multipleappendwitheditable-ref.xhtml11
-rw-r--r--layout/reftests/dom/multipleappendwitheditable.xhtml37
-rw-r--r--layout/reftests/dom/multipleappendwithinput-ref.xhtml11
-rw-r--r--layout/reftests/dom/multipleappendwithinput.xhtml36
-rw-r--r--layout/reftests/dom/multipleappendwithxul-ref.xhtml11
-rw-r--r--layout/reftests/dom/multipleappendwithxul.xhtml37
-rw-r--r--layout/reftests/dom/multipleinsertionpoints-appendmultiple-shadow.xhtml47
-rw-r--r--layout/reftests/dom/multipleinsertionpoints-appendsingle-1-shadow.xhtml42
-rw-r--r--layout/reftests/dom/multipleinsertionpoints-appendsingle-2-shadow.xhtml43
-rw-r--r--layout/reftests/dom/multipleinsertionpoints-insertmultiple-shadow.xhtml53
-rw-r--r--layout/reftests/dom/multipleinsertionpoints-insertsingle-1-shadow.xhtml44
-rw-r--r--layout/reftests/dom/multipleinsertionpoints-insertsingle-2-shadow.xhtml43
-rw-r--r--layout/reftests/dom/multipleinsertionpoints-ref.xhtml12
-rw-r--r--layout/reftests/dom/multipleinsertionpoints-ref2-shadow.xhtml28
-rw-r--r--layout/reftests/dom/reftest.list51
34 files changed, 1046 insertions, 0 deletions
diff --git a/layout/reftests/dom/appendmultiple-ref.html b/layout/reftests/dom/appendmultiple-ref.html
new file mode 100644
index 0000000000..e634909e89
--- /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 0000000000..26d2d85401
--- /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 0000000000..e634909e89
--- /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 0000000000..321c60da43
--- /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 0000000000..e634909e89
--- /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 0000000000..cb58f5bdd8
--- /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 0000000000..20cec325a3
--- /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 0000000000..5a9845b7b2
--- /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 0000000000..f9fdb2d33c
--- /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 0000000000..01da6614ce
--- /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 0000000000..0bd911e7fe
--- /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 0000000000..b5d5b8236c
--- /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 0000000000..e634909e89
--- /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 0000000000..42a12ee7bf
--- /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 0000000000..7219e786dc
--- /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 0000000000..cdd0ccdc4a
--- /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 0000000000..0bd911e7fe
--- /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 0000000000..daf6c06271
--- /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 0000000000..16b94491dd
--- /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 0000000000..fb80a5faca
--- /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 0000000000..71fefd5192
--- /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 0000000000..2f79bc0271
--- /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 0000000000..762a15b846
--- /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 0000000000..0573a5df9d
--- /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 0000000000..365d4b37cb
--- /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-shadow.xhtml b/layout/reftests/dom/multipleinsertionpoints-appendmultiple-shadow.xhtml
new file mode 100644
index 0000000000..046d7e5f56
--- /dev/null
+++ b/layout/reftests/dom/multipleinsertionpoints-appendmultiple-shadow.xhtml
@@ -0,0 +1,47 @@
+<html xmlns="http://www.w3.org/1999/xhtml" class="reftest-wait">
+<head>
+<script>
+customElements.define("custom-element", class extends HTMLElement {
+ constructor() {
+ super();
+ const template = document.getElementById("template");
+ const shadowRoot = this.attachShadow({mode: "open"})
+ .appendChild(template.content.cloneNode(true));
+ }
+});
+
+function boom()
+{
+ document.body.offsetHeight;
+
+ var parent = document.getElementById("parent");
+
+ var newelt = document.createElement("span");
+ newelt.setAttribute("slot", "foo");
+ 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();">
+<template id="template">
+ <div>
+ <slot name="foo"/>
+ </div>
+ <div>
+ <slot/>
+ </div>
+</template>
+<custom-element id="parent" style="display: block;">
+ <div>3</div><span slot="foo">1</span><div>4</div>
+</custom-element>
+</body>
+</html>
diff --git a/layout/reftests/dom/multipleinsertionpoints-appendsingle-1-shadow.xhtml b/layout/reftests/dom/multipleinsertionpoints-appendsingle-1-shadow.xhtml
new file mode 100644
index 0000000000..fa79f4d34c
--- /dev/null
+++ b/layout/reftests/dom/multipleinsertionpoints-appendsingle-1-shadow.xhtml
@@ -0,0 +1,42 @@
+<html xmlns="http://www.w3.org/1999/xhtml" class="reftest-wait">
+<head>
+<script>
+customElements.define("custom-element", class extends HTMLElement {
+ constructor() {
+ super();
+ const template = document.getElementById("template");
+ const shadowRoot = this.attachShadow({mode: "open"})
+ .appendChild(template.content.cloneNode(true));
+ }
+});
+
+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();">
+<template id="template">
+ <div>
+ <slot name="foo"/>
+ </div>
+ <div>
+ <slot/>
+ </div>
+</template>
+<custom-element id="parent" style="display: block;">
+ <div>3</div><span slot="foo">1</span><div>4</div><span slot="foo">2</span>
+</custom-element>
+</body>
+</html>
diff --git a/layout/reftests/dom/multipleinsertionpoints-appendsingle-2-shadow.xhtml b/layout/reftests/dom/multipleinsertionpoints-appendsingle-2-shadow.xhtml
new file mode 100644
index 0000000000..1b11798663
--- /dev/null
+++ b/layout/reftests/dom/multipleinsertionpoints-appendsingle-2-shadow.xhtml
@@ -0,0 +1,43 @@
+<html xmlns="http://www.w3.org/1999/xhtml" class="reftest-wait">
+<head>
+<script>
+customElements.define("custom-element", class extends HTMLElement {
+ constructor() {
+ super();
+ const template = document.getElementById("template");
+ const shadowRoot = this.attachShadow({mode: "open"})
+ .appendChild(template.content.cloneNode(true));
+ }
+});
+
+function boom()
+{
+ document.body.offsetHeight;
+
+ var parent = document.getElementById("parent");
+
+ var newelt = document.createElement("span");
+ newelt.setAttribute("slot", "foo");
+ newelt.appendChild(document.createTextNode(2));
+ parent.appendChild(newelt);
+
+ document.body.offsetHeight;
+ document.documentElement.className = "";
+}
+</script>
+
+</head>
+<body onload="boom();">
+<template id="template">
+ <div>
+ <slot name="foo"/>
+ </div>
+ <div>
+ <slot/>
+ </div>
+</template>
+<custom-element id="parent" style="display: block;">
+ <div>3</div><span slot="foo">1</span><div>4</div><div>5</div>
+</custom-element>
+</body>
+</html>
diff --git a/layout/reftests/dom/multipleinsertionpoints-insertmultiple-shadow.xhtml b/layout/reftests/dom/multipleinsertionpoints-insertmultiple-shadow.xhtml
new file mode 100644
index 0000000000..89f138cb67
--- /dev/null
+++ b/layout/reftests/dom/multipleinsertionpoints-insertmultiple-shadow.xhtml
@@ -0,0 +1,53 @@
+<html xmlns="http://www.w3.org/1999/xhtml" class="reftest-wait">
+<head>
+<script>
+customElements.define("custom-element", class extends HTMLElement {
+ constructor() {
+ super();
+ const template = document.getElementById("template");
+ const shadowRoot = this.attachShadow({mode: "open"})
+ .appendChild(template.content.cloneNode(true));
+ }
+});
+
+function boom()
+{
+ document.body.offsetHeight;
+
+ var lastdiv = document.getElementById("last");
+ var parent = lastdiv.parentNode;
+
+ var newelt = document.createElement("span");
+ newelt.setAttribute("slot", "foo");
+ 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.setAttribute("slot", "foo");
+ newelt.appendChild(document.createTextNode(2));
+ parent.insertBefore(newelt, lastdiv);
+
+ document.body.offsetHeight;
+ document.documentElement.className = "";
+}
+</script>
+
+</head>
+<body onload="boom();">
+<template id="template">
+ <div>
+ <slot name="foo"/>
+ </div>
+ <div>
+ <slot/>
+ </div>
+</template>
+<custom-element style="display: block;">
+ <div>3</div><div id="last">5</div>
+</custom-element>
+</body>
+</html>
diff --git a/layout/reftests/dom/multipleinsertionpoints-insertsingle-1-shadow.xhtml b/layout/reftests/dom/multipleinsertionpoints-insertsingle-1-shadow.xhtml
new file mode 100644
index 0000000000..dcefb20017
--- /dev/null
+++ b/layout/reftests/dom/multipleinsertionpoints-insertsingle-1-shadow.xhtml
@@ -0,0 +1,44 @@
+<html xmlns="http://www.w3.org/1999/xhtml" class="reftest-wait">
+<head>
+<script>
+customElements.define("custom-element", class extends HTMLElement {
+ constructor() {
+ super();
+ const template = document.getElementById("template");
+ const shadowRoot = this.attachShadow({mode: "open"})
+ .appendChild(template.content.cloneNode(true));
+ }
+});
+
+function boom()
+{
+ document.body.offsetHeight;
+
+ var lastdiv = document.getElementById("last");
+ var parent = lastdiv.parentNode;
+
+ var newelt = document.createElement("span");
+ newelt.setAttribute("slot", "foo");
+ newelt.appendChild(document.createTextNode(2));
+ parent.insertBefore(newelt, lastdiv);
+
+ document.body.offsetHeight;
+ document.documentElement.className = "";
+}
+</script>
+
+</head>
+<body onload="boom();">
+<template id="template">
+ <div>
+ <slot name="foo"/>
+ </div>
+ <div>
+ <slot/>
+ </div>
+</template>
+<custom-element style="display: block;">
+ <div>3</div><span slot="foo">1</span><div>4</div><div id="last">5</div>
+</custom-element>
+</body>
+</html>
diff --git a/layout/reftests/dom/multipleinsertionpoints-insertsingle-2-shadow.xhtml b/layout/reftests/dom/multipleinsertionpoints-insertsingle-2-shadow.xhtml
new file mode 100644
index 0000000000..987d533376
--- /dev/null
+++ b/layout/reftests/dom/multipleinsertionpoints-insertsingle-2-shadow.xhtml
@@ -0,0 +1,43 @@
+<html xmlns="http://www.w3.org/1999/xhtml" class="reftest-wait">
+<head>
+<script>
+customElements.define("custom-element", class extends HTMLElement {
+ constructor() {
+ super();
+ const template = document.getElementById("template");
+ const shadowRoot = this.attachShadow({mode: "open"})
+ .appendChild(template.content.cloneNode(true));
+ }
+});
+
+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();">
+<template id="template">
+ <div>
+ <slot name="foo"/>
+ </div>
+ <div>
+ <slot/>
+ </div>
+</template>
+<custom-element style="display: block;">
+ <div>3</div><span slot="foo">1</span><span id="after" slot="foo">2</span><div>5</div>
+</custom-element>
+</body>
+</html>
diff --git a/layout/reftests/dom/multipleinsertionpoints-ref.xhtml b/layout/reftests/dom/multipleinsertionpoints-ref.xhtml
new file mode 100644
index 0000000000..0f8ed42066
--- /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-shadow.xhtml b/layout/reftests/dom/multipleinsertionpoints-ref2-shadow.xhtml
new file mode 100644
index 0000000000..7503c7d4b0
--- /dev/null
+++ b/layout/reftests/dom/multipleinsertionpoints-ref2-shadow.xhtml
@@ -0,0 +1,28 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<script>
+customElements.define("custom-element", class extends HTMLElement {
+ constructor() {
+ super();
+ const template = document.getElementById("template");
+ const shadowRoot = this.attachShadow({mode: "open"})
+ .appendChild(template.content.cloneNode(true));
+ }
+});
+</script>
+</head>
+
+<body>
+<template id="template">
+ <div>
+ <slot name="foo"/>
+ </div>
+ <div>
+ <slot/>
+ </div>
+</template>
+<custom-element style="display: block;">
+ <div>3</div><span slot="foo">1</span><div>4</div><span slot="foo">2</span><div>5</div>
+</custom-element>
+</body>
+</html>
diff --git a/layout/reftests/dom/reftest.list b/layout/reftests/dom/reftest.list
new file mode 100644
index 0000000000..64ac914010
--- /dev/null
+++ b/layout/reftests/dom/reftest.list
@@ -0,0 +1,51 @@
+# 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-shadow.xhtml multipleinsertionpoints-ref.xhtml
+# append a single element
+== multipleinsertionpoints-appendsingle-1-shadow.xhtml multipleinsertionpoints-ref.xhtml
+== multipleinsertionpoints-appendsingle-2-shadow.xhtml multipleinsertionpoints-ref.xhtml
+# append several elements
+== multipleinsertionpoints-appendmultiple-shadow.xhtml multipleinsertionpoints-ref.xhtml
+# insert a single element
+== multipleinsertionpoints-insertsingle-1-shadow.xhtml multipleinsertionpoints-ref.xhtml
+== multipleinsertionpoints-insertsingle-2-shadow.xhtml multipleinsertionpoints-ref.xhtml
+# insert several elements
+== multipleinsertionpoints-insertmultiple-shadow.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
+