<html>
  <head>
      <script src="../../resources/js-test-pre.js"></script>
    <script>
        if (window.testRunner)
            testRunner.waitUntilDone();

        var blurEventCount = 0;

        window.onload = function() { document.getElementById("input").focus(); }

        function finish() {
            var f = document.getElementById('f')

            f.innerHTML = '';

            shouldBe("blurEventCount", "0");

            debug('<br /><span class="pass">TEST COMPLETE</span>');
            if (window.testRunner)
                testRunner.notifyDone();
        }
    </script>
  </head>
<body>
    <p id="description"></p>
    <form id='f'>
      <input id="input" onblur="blurEventCount++" onfocus="setTimeout('finish()', 0)">
    </form>
    <div id="console"></div>
    <script>
        description("This tests that elements shouldn't emit any onblur events when they are being removed from the document.");
    </script>
  </body>
</html>
