Bumping manifests a=b2g-bump
[gecko.git] / dom / devicestorage / test / test_overrideDir.html
blob19b7ac0b9765b6e68f48ad8f09b7e7040fb54f8f
1 <!--
2 Any copyright is dedicated to the Public Domain.
3 http://creativecommons.org/publicdomain/zero/1.0/
4 -->
5 <!DOCTYPE HTML>
6 <html> <!--
7 https://bugzilla.mozilla.org/show_bug.cgi?id=717103
8 -->
9 <head>
10 <title>Test for the device storage API </title>
11 <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
12 <script type="text/javascript" src="devicestorage_common.js"></script>
14 <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
15 </head>
16 <body>
17 <a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=717103">Mozilla Bug 717103</a>
18 <p id="display"></p>
19 <div id="content" style="display: none">
21 </div>
22 <pre id="test">
23 <script class="testbody" type="text/javascript">
25 devicestorage_setup();
27 var gFileName = "devicestorage/" + randomFilename(12) + "/hi.png";
28 var gData = "My name is Doug Turner. My IRC nick is DougT. I like Maple cookies."
29 var gDataBlob = new Blob([gData], {type: 'image/png'});
30 var gFileReader = new FileReader();
32 function getAfterDeleteSuccess(e) {
33 ok(false, "file was deleted not successfully");
34 devicestorage_cleanup();
37 function getAfterDeleteError(e) {
38 ok(true, "file was deleted successfully");
39 devicestorage_cleanup();
42 function deleteSuccess(e) {
44 ok(e.target.result == gFileName, "File name should match");
45 dump(e.target.result + "\n")
47 // File was deleted using the sdcard stoage area. It should be gone
48 // from the pictures as well.
49 var storage = navigator.getDeviceStorage("pictures");
50 request = storage.get(e.target.result);
51 request.onsuccess = getAfterDeleteSuccess;
52 request.onerror = getAfterDeleteError;
55 function deleteError(e) {
56 ok(false, "deleteError was called : " + e.target.error.name);
57 devicestorage_cleanup();
60 function getSuccess(e) {
61 // We wrote the file out using pictures type. Since we've over-ridden the
62 // root directory, we should be able to read it back using the sdcard
63 // storage area.
64 var storage = navigator.getDeviceStorage("sdcard");
65 ok(navigator.getDeviceStorage, "Should have getDeviceStorage");
67 ok(e.target.result.name == gFileName, "File name should match");
68 ok(e.target.result.size > 0, "File size be greater than zero");
69 ok(e.target.result.type, "File should have a mime type");
70 ok(e.target.result.lastModifiedDate, "File should have a last modified date");
72 var name = e.target.result.name;
74 gFileReader.readAsArrayBuffer(gDataBlob);
75 gFileReader.onload = function(e) {
76 readerCallback(e);
78 request = storage.delete(name)
79 request.onsuccess = deleteSuccess;
80 request.onerror = deleteError;
84 function readerCallback(e) {
86 ab = e.target.result;
88 is(ab.byteLength, gData.length, "wrong arraybuffer byteLength");
89 var u8v = new Uint8Array(ab);
90 is(String.fromCharCode.apply(String, u8v), gData, "wrong values");
93 function getError(e) {
94 ok(false, "getError was called : " + e.target.error.name);
95 devicestorage_cleanup();
98 function addSuccess(e) {
100 var filename = e.target.result;
101 if (filename[0] == "/") {
102 // We got /storageName/prefix/filename
103 // Remove the storageName (this shows up on FirefoxOS)
104 filename = filename.substring(1); // Remove leading slash
105 var slashIndex = filename.indexOf("/");
106 if (slashIndex >= 0) {
107 filename = filename.substring(slashIndex + 1); // Remove storageName
110 ok(filename == gFileName, "File name should match");
112 // Update gFileName to be the fully qualified name so that
113 // further checks will pass.
114 gFileName = e.target.result;
116 var storage = navigator.getDeviceStorage("pictures");
117 request = storage.get(gFileName);
118 request.onsuccess = getSuccess;
119 request.onerror = getError;
121 ok(true, "addSuccess was called");
124 function addError(e) {
125 ok(false, "addError was called : " + e.target.error.name);
126 devicestorage_cleanup();
129 function startTest() {
130 ok(navigator.getDeviceStorage, "Should have getDeviceStorage");
132 var storage = navigator.getDeviceStorage("pictures");
133 ok(storage, "Should have gotten a storage");
135 request = storage.addNamed(gDataBlob, gFileName);
136 ok(request, "Should have a non-null request");
138 request.onsuccess = addSuccess;
139 request.onerror = addError;
142 try {
143 const Cc = SpecialPowers.Cc;
144 const Ci = SpecialPowers.Ci;
145 var directoryService = Cc["@mozilla.org/file/directory_service;1"].getService(Ci.nsIProperties);
146 var f = directoryService.get("TmpD", Ci.nsIFile);
147 f.appendRelativePath("device-storage-sdcard");
148 try {
149 // The remove will fail if the directory doesn't exist, which is fine.
150 f.remove(true);
151 } catch (e) {}
152 SpecialPowers.pushPrefEnv({'set': [["device.storage.overrideRootDir", f.path],
153 ["device.storage.testing", false]]},
154 function() {
155 startTest();
157 } catch(e) {}
159 </script>
160 </pre>
161 </body>
162 </html>