head.js 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. /**
  2. * Any copyright is dedicated to the Public Domain.
  3. * http://creativecommons.org/publicdomain/zero/1.0/
  4. *
  5. * All images in schema_15_profile.zip are from https://github.com/mdn/sw-test/
  6. * and are CC licensed by https://www.flickr.com/photos/legofenris/.
  7. */
  8. var Cc = Components.classes;
  9. var Ci = Components.interfaces;
  10. var Cu = Components.utils;
  11. // services required be initialized in order to run CacheStorage
  12. var ss = Cc['@mozilla.org/storage/service;1']
  13. .createInstance(Ci.mozIStorageService);
  14. var sts = Cc['@mozilla.org/network/stream-transport-service;1']
  15. .getService(Ci.nsIStreamTransportService);
  16. var hash = Cc['@mozilla.org/security/hash;1']
  17. .createInstance(Ci.nsICryptoHash);
  18. // Expose Cache and Fetch symbols on the global
  19. Cu.importGlobalProperties(['caches', 'fetch']);
  20. // Extract a zip file into the profile
  21. function create_test_profile(zipFileName) {
  22. do_get_profile();
  23. var directoryService = Cc['@mozilla.org/file/directory_service;1']
  24. .getService(Ci.nsIProperties);
  25. var profileDir = directoryService.get('ProfD', Ci.nsIFile);
  26. var currentDir = directoryService.get('CurWorkD', Ci.nsIFile);
  27. var packageFile = currentDir.clone();
  28. packageFile.append(zipFileName);
  29. var zipReader = Cc['@mozilla.org/libjar/zip-reader;1']
  30. .createInstance(Ci.nsIZipReader);
  31. zipReader.open(packageFile);
  32. var entryNames = [];
  33. var entries = zipReader.findEntries(null);
  34. while (entries.hasMore()) {
  35. var entry = entries.getNext();
  36. entryNames.push(entry);
  37. }
  38. entryNames.sort();
  39. for (var entryName of entryNames) {
  40. var zipentry = zipReader.getEntry(entryName);
  41. var file = profileDir.clone();
  42. entryName.split('/').forEach(function(part) {
  43. file.append(part);
  44. });
  45. if (zipentry.isDirectory) {
  46. file.create(Ci.nsIFile.DIRECTORY_TYPE, parseInt('0755', 8));
  47. } else {
  48. var istream = zipReader.getInputStream(entryName);
  49. var ostream = Cc['@mozilla.org/network/file-output-stream;1']
  50. .createInstance(Ci.nsIFileOutputStream);
  51. ostream.init(file, -1, parseInt('0644', 8), 0);
  52. var bostream = Cc['@mozilla.org/network/buffered-output-stream;1']
  53. .createInstance(Ci.nsIBufferedOutputStream);
  54. bostream.init(ostream, 32 * 1024);
  55. bostream.writeFrom(istream, istream.available());
  56. istream.close();
  57. bostream.close();
  58. }
  59. }
  60. zipReader.close();
  61. }