2012-09-29 23:42:29 -07:00
|
|
|
<?xml version="1.0" encoding="UTF-8"?>
|
|
|
|
<!--
|
|
|
|
Any copyright is dedicated to the Public Domain.
|
|
|
|
http://creativecommons.org/publicdomain/zero/1.0/
|
|
|
|
-->
|
|
|
|
<!--
|
|
|
|
This test verifies that we reconstruct frames as necessary, after content
|
|
|
|
(including whitespace & divs) is dynamically inserted as a child of a
|
|
|
|
flexbox. (Note that in cases where we know the whitespace is going to be
|
|
|
|
dropped, we don't bother reconstructing frames. This test is to be sure we
|
|
|
|
aren't overzealous with that optimization.)
|
|
|
|
-->
|
|
|
|
<html xmlns="http://www.w3.org/1999/xhtml"
|
|
|
|
class="reftest-wait">
|
|
|
|
<head>
|
|
|
|
<style>
|
|
|
|
body { font-size: 10px; }
|
|
|
|
|
|
|
|
<!-- to make inserted div elements stand out -->
|
|
|
|
div.inserted { background: teal; }
|
|
|
|
|
|
|
|
div.flexbox {
|
|
|
|
border: 1px dashed blue;
|
|
|
|
width: 300px;
|
2012-10-15 12:42:43 -07:00
|
|
|
display: flex;
|
|
|
|
justify-content: space-around;
|
2012-09-29 23:42:29 -07:00
|
|
|
margin-bottom: 1px;
|
|
|
|
white-space: pre;
|
|
|
|
}
|
|
|
|
</style>
|
|
|
|
<script>
|
|
|
|
function insertNodeAtPosnInElem(aNodeToInsert, aPosn, aParentId) {
|
|
|
|
var parent = document.getElementById(aParentId);
|
|
|
|
var insertBeforeTarget = parent.firstChild;
|
|
|
|
for (var i = 0; i < aPosn; i++) {
|
|
|
|
insertBeforeTarget = insertBeforeTarget.nextSibling;
|
|
|
|
}
|
|
|
|
parent.insertBefore(aNodeToInsert, insertBeforeTarget);
|
|
|
|
}
|
|
|
|
|
|
|
|
function createDivElem() {
|
|
|
|
var div = document.createElement("div");
|
|
|
|
div.setAttribute("class", "inserted");
|
|
|
|
div.appendChild(document.createTextNode("[NewDiv]"));
|
|
|
|
return div;
|
|
|
|
}
|
|
|
|
|
|
|
|
function tweak() {
|
|
|
|
// Inserting div, adjacent to inline content
|
|
|
|
// -----------------------------------------
|
|
|
|
insertNodeAtPosnInElem(createDivElem(), 0, "f0");
|
|
|
|
insertNodeAtPosnInElem(createDivElem(), 1, "f1");
|
|
|
|
|
|
|
|
// Inserting div and whitespace, before inline content
|
|
|
|
// ---------------------------------------------------
|
|
|
|
insertNodeAtPosnInElem(document.createTextNode(" "), 0, "f2");
|
|
|
|
insertNodeAtPosnInElem(createDivElem(), 0, "f2");
|
|
|
|
|
|
|
|
insertNodeAtPosnInElem(createDivElem(), 0, "f3");
|
|
|
|
insertNodeAtPosnInElem(document.createTextNode(" "), 0, "f3");
|
|
|
|
|
|
|
|
// Inserting div and whitespace, after inline content
|
|
|
|
// ---------------------------------------------------
|
|
|
|
insertNodeAtPosnInElem(document.createTextNode(" "), 1, "f4");
|
|
|
|
insertNodeAtPosnInElem(createDivElem(), 1, "f4");
|
|
|
|
|
|
|
|
insertNodeAtPosnInElem(createDivElem(), 1, "f5");
|
|
|
|
insertNodeAtPosnInElem(document.createTextNode(" "), 1, "f5");
|
|
|
|
|
|
|
|
// Inserting div and text, before inline content
|
|
|
|
// ---------------------------------------------------
|
|
|
|
insertNodeAtPosnInElem(document.createTextNode("[NewText]"), 0, "f6");
|
|
|
|
insertNodeAtPosnInElem(createDivElem(), 0, "f6");
|
|
|
|
|
|
|
|
insertNodeAtPosnInElem(createDivElem(), 0, "f7");
|
|
|
|
insertNodeAtPosnInElem(document.createTextNode("[NewText]"), 0, "f7");
|
|
|
|
|
|
|
|
// Inserting div and text, after inline content
|
|
|
|
// ---------------------------------------------------
|
|
|
|
insertNodeAtPosnInElem(document.createTextNode("[NewText]"), 1, "f8");
|
|
|
|
insertNodeAtPosnInElem(createDivElem(), 1, "f8");
|
|
|
|
|
|
|
|
insertNodeAtPosnInElem(createDivElem(), 1, "f9");
|
|
|
|
insertNodeAtPosnInElem(document.createTextNode("[NewText]"), 1, "f9");
|
|
|
|
|
|
|
|
document.documentElement.removeAttribute("class");
|
|
|
|
}
|
|
|
|
|
|
|
|
window.addEventListener("MozReftestInvalidate", tweak, false);
|
|
|
|
</script>
|
|
|
|
</head>
|
|
|
|
<body>
|
|
|
|
<div class="flexbox" id="f0"><div>[OldText]</div></div>
|
|
|
|
<div class="flexbox" id="f1"><div>[OldText]</div></div>
|
|
|
|
<div class="flexbox" id="f2"><div>[OldText]</div></div>
|
|
|
|
<div class="flexbox" id="f3"><div>[OldText]</div></div>
|
|
|
|
<div class="flexbox" id="f4"><div>[OldText]</div></div>
|
|
|
|
<div class="flexbox" id="f5"><div>[OldText]</div></div>
|
|
|
|
<div class="flexbox" id="f6"><div>[OldText]</div></div>
|
|
|
|
<div class="flexbox" id="f7"><div>[OldText]</div></div>
|
|
|
|
<div class="flexbox" id="f8"><div>[OldText]</div></div>
|
|
|
|
<div class="flexbox" id="f9"><div>[OldText]</div></div>
|
|
|
|
</body>
|
|
|
|
</html>
|