DXR is a code search and navigation tool aimed at making sense of large projects. It supports full-text and regex searches as well as structural queries.

Mercurial (31ec81b5d7bb)

VCS Links

Line Code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140
<!--
  Any copyright is dedicated to the Public Domain.
  http://creativecommons.org/publicdomain/zero/1.0/
-->
<!DOCTYPE HTML>
<html> <!--
https://bugzilla.mozilla.org/show_bug.cgi?id=717103
-->
<head>
  <title>Test for the device storage API </title>
  <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
  <script type="text/javascript" src="devicestorage_common.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=717103">Mozilla Bug 717103</a>
<p id="display"></p>
<div id="content" style="display: none">
  
</div>
<pre id="test">
<script class="testbody" type="text/javascript">

devicestorage_setup();

var gFileName = "devicestorage/" + randomFilename(12) + "/hi.png";
var gData = "My name is Doug Turner.  My IRC nick is DougT.  I like Maple cookies."
var gDataBlob = new Blob([gData], {type: 'image/png'});
var gFileReader = new FileReader();

function getAfterDeleteSuccess(e) {
  ok(false, "file was deleted not successfully");
  devicestorage_cleanup();
}

function getAfterDeleteError(e) {
  ok(true, "file was deleted successfully");
  devicestorage_cleanup();
}

function deleteSuccess(e) {

  ok(e.target.result == gFileName, "File name should match");
  dump(e.target.result + "\n")

  var storage = navigator.getDeviceStorage("pictures");
  request = storage.get(e.target.result);
  request.onsuccess = getAfterDeleteSuccess;
  request.onerror = getAfterDeleteError;

}

function deleteError(e) {
  ok(false, "deleteError was called : " + e.target.error.name);
  devicestorage_cleanup();
}

function getSuccess(e) {
  var storage = navigator.getDeviceStorage("pictures");
  ok(navigator.getDeviceStorage, "Should have getDeviceStorage");

  ok(e.target.result.name == gFileName, "File name should match");
  ok(e.target.result.size > 0, "File size be greater than zero");
  ok(e.target.result.type, "File should have a mime type");
  ok(e.target.result.lastModifiedDate, "File should have a last modified date");

  var name = e.target.result.name;

  gFileReader.readAsArrayBuffer(gDataBlob);
  gFileReader.onload = function(e) {
    readerCallback(e);

    request = storage.delete(name)
    request.onsuccess = deleteSuccess;
    request.onerror = deleteError;
  }
}

function readerCallback(e) {

  ab = e.target.result;

  is(ab.byteLength, gData.length, "wrong arraybuffer byteLength");
  var u8v = new Uint8Array(ab);
  is(String.fromCharCode.apply(String, u8v), gData, "wrong values");
}

function getError(e) {
  ok(false, "getError was called : " + e.target.error.name);
  devicestorage_cleanup();
}

function addSuccess(e) {

  var filename = e.target.result;
  if (filename[0] == "/") {
    // We got /storageName/prefix/filename
    // Remove the storageName (this shows up on FirefoxOS)
    filename = filename.substring(1); // Remove leading slash
    var slashIndex = filename.indexOf("/");
    if (slashIndex >= 0) {
      filename = filename.substring(slashIndex + 1); // Remove storageName
    }
  }
  ok(filename == gFileName, "File name should match");

  // Update gFileName to be the fully qualified name so that
  // further checks will pass.
  gFileName = e.target.result;

  var storage = navigator.getDeviceStorage("pictures");
  request = storage.get(gFileName);
  request.onsuccess = getSuccess;
  request.onerror = getError;

  ok(true, "addSuccess was called");
}

function addError(e) {
  ok(false, "addError was called : " + e.target.error.name);
  devicestorage_cleanup();
}

ok(navigator.getDeviceStorage, "Should have getDeviceStorage");

var storage = navigator.getDeviceStorage("pictures");
ok(storage, "Should have gotten a storage");

request = storage.addNamed(gDataBlob, gFileName);
ok(request, "Should have a non-null request");

request.onsuccess = addSuccess;
request.onerror = addError;

</script>
</pre>
</body>
</html>