Firefox 43 for developers - Mozilla

Firefox 43 for developers
=========================

To test the latest developer features of Firefox, install Firefox Developer Edition Firefox 43 was released on December 15, 2015. 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:

* Server logging in the Web Console
* Quickly find the rule that overrode a CSS declaration
* "Use in Console" context menu item in Inspector
* "Strict" option for filtering in the Rules view
* Network entries in the Console now link to the Network Monitor
* Markup view shows indicators for pseudo-classes locked for elements
* New sidebar UI for WebIDE

All devtools bugs fixed between Firefox 42 and Firefox 43.

### CSS

* Support for the standard, unprefixed version of `hyphens` has been landed (Firefox bug 953408).
* The shorthand property `font` has been updated to accept `font-stretch` values (Firefox bug 1057680).
* To match the latest evolution of the specification, the `:fullscreen` pseudo-class now selects the whole stack of elements in full screen, and not only the top-level one (Firefox bug 1199522).
* The deprecated SVG values for the `writing-mode`, `lr`, `lr-tb`, `rl`, `tb`, and `tb-rl`, have been added in CSS as aliases to standard properties (Firefox bug 1205787).
### HTML

* For `<img>` with ICO image containing multiple frames, the intrinsic dimension of the image is set to the one of the largest frame, and no more of the smallest frame Firefox bug 1201796.
* The value of the document's viewport (defined with `<meta name="viewport>`)can now dynamically be changed via JavaScript (Firefox bug 976616).
### JavaScript

#### New APIs

* The new ES2016 methods `Array.prototype.includes()` and `TypedArray.prototype.includes()` are now enabled by default (Firefox bug 1070767).

#### Changes regarding the `arguments` object

* To match the ES2015 specification, arrow functions no longer have their own `arguments` object. The `arguments` object is now lexically bound (inherited from the outer function). In most cases, rest parameters are a good alternative `(...args) => args[i]`, see Firefox bug 889158.
* The arguments object is now allowed in conjunction with rest parameters (Firefox bug 1133298).
* From now on, a mapped `arguments` object in non-strict functions is only provided if the function does **not** contain any rest parameters, any default parameters or any destructured parameters (Firefox bug 1175394).

#### Other changes

* Generators and generator methods are no longer constructable as per ES2016 (Firefox bug 1191486).
### Interfaces/APIs/DOM

#### DOM & HTML DOM

*No change.*

#### IndexedDB

* A new feature called locale-aware sorting has been added allowing for the creation of indexes with a locale specified, which can then be used to sort data according to the rules of that locale (Firefox bug 871846). This is a non-standard Firefox-specific feature.

#### Service Workers

* As per the specification, if `ExtendableEvent.waitUntil()` is called outside of the `ExtendableEvent` handler, Firefox will now throw an `InvalidStateError`; in addition, multiple calls to `waitUntil()` will now stack up, and the resulting promises will be added to the list of extend lifetime promises (Firefox bug 1180274).
* `PushMessageData` methods have been implemented (Firefox bug 1149195).

#### WebRTC

* The `HTMLCanvasElement.captureStream()` method has been activated by default (Firefox bug 1177276).
* The non-standard constraint style option list for `RTCOfferOptions` has been deprecated and will be removed entirely in Firefox 44.

#### Miscellaneous

* The Battery Status API now uses the new promise syntax for `Navigator.getBattery()`, as specified in the recent evolution of the specification (Firefox bug 1050749).
* The `User-Agent` header is no longer in the list of forbidden header names so it can now be set in a Fetch `Headers` object, via XHR `XMLHttpRequest.setRequestHeader()`,… (Firefox bug 1188932).
* The `MediaRecorder()` constructor can now accept an options dictionary as a parameter, which allows you to set custom bitrates for the audio/video to be recorded (Firefox bug 1161276).
* The `PerformanceObserver` interface, belonging to the Performance APIs has been implemented (Firefox bug 1165796).
* The Frame Timing API has been added: the `PerformanceRenderTiming` and `PerformanceCompositeTiming` interfaces are now available (Firefox bug 1191178).
* The modern Screen Orientation API has been implemented: unprefixed `Screen.orientation` and the `ScreenOrientation` interface are now available (Firefox bug 1131470). The non-standard `Screen.mozOrientation`, `Screen.onmozorientationchange`, `Screen.mozLockOrientation()`, and `Screen.mozUnlockOrientation()` will be removed in the future.
* Under Linux, like under Windows, `Event.timeStamp` now returns a `DOMHighResTimeStamp` (Firefox bug 1026803).
* Experimental support for `Selection` events `selectionchange` and `selectstart`, as well as the `Document.onselectionchange` and `HTMLInputElement.onselectstart` event handlers property has been added (Firefox bug 571294). The `selectionchange` event is fired on the `Document` if the associated `Selection` object is concerned, or on the specific `HTMLInputElement` or `HTMLTextAreaElement` (Firefox bug 1196479). This feature is controlled by the `dom.select_events.enabled` preference, which defaults to `false`, except on Nightly.
* Support for `MouseEvent.offsetX` and `MouseEvent.offsetY` have been activated on Firefox for Android and Firefox OS (Firefox bug 1204841).
* The `HTMLCanvasElement.mozFetchAsStream()` method has been removed (Firefox bug 1206030).
* The constructor `Request()` as well as `fetch()` will now raise a `TypeError` exception when used with a URL containing a username and password (Firefox bug 1195820).
### MathML

*No change.*

### SVG

*No change.*

### Audio/Video

*No change.*

HTTP
----

*No change.*

Networking
----------

*No change.*

Security
--------

* Access to Web Storage (i.e. `localStorage` and `sessionStorage`) from third-party IFrames is now denied if the user has disabled third-party cookies (Firefox bug 536509).
* This whitelist has even been removed in Nightly and Aurora/Dev Edition of the browser (Firefox bug 1201023). It is currently scheduled that this removal will also happen for Beta and Release versions for the next version (Firefox 44).
* Subresource integrity has been implemented for `<script>` and `<link>` that links to stylesheets (Firefox bug 992096).
Changes for add-on and Mozilla developers
-----------------------------------------

### Interfaces

*No change.*

### XUL

*No change.*

### JavaScript code modules

*No change.*

### XPCOM

*No change.*

### Plugins

* In preparation for future releases to switch over to multi-process content, NPAPI plugins can no longer be run in the same process as the page content. The preferences starting with `dom.ipc.plugins` are no longer used.
### Other

*No change.*

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

* Firefox 42 for developers
* Firefox 41 for developers
* Firefox 40 for developers
* Firefox 39 for developers
* Firefox 38 for developers
* Firefox 37 for developers
* Firefox 36 for developers
* Firefox 35 for developers
* Firefox 34 for developers
* 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 39 for developers - Mozilla

Firefox 39 for developers
=========================

Firefox 39 was released on July 2, 2015. 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:

* *WebIDE* now supports debugging Firefox OS devices over Wi-Fi
* *WebIDE* now supports Cordova projects
* Animations view: rewind, fast-forward, and jump to a specific time
* The cubic Bézier curve editor now includes 31 presets
* Drag and drop elements in the Page Inspector
* Web console command history is now persisted across sessions
* $\_ console command to print the last result evaluated
* Better box model highlighting for inline elements

All devtools bugs fixed between Firefox 38 and Firefox 39.

### CSS

* Support of the `<string>` type on `list-style-type`, as well as its shorthand property `list-style` has been implemented (Firefox bug 1144607).
* CSS Scroll Snapping has been implemented (Firefox bug 945584 and Firefox bug 1138658).
* Cascading of CSS Animations and CSS Transitions has been rewritten to match the latest specification (Firefox bug 1125455).
* Support for vertical scripts, with the `writing-mode` is now turned on by default on Nightly and Developer Edition, but not on Firefox Beta and Firefox Release (Firefox bug 1099032). Note that implementation is not yet complete and some widgets, like tables, will not obey to all values.
* CSS `filter` acts like position: relative + overflow: hidden (Firefox bug 1125767).
### HTML

* A new ARIA role, `switch`, is now supported (Firefox bug 1136563).
* Support for `<link rel="preconnect">` allowing to anticipate a future connection without revealing any information has been implemented (Firefox bug 1135160).
### JavaScript

* The `RegExp` constructor no longer throws when the first argument is a `RegExp` and the second `flags` argument is present (Firefox bug 1108949).
* The `Object.prototype.__noSuchMethod__` property is now deprecated and throws a console warning (see Firefox bug 1140428 and this platform announcement).
* The implementation of the `Proxy` object has been updated to comply more with the ES2015 specification:
    + The `defineProperty` and `set` handlers now need to explicitly return `true` to be successful, otherwise a `TypeError` exception will be thrown in strict mode (Firefox bug 1132522).
    + If the `window` object is set as the target, those handlers will now throw a `TypeError` (Firefox bug 828137).
* When using arrow functions (`=>`), a line terminator (`\n`) is no longer allowed after arrow function arguments (`() \n => {}`) (Firefox bug 1141392).
* `RegExp.prototype.toString` is now a generic function (Firefox bug 1079919).
* The non-standard `flags` argument of `String.prototype.match()`, `String.prototype.search()`, and `String.prototype.replace()` is now deprecated and throws a console warning (Firefox bug 1142351).
* The try/catch behavior of `Object.assign()` has been removed to conform with the latest ES2015 draft (Firefox bug 1103344).
### Interfaces/APIs/DOM

* The experimental `CanvasRenderingContext2D.addHitRegion()` method now accepts a `path` option, which allows you to add hit regions to `Path2D` objects (Firefox bug 1129147).
* New methods have been added to manipulate `FormData` objects (Firefox bug 1085283) and `FormData` is now supported in Web workers (Firefox bug 739173).
* The non-standard `XMLHttpRequest.sendAsBinary()` method has been removed.
 Refer to the Sending and Receiving Binary Data documentation for alternatives (Firefox bug 853162).
* Progress in our experimental implementation of Web Animations: `AnimationPlayer.startTime` is now writable (Firefox bug 1073379).
* Progress in our experimental implementation of Service Workers: `Cache` and `CacheStorage` interfaces are now implemented (Firefox bug 940273).
* The experimental Fetch API has been activated by default (Firefox bug 1133861).
* Progress in our experimental implementation of WebGL2: `WebGLSync` is now implemented (Firefox bug 1048721).
* Support for `MouseEvent.offsetX` and `MouseEvent.offsetY` have been added on desktop (Firefox bug 69787, but not on Firefox for Android or Firefox OS (they will be added in Firefox 43)).
### MathML

*No change.*

### SVG

*No change.*

### Audio/Video

*No change.*

### Miscellaneous

* WOFF2 fonts support is now turned on by default in release version of Firefox (Beta and Release, in addition of Nightly and Developer Edition) (Firefox bug 1084026).
* The `-remote` command-line option has been removed (Firefox bug 1080319).
* Support for new Unicode 8.0 skin tone emoji (Firefox bug 1153460).
Networking
----------

* Support for SSLv3 has been completely removed (Firefox bug 1106470).
Security
--------

*No change.*

Changes for add-on and Mozilla developers
-----------------------------------------

*No change.*

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

* Firefox 38 for developers
* Firefox 37 for developers
* Firefox 36 for developers
* Firefox 35 for developers
* Firefox 34 for developers
* 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 72 for Developers - Mozilla

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


Firefox 86 for developers - Mozilla

Firefox 86 for developers
=========================

This article provides information about the changes in Firefox 86 that will affect developers. Firefox 86 was released on February 23, 2021.

**Note:** See also A Fabulous February Firefox — 86! on Mozilla Hacks.

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

### Developer Tools

* The `cd()` web console helper function, which was deprecated in Firefox 74, has now been removed. The `<iframe>` context picker tool described in Working with iframes serves the same purpose, but is much better! For more information see Firefox bug 1607741.
* The different `margin` and `padding` shorthand and longhand properties are now marked as inactive on internal table elements because they have no effect on them. (Firefox bug 1551569).
* The `order` property was previously incorrectly marked as inactive for grid items. This got fixed in Firefox bug 1579017.
### HTML

*No changes.*

### SVG

* SVG filters can now use the `<feComposite>` element with the `lighter` operator (Firefox bug 1518099). This operator sums the pixels of two source graphics.
### CSS

* The `:autofill` pseudo-class is now enabled, with `-webkit-autofill` as an alias (Firefox bug 1685675) and (Firefox bug 1475316).
* The `list-style-image` property now accepts any valid `<image>` (Firefox bug 1685078).
### JavaScript

* The `Intl.DisplayNames` built-in object has been enabled by default. This enables the consistent translation of language, region, and script display names:

```js
// Get English currency code display names
let currencyNames = new Intl.DisplayNames(["en"], { type: "currency" });
// Get currency names
currencyNames.of("USD"); // "US Dollar"
currencyNames.of("EUR"); // "Euro"
```

For more information see Firefox bug 1654116.
### APIs

#### DOM

* `Window.name` is now reset to an empty string if a tab loads a page from a different domain, and restored if the original page is reloaded (e.g. by selecting the "back" button). This prevents an untrusted page from accessing any information that the previous page might have stored in the property (potentially the new page might also modify such data, which might then be read by the original page if it was reloaded). For more information see Firefox bug 1685089.
* `EventTarget.addEventListener()` now supports the `signal` option. This option allows an `AbortSignal` to be passed to the method. The `AbortSignal` can later be used to remove the listener by calling `abort()`. For more information see Firefox bug 1679204.
### WebDriver conformance (Marionette)

* Updated `WebDriver:ElementClick` to synthesize a `mousemove` event before the actual `click` event (Firefox bug 1684002).

#### Known bugs

* WebDriver commands following a call to `WebDriver:SwitchToFrame` can fail with a "no such window" error
 if the frame's content hasn't yet finished loading (Firefox bug 1691348).
* After a cross-group page navigation, accessing a previously-retrieved element might not always raise a "stale element" error, and
 can also lead to a "no such element" error. To prevent this, set the `marionette.actors.enabled`
 preference to `false` (Firefox bug 1690308).

#### Removals

* Removed support for the deprecated `Marionette:ActionChain` and `Marionette:MultiAction` commands (Firefox bug 1683755).
Changes for add-on developers
-----------------------------

* Host permissions now grant access to privileged parts of the tabs API (Firefox bug 1679688).
* `focused: false` is now ignored when set as an option in a `windows.create()` call (Firefox bug 1253129).
* `identity.getRedirectURL` now supports a loopback address, see Getting the redirect URL for details (Firefox bug 1614919).
* The page ID is now returned as part of `history.onTitleChanged` (Firefox bug 1678611).
Older versions
--------------

* Firefox 85 for developers
* Firefox 84 for developers
* Firefox 83 for developers
* Firefox 82 for developers
* Firefox 81 for developers
* Firefox 80 for developers
* Firefox 79 for developers
* Firefox 78 for developers
* Firefox 77 for developers
* Firefox 76 for developers
* Firefox 75 for developers
* Firefox 74 for developers
* 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 24 for developers - Mozilla

Firefox 24 for developers
=========================

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

### CSS

* The two values `-moz-zoom-in` and `-moz-zoom-out` of the `cursor` property have been unprefixed to `zoom-in` and `zoom-out` (Firefox bug 772153).
* To match the specification, the keywords `not`, `only`, `and`, and `or` cannot be used as media types anymore (Firefox bug 757554).
### HTML

* The `<track>` element has been implemented behind the `media.webvtt.enabled` preference, and is disabled by default. (Firefox bug 833385).
### JavaScript

* Arrow functions are no longer automatically in strict mode unless explicitly requested with `"use strict"` (Firefox bug 852762).
* The `String.prototype.repeat` JS method has been implemented (Firefox bug 815431).
* The `Set.prototype.values()`, `Set.prototype.keys()` and `Set.prototype.entries()` methods on `Set` objects have been implemented (Firefox bug 869996).
### DOM

* Support for the `Range()` constructor has been added (Firefox bug 868999).
* Support for the `Text()` constructor has been added (Firefox bug 869000).
* Support for the `Comment()` constructor has been added (Firefox bug 869006).
* Support for the `DocumentFragment()` constructor has been added (Firefox bug 869002).
* The `FocusEvent` interface has been implemented (Firefox bug 855741).
* Support for the `ChildNode.remove()` method has been added (Firefox bug 856629).
* The WebVTT interfaces related to the `<track>` element, `HTMLTrackElement`, `TextTrack`, `TextTrackCue`, `TextTrackList`, and `TextTrackCueList` have been implemented behind the `media.webvtt.enabled` property, defaulting to `false` (Firefox bug 833385).
* The `Gamepad` interface, and `Navigator.getGamepads` have been implemented behind the `dom.gamepad.enabled` property, defaulting to `false` (Firefox bug 690935).
* On desktop Firefox only, `HTMLCanvasElement.getContext()` can now take the `webgl` value, in addition to `experimental-webgl` (Firefox bug 870232).
* The non-standard method `mozLoadFrom()` of `HTMLMediaElement` has been removed (Firefox bug 877135).
### Developer Tools

* The Network inspector now lets you filter by content type (CSS/image/font etc.) and see the relevant size and load times.
* The Devtools options panel to the left lets you disable/enable JavaScript temporarily.
* Extension developers may use the new Browser Console for Chrome-level scripts (Replaces Error Console).
* The source map syntax has been changed to use `//#` instead of `//@` (Firefox bug 870361).
### MathML

* The `dir` attribute for controlling directionality of formulas on e.g. `<math>` or `<mrow>` elements is now equivalent to using the `direction` CSS property.
* The equal sign ("=") is now stretchable.
* The "`updiagonalarrow`" value for the `notation` attribute on `<menclose>` elements has been added.
Changes for add-on and Mozilla developers
-----------------------------------------

* Doc Shells have now the `allowMedia` attribute to disable media playing (Firefox bug 759964).
* Sherlock search plugins in the application directory or profile won't be loaded anymore (Firefox bug 862143).
See also
--------

* Firefox 24 Aurora Notes
Older versions
--------------

* 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


Firefox 15 for developers - Mozilla

Firefox 15 for developers
=========================

Firefox 15 shipped on August 28, 2012. This article lists key changes that are useful for not only Web developers to know about, but also Firefox and Gecko developers as well as add-on developers.

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

### HTML

* The `size` attribute of the `<font>` element is now handled according to the HTML5 specification. It means that all integer values greater than 10 or less than -10 are now considered equivalent to 10 and -10, respectively.
* Support for `font-weight` and `point-size` attributes on the `<font>` element has been removed; these were non-standard and Gecko was the only engine that supported them.
* The Opus codec is now supported for audio in Ogg containers for the HTML `<audio>` and `<video>` elements.
* The `<source>` element now supports the `media` attribute.
* The `<audio>` and `<video>` elements now support the played attribute, which provides a `TimeRanges` object listing the time ranges of the media that have been played back so far.
### CSS

* The `font-feature-settings` property has been updated to the latest syntax: `font-feature-settings: "lnum" 1;`
* The CSS `text-transform` property has been extended to correctly handle Unicode ligature characters (like `ﬁ`).
* The CSS `word-break` property has been implemented.
* The `border-image` property has been updated to match the latest Specification and properties have been unprefixed. (bug 713643)
* The `skew()` `transform` function dropped in Firefox 14 has been restored due to existing site compatibility. Authors are however, advised to use `skewX()` and `skewY(`) functions instead.
* The value `plaintext` of CSS `unicode-bidi` property now applies to inline elements too. (Firefox bug 746987).
### DOM

* The DOM Events Level 3 methods `KeyboardEvent.getModifierState()` and `MouseEvent.getModifierState()`, which let you query the state of modifier keys, like `Ctrl` or `Shift`, have been implemented (bugs 630811 and 731878). But the behavior conforms to the latest D3E draft. So, some modifier key names are different from IE (Firefox bug 769190).
* On mouse events, support for querying the state of the mouse buttons using the `MouseEvent.buttons` attribute, has been implemented.
* On keyboard events, support for querying the key location (standard, left or right of modifier key, in the Numpad) using the KeyboardEvent.location attribute, has been implemented (Firefox bug 166240).
* KeyboardEvent.keycode result has been computed from better rules which were almost same on Windows/Linux/Mac. And now they are available on some keyboard layouts which are not ASCII capable layouts on Linux and Mac, such as Arabic, Cyrillic, Thai and so on. See the document for virtual key codes.
* The `range.detach()` method has been transformed in a no-op and will probably be removed in the future.
* The method `HTMLVideoElement.mozHasAudio()` has been implemented. It indicates if there is an audio track associated to a given video element. (bug 480376)
* The `Performance` API has a new method, `now()`, supporting high resolution timers of type `DOMHighResTimeStamp`. (bug 539095).
* The WebSMS API has been updated and now supports a `read` attribute indicating whether an SMS text message is read or unread.
* The FileHandle API has been implemented.
* The `Blob` constructor now takes `ArrayBufferView` as a member of `blobParts` parameter in addition to `ArrayBuffer`. (bug 752402)
* The `DeviceLightEvent` specified in the Ambient Light Events Working Draft has been implemented.
* The `DeviceProximityEvent` and `UserProximityEvent` Proximity Events have been implemented.
* The `File` `lastModifiedDate` property has been implemented. (Firefox bug 673586)
### JavaScript

* Support for the `DataView` interface from the Typed Arrays specification has been added. This provides low-level access to the data contained in an `ArrayBuffer`.
* Support for new ECMAScript 2015 built-ins: `Number.isNaN()`, `Number.toInteger()`, `Number.isInteger()`, `Number.isFinite()` has been added. (bug 749818, bug 761495, bug 761480).
* Support for ECMAScript 2015 default parameters has been added. (bug 757676).
* Support for ECMAScript 2015 rest parameters has been added. (bug 574132).
### WebGL

* Support for the `WEBGL_compressed_texture_s3tc` extension has been added. Compressed textures reduce the amount of memory needed to store a texture on the GPU, allowing for higher resolution textures or more of the same resolution textures.
### MathML

* Mathematical operators can now use downloadable fonts specified with `@font-face`. This makes the MathML-fonts add-on work with stretchy operators too.
* The `selection` attribute of the `<maction>` is now only taken into account with the `toggle` actiontype.
* Deprecated namedspace binding has been removed (Firefox bug 673759).
* Supported syntax for Length and `<mpadded>` values have been made closer to the one specified in MathML3 spec.
* New MathML mirrorable operators for Arabic math have been added to the operator dictionary (Firefox bug 757125).
### SVG

* Added support for the `<view>` element (Firefox bug 512525).
### Network

* Support for the SPDY v3 protocol has landed. It is disabled by default and can be enabled by setting the preference `network.http.spdy.enabled.v3` to true. (bug 737470)
Changes for add-on and Mozilla developers
-----------------------------------------

### Interface changes

`nsIDOMWindowUtils`

`aModifiers` of `sendMouseEvent()`, `sendTouchEvent()`, `sendMouseEventToWindow()`, `sendMouseScrollEvent()` and `sendKeyEvent()` supports all modifier keys which are supported by `KeyboardEvent.getModifierState()`. Use `MODIFIER_*` values. And now the 5th parameter of `sendKeyEvent()` is changed from `boolean` to `unsigned long`. For backward compatibility, if caller passes `true` or `false` to it, the behavior isn't changed. This change allows callers to specify the key's location.

`nsIBrowserHistory`

The `hidePage()` method was never implemented, and has been removed entirely in this release. The `addPageWithDetails()` method has also been removed as part of the ongoing work to make all 'Places APIs' asynchronous; use `mozIAsyncHistory.updatePlaces()` instead. Also, the `count` attribute was removed; it had not returned an actual count in some time (instead, it was indicating whether or not any entries existed). You can use `nsINavHistoryService.hasHistoryEntries` instead.

`inIDOMUtils`

The `inlDOMUtils.parseStyleSheet()` method has been added and allows the (re-)parsing of Cascading Style Sheets.

`nsIINIParserWriter`

The `nsIINIParserWriter.writeFile()` method now accepts a `flags` property. This currently offers only one option: you can now tell it to write the file in UTF-16 format instead of UTF-8, for better compatibility with Windows and certain installers.

#### New interfaces

`nsISpeculativeConnect`

Provides a way to hint to the networking layer that you are likely to ask to open a connection to a given URI sometime in the near future. This lets the network layer begin the sometimes high-latency process of opening a new network connection ahead of time.

#### Removed interfaces

The following interfaces have been removed.

* `nsIGlobalHistory`
See also
--------

* 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


Firefox 5 for developers - Mozilla

Firefox 5 for developers
========================

Firefox 5, based on Gecko 5.0, was released on June 21, 2011. This article provides links to information about the changes that affect developers in this release.

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

### HTML

* All HTML elements now have the `accessKey` attribute, as well as the `blur()`, `click()`, and `focus()` methods. These are specified in the `HTMLElement` interface.
* In order to comply with the HTML5 specification, support for the UTF-7 and UTF-32 character sets has been removed.
* When in quirks mode, empty `<map>`s are no longer skipped over in favor of non-empty ones when matching. See the Gecko notes on the `<map>` element for details.
* Firefox mobile on Android now supports WOFF fonts for `@font-face`.
* WebGL no longer loads textures from domains other than the originating domain, as a security measure. HTTP access control support should be coming sometime in the future to make this possible more securely.

#### Canvas improvements

* The `<canvas>` 2D drawing context now supports specifying an `ImageData` object as the input to the `createImageData()` method; this creates a new `ImageData` object initialized with the same dimensions as the specified object, but still with all pixels preset to transparent black. This was documented as implemented already but was not.
* Specifying non-finite values when adding color stops through a call to the `CanvasGradient` method `addColorStop()` now correctly throws `INDEX_SIZE_ERR` instead of `SYNTAX_ERR`.
* The `HTMLCanvasElement` method `toDataURL()` now correctly lower-cases the specified MIME type before matching.
* `getImageData()` now correctly accepts rectangles that extend beyond the bounds of the canvas; pixels outside the canvas are returned as transparent black.
* `drawImage()` and `createImageData()` now handle negative arguments in accordance with the specification, by flipping the rectangle around the appropriate axis. **We need an article about CSS sizing and how this works.**
* Specifying non-finite values when calling `createImageData()` now properly throws a `NOT_SUPPORTED_ERR` exception.
* `createImageData()` and `getImageData()` now correctly return at least one pixel's worth of image data if a rectangle smaller than one pixel is specified.
* Specifying a negative radius when calling `createRadialGradient()` now correctly throws `INDEX_SIZE_ERR`.
* Specifying a `null` or `undefined` image when calling `createPattern()` or `drawImage()` now correctly throws a `TYPE_MISMATCH_ERR` exception.
* Specifying invalid values for `globalAlpha` no longer throws a `SYNTAX_ERR` exception; these are now correctly silently ignored.
* Specifying invalid values when calling `translate()`, `transform()`, `rect()`, `clearRect()`, `fillRect()`, `strokeRect()`, `lineTo()`, `moveTo()`, `quadraticCurveTo()`, or `arc()` no longer throws an exception; these calls are now correctly silently ignored.
* Setting the value of `shadowOffsetX`, `shadowOffsetY`, or `shadowBlur` to an invalid value is now silently ignored.
* Setting the value of `rotate` or `scale` to an invalid value is now silently ignored.
### CSS

CSS animations

Support for CSS animations has been added, using the `-moz-` prefix for now.

### DOM

* The `selection` object's `modify()` method has been changed so that the "word" selection granularity no longer includes trailing spaces; this makes it more consistent across platforms and matches the behavior of WebKit's implementation.
* The `setTimeout()` method now clamps to send no more than one timeout per second in inactive tabs. In addition, it now clamps nested timeouts to the smallest value allowed by the HTML5 specification: 4 ms (instead of the 10 ms it used to clamp to).
* Similarly, the `setInterval()` method now clamps to no more than one interval per second in inactive tabs.
* `XMLHttpRequest` now supports the `loadend` event for progress listeners. This is sent after any transfer is finished (that is, after the `abort`, `error`, or `load` event). You can use this to handle any tasks that need to be performed regardless of success or failure of a transfer.
* The `Blob` and, by extension, the `File` objects' `slice()` method has been removed and replaced with a new, proposed syntax that makes it more consistent with `Array.slice()` and `String.slice()` methods in JavaScript. This method is named `mozSlice()` for now.
* The value of `window.navigator.language` is now determined by looking at the value of the `Accept-Language` HTTP header.
* The `Element.prefix` property is now read only, as required by the DOM specification.
* The `HTMLVideoElement` now supports experimental properties to get information about video paint statistics like frame rates.
### JavaScript

* Regular expressions are no longer callable as if they were functions; this change has been made in concert with the WebKit team to ensure compatibility (see Webkit bug 28285. This feature had existed for a long time but was never documented (at least, not here on MDC).
* The `Function.prototype.isGenerator()` method is now supported; this lets you determine if a function is a generator.
* The following reserved words were previously only treated as reserved when in strict mode; now they're always treated as reserved: `class`, `enum`, `export`, `extends`, `import`, and `super`.
* DOM documents created in chrome code may no longer be exposed to sandboxed scripts.
* The JSON parser has been re-written for improved speed and compliance. This includes a fix for Firefox bug 572279.
### SVG

* The `class` SVG attribute can now be animated.
* The following SVG-related DOM interfaces representing lists of objects are now indexable and can be accessed like arrays; in addition, they have a `length` property indicating the number of items in the lists: `SVGLengthList`, `SVGNumberList`, `SVGPathSegList`, and `SVGPointList`.
### HTTP

* Firefox no longer sends the `Keep-Alive` HTTP header; we weren't formatting it correctly, and it was redundant since we were also sending the `Connection` or `Proxy-Connection` header with the value "keep-alive" anyway.
* The HTTP transaction model has been updated to be more intelligent about reusing connections in the persistent connection pool; instead of treating the pool as a FIFO queue, Necko now attempts to sort the pool with connections with the largest congestion window (CWND) first. This can reduce the round-trip time (RTT) of HTTP transactions by avoiding the need to grow connections' windows in many cases.
* Firefox now handles the `Content-Disposition` HTTP response header more effectively if both the `filename` and `filename*` parameters are provided; it looks through all provided names, using the `filename*` parameter if one is available, even if a `filename` parameter is included first. Previously, the first matching parameter would be used, thereby preventing a more appropriate name from being used. See Firefox bug 588781.
### MathML

* Support for embellished operators
### Developer tools

* The Web Console's `Console` object now has a `debug()` method, which is an alias for its `log()` method; this improves compatibility with certain existing sites.
Changes for Mozilla and add-on developers
-----------------------------------------

For a guide to updating your add-on for Firefox 5, please see Updating add-ons for Firefox 5.

**Note:** Firefox 5 requires that binary components be recompiled, as do all major releases of Firefox. See Binary Interfaces for details.

### Changes to JavaScript code modules

#### New JavaScript code modules

* The `Dict.jsm` code module was added; it provides an API for dictionaries of key/value pairs.

#### NetUtil.jsm

* The `asyncFetch()` method now supports specifying the input source as an `nsIInputStream`.
### Interface changes

* The `nsIHttpChannelInternal` interface has new attributes providing access to information about the channels' endpoints' addresses and ports. This information is provided primarily for debugging purposes.
* The `<canvas>` element's `width` and `height` attributes are now reflected in IDL as unsigned integers instead of signed (see `HTMLCanvasElement`).
* The `nsIAppStartup2` and `nsIAppStartup_MOZILLA_2_0` interfaces have been merged into the `nsIAppStartup` interface.
* The `nsIDocShell_MOZILLA_2_0_BRANCH` interface has been merged into the `nsIDocShell` interface.
* The `nsIFocusManager_MOZILLA_2_0_BRANCH` interface has been merged into the `nsIFocusManager` interface.
* The `nsIHTMLEditor_MOZILLA_2_0_BRANCH` interface has been merged into the `nsIHTMLEditor` interface.

#### New interfaces

* `nsIDOMAnimationEvent` added. `AnimationEvent`

#### Removed interfaces

The following interfaces were implementation details that are no longer needed:

* `nsICiter` (see Firefox bug 633066)
* `nsIDOM3Document` (see Firefox bug 639849)
* `nsIFIXptrEvaluator`
* `nsISelectElement` (see Firefox bug 619996)
### Debugging aids

* The new `DebugOnly<T>` helper makes it possible to declare variables only for `DEBUG` builds.
### JavaScript API (SpiderMonkey)

* `JS_DoubleToInt32()` and `JS_DoubleToUint32()` have been added, for converting `jsdouble` values into C integers and unsigned integers.
### Build system changes

* You can now build Firefox without a `mozconfig` file; the `--enable-application` setting now defaults to "browser". After pulling or downloading the code, you can `configure && make` (or `make -f client.mk`) to build Firefox.
See also
--------

* 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


Firefox 114 for developers - Mozilla

Firefox 114 for developers
==========================

This article provides information about the changes in Firefox 114 that affect developers. Firefox 114 was released on June 06, 2023.

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

### Developer Tools

* Fixed an issue where the Accessibility Inspector did not correctly show ARIA roles on elements, which affected how landmark roles were displayed.
 Roles that cannot be mapped to ARIA use a Gecko internal role name (Firefox bug 1572512).
### HTML

No notable changes.

### CSS

* The `:lang()` pseudo-class now uses string-matching semantics (including `*` wildcards) for matching language codes rather than prefix-matching semantics.
 Additionally, comma-separated lists of languages are now supported for matching multiple languages (Firefox bug 1121792).
* The `-webkit-text-security` property that lets you replace characters with shapes is now supported. You can now control the rendering of text security using this property (Firefox bug 1826629).
* The `infinity` and `NaN` constants are now supported inside the `calc()` function (Firefox bug 1830759).
### JavaScript

* Workers now support loading ECMAScript modules.
 You can load modules into workers by specifying the `{type: "module"}` option in the `Worker` and `SharedWorker` constructors.
 Worker scripts can also statically or dynamically import modules using `import` and `import()`, respectively (Firefox bug 1812591).
* Worklets can now use `import` to statically import ECMAscript/JavaScript modules (Firefox bug 1812591).
### SVG

* The `crossorigin` attribute is now supported in `image` and `feImage` elements (Firefox bug 1240357).
### APIs

* `Window.print()` now opens a print dialog on Firefox for Android, allowing the current document to be printed (Firefox bug 1809922).
* The WebTransport API is now supported, which includes the following interfaces: `WebTransport`, `WebTransportBidirectionalStream`, `WebTransportDatagramDuplexStream`, `WebTransportReceiveStream`, `WebTransportSendStream`, `WebTransportDatagramDuplexStream` and `WebTransportError`.
 For more information see Firefox bug 1692754, Firefox bug 1818754, and Firefox bug 1791835.
* `CSSImportRule.supportsText` can now be used for getting any `supports()` conditions that were specified when using the `@import` at-rule (Firefox bug 1829590).

#### DOM

No notable changes.

#### Media, WebRTC, and Web Audio

No notable changes.

#### Removals

* The deprecated and non-standard `mozImageSmoothingEnabled` property is permanently removed.
 See the `imageSmoothingEnabled` property for smoothing in scaled images (Firefox bug 1228850).
### WebDriver conformance (WebDriver BiDi, Marionette)

#### WebDriver BiDi

* Added support for the commands `input.performActions` and `input.releaseActions`, which can be used to emulate user input for interacting with elements on web pages. Similar to Marionette all the available input sources of the WebDriver specification are supported, which are `key`, `pointer`, and `wheel` (Firefox bug 1832380).
* Added support for custom browser to client messages, which allows to send a `script.message` event from within a script formerly installed via `script.addPreloadScript` (Firefox bug 1824187).
* Added support for the `serializationOptions` parameter for `script.evaluate` and `script.callFunction` to customize the `RemoteValue` serialization (Firefox bug 1824953).
* Fixed an issue where both the `script.evaluate` and `script.callFunction` commands did not include the stack trace and failed to properly build the exception details for a rejected Promise (Firefox bug 1829630).
* Fixed an issue where the `browsingContext.domContentLoaded` and `browsingContext.load` events did not report the correct `url`, when the page defined a `<base>` meta tag (Firefox bug 1825634).

#### Marionette

* Fixed an issue where the command `WebDriver:GetComputedRole` didn't properly return the WAI-ARIA roles (Firefox bug 1822112).
* Fixed an issue where modifier keys were not reset when they were used again within the same `WebDriver:ElementSendKeys` command (Firefox bug 1776190).
Changes for add-on developers
-----------------------------

### Removals

* Support for `browser_style` in the manifest keys `action`, `options_ui`, `page_action`, and `sidebar_action` is deprecated for Manifest V3 extensions (Firefox bug 1827910). See Manifest v3 migration for information about transitioning from `browser_style` in Manifest V3 extensions.
Older versions
--------------

* 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
* Firefox 87 for developers
* Firefox 86 for developers
* Firefox 85 for developers
* Firefox 84 for developers
* Firefox 83 for developers


Firefox 77 for developers - Mozilla

Firefox 77 for developers
=========================

This article provides information about the changes in Firefox 77 that will affect developers. Firefox 77 was released on June 2, 2020.

**See also the accompanying hacks post — New in Firefox 77: DevTool improvements and web platform updates.**

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

### Developer tools

* Firefox Developer Edition offers a Compatibility panel in the Page Inspector, to show the browsers supported by the CSS properties used on the page. (Firefox bug 1625134)
* The Debugger has a Settings menu in its toolbar; the only menu option (yet) is **Disable JavaScript**. (Firefox bug 1630957)
* The Network Monitor toolbar has an **Actions** menu for managing log data (Firefox bug 1459175):
    + **Persist Logs**
    + **Import HAR File**
    + **Save All as HAR**
    + **Copy All as HAR**
* The Request Blocking panel of the Network Monitor has a context menu for enabling, disabling or removing all request block items. (Firefox bug 1588076)
* If you change the selected source line in the Debugger by clicking a frame in the Call Stack, and then click **Step over** (`F10`), the debugger executes until reaching the line following the newly-selected line (disregarding whatever line the debugger originally stopped at). (Firefox bug 1630642)
* You can set a watchpoint that pauses execution when a value is either read or assigned ("get or set"), as well as just read ("get") or just assigned ("set"). (Firefox bug 1580585
### HTML

* Firefox now displays the label value on an `<option>` element when the element's content is empty. (Firefox bug 40545)
### SVG

* Firefox now supports the `transform-origin` presentation attribute (Firefox bug 1581691).
### JavaScript

* `String.prototype.replaceAll()` is now supported (Firefox bug 1608168).
### APIs

#### IndexedDB

* The `IDBCursor.request` property has been implemented (Firefox bug 1536540).
### WebDriver conformance (Marionette)

* Certain commands could have caused a hang of Marionette when the currently selected top-level browsing context gets removed (e.g., closing the window by a click) (Firefox bug 1619481).
* Known issue: Because of changes in Firefox 77 an open user prompt could be closed too early when navigating away from the current page. This problem will be fixed in Firefox 78 (Firefox bug 1631362).
Changes for add-on developers
-----------------------------

### API changes

* `tabs.goBack` and `tabs.goForward` are now supported. (Firefox bug 1603796)
* `browsingData.remove` with type `serviceWorkers` and `indexedDB` now supports deleting by hostname. (Firefox bug 1632990 and Firefox bug 1551301)
* The `tabs.duplicate` API now supports `duplicateProperties`, enabling the position and active status of a duplicated tab to be specified. (Firefox bug 1560218)
* The `permissions` API events `permissions.onAdded` and `permissions.onRemoved` are now supported. (Firefox bug 1444294)
* Multiple `Content-Security-Policy` header changes requested in `webRequest.onHeadersReceived` are merged. (Firefox bug 1462989)
* `webRequest` events will no longer be triggered for `data:` URLs. (Firefox bug 1631933)
### Manifest changes

* The following permissions are now optional, they can be specified in the `optional_permissions` manifest key and requested using the `permissions` API:
    + `browsingData` (Firefox bug 1630417)
    + `devtools` (Firefox bug 1606862) – by setting this permission, an extension can introduce developer tools panels in an update without the extension being disabled (in Chrome) or blocked from updating (in Firefox).
    + `pkcs11` (Firefox bug 1630418)
    + `proxy` (Firefox bug 1548011)
    + `sessions` (Firefox bug 1630414).
### Other

* Use of the `unlimitedStorage` permission no longer results in a prompt during extension installation or update. See Requesting the right permissions for more information. (Firefox bug 1630413)
* Changes related to `SameSite` cookies mean that when setting host permissions to bypass tracking protection for extension pages hosts must be specified as a full domain or with wildcards. However, for Content scripts tracking protection can only be bypassed for hosts specified with a full domain.
Older versions
--------------

* Firefox 76 for developers
* Firefox 75 for developers
* Firefox 74 for developers
* 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 46 for developers - Mozilla

Firefox 46 for developers
=========================

To test the latest developer features of Firefox, install Firefox Developer EditionFirefox 46 was released on April 26, 2016. 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:

* Dominators view in the Memory tool
* Allocations view in the Performance tool
* One click to apply @media rule conditions in the Style Editor

All devtools bugs fixed between Firefox 45 and Firefox 46.

### HTML

* When faced with an invalid `type` value, `<ul>` no longer maps to `decimal`, but now behaves as if no `type` value were specified (Firefox bug 241719).
* The attribute `pattern` on `<input>` is now treated as a regular expression with `"u"` (unicode) flag (Firefox bug 1227906).
### CSS

* Our implementation of CSS Grids has been updated:
    + The keywords `auto-fill` and `auto-fit` are now allowed in the `repeat()` function (Firefox bug 1118820).
    + The `true` value has been renamed to `unsafe`; this affects the properties `justify-content`, `align-content`, `justify-self`, `align-self`, `justify-items` and `align-items` (Firefox bug 1230478).
* The properties `text-emphasis`, `text-emphasis-style`, `text-emphasis-color` and `text-emphasis-position` are now enabled by default (Firefox bug 1231485).
* Gecko now accepts the `-webkit-` prefixed version of some properties; it requires to switch `layout.css.prefixes.webkit` to `true` (Firefox bug 1213126).
* The experimental support of the `font-display` descriptor (of `@font-face`; it requires to switch `layout.css.font-display.enabled` to `true` (Firefox bug 1157064).
* Added support for `@media (-webkit-transform-3d)` as a media query for 3D transform support, if about:config pref `layout.css.prefixes.webkit` is set to `true` (Firefox bug 1239799).
* `linear-gradient()` support for the omission of `0deg` units (Firefox bug 1239153).
* Added `-webkit-filter` for web compatibility, behind the preference `layout.css.prefixes.webkit`, defaulting to `false` (Firefox bug 1236506).
* [css-align] "unsafe start" (formerly "true start") should serialize to "start" etc (Firefox bug 1230398).
### JavaScript

* The ES2015 RegExp unicode (u) flag has been implemented (Firefox bug 1135377).
* The ES2015 block-level functions have been implemented (Firefox bug 1071646).
* The ES2015 `TypedArray.prototype.sort()` method has been implemented (Firefox bug 1121937).
* The ES2015 `arguments[@@iterator]` has been implemented (Firefox bug 1067049).
* The experimental ECMAScript Shared Memory API has been implemented. See the `SharedArrayBuffer` and `Atomics` objects. To use this experimental API set `javascript.options.shared_memory` to `true` in about:config.
* Redeclaration of `let` and `const` variables now throws a `SyntaxError` instead of a `TypeError` as per the ECMAScript specification (Firefox bug 1198833).
* In Strict mode, setting properties on primitive values will now throw a `TypeError` (Firefox bug 603201).
* The non-standard `WeakMap.prototype.clear()` and `WeakSet.prototype.clear()` methods have been removed (Firefox bug 1101817).
* The non-standard, static `RegExp.multiline` property is now deprecated (Firefox bug 1220457).
* Built-in accessor function names now have a "get" or "set" prefix (Firefox bug 1180290, Firefox bug 1235656).
* JS1.7/JS1.8 (legacy) array comprehensions and generator comprehensions have been removed (Firefox bug 1220564).
### Interfaces/APIs/DOM

#### DOM & HTML DOM

* The deprecated `Window.showModalDialog()` method is no more available when Firefox runs in multi-process mode (e10s) (Firefox bug 1234700).
* Added support for `Document.elementsFromPoint()` (Firefox bug 1164427).
* When a non-existent option of a `<select>` element is programmatically selected, instead of being incorrectly left unchanged, the `selectedIndex` value is now set to `-1`, the `selectedOptions` to an empty `HTMLCollection`, and `value` to an empty string (Firefox bug 1203668).

#### Canvas

* The remaining parts of the experimental `OffscreenCanvas` API has been implemented; new features: `OffscreenCanvas()` constructor, `OffscreenCanvas.toBlob()`, and `OffscreenCanvas.transferToImageBitmap()`. To use this experimental API set `gfx.offscreencanvas.enabled` to `true` in about:config (Firefox bug 1172796).
* The `ImageBitmap.close()` method is now supported (Firefox bug 1172796).
* A new `ImageBitmapRenderingContext` rendering context is now implemented. Use `"bitmaprenderer"` with `OffscreenCanvas.getContext()` or `HTMLCanvasElement.getContext()` to obtain this context. (Firefox bug 1172796).

#### WebGL

* The `WEBGL_compressed_texture_etc` extension has been implemented, allowing the use of ETC2 compressed texture formats (Firefox bug 917505). To use this extension, set the preference `webgl.enable-draft-extensions` to `true` in about:config.

#### IndexedDB

*No change.*

#### Service Workers

* `FetchEvent.request` is now non-nullable (see Firefox bug 1238213.)
* `Navigator.serviceWorker` has now been marked as SameObject (see Firefox bug 1238205.)
* `ExtendableMessageEvent.ports` has now been marked as SameObject (see Firefox bug 1238225.)

#### Fetch

* `Request.mode` now has a new value available, `navigate`, for supporting requests generated while navigating between documents (see Firefox bug 1209081.)

#### WebRTC

* The `RTCPeerConnection.createOffer()` method now supports the VP9 video codec, although this is disabled by default. To enable it, set the preference `media.peerconnection.video.vp9_enabled` to `true` in `about:config`. When enabled, VP9 is the preferred codec; previously VP8 was preferred (Firefox bug 1242324).
* The method `RTCRtpSender.setParameters()` has been added to allow changing the values of parameters after the `RTCRtpSender` was initially created.

#### New APIs

* In SVG, the `SVGStyleElement` interface now implements the `LinkStyle` mixin ) Firefox bug 1239128.

#### Miscellaneous

* The asynchronous `FileReader` is now available in Web workers (Firefox bug 901097).
* Our experimental implementation of Web Animations API has been updated:
    + The `AnimationEffectTimingReadOnly` dictionary and `AnimationEffectReadOnly.timing` have been implemented (Firefox bug 1214536).
* The Permissions API has now been enabled by default, for all release versions, not just Nightly as it previously was (Firefox bug 1221106.)
* Sanitization of WOFF fonts has been loosened a bit (Firefox bug 1244693).
### MathML

*No change.*

### SVG

*No change.*

### Audio/Video

*No change.*

HTTP
----

*No change.*

Networking
----------

* Support of RFC 7686 has been added: by default there is no attempt to resolve domain with the TLD `.onion`. This is controlled by the preference `network.dns.blockDotOnion`. Add-ons supporting Tor can swap this pref. (Firefox bug 1228457)
Security
--------

*No change.*

Changes for add-on and Mozilla developers
-----------------------------------------

### Interfaces

*No change.*

### XUL

*No change.*

### JavaScript code modules

*No change.*

### XPCOM

*No change.*

### Other

*No change.*

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

* Firefox 45 for developers
* Firefox 44 for developers
* Firefox 43 for developers
* Firefox 42 for developers
* Firefox 41 for developers
* Firefox 40 for developers
* Firefox 39 for developers
* Firefox 38 for developers
* Firefox 37 for developers
* Firefox 36 for developers
* Firefox 35 for developers
* Firefox 34 for developers
* 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 11 for developers - Mozilla

Firefox 11 for developers
=========================

Firefox 11 shipped on March 13, 2012. This article provides information about the new features and key bugs fixed in this release, as well as links to more detailed documentation for both web developers and add-on developers.

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

### HTML

* The attributes `muted` and `loop` on `<audio>` and `<video>` elements have been implemented.
### DOM

* The `element.outerHTML` property is now supported on HTML elements.
* `XMLHttpRequest` supports HTML parsing.
* Removed support for using the `XMLHttpRequest` `responseType` and `withCredentials` attributes when performing synchronous requests. Attempting to do so throws an `NS_ERROR_DOM_INVALID_ACCESS_ERR` exception. This change has been proposed to the W3C for standardization.
* The new `window.navigator.mozVibrate()` method lets you vibrate the device where supported; this is implemented as `mozVibrate()` on Gecko.
* `window.navigator.mozApps` returns an `Apps` object you can use to install and manage open web applications.
* `MozBeforePaint` events are no longer fired. `mozRequestAnimationFrame()` consumers who used these should pass a callback function instead.
* Support for canceling animation frame requests has been added; `window.mozRequestAnimationFrame()` now returns a request ID value, which you can pass to `window.mozCancelAnimationFrame()` to cancel the request.
* Several `Event` constructors (`Event`, HTML events, `UIEvent`, and `MouseEvent`) introduced in DOM4 specifications are now supported.
* The `Battery API` is now enabled by default.
* Support for the `defaultMuted`, `loop` and `muted` properties on `HTMLMediaElement` has been added.
* Calling `Document/exitFullscreen` now restores the previously fullscreen element if some other element was in fullscreen mode when the current element's `Element/requestFullScreen` method was called.
* The `window.mozRequestAnimationFrame()` method no longer supports a no-argument form. This form was not used much and is unlikely to become part of the standard.
* SVG-as-an-image can now be drawn into a canvas without tainting the canvas.
* The non-standard `countryCode` property of the `GeoPositionAddress` interface has been removed; see `nsIDOMGeoPositionAddress`.
* Server-sent events now support CORS.
* In the past, when the user followed a link, the values set on the `window.navigator` object were retained by the new page. Now a new `navigator` object is created for the new page. This makes Firefox behave like all other browsers.
### CSS

* the `text-size-adjust` property is now supported
* CSS3 Conditional Rules are now better supported: nested statements can now be added to @media, @-moz-document. (See CSS Syntax and CSS at-rules).
### JavaScript

*No change.*

### SVG

* The `SVGSVGElement` DOM interface now support the `getElementById` method.
### WebSocket

* WebSocket API now supports binary messages (see Firefox bug 676439).
* Both the protocol and the API has been updated to the latest draft of the specification and the API has been unprefixed (see Firefox bug 666349 and Firefox bug 695635).
* Previously, messages sent and received using WebSockets in Firefox were limited to 16 MB in size; they may now be up to 2 GB (although memory capacity limitations may prevent them from being that large, Firefox supports it).
### IndexedDB

* The support for IDBFactory.cmp() has been added.
* An IndexedDB key can also be of one of the following types: Date, Arrays and Float (and not only String and Integer).
* From now on, transactions are started when the transaction is created, not when the first request is placed; for example consider this:

```js
var trans1 = db.transaction("foo", READ\_WRITE);
var trans2 = db.transaction("foo", READ\_WRITE);

trans2.put("2", "key");
trans1.put("1", "key");
```

After the code is executed the object store should contain the value "2", since `trans2` should run after `trans1`.
* Previous to Firefox 11, object store `autoIncrement` counters were shared across all object stores for a given database, whereas per spec each object store should have a separate counter. This is now fixed.
* It is now possible to `create an index` with an empty `keyPath`.
* It is now possible to create a multi-entry index (see `IDBObjectStore.createIndex` parameters.)
* The `abort` event now bubbles; in addition, an `onabort` handler has been added.
* IndexedDB can now be used to store files/blobs.
* IndexedDB now supports complex key paths, e.g. `foo.bar` to access property `bar` of property `foo`.
* IndexedDB can now accept an array as a `keyPath` when creating an `object store` or an `index` (Firefox bug 694138.)
### Network

* The change in Firefox 8 that removed support for double quote characters as delimiters for RFC 2231 and RFC 5987 has been reverted, as this broke some sites, including Outlook Web Access.
* The user agent string in HTTP headers now includes an identifier that lets the server know if the Firefox accessing it is a phone or a tablet.
### Developer tools

* The Page Inspector now offers a 3D view if your system supports WebGL.
* The new Style Editor provides a free-form way to edit and compose CSS style sheets in real-time.
* The View Source feature now uses the new HTML5 parser instead of the old HTML parser.
Changes for Mozilla and add-on developers
-----------------------------------------

### JavaScript code modules

#### NetUtil.jsm

* `readInputStreamToString()` has a new, optional, parameter to configure the character set interpretation while reading the input stream.

#### New JavaScript code modules

`source-editor.jsm`

Provides a convenient, easy-to-use source code editor that you can use in your add-ons. This is the same editor used by *Scratchpad* and other developer tools integrated into Firefox.

### Interface changes

* The `mozIAsyncHistory` interface has a new method `mozIAsyncHistory.isURIVisited()` to check if a URI has been visited.
* A new interface `mozIVisitStatusCallback` has been added to provide callback handling functionality for `mozIAsyncHistory.isURIVisited()`.
* The `nsIMacDockSupport` interface now supports adding a text badge to the application's icon in the Dock using its new `badgeText` attribute.
* In the `nsINavHistoryResultObserver` interface, you now need to implement `nsINavHistoryResultObserver.containerStateChanged()` instead of the obsolete `containerOpened()` and `containerClosed()` methods.

#### Removed interfaces

The following interfaces were implementation details that are no longer needed:

* `nsICharsetResolver`
* `nsIDOMNSElement`, see bug707576, use `nsIDOMElement` instead.
### Theme-related changes

* The `omni.jar` file is now called `omni.ja`.
### Preference changes

`ui.tooltipDelay`

Specifies the delay, in milliseconds, between the mouse cursor beginning to hover and the display of a tooltip.

### Build system changes

* The `--enable-tracejit` build option has been removed.
### Other changes

* Add-ons that have not been updated in a long time are no longer assumed to be compatible by default; this is currently add-ons that indicate a `maxVersion` of 4.0.
See also
--------

* 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


Firefox 110 for developers - Mozilla

Firefox 110 for developers
==========================

This article provides information about the changes in Firefox 110 that will affect developers. Firefox 110 was released on February 14, 2023.

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

### HTML

No notable changes.

### CSS

* Container queries and container query length units are now supported by default.
 For more information on these queries and the related units of length, see the CSS Container Queries documentation (Firefox bug 1809720).
* The color-gamut media query is now supported (Firefox bug 1422237).
* The `list` attribute is supported in `<input>` elements with `type="color"` on Windows and Linux (Firefox bug 960984).
* The `@page` at-rule now supports named pages, which allows a user to create page breaks for specific selectors using the `page` property (Firefox bug 1787947)
### JavaScript

* Serialization of native Error types now includes the `stack` property in workers when using `Worker.postMessage()` and `structuredClone()`.
 With this addition, cloning native error stacks now works for all methods that use the structured clone algorithm, in both the main thread and workers.
 (See Firefox bug 1774866 for more details.)
### APIs

* The `midi` permission of the Permission API is now supported.
 This allows the permission status for using the Web MIDI API to be queried using `navigator.permissions.query()` (Firefox bug 1772166).
* `ReadableStream` now supports asynchronous iteration over the chunks in a stream using the `for await...of` syntax (Firefox bug 1734244).
* WebRTC now supports sending the set of available encodings when adding a transceiver to a peer connection, and also getting the active encoding associated with a sender.
 Specifically, `RTCPeerConnection.addTransceiver()` now supports using the `sendEncodings` option in the `init` parameter object, and `active` can be used to determine whether or not the encoding is being used to send data.
 (See Firefox bug 1676855 for more details.)
* WebRTC methods `RTCRtpSender.getParameters()`, `RTCRtpSender.setParameters()`, and `RTCRtpReceiver.getParameters()` are now compliant with the specification (Firefox bug 1401592).

#### DOM

* `CSSContainerRule` is supported, allowing JavaScript to access the name and query used in an `@container` at-rule definition (Firefox bug 1787173).
* Elements now lose focus if a style is applied that makes them ineligible to hold focus, such as `hidden`, and the `blur` event is fired.
 Focus then moves to the viewport.
 Previously focus would remain with the element.
 (See Firefox bug 1810077 for more details.)
### WebDriver conformance (WebDriver BiDi, Marionette)

#### WebDriver BiDi

* Added support for the `network.beforeRequestSent` (Firefox bug 1790368), the `network.responseStarted` (Firefox bug 1790370), and the `network.responseCompleted` (Firefox bug 1790372) events.
* Added support for the `browsingContext.captureScreenshot` command to capture full page screenshots (Firefox bug 1800086).
* Added support for serialization and deserialization of generic platform objects (Firefox bug 1792524), and for `NodeList` and `HTMLCollection` platform objects (Firefox bug 1802284).
* Added a `timestamp` field to the `browsingContext.domContentLoaded` and `browsingContext.load` events (Firefox bug 1790378).
* Added a `type` field to the response for `script.evaluate` and `script.callFunction` to indicate either `success` or `exception` results (Firefox bug 1803599).

#### Marionette

* The cache for known nodes (element and shadow root references) has been moved from the parent to the web content process following recent WebDriver classic changes (Firefox bug 1692468).
* Improved the JSON serialization and deserialization algorithms to be compliant with the WebDriver classic specification (Firefox bug 1794078).
Changes for add-on developers
-----------------------------

* Added the `"webRequestFilterResponse"`API permission. This permission provides access to `webRequest.filterResponseData`. This permission can be provided as an optional permission. See `webRequest.filterResponseData` for more information on using this permission (Firefox bug 1809235).
* The `defaultZoomFactor` property of `tabs.ZoomSettings` now returns the value of the default zoom factor setting (Firefox bug 1772166)
Older versions
--------------

* 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
* Firefox 87 for developers
* Firefox 86 for developers
* Firefox 85 for developers
* Firefox 84 for developers
* Firefox 83 for developers
* Firefox 82 for developers
* Firefox 81 for developers
* Firefox 80 for developers
* Firefox 79 for developers


Firefox 3.6 for developers - Mozilla

Firefox 3.6 for developers
==========================

Firefox 3.6 offers support for new and developing web standards, increased performance, and an overall better experience for web users and developers. This page provides links to articles covering the new capabilities of Firefox 3.6.

For website and application developers
--------------------------------------

### CSS

Using gradients

Firefox 3.6 adds support for the proposed `-moz-linear-gradient` and `-moz-radial-gradient` properties for `background`.

Multiple backgrounds

The `background` property (as well as `background-color`, `background-image`, `background-position`, `background-repeat`, and `background-attachment`) now supports multiple backgrounds. This lets you specify multiple backgrounds that are rendered atop one another in layers.

Mozilla-specific media features

Media features have been added for Mozilla-specific system metrics, so that media queries can be used to more safely check on the availability of features such as touch support.

Scaling background images

The `background-size` property from the CSS 3 Backgrounds and Borders draft is now supported under the name `-moz-background-size`.

WOFF font support

`@font-face` now supports the WOFF downloadable font file format.

Pointer events

The `pointer-events` property lets content specify whether or not an element may be the target of mouse pointer events.

#### Miscellaneous CSS changes

* The `rem` length unit from CSS3 Values and Units is now supported. Firefox bug 472195
* `image-rendering` is supported for images, background images, videos and canvases. Firefox bug 423756
* `text-align`:end is now supported. Firefox bug 299837
* DOM changes to elements using the table `display` types now work much better.
* Added `:-moz-locale-dir_ltr` and `:-moz-locale-dir_rtl` to make it easier to customize layouts based on whether the user interface is being displayed using a left-to-right or a right-to-left locale. Firefox bug 478416
* Added support for the `:indeterminate` pseudo-class, which matches `checkbox` `input` elements whose `indeterminate` attribute is `true`.
* Windowed plugins are no longer displayed in CSS transforms, because they can't be transformed properly by the compositor.
### HTML

Using files from web applications

Support for the new HTML5 File API has been added to Gecko, making it possible for web applications to access local files selected by the user. This includes support for selecting multiple files using the `input type="file"` HTML element's new `multiple` attribute.

HTML5 video supports poster frames

The `poster` attribute is now supported for the `video` element, allowing content to specify a poster frame to be displayed until the video begins to play.

Checkboxes and radio buttons support the `indeterminate` property

HTML `input` elements of types `checkbox` and `radio` now support the indeterminate property, which allows a third, "indeterminate" state.

Canvas image smoothing can be controlled

The new `mozImageSmoothingEnabled` property can be used to turn on and off image smoothing when scaling in `canvas` elements.

Asynchronous script execution

By setting the `async` attribute on a `script` element, the `script` will not block loading or display of the rest of the page. Instead the `script` executes as soon as it is downloaded.

### JavaScript

Gecko 1.9.2 introduces JavaScript 1.8.2, which adds a number of language features from the ECMAScript 5 standard:

* `Date.parse()` can now parse ISO 8601 dates like YYYY-MM-DD.
* The `prototype` property of function instances is no longer enumerable.
### DOM

Web workers can now self-terminate

Workers now support the `nsIWorkerScope.close()` method, which allows them to terminate themselves.

Drag and drop now supports files

The `DataTransfer` object provided to drag listeners now includes a list of files that were dragged.

Checking to see if an element matches a specified CSS selector

The new `element.mozMatchesSelector` method lets you determine whether or not an element matches a specified CSS selector. See Firefox bug 518003.

Detecting device orientation

Content can now detect the orientation of the device if it has a supported accelerometer, using the `MozOrientation` event. Firefox 3.6 supports the accelerometer in Mac laptops.

Detecting document width and height changes

The new `MozScrollAreaChanged` event is dispatched whenever the document's `scrollWidth` and/or `scrollHeight` properties change.

#### Miscellaneous DOM changes

* The `getBoxObjectFor()` method has been **removed**, as it was non-standard and exposed even more non-standard stuff to the web. See Firefox bug 340571. Also affects MooTools which uses this call for Gecko detection; this has been fixed in the latest version of MooTools, so be sure to update.
* The new `mozInnerScreenX` and `mozInnerScreenY` properties on DOM windows have been added; these return the screen coordinates of the top-left corner of the window's viewport.
* The new `mozScreenPixelsPerCSSPixel` attribute on the `nsIDOMWindowUtils` interface, accessible only to chrome, provides a conversion factor between CSS pixels and screen pixels; this value can vary based on the zoom level of the content.
* When the page's URI's document fragment identifier (the part after the "#" (hash) character) changes, a new `hashchange` event is sent to the page. See the `hashchange` event for more information. Firefox bug 385434
* The attribute `document.readyState` is now supported. Firefox bug 347174
* Support for HTML5's `element.classList` to allow easier handling of the class attribute. Firefox bug 501257
* `localName` and `namespaceURI` in HTML documents now behave like they do in XHTML documents: `localName` returns in lower case and `namespaceURI` for HTML elements is `"http://www.w3.org/1999/xhtml"`.
* `element.getElementsByTagNameNS` no longer lowercases its argument, so upper-case ASCII letters in the argument make matches against HTML elements fail. The same is true for `document.getElementsByTagNameNS`.
* Support has been added for addresses in geolocation via the `nsIDOMGeoPositionAddress` interface and a new field added to `nsIDOMGeoPosition`.
* The `window.getComputedStyle` function now returns quotes within `url()` values.
### XPath

The choose() XPath method is now supported

The `choose()` method is now supported by our implementation of XPath.

For XUL and add-on developers
-----------------------------

If you're an extension developer, you should start by reading Updating extensions for Firefox 3.6, which offers a helpful overview of what changes may affect your extension. Plug-in developers should read Updating plug-ins for Firefox 3.6.

### New features

Detecting device orientation

Content can now detect the orientation of the device if it has a supported accelerometer, using the `MozOrientation` event. Firefox 3.6 supports the accelerometer in Mac laptops.

Monitoring HTTP activity

You can now monitor HTTP transactions to observe requests and responses in real time.

Working with the Windows taskbar

It's now possible to customize the appearance of windows in the taskbar in Windows 7 or later. *This has been disabled by default in Firefox 3.6.*

### Places

* Places queries can now use the `redirectsMode` attribute on the `nsINavHistoryQueryOptions` interface to specify whether or not to include redirected pages in results.
* Added the new `nsIFaviconService.expireAllFavicons()` method to the `nsIFaviconService` interface.
### Storage

Locale-aware collation of data is now supported by the Storage API

Gecko 1.9.2 added several new collation methods to provide optimized collation (sorting) of results using locale-aware techniques.

Properties on a statement can now be enumerated

You can now use a `for...in` enumeration to enumerate all the properties on a statement.

mozIStorageStatement's getParameterIndex changed behavior between 3.5 and 3.6.

See Firefox bug 528166 for details.

Asynchronously bind multiple sets of parameters and execute a statement.

See Firefox bug 490085 for details. Documentation coming soon.

### Preferences

* The `nsIContentPrefService` interface has two new methods: `nsIContentPrefService.getPrefsByName()` and `nsIContentPrefService.removePrefsByName()`.
### Themes

See Updating themes for Firefox 3.6 for a list of changes related to themes.

Lightweight themes

Firefox 3.6 supports lightweight themes; these are easy-to-create themes that apply a background to the top (URL bar and button bar) and bottom (status bar) of browser windows. This is an integration of the existing Personas theme architecture into Firefox.

### Miscellaneous

* Firefox will no longer load third-party components installed in its internal components directory. This helps to ensure stability by preventing buggy third-party components from being executed. Developers that install components this way must repackage their components as XPI packages so they can be installed as standard add-ons.
* `contents.rdf` is no longer supported for registering chrome in extensions. You must now use the `chrome.manifest` file instead. See Firefox bug 492008.
* Added support for hiding the menu bar automatically. See Firefox bug 477256.
* Added support for the `container-live-role` attribute to objects. See Firefox bug 391829.
* The `tabs-closebutton` binding has been removed. See Firefox bug 500971.
* Added support to `nsISound` for playing sounds based on events that have occurred. See Firefox bug 502799.
* The syntax for the `nsITreeView` methods `nsITreeView.canDrop()` and `nsITreeView.drop()` has changed to support the new drag & drop API introduced in Gecko 1.9. See Firefox bug 455590.
* Added support to snap the mouse cursor to the default button of dialog or wizard on Windows, see Firefox bug 76053. This is processed automatically by dialog and wizard element. But if a XUL application creates a window using the `window` element and it has a default button, it needs to call `nsIDOMChromeWindow.notifyDefaultButtonLoaded` during the window's `onload` event handler.
* The `nsILocalFileMac` interface has had two methods removed: `setFileTypeAndCreatorFromMIMEType()` and `setFileTypeAndCreatorFromExtension()`.
* The new `NetUtils.jsm` code module provides an easy-to-use method for asynchronously copying data from an input stream to an output stream.
* The new `openLocationLastURL.jsm` code module makes it easy to read and change the value of the "Open Location" dialog box's remembered URL while properly taking private browsing mode into account.
* On Windows, the `nsIScreen` interface now reports 24-bit per pixel color depths when the graphics driver claims 32 bits, since 24 more accurately represents the actual number of color pixels in use.
* Menu bars can now be hidden on Windows, using the new `autohide` attribute on the `<xul:toolbar>` XUL element.
* The `loadOneTab` and `addTab` methods now accept a new `relatedToCurrent` parameter and, in addition, allow the parameters to be specified by name, since nearly all of the parameters are optional.
* The "hidden" property is no longer supported in install manifests; it's no longer possible to prevent the user from seeing add-ons in the add-on manager window.
* The `@mozilla.org/webshell;1` component no longer exists; you need to use `@mozilla.org/docshell;1` instead.
* You can now register with the update-timer category to schedule timer events without having to instantiate the object that the timer will eventually call into; it will instead be instantiated when it's needed. See `nsIUpdateTimerManager.registerTimer()` for details.
* The `NPN_GetValue()` function no longer provides access to XPCOM through the variable values `NPNVserviceManager`, `NPNVDOMelement`, and `NPNVDOMWindow`. This is part of the work toward making plugins run in separate processes in a future version of Gecko.
* Plugins are no longer scriptable through XPCOM (IDL) interfaces, NPRuntime is the API to use for making plugins scriptable, and `NPP_GetValue()` is no longer called to with the value `NPPVpluginScriptableInstance` or `NPPVpluginScriptableIID`. This is part of the work toward making plugins run in separate processes in a future version of Gecko.
For Firefox/Gecko developers
----------------------------

Certain changes are only really interesting if you work on the internals of Firefox itself.

### Interfaces merged

The following interfaces have been combined together:

* `nsIPluginTagInfo2` has been merged into `nsIPluginTagInfo`.
* `nsIPluginInstanceInternal`, `nsIPPluginInstancePeer`, `nsIPluginInstancePeer1`, `nsIPluginInstancePeer2`, and `nsIPluginInstancePeer3` have all been merged into `nsIPluginInstance`.
* `nsIWindowlessPlugInstPeer` has been merged into `nsIPluginInstance`.
* `nsIPluginManager` and `nsIPluginManager2` have been merged into `nsIPluginHost`.
### Interfaces removed

The following interfaces have been removed entirely because they were unused, unimplemented, or obsolete:

* `nsIFullScreen`
* `nsIDOMSVGListener`
* `nsIDOMSVGZoomListener`
* `nsIInternetConfigService`
* `nsIDKey`
* `nsIEventHandler`
* `nsIJRILiveConnectPIPeer`
* `nsIJRILiveConnectPlugin`
* `nsIScriptablePlugin`
* `nsIClassicPluginFactory`
* `nsIFileUtilities`
### Interfaces moved

The following interfaces have been relocated from their previous IDL files into new ones:

* `nsIDOMNSCSS2Properties` is now located in its own IDL file (`dom/interfaces/css/nsIDOMCSS2Properties.idl`).
* `nsIUpdateTimerManager` is now located in its own IDL file.

A large number of interfaces have been moved. See Interfaces moved in Firefox 3.6 for a complete list.

### Other interface changes

The following assorted changes have been made:

* The `nsIPlugin` interface now inherits from `nsISupports` instead of `nsIFactory`.
* The `nsIPluginHost` interface now inherits from `nsISupports` instead of `nsIFactory`.
* The `nsIFrame` interface now inherits from `nsQueryFrame` instead of `nsISupports`.
* The `nsIDeviceContext` method `getPaletteInfo()` has been removed, as it was never implemented.
* The `nsIScriptContext` method `reportPendingException()` has been removed, since it was no longer being used.
### Changes in accessibility code

* The `EVENT_REORDER` accessibility event is now sent when the children of frames and iframes change, as well as when the main document's children change. See Firefox bug 420845.
* The `nsIAccessibleTable.selectRow()` now correctly removes any current selection before selecting the specified row.
See also
--------

* Firefox 3.5 for developers
* Firefox 3 for developers
* Firefox 2 for developers
* Firefox 1.5 for developers


Firefox 82 for developers - Mozilla

Firefox 82 for developers
=========================

This article provides information about the changes in Firefox 82 that will affect developers. Firefox 82 was released on October 20, 2020.

**Note:** See also Coming through with Firefox 82 on Mozilla Hacks.

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

### Developer tools

* You can now inspect server-sent events using the Network Monitor (Firefox bug 1640857).
* The Network Monitor's *Message* panel has now been merged with the *Response* panel — messages (e.g. from WebSockets or server-sent events) can now be viewed right below the responses list (Firefox bug 1636421).
### HTML

* The color picker used for `<input type="color">` is now keyboard-accessible on Windows (Firefox bug 1526820).
* The `allow-downloads` flag for the `<iframe sandbox>` attribute is now supported (Firefox bug 1656212).
### CSS

* Support for the new `::file-selector-button` pseudo-element has been added. This pseudo-element represents the file selection button inside an `<input type="file">` element (Firefox bug 1635675, Firefox bug 1662478).
* We have improved error recovery for the `:is()` and `:where()` pseudo-classes. These pseudo-classes now accept a forgiving selector list, where an invalid selector in the list will not render the entire list invalid (Firefox bug 1664718).
* `appearance: button` now applies only to buttons; the `button` value of `appearance` will otherwise behave as `auto` (Firefox bug 1662703).

#### Removals

* We have removed the proprietary `:-moz-user-disabled` pseudo-class (Firefox bug 1664432).
### HTTP

* The `Content-Disposition` header's `inline` directive will now be ignored if the HTML `<a>` element's `download` attribute is specified (for same-origin URLs). Note that if specified the `Content-Disposition` header `filename` will be used in preference to a filename specified in the `download` attribute (Firefox bug 1658877).
### APIs

#### New APIs

* The Media Session API is now enabled by default (Firefox bug 1665496).

#### DOM

* `Document.execCommand()` is no longer supported for nested/recursive calls, which will now return `false` (Firefox bug 1634262).
* `Element.setPointerCapture()` throws the `NotFoundError` exception if the pointer `id` is invalid, as per the specification (Firefox bug 1662124). Previously it wrongly threw an `InvalidPointerId` exception.
* The `window.name` property is reset to an empty string if a tab loads a page from a different domain, and restored if the original page is reloaded (e.g. via the "back" button). This prevents an untrusted page from accessing any information that the previous page might have stored in the variable. This change may impact frameworks that use `window.name` for cross-domain messaging (Firefox bug 444222).
### WebDriver conformance (Marionette)

* To simulate a more realistic user navigation, all supported navigation commands have been moved to the parent process (Firefox bug 1612831).
* We updated the checks for the current or top-level browsing context for all the commands to improve conformance with the WebDriver specification (Firefox bug 1493108).
* Fixed a bug in `WebDriver:ElementClick` that sometimes caused the command to return before the click event was actually synthesized (Firefox bug 1394354).
Changes for add-on developers
-----------------------------

* The `tabs.captureTab()` and `tabs.captureVisibleTab()` methods now capture an area of the relevant tab's content specified by the `rect` property of the provided `options` object, or the visible area of the tab if this property is not provided (Firefox bug 1636508). Previously the `rect` property was not available, and these methods always captured the visible area of the relevant tab.
* Read-only access to `cookieStoreId` no longer requires the `"cookies"` permission (Firefox bug 1662329).
Older versions
--------------

* Firefox 81 for developers
* Firefox 80 for developers
* Firefox 79 for developers
* Firefox 78 for developers
* Firefox 77 for developers
* Firefox 76 for developers
* Firefox 75 for developers
* Firefox 74 for developers
* 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