<script src="../../../resources/js-test-pre.js"></script>
<script src="../resources/media-controls-loader.js" type="text/javascript"></script>
<body>
<style type="text/css" media="screen">
    
    .media-controls {
        position: absolute;
        top: 0;
        left: 0;
    }
    
</style>
<script type="text/javascript">

window.jsTestIsAsync = true;

description("Showing the tracks panel should suspend the auto-hide behavior until it's hidden.");

const mediaControls = new MacOSInlineMediaControls({ width: 680, height: 300 });

document.body.appendChild(mediaControls.element);

let trackElement;

mediaControls.autoHideController.autoHideDelay = 250;
mediaControls.autoHideController.fadesWhileIdle = true;

debug("mediaControls.showTracksPanel()");
mediaControls.showTracksPanel();

shouldBecomeEqual("mediaControls.tracksPanel.element.parentNode", "mediaControls.element", () => {
    // Let's wait a while to see that the controls bar is still visible.
    setTimeout(() => {
        debug("");
        debug("We've waited long enough so that the controls bar should be faded should the tracks panel not be visible");
        shouldBeFalse("mediaControls.faded");

        debug("");
        debug("Now enter and exit the media controls, the controls bar should remain visible");
        eventSender.mouseMoveTo(700, 10);
        eventSender.mouseMoveTo(650, 10);
        eventSender.mouseMoveTo(700, 10);
        shouldBeFalse("mediaControls.faded");

        // And now dismiss the tracks panel and check that the controls bar
        // fades out as well.
        debug("");
        debug("mediaControls.hideTracksPanel()");
        mediaControls.hideTracksPanel();
        shouldBeTrue("mediaControls.faded");

        debug("");
        mediaControls.element.remove();
        finishJSTest();
    }, mediaControls.autoHideController.autoHideDelay);
});

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