123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108 |
- <?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;
- }
- div.inserted {
- background: teal; /* To make inserted div elements stand out. */
- }
- div.flexbox {
- border: 1px dashed blue;
- width: 300px;
- display: flex;
- justify-content: space-around;
- 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">[OldText]</div>
- <div class="flexbox" id="f1">[OldText]</div>
- <div class="flexbox" id="f2">[OldText]</div>
- <div class="flexbox" id="f3">[OldText]</div>
- <div class="flexbox" id="f4">[OldText]</div>
- <div class="flexbox" id="f5">[OldText]</div>
- <div class="flexbox" id="f6">[OldText]</div>
- <div class="flexbox" id="f7">[OldText]</div>
- <div class="flexbox" id="f8">[OldText]</div>
- <div class="flexbox" id="f9">[OldText]</div>
- </body>
- </html>
|