diff options
Diffstat (limited to 'parser/htmlparser/tests/mochitest/file_bug655682.sjs')
-rw-r--r-- | parser/htmlparser/tests/mochitest/file_bug655682.sjs | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/parser/htmlparser/tests/mochitest/file_bug655682.sjs b/parser/htmlparser/tests/mochitest/file_bug655682.sjs new file mode 100644 index 0000000000..fe229bfba9 --- /dev/null +++ b/parser/htmlparser/tests/mochitest/file_bug655682.sjs @@ -0,0 +1,31 @@ +var timer; +var callback; + +function handleRequest(request, response) { + if (request.queryString.includes("trigger")) { + setState("triggered", "triggered"); + response.setHeader("Cache-Control", "no-cache", false); + response.setHeader("Content-Type", "text/javascript; charset=utf-8", false); + response.write(";"); + } else { + // Reset the state when running more than once in same browser session. + setState("triggered", ""); + + response.processAsync(); + response.setHeader("Cache-Control", "no-cache", false); + response.setHeader("Content-Type", "text/html; charset=utf-8", false); + response.write("<table><tr><td>A</td> "); + response.bodyOutputStream.flush(); + timer = Cc["@mozilla.org/timer;1"].createInstance(Ci.nsITimer); + + callback = function() { + if (getState("triggered") == "triggered") { + response.write("<td>B</td></tr></table>"); + response.finish(); + } else { + timer.initWithCallback(callback, 10, Ci.nsITimer.TYPE_ONE_SHOT); + } + }; + timer.initWithCallback(callback, 10, Ci.nsITimer.TYPE_ONE_SHOT); + } +} |