/** Test for Bug 399925. **/ var triggerDiscardingManually = false; var pngResults = [];
SimpleTest.waitForExplicitFinish();
SimpleTest.requestFlakyTimeout("untriaged");
window.onload = function() {
// It'd be nice to reduce the discard timer here, but unfortunately we only
// read that pref on startup. We instead manually trigger discarding on
// platforms where the discard timer is too long (which we'll somewhat
// arbitrarily define as 'longer than 60 seconds'). var expirationMs =
SpecialPowers.getIntPref('image.mem.surfacecache.min_expiration_ms');
if (expirationMs > 60000) {
ok(true, 'Triggering discarding manually because SurfaceCache expiration ' + 'is ' + expirationMs + ' ms');
triggerDiscardingManually = true;
} else {
ok(true, 'Using normal discarding because SurfaceCache expiration ' + 'is ' + expirationMs + ' ms');
}
// Enable discarding for the test.
SpecialPowers.pushPrefEnv({ 'set':[['image.mem.discardable',true]]
}, runTest);
}
function runTest() { var image = new Image();
image.setAttribute("id", "gif");
// 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();
});
if (triggerDiscardingManually) { var request = SpecialPowers.wrap(image)
.getRequest(SpecialPowers.Ci.nsIImageLoadingContent.CURRENT_REQUEST);
setTimeout(() => request.requestDiscard(), 1000);
}
}
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);
imgLoadingContent.addObserver(scriptedObserver);
}
function drawCanvas() { varcanvas = 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>
Messung V0.5
¤ Dauer der Verarbeitung: 0.16 Sekunden
(vorverarbeitet)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.