<!doctype html>
<html>
 <head>
  <title>window.onerror - runtime error in setTimeout</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;
    window.onerror = t.step_func(function(a, b, c, d){
        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');
    });
    setTimeout("undefined_variable;", 10);
    setTimeout(function(){
        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>