Firefox 119 for developers
==========================

This article provides information about the changes in Firefox 119 that affect developers. Firefox 119 was released on October 24, 2023.

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

### HTML

#### Removals

* The `<input>` element no longer supports the non-standard `mozactionhint` attribute. Use `enterkeyhint` instead. (See Firefox bug 1735980 for more details.)
### CSS

* The `attr()` CSS function fallback value is now supported. This allows the setting of a fallback value to be used if the global attribute is missing (Firefox bug 1448248).
### JavaScript

* The `Object.groupBy()` and `Map.groupBy()` static methods for grouping the elements of an iterable are now supported (See Firefox bug 1792650 for more details.)
* The `String.prototype.isWellFormed()` and `String.prototype.toWellFormed()` methods respectively can be used to check if a string contains well-formed Unicode text (i.e. contains no lone surrogates) and sanitize an ill-formed string to well-formed Unicode text.
 (See Firefox bug 1850755 for more details).
### SVG

* The SVG attributes that accept a `<length>` value now support level 3 `<length>` CSS data types for all SVG elements. This enables the sizing of SVG elements based on font sizes (`cap`, `rem`, etc.), viewport (`vh`, `vw`, `vmin`, etc.), or absolute lengths (`px`, `cm`, etc.), e.g. `<line x1="10vw" y1="10vh" x2="50vw" y2="50vh"/>`. (See Firefox bug 1287054 for more details).
### HTTP

* The `credentialless` directive of the `Cross-Origin-Embedder-Policy` HTTP response header is now supported on desktop platforms (and mobile platforms other than Android), allowing `no-cors` requests for resources to be made on cross-origin servers that have not explicitly opted into it, albeit without cookies or other credentials (Firefox bug 1851467).
### APIs

* The relative priority for send streams can now be specified by including the `sendOrder` property inside an options argument passed to `WebTransport.createBidirectionalStream()` and `WebTransport.createUnidirectionalStream()` (Firefox bug 1816925).
* The `getAuthenticatorData()`, `getPublicKeyAlgorithm()`, and `getPublicKey()` methods of the `AuthenticatorAttestationResponse` interface are now supported (see Firefox bug 1816519 and Firefox bug 1816520).
* The Credential Properties Extension (`credProps`) of the Web Authentication API is supported, allowing users to query if credentials are discoverable after creation/registration (Firefox bug 1844437).
* The `SubtleCrypto.deriveKey()` method now supports the HKDF algorithm as an option for its `derivedKeyAlgorithm` parameter (see Firefox bug 1851928).
* The `parseCreationOptionsFromJSON()`, `parseRequestOptionsFromJSON()`, and `toJSON()` methods of the `PublicKeyCredential` interface are now supported.
 These are convenience methods for converting objects used for creating and sharing credentials objects to JSON representations that can be serialized/deserialized and shared with a server (see Firefox bug 1823782).

#### DOM

* ARIA reflection is now supported by default for attributes that do not reference other elements; only non-IDREF attributes are reflected. You can now get and set ARIA attributes on DOM elements directly via JavaScript APIs, rather than by using `setAttribute` and `getAttribute`. For example, `buttonElement.ariaPressed = "true";` is now supported in addition to `buttonElement.setAttribute("aria-pressed", "true");` (Firefox bug 1785412).
### WebDriver conformance (WebDriver BiDi, Marionette)

#### General

* When performing a `pointerDown` action with the middle or right mouse button pressed, the `mousedown` event as emitted by the related HTML element had the value of the `buttons` property swapped (Firefox bug 1850086).
* When performing a `scroll` action of input type `wheel` with an origin set to `pointer` an `invalid argument` error was inappropriately raised, whereas per the current WebDriver specification this combination is not supported (Firefox bug 1850166).

#### WebDriver BiDi

* Added the `browsingContext.reload` command that allows users to reload the page or a frame that is currently displayed within a given browsing context (Firefox bug 1830859).
* Added the `browsingContext.userPromptClosed` event that is emitted when a user prompt of type `alert`, `confirm`, or `prompt` got closed (Firefox bug 1824221).
* Added the `browsingContext.navigationStarted` event that is emitted when a new navigation is started by Firefox (Firefox bug 1756595).
* Added the `script.realmCreated` and `script.realmDestroyed` events that allow users to monitor the lifetime of JavaScript Realms of a given browsing context. Such a Realm is basically an isolated execution environment (`sandbox`) with its own unique global object (window) (Firefox bug 1788657, Firefox bug 1788659).
* The `browsingContext.userPromptOpened` event was accidentally sent when a HTTP Authentication dialog was opened (Firefox bug 1853302).
* Unwanted events with the `context` field set to `null` will no longer be emitted. Because the underlying browsing context has been closed such events are no longer valid (Firefox bug 1847563).

#### Marionette

* The list of possible error codes when trying to install a WebExtension by using the `Addon:Install` command has been updated to match the latest error codes of Firefox (Firefox bug 1852537).
Older versions
--------------

* Firefox 118 for developers
* Firefox 117 for developers
* Firefox 116 for developers
* Firefox 115 for developers
* Firefox 114 for developers
* Firefox 113 for developers
* Firefox 112 for developers
* Firefox 111 for developers
* Firefox 110 for developers
* Firefox 109 for developers
* Firefox 108 for developers
* Firefox 107 for developers
* Firefox 106 for developers
* Firefox 105 for developers
* Firefox 104 for developers
* Firefox 103 for developers
* Firefox 102 for developers
* Firefox 101 for developers
* Firefox 100 for developers
* Firefox 99 for developers
* Firefox 98 for developers
* Firefox 97 for developers
* Firefox 96 for developers
* Firefox 95 for developers
* Firefox 94 for developers
* Firefox 93 for developers
* Firefox 92 for developers
* Firefox 91 for developers
* Firefox 90 for developers
* Firefox 89 for developers
* Firefox 88 for developers