test_bug1198095.html (1979B)
1 <!DOCTYPE HTML> 2 <html> 3 <head> 4 <!-- 5 https://bugzilla.mozilla.org/show_bug.cgi?id=1198095 6 --> 7 <title>Test for Bug 1198095</title> 8 <script src="/tests/SimpleTest/SimpleTest.js"></script> 9 <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" /> 10 </head> 11 12 <body> 13 <a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1198095">Mozilla Bug 1198095</a> 14 15 <pre id="test"> 16 <script class="testbody" type="text/javascript"> 17 18 var fileData1 = '1234567890'; 19 var fileData2 = '43210'; 20 var r, firstBlob; 21 22 var openerURL = SimpleTest.getTestFileURL("file_bug1198095.js"); 23 24 var opener = SpecialPowers.loadChromeScript(openerURL); 25 opener.addMessageListener("file.opened", onFileOpened); 26 opener.addMessageListener("file.modified", onFileModified); 27 opener.sendAsyncMessage("file.open", fileData1); 28 29 function onLoadEnd1(e) { 30 e.target.removeEventListener('loadend', onLoadEnd1); 31 32 is(e.target, r, "Target and r are ok"); 33 is(e.target.readyState, FileReader.DONE, "The file has been read."); 34 ok(e.target.result instanceof ArrayBuffer, "The result is an ArrayBuffer"); 35 36 var view = new Uint8Array(e.target.result); 37 is(view.length, fileData1.length, "File data length matches"); 38 for (var i = 0; i < fileData1.length; ++i) { 39 is(String.fromCharCode(view[i]), fileData1[i], "Byte matches"); 40 } 41 42 opener.sendAsyncMessage("file.modify", fileData2); 43 } 44 45 function onError1(e) { 46 ok(false, "This method should not be called - error1!"); 47 } 48 49 function onError2(e) { 50 e.target.removeEventListener('error', onError2); 51 SimpleTest.finish(); 52 } 53 54 function onFileOpened(blob) { 55 firstBlob = blob; 56 r = new FileReader(); 57 r.addEventListener("loadend", onLoadEnd1); 58 r.addEventListener("error", onError1); 59 r.readAsArrayBuffer(firstBlob); 60 } 61 62 function onFileModified(blob) { 63 r.removeEventListener('error', onError1); 64 r.addEventListener("error", onError2); 65 r.readAsArrayBuffer(firstBlob); 66 } 67 68 SimpleTest.waitForExplicitFinish(); 69 </script> 70 </pre> 71 </body> </html>