Firefox 31 for developers
=========================

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

### Developer Tools

Highlights:

* Eyedropper tool to select colors in web pages
* full stack traces for console error messages
* editable Box Model View
* %c formatting to style console messages
* "copy as cURL" command in Network Monitor
* Sublime Text keybindings in the source editor
* Option to make Network Monitor logs persistent
* JavaScript warnings on by default in the Web Console
* Alt+click to expand all descendants of a node

All devtools bugs fixed between Firefox 30 and Firefox 31.

### CSS

* Changed `var-` prefix of CSS Variables to `--` to reflect the final spec change (Firefox bug 985838).
* The `hyphens` property now support Polish hyphenation rules (Firefox bug 987668).
* Removed an unwanted white space for multiple of 10,000 in Korean counter styles (Firefox bug 985186).
* CSS opacity transition broken with parent pseudo :before and overflow auto (Firefox bug 990340).
* The `::-moz-math-stretchy` pseudo-element has been removed (Firefox bug 1000879).
### HTML

* `<track>` has been implemented (Firefox bug 629350).
### JavaScript

New ECMAScript 2015 features implemented:

* New `Array` built-in: `Array.prototype.fill()` (Firefox bug 911147)
* New `Math` function: `Math.clz32()` (Firefox bug 925123)
* New `String` built-in: `String.prototype.normalize()` is available in Firefox Desktop (Firefox bug 918987).
* New `Object` method `Object.setPrototypeOf()`.
* New `Number` constants: `Number.MAX_SAFE_INTEGER` and `Number.MIN_SAFE_INTEGER`.
* The ES2015 Proxy `isExtensible` trap have been implemented (Firefox bug 978235).
### Interfaces/APIs/DOM

* Constructor of `KeyboardEvent` has been implemented (Firefox bug 930893).
* The Resource Timing API has been implemented (see Firefox bug 822480).
* `KeyboardEvent.isComposing` attribute has been implemented (Firefox bug 993234).
* `InputEvent` interface has been implemented (Firefox bug 993253).
* `InputEvent.isComposing` attribute has been implemented (Firefox bug 993253).
* `CSS.escape()` has been implemented (Firefox bug 955860).
* `mousemove` is now cancelable like in other browsers (Firefox bug 704423). Calling `preventDefault()` only sets `defaultPrevented` attribute to `true;` any other behaviors are not changed. E.g., it cannot prevent to set `:hover` state.
* The `Path2D` interface has been implemented.
* The `CanvasRenderingContext2D.isPointInPath()`, `CanvasRenderingContext2D.isPointInStroke()`, `CanvasRenderingContext2D.clip()`, `CanvasRenderingContext2D.fill()` and `CanvasRenderingContext2D.stroke()` methods have been updated to optionally accept a `Path2D` object.
* Implemented `HTMLMediaElement.fastSeek()`.
* The `Connection` interface has been renamed to `NetworkInformation` and has been modified to match the new specification (Firefox bug 960426).
* The `Navigator.sendBeacon()` has been implemented; this allows asynchronous transmission of analytics or other data in a manner that doesn't rely on the transmitting page remaining loaded, so that it can be used in an `unload` or `beforeunload` handler.
### MathML

* Partial implementation of the OpenType MATH table, section 6.3.6 (Firefox bug 407059). For details, try the MathML torture test .
* The `::-moz-math-stretchy` pseudo-element has been removed (Firefox bug 1000879).
* When available, the Unicode Mathematical alphanumeric characters are used for bold, italic and bold-italic math variants (Firefox bug 930504).
### SVG

*No change.*

### Audio/Video

*No change.*

Security
--------

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

* The "`align`" attribute on the `urlbar-wrapper` (formerly on the `urlbar-container`) which was set to "`center`" since time immemorial, has been removed. This is known to affect third-party themes. You should look carefully at what the right fix is for your theme, but for maintaining the equivalent effect, you can add the following CSS rule to your theme:

```css
#urlbar-wrapper {
  -moz-box-align: center;
}
```

* `nsIDOMWindowUtils.sendQueryContentEvent()` and `nsIDOMWindowUtils.sendSelectionSetEvent()` have `aAdditionalFlags` as optional argument. If you called `nsIDOMWindowUtils.sendSelectionSetEvent()` with `true` for `aReverse`, the behavior would be broken by this change. See explanation of each flag (`QUERY_CONTENT_FLAG_*` and `SELECTION_SET_FLAG_*`) for the detail of `aAdditionalFlags`.
### Add-on SDK

Highlights:

* Add-on Debugger
* Added the ability to convert between high-level BrowserWindow objects and DOM windows, and between high-level Tab objects and XUL tabs.
* Updated the default theme used for panels on Mac OS X.
* Added contentStyle and contentStyleFile options to panel.

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

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

### Older versions

* 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