<!DOCTYPE html><!-- webkit-test-runner [ enableModernMediaControls=false ] -->
<html>
    <head>
        <script src="../media-file.js"></script>
        <script src="controls-test-helpers.js"></script>
        <script>

            const allButtons = [
                "Play Button", "Rewind Button", "Status Display", "Mute Box", "AppleTV Device Picker", 
                "Picture-in-picture Button", "Caption Button", "Fullscreen Button", "Timeline", 
                "Current Time", "Thumbnail Track", "Time Remaining"
            ];
            const tester = new ControlsTest("non-existent-media-file", "error")
                .whenReady(setup)
                .start();

            function setup()
            {
                internals.settings.setAllowsPictureInPictureMediaPlayback(true);
                internals.settings.setAllowsAirPlayForMediaPlayback(false);

                tester.test("We are using the Apple idiom")
                    .value(tester.currentState.idiom)
                    .isEqualTo("apple");
                tester.startNewSection("*** Test the controls layout without video ***");
                runTestsWithoutVideo();
            }

            function testControls(data, nextTest)
            {
                if (!data.length) {
                    if (typeof nextTest === "function")
                        nextTest();
                    else
                        tester.end();
                    return;
                }
                
                const test = data.shift();
                
                if (typeof tester.media.webkitSupportsPresentationMode !== "function" || !tester.media.webkitSupportsPresentationMode('picture-in-picture'))
                    test.visible = test.visible.filter(name => name.indexOf("Picture-in-picture Button") === -1);
                if (!internals.setMockMediaPlaybackTargetPickerState)
                    test.visible = test.visible.filter(name => name.indexOf("AppleTV Device Picker") === -1);

                tester.media.style.width = test.width + "px";
                window.setTimeout( () => {
                    tester.logMessage(`* Width ${tester.media.style.width}:`);

                    const isVisible = (state, name) => { 
                        if (state === null || typeof state.className !== "string")
                            return false;
                        return state.className.indexOf("dropped") === -1 && state.className.indexOf("hidden") === -1;
                    }

                    test.visible.forEach(name => {
                        const state = tester.stateForControlsElement(name, true);
                        tester.test(`${name} is visible`)
                            .value(isVisible(state))
                            .isTrue();
                    });

                    allButtons.filter(name => test.visible.indexOf(name) === -1).forEach(name => {
                        const state = tester.stateForControlsElement(name, true);
                        tester.test(`${name} is not visible`)
                            .value(isVisible(state))
                            .isFalse();
                    });

                    tester.logBlankLine();
                    testControls(data, nextTest);
                }, 100);
            }

            function runTestsWithoutVideo()
            {
                const setupNextTest = () => {
                    tester.resetEventTrigger("canplaythrough")
                        .whenReady(runTestsWithVideo)
                        .media.src = findMediaFile("video", "../content/test");
                    tester.startNewSection("*** Test the controls layout with video ***");
                };

                const data = [
                    { width: 60, visible : ["Play Button", "Status Display"] },
                    { width: 90, visible : ["Play Button", "Rewind Button", "Status Display"] },
                    { width: 200, visible : ["Play Button", "Rewind Button", "Status Display", "Mute Box"] },
                ];
                testControls(data, setupNextTest);
            }

            function runTestsWithVideo()
            {
                const setupNextTest = () => {
                    tester.startNewSection("*** Test the controls layout with video and a caption track ***")
                    const track = document.createElement("track");
                    track.kind = "captions";
                    track.src = `data:text/vtt,${encodeURIComponent("WEBVTT\n\n00:00:00.000 --> 00:00:01.000\nCaption 1\n")}`;
                    tester.media.appendChild(track);
                    
                    runTestsWithTextTrack();
                };

                const data = [
                    { width: 60,  visible : ["Play Button"] },
                    { width: 90,  visible : ["Play Button", "Fullscreen Button"] },
                    { width: 120, visible : ["Play Button", "Rewind Button", "Fullscreen Button"] },
                    { width: 150, visible : ["Play Button", "Rewind Button", "Mute Box", "Fullscreen Button"] },
                    { width: 200, visible : ["Play Button", "Rewind Button", "Mute Box", "Picture-in-picture Button", "Fullscreen Button"] },
                    { width: 400, visible : ["Play Button", "Rewind Button", "Timeline", "Current Time", "Thumbnail Track", "Time Remaining", "Mute Box", "Picture-in-picture Button", "Fullscreen Button"] },
                ];

                testControls(data, setupNextTest);
            }

            function runTestsWithTextTrack()
            {
                const setupNextTest = () => {
                    tester.startNewSection("*** Test the controls layout with video, a caption track, and AppleTV ***");
                    internals.settings.setAllowsAirPlayForMediaPlayback(true);
                    internals.setMockMediaPlaybackTargetPickerState("Sleepy TV", "DeviceAvailable");
                    runTestsWithVideoAndAppleTV();
                };

                const data = [
                    { width: 60,  visible : ["Play Button"] },
                    { width: 90,  visible : ["Play Button", "Fullscreen Button"] },
                    { width: 120, visible : ["Play Button", "Rewind Button", "Fullscreen Button"] },
                    { width: 150, visible : ["Play Button", "Rewind Button", "Mute Box", "Fullscreen Button"] },
                    { width: 180, visible : ["Play Button", "Rewind Button", "Mute Box", "Caption Button", "Fullscreen Button"] },
                    { width: 200, visible : ["Play Button", "Rewind Button", "Mute Box", "Caption Button", "Picture-in-picture Button", "Fullscreen Button"] },
                    { width: 400, visible : ["Play Button", "Rewind Button", "Current Time", "Timeline", "Thumbnail Track", "Time Remaining", "Mute Box", "Caption Button", "Picture-in-picture Button", "Fullscreen Button"] },
                ];
                
                testControls(data, internals.setMockMediaPlaybackTargetPickerState ? setupNextTest : null);
            }

            function runTestsWithVideoAndAppleTV()
            {
                const data = [
                    { width: 60,  visible : ["Play Button"] },
                    { width: 90,  visible : ["Play Button", "Fullscreen Button"] },
                    { width: 120, visible : ["Play Button", "Rewind Button", "Fullscreen Button"] },
                    { width: 150, visible : ["Play Button", "Rewind Button", "Mute Box", "Fullscreen Button"] },
                    { width: 180, visible : ["Play Button", "Rewind Button", "Mute Box", "Caption Button", "Fullscreen Button"] },
                    { width: 200, visible : ["Play Button", "Rewind Button", "Mute Box", "Caption Button", "Picture-in-picture Button", "Fullscreen Button"] },
                    { width: 350, visible : ["Play Button", "Rewind Button", "Mute Box", "AppleTV Device Picker", "Caption Button", "Picture-in-picture Button", "Fullscreen Button"] },
                    { width: 400, visible : ["Play Button", "Rewind Button", "Current Time", "Timeline", "Thumbnail Track", "Time Remaining", "Mute Box", "AppleTV Device Picker", "Caption Button", "Picture-in-picture Button", "Fullscreen Button"] },
                ];

                testControls(data);
            }


        </script>
    </head>
    <body>
        <p>Test control element visibility at different element widths.</p>
        <p>This test only runs in DRT!</p>
        <video controls></video>
    </body>
</html>
