test_basic.html (3444B)
1 <!DOCTYPE HTML> 2 <html> 3 <head> 4 <title>Test for Directory API</title> 5 <script src="/tests/SimpleTest/SimpleTest.js"></script> 6 <script type="text/javascript" src="filesystem_commons.js"></script> 7 <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" /> 8 </head> 9 10 <body> 11 <script type="application/javascript"> 12 13 var directory; 14 var fileList; 15 16 function create_fileList(aPath) { 17 fileList = document.createElement("input"); 18 fileList.setAttribute("type", "file"); 19 document.body.appendChild(fileList); 20 21 var url = SimpleTest.getTestFileURL("script_fileList.js"); 22 var script = SpecialPowers.loadChromeScript(url); 23 24 function onOpened(message) { 25 SpecialPowers.wrap(fileList).mozSetDirectory(message.dir); 26 fileList.setAttribute("data-name", message.name); 27 28 SpecialPowers.wrap(fileList).getFilesAndDirectories().then(function(array) { 29 array = SpecialPowers.unwrap(array); 30 is(array.length, 1, "We want just 1 directory."); 31 ok(array[0] instanceof Directory, "We want just 1 directory."); 32 33 directory = array[0]; 34 script.destroy(); 35 next(); 36 }); 37 } 38 39 script.addMessageListener("dir.opened", onOpened); 40 script.sendAsyncMessage("dir.open", { path: aPath }); 41 } 42 43 function test_simpleFilePicker() { 44 var url = SimpleTest.getTestFileURL("script_fileList.js"); 45 var script = SpecialPowers.loadChromeScript(url); 46 47 function onOpened(message) { 48 SpecialPowers.wrap(fileList).mozSetFileArray([message.file]); 49 50 is(fileList.files.length, 1, "we want 1 element"); 51 ok(fileList.files[0] instanceof File, "we want 1 file"); 52 ok("webkitRelativePath" in fileList.files[0], "we have webkitRelativePath attribute"); 53 is(fileList.files[0].webkitRelativePath, "", "No webkit relative path for normal filePicker"); 54 55 script.destroy(); 56 next(); 57 } 58 59 script.addMessageListener("file.opened", onOpened); 60 script.sendAsyncMessage("file.open"); 61 } 62 63 function test_duplicateGetFilesAndDirectories() { 64 var url = SimpleTest.getTestFileURL("script_fileList.js"); 65 var script = SpecialPowers.loadChromeScript(url); 66 67 function onOpened(message) { 68 SpecialPowers.wrap(fileList).mozSetDirectory(message.dir); 69 70 var p1 = SpecialPowers.wrap(fileList).getFilesAndDirectories(); 71 var p2 = SpecialPowers.wrap(fileList).getFilesAndDirectories(); 72 73 isnot(p1, p2, "We create 2 different promises"); 74 75 script.destroy(); 76 next(); 77 } 78 79 script.addMessageListener("dir.opened", onOpened); 80 script.sendAsyncMessage("dir.open", { path: "test" }); 81 } 82 83 var tests = [ 84 function() { setup_tests(next); }, 85 86 function() { create_fileList("tree"); }, 87 function() { test_basic(directory, next); }, 88 function() { test_getFilesAndDirectories(directory, true, next); }, 89 function() { test_getFiles(directory, false, next); }, 90 function() { test_getFiles(directory, true, next); }, 91 92 function() { create_fileList("test"); }, 93 function() { test_getFiles_recursiveComparison(directory, next); }, 94 95 function() { create_fileList("root"); }, 96 function() { test_basic(directory, next); }, 97 function() { test_getFilesAndDirectories(directory, false, next); }, 98 function() { test_getFiles(directory, false, next); }, 99 100 test_duplicateGetFilesAndDirectories, 101 test_simpleFilePicker, 102 ]; 103 104 function next() { 105 if (!tests.length) { 106 SimpleTest.finish(); 107 return; 108 } 109 110 var test = tests.shift(); 111 test(); 112 } 113 114 SimpleTest.waitForExplicitFinish(); 115 next(); 116 </script> 117 </body> 118 </html>