diff options
Diffstat (limited to 'layout/base/tests/test_bug629838.html')
-rw-r--r-- | layout/base/tests/test_bug629838.html | 97 |
1 files changed, 97 insertions, 0 deletions
diff --git a/layout/base/tests/test_bug629838.html b/layout/base/tests/test_bug629838.html new file mode 100644 index 000000000..34f12fc16 --- /dev/null +++ b/layout/base/tests/test_bug629838.html @@ -0,0 +1,97 @@ +<!DOCTYPE HTML> +<html> +<head> + <title>Tests for MozAfterPaint</title> + <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script> + <script type="application/javascript" src="plugin-utils.js"></script> + <script type="application/javascript"> + setTestPluginEnabledState(SpecialPowers.Ci.nsIPluginTag.STATE_ENABLED); + </script> + <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" /> +</head> +<body> +<p id="display"> +<embed type="application/x-test" width="100" height="100" id="p" + drawmode="solid" color="FF00FF00"></embed> +</p> +<div id="content" style="display: none"> + +</div> +<pre id="test"> +<script class="testbody" type="text/javascript"> + +SimpleTest.waitForExplicitFinish(); +SimpleTest.requestFlakyTimeout("untriaged"); + +var initialPaintCount, afterPaintCount; +var color = 0; + +function onAfterPaint () { + afterPaintCount += 1; +} + +function startTest() { + setTimeout(function () { + afterPaintCount = 0; + initialPaintCount = window.mozPaintCount; + window.addEventListener("MozAfterPaint", onAfterPaint, true); + doBackgroundFlicker(); + }, 500); +} + +document.addEventListener("DOMContentLoaded", startTest, true); + +// Unfortunately we cannot reliably assert that mozPaintCount and afterPaintCount increment perfectly +// in sync, because they can diverge in the presence of OS-triggered paints or system load. +// Instead, wait for a minimum number of afterPaint events to at least ensure that they are being fired. +const minimumAfterPaintsToPass = 10; + +function doPluginFlicker() { + ok(true, "Plugin color iteration " + color + + ", afterpaint count: " + afterPaintCount + + ", mozpaint count: " + window.mozPaintCount); + if (afterPaintCount >= minimumAfterPaintsToPass) { + ok(true, "afterPaintCount incremented enough from plugin color changes."); + SimpleTest.finish(); + return; + } + + color = (color + 1) % 256; + var str = color.toString(16); + if (str.length < 2) { + str = "0" + str; + } + str = "FF" + str + str + str; + document.getElementById("p").setColor(str); + setTimeout(doPluginFlicker, 0); +} + +function doBackgroundFlicker() { + ok(true, "Background color iteration " + color + + ", afterpaint count: " + afterPaintCount + + ", mozpaint count: " + window.mozPaintCount); + if (afterPaintCount >= minimumAfterPaintsToPass) { + ok(true, "afterPaintCount incremented enough from background color changes."); + afterPaintCount = 0; + initialPaintCount = window.mozPaintCount; + doPluginFlicker(); + return; + } + + color = (color + 1) % 256; + document.body.style.backgroundColor = "rgb(" + color + "," + color + "," + color + ")"; + setTimeout(doBackgroundFlicker, 0); +} + +</script> +</pre> + +<div style="height:4000px"></div> +<a id="first" href="http://www.mozilla.org/">first<br>link</a> +<a id="second" href="http://www.mozilla.org/">second link</a> +<a id="third" href="http://www.mozilla.org/">third<br>link</a> +<div style="height:4000px"></div> + +</body> +</html> + |