<!doctype html>
<html>
 <head>
  <title>window.onerror - runtime error in setInterval</title>
  <script src="/resources/testharness.js"></script>
  <script src="/resources/testharnessreport.js"></script>
 </head>
 <body>
  <div id=log></div>
  <script>
    setup({allow_uncaught_exception:true});
    var t = async_test();
    var t_col = async_test(document.title+' (column)');
    var ran = false;
    var col_value;
    var interval;
    window.onerror = t.step_func(function(a, b, c, d){
        clearInterval(interval);
        ran = true;
        col_value = d;
        assert_equals(typeof a, 'string', 'first arg');
        assert_equals(b, location.href, 'second arg');
        assert_equals(typeof c, 'number', 'third arg');
    });
    interval = setInterval("undefined_variable;", 10);
    step_timeout(function(){
        clearInterval(interval);
        t.step(function(){
            assert_true(ran, 'ran');
            t.done();
        });
        t_col.step(function(){
            assert_equals(typeof col_value, 'number', 'fourth arg');
            t_col.done();
        });
    }, 20);
  </script>
 </body>
</html>