58 lines
2.0 KiB
JavaScript
58 lines
2.0 KiB
JavaScript
(function() {
|
|
function createElement(tag, parent, className, id) {
|
|
var el = document.createElement(tag);
|
|
el.className = className;
|
|
if (id)
|
|
el.id = id;
|
|
parent.appendChild(el);
|
|
return el;
|
|
}
|
|
|
|
function createSet(width, height, nested) {
|
|
var container = createElement("div", document.body, "container");
|
|
for (var y = 0; y < height; ++y) {
|
|
for (var x = 0; x < width; ++x)
|
|
createElement("div", container, "float", "float" + x + "_" + y);
|
|
|
|
var nestedContainer = container;
|
|
for ( ; nested > 0; --nested)
|
|
nestedContainer = createElement("div", nestedContainer, "nested", "nested" + x + "_" + nested);
|
|
|
|
createElement("div", container, "float-end", "end" + x)
|
|
}
|
|
return container;
|
|
}
|
|
|
|
function toggle(str, str1, str2) {
|
|
return str == str1 ? str2 : str1;
|
|
}
|
|
|
|
function resetTest() {
|
|
PerfTestRunner.resetRandomSeed();
|
|
var list = document.querySelectorAll(".float.big");
|
|
for (var i = 0; i < list.length; ++i)
|
|
list[i].className = "float";
|
|
}
|
|
|
|
function createTestFunction(width, height, nested, runs) {
|
|
var container = createSet(width, height, nested);
|
|
nested = nested || 0;
|
|
runs = runs || 10;
|
|
return function() {
|
|
container.style.display = "block";
|
|
for (var i = 0; i < runs; ++i) {
|
|
var x = Math.floor(Math.random() * width);
|
|
var y = Math.floor(Math.random() * height);
|
|
var el = document.getElementById("float" + x + "_" + y);
|
|
el.className = toggle(el.className, "float", "float big");
|
|
// Force a layout.
|
|
container.clientHeight;
|
|
}
|
|
resetTest();
|
|
container.style.display = "none";
|
|
}
|
|
}
|
|
|
|
window.createFloatsLayoutTestFunction = createTestFunction;
|
|
})();
|