summaryrefslogtreecommitdiffstats
path: root/layout/painting/crashtests
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 /layout/painting/crashtests
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 'layout/painting/crashtests')
-rw-r--r--layout/painting/crashtests/1402183-1.html20
-rw-r--r--layout/painting/crashtests/1405881-1.html24
-rw-r--r--layout/painting/crashtests/1407470-1.html19
-rw-r--r--layout/painting/crashtests/1413073-1.html15
-rw-r--r--layout/painting/crashtests/1413073-2.html18
-rw-r--r--layout/painting/crashtests/1418177-1.html34
-rw-r--r--layout/painting/crashtests/1418722-1.html17
-rw-r--r--layout/painting/crashtests/1419917.html15
-rw-r--r--layout/painting/crashtests/1425271-1.html54
-rw-r--r--layout/painting/crashtests/1428906-1.html16
-rw-r--r--layout/painting/crashtests/1430589-1.html55
-rw-r--r--layout/painting/crashtests/1454105-1.html22
-rw-r--r--layout/painting/crashtests/1455944-1.html14
-rw-r--r--layout/painting/crashtests/1458145.html11
-rw-r--r--layout/painting/crashtests/1465305-1.html8
-rw-r--r--layout/painting/crashtests/1468124-1.html27
-rw-r--r--layout/painting/crashtests/1469472.html7
-rw-r--r--layout/painting/crashtests/1477831-1.html11
-rw-r--r--layout/painting/crashtests/1504033.html13
-rw-r--r--layout/painting/crashtests/1514544-1.html15
-rw-r--r--layout/painting/crashtests/1547420-1.html20
-rw-r--r--layout/painting/crashtests/1549909.html9
-rw-r--r--layout/painting/crashtests/1551389-1.html6
-rw-r--r--layout/painting/crashtests/1555819-1.html12
-rw-r--r--layout/painting/crashtests/1574392.html1
-rw-r--r--layout/painting/crashtests/1589800-1.html47
-rw-r--r--layout/painting/crashtests/1667503-1.html16
-rw-r--r--layout/painting/crashtests/1713880-1.html10
-rw-r--r--layout/painting/crashtests/1714584-1.html5
-rw-r--r--layout/painting/crashtests/1717655-1.html19
-rw-r--r--layout/painting/crashtests/1763006-1.html23
-rw-r--r--layout/painting/crashtests/1819957-1.html14
-rw-r--r--layout/painting/crashtests/1851726-1.html22
-rw-r--r--layout/painting/crashtests/1862277-1.html73
-rw-r--r--layout/painting/crashtests/crashtests.list34
35 files changed, 726 insertions, 0 deletions
diff --git a/layout/painting/crashtests/1402183-1.html b/layout/painting/crashtests/1402183-1.html
new file mode 100644
index 0000000000..ea54512894
--- /dev/null
+++ b/layout/painting/crashtests/1402183-1.html
@@ -0,0 +1,20 @@
+<!DOCTYPE html>
+<html>
+<head>
+<title>Bug 1402183</title>
+<style type="text/css">
+:not(article) {
+ -webkit-text-stroke-width: 1px;
+ box-decoration-break: clone;
+ clip-path: polygon(69px 1px, 49px 1px, 0px 0px);
+}
+</style>
+</head>
+<body>
+<ins>
+<p>
+r6O#i/q]
+</p>
+</ins>
+</body>
+</html>
diff --git a/layout/painting/crashtests/1405881-1.html b/layout/painting/crashtests/1405881-1.html
new file mode 100644
index 0000000000..01b2098ff5
--- /dev/null
+++ b/layout/painting/crashtests/1405881-1.html
@@ -0,0 +1,24 @@
+<style type="text/css">
+ #container {
+ height: 300px;
+ width: 300px;
+ }
+ #box {
+ height: 100px;
+ width: 100px;
+ background: red;
+ animation: 2s anim;
+ }
+ @keyframes anim {
+ from {
+ transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 10%, 10%, 0, 1);
+ }
+ to {
+ transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 40%, 40%, 0, 1);
+ }
+ }
+
+</style>
+<div id=container>
+ <div id=box></div>
+</div>
diff --git a/layout/painting/crashtests/1407470-1.html b/layout/painting/crashtests/1407470-1.html
new file mode 100644
index 0000000000..0ddf957182
--- /dev/null
+++ b/layout/painting/crashtests/1407470-1.html
@@ -0,0 +1,19 @@
+<body id='test_body'>
+<script>
+let o = [];
+o[0] = document.createElement("tt");
+test_body.appendChild(o[0]);
+o[1] = document.createElement("center");
+o[2] = document.createElement("footer");
+o[0].appendChild(o[2]);
+o[1].animate([{
+ "padding": "80.40vw 0.0vmax",
+ "transform": "matrix(6287.56,268.76,237.34,222.80,186.72,287.94) rotateX(2.046rad)"
+ }], { duration:3845.75 });
+o[2].appendChild(o[1]);
+test_body.animate([{
+ "transform": "scale3d(0.0,5961462.820,250.41)",
+ "outline": "auto thick",
+ "mask": "exclude no-clip url(data:image/gif;base64,R0lGODlhAQABAAD/ACH/C05FVFNDQVBFMi4wAwEAAAAsAAAAAAEAAQAAAgAsAAAAAAEAAQAAAgA7),exclude",
+ }], 3617.63433129);
+</script> \ No newline at end of file
diff --git a/layout/painting/crashtests/1413073-1.html b/layout/painting/crashtests/1413073-1.html
new file mode 100644
index 0000000000..ddecfb2424
--- /dev/null
+++ b/layout/painting/crashtests/1413073-1.html
@@ -0,0 +1,15 @@
+<html class="reftest-wait">
+<body>
+<div style="position:fixed; width:200px; height:200px; background-color:blue">
+ <div style="position:fixed; width:200px; height:200px; left:400px; background-color:red" id="inner"></div>
+</div>
+</body>
+<script>
+ function doTest() {
+ var d = document.getElementById("inner");
+ d.style.backgroundColor = "green";
+ document.documentElement.className = "";
+ }
+ window.addEventListener("MozReftestInvalidate", doTest);
+</script>
+</html>
diff --git a/layout/painting/crashtests/1413073-2.html b/layout/painting/crashtests/1413073-2.html
new file mode 100644
index 0000000000..01d1718745
--- /dev/null
+++ b/layout/painting/crashtests/1413073-2.html
@@ -0,0 +1,18 @@
+<html class="reftest-wait">
+<body>
+<div style="position:absolute; width:200px; height:200px; opacity:0.5">
+ <div style="opacity:0.9">
+ <div style="position:fixed; width:200px; height:200px; left:400px; background-color:blue" id="fixed"></div>
+ </div>
+ <div style="width:200px; height:200px; background-color:red" id="inner"></div>
+</div>
+</body>
+<script>
+ function doTest() {
+ var d = document.getElementById("inner");
+ d.style.backgroundColor = "green";
+ document.documentElement.className = "";
+ }
+ window.addEventListener("MozReftestInvalidate", doTest);
+</script>
+</html>
diff --git a/layout/painting/crashtests/1418177-1.html b/layout/painting/crashtests/1418177-1.html
new file mode 100644
index 0000000000..6420814bce
--- /dev/null
+++ b/layout/painting/crashtests/1418177-1.html
@@ -0,0 +1,34 @@
+<html>
+ <head>
+ <style>
+ * {
+ background: url(16.png), url(16.png) transparent;
+ -webkit-background-clip: text, text;
+ -moz-tab-size: calc(1 + 1) !important;
+ background-blend-mode: screen;
+ align-content: baseline;
+ background-color: green;
+ }
+ </style>
+ <script>
+ function fun_0() {
+ try { o3 = document.createElement('th') } catch (e) {};
+ try { o1.appendChild(o3) } catch (e) {}
+ }
+
+ try { o1 = document.createElement('tr') } catch (e) {}
+ try { o2 = document.createElement('ol') } catch (e) {}
+ try { xhr = new XMLHttpRequest({mozAnon: false }) } catch (e) {}
+ try { document.documentElement.appendChild(o1) } catch (e) {}
+ try { document.documentElement.appendChild(o2) } catch (e) {}
+ for (let i = 0; i < 100; i++) {
+ try { xhr.open('GET', 'data:text/html,1', false); } catch (e) {};
+ try { xhr.send(); } catch (e) {};
+ try { fuzzPriv.GC(); fuzzPriv.CC(); fuzzPriv.GC(); fuzzPriv.CC(); } catch (e) {};
+ try { xhr.addEventListener('readystatechange', fun_0, true) } catch (e) {};
+ try { o2.offsetLeft } catch (e) {};
+ try { document.styleSheets[0].cssRules[0].style['background-origin'] = 'border-box, border-box' } catch (e) {}
+ }
+ </script>
+ </head>
+</html>
diff --git a/layout/painting/crashtests/1418722-1.html b/layout/painting/crashtests/1418722-1.html
new file mode 100644
index 0000000000..93415d3012
--- /dev/null
+++ b/layout/painting/crashtests/1418722-1.html
@@ -0,0 +1,17 @@
+<html class="reftest-wait">
+<body>
+ <div style="width:200px; height:200px; perspective:1000px">
+ <div style="width:200px; height:200px; transform:translateZ(2px); background-color:green" id="transformed"></div>
+ </div>
+ <div style="width: 200px; height:200px; background-color:red" id="helper"></div>
+</body>
+<script>
+ function doTest() {
+ var element = document.getElementById("transformed");
+ element.parentNode.removeChild(element);
+ document.getElementById("helper").style.backgroundColor = "blue";
+ document.documentElement.className = "";
+ }
+ window.addEventListener("MozReftestInvalidate", doTest);
+</script>
+</html>
diff --git a/layout/painting/crashtests/1419917.html b/layout/painting/crashtests/1419917.html
new file mode 100644
index 0000000000..a60dd15403
--- /dev/null
+++ b/layout/painting/crashtests/1419917.html
@@ -0,0 +1,15 @@
+<html>
+ <head>
+ <style>
+ :nth-last-child(2) { -moz-appearance:listbox }
+ </style>
+ <script>
+ try { o1 = document.createElement('tr') } catch(e) { }
+ try { o2 = document.createElement('th') } catch(e) { }
+ try { o3 = document.createElement('canvas') } catch(e) { }
+ try { document.documentElement.appendChild(o1) } catch(e) { }
+ try { o1.appendChild(o2) } catch(e) { }
+ try { o1.appendChild(o3) } catch(e) { }
+ </script>
+ </head>
+</html>
diff --git a/layout/painting/crashtests/1425271-1.html b/layout/painting/crashtests/1425271-1.html
new file mode 100644
index 0000000000..164cb0f11f
--- /dev/null
+++ b/layout/painting/crashtests/1425271-1.html
@@ -0,0 +1,54 @@
+<!DOCTYPE html>
+<html class="reftest-wait">
+
+<head>
+ <meta http-equiv="content-type" content="text/html; charset=UTF-8">
+ <meta charset="utf-8">
+</head>
+
+<body>
+<div id="container">
+ <div id="element">
+ <!--
+ The HTML code for this element has no other meaning than to create
+ display items that are merged together.
+ -->
+ <div style="column-count:2; column-count:2; width:300px; height:100px;">
+ <div id="o" style="opacity:0.5; width:100px; height:200px; background:lime;">
+ <div id="d" style="height:50px; width:80px; background:red; padding:2px">Text</div>
+ </div>
+ </div>
+ </div>
+</div>
+
+<script type="text/javascript">
+function redirect() {
+ document.documentElement.removeAttribute("class");
+
+ // Trigger root frame deletion.
+ window.location.replace("about:blank");
+}
+
+function removeElements(container) {
+ document.body.removeChild(container);
+
+ setTimeout(redirect, 0);
+}
+
+function createElements() {
+ var c = document.getElementById("container");
+ var e = document.getElementById("element");
+ for (var i = 0; i < 1000; ++i) {
+ // Populate the container with elements that cause display item merges.
+ c.appendChild(e.cloneNode(true));
+ }
+
+ setTimeout(() => removeElements(c), 0);
+}
+
+document.addEventListener("MozReftestInvalidate", createElements);
+// window.addEventListener("load", createElements);
+</script>
+
+</body>
+</html>
diff --git a/layout/painting/crashtests/1428906-1.html b/layout/painting/crashtests/1428906-1.html
new file mode 100644
index 0000000000..03e6d3aaf8
--- /dev/null
+++ b/layout/painting/crashtests/1428906-1.html
@@ -0,0 +1,16 @@
+<html><head>
+<meta http-equiv="content-type" content="text/html; charset=UTF-8"><style>
+*,m{background:url()repeat center top fixed}
+#a{transform:scale(1)}
+</style>
+<script>
+function eh1(){
+ try{c=a.insertRow()}catch(e){}
+ try{c.appendChild(b)}catch(e){}
+}
+</script>
+</head><body><table id="a">
+<tbody><tr><d id="b">
+<video>
+<source onerror="eh1()">
+</video></d></tr></tbody></table></body></html>
diff --git a/layout/painting/crashtests/1430589-1.html b/layout/painting/crashtests/1430589-1.html
new file mode 100644
index 0000000000..88bb0494a7
--- /dev/null
+++ b/layout/painting/crashtests/1430589-1.html
@@ -0,0 +1,55 @@
+<html class="reftest-wait"><head>
+<meta http-equiv="content-type" content="text/html; charset=UTF-8">
+ <style>
+ :root {
+ flex-wrap: wrap-reverse;
+ }
+ menuitem {
+ -webkit-mask-image: url(data:image/gif;base64,R0lGODlhEAAQAMQAAORHHOVSKudfOulrSOp3WOyDZu6QdvCchPGolfO0o/XBs/fNwfjZ0frl3/zy7////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAkAABAALAAAAAAQABAAAAVVICSOZGlCQAosJ6mu7fiyZeKqNKToQGDsM8hBADgUXoGAiqhSvp5QAnQKGIgUhwFUYLCVDFCrKUE1lBavAViFIDlTImbKC5Gm2hB0SlBCBMQiB0UjIQA7);
+ }
+
+ * {
+ margin-right: -1px;
+ display: -webkit-box;
+ overflow: scroll;
+ }
+
+
+ .css1 {
+ -webkit-border-bottom-left-radius: 10px;
+ }
+
+
+ </style>
+<script>
+function BOOM(){
+ setTimeout(() => {
+ var elem = document.getElementById("vuln");
+ elem.style.width = 600;
+ elem.style.height = 600;
+ window.requestAnimationFrame(() => {
+ window.requestAnimationFrame(() => {
+ document.documentElement.removeAttribute("class");
+ });
+ });
+ }, 0);
+}
+
+document.addEventListener("MozReftestInvalidate", BOOM);
+//window.addEventListener("load", BOOM);
+</script></head>
+
+<body>
+ <footer>
+ <textarea id="vuln" style="width: 500px; height: 500px;">Ashitaka</textarea>
+ </footer>
+ <menu>
+ <menuitem>
+ <iframe></iframe>
+ </menuitem></menu>
+ <menuitem>
+ <hr>
+ <dialog class="css1"></dialog>
+
+
+</menuitem></body></html>
diff --git a/layout/painting/crashtests/1454105-1.html b/layout/painting/crashtests/1454105-1.html
new file mode 100644
index 0000000000..946d45992b
--- /dev/null
+++ b/layout/painting/crashtests/1454105-1.html
@@ -0,0 +1,22 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="UTF-8">
+<style>
+#a {
+ filter: brightness(1);
+ border-style: solid;
+}
+#b {
+ opacity: 0.2;
+}
+</style>
+</head>
+<body>
+<span id="b">
+ <span id="a">
+ <div></div>
+ </span>
+</span>
+</body>
+</html>
diff --git a/layout/painting/crashtests/1455944-1.html b/layout/painting/crashtests/1455944-1.html
new file mode 100644
index 0000000000..c115f4dd8e
--- /dev/null
+++ b/layout/painting/crashtests/1455944-1.html
@@ -0,0 +1,14 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=UTF-8">
+<meta charset="utf-8">
+</head>
+
+<body>
+<div style="opacity: 0.9;">
+ <iframe style="border: none;" src=""></iframe>
+</div>
+
+</body>
+</html>
diff --git a/layout/painting/crashtests/1458145.html b/layout/painting/crashtests/1458145.html
new file mode 100644
index 0000000000..dc5f07c204
--- /dev/null
+++ b/layout/painting/crashtests/1458145.html
@@ -0,0 +1,11 @@
+<style>
+* { position: fixed; }
+#a {
+perspective: 0px;
+overflow: scroll;
+}
+.cl2 { -webkit-transform-style: preserve-3d; }
+.cl1 { border-bottom-right-radius: 0px 1px; }
+</style>
+<del id="a" class="cl1">
+<dl class="cl2">#_k</dl>
diff --git a/layout/painting/crashtests/1465305-1.html b/layout/painting/crashtests/1465305-1.html
new file mode 100644
index 0000000000..084f524fba
--- /dev/null
+++ b/layout/painting/crashtests/1465305-1.html
@@ -0,0 +1,8 @@
+<style>
+:not(cursor) {
+ -webkit-background-clip: text;
+ border-top-right-radius: 0vh;
+}
+</style>
+><input>
+<dialog open="">
diff --git a/layout/painting/crashtests/1468124-1.html b/layout/painting/crashtests/1468124-1.html
new file mode 100644
index 0000000000..9acf1427db
--- /dev/null
+++ b/layout/painting/crashtests/1468124-1.html
@@ -0,0 +1,27 @@
+<html class="reftest-wait">
+<style>
+:not(feFuncB) {
+ position: fixed;
+}
+a:last-child {
+ -webkit-transform-style: preserve-3d;
+}
+* {
+ -webkit-backface-visibility: hidden;
+</style>
+<script>
+window.requestIdleCallback(function() {
+ document.documentElement.getBoundingClientRect();
+});
+function go() {
+ var c = document.createElement("a")
+ c.text = "-";
+ try { c.replaceChild(b, c.childNodes[0]); } catch(e) { }
+ try { document.body.appendChild(c); } catch(e) { }
+ document.documentElement.className = "";
+}
+</script>
+<body onload=go()>
+<d id="b">|
+<audio controls="">
+</html>
diff --git a/layout/painting/crashtests/1469472.html b/layout/painting/crashtests/1469472.html
new file mode 100644
index 0000000000..f53d027704
--- /dev/null
+++ b/layout/painting/crashtests/1469472.html
@@ -0,0 +1,7 @@
+<style>
+:not(polygon) {
+background-image: url(#x);
+background-blend-mode: hue, normal;
+</style>
+<table>
+<th>
diff --git a/layout/painting/crashtests/1477831-1.html b/layout/painting/crashtests/1477831-1.html
new file mode 100644
index 0000000000..d6483bde02
--- /dev/null
+++ b/layout/painting/crashtests/1477831-1.html
@@ -0,0 +1,11 @@
+<style>
+* {
+ margin-left: 1vw;
+ columns: 2;
+ opacity: 0.2;
+ -webkit-transform: rotate(0deg);
+}
+#a { float: left; }
+</style>
+<content id="a">
+<dd>A</dd>
diff --git a/layout/painting/crashtests/1504033.html b/layout/painting/crashtests/1504033.html
new file mode 100644
index 0000000000..9aeb7973be
--- /dev/null
+++ b/layout/painting/crashtests/1504033.html
@@ -0,0 +1,13 @@
+<style>
+* { -webkit-transform-style: preserve-3d }
+</style>
+<script>
+function go() {
+ a.append("x");
+}
+</script>
+<body onload=go()>
+<svg overflow="auto">
+<use xlink:href="#b" style="-webkit-transform-style: flat"/>
+<use id="b" xlink:href="#a">
+<text id="a">
diff --git a/layout/painting/crashtests/1514544-1.html b/layout/painting/crashtests/1514544-1.html
new file mode 100644
index 0000000000..8e9efdc3c4
--- /dev/null
+++ b/layout/painting/crashtests/1514544-1.html
@@ -0,0 +1,15 @@
+<html class="reftest-wait">
+<script>
+setTimeout(function() {
+ a.appendChild(b);
+ document.documentElement.className = "";
+}, 100)
+</script>
+<style>
+:root { opacity: 0 }
+</style>
+A
+<textarea id="a" hidden=""></textarea>
+<object id="b" >
+A
+</html>
diff --git a/layout/painting/crashtests/1547420-1.html b/layout/painting/crashtests/1547420-1.html
new file mode 100644
index 0000000000..ce54d67d09
--- /dev/null
+++ b/layout/painting/crashtests/1547420-1.html
@@ -0,0 +1,20 @@
+<script></script>
+<style>
+* {
+ text-align-last: right;
+ min-height: max-content;
+ min-width: 1vmin;
+ writing-mode: vertical-rl;
+}
+</style>
+<q style="writing-mode: lr">
+<marquee></marquee>
+<style></style>
+</q>
+<dl style="-webkit-transform: skew(0deg); mso-ignore: colspan">
+<dd>
+<table>
+<dt style="margin-left: 67%; scale: 7 46 0.006057077979">
+</dt>
+<marquee bgcolor="-moz-mac-accentdarkestshadow">
+<button autofocus="autofocus">
diff --git a/layout/painting/crashtests/1549909.html b/layout/painting/crashtests/1549909.html
new file mode 100644
index 0000000000..0542ee91a8
--- /dev/null
+++ b/layout/painting/crashtests/1549909.html
@@ -0,0 +1,9 @@
+<style>
+* {
+ -webkit-column-break-after: always;
+ float: left;
+ column-width: 0px;
+}
+</style>
+}
+<video controls="controls">
diff --git a/layout/painting/crashtests/1551389-1.html b/layout/painting/crashtests/1551389-1.html
new file mode 100644
index 0000000000..4ee12c1ce9
--- /dev/null
+++ b/layout/painting/crashtests/1551389-1.html
@@ -0,0 +1,6 @@
+<style>
+dl::first-letter { float: right }
+* { -webkit-box-shadow: -moz-cellhighlighttext 0px 34px 1px }
+</style>
+<s dir="RTL">
+<dl style="break-inside: avoid">AA</iframe>
diff --git a/layout/painting/crashtests/1555819-1.html b/layout/painting/crashtests/1555819-1.html
new file mode 100644
index 0000000000..0327e3690f
--- /dev/null
+++ b/layout/painting/crashtests/1555819-1.html
@@ -0,0 +1,12 @@
+<style>
+body {
+ width: 1px;
+ height: 5vmax;
+ -webkit-filter: brightness(1);
+}
+* {
+ grid-template-areas: '';
+ columns: 1px;
+}
+</style>
+<keygen autofocus="">aaaa
diff --git a/layout/painting/crashtests/1574392.html b/layout/painting/crashtests/1574392.html
new file mode 100644
index 0000000000..2e8c4d15aa
--- /dev/null
+++ b/layout/painting/crashtests/1574392.html
@@ -0,0 +1 @@
+<u>🏴󠁵󠁳󠁣󠁡󠁿</u>
diff --git a/layout/painting/crashtests/1589800-1.html b/layout/painting/crashtests/1589800-1.html
new file mode 100644
index 0000000000..8af28028a0
--- /dev/null
+++ b/layout/painting/crashtests/1589800-1.html
@@ -0,0 +1,47 @@
+<!DOCTYPE HTML>
+<html>
+<head>
+ <meta http-equiv="content-type" content="text/html; charset=utf-8">
+ <style>
+ #parent {
+ transform: rotateZ(1deg);
+ position: absolute;
+ opacity: 0.5;
+ overflow-x: hidden;
+ }
+
+ #child {
+ width: 10px;
+ height: 10px;
+ }
+
+ .blend {
+ mix-blend-mode: color-burn;
+ }
+ </style>
+</head>
+
+<body>
+ <div id="parent">
+ <div id="child">a</div>
+ </div>
+ <div>
+ <div id="blend">a</div>
+ </div>
+ <script type="text/javascript">
+ function modify() {
+ var e = document.getElementById("child");
+ e.style.backgroundColor = "red";
+ setTimeout(addBlend, 0);
+ }
+
+ function addBlend() {
+ var e = document.getElementById("blend");
+ e.classList.add("blend");
+ }
+
+ // setTimeout(modify, 3000);
+ window.addEventListener("MozAfterPaint", modify);
+ </script>
+</body>
+</html>
diff --git a/layout/painting/crashtests/1667503-1.html b/layout/painting/crashtests/1667503-1.html
new file mode 100644
index 0000000000..70f99b3f37
--- /dev/null
+++ b/layout/painting/crashtests/1667503-1.html
@@ -0,0 +1,16 @@
+<script>
+function go() {
+ b.src = "x:"
+ b.requestFullscreen()
+}
+function fuzz() {
+ a.close("")
+ b.src = "x"
+ a.showModal()
+ a.appendChild(document.createElement("b"))
+}
+</script>
+<body onload=go()>
+<dialog id="a">
+<nav>x</nav>
+<video id="b" onerror="fuzz()"></video>
diff --git a/layout/painting/crashtests/1713880-1.html b/layout/painting/crashtests/1713880-1.html
new file mode 100644
index 0000000000..1ccd59743a
--- /dev/null
+++ b/layout/painting/crashtests/1713880-1.html
@@ -0,0 +1,10 @@
+<script>
+window.onload = () => {
+ let a = document.createElement("dt")
+ c.appendChild(a)
+ let b = document.createElement("button")
+ a.appendChild(b)
+ b.animate([{"all": "revert"}], {delay: 9.04})
+}
+</script>
+<body id='c'></body>
diff --git a/layout/painting/crashtests/1714584-1.html b/layout/painting/crashtests/1714584-1.html
new file mode 100644
index 0000000000..1ef2812a2d
--- /dev/null
+++ b/layout/painting/crashtests/1714584-1.html
@@ -0,0 +1,5 @@
+<style>
+output:only-of-type { opacity: 0 }
+</style>
+<output>
+<iframe src="x">x</iframe>
diff --git a/layout/painting/crashtests/1717655-1.html b/layout/painting/crashtests/1717655-1.html
new file mode 100644
index 0000000000..940dac6dfb
--- /dev/null
+++ b/layout/painting/crashtests/1717655-1.html
@@ -0,0 +1,19 @@
+<!DOCTYPE html>
+<html>
+<head>
+ <style>
+ * {
+ transform: perspective(2337713741.755817Q) !important;
+ height: 2637992280%;
+ }
+
+ * {
+ border-width: medium;
+ display: table;
+ }
+ </style>
+</head>
+<table border="32767" rules="all">
+ <caption></caption>
+</table>
+</html>
diff --git a/layout/painting/crashtests/1763006-1.html b/layout/painting/crashtests/1763006-1.html
new file mode 100644
index 0000000000..080c88e7d8
--- /dev/null
+++ b/layout/painting/crashtests/1763006-1.html
@@ -0,0 +1,23 @@
+<style>
+#a {
+ -webkit-filter: invert(10%);
+ background: url(data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=) repeat-x center top fixed
+}
+</style>
+<script>
+function go() {
+ window.find("1")
+ requestIdleCallback(() => {
+ a.insertCell().appendChild(b)
+ var x = window.getSelection()
+ x.extend(b)
+ x.deleteFromDocument()
+ })
+}
+</script>
+<body onload=go()>
+<table>
+<colgroup>Z1xNfp~Zdx</colgroup>
+<tr id="a">
+<th></th>
+<li id="b">
diff --git a/layout/painting/crashtests/1819957-1.html b/layout/painting/crashtests/1819957-1.html
new file mode 100644
index 0000000000..647c9b7f12
--- /dev/null
+++ b/layout/painting/crashtests/1819957-1.html
@@ -0,0 +1,14 @@
+<style>
+::selection {
+ text-shadow: 0 1px 0px -moz-mac-menushadow;
+}
+</style>
+<script>
+document.addEventListener('DOMContentLoaded', () => {
+ document.execCommand("selectAll", false)
+})
+</script>
+<dir>
+<menu id="foo"></menu>
+<menu>
+<link>a</link>
diff --git a/layout/painting/crashtests/1851726-1.html b/layout/painting/crashtests/1851726-1.html
new file mode 100644
index 0000000000..a57f66c64c
--- /dev/null
+++ b/layout/painting/crashtests/1851726-1.html
@@ -0,0 +1,22 @@
+<style>
+*:scope {
+ background-clip: text, border-box;
+}
+*:only-child {
+ background-image: repeating-radial-gradient(0.62em, blue 28% 0.38em);
+ writing-mode: vertical-lr;
+}
+*:root {
+ text-combine-upright: all;
+}
+</style>
+<script>
+function go() {
+ a.align = "right"
+}
+</script>
+<body onload="go()">
+<table>
+<footer dir="rtl">
+<tbody id="a">
+A
diff --git a/layout/painting/crashtests/1862277-1.html b/layout/painting/crashtests/1862277-1.html
new file mode 100644
index 0000000000..820bade2fd
--- /dev/null
+++ b/layout/painting/crashtests/1862277-1.html
@@ -0,0 +1,73 @@
+<html class="reftest-wait">
+<style>
+.hide {
+ display: none;
+}
+</style>
+
+<!--
+Need an svg element that references a clippath that is display none (so that we don't use the clip path).
+Then make the clippath no longer display none (and do it without touching the clippath itself, ie make an
+ancestor no longer display none).
+We should now draw the clip path, but the bug made us not invalidate.
+Then we can make things worse using retained display list partial updates by marking a frame modified
+that is affected by the clip path a couple times. The retained display list won't have the nsDisplayMask
+container, but the modified display list will have the nsDisplayMask, this will confuse merging when the
+same item appears inside two different containers.
+
+Note that we set widget.windows.window_occlusion_tracking.enabled=false for this test because
+crashtests leave windows open and occlud the crashtest window, which means the refresh driver doesn't
+run, which means the requestAnimationFrame don't run. Bug 1864255 tracks fixing this.
+
+Note that we image.decode-sync.enabled=false for this test because sync decoding triggers extra
+invalidation which "fixes" this bug before it gets a chance to appear. Bug 1866411 tracks this.
+-->
+
+<div style="width: 40px; height: 40px;">
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24" height="24" style="width: 100%; height: 100%;">
+ <defs id="thedefs" class="hide">
+ <clipPath id="aclip">
+ <rect width="10" height="10" x="0" y="0"></rect>
+ </clipPath>
+ </defs>
+ <g clip-path="url(#aclip)">
+ <rect width="23" height="23" x="0" y="1" fill="rgb(0,255,0)"></rect>
+ <rect id="therect" width="1" height="1" x="0" y="0" fill="rgb(255,0,0)"></rect>
+ </g>
+ </svg>
+</div>
+
+
+<script>
+
+function finish() {
+ document.documentElement.className = "";
+}
+
+function TweakSmall() {
+ let therect = document.getElementById("therect");
+ therect.setAttributeNS(null, "fill", "rgb(254,0,0)");
+ requestAnimationFrame(TweakSmall2);
+}
+
+function TweakSmall2() {
+ let therect = document.getElementById("therect");
+ therect.setAttributeNS(null, "fill", "rgb(253,0,0)");
+ requestAnimationFrame(finish);
+}
+
+function DisplaySomeClip() {
+ document.getElementById("thedefs").className.baseVal = "";
+ requestAnimationFrame(TweakSmall);
+}
+
+function start() {
+ requestAnimationFrame(DisplaySomeClip);
+
+}
+
+window.addEventListener("MozReftestInvalidate", start);
+//window.onload = start;
+</script>
+
+</html>
diff --git a/layout/painting/crashtests/crashtests.list b/layout/painting/crashtests/crashtests.list
new file mode 100644
index 0000000000..af2df7830c
--- /dev/null
+++ b/layout/painting/crashtests/crashtests.list
@@ -0,0 +1,34 @@
+load 1402183-1.html
+load 1407470-1.html
+load 1413073-1.html
+load 1413073-2.html
+load 1405881-1.html
+load 1418177-1.html
+load 1418722-1.html
+load 1419917.html
+load 1425271-1.html
+load 1428906-1.html
+pref(widget.windows.window_occlusion_tracking.enabled,false) load 1430589-1.html # Bug 1819154
+load 1454105-1.html
+load 1455944-1.html
+load 1458145.html
+load 1465305-1.html
+load 1468124-1.html
+load 1469472.html
+load 1477831-1.html
+load 1504033.html
+load 1514544-1.html
+asserts(0-1) asserts-if(Android,0-2) load 1547420-1.html
+load 1549909.html
+load 1551389-1.html
+asserts(0-2) load 1555819-1.html
+load 1574392.html
+load 1589800-1.html
+load 1667503-1.html
+load 1713880-1.html
+load 1717655-1.html
+load 1714584-1.html
+load 1763006-1.html
+load 1819957-1.html
+load 1851726-1.html
+pref(widget.windows.window_occlusion_tracking.enabled,false) pref(image.decode-sync.enabled,false) load 1862277-1.html