1<html> 2<body onload="RunTest();"> 3<div id="player_container"></div> 4</body> 5 6<script type="text/javascript"> 7// <audio> or <video> player element. 8var player; 9 10// Listen for |event| from |element|, set document.title = |event| upon event. 11function InstallTitleEventHandler(element, event) { 12 element.addEventListener(event, function(e) { 13 document.title = event.toUpperCase(); 14 }, false); 15} 16 17function Failed() { 18 document.title = 'FAILED'; 19 return false; 20} 21 22function SeekTestStep(e) { 23 player.removeEventListener('ended', SeekTestStep, false); 24 25 // Test completes on the next ended event. 26 InstallTitleEventHandler(player, 'ended'); 27 28 player.currentTime = 0.9 * player.duration; 29 player.play(); 30} 31 32function SeekTestTimeoutSetup() { 33 if (player.currentTime < 2) 34 return; 35 36 player.removeEventListener('timeupdate', SeekTestTimeoutSetup, false); 37 SeekTestStep(); 38} 39 40// Uses URL query parameters to create an audio or video element using a given 41// source. URL must be of the form "player.html?[tag]=[media_url]". Plays the 42// media and waits for X seconds of playback or the ended event, at which point 43// the test seeks near the end of the file and resumes playback. Test completes 44// when the second ended event occurs or an error event occurs at any time. 45function RunTest() { 46 var url_parts = window.location.href.split('?'); 47 if (url_parts.length != 2) 48 return Failed(); 49 50 var query_parts = url_parts[1].split('='); 51 if (query_parts.length != 2) 52 return Failed(); 53 54 var tag = query_parts[0]; 55 var media_url = query_parts[1]; 56 if (tag != 'audio' && tag != 'video') 57 return Failed(); 58 59 // Create player and insert into DOM. 60 player = document.createElement(tag); 61 player.controls = true; 62 document.getElementById('player_container').appendChild(player); 63 64 // Transition to the seek test after X seconds of playback or when the ended 65 // event occurs, whichever happens first. 66 player.addEventListener('ended', SeekTestStep, false); 67 player.addEventListener('timeupdate', SeekTestTimeoutSetup, false); 68 69 // Ensure we percolate up any error events. 70 InstallTitleEventHandler(player, 'error'); 71 72 // Starts the player. 73 player.src = media_url; 74 player.play(); 75} 76</script> 77</html> 78