const CI = Components.interfaces; const CC = Components.classes; function computeSizeRecursive(file) { file.QueryInterface(CI.nsIFile); if(file.isSymlink()) { return 0; } var size = file.fileSize; if(file.isDirectory()) { var files = file.directoryEntries; while(files.hasMoreElements()) { size += computeSizeRecursive(files.getNext()); } } return size; } var Application = CC["@mozilla.org/fuel/application;1"].getService(CI.fuelIApplication); var addons = Application.extensions.all; var extDir = Components.classes["@mozilla.org/file/directory_service;1"] .getService(Components.interfaces.nsIProperties) .get("ProfD", Components.interfaces.nsIFile); extDir.append("extensions"); var ios = Components.classes["@mozilla.org/network/io-service;1"] .getService(Components.interfaces.nsIIOService); var addonData = "data:text/html," + "" + "" + "
" + "" + " ID" + " | " + "" + " Name" + " | " + "" + " Size" + " | " + "
" + " " + addon.id + " | " + "" + " " + addon.name + " | " + "" + " " + ((ext.exists()) ? computeSizeRecursive(ext) : "Unknown") + " | " + "