| <style> |
| div { |
| width: 100px; |
| height: 100px; |
| } |
| img { |
| max-width: 100%; |
| max-height: 100%; |
| } |
| </style> |
| <body> |
| <p>This tests calling decode() for a static image which is also an element in the DOM tree.</p> |
| <div></div> |
| <script> |
| if (window.internals && window.testRunner) { |
| internals.clearMemoryCache(); |
| internals.settings.setWebkitImageReadyEventEnabled(true); |
| internals.settings.setLargeImageAsyncDecodingEnabled(true); |
| testRunner.waitUntilDone(); |
| } |
| |
| var image = new Image; |
| var parent = document.querySelector("div"); |
| parent.appendChild(image); |
| |
| image.onload = (() => { |
| if (window.internals && window.testRunner) { |
| // Force async image decoding for this image. |
| internals.setLargeImageAsyncDecodingEnabledForTesting(image, true); |
| |
| // Force layout and display so the image gets drawn. |
| document.body.offsetHeight; |
| testRunner.display(); |
| |
| // testRunner.display() requests an async image decoding. Wait till it finishes. |
| image.addEventListener("webkitImageFrameReady", function() { |
| // Execute this code in the next loop run. |
| setTimeout(function() { |
| testRunner.display(); |
| // The image frame was decoded for the renderer which is (100x100). This |
| // decode() will request a new decoding with the native size which is (400x400). |
| image.decode().then(() => { |
| parent.style.width = "200px"; |
| parent.style.height = "200px"; |
| // No extra decoding is required to display the image after changing its size. |
| // The image frame was decoded with the native size which is the maximum size |
| // that an image can be decoded with. |
| testRunner.notifyDone(); |
| }); |
| }, 0); |
| }); |
| } |
| }); |
| image.src = "resources/green-400x400.png"; |
| </script> |
| </body> |