<!doctype html>
<title>pointer updates (adding text nodes)</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<div id=log></div>
<script>
var a = 0;
var b = 0;
var c = 0;
</script>
<video
 ><source onerror=a++
 ><source onerror=b++ src='resources/delayed-broken-video.py'
 ><source onerror=c++
 ></video
>
<script>
async_test(function(t) {
  var video = document.querySelector('video');
  // add text nodes
  var text = document.createTextNode('x');
  video.insertBefore(text, video.querySelector('[onerror="a++"]'));
  video.insertBefore(text.cloneNode(false), video.querySelector('[onerror="b++"]'));
  video.insertBefore(text.cloneNode(false), video.querySelector('[onerror="c++"]'));
  video.appendChild(text.cloneNode(false));
  window.onload = t.step_func(function() {
    assert_equals(a, 1, 'error events on a');
    assert_equals(b, 1, 'error events on b');
    assert_equals(c, 1, 'error events on c');
    t.done();
  });
});
</script>
