<!doctype html>
<title>NOT invoking resource selection with implicit pause() when networkState is not NETWORK_EMPTY</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<div id=log></div>
<video></video>
<script>
var v;
var t = async_test(function(t) {
  v = document.querySelector('video');
  v.src = 'data:,';
  document.body.appendChild(v);
  assert_equals(v.networkState, v.NETWORK_NO_SOURCE, 'networkState after setting src');
  var errorCount = 0;
  v.onerror = t.step_func(function() {
    errorCount++;
    if (errorCount == 1) {
      assert_equals(v.networkState, v.NETWORK_NO_SOURCE, 'networkState in onerror');
      document.body.removeChild(v); // invokes pause() which should not invoke RSA. if it does, error will be fired again.
    } else {
      assert_unreached();
    }
  });
  onload = t.step_func(function() {
    assert_equals(errorCount, 1, 'errorCount');
    t.done();
  });
});
</script>
