aboutsummaryrefslogtreecommitdiff
path: root/tools/addon-sdk-1.12/lib/sdk/test/tmp-file.js
diff options
context:
space:
mode:
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.js73
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);
+}
+