mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
99bb123e06
1. Use |SpecialPowers.pushPrefEnv| to enable preference setting in oop. 2. Set the time of redrawing to be the time right after the image is discarded. 3. Modify the assertion to make the comparison non-trivial. 4. Remove <img>. 5. Move drawCanvas() on the image loadComplete.
85 lines
2.6 KiB
HTML
85 lines
2.6 KiB
HTML
<!DOCTYPE HTML>
|
|
<html>
|
|
<!--
|
|
https://bugzilla.mozilla.org/show_bug.cgi?id=399925
|
|
-->
|
|
<head>
|
|
<title>Test for Bug 399925</title>
|
|
<script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
|
|
<script type="text/javascript" src="imgutils.js"></script>
|
|
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
|
|
</head>
|
|
<body>
|
|
<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=399925">Mozilla Bug 399925</a>
|
|
<p id="display"></p>
|
|
<div id="content" style="display: none">
|
|
<canvas id="canvas" width="100" height="100"> </canvas>
|
|
</div>
|
|
<pre id="test">
|
|
<script class="testbody" type="text/javascript">
|
|
|
|
/** Test for Bug 399925. **/
|
|
var pngResults = new Array();
|
|
SimpleTest.waitForExplicitFinish();
|
|
|
|
window.onload = function() {
|
|
// 1. Enable Discarding
|
|
// 2. Sets the discard timer to 500ms so we don't have to wait so long. The
|
|
// actual time is nondeterministic, but is bounded by 2 * timer = 1 second.
|
|
SpecialPowers.pushPrefEnv({
|
|
'set':[['image.mem.discardable',true],
|
|
['image.mem.min_discard_timeout_ms',1000]]
|
|
}, runTest);
|
|
}
|
|
|
|
function runTest() {
|
|
// Create the image _after_ setting the discard timer pref
|
|
var image = new Image();
|
|
image.setAttribute("id", "gif");
|
|
image.src = "bug399925.gif";
|
|
document.getElementById("content").appendChild(image);
|
|
|
|
// 1. Draw the canvas once on loadComplete
|
|
// 2. Redraw the canvas and compare the results right on discard
|
|
addCallbacks(image, drawCanvas, function() {
|
|
drawCanvas();
|
|
is(pngResults[0], pngResults[1], "got different rendered results");
|
|
SimpleTest.finish();
|
|
});
|
|
}
|
|
|
|
function addCallbacks(anImage, loadCompleteCallback, discardCallback) {
|
|
var observer = new ImageDecoderObserverStub();
|
|
observer.discard = function () {
|
|
imgLoadingContent.removeObserver(scriptedObserver);
|
|
discardCallback();
|
|
}
|
|
observer.loadComplete = loadCompleteCallback;
|
|
observer = SpecialPowers.wrapCallbackObject(observer);
|
|
|
|
var scriptedObserver = SpecialPowers.Cc["@mozilla.org/image/tools;1"]
|
|
.getService(SpecialPowers.Ci.imgITools)
|
|
.createScriptedObserver(observer);
|
|
|
|
var imgLoadingContent =
|
|
SpecialPowers.wrap(anImage)
|
|
.QueryInterface(SpecialPowers.Ci.nsIImageLoadingContent);
|
|
imgLoadingContent.addObserver(scriptedObserver);
|
|
}
|
|
|
|
function drawCanvas() {
|
|
var canvas = document.getElementById('canvas');
|
|
var context = canvas.getContext('2d');
|
|
var gif = document.getElementById('gif');
|
|
|
|
context.drawImage(gif, 0, 0);
|
|
ok(true, "we got through the drawImage call without an exception being thrown");
|
|
pngResults.push(canvas.toDataURL());
|
|
}
|
|
|
|
</script>
|
|
</pre>
|
|
</body>
|
|
</html>
|
|
|