<!doctype html>
<title>load() removes queued error event</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<div id=log></div>
<script>
// The loadstart and error event firing tasks are queued in the synchronous
// section of the resource selection algorithm, so no tasks can come between
// them. Calling load() in the loadstart event handler removes the queued error
// event task at very latest opportunity, failing any implementation that fires
// the events in the same task.

async_test(function(t) {
  var v = document.createElement('video');
  var events = [];
  v.onloadstart = v.onerror = t.step_func(function(e) {
    events.push(e.type);
    if (events.length == 1) {
      v.load();
    } else if (events.length == 3) {
      assert_array_equals(events, ['loadstart', 'loadstart', 'error']);
      t.done();
    }
  });
  v.src = '';
}, 'video error event');

async_test(function(t) {
  var v = document.createElement('video');
  var s = document.createElement('source');
  var events = [];
  v.onloadstart = s.onerror = t.step_func(function(e) {
    events.push(e.type);
    if (events.length == 1) {
      v.load();
    } else if (events.length == 3) {
      assert_array_equals(events, ['loadstart', 'loadstart', 'error']);
      t.done();
    }
  });
  v.onerror = t.step_func(function() { assert_unreached(); });
  v.appendChild(s);
}, 'source error event');
</script>
