blob: 5296f1bc9418e350fe1083648dbdb636ec2e09c1 [file] [log] [blame]
<!DOCTYPE html><!-- webkit-test-runner [ additionalSupportedImageTypes=public.heic;public.heics ] -->
<html>
<head>
<script src="../../resources/js-test-pre.js"></script>
</head>
<body>
<img src="">
<script>
function drawFrame(image, frame) {
return new Promise((resolve) => {
// Force layout and display so the image frame starts decoding
document.body.offsetHeight;
testRunner.display();
image.addEventListener("webkitImageFrameReady", function listener() {
debug("Image frame: " + frame + " was displayed.");
image.removeEventListener("webkitImageFrameReady", listener, true);
resolve(frame + 1);
}, true);
});
}
function drawImage(image, frameCount) {
let promise = drawFrame(image, 0);
for (let i = 1; i < frameCount; ++i) {
promise = promise.then((frame) => {
return drawFrame(image, frame);
});
}
return promise;
}
function loadAndDrawImage(image, src, frameCount) {
return new Promise((resolve) => {
image.onload = (() => {
debug("Image was loaded successfully.");
drawImage(image, frameCount).then(resolve);
});
image.src = src;
});
}
(function() {
window.jsTestIsAsync = true;
if (window.internals) {
internals.clearMemoryCache();
internals.settings.setWebkitImageReadyEventEnabled(true);
internals.settings.setAnimatedImageAsyncDecodingEnabled(true);
}
description("Verify HEICS image can animate.");
let image = document.querySelector("img");
loadAndDrawImage(image, "resources/sticker.heics", 3).then(() => {
debug("The HEICS Image was loaded and three frames of it were displayed successfully.");
finishJSTest();
});
})();
</script>
<script src="../../resources/js-test-post.js"></script>
</body>
</html>