diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 19:33:14 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 19:33:14 +0000 |
commit | 36d22d82aa202bb199967e9512281e9a53db42c9 (patch) | |
tree | 105e8c98ddea1c1e4784a60a5a6410fa416be2de /testing/web-platform/tests/css/css-tables/tools | |
parent | Initial commit. (diff) | |
download | firefox-esr-36d22d82aa202bb199967e9512281e9a53db42c9.tar.xz firefox-esr-36d22d82aa202bb199967e9512281e9a53db42c9.zip |
Adding upstream version 115.7.0esr.upstream/115.7.0esr
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'testing/web-platform/tests/css/css-tables/tools')
-rw-r--r-- | testing/web-platform/tests/css/css-tables/tools/markup-generator.html | 200 |
1 files changed, 200 insertions, 0 deletions
diff --git a/testing/web-platform/tests/css/css-tables/tools/markup-generator.html b/testing/web-platform/tests/css/css-tables/tools/markup-generator.html new file mode 100644 index 0000000000..3b37e6c5fe --- /dev/null +++ b/testing/web-platform/tests/css/css-tables/tools/markup-generator.html @@ -0,0 +1,200 @@ +<!doctype html> +<link rel="stylesheet" href="../support/base.css" /> +<aside style="position:absolute"><!-- THIS IS WHERE WE RUN THE EXPERIMENTS --></aside> +<main><textarea style="display: none; width: 100%"></textarea><script> + + var textarea = document.querySelector('textarea'); + var testingBorderAttributes = true; + var seed = 0; + + // This is not meant to be a good random number generator; I literally don't care + function XorshiftMath(seed) { + var x = 1; + var y = 2; + var z = 3; + var w = seed|0; + this.random = function random() { + var t = x; + t ^= t << 11; + t ^= t >> 8; + x = y; y = z; z = w; + w ^= w >> 19; + w ^= t; + return (w%1024)/1024; + } + } + + var rndGen = new XorshiftMath(seed); + function rnd(x) { + return x > rndGen.random(); + } + function pickInList(list) { + var i = list.length; while(i>1 && rnd(1/i)) { i--; } + return list[i-1]; + } + + function generateMarkup(root) { + if(rnd(0.99)) { + + // + // the table has a <table> element + // + var table = document.createElement('table'); + + // + if(testingBorderAttributes) { + if(rnd(0.3)) { table.setAttribute('border',pickInList(['0','10','yes'])); } + if(rnd(0.3)) { table.setAttribute('frame',pickInList(['box','vsides','none'])); } + if(rnd(0.3)) { table.setAttribute('rules',pickInList(['all','rows','groups'])); } + table.setAttribute("cellspacing","0"); + } + + + generateRowGroups(table); + root.appendChild(table); + + } else { + + // + // the table has no <table> element + // + + generateRowGroup(root); + + } + } + + function generateRowGroups(root) { + if(rnd(0.5)) { + + generateRowGroup(root); + while(rnd(0.25)) { + generateRowGroup(root); + } + + } else { + + generateRows(root); + + } + } + + function generateRowGroup(root) { + + var tbody; if(rnd(0.7)) { + tbody = document.createElement('tbody'); + } else if (rnd(0.5)) { + tbody = document.createElement('thead'); + } else { + tbody = document.createElement('tfoot'); + } + + generateRows(tbody); + root.appendChild(tbody); + + } + + function generateRows(root) { + + while(rnd(0.9)) { + if(rnd(0.9)) { + generateRow(root); + } else { + generateCells(root); + } + } + + } + + function generateRow(root) { + + var tr = document.createElement('tr'); + generateCells(tr); + root.appendChild(tr); + + } + + function generateCells(root) { + + while(rnd(0.9)) { + if(rnd(0.9)) { + generateCell(root); + } else { + generateCellContent(root); + } + } + + } + + function generateCell(root) { + + var td = document.createElement( rnd(0.9) ? 'td' : 'th' ); + generateCellContent(td); + root.appendChild(td); + + } + + function generateCellContent() { + // for now, do nothing + } + + for(var i = 10; i--;) { + //document.write("<textarea style='width: 100%; display: none'>"); + var div = document.createElement('div'); + generateMarkup(div); + appendReportFor(div); + //document.write(div.innerHTML); + //document.write("</textarea>"); + } + + if(navigator.userAgent.indexOf("Edge") == -1) { + var downloadLink = document.createElement('a'); + downloadLink.setAttribute("download","report.txt"); + downloadLink.href = "data:," + escape(textarea.value); + downloadLink.textContent = "download"; + document.body.appendChild(downloadLink); + } + + function appendReportFor(markup) { + var report = markup.innerHTML + '\r\n\r\n'; + + // + // append markup to the dom + // + var root = document.querySelector('aside'); + root.innerHTML = ''; + root.appendChild(markup); + + // + // output box stats + // + var boxes = markup.getElementsByTagName("*"); + for(var i = 0; i<boxes.length; i++) { + + var box = boxes[i]; + report += '' + i + ': ' + box.tagName + '\r\n'; + report += 'offsetWidth: ' + box.offsetWidth + '\r\n'; + report += 'offsetHeight: ' + box.offsetHeight + '\r\n'; + report += 'offsetLeft: ' + box.offsetLeft + '\r\n'; + report += 'offsetTop: ' + box.offsetTop + '\r\n'; + report += 'borderTopWidth: ' + getComputedStyle(box).borderTopWidth + '\r\n'; + report += 'borderTopStyle: ' + getComputedStyle(box).borderTopStyle + '\r\n'; + report += 'borderTopColor: ' + getComputedStyle(box).borderTopColor + '\r\n'; + report += 'borderLeftWidth: ' + getComputedStyle(box).borderLeftWidth + '\r\n'; + report += 'borderLeftStyle: ' + getComputedStyle(box).borderLeftStyle + '\r\n'; + report += 'borderLeftColor: ' + getComputedStyle(box).borderLeftColor + '\r\n'; + report += '\r\n'; + + } + + report += '\r\n'; + report += '=====================================================================\r\n'; + report += '\r\n'; + + textarea.value += report; + + root.innerHTML = ''; + + } + +</script></main> |