test_readableStream_when_closing.html (1456B)
1 <!DOCTYPE HTML> 2 <html> 3 <head> 4 <meta charset="utf-8"> 5 <title>Test for ReadableStream+fetch when the worker is closing</title> 6 <script src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script> 7 <link rel="stylesheet" type="text/css" href="chrome://mochikit/content/tests/SimpleTest/test.css"?> 8 </head> 9 <body> 10 <script> 11 12 function workerCode() { 13 onmessage = () => { 14 const BIG_BUFFER_SIZE = 1000000; 15 const fibStream = new ReadableStream({ 16 start(controller) {}, 17 18 pull(controller) { 19 const buffer = new Uint8Array(BIG_BUFFER_SIZE); 20 buffer.fill(42); 21 controller.enqueue(buffer); 22 } 23 }); 24 25 const r = new Response(fibStream); 26 27 const p = r.blob(); 28 self.postMessage("reading"); 29 30 p.then(() => { 31 // really? 32 }); 33 } 34 } 35 36 SimpleTest.waitForExplicitFinish(); 37 38 const b = new Blob([workerCode+'workerCode();']); 39 const url = URL.createObjectURL(b); 40 const w = new Worker(url); 41 w.onmessage = function(e) { 42 ok(true, 'Worker is reading'); 43 44 const wdm = Cc["@mozilla.org/dom/workers/workerdebuggermanager;1"]. 45 getService(Ci.nsIWorkerDebuggerManager); 46 wdm.addListener({ 47 onUnregister (dbg) { 48 if (dbg.url == url) { 49 ok(true, "Debugger with url " + url + " should be unregistered."); 50 wdm.removeListener(this); 51 SimpleTest.finish(); 52 } 53 } 54 }); 55 56 w.terminate(); 57 } 58 w.postMessage("start"); 59 </script> 60 </body> 61 </html>