<!DOCTYPE html> <html> <!-- https://bugzilla.mozilla.org/show_bug.cgi?id=1194893 --> <head> <title>Test for filepicker default directory</title> <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script> <script type="application/javascript" src="/tests/SimpleTest/EventUtils.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=1194893">Mozilla Bug 1194893</a> <div id="content"> <input type="file" id="f"> </div> <pre id="text"> <script class="testbody" type="application/javascript"> SimpleTest.waitForExplicitFinish(); const { Cc: Cc, Ci: Ci } = SpecialPowers; // Platform-independent directory names are #define'd in xpcom/io/nsDirectoryServiceDefs.h var defaultUploadDirectory = Cc["@mozilla.org/file/directory_service;1"] .getService(Ci.nsIDirectoryService) .QueryInterface(Ci.nsIProperties) .get("Desk", Ci.nsIFile); // When we want to test an upload directory other than the default, we need to // get a valid directory in a platform-independent way. Since NS_OS_DESKTOP_DIR // may fallback to NS_OS_HOME_DIR, let's use NS_OS_TMP_DIR. var customUploadDirectory = Cc["@mozilla.org/file/directory_service;1"] .getService(Ci.nsIDirectoryService) .QueryInterface(Ci.nsIProperties) .get("TmpD", Ci.nsIFile); // Useful for debugging //info("defaultUploadDirectory" + defaultUploadDirectory.path); //info("customUploadDirectory" + customUploadDirectory.path); var MockFilePicker = SpecialPowers.MockFilePicker; MockFilePicker.init(window); // need to show the MockFilePicker so .displayDirectory gets set var f = document.getElementById("f"); f.focus(); var testIndex = 0; var tests = [ ["", defaultUploadDirectory.path], [customUploadDirectory.path, customUploadDirectory.path] ] MockFilePicker.showCallback = function(filepicker) { info(SpecialPowers.wrap(MockFilePicker).displayDirectory.path); is(SpecialPowers.wrap(MockFilePicker).displayDirectory.path, tests[testIndex][1]); if (++testIndex == tests.length) { MockFilePicker.cleanup(); SimpleTest.finish(); } else { launchNextTest(); } } function launchNextTest() { SpecialPowers.pushPrefEnv( { 'set': [ ['dom.input.fallbackUploadDir', tests[testIndex][0]], ]}, function () { f.click(); }); } launchNextTest(); </script> </pre> </body> </html>