dom/media/test/test_autoplay_contentEditable.html
author Dorel Luca <dluca@mozilla.com>
Sat, 12 Jan 2019 01:28:30 +0200
changeset 453595 c45da646fc6140bd59a36bda18f6cecde6163feb
parent 402119 d5a5ad1dbbf2c53a80386e7397ba6b32153b2b8e
child 469641 ba6f655fd68963530c866d0d4a48c3db3d307777
permissions -rw-r--r--
Backed out changeset 24243f13c895 (bug 1519308) for build bustage in mozbuild/mozbuild/test/configure/test_checks_configure.py. CLOSED TREE

<!DOCTYPE HTML>
<html>
<head>
  <title>Media test: play() method</title>
  <script type="text/javascript" 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 contenteditable="true">
<pre id="test">

<script>

var manager = new MediaTestManager;

var tokens = {
  0:                ["canplay"],
  "canplay":        ["canplay", "canplaythrough"],
  "canplaythrough": ["canplay", "canplaythrough"]
};

var eventList = ["play", "canplay", "playing", "canplaythrough", "ended"];

function gotPlayEvent(event) {
  var v = event.target;
  ok(tokens[v._state].includes(event.type),
     "Check expected event got " + uneval(event.type) +
     " at " + uneval(v._state) + " for " + v._name);
  v._state = event.type;
  if (event.type == 'canplaythrough') {
    // Remove all event listeners to avoid running tests after finishing test case.
    eventList.forEach(function (e) {
      v.removeEventListener(e, gotPlayEvent);
    });
    v.pause();
    goToNext(v);
  }
}

function goToNext(v) {
  v.remove();
  manager.finished(v.token);
}

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

  eventList.forEach(function (e) {
    v.addEventListener(e, gotPlayEvent);
  });

  v.src = test.name;
  v._name = test.name;
  v.autoplay = true;
  document.body.appendChild(v); // Causes load.
}

manager.runTests(gSmallTests, initTest);

</script>
</pre>
</body>
</html>