<!DOCTYPE HTML><html><head><title>Tests for MozAfterPaint</title><scriptsrc="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script><scriptsrc="chrome://mochikit/content/tests/SimpleTest/paint_listener.js"></script><style>div{width:100px;height:100px;background:radial-gradient(ellipseatcenter,#87e0fd0%,#53cbf140%,#05abe0100%);}</style></head><body></body><script>varutils=window.windowUtils;functionwaitForPaints(){returnnewPromise(function(resolve,reject){waitForAllPaintsFlushed(resolve);});}add_task(async()=>{varelement=document.createElement("div");document.body.appendChild(element);awaitwaitForPaints();utils.checkAndClearPaintedState(element);element.style.opacity="0.5";awaitwaitForPaints();varpainted=utils.checkAndClearPaintedState(element);// *** We check that this repaints because the test is relying// on this property. If this is broken then this test wont// be reliable check for will-change.is(painted,true,"element should have been painted");element.remove();});add_task(async()=>{varelement=document.createElement("div");document.body.appendChild(element);element.style.willChange="opacity";awaitwaitForPaints();utils.checkAndClearPaintedState(element);element.style.opacity="0.5";awaitwaitForPaints();varpainted=utils.checkAndClearPaintedState(element);// BasicLayers' heuristics are so that even with will-change:opacity,// we can still have repaints.if(utils.layerManagerType!="Basic"){is(painted,false,"will-change:opacity element should not have been painted");}element.remove();});add_task(async()=>{varelement=document.createElement("div");document.body.appendChild(element);element.style.willChange="transform";awaitwaitForPaints();utils.checkAndClearPaintedState(element);element.style.transform="translateY(-5px)";awaitwaitForPaints();varpainted=utils.checkAndClearPaintedState(element);// BasicLayers' heuristics are so that even with will-change:transform,// we can still have repaints.if(utils.layerManagerType!="Basic"){is(painted,false,"will-change:transform element should not have been painted");}element.remove();});add_task(async()=>{varelement=document.createElement("div");document.body.appendChild(element);element.style.willChange="translate";awaitwaitForPaints();utils.checkAndClearPaintedState(element);element.style.translate="5px";awaitwaitForPaints();varpainted=utils.checkAndClearPaintedState(element);// BasicLayers' heuristics are so that even with will-change:translate,// we can still have repaints.if(utils.layerManagerType!="Basic"){is(painted,false,"will-change:translate element should not have been painted");}element.remove();});add_task(async()=>{varelement=document.createElement("div");document.body.appendChild(element);element.style.willChange="offset-path";awaitwaitForPaints();utils.checkAndClearPaintedState(element);element.style.offsetPath="path('M55 50 h1')";awaitwaitForPaints();varpainted=utils.checkAndClearPaintedState(element);// BasicLayers' heuristics are so that even with will-change:offset-path,// we can still have repaints.if(utils.layerManagerType!="Basic"){is(painted,false,"will-change:offset-path element should not have been painted");}element.remove();});</script></html>