diff options
Diffstat (limited to 'layout/reftests/css-grid/support/dyn.js')
-rw-r--r-- | layout/reftests/css-grid/support/dyn.js | 127 |
1 files changed, 127 insertions, 0 deletions
diff --git a/layout/reftests/css-grid/support/dyn.js b/layout/reftests/css-grid/support/dyn.js new file mode 100644 index 0000000000..816a6f9b61 --- /dev/null +++ b/layout/reftests/css-grid/support/dyn.js @@ -0,0 +1,127 @@ +/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- + * vim: sw=2 ts=2 sts=2 et filetype=javascript + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this file, + * You can obtain one at http://mozilla.org/MPL/2.0/. */ + +function loadURL(url,callback) { + var xhttp = new XMLHttpRequest(); + xhttp.onreadystatechange = function() { + if (xhttp.readyState == 4 && xhttp.status == 200) { + callback(xhttp.responseText); + } + }; + xhttp.open("GET", url, true); + xhttp.send(); +} + +function dyn1(selector) { + // get an array of elements matching |selector| + var elems = Array.prototype.slice.call(document.querySelectorAll(selector)) + + // remove the first item in each grid + var removed = elems.map(function(e) { + var child = e.children[0]; + if (child) { + var next = child.nextSibling; + e.removeChild(child); + return [ e, child, next ]; + } else { + return null; + } + }); + + document.body.style.display = 'block'; + document.body.offsetHeight; + + // insert the removed item + removed.map(function(a) { + if (a) { + a[0].insertBefore(a[1],a[2]); + } + }); +} + +function dyn2(selector) { + // get an array of elements matching |selector| + var elems = Array.prototype.slice.call(document.querySelectorAll(selector)) + + // inject a new first item in each grid + var inserted = elems.map(function(e) { + var child = document.createElement('span'); + e.insertBefore(child, e.firstChild); + return [ e, child ]; + }); + + document.body.style.display = 'block'; + document.body.offsetHeight; + + // remove the inserted item + inserted.map(function(a) { + a[0].removeChild(a[1]); + }); +} + +function dyn3(selector) { + // get an array of elements matching |selector| + var elems = Array.prototype.slice.call(document.querySelectorAll(selector)) + + // remove the second item in each grid + var removed = elems.map(function(e) { + var child = e.children[1]; + if (child) { + var next = child.nextSibling; + e.removeChild(child); + return [ e, child, next ]; + } else { + return null; + } + }); + + document.body.style.display = 'block'; + document.body.offsetHeight; + + // insert the removed items + removed.map(function(a) { + if (a) { + a[0].insertBefore(a[1],a[2]); + } + }); +} + +function dyn4(selector) { + dyn3(selector); + dyn2(selector); +} + +function dyn5(selector) { + // get an array of elements matching |selector| + var elems = Array.prototype.slice.call(document.querySelectorAll(selector)) + + // inject 20 new items in each grid + var inserted = elems.map(function(e) { + var a = new Array; + for (var i = 0; i < 20; ++i) { + var child = document.createElement('span'); + e.insertBefore(child, e.firstChild); + a.push(child); + } + return [ e, a ]; + }); + + document.body.style.display = 'block'; + document.body.offsetHeight; + + // remove the inserted item + inserted.map(function(a) { + a[1].forEach(function(child) { + a[0].removeChild(child); + }); + }); +} + +function dynamicTest(url, callback) { + document.body.style.display=''; + document.body.offsetHeight; + loadURL(url,callback); +} |