Thunderbird/Add-ons Guide 57: Difference between revisions

From MozillaWiki
Jump to navigation Jump to search
(add link to Firefox developer release notes)
Line 21: Line 21:
* nsIExternalProtocolService.loadUrl -- replacement: nsIExternalProtocolService.loadURI
* nsIExternalProtocolService.loadUrl -- replacement: nsIExternalProtocolService.loadURI
* nsIInputStreamPump.init: Change of arguments
* nsIInputStreamPump.init: Change of arguments
* nsIAtomService - see {{bug|1393692}} for removal from Thunderbird


== Changes to JS and XUL in mozilla57 ==  
== Changes to JS and XUL in mozilla57 ==  

Revision as of 23:14, 11 December 2017

Add-ons Guide for Thunderbird 57 and beyond

FIRST DRAFT

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

[1]

  • `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. Work on the way to re-establish this feature, see bug 1414398.

Changes to JS in mozilla58

[4]

  • StopIteration [5]

Suggestion for add-on authors wishing to be compatible with Thunderbird 59: Wait!. The fix for bug 1414398 (see above) will arrive soon. It's doubtful whether bug 1419145 will be fixed, but bug 1418914 will most likely be fixed and then inline options can be achieved via an embedded WebExtension.

Removed in mozilla59

  • Inline options. Analysis on the way of how this feature can be restored, see bug 1419145. Current solution: Add-ons need to embed a WebExtension to display an options dialog[6][7], not working due to bug 1418914.

Changes to JS changes in mozilla59

[8]

  • catch (ex if ...)


This list contains only selected changes relevant to addons. 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.