65 lines
2.2 KiB
HTML
65 lines
2.2 KiB
HTML
<!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>
|