test_bug1238440.html (1834B)
1 <!DOCTYPE HTML> 2 <html> 3 <head> 4 <meta charset="utf-8"> 5 <title>Test - bug 1238440</title> 6 <script src="/tests/SimpleTest/SimpleTest.js"></script> 7 <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/> 8 </head> 9 <body> 10 <input type="file" id="file" /> 11 <script type="application/javascript"> 12 13 var script; 14 15 function step_createScript() { 16 info("Creating script..."); 17 var url = SimpleTest.getTestFileURL("script_bug1238440.js"); 18 script = SpecialPowers.loadChromeScript(url); 19 next(); 20 } 21 22 function step_destroyScript() { 23 info("Destroying script..."); 24 script.destroy(); 25 next(); 26 } 27 28 29 function step_createFile() { 30 info("Creating file..."); 31 32 function onOpened(message) { 33 var fileList = document.getElementById('file'); 34 SpecialPowers.wrap(fileList).mozSetFileArray([message.file]); 35 ok(!!message.file, "File created and set"); 36 next(); 37 } 38 39 script.addMessageListener("file.opened", onOpened); 40 script.sendAsyncMessage("file.open"); 41 } 42 43 function step_changeFile() { 44 info("Changing file..."); 45 script.addMessageListener("file.changed", next); 46 script.sendAsyncMessage("file.change"); 47 } 48 49 function step_fileReader(status) { 50 var fr = new FileReader(); 51 fr.onload = function() { 52 is(status, true, "onload called!"); 53 next(); 54 } 55 56 fr.onerror = function(e) { 57 e.preventDefault(); 58 is(status, false, "onerror called!"); 59 next(); 60 } 61 62 fr.readAsArrayBuffer(document.getElementById("file").files[0]); 63 } 64 65 var steps = [ 66 step_createScript, 67 step_createFile, 68 function() { step_fileReader(true); }, 69 step_changeFile, 70 function() { step_fileReader(false); }, 71 step_destroyScript, 72 ]; 73 74 function next() { 75 if (!steps.length) { 76 SimpleTest.finish(); 77 return; 78 } 79 80 var step = steps.shift(); 81 step(); 82 } 83 84 SimpleTest.waitForExplicitFinish(); 85 next(); 86 </script> 87 </body> 88 </html>