Firefox 72 for Developers
=========================

This article provides information about the changes in Firefox 72 that will affect developers. Firefox 72 was released on January 7, 2020.

Changes for web developers
--------------------------

### Developer tools

Console:

* In the multi-line mode of the interactive JS interpreter, you can open and save files using the keyboard shortcuts `Ctrl` + `O` and `Ctrl` + `S`, respectively (Firefox bug 1592308).
* You can set a preference so that asynchronous messages are visually separated (Firefox bug 1592969).

JavaScript debugger:

* You can now right/`Ctrl` click on objects in the Scopes panel, and choose *Property set* or *Property get* to set watchpoints (Firefox bug 1574192).

Network Monitor:

* The Timings tab now shows queued, started, and downloaded times for each resource (Firefox bug 1580431).

Page Inspector:

* You can set a preference to enable a simulator for different values of the `prefers-color-scheme` media feature (Firefox bug 1550804).

#### Removals

* The *Scratchpad* feature has been removed (Firefox bug 1519103).
### HTML

*No changes.*

### CSS

* CSS Shadow Parts are now enabled. This includes the `part` attribute and `::part` pseudo-element, which allow shadow hosts to selectively expose chosen elements from their shadow tree to the outside page for styling purposes (Firefox bug 1559074).
* CSS Motion Path has been shipped (Firefox bug 1582554, also see the Intent to Ship). This includes:
    + `offset`
    + `offset-path`
    + `offset-anchor`
    + `offset-distance`
    + `offset-rotate`
* The individual transform properties — `scale`, `rotate`, and `translate` — are now enabled by default (Firefox bug 1424900).

#### Removals

### SVG

*No changes.*

### JavaScript

* The nullish coalescing operator has been implemented (Firefox bug 1566141).
### APIs

#### New APIs

* `FormDataEvent` and event-based form participation is now enabled by default (Firefox bug 1594708).
* The `crossOriginIsolated` property is now supported (Firefox bug 1591892).

#### DOM

* The Geolocation API has had some interface name updates, as per recent spec changes (Firefox bug 1575144):
    + `Coordinates` has been changed to `GeolocationCoordinates`.
    + `Position` has been changed to `GeolocationPosition`.
    + `PositionError` has been changed to `GeolocationPositionError`.
* A number of properties have been updated to use standard stringifiers (Firefox bug 824857):
    + `DOMTokenList.value`
    + `HTMLAnchorElement.href`
    + `Location.href`
    + `MediaList.mediaText`
    + `URL.href`
    + `WorkerLocation.href`

#### DOM events

* `Notification.requestPermission()` and `PushManager.subscribe()` can now only be called in response to a user gesture such as a `click` event (Firefox bug 1593644).

#### Media, Web Audio, and WebRTC

* The `MediaDevices.getDisplayMedia()` method can now only be called in response to a user gesture such as a `click` event (Firefox bug 1580944).
* The `RTCRtpContributingSource` dictionary can now include the `rtpTimestamp` property, which is a source-generated time at which the packet's media was generated or sampled (Firefox bug 1583867).

#### Removals

* Removed the non-standard `window.mozPaintCount` property. (Firefox bug 1591968)
* The `BatteryManager` interface is no longer exposed to web content (Firefox bug 1441976).
* `Navigator.vibrate()` is no longer supported in cross-origin `<iframe>`s (Firefox bug 1591113).
* WebRTC no longer supports the `rid=` and `pt=` parameters on the `simulcast` attribute. The new syntax for a line such as "`a=simulcast: send rid=7 recv rid=8`" is now "`a=simulcast: send 7 recv 8`". The new syntax has been supported since Firefox 68, so now it's time tor retire support for the old syntax (Firefox bug 1470568).
### Security

* Opting-out of MIME sniffing using `X-Content-Type-Options` is now also applied to top-level documents if a `Content-type` is provided. This can cause HTML web pages to be downloaded instead of being rendered when they are served with a MIME type other than `text/html`. Make sure to set both headers correctly. (Firefox bug 1591932).
* Dropped the support for HTTP Public Key Pinning (HPKP) because of the low adoption rate and interoperability risk. The `Public-Key-Pins` and `Public-Key-Pins-Report-Only` headers are now silently ignored Firefox bug 1412438.
### Plugins

*No changes.*

### WebDriver conformance (Marionette)

* Removed `Anon` and `AnonAttribute` strategies from `WebDriver:FindElement` and `WebDriver:FindElements` commands (Firefox bug 1587627).
* `Webdriver:TakeScreenshot` no longer fails if captured area exceeds upper maximum bound for the canvas width, height, or size (Firefox bug 1590064).
Changes for add-on developers
-----------------------------

### API changes

* The `browserSettings.ftpProtocolEnabled` property has been implemented (Firefox bug 1592687).
* The `BrowserSetting.onChange` event has been implemented (Firefox bug 1410412).
* The `captivePortal.canonicalURL` property has been implemented (Firefox bug 1592932).
* The callback functions for the `browserAction.onClicked` and `pageAction.onClicked` events now include a `OnClickData` property containing an object whose properties describe the mouse button pressed along with any keyboard modifiers (Firefox bug 1405031). This allows support for additional types of mouse click.
* The `browserSettings.tlsVersionRestrictionConfig` property has been implemented and enables the highest and lowest versions of TLS supported by the browser to be read (Firefox bug 1593635).
### Manifest changes

*No changes.*

See also
--------

* Hacks release post: Firefox 72 — our first song of 2020
Older versions
--------------

* Firefox 71 for developers
* Firefox 70 for developers
* Firefox 69 for developers
* Firefox 68 for developers
* Firefox 67 for developers
* Firefox 66 for developers
* Firefox 65 for developers
* Firefox 64 for developers
* Firefox 63 for developers
* Firefox 62 for developers
* Firefox 61 for developers
* Firefox 60 for developers
* Firefox 59 for developers
* Firefox 58 for developers
* Firefox 57 for developers
* Firefox 56 for developers
* Firefox 55 for developers
* Firefox 54 for developers
* Firefox 53 for developers
* Firefox 52 for developers
* Firefox 51 for developers
* Firefox 50 for developers
* Firefox 49 for developers
* Firefox 48 for developers
* Firefox 47 for developers
* Firefox 46 for developers
* Firefox 45 for developers
* Firefox 44 for developers
* Firefox 43 for developers
* Firefox 42 for developers
* Firefox 41 for developers