<!doctype html>
<title>NOT invoking resource selection with 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:,';
  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');
      v.pause(); // 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>
