<body>
    <p>This test ensures an image with decoding="async" will be decoded asynchronously regardless of its size.</p>
    <img decoding="async">
    <script>
        function loadImage(image, src) {
            return new Promise((resolve) => {
                image.onload = (() => {
                    if (window.internals && window.testRunner) {
                        // Force async image decoding for this image.
                        internals.setAsyncDecodingEnabledForTesting(image, true);

                        // Force layout and display so the image gets drawn.
                        document.body.offsetHeight;
                        testRunner.display();

                        // Listen for the webkitImageFrameReady event after requesting
                        // the image decoding.
                        image.addEventListener("webkitImageFrameReady", function() {
                            resolve();
                        }, false);
                    } else
                        resolve();
                });
                image.src = src;
            });
        }

        (function() {
            if (window.internals && window.testRunner) {
                internals.clearMemoryCache();
                internals.settings.setWebkitImageReadyEventEnabled(true);
                testRunner.waitUntilDone();
            }
 
            var image = document.querySelector("img");
            loadImage(image, "resources/green-24x24.jpg", true).then(() => {
                if (window.testRunner)
                    testRunner.notifyDone();
            });
        })();
    </script>
</body>
