<script src="../../../resources/js-test-pre.js"></script>
<script src="../resources/media-controls-utils.js" type="text/javascript"></script>
<script src="../resources/media-controls-loader.js" type="text/javascript"></script>
<body>
<script type="text/javascript">

description("Testing the <code>MacOSFullscreenMediaControls</code> computed styles.");

window.jsTestIsAsync = true;

const mediaControls = new MacOSFullscreenMediaControls;
document.body.appendChild(mediaControls.element);

shouldBecomeEqualToString("window.getComputedStyle(mediaControls.volumeSlider.element).left", "30px", () => {
    shouldBeEqualToString("window.getComputedStyle(mediaControls.volumeSlider.element).top", "0px");
    shouldBeEqualToString("window.getComputedStyle(mediaControls.volumeSlider.element).width", "60px");
    shouldBeEqualToString("window.getComputedStyle(mediaControls.volumeSlider.element).height", "16px");
    mediaControls.element.remove();

    debug("");
    finishMediaControlsTest();
});

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