Firefox 74 for developers
=========================

This article provides information about the changes in Firefox 74 that will affect developers. Firefox 74 was released on March 10, 2020.

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

### Developer tools

#### Web console

* The `$x()` web console helper's third argument (result type) now accepts simple string values as well as `XPathResult` constants (bug 1602591).
* Freshly landed support for the optional chaining operator "?." which can also be used with Console's autocomplete (bug 1594009).
* The Debugger can now inspect and debug nested workers (bug 1590766)
### HTML

*No changes.*

### CSS

* `text-underline-position` is now enabled by default (bug 1606997).
* The `text-underline-offset` and `text-decoration-thickness` properties now accept percentage values (bug 1607534).
* The `auto` value of the `outline-style` property has been enabled by default (Firefox bug 1031664).

#### Removals

* The `-moz-` prefixed-Multiple-column layout properties have been removed (Firefox bug 1308636).
### SVG

*No changes.*

### JavaScript

* The Optional chaining operator has been implemented (Firefox bug 1566143).
* When a JavaScript URL (`javascript:`) is evaluated and the result is a string, this string is parsed to create an HTML document, which is then presented. Previously, this document's URL (as reported by the `document.location` property, for example) was the originating `javascript:` URL; it is now correctly the URL of the document the `javascript:` URL was evaluated in (Firefox bug 836567).

#### Removals

* The `Object.toSource()` method and the global function `uneval()` are no longer available for use by web content or extensions (bug 1565170).
### APIs

#### DOM

* The `IDBTransaction.commit()` method has been implemented (Firefox bug 1497007).

#### DOM events

* Firefox 74 now supports the `languagechange_event` event and its companion event handler property, `onlanguagechange`, which is triggered when the user changes their preferred language (Firefox bug 1154779). This was previously listed in our compatibility database as supported from Firefox 3.5, but this was in error.

#### Canvas and WebGL

* The `TextMetrics` interface has been extended to contain four more properties measuring the actual bounding box — `actualBoundingBoxLeft`, `actualBoundingBoxRight`, `actualBoundingBoxAscent`, and `actualBoundingBoxDescent`. Text metrics can be retrieved using the `CanvasRenderingContext2D.measureText()` method (Firefox bug 1102584).

#### Removals

* The non-standard `IDBDatabase.mozCreateFileHandle()` method has been removed, in favor of the (also non-standard) `IDBDatabase.createMutableFile()` method (Firefox bug 1024312).
* The non-standard `IDBMutableFile.getFile()` method has been removed (Firefox bug 1607791).
* The non-standard `HTMLCanvasElement` method `mozGetAsFile()` has been removed, after being deprecated several years ago (Firefox bug 1588980).
* The `FetchEvent` property `isReload` has been removed, from both Firefox and the specification (Firefox bug 1264175).
### HTTP

* The `Cross-Origin-Resource-Policy` header is now enabled by default (bug 1602363).
### Security

* TLS 1.0 and 1.1 support has been removed from Firefox; you'll need to make sure your web server supports TLS 1.2 or 1.3 going forward. From now on, Firefox will return a Secure Connection Failed error when connecting to servers using the older TLS versions (Firefox bug 1606734).
* Starting in Firefox 74, when a site delegates permission to access a resource to embedded content in an `<iframe>` using the `allow` attribute, and the embedded page requests permission to use that resource, the parent page prompts the user for permission to use the resource and share it with the embedded domain, rather than both the outer and inner pages prompting the user for permission. If the outer page doesn't have the permission requested by the `allow` attribute, the `<iframe>` is immediately denied access without prompting the user Firefox bug 1483631.
### Plugins

*No changes.*

### WebDriver conformance (Marionette)

* Added `WebDriver:Print` to print the current page as a PDF document (Firefox bug 1604506).
* `Webdriver:TakeScreenshot` now always captures the top-level browsing context and not the currently-selected browsing context, if no element to capture has been specified (Firefox bug 1398087, Firefox bug 1606794).
* Using `Webdriver:TakeScreenshot`'s `full` argument causes the complete page to be captured (Firefox bug 1571424).
Changes for add-on developers
-----------------------------

### API changes

* Shortcut keys can now be unassigned in `Commands.update` by passing an empty value of `shortcut` Firefox bug 1475043.
* `urlclassification`s are now returned as part of the `details` in each event of `webrequest`, providing information on whether a request is classified as fingerprinting or tracking Firefox bug 1589494.
### Manifest changes

*No changes.*

See also
--------

* Hacks blog post: Security means more with Firefox 74
Older versions
--------------

* Firefox 73 for developers
* Firefox 72 for developers
* 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