<!DOCTYPE html>
<html>
<head>
<script src="../../../resources/js-test.js"></script>
<style>
body, html {
    margin: 0;
}
img {
    width: 200px;
    height: 100px;
    position: absolute;
    top: 0;
    left: 0;
}
</style>
</head>
<body>
<img style="object-fit: fill;" src="../resources/green-400x400.png"></img>
<img style="object-fit: contain;" src="../resources/green-400x400.png"></img>
<img style="object-fit: cover;" src="../resources/green-400x400.png"></img>
<img style="object-fit: none;" src="../resources/green-400x400.png"></img>
<img style="object-fit: scale-down;" src="../resources/green-400x400.png"></img>
<pre id="console"></pre>
<script>
function imageOverlayTextRect(image) {
    let bounds = internals.shadowRoot(image).querySelector(".image-overlay-text").getBoundingClientRect();
    return [ Math.round(bounds.left), Math.round(bounds.top), Math.round(bounds.width), Math.round(bounds.height) ];
}

addEventListener("load", async () => {
    textRects = { };

    document.querySelectorAll("img").forEach(image => {
        internals.installImageOverlay(image, [
            {
                topLeft : new DOMPointReadOnly(0, 0),
                topRight : new DOMPointReadOnly(0.5, 0),
                bottomRight : new DOMPointReadOnly(0.5, 0.25),
                bottomLeft : new DOMPointReadOnly(0, 0.25),
                children: [
                    {
                        text : "foo",
                        topLeft : new DOMPointReadOnly(0, 0),
                        topRight : new DOMPointReadOnly(0.5, 0),
                        bottomRight : new DOMPointReadOnly(0.5, 0.25),
                        bottomLeft : new DOMPointReadOnly(0, 0.25),
                    }
                ]
            }
        ]);

        textRects[getComputedStyle(image).objectFit] = imageOverlayTextRect(image);
    });

    shouldBe("textRects['fill']", "[0, 0, 100, 25]");
    shouldBe("textRects['contain']", "[50, 0, 50, 25]");
    shouldBe("textRects['cover']", "[0, -50, 100, 50]");
    shouldBe("textRects['none']", "[-100, -150, 200, 100]");
    shouldBe("textRects['scale-down']", "[50, 0, 50, 25]");
});
</script>
</body>
</html>