<!DOCTYPE HTML> <html> <head> <!-- https://bugzilla.mozilla.org/show_bug.cgi?id=403852 --> <title>Test for Bug 403852</title> <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script> <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" /> </head> <body> <a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=403852">Mozilla Bug 403852</a> <p id="display"> <input id="fileList" type="file"></input> </p> <div id="content" style="display: none"> </div> <pre id="test"> <script class="testbody" type="text/javascript"> SimpleTest.waitForExplicitFinish(); var url = SimpleTest.getTestFileURL("bug403852_fileOpener.js"); var script = SpecialPowers.loadChromeScript(url); script.addMessageListener("file.opened", onOpened); script.sendAsyncMessage("file.open"); function onOpened(message) { var fileList = document.getElementById('fileList'); SpecialPowers.wrap(fileList).mozSetFileArray([message.file]); // Make sure the file is accessible with indexed notation var domFile = fileList.files[0]; is(domFile.name, "prefs.js", "fileName should be prefs.js"); ok("lastModifiedDate" in domFile, "lastModifiedDate must be present"); var d = new Date(message.mtime); // Commented out: lastModifiedDate is rounded because it is a DOM API, message is a special-powers Chrome thing // is(d.getTime(), domFile.lastModifiedDate.getTime(), "lastModifiedDate should be the same"); var x = new Date(); // In our implementation of File object, lastModifiedDate is unknown only for new objects. // Using canvas or input[type=file] elements, we 'often' have a valid lastModifiedDate values. // For canvas we use memory files and the lastModifiedDate is now(). var f = new File([new Blob(['test'], {type: 'text/plain'})], "test-name"); var y = f.lastModifiedDate; var z = new Date(); ok((x.getTime() <= y.getTime()) && (y.getTime() <= z.getTime()), "lastModifiedDate of file which does not have last modified date should be current time"); // var d = new Date(message.fileDate); // is(d.getTime(), message.fileWithDate.lastModifiedDate.getTime(), "lastModifiedDate should be the same when lastModified is set: " + message.fileWithDate.lastModified); script.destroy(); SimpleTest.finish(); } </script> </pre> </body> </html>