Firefox 34 for developers
=========================

Firefox 34 was released on December 1st, 2014. 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:

* Storage Inspector: a new tool enabling you to view data stored by web pages
* Performance tool: revamped Profiler UI and frame rate timeline
* Frame switching: point the developer tools at a specific iframe in the page
* console.table support
* jQuery events are visible in the Page Inspector

All devtools bugs fixed between Firefox 33 and Firefox 34.

### CSS

* Our experimental implementation of CSS Fonts Level 3 progresses. Newly implemented features are:
    + the fallback algorithm of `font-variant-position`, creating synthetic alternates for missing glyphs, based on the subscript and superscript metrics supplied by the font (Firefox bug 1024804).
    + The `layout.css.font-features.enabled` preference has been removed, meaning the following properties have been activated by default:
        - The CSS Font Level 3 version of `font-variant` which is now a shorthand property.
        - The longhand properties `font-variant-caps`, `font-variant-numeric`, `font-variant-position`, `font-variant-east-asian`, `font-variant-ligatures`, and `font-variant-alternates`.
        - The properties `font-kerning` and `font-synthesis`
        - The properties `font-feature-settings` and `font-language-override` are unprefixed. The prefixed version are still available for some time to ease transition.
* The value `auto` has been added to `min-width` and `min-height` with a different behavior than the last time (Firefox bug 984711 and Firefox bug 1015474).
* An experimental implementation, disabled by default, of the filter functional values of the `filter` property have been implemented. It is controlled by the `layout.css.filters.enabled` pref (Firefox bug 948265).
* Fixed starting of CSS transitions that start together with changes to `display`, `position`, `overflow`, and similar properties (Firefox bug 625289)
### HTML

*No change.*

### JavaScript

* The ES2015 syntax for computed property names on object literals has been implemented (Firefox bug 924688).
    + This includes getter and setter method names as well (Firefox bug 1048384) and can also be used with destructuring.
* The ES2015 shorthand syntax for defining methods on objects has been implemented (Firefox bug 924672).
* The ES2015 `Object` method `Object.assign()` has been implemented (Firefox bug 937855).
* ES2015 template strings and the `String.raw()` method are now supported (Firefox bug 1038259, Firefox bug 1039774).
* A new ES2015 object `WeakSet` has been added (Firefox bug 792439).
* ES2015 Symbols (only available in the Nightly channel) have been updated to conform with recent specification changes (Firefox bug 1042602):
    + When trying to convert a symbol to a number, a `TypeError` will be thrown now.
    + When using loose equality, `Object(sym) == sym` returns `true` now.
* The experimental `TypedArray.prototype.move()` method (only available in former Nightly and Aurora channels) has been replaced with the now implemented standard ES2015 `TypedArray.prototype.copyWithin()` method (Firefox bug 1021379).
* In strict mode, setting a duplicate property name in object literals will no longer throw a `SyntaxError` as per ES2015 specification (Firefox bug 1041128).
* In regular expressions (including `String.replace`), the matched text for a capturing group is now `undefined` instead of the empty string when that capturing group didn't get consulted because quantifiers prevented its exercise (see Firefox bug 369778 and this example code). Note that due to web compatibility, RegExp.$N will still return an empty string (Firefox bug 1053944).
* The ES2015 spread operator is now supported in destructuring (Firefox bug 933276).
* Destructuring now uses iterator protocol instead of array-like protocol (Firefox bug 933276).
* `Proxy.revocable()` has been implemented (Firefox bug 978279).
### Interfaces/APIs/DOM

* The `Element.matches()` method has been added; it does what the non-standard `mozMatchesSelector()` was doing (Firefox bug 886308).
* The `Performance.now()` method is now available to Web workers (Firefox bug 908390).
* The non-standard interface `MozNamedAttrMap` has been renamed to the standard `NamedNodeMap` and `Element.attributes` has been adapted to use it (Firefox bug 1055467).
* The `Path2D.addPath()` method has been added (Firefox bug 985801).
* The non-standard Device Storage API is now also enabled for privileged apps installed on Android (Firefox bug 886627).
* Web Crypto API has been enabled by default (Firefox bug 1074001).
* The `MediaStreamTrack.stop()` method has been added (Firefox bug 1057955).
* Our experimental implementation of EME continues. The `MediaKeySession.getUsableKeyIds()` method has been added (Firefox bug 1057171).
* Regarding WebRTC:
    + an experiment implementation of `RTPSender` and `RTPReceiver` working with `RTCPeerConnection` has landed (Firefox bug 1032835).
    + application window sharing has been added to `Navigation.getUserMedia()` (Firefox bug 1036653) and `MediaTrackConstraintSet` now supports `browserWindow` and `scrollWithPage` allowing to chose the tab of a window that has to be shared without showing the tab chooser dialog (Firefox bug 1041700).
    + `"browser"` is now an accepted value of MediaSourceEnum, used to define constraints (Firefox bug 1041493).
* For Web Components, event retargeting is now implemented (Firefox bug 887541).
* The `Headers` interface has been implemented (Firefox bug 1029620). It is controlled by the `dom.fetch.enabled` preference which is set to `false` by default.
* Regarding our experimental implementation of Web Animations, the `AnimationEffect` interface has been added, with the single `AnimationEffect.name` property (Firefox bug 1045993). Web Animations is not activated by default and is controlled by the `dom.animations-api.core.enabled` preference.
* CSSOM View smooth scrolling methods have been added: `Window.scroll()`, `Window.scrollTo()`, and `Window.scrollBy()` (Firefox bug 1022818).
* The non-standard `MozSmsSegmentInfo` is no more visible on the global object Firefox bug 916607.
### MathML

*No change.*

### SVG

*No change.*

### Audio/Video

*No change.*

Security and Networking
-----------------------

* SSLv3 is now disabled by default (Firefox bug 1030963).
* A warning is sent to the console when a website use the CSS `reflected-xss` directive (Firefox bug 1045902).
Changes for add-on and Mozilla developers
-----------------------------------------

* localstore.rdf has been removed (Firefox bug 559505).
### Add-on SDK

#### Highlights

* New API: dev/panel enables you to extend the Firefox Developer Tools.
* jpm beta released.
* `"./my-file"` introduced everywhere as an alias for `require("sdk/self").data.url("my-file")`
* Added the ability to attach stylesheets to individual tabs.

#### Details

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

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

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

* 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
* 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