• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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