dom/devicestorage/test/test_overrideDir.html

Wed, 31 Dec 2014 06:09:35 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Wed, 31 Dec 2014 06:09:35 +0100
changeset 0
6474c204b198
permissions
-rw-r--r--

Cloned upstream origin tor-browser at tor-browser-31.3.0esr-4.5-1-build1
revision ID fc1c9ff7c1b2defdbc039f12214767608f46423f for hacking purpose.

     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();
    35 }
    37 function getAfterDeleteError(e) {
    38   ok(true, "file was deleted successfully");
    39   devicestorage_cleanup();
    40 }
    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;
    53 }
    55 function deleteError(e) {
    56   ok(false, "deleteError was called : " + e.target.error.name);
    57   devicestorage_cleanup();
    58 }
    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;
    81   }
    82 }
    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");
    91 }
    93 function getError(e) {
    94   ok(false, "getError was called : " + e.target.error.name);
    95   devicestorage_cleanup();
    96 }
    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
   108     }
   109   }
   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");
   122 }
   124 function addError(e) {
   125   ok(false, "addError was called : " + e.target.error.name);
   126   devicestorage_cleanup();
   127 }
   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;
   140 }
   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();
   156     });
   157 } catch(e) {}
   159 </script>
   160 </pre>
   161 </body>
   162 </html>

mercurial