diff options
Diffstat (limited to 'tools/addon-sdk-1.12/lib/sdk/test/tmp-file.js')
-rw-r--r-- | tools/addon-sdk-1.12/lib/sdk/test/tmp-file.js | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/tools/addon-sdk-1.12/lib/sdk/test/tmp-file.js b/tools/addon-sdk-1.12/lib/sdk/test/tmp-file.js new file mode 100644 index 0000000..634d2f1 --- /dev/null +++ b/tools/addon-sdk-1.12/lib/sdk/test/tmp-file.js @@ -0,0 +1,73 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ +"use strict"; + +const { Cc, Ci } = require("chrome"); + +const system = require("sdk/system"); +const file = require("sdk/io/file"); +const unload = require("sdk/system/unload"); + +// Retrieve the path to the OS temporary directory: +const tmpDir = require("sdk/system").pathFor("TmpD"); + +// List of all tmp file created +let files = []; + +// Remove all tmp files on addon disabling +unload.when(function () { + files.forEach(function (path){ + // Catch exception in order to avoid leaking following files + try { + if (file.exists(path)) + file.remove(path); + } + catch(e) { + console.exception(e); + } + }); +}); + +// Utility function that synchronously reads local resource from the given +// `uri` and returns content string. Read in binary mode. +function readBinaryURI(uri) { + let ioservice = Cc["@mozilla.org/network/io-service;1"].getService(Ci.nsIIOService); + let channel = ioservice.newChannel(uri, "UTF-8", null); + let stream = Cc["@mozilla.org/binaryinputstream;1"]. + createInstance(Ci.nsIBinaryInputStream); + stream.setInputStream(channel.open()); + + let data = ""; + while (true) { + let available = stream.available(); + if (available <= 0) + break; + data += stream.readBytes(available); + } + stream.close(); + + return data; +} + +// Create a temporary file from a given string and returns its path +exports.createFromString = function createFromString(data, tmpName) { + let filename = (tmpName ? tmpName : "tmp-file") + "-" + (new Date().getTime()); + let path = file.join(tmpDir, filename); + + let tmpFile = file.open(path, "wb"); + tmpFile.write(data); + tmpFile.close(); + + // Register tmp file path + files.push(path); + + return path; +} + +// Create a temporary file from a given URL and returns its path +exports.createFromURL = function createFromURL(url, tmpName) { + let data = readBinaryURI(url); + return exports.createFromString(data, tmpName); +} + |