<!DOCTYPE html> <!-- webkit-test-runner [ useFlexibleViewport=true ] -->
<meta name="viewport" content="width=device-width">
<script src="../resources/media-controls-utils.js"></script>
<script src="../../../resources/ui-helper.js"></script>
<script src="../../../resources/js-test-pre.js"></script>
<body>
<video src="../../content/counting-subtitled.m4v" style="position: absolute; left: 0; top: 0; width: 600px;" autoplay controls muted playsinline></video>
<script type="text/javascript">

window.jsTestIsAsync = true;

description("Ensure we have the Auto text track selected by default.");

const media = document.querySelector("video");
const shadowRoot = window.internals.shadowRoot(media);

window.internals.setMediaControlsMaximumRightContainerButtonCountOverride(media, 100); // A finite value larger than anything likely.

let checkedItems = null;

media.addEventListener("play", () => {
    media.pause();

    shouldBecomeDifferent("shadowRoot.querySelector('button.tracks')", "null", () => {
        shouldBecomeDifferent("shadowRoot.querySelector('button.tracks').getBoundingClientRect().width", "0", async () => {
            debug("Setting caption display mode to 'automatic'...");
            window.internals.setCaptionDisplayMode("automatic");

            debug("Tapping tracks button...");
            await pressOnElement(shadowRoot.querySelector("button.tracks"));
            contextmenu = await getTracksContextMenu();
            checkedItems = contextmenu[0].children.filter((item) => item.checked);
            shouldBe("checkedItems.length", "1");
            shouldBeEqualToString("checkedItems[0].title", "Auto (Recommended)");

            debug("Setting caption display mode to 'forcedonly'...");
            window.internals.setCaptionDisplayMode("forcedonly");

            media.remove();
            finishJSTest();
        });
    });
});

</script>
<script src="../../../resources/js-test-post.js"></script>
</body>
