Firefoxにインストールされているアドオンのサイズなどを確認する方法。

3.6用コード:

エラーコンソール上部の[コード]部に、以下のコードを貼り付け、[コードを評価]をクリック


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,"

  1. ""
  2. ""
  3. " "
  4. " "</li> <li>" Additional Addon Information"</li> <li>" "
  5. " "
  6. " "
  7. " "
  8. "
  9. "
  10. "
  11. "
  12. "
  13. "
  14. "
  15. "
  16. "
  17. ";

    addons.forEach(function(addon)
    {
    var ext = extDir.clone();
    ext.append(addon.id);

    addonData += ""

    1. "
    "
  18. "
  19. "
  20. "
  21. "
  22. "
  23. "
  24. "
  25. ";

    });

    addonData += ""

    1. "
    "
  26. " ID"
  27. "
  28. "
  29. " Name"
  30. "
  31. "
  32. " Size"
  33. "
  34. "
  35. " " + addon.id
  36. "
  37. "
  38. " " + addon.name
  39. "
  40. "
  41. " " + *1
  42. ? computeSizeRecursive(ext)
    : "Unknown")

    1. "
    "
  43. " "
  44. "";

var windowManager = CC['@mozilla.org/appshell/window-mediator;1']
.getService(CI.nsIWindowMediator);
var win = windowManager.getMostRecentWindow("navigator:browser");
win.open(addonData, "", "");

*1:ext.exists(