flexbox-dyn-insertAroundDiv-1.xhtml 3.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!--
  3. Any copyright is dedicated to the Public Domain.
  4. http://creativecommons.org/publicdomain/zero/1.0/
  5. -->
  6. <!--
  7. This test verifies that we reconstruct frames as necessary, after content
  8. (including whitespace & text) is dynamically inserted as a child of a
  9. flexbox. (Note that in cases where we know the whitespace is going to be
  10. dropped, we don't bother reconstructing frames. This test is to be sure we
  11. aren't overzealous with that optimization.)
  12. -->
  13. <html xmlns="http://www.w3.org/1999/xhtml"
  14. class="reftest-wait">
  15. <head>
  16. <style>
  17. body { font-size: 10px; }
  18. div.flexbox {
  19. border: 1px dashed blue;
  20. width: 300px;
  21. display: flex;
  22. justify-content: space-around;
  23. margin-bottom: 1px;
  24. white-space: pre;
  25. }
  26. </style>
  27. <script>
  28. function insertNodeAtPosnInElem(aNodeToInsert, aPosn, aParentId) {
  29. var parent = document.getElementById(aParentId);
  30. var insertBeforeTarget = parent.firstChild;
  31. for (var i = 0; i &lt; aPosn; i++) {
  32. insertBeforeTarget = insertBeforeTarget.nextSibling;
  33. }
  34. parent.insertBefore(aNodeToInsert, insertBeforeTarget);
  35. }
  36. function tweak() {
  37. // Just inserting whitespace
  38. // -------------------------
  39. insertNodeAtPosnInElem(document.createTextNode(" "), 0, "f0");
  40. insertNodeAtPosnInElem(document.createTextNode(" "), 1, "f1");
  41. // Inserting text or text with whitespace
  42. // --------------------------------------
  43. insertNodeAtPosnInElem(document.createTextNode("[NewText]"), 0, "f2");
  44. insertNodeAtPosnInElem(document.createTextNode("[NewText] "), 0, "f3");
  45. insertNodeAtPosnInElem(document.createTextNode(" [NewText]"), 0, "f4");
  46. insertNodeAtPosnInElem(document.createTextNode("[NewText]"), 1, "f5");
  47. insertNodeAtPosnInElem(document.createTextNode("[NewText] "), 1, "f6");
  48. insertNodeAtPosnInElem(document.createTextNode(" [NewText]"), 1, "f7");
  49. // Same as the whitespace cases immediately above, but now with separate
  50. // text nodes for the whitespace vs. the text
  51. insertNodeAtPosnInElem(document.createTextNode(" "), 0, "f8");
  52. insertNodeAtPosnInElem(document.createTextNode("[NewText]"), 0, "f8");
  53. insertNodeAtPosnInElem(document.createTextNode("[NewText]"), 0, "f9");
  54. insertNodeAtPosnInElem(document.createTextNode(" "), 0, "f9");
  55. insertNodeAtPosnInElem(document.createTextNode(" "), 1, "f10");
  56. insertNodeAtPosnInElem(document.createTextNode("[NewText]"), 1, "f10");
  57. insertNodeAtPosnInElem(document.createTextNode("[NewText]"), 1, "f11");
  58. insertNodeAtPosnInElem(document.createTextNode(" "), 1, "f11");
  59. document.documentElement.removeAttribute("class");
  60. }
  61. window.addEventListener("MozReftestInvalidate", tweak, false);
  62. </script>
  63. </head>
  64. <body>
  65. <div class="flexbox" id="f0"><div>[OldText]</div></div>
  66. <div class="flexbox" id="f1"><div>[OldText]</div></div>
  67. <div class="flexbox" id="f2"><div>[OldText]</div></div>
  68. <div class="flexbox" id="f3"><div>[OldText]</div></div>
  69. <div class="flexbox" id="f4"><div>[OldText]</div></div>
  70. <div class="flexbox" id="f5"><div>[OldText]</div></div>
  71. <div class="flexbox" id="f6"><div>[OldText]</div></div>
  72. <div class="flexbox" id="f7"><div>[OldText]</div></div>
  73. <div class="flexbox" id="f8"><div>[OldText]</div></div>
  74. <div class="flexbox" id="f9"><div>[OldText]</div></div>
  75. <div class="flexbox" id="f10"><div>[OldText]</div></div>
  76. <div class="flexbox" id="f11"><div>[OldText]</div></div>
  77. </body>
  78. </html>