1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/content/media/test/test_seek_out_of_range.html Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,82 @@ 1.4 +<!DOCTYPE HTML> 1.5 +<html> 1.6 +<head> 1.7 + <title>Media test: seeking off the end of a file</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 +if (navigator.platform.startsWith("Win")) { 1.17 + SimpleTest.expectAssertions(0, 10); 1.18 +} 1.19 + 1.20 +var manager = new MediaTestManager; 1.21 + 1.22 +// Test if the ended event works correctly. 1.23 + 1.24 +function startTest(e) { 1.25 + var v = e.target; 1.26 + checkMetadata(v._name, v, v._test); 1.27 + is(v._loadedMetadata, false, "Should only receive one loadedmetadata event for " + v._name); 1.28 + v._loadedMetadata = true; 1.29 + v.currentTime = 3.0 * v.duration; 1.30 +} 1.31 + 1.32 +function playbackEnded(e) { 1.33 + var v = e.target; 1.34 + // We should have dispatched an ended event when we seeked to the end of 1.35 + // media, but we want the ended event which dispatches once playback has 1.36 + // completed after the seek to the beginning. 1.37 + if (!v._played) 1.38 + return; 1.39 + ok(v.ended, "Checking ended set after seeking to EOF and playing for " + v._name); 1.40 + ok(!v._finished, "Should only hit the end once for " + v._name); 1.41 + v._finished = true; 1.42 + removeNodeAndSource(v); 1.43 + manager.finished(v.token); 1.44 +} 1.45 + 1.46 +function endSeek(e) { 1.47 + var v = e.target; 1.48 + if (v._seeked) 1.49 + return; 1.50 + v._seeked = true; 1.51 + ok(Math.abs(v.duration - v.currentTime) < 0.1, 1.52 + "Should be at end of media for " + v._name + " t=" + v.currentTime + " d=" + v.duration); 1.53 + v.play(); 1.54 +} 1.55 + 1.56 +function playing(e) { 1.57 + e.target._played = true; 1.58 +} 1.59 + 1.60 +function initTest(test, token) { 1.61 + var type = getMajorMimeType(test.type); 1.62 + var v = document.createElement(type); 1.63 + v.preload = "auto"; 1.64 + v.token = token; 1.65 + manager.started(token); 1.66 + v.src = test.name; 1.67 + v._name = test.name; 1.68 + v._finished = false; 1.69 + v._test = test; 1.70 + v._loadedMetadata = false; 1.71 + v._seeked = false; 1.72 + v._played = false; 1.73 + v.addEventListener("loadedmetadata", startTest, false); 1.74 + v.addEventListener("playing", playing, false); 1.75 + v.addEventListener("seeked", endSeek, false); 1.76 + v.addEventListener("ended", playbackEnded, false); 1.77 + document.body.appendChild(v); 1.78 +} 1.79 + 1.80 +manager.runTests(gSmallTests, initTest); 1.81 + 1.82 +</script> 1.83 +</pre> 1.84 +</body> 1.85 +</html>