Firefox 46 for developers
=========================

To test the latest developer features of Firefox, install Firefox Developer EditionFirefox 46 was released on April 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:

* Dominators view in the Memory tool
* Allocations view in the Performance tool
* One click to apply @media rule conditions in the Style Editor

All devtools bugs fixed between Firefox 45 and Firefox 46.

### HTML

* When faced with an invalid `type` value, `<ul>` no longer maps to `decimal`, but now behaves as if no `type` value were specified (Firefox bug 241719).
* The attribute `pattern` on `<input>` is now treated as a regular expression with `"u"` (unicode) flag (Firefox bug 1227906).
### CSS

* Our implementation of CSS Grids has been updated:
    + The keywords `auto-fill` and `auto-fit` are now allowed in the `repeat()` function (Firefox bug 1118820).
    + The `true` value has been renamed to `unsafe`; this affects the properties `justify-content`, `align-content`, `justify-self`, `align-self`, `justify-items` and `align-items` (Firefox bug 1230478).
* The properties `text-emphasis`, `text-emphasis-style`, `text-emphasis-color` and `text-emphasis-position` are now enabled by default (Firefox bug 1231485).
* Gecko now accepts the `-webkit-` prefixed version of some properties; it requires to switch `layout.css.prefixes.webkit` to `true` (Firefox bug 1213126).
* The experimental support of the `font-display` descriptor (of `@font-face`; it requires to switch `layout.css.font-display.enabled` to `true` (Firefox bug 1157064).
* Added support for `@media (-webkit-transform-3d)` as a media query for 3D transform support, if about:config pref `layout.css.prefixes.webkit` is set to `true` (Firefox bug 1239799).
* `linear-gradient()` support for the omission of `0deg` units (Firefox bug 1239153).
* Added `-webkit-filter` for web compatibility, behind the preference `layout.css.prefixes.webkit`, defaulting to `false` (Firefox bug 1236506).
* [css-align] "unsafe start" (formerly "true start") should serialize to "start" etc (Firefox bug 1230398).
### JavaScript

* The ES2015 RegExp unicode (u) flag has been implemented (Firefox bug 1135377).
* The ES2015 block-level functions have been implemented (Firefox bug 1071646).
* The ES2015 `TypedArray.prototype.sort()` method has been implemented (Firefox bug 1121937).
* The ES2015 `arguments[@@iterator]` has been implemented (Firefox bug 1067049).
* The experimental ECMAScript Shared Memory API has been implemented. See the `SharedArrayBuffer` and `Atomics` objects. To use this experimental API set `javascript.options.shared_memory` to `true` in about:config.
* Redeclaration of `let` and `const` variables now throws a `SyntaxError` instead of a `TypeError` as per the ECMAScript specification (Firefox bug 1198833).
* In Strict mode, setting properties on primitive values will now throw a `TypeError` (Firefox bug 603201).
* The non-standard `WeakMap.prototype.clear()` and `WeakSet.prototype.clear()` methods have been removed (Firefox bug 1101817).
* The non-standard, static `RegExp.multiline` property is now deprecated (Firefox bug 1220457).
* Built-in accessor function names now have a "get" or "set" prefix (Firefox bug 1180290, Firefox bug 1235656).
* JS1.7/JS1.8 (legacy) array comprehensions and generator comprehensions have been removed (Firefox bug 1220564).
### Interfaces/APIs/DOM

#### DOM & HTML DOM

* The deprecated `Window.showModalDialog()` method is no more available when Firefox runs in multi-process mode (e10s) (Firefox bug 1234700).
* Added support for `Document.elementsFromPoint()` (Firefox bug 1164427).
* When a non-existent option of a `<select>` element is programmatically selected, instead of being incorrectly left unchanged, the `selectedIndex` value is now set to `-1`, the `selectedOptions` to an empty `HTMLCollection`, and `value` to an empty string (Firefox bug 1203668).

#### Canvas

* The remaining parts of the experimental `OffscreenCanvas` API has been implemented; new features: `OffscreenCanvas()` constructor, `OffscreenCanvas.toBlob()`, and `OffscreenCanvas.transferToImageBitmap()`. To use this experimental API set `gfx.offscreencanvas.enabled` to `true` in about:config (Firefox bug 1172796).
* The `ImageBitmap.close()` method is now supported (Firefox bug 1172796).
* A new `ImageBitmapRenderingContext` rendering context is now implemented. Use `"bitmaprenderer"` with `OffscreenCanvas.getContext()` or `HTMLCanvasElement.getContext()` to obtain this context. (Firefox bug 1172796).

#### WebGL

* The `WEBGL_compressed_texture_etc` extension has been implemented, allowing the use of ETC2 compressed texture formats (Firefox bug 917505). To use this extension, set the preference `webgl.enable-draft-extensions` to `true` in about:config.

#### IndexedDB

*No change.*

#### Service Workers

* `FetchEvent.request` is now non-nullable (see Firefox bug 1238213.)
* `Navigator.serviceWorker` has now been marked as SameObject (see Firefox bug 1238205.)
* `ExtendableMessageEvent.ports` has now been marked as SameObject (see Firefox bug 1238225.)

#### Fetch

* `Request.mode` now has a new value available, `navigate`, for supporting requests generated while navigating between documents (see Firefox bug 1209081.)

#### WebRTC

* The `RTCPeerConnection.createOffer()` method now supports the VP9 video codec, although this is disabled by default. To enable it, set the preference `media.peerconnection.video.vp9_enabled` to `true` in `about:config`. When enabled, VP9 is the preferred codec; previously VP8 was preferred (Firefox bug 1242324).
* The method `RTCRtpSender.setParameters()` has been added to allow changing the values of parameters after the `RTCRtpSender` was initially created.

#### New APIs

* In SVG, the `SVGStyleElement` interface now implements the `LinkStyle` mixin ) Firefox bug 1239128.

#### Miscellaneous

* The asynchronous `FileReader` is now available in Web workers (Firefox bug 901097).
* Our experimental implementation of Web Animations API has been updated:
    + The `AnimationEffectTimingReadOnly` dictionary and `AnimationEffectReadOnly.timing` have been implemented (Firefox bug 1214536).
* The Permissions API has now been enabled by default, for all release versions, not just Nightly as it previously was (Firefox bug 1221106.)
* Sanitization of WOFF fonts has been loosened a bit (Firefox bug 1244693).
### MathML

*No change.*

### SVG

*No change.*

### Audio/Video

*No change.*

HTTP
----

*No change.*

Networking
----------

* Support of RFC 7686 has been added: by default there is no attempt to resolve domain with the TLD `.onion`. This is controlled by the preference `network.dns.blockDotOnion`. Add-ons supporting Tor can swap this pref. (Firefox bug 1228457)
Security
--------

*No change.*

Changes for add-on and Mozilla developers
-----------------------------------------

### Interfaces

*No change.*

### XUL

*No change.*

### JavaScript code modules

*No change.*

### XPCOM

*No change.*

### Other

*No change.*

Older versions
--------------

* Firefox 45 for developers
* Firefox 44 for developers
* Firefox 43 for developers
* Firefox 42 for developers
* Firefox 41 for developers
* Firefox 40 for developers
* Firefox 39 for developers
* Firefox 38 for developers
* Firefox 37 for developers
* Firefox 36 for developers
* Firefox 35 for developers
* Firefox 34 for developers
* Firefox 33 for developers
* Firefox 32 for developers
* Firefox 31 for developers
* Firefox 30 for developers
* Firefox 29 for developers
* Firefox 28 for developers
* Firefox 27 for developers
* Firefox 26 for developers
* Firefox 25 for developers
* Firefox 24 for developers
* Firefox 23 for developers
* Firefox 22 for developers
* Firefox 21 for developers
* Firefox 20 for developers
* Firefox 19 for developers
* Firefox 18 for developers
* Firefox 17 for developers
* Firefox 16 for developers
* Firefox 15 for developers