123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 |
- /**
- * 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();
- }
|