test_bug1146116.html (1727B)
1 <!DOCTYPE HTML> 2 <html> 3 <!-- 4 https://bugzilla.mozilla.org/show_bug.cgi?id=1146116 5 --> 6 <head> 7 <title>Test for Bug 1146116</title> 8 <script src="/tests/SimpleTest/SimpleTest.js"></script> 9 <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" /> 10 </head> 11 <body> 12 <a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1146116">Mozilla Bug 1146116</a> 13 <p id="display"> 14 <input type="file" id="file"> 15 </p> 16 <div id="content" style="display: none"> 17 </div> 18 <pre id="test"> 19 <script class="testbody" type="text/javascript"> 20 /** Test for bug 1146116 */ 21 22 SimpleTest.waitForExplicitFinish(); 23 24 const helperURL = SimpleTest.getTestFileURL("simpleFileOpener.js"); 25 const helper = SpecialPowers.loadChromeScript(helperURL); 26 helper.addMessageListener("fail", function onFail(message) { 27 is(message, null, "chrome script failed"); 28 SimpleTest.finish(); 29 }); 30 helper.addMessageListener("file.opened", onFileOpened); 31 helper.sendAsyncMessage("file.open", "test_bug1146116.txt"); 32 33 function getGlobal(thing) { 34 return SpecialPowers.unwrap(SpecialPowers.Cu.getGlobalForObject(thing)); 35 } 36 37 function onFileOpened(message) { 38 const file = message.domFile; 39 const elem = document.getElementById("file"); 40 is(getGlobal(elem), window, 41 "getGlobal() works as expected"); 42 is(getGlobal(file), window, 43 "File from MessageManager is not wrapped"); 44 SpecialPowers.wrap(elem).mozSetFileArray([file]); 45 is(getGlobal(elem.files[0]), window, 46 "File read back from input element is not wrapped"); 47 helper.addMessageListener("file.removed", onFileRemoved); 48 helper.sendAsyncMessage("file.remove", null); 49 } 50 51 function onFileRemoved() { 52 helper.destroy(); 53 SimpleTest.finish(); 54 } 55 56 </script> 57 </pre> 58 </body> 59 </html>