summaryrefslogtreecommitdiffstats
path: root/dom/cache/test/xpcshell/head.js
diff options
context:
space:
mode:
Diffstat (limited to 'dom/cache/test/xpcshell/head.js')
-rw-r--r--dom/cache/test/xpcshell/head.js77
1 files changed, 77 insertions, 0 deletions
diff --git a/dom/cache/test/xpcshell/head.js b/dom/cache/test/xpcshell/head.js
new file mode 100644
index 000000000..3d51929b3
--- /dev/null
+++ b/dom/cache/test/xpcshell/head.js
@@ -0,0 +1,77 @@
+/**
+ * Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/publicdomain/zero/1.0/
+ *
+ * All images in schema_15_profile.zip are from https://github.com/mdn/sw-test/
+ * and are CC licensed by https://www.flickr.com/photos/legofenris/.
+ */
+
+var Cc = Components.classes;
+var Ci = Components.interfaces;
+var Cu = Components.utils;
+
+// services required be initialized in order to run CacheStorage
+var ss = Cc['@mozilla.org/storage/service;1']
+ .createInstance(Ci.mozIStorageService);
+var sts = Cc['@mozilla.org/network/stream-transport-service;1']
+ .getService(Ci.nsIStreamTransportService);
+var hash = Cc['@mozilla.org/security/hash;1']
+ .createInstance(Ci.nsICryptoHash);
+
+// Expose Cache and Fetch symbols on the global
+Cu.importGlobalProperties(['caches', 'fetch']);
+
+// Extract a zip file into the profile
+function create_test_profile(zipFileName) {
+ do_get_profile();
+
+ var directoryService = Cc['@mozilla.org/file/directory_service;1']
+ .getService(Ci.nsIProperties);
+ var profileDir = directoryService.get('ProfD', Ci.nsIFile);
+ var currentDir = directoryService.get('CurWorkD', Ci.nsIFile);
+
+ var packageFile = currentDir.clone();
+ packageFile.append(zipFileName);
+
+ var zipReader = Cc['@mozilla.org/libjar/zip-reader;1']
+ .createInstance(Ci.nsIZipReader);
+ zipReader.open(packageFile);
+
+ var entryNames = [];
+ var entries = zipReader.findEntries(null);
+ while (entries.hasMore()) {
+ var entry = entries.getNext();
+ entryNames.push(entry);
+ }
+ entryNames.sort();
+
+ for (var entryName of entryNames) {
+ var zipentry = zipReader.getEntry(entryName);
+
+ var file = profileDir.clone();
+ entryName.split('/').forEach(function(part) {
+ file.append(part);
+ });
+
+ if (zipentry.isDirectory) {
+ file.create(Ci.nsIFile.DIRECTORY_TYPE, parseInt('0755', 8));
+ } else {
+ var istream = zipReader.getInputStream(entryName);
+
+ var ostream = Cc['@mozilla.org/network/file-output-stream;1']
+ .createInstance(Ci.nsIFileOutputStream);
+ ostream.init(file, -1, parseInt('0644', 8), 0);
+
+ var bostream = Cc['@mozilla.org/network/buffered-output-stream;1']
+ .createInstance(Ci.nsIBufferedOutputStream);
+ bostream.init(ostream, 32 * 1024);
+
+ bostream.writeFrom(istream, istream.available());
+
+ istream.close();
+ bostream.close();
+ }
+ }
+
+ zipReader.close();
+}