Thunderbird/Add-ons Guide 57: Difference between revisions
(Updated with the latest positive news :-)) |
(Updated with the latest positive news :-)) |
||
| Line 48: | Line 48: | ||
== Removed in mozilla59 == | == Removed in mozilla59 == | ||
* Inline options were removed in {{bug|1414406}}. Thunderbird will not support that | * Dialog (1) and Inline (2) options were removed in {{bug|1414406}}. Thunderbird will not support that feature any more, only options in tabs (3) will work in the future. We're working on a fix in {{Bug|1419145}}. Alternatively add-ons need to embed a WebExtension to display inline options [https://developer.mozilla.org/Add-ons/WebExtensions/Embedded_WebExtensions][https://developer.mozilla.org/Add-ons/WebExtensions/manifest.json/options_ui]. This should be working now that {{bug|1418914}} has been fixed. | ||
== Changes to JS changes in mozilla59 == | == Changes to JS changes in mozilla59 == | ||
| Line 55: | Line 55: | ||
== Outlook and Suggestion == | == Outlook and Suggestion == | ||
'''Suggestion for add-on authors wishing to be compatible with Thunderbird 59: Wait!''' The fix for {{bug|1414398}} (see above) has arrived (2017-12-12). {{Bug|1419145}} | '''Suggestion for add-on authors wishing to be compatible with Thunderbird 59: Wait!''' The fix for {{bug|1414398}} (see above) has arrived (2017-12-12). {{Bug|1419145}} will provide a menu to access add-on options and to make add-on tab options (3) work again. {{Bug|1418914}} has been fixed and then inline options can be achieved via an embedded WebExtension. | ||
== Also Note == | == Also Note == | ||
The list above only contains selected changes relevant to add-ons. The full list of changes can be seen at [https://developer.mozilla.org/en-US/Firefox/Releases Firefox developer release notes] where all the details, bugzilla bug reports and patches implementing those changes can be found. | The list above only contains selected changes relevant to add-ons. The full list of changes can be seen at [https://developer.mozilla.org/en-US/Firefox/Releases Firefox developer release notes] where all the details, bugzilla bug reports and patches implementing those changes can be found. | ||
Revision as of 20:36, 20 December 2017
Add-ons Guide for Thunderbird 57 and beyond
Mozilla core have disabled "legacy" add-ons (not based purely on WebExtensions) in Firefox 57. Because this type of add-on is not supported from mozilla57 any more, many interfaces have been removed from Mozilla core.
However, Thunderbird 57-59 and Seamonkey still support these add-ons if the appropriate modifications are done to adapt to the changed interfaces. In general, Thunderbird is adding WebExtension support (bug 1396172) while maintaining "legacy" add-ons and hybrid add-ons.
Removed interfaces in mozilla57
- nsILocalFile -- replacement: nsIFile
- extIApplication, nsIEntityConverter
- nsIProgrammingLanguage
- nsILocaleService and friends
- nsIScriptableDateFormat -- replacement: Intl.DateTimeFormat and mozIntl.DateTimeFormat
- nsIFilePicker.show() -- replacement: nsIFilePicker.open() (async), example: Changeset where Thunderbird implemented that change
- nsIDownloadManager
- Promise.jsm -- replacement: PromiseUtils.jsm
- nsIPrefBranch2 and nsIPrefBranchInternal -- replacement: nsIPrefBranch
- nsIExternalProtocolService.loadUrl -- replacement: nsIExternalProtocolService.loadURI
- nsIInputStreamPump.init: Change of arguments
- nsIAtomService - see bug 1393692 for removal from Thunderbird
Changes to JS and XUL in mozilla57
- `for each ()` construct [2] -- replacement: 'for (x of object)' or 'for (x of Object.values())'
- `with` construct [3]
- catch (ex if ex instanceof ExceptionType) (removed in mozilla47 already)
- versioned Javascript support -- replacement: In XUL files, links to JS files using <script type="application/x-javascript" ... > or <script type="application/x-javascript;version=1.7" ... >, change to <script type="application/javascript" ... >
- __iterator__ and Iterator()
- "legacy" generators, now need to use `function*` syntax (removed in mozilla? already)
- imports must be 100% correct now: Components.utils.import("resource://gre/modules/...") for Mozilla central imports, Components.utils.import("resource:///modules/...") for Thunderbird imports.
Changes in thunderbird57
- steelIApplication (removed due to removal of extIApplication) -- replacement: Services, AppConstants
- for (x in fixIterator(obj)) (removed due to removal of __iterator__) -- replacement: for (x of fixIterator(obj))
Removed in mozilla58
- Date.prototype.toLocaleFormat
- {get,set}ComplexValue use of nsISupportsString -- replacement: {get,set}StringPref(), example: Changeset where Thunderbird implemented that change
- Mechanism to store add-on preferences in defaults/preferences/xx.js. Thunderbird 58 Beta not affected due to backout of this core change. A fix has landed on Daily 59 as of 2017-12-12, see bug 1414398.
Changes to JS in mozilla58
- StopIteration [5]
Affected in thunderbird59
- Add-on options dialog not working in Add-ons Manager. Fix on the way in bug bug 1419145.
Removed in mozilla59
- Dialog (1) and Inline (2) options were removed in bug 1414406. Thunderbird will not support that feature any more, only options in tabs (3) will work in the future. We're working on a fix in bug 1419145. Alternatively add-ons need to embed a WebExtension to display inline options [6][7]. This should be working now that bug 1418914 has been fixed.
Changes to JS changes in mozilla59
- catch (ex if ...)
Outlook and Suggestion
Suggestion for add-on authors wishing to be compatible with Thunderbird 59: Wait! The fix for bug 1414398 (see above) has arrived (2017-12-12). bug 1419145 will provide a menu to access add-on options and to make add-on tab options (3) work again. bug 1418914 has been fixed and then inline options can be achieved via an embedded WebExtension.
Also Note
The list above only contains selected changes relevant to add-ons. The full list of changes can be seen at Firefox developer release notes where all the details, bugzilla bug reports and patches implementing those changes can be found.