41
edits
(Update "API modules" section to mention that the schema files ext-*.js files have to be registered to the category manager) |
|||
| Line 162: | Line 162: | ||
Each API module must be explicitly registered, in order to be loaded. It must also register a schema if it exports any APIs to extensions. | Each API module must be explicitly registered, in order to be loaded. It must also register a schema if it exports any APIs to extensions. | ||
Generic APIs | Starting from Firefox 50 ([https://bugzilla.mozilla.org/1285064 Bug 1285064], [https://hg.mozilla.org/mozilla-central/rev/e9ca8dc4b42e hg commit e9ca8dc4b42e]) all the APIs schema and <code>ext-*.js</code> files must be registered to the category manager through one of the following manifest files: | ||
* [https://dxr.mozilla.org/mozilla-central/source/toolkit/components/extensions/extensions-toolkit.manifest toolkit/components/extensions/extensions-toolkit.manifest], for Generic APIs registered at toolkit level | |||
* [https://dxr.mozilla.org/mozilla-central/source/browser/components/extensions/extensions-browser.manifest browser/components/extensions/extensions-browser.manifest], for Firefox desktop APIs | |||
* [https://dxr.mozilla.org/mozilla-central/source/mobile/android/components/extensions/extensions-mobile.manifest mobile/android/components/extensions/extensions-mobile.manifest], for Firefox for Android APIs | |||
As an example, here is a snippet of the <code>extension-toolkit.manifest</code>: | |||
# scripts | |||
category webextension-scripts alarms chrome://extensions/content/ext-alarms.js | |||
... | |||
# schemas | |||
category webextension-schemas alarms chrome://extensions/content/schemas/alarms.json | |||
In previous Firefox versions, schemas and <code>ext-*.js</code> files were statically | |||
registered through <code>Extension.jsm</code> and <code>nsBrowserGlue.js</code> source | |||
files: | |||
Generic APIs were registered in <code>Extension.jsm</code> as follows: | |||
ExtensionManagement.registerScript("chrome://extensions/content/ext-foobar.js"); | ExtensionManagement.registerScript("chrome://extensions/content/ext-foobar.js"); | ||
| Line 168: | Line 187: | ||
ExtensionManagement.registerSchema("chrome://extensions/content/schemas/foobar.json"); | ExtensionManagement.registerSchema("chrome://extensions/content/schemas/foobar.json"); | ||
Firefox desktop APIs | Firefox desktop APIs were registered in [https://dxr.mozilla.org/mozilla-central/source/browser/components/nsBrowserGlue.js nsBrowserGlue.js]: | ||
ExtensionManagement.registerScript("chrome://browser/content/ext-bazquux.js"); | ExtensionManagement.registerScript("chrome://browser/content/ext-bazquux.js"); | ||
ExtensionManagement.registerSchema("chrome://browser/content/schemas/bazquux.json"); | ExtensionManagement.registerSchema("chrome://browser/content/schemas/bazquux.json"); | ||
edits