| <pre id="console"></pre> |
| |
| <script> |
| if (window.testRunner) { |
| testRunner.waitUntilDone(); |
| testRunner.dumpAsText() |
| } |
| |
| function log(msg) |
| { |
| document.getElementById('console').appendChild(document.createTextNode(msg + "\n")); |
| } |
| |
| var intervalId; |
| function cancelSetInterval() |
| { |
| window.clearInterval(intervalId); |
| } |
| |
| function setTimeout1() |
| { |
| var id = window.setTimeout("log('PASS: setTimeout(\"STRING\", 0) works.'); setInterval1()", 0); |
| if (id == undefined) |
| done(false); |
| } |
| |
| function setInterval1() |
| { |
| intervalId = window.setInterval("log('PASS: setInterval(\"STRING\", 0) works.'); cancelSetInterval(); setTimeout2()", 0); |
| if (intervalId == undefined) |
| done(false); |
| } |
| |
| function setTimeout2() |
| { |
| var id = window.setTimeout(String("log('PASS: setTimeout(String(\"STRING\"), 0) works.'); setInterval2()"), 0); |
| if (id == undefined) |
| done(false); |
| } |
| |
| function setInterval2() |
| { |
| intervalId = window.setInterval(String("log('PASS: setInterval(String(\"STRING\"), 0) works.'); cancelSetInterval(); setTimeout3()"), 0); |
| if (intervalId == undefined) |
| done(false); |
| } |
| |
| function setTimeout3() |
| { |
| var id = window.setTimeout({ toString : function() { return "log('PASS: setTimeout({toString:function(){}}, 0) works.'); setInterval3();" } }, 0); |
| if (id == undefined) |
| done(false); |
| } |
| |
| function setInterval3() |
| { |
| intervalId = window.setInterval({ toString : function() { return "log('PASS: setInterval({toString:function(){}}, 0) works.'); cancelSetInterval(); setTimeout4()" } }, 0); |
| if (intervalId == undefined) |
| done(false); |
| } |
| |
| function setTimeout4() |
| { |
| try { |
| var id = window.setTimeout({ toString : function() { throw "Exception"; } }, 0); |
| done(false); |
| } catch (e) { |
| log("PASS: setTimeout({ toString : function() { throw \"Exception\"; } }, 0) correctly threw an exception."); |
| setInterval4(); |
| } |
| } |
| |
| function setInterval4() |
| { |
| try { |
| var id = window.setInterval({ toString : function() { throw "Exception"; } }, 0); |
| window.clearInterval(id); |
| done(false); |
| } catch (e) { |
| log("PASS: setInterval({ toString : function() { throw \"Exception\"; } }, 0) correctly threw an exception."); |
| done(true); |
| } |
| } |
| |
| |
| function done(didPass) |
| { |
| if (didPass) |
| log("PASS: All tests passed."); |
| else |
| log("FAIL: All tests did not pass."); |
| |
| if (window.testRunner) |
| testRunner.notifyDone(); |
| } |
| |
| setTimeout1(); |
| |
| </script> |