Firefox "resource:///" pages

Contents

At the very top level of resource:/// there are the following components:

  • actors/ - Contains 22 .jjsm files
  • chrome/ - A deep rabbit-hole of options, containers, mini websites and more, essentially comprising much of Firefox itself:
    • browser/
    • devtools-startup/
    • devtools/
    • en-US/
    • pdfjs/
    • webide/
  • components/ - contains only the file componoents.manifest
  • defaults/
    • File:permissions
    • preferences/ - This is the really intersting one, containing all the Firefox preferences and some documentation about their use and settings. The values recorded here are for Firefox Quantum 68.0 (64-bit) on Linux.
      • debugger.js - 70 preferences, 198 lines overall
      • devtools-client.js - 171 preferences, 1388 lines overall
      • devtools-startup.js - 6 preferences, 223 lines overall
      • firefox-branding.js - 11 preferences, 212 lines overall
      • firefox-l10n.js - 1 line (no preferences)
      • firefox.js - 654 preferences, 6819 lines overall
      • webide.js - 9 preferences, 54 lines overall
      • Total 921 preferences
    • settings/ - Subfolders contain .json files
      • blocklists - 3 files
      • main/ - 5 files
      • pinning/ - 1 file (pins.jspn)
      • security-state - 2 files
  • localization/ - One subfolder (en-US) with four sub-folders:
    • branding/
    • brpwser/
    • devtools/
    • startup/
  • modules/
    • 82 .jsm files
    • Additional files in the following sub-folders:
      • aboutpages/ - 2 .jsm files
      • policies/ - 5 .jsm files
      • sessionstore/ - 18 .jsm files
      • syncedtabs/ - 1 .jsm file and 7 JavaScript files
      • themes/ - 2 subfolders: dark and light
      • translation/ - 8 .jsm files

Firefox “resource://gre/” pages

In addition to the above resource, there’s at least one hidden compnent named gre that has the following top-level structure:

  • actors/
  • chrome.manifest
  • chrome/
  • components/
  • contentaccessible/
  • defaults/
    • autoconfig/
    • pref/
      • marionette.js - 7 preferences, 38 lines overall
      • remote.js - 3 preferences, 14 lines overall
      • services-sync.js - 41 preferences, 95 lines overall
  • dictionaries/
  • greprefs.js - 2,164 preferences, 5131 lines overall
  • hyphenation/
  • localization/
  • modules/
  • res/
  • update.locale

There is very little overlap among all the preference files. Combining the lot of them produces an astonishing 3,136 preferences that can be set. Which ones should or should not be set is left as an exercise for the user.

What is GRE?

To determine what gre expands to, I downloaded the Firefox source code (2.5 gigabytes uncompressed) and issed the following command:

egrep -r 'G[a-z]+ R[a-z]+ E[a-z]+' firefox-68.0

The result: Gecko Runtime Engine