Changes

Jump to: navigation, search

WebExtensions/Hacking

1,380 bytes added, 13:43, 2 August 2016
Update "API modules" section to mention that the schema files ext-*.js files have to be registered to the category manager
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.
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 staticallyregistered through <code>Extension.jsm</code> and <code>nsBrowserGlue.js</code> sourcefiles: Generic APIs are were registered in <code>Extension.jsm</code> as follows:
ExtensionManagement.registerScript("chrome://extensions/content/ext-foobar.js");
ExtensionManagement.registerSchema("chrome://extensions/content/schemas/foobar.json");
Firefox desktop APIs are 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.registerSchema("chrome://browser/content/schemas/bazquux.json");
41
edits

Navigation menu