summaryrefslogtreecommitdiffstats
path: root/testing/web-platform/tests/css/css-tables/tools
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-19 00:47:55 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-19 00:47:55 +0000
commit26a029d407be480d791972afb5975cf62c9360a6 (patch)
treef435a8308119effd964b339f76abb83a57c29483 /testing/web-platform/tests/css/css-tables/tools
parentInitial commit. (diff)
downloadfirefox-26a029d407be480d791972afb5975cf62c9360a6.tar.xz
firefox-26a029d407be480d791972afb5975cf62c9360a6.zip
Adding upstream version 124.0.1.upstream/124.0.1
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.html200
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>