<!DOCTYPE HTML>
<html>
<head>
  <title>Test events of media track interfaces</title>
  <script src="/tests/SimpleTest/SimpleTest.js"></script>
  <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
  <script type="text/javascript" src="manifest.js"></script>
</head>
<body>
<pre id="test">
<script class="testbody" type="text/javascript">

var manager = new MediaTestManager;

function localCheckMetadata(msg, e) {
  ok(msg in gOggTrackInfoResults, "File: " + msg + " is in pre-parsed gOggTrackInfoResults list");
  var r = gOggTrackInfoResults[msg];

  var hasExpectedAudio = r && r.hasOwnProperty("audio_id");
  var hasExpectedVideo = r && r.hasOwnProperty("video_id");

  var hasParsedAudio = e.audioTracks.length >= 1;
  var hasParsedVideo = e.videoTracks.length >= 1;

  ok(!(hasExpectedAudio ^ hasParsedAudio), "Check availability of expected/parsed audio");
  ok(!(hasExpectedVideo ^ hasParsedVideo), "Check availability of expected/parsed video");
  if (hasParsedAudio) {
    is(e.audioTracks.length, 1, "The length of audio track should be 1");
    is(e.audioTracks[0].id, r.audio_id, "File: " + msg + ", Audio track id");
    is(e.audioTracks[0].kind, r.audio_kind, "File: " + msg + ", Audio track kind");
    is(e.audioTracks[0].language, r.audio_language, "File: " + msg + ", Audio track language");
    is(e.audioTracks[0].label, r.audio_label, "File: " + msg + ", Audio track label");
  }
  if (hasParsedVideo) {
    is(e.videoTracks.length, 1, "The length of video track should be 1");
    is(e.videoTracks[0].id, r.video_id, "File: " + msg + ", Video track id");
    is(e.videoTracks[0].kind, r.video_kind, "File: " + msg + ", Video track kind");
    is(e.videoTracks[0].language, r.video_language, "File: " + msg + ", Video track language");
    is(e.videoTracks[0].label, r.video_label, "File: " + msg + ", Video track label");
  }
}

function startTest(test, token) {
  var v = document.createElement('video');
  v.preload = "metadata";
  v.token = token;
  manager.started(token);

  v.src = test.name;
  v.name = test.name;

  v.onloadedmetadata = function(evt) {
    localCheckMetadata(evt.target.name, evt.target);
    evt.target.finished = true;
    evt.target.onloadedmetadata = null;
    removeNodeAndSource(evt.target);
    manager.finished(evt.target.token);
  };

  document.body.appendChild(v);
}

SimpleTest.waitForExplicitFinish();
SpecialPowers.pushPrefEnv({"set": [["media.track.enabled", true]]},
  function() {
  	manager.runTests(gMultitrackInfoOggPlayList, startTest);
  }
);
</script>
</pre>
</body>
</html>
