Firefox 44 release notes for developers
To test the latest developer features of Firefox, install Firefox Developer Edition. Firefox 44 was released on January 26, 2016. This article lists key changes that are useful not only for web developers, but also Firefox and Gecko developers as well as add-on developers.
Changes for Web developers
>Developer tools
Highlights:
HTML
<link rel="prefetch">now obeys thecrossoriginattribute (Firefox bug 1214819).
CSS
-
position: fixed;now always creates a new stacking context (Firefox bug 1179288). -
The support of
unicode-rangehas been enabled by default (Firefox bug 1119062). -
Our experimental implementation of CSS Writing Modes has been updated to reflect the latest specification:
- The value
sidewaysof thetext-orientationproperty has been implemented andsideways-righthas been made an alias of it (Firefox bug 1193488). - The value
sideways-rlandsideways-lrof thewriting-modeproperty (Firefox bug 1193488 and Firefox bug 1193519).
- The value
-
The non-standard properties
-moz-math-displayand-moz-window-shadoware no more available from Web content (Firefox bug 1207002, Firefox bug 1211040, and Firefox bug 1212607). -
The
font-styleproperty now distinguishes betweenobliqueanditalicwhen both variants are available (Firefox bug 543715). -
Though not supported, the properties
marks,orphans,page,size, andwidows, were parsed and@supportswas incorrectly reporting them as supported; this has been fixed and the properties are not parsed anymore, nor marked as supported (Firefox bug 1215702). -
The internal value
-moz-mac-unified-toolbarhas been removed from the possible values for theappearanceproperty (Firefox bug 1206468). -
Several
-webkitprefixed properties and values have been added for web compatibility, behind the preferencelayout.css.prefixes.webkit, defaulting tofalse(Firefox bug 837211):-webkit-animation-webkit-animation-delay-webkit-animation-direction-webkit-animation-duration-webkit-animation-fill-mode-webkit-animation-iteration-count-webkit-animation-name-webkit-animation-play-state-webkit-animation-timing-function-webkit-text-size-adjust-webkit-transform-webkit-transform-origin-webkit-transform-style-webkit-transition-webkit-transition-delay-webkit-transition-duration-webkit-transition-property-webkit-transition-timing-function-webkit-border-radius-webkit-border-top-left-radius-webkit-border-top-right-radius-webkit-border-bottom-left-radius-webkit-border-bottom-right-radius-webkit-appearance-webkit-background-clip-webkit-background-origin-webkit-background-size-webkit-border-image-webkit-box-shadow-webkit-box-sizing-webkit-user-select-webkit-linear-gradient()Firefox bug 1210575-webkit-radial-gradient"()Firefox bug 1210575-webkit-repeating-linear-gradient()Firefox bug 1210575-webkit-repeating-radial-gradient()Firefox bug 1210575
JavaScript
New APIs
Symbol.toPrimitive,Symbol.prototype[Symbol.toPrimitive](), andDate.prototype[Symbol.toPrimitive]()have been implemented (Firefox bug 1054756).
Changes
- The
letandconstbindings in the global level have been made compliant with ES2015 semantics. See Firefox bug 589199 and the blog post "Breaking changes in let and const in Firefox Nightly 44". In addition,letis now available to default Web JavaScript (strict and non-strict) and does not require a version opt-in anymore (Firefox bug 932517). - If typed arrays' (like
Int8Array) andArrayBuffer) constructors are called as a function without thenewoperator, aTypeErroris now thrown as per the ES2015 specification (Firefox bug 980945, Firefox bug 1214936). - The
RegExpsticky flag now follows the ES2015 standard for anchored sticky regular expressions (Firefox bug 773687). - The JavaScript shell (SpiderMonkey's REPL) now defaults to the default, Web-compatible JS version (and not JS1.7+ anymore) (Firefox bug 1192329).
Removals
- Support for the non-standard
letblocks has been dropped (Firefox bug 1167029. - The non-standard and deprecated property
Object.prototype.__noSuchMethod__has been removed (Firefox bug 683218).
Interfaces/APIs/DOM
DOM & HTML DOM
- For compatibility with specific existing sites, the property
Document.charsethas been implemented as an alias ofDocument.characterSet(Firefox bug 647621). - Support for the
window.sidebar.addSearchEngine()method, which allowed Web pages to invoke an installation of a Sherlock plugin, has been dropped and now it just logs a warning in the Web Console (Firefox bug 862148). - To fight unwanted pop-ups, prompts requested in
beforeunloadevents of pages that have not been interacted with are no more displayed (Firefox bug 636905). - The deprecated method
MessageEvent.initMessageEvent()has been reimplemented for backward compatibility (Firefox bug 949376). - The obsolete property
DocumentType.internalSubsethas been removed (Firefox bug 801545). - For compatibility with existing sites, the
Window.orientationproperty and theorientationchangeevent have been implemented (Firefox bug 920734). - An
<iframe>with explicit fullscreen request should not exit fullscreen implicitly (Firefox bug 1187801). - The events
mouseover,mouseout,mouseenter,mouseleave,pointermove,pointerover,pointerout,pointerenterandpointerleaveare now triggered for disabled form elements (Firefox bug 218093). - The method
Element.webkitMatchesSelector()has been added (Firefox bug 1216193) to improve interoperability. - To match the spec, the method
Document.createAttribute()now converts the input to lower case (Firefox bug 1176313). - The non-standard
dialogfeature forWindow.open()is no longer available to Web content. It is still available to extensions and other code with chrome privileges (Firefox bug 1095236.
Canvas
- A new experimental
OffscreenCanvasAPI that allows rendering contexts (such as WebGL) to run in Web Workers has been implemented. To use this experimental API setgfx.offscreencanvas.enabledtotruein about:config (Firefox bug 709490). This API includes:- The
OffscreenCanvasinterface, HTMLCanvasElement.transferControlToOffscreen(), andWebGLRenderingContext.commit().- Several WebGL interfaces are now also available in a worker context when this API is enabled.
- The
WebGL
- Uniform Buffer Objects have been implemented (Firefox bug 1048747).
IndexedDB
- The
IDBIndex.getAll()andIDBIndex.getAllKeys(), and there counterparts onIDBObjectStoreare now available by default (Firefox bug 1196841).
Service Workers
- The
ServiceWorkerMessageEventandExtendableMessageEventinterfaces have been implemented (Firefox bug 1143717 and Firefox bug 1207068). Headersobjects now support a pair iterator, meaning that the methodsHeaders.entries(),Headers.keys(), andHeaders.values()are now available;Symbol.iteratornow also returns the default iterator for them (Firefox bug 1108181).- The
XMLHttpRequestAPI has been disabled on Service Workers (Firefox bug 931243). - The interface
FetchEventnow extendsExtendableEvent, giving it access to theExtendableEvent.waitUntil()method. (Firefox bug 1214772). - Following a recent change in the specification,
FetchEvent.clienthas been removed (Firefox bug 1218135). - To match the latest specification, the
ServiceWorkerContainer.onreloadpagehas been removed (Firefox bug 1218139). - The event handlers
ServiceWorkerGlobalScope.onbeforeevictedandServiceWorkerGlobalScope.onevictedhave been removed as they weren't following the spec. They will be reintroduced in the future, but their removal will allow feature detection to work as expected (Firefox bug 1218142). - In the
FetchEvent()constructor, if theisReloadmember is not present in the options dictionary, it now defaults tofalse(Firefox bug 1216401). - The
Client.frameTypeproperty is now implemented on the right interface; it was onWindowClientbefore (Firefox bug 1218146). - When AppCache is used to provide offline support for a page, a warning message is now displayed in the console advising developers to use Service workers instead (Firefox bug 1204581.)
- Service workers have been enabled by default in Gecko.
WebRTC
-
WebRTC interfaces have been unprefixed (Firefox bug 1155923). In particular:
mozRTCPeerConnectionis nowRTCPeerConnection.mozRTCIceCandidateis nowRTCIceCandidate.mozRTCSessionDescriptionis nowRTCSessionDescription.
-
The
RTCDataChannel.bufferedAmountLowThresholdproperty, as well as thebufferedamountlowevent and its event handler, have been implemented (Firefox bug 1178091). -
The attribute
RTCPeerConnection.canTrickleIceCandidateshas been added, the non-standard methodRTCPeerConnection.updateIce()removed (Firefox bug 1209744). -
The
MediaStreaminterface now supports theMediaStream.addTrack()andMediaStream.removeTrack()methods (Firefox bug 1103188). -
The constructor
MediaStream()has been implemented (Firefox bug 1070216). -
Support for the non-standard constraint style option list for
RTCOfferOptionshas been removed.
New APIs
- An experimental implementation of the Canvas API in Workers has landed:
OffscreenCanvasandHTMLCanvasElement.transferControlToOffscreen()are available behind thegfx.offscreencanvas.enabledpreference, currently disabled by default (Firefox bug 709490). - The Text2Speech API, part of Web Speech API, has now an OS X backend. But this is disabled by default (Firefox bug 1003452).
Miscellaneous
URLSearchParamsobjects now support a pair iterator, meaning that the methodsURLSearchParams.entries(),URLSearchParams.keys(), andURLSearchParams.values()are now available;Symbol.iteratornow also returns the default iterator for them (Firefox bug 1085284).FormDataobjects now support a pair iterator, meaning that the methodsFormData.entries(),FormData.keys, andFormData.values()are now available;Symbol.iteratornow also returns the default iterator for them (Firefox bug 1127703).- When
XMLHttpRequest.send()is used with an HTML document, it now usestext/htmlinstead ofapplication/xml(Firefox bug 918771). - Speech synthesis (text-to-speech) has been implemented in Firefox Desktop for Mac and Linux, hidden behind the
media.webspeech.synth.enabledflag inabout:config(Firefox bug 1003452, Firefox bug 1003464.) See Web Speech API for more information. - Elements inside a
<frame>or an<object>can't be set fullscreen anymore (Firefox bug 1212299). - Sanitization of WOFF fonts is a bit more stricter, leading to more incorrect fonts being rejected, this sanitization is made a bit less stricter in Firefox 46 (Firefox bug 1193050 and Firefox bug 1244693).
MathML
No change.
SVG
No change.
Audio/Video
No change.
HTTP
- Support for the Brotli algorithm has been added and both
Accept-EncodingandContent-Encodingheaders now support thebrvalue (Firefox bug 366559 and Firefox bug 1211916). - Incorrect support of HTTP/2 headers containing line breaks (
'/n') have been removed as the spec doesn't allow it, unlike HTTP/1 (Firefox bug 1197847).
Networking
No change.
Security
- RC4 is now also disabled by default on Beta and Release versions of the browser (Firefox bug 1201025) and the whitelist is now empty by default (Firefox bug 1215796).
Changes for add-on and Mozilla developers
>Interfaces
No change.
XUL
No change.
JavaScript code modules
- Added
LIKEsupport to Sqlite.jsm (Firefox bug 1188760). - Added Snackbars.jsm module to Firefox for Android (Firefox bug 1215026)
XPCOM
- The
nsIDOMWindowinterface is now empty. Its contents were either no longer used, had moved elsewhere, or were only used from C++. The items available from C++ code now reside in the nsPIDOMWindow interface (Firefox bug 1216401).
Other
- Due to breaking changes in Firefox 44 (bug 1202902), add-ons packed with cfx will not work any longer. To make your add-on compatible again, please use jpm. See the cfx to jpm migration guide.