<!DOCTYPE html><!-- webkit-test-runner [ enableModernMediaControls=false ] -->
<html>
    <head>
        <script src=../../media-resources/video-test.js></script>
        <script src=../../media-resources/media-controls.js></script>
        <script>
            var controls;

            function start() {
                video = document.getElementById('video');
                waitForEventOnce('canplaythrough', function() { video.play(); });
                waitForEventOnce('play', playing);
                waitForEventAndFail('stalled');
                video.src = "../resources/hls/test-live.php";
            }

            function playing() {
                video.pause();
                setTimeout(function() {
                    testExpected('video.duration', Infinity);

                    controls = internals.shadowRoot(video).firstChild.firstChild;
                    dumpMediaControlsTree(controls);

                    timeline = mediaControlsElement(controls, "-webkit-media-controls-timeline");
                    test('timeline == null || timeline.disabled', false);

                    endTest()
                }, 200);
            }

        </script>
    </head>
    <body onload="start()">
        <video id="video" controls></video>
    </body>
</html>
