author JW Wang <>
Tue, 09 Jan 2018 17:35:07 +0800
changeset 450288 1b13a12e07ac595f6d8dbea4c115ccc10f45475a
parent 374655 7b434711753b98a87603453caaa0945791ffe12b
child 450319 d14d36fc5161df0c1b66ce448d9a4901cb947260
permissions -rw-r--r--
Bug 1394702 - rewrite test_seek_out_of_range.html to be more robust. r=kaku See comment 20 for the root cause. We wait for both 'seeked' and 'ended' events to fire to make sure playback has reached the end before calling play(). MozReview-Commit-ID: 55NEmqyDuSI

  <title>Media test: seeking off the end of a file</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>
<pre id="test">
<script class="testbody" type="text/javascript">

if (navigator.platform.startsWith("Win")) {
  SimpleTest.expectAssertions(0, 10);

var manager = new MediaTestManager;

// Test if the ended event works correctly.

async function initTest(test, token) {
  var type = getMajorMimeType(test.type);
  var v = document.createElement(type);
  v.preload = "auto";
  v.token = token;
  v.src =;
  v._name =;

  await once(v, "loadedmetadata");
  info(`${v._name}: seeking to the end of the media.`);
  v.currentTime = 3.0 * v.duration;
  // Wait for 'seeked' and 'ended' to be fired.
  await Promise.all([once(v, "seeked"), once(v, "ended")]);
  // Check currentTime is near the end of the media.
  ok(Math.abs(v.duration - v.currentTime) < 0.1,
     "Should be at end of media for " + v._name + " t=" + v.currentTime + " d=" + v.duration);
  // Call play() to start playback from the beginning.;
  await once(v, "ended");
  ok(v.ended, "Checking ended set after seeking to EOF and playing for " + v._name);

manager.runTests(gSmallTests, initTest);