1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/content/media/test/test_unseekable.html Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,101 @@ 1.4 +<!DOCTYPE HTML> 1.5 +<html> 1.6 +<head> 1.7 + <title>Media test: unseekable</title> 1.8 + <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script> 1.9 + <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" /> 1.10 + <script type="text/javascript" src="manifest.js"></script> 1.11 +</head> 1.12 +<body> 1.13 +<pre id="test"> 1.14 +<script class="testbody" type="text/javascript"> 1.15 + 1.16 +/* 1.17 + 1.18 +Test that unseekable media can't be seeked. We load a media that shouldn't 1.19 +be seekable, and play through once. While playing through we repeatedly try 1.20 +to seek and check that nothing happens when we do. We also verify that the 1.21 +seekable ranges are empty. 1.22 + 1.23 +*/ 1.24 + 1.25 +var manager = new MediaTestManager; 1.26 + 1.27 +var onseeking = function(event) { 1.28 + var v = event.target; 1.29 + v.actuallySeeked = true; 1.30 +}; 1.31 + 1.32 +var onseeked = function(event) { 1.33 + var v = event.target; 1.34 + v.actuallySeeked = true; 1.35 +}; 1.36 + 1.37 +var ontimeupdate = function(event) { 1.38 + var v = event.target; 1.39 + 1.40 + // Check that when we seek nothing happens. 1.41 + var t = v.currentTime; 1.42 + v.currentTime = v.currentTime /= 2; 1.43 + ok(Math.abs(t - v.currentTime) < 0.01, "Current time shouldn't change when seeking in unseekable media: " + v.name); 1.44 + 1.45 + // Check that the seekable ranges are empty. 1.46 + is(v.seekable.length, 0, "Should have no seekable ranges in unseekable media: " + v.name); 1.47 +}; 1.48 + 1.49 +var onended = function(event) { 1.50 + var v = event.target; 1.51 + 1.52 + // Remove the event listeners so that they can't run if there are any pending 1.53 + // events. 1.54 + v.removeEventListener("seeking", onseeking, false); 1.55 + v.removeEventListener("seeked", onseeked, false); 1.56 + v.removeEventListener("timeupdate", ontimeupdate, false); 1.57 + v.removeEventListener("ended", onended, false); 1.58 + 1.59 + v.src = ""; 1.60 + if (v.parentNode) { 1.61 + v.parentNode.removeChild(v); 1.62 + } 1.63 + 1.64 + // Verify that none of the seeks we did in timeupdate actually seeked. 1.65 + ok(!v.actuallySeeked, "Should not be able to seek in unseekable media: " + v.name); 1.66 + 1.67 + manager.finished(v.token); 1.68 +} 1.69 + 1.70 +function startTest(test, token) { 1.71 + var v = document.createElement('video'); 1.72 + manager.started(token); 1.73 + v.name = test.name; 1.74 + v.src = test.name; 1.75 + v.token = token; 1.76 + v.autoplay = "true"; 1.77 + 1.78 + v.actuallySeeked = false; 1.79 + 1.80 + v.addEventListener("seeking", onseeking, false); 1.81 + v.addEventListener("seeked", onseeked, false); 1.82 + v.addEventListener("timeupdate", ontimeupdate, false); 1.83 + v.addEventListener("ended", onended, false); 1.84 + 1.85 + document.body.appendChild(v); 1.86 +} 1.87 + 1.88 +function canPlay(candidates) { 1.89 + var v = document.createElement("video"); 1.90 + var resources = candidates.filter(function(x){return v.canPlayType(x.type);}); 1.91 + return (resources.length > 0); 1.92 +} 1.93 + 1.94 +if (canPlay(gUnseekableTests)) { 1.95 + manager.runTests(gUnseekableTests, startTest); 1.96 +} else { 1.97 + todo(false, "No files of supported format to test"); 1.98 +} 1.99 + 1.100 + 1.101 +</script> 1.102 +</pre> 1.103 +</body> 1.104 +</html>