Firefox 32 for developers
=========================

Changes for Web developers
--------------------------

### Developer Tools

Highlights:

* Web Audio Editor
* *Code completion and inline documentation in Scratchpad]*
* User agent styles in the Inspector's Rules view
* Element picker button has moved
* Node dimensions added to the Inspector's infobar
* Full page screenshot button added
* HiDPI images added to the tools
* Nodes that have `display:none` are shown differently in the Inspector

All devtools bugs fixed between Firefox 31 and Firefox 32.

### CSS

* Enabled `mix-blend-mode` by default (Firefox bug 952643).
* Enabled `position:sticky` by default in release builds (only enabled on Nightly and Aurora before) (Firefox bug 916315).
* Implemented `box-decoration-break` and removed the non-standard `-moz-background-inline-policy` (Firefox bug 613659).
* Allowed `flex-grow` and `flex-shrink` to transition between zero and nonzero values, like 'flex-grow: 0.6'(Firefox bug 996945).
### HTML

* Experimentally implemented, behind a pref, `<img>` `srcset` property, To activate it set `dom.image.srcset.enable` to `true` (Firefox bug 870021).
* **id** and **class** are now true global attributes and also apply to XML elements, in a namespace or not (Firefox bug 741295).
### JavaScript

* The following new ECMAScript 2015 built-in methods got implemented:
    + `Array.from()` (Firefox bug 904723),
    + `Array.prototype.copyWithin()` (Firefox bug 934423),
    + `Number.isSafeInteger()` (Firefox bug 1003764).
### Interfaces/APIs/DOM

* The `Navigator.languages` property and `languagechange` event have been implemented (Firefox bug 889335).
* The `Navigator.vibrate()` method behavior has been adapted to the latest specification: too long vibrations are now truncated (Firefox bug 1014581).
* The `KeyboardEvent.getModifierState()` and `MouseEvent.getModifierState()` methods have been extended to support the `Accel` virtual modifier (Firefox bug 1009388).
* The `KeyboardEvent.code` property have been experimentally implemented: it is disabled on release build (Firefox bug 865649).
* Scoped selectors for `Document.querySelector()` and `Document.querySelectorAll()`, for example `querySelector(":scope > li")` have been implemented (Firefox bug 528456).
* The experimental implementation of the `Document.timeline` interface, related to the Web Animation API, has been added (Firefox bug 998246). It is controlled by `layout.web-animations.api.enabled` preference, enabled only on Nightly and Aurora for the moment.
* The Data Store API has been made available to Web Workers (Firefox bug 949325). It still is only activated for certified applications.
* The ServiceWorker `InstallPhaseEvent` and `InstallEvent` interfaces have been implemented (Firefox bug 967264).
* The MSISDN Verification API, only activated for privileged apps, has been added (Firefox bug 988469).
* The Gamepad API is now supported on Firefox for Android (Firefox bug 852935).
* To match the spec and the evolution of the CSS syntax, minor changes have been done to `CSS.escape()`. The identifier now can begins with `'--'` and the second dash must not be escaped. Also vendor identifier are no more escaped. (Firefox bug 1008719)
* To complete our Hit Regions implementation, `MouseEvent.region` has been implemented (Firefox bug 979692).
* The `CanvasRenderingContext2D.drawFocusIfNeeded()` method is now enabled by default (Firefox bug 1004579).
* The `Navigator.doNotTrack` properties now returns `'1'` or `'0'`, reflecting the HTTP value, instead of `'yes'` or `'no'` (Firefox bug 887703).
* XMLHttpRequest.responseURL was implemented (Firefox bug 998076)..
### MathML

* Add support for the `<menclose>` notation `phasorangle`.
### SVG

*No change.*

### WebRTC

* New constraints for WebRTC's `getUserMedia()`, `width`, `height`, and `framerate`, have been added, to limit stream dimensions and frame rate (Firefox bug 907352):

```js
{
  mandatory: {
    width: { min: 640 },
    height: { min: 480 },
  },
  optional: [
    { width: 650 },
    { width: { min: 650 }},
    { frameRate: 60 },
    { width: { max: 800 }},
  ]
}
```

* WebRTC methods which previously used callback functions as input parameters are now also available using JavaScript promises.
### Audio/Video

*No change.*

Security
--------

* Privileged code now gets Xray vision for JavaScript `Object` and `Array` instances.
Changes for add-on and Mozilla developers
-----------------------------------------

Xray vision is now applied to JavaScript objects that are not themselves DOM objects: Xrays for JavaScript objects.

A `getDataDirectory()` method has been added to `Addon` instances. This method returns the preferred location, within the current profile, for add-ons to store data.

### Add-on SDK

#### Highlights

* Added `exclude` option to `PageMod`.
* Added `anonymous` option to `Request`.
* Add-on Debugger now includes a Console and a Scratchpad.

#### Details

GitHub commits made between Firefox 31 and Firefox 32. This will not include any uplifts made after this release entered Aurora.

Bugs fixed between Firefox 31 and Firefox 32. This will not include any uplifts made after this release entered Aurora.

### XPCOM

* The `nsIUDPSocket` interface now provides multicast support through the addition of the new `nsIUDPSocket.multicastLoopback`, `nsIUDPSocket.multicastInterface`, and `nsIUDPSocket.multicastInterfaceAddr` attributes, as well as the `nsIUDPSocket.joinMulticast()` and `nsIUDPSocket.leaveMulticast()` methods.
### Older versions

* 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
* Firefox 14 for developers
* Firefox 13 for developers
* Firefox 12 for developers
* Firefox 11 for developers
* Firefox 10 for developers
* Firefox 9 for developers
* Firefox 8 for developers
* Firefox 7 for developers
* Firefox 6 for developers
* Firefox 5 for developers
* Firefox 4 for developers
* Firefox 3.6 for developers
* Firefox 3.5 for developers
* Firefox 3 for developers
* Firefox 2 for developers
* Firefox 1.5 for developers