const FAILURE_TIMEOUT = 120000; // Fail early after 120 seconds (2 minutes)
const Cc = SpecialPowers.Cc;
const Ci = SpecialPowers.Ci;
const gContent = document.getElementById("content");
var gDispatched = false; var gRanEvent = false; var gObserver; var gImg1; var gImg2; var gFirstImageLoaded = false; var gOuter; var gFinished = false; var gFirstRequest = null;
function cleanUpAndFinish() {
if (gFinished) {
return;
} var imgLoadingContent = SpecialPowers.wrap(gImg1);
imgLoadingContent.removeObserver(gOuter);
function frameUpdate(aRequest) {
if (!gDispatched) {
Promise.resolve().then(function() {
gRanEvent = true;
});
gDispatched = true;
gFirstRequest = aRequest;
} else if (aRequest != gFirstRequest) {
ok(!gRanEvent, "Should not have run event before all frame update events occurred!");
cleanUpAndFinish();
}
}
function failTest() {
ok(false, "timing out after " + FAILURE_TIMEOUT + "ms. ");
cleanUpAndFinish();
}
function waitForLoadAndTest(image) {
return () => {
// Draw the image into a canvas to ensure it's decoded. varcanvas = document.createElement('canvas'); var context = canvas.getContext('2d');
context.drawImage(image, 0, 0);
// Attach the observer. var imgLoadingContent = SpecialPowers.wrap(image);
imgLoadingContent.addObserver(gOuter);
// If the other image already loaded, add both images to the document, which
// begins the real test.
if (gFirstImageLoaded) {
gContent.appendChild(gImg1);
gContent.appendChild(gImg2);
} else {
gFirstImageLoaded = true;
}
};
}
function main() {
gImg1 = new Image();
gImg2 = new Image();
// Create and customize decoder observer var obs = new ImageDecoderObserverStub();
obs.frameUpdate = frameUpdate;
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.