mirror of
https://github.com/LadybirdBrowser/ladybird
synced 2026-04-26 17:55:07 +02:00
Add 18 crash tests covering various scenarios where image loading callbacks fire after an iframe has been removed from the DOM, making its document inactive. These tests cover microtasks, element tasks, batching dispatcher callbacks, decode promises, lazy loading, srcset, picture elements, nested iframes, document adoption, and iframe reattach/remove cycles.
37 lines
1.1 KiB
HTML
37 lines
1.1 KiB
HTML
<!DOCTYPE html>
|
|
<!-- Test: A picture element with source elements inside an iframe that gets removed.
|
|
The uses_srcset_or_picture() path in update_the_image_data_impl is exercised,
|
|
and callbacks fire on an inactive document. -->
|
|
<html class="test-wait">
|
|
<body>
|
|
<script>
|
|
const imageUrl = new URL("../../Assets/120.png", document.baseURI).href;
|
|
const iframe = document.createElement("iframe");
|
|
iframe.src = "../../Assets/blank.html";
|
|
iframe.onload = () => {
|
|
const doc = iframe.contentDocument;
|
|
|
|
const picture = doc.createElement("picture");
|
|
const source = doc.createElement("source");
|
|
source.srcset = imageUrl;
|
|
source.type = "image/png";
|
|
picture.appendChild(source);
|
|
|
|
const img = doc.createElement("img");
|
|
img.src = imageUrl;
|
|
picture.appendChild(img);
|
|
|
|
doc.body.appendChild(picture);
|
|
|
|
// Remove iframe while picture/source loading is in progress.
|
|
iframe.remove();
|
|
|
|
setTimeout(() => {
|
|
document.documentElement.classList.remove("test-wait");
|
|
}, 500);
|
|
};
|
|
document.body.appendChild(iframe);
|
|
</script>
|
|
</body>
|
|
</html>
|