mobile/android/modules/WebappManagerWorker.js

changeset 0
6474c204b198
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/mobile/android/modules/WebappManagerWorker.js	Wed Dec 31 06:09:35 2014 +0100
     1.3 @@ -0,0 +1,49 @@
     1.4 +/* This Source Code Form is subject to the terms of the Mozilla Public
     1.5 + * License, v. 2.0. If a copy of the MPL was not distributed with this file,
     1.6 + * You can obtain one at http://mozilla.org/MPL/2.0/. */
     1.7 +
     1.8 +importScripts("resource://gre/modules/osfile.jsm");
     1.9 +
    1.10 +function log(message) {
    1.11 +  dump("WebManagerWorker " + message + "\n");
    1.12 +}
    1.13 +
    1.14 +onmessage = function(event) {
    1.15 +  let { url, path } = event.data;
    1.16 +
    1.17 +  let file = OS.File.open(path, { truncate: true });
    1.18 +  let request = new XMLHttpRequest({ mozSystem: true });
    1.19 +
    1.20 +  request.open("GET", url, true);
    1.21 +  request.responseType = "moz-chunked-arraybuffer";
    1.22 +
    1.23 +  request.onprogress = function(event) {
    1.24 +    log("onprogress: received " + request.response.byteLength + " bytes");
    1.25 +    let bytesWritten = file.write(new Uint8Array(request.response));
    1.26 +    log("onprogress: wrote " + bytesWritten + " bytes");
    1.27 +  };
    1.28 +
    1.29 +  request.onreadystatechange = function(event) {
    1.30 +    log("onreadystatechange: " + request.readyState);
    1.31 +
    1.32 +    if (request.readyState !== 4) {
    1.33 +      return;
    1.34 +    }
    1.35 +
    1.36 +    file.close();
    1.37 +
    1.38 +    if (request.status === 200) {
    1.39 +      postMessage({ type: "success" });
    1.40 +    } else {
    1.41 +      try {
    1.42 +        OS.File.remove(path);
    1.43 +      } catch(ex) {
    1.44 +        log("error removing " + path + ": " + ex);
    1.45 +      }
    1.46 +      let statusMessage = request.status + " - " + request.statusText;
    1.47 +      postMessage({ type: "failure", message: statusMessage });
    1.48 +    }
    1.49 +  };
    1.50 +
    1.51 +  request.send(null);
    1.52 +}

mercurial