<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
<html>
<head>
<script src="../../resources/js-test-pre.js"></script>
</head>
<body id="body">

<video width="320" height="240" playsinline id="video" aria-label="Video label1"></video>

<video width="320" height="240" controls id="video2" aria-label="Video label2">
  <source src="../../media/content/counting.mp4" type="video/mp4">
  Your browser does not support the video tag.
</video>

<p id="description"></p>
<div id="console"></div>

<script>

    description("This tests the video elements on iOS.");

    if (window.accessibilityController) {
        jsTestIsAsync = true;
    
        var vid = document.getElementById("video"); 
        var video = accessibilityController.accessibleElementById("video");
        shouldBeFalse("video.isIgnored");
        
        // We shouldn't expose video elements with native controls
        var video2 = accessibilityController.accessibleElementById("video2");
        shouldBeTrue("video2.isIgnored");
        
        vid.oncanplaythrough = function() {
            shouldBe("video.description", "'AXLabel: Video label1, 9 seconds'");
            shouldBe("video.stringValue", "'AXValue: 0 seconds'");
            
            // Test play and pause.
            shouldBeTrue("vid.paused");
            video.press();
            shouldBeFalse("vid.paused");
            video.press();
            shouldBeTrue("vid.paused");
            
            // Test fast forward and rewind.
            video.increment();
            video.increment();
            shouldBe("video.stringValue", "'AXValue: 2 seconds'");
            video.decrement();
            shouldBe("video.stringValue", "'AXValue: 1 seconds'");
            
            finishJSTest();
        };
        
        vid.src = "../../media/content/counting.mp4";
    }
    
</script>

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