1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/content/media/test/test_replay_metadata.html Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,120 @@ 1.4 +<!DOCTYPE HTML> 1.5 +<html> 1.6 +<!-- 1.7 +https://bugzilla.mozilla.org/show_bug.cgi?id=467972 1.8 +--> 1.9 +<head> 1.10 + <title>Test for Bug 467972</title> 1.11 + <script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script> 1.12 + <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/> 1.13 + <script type="text/javascript" src="manifest.js"></script> 1.14 +</head> 1.15 +<body> 1.16 +<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=467972">Mozilla Bug 467972</a> 1.17 + 1.18 +<p id="display"></p> 1.19 +<div id="content" style="display: none"> 1.20 + 1.21 +</div> 1.22 +<pre id="test"> 1.23 +<script type="application/javascript"> 1.24 + 1.25 +// Test for Bug 467972. Tests that when we play to end, seek to 0, and play again, that we don't 1.26 +// send/receive multiple loadeddata and loadedmetadata events. 1.27 + 1.28 +var manager = new MediaTestManager; 1.29 + 1.30 +function seekStarted(evt) { 1.31 + var v = evt.target; 1.32 + v._gotSeekStarted = true; 1.33 +} 1.34 + 1.35 +function seekEnded(evt) { 1.36 + var v = evt.target; 1.37 + v._gotSeekEnded = true; 1.38 + v.play(); 1.39 +} 1.40 + 1.41 +function loadedData(evt) { 1.42 + var v = evt.target; 1.43 + v._loadedDataCount++; 1.44 + ok(v._loadedDataCount <= 1, "No more than 1 onloadeddata event for " + v._name); 1.45 +} 1.46 + 1.47 +function loadedMetaData(evt) { 1.48 + var v = evt.target; 1.49 + v._loadedMetaDataCount++; 1.50 + ok(v._loadedMetaDataCount <= 1, "No more than 1 onloadedmetadata event for " + v._name); 1.51 + checkMetadata(v._name, v, v._test); 1.52 + v.play(); 1.53 +} 1.54 + 1.55 +function playing(evt) { 1.56 + evt.target._playingCount++; 1.57 +} 1.58 + 1.59 +function removeNodeAndListener(n) { 1.60 + n.removeEventListener("loadedmetadata", loadedMetaData, false); 1.61 + n.removeEventListener("ended", playbackEnded, false); 1.62 + n.removeEventListener("playing", playing, false); 1.63 + n.removeEventListener("loadeddata", loadedData, false); 1.64 + n.removeEventListener("seeking", seekStarted, false); 1.65 + n.removeEventListener("seeked", seekEnded, false); 1.66 + removeNodeAndSource(n); 1.67 +} 1.68 + 1.69 +function playbackEnded(evt) { 1.70 + var v = evt.target; 1.71 + v._endCount++; 1.72 + ok(v.currentTime >= v.duration-0.1 && v.currentTime <= v.duration + 0.1, 1.73 + "CurrentTime (" + v.currentTime + ") should be around " + v.duration 1.74 + + " for " + v._name); 1.75 + if (!v._playedOnce) { 1.76 + v.currentTime = 0; 1.77 + ok(v.seeking, "seeking should be true for " + v._name); 1.78 + ok(!v.ended, "ended shouldn't be true once seeking has begun for " + v._name); 1.79 + v._playedOnce = true; 1.80 + } else { 1.81 + ok(v._gotSeekEnded, "Should have received seekended for " + v._name); 1.82 + ok(v._gotSeekStarted, "Should have received seekstarted for " + v._name); 1.83 + is(v._loadedDataCount, 1, "Should have 1 onloadeddata event for " + v._name); 1.84 + is(v._loadedMetaDataCount, 1, "Should have 1 onloadedmetadata event for " + v._name); 1.85 + is(v._endCount, 2, "Should have received two ended events for " + v._name); 1.86 + ok(v._playingCount > 0, "Should have at least one playing event for " + v._name); 1.87 + v._finished = true; 1.88 + removeNodeAndListener(v); 1.89 + manager.finished(v.token); 1.90 + } 1.91 +} 1.92 + 1.93 +function startTest(test, token) { 1.94 + var v = document.createElement('video'); 1.95 + v.preload = "auto"; 1.96 + v.token = token; 1.97 + manager.started(token); 1.98 + v.src = test.name; 1.99 + v._name = test.name; 1.100 + v._playedOnce = false; 1.101 + v._gotSeekEnded = false; 1.102 + v._gotSeekStarted = false; 1.103 + v._loadedDataCount = 0; 1.104 + v._loadedMetaDataCount = 0; 1.105 + v._playingCount = 0; 1.106 + v._endCount = 0; 1.107 + v._test = test; 1.108 + v._finished = false; 1.109 + v.addEventListener("loadedmetadata", loadedMetaData, false); 1.110 + v.addEventListener("ended", playbackEnded, false); 1.111 + v.addEventListener("playing", playing, false); 1.112 + v.addEventListener("loadeddata", loadedData, false); 1.113 + v.addEventListener("seeking", seekStarted, false); 1.114 + v.addEventListener("seeked", seekEnded, false); 1.115 + document.body.appendChild(v); 1.116 +} 1.117 + 1.118 +manager.runTests(gSmallTests, startTest); 1.119 + 1.120 +</script> 1.121 +</pre> 1.122 +</body> 1.123 +</html>