Chrome Release Summary

Chrome version: 151, 150, 149, 148, 147, 146, 145, 144, 143, 142, 141, 140, 139, 138, 137, 136, 135, 134, 133, 132, 131, 130, 129, 128, 127, 126, 125, 124, 123, 122, 121, 120, 119, 118, 117, 116, 115, 114, 113, 112, 111, 110, 109, 108, 107, 106, 105, 104, 103, 102, 101, 100, 99, 98, 97, 96, 95, 94, 93, 92, 91, 90, 89, 88, 87, 86, 85, 84, 83, 82, 81, 80, 79, 78, 77, 76, 75, 74, 73, 72, 71, 70, 69, 68, 67, 66, 65, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40, 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0

Chrome 58

Enabled (31) | Origin Trial (0) | Behind a flag (0) | Deprecated (0) | Removed (9)

Enabled by default in 58

This release of Chrome had 31 new features.

'allow-top-navigation-by-user-activation' <iframe sandbox> keyword

Adds a new keyword named "allow-top-navigation-by-user-activation" for iframe sandbox, which requires a user activation (or gesture) being processed to trigger a top-level navigation. This change would enable more use cases of sandboxing untrusted third-party contents (eg., ads) by allowing top navigation while blocking malicious auto-redirecting, and thus help building a safer internet (eg., a safer ads ecosystem in which all ads could be sandboxed to prevent malicious auto-redirecting). #

This feature was specified in this Spec.

Resources

Docs: https://github.com/WICG/interventions/issues/42https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe

Samples: http://w3c-test.org/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_allow_top_navigation_by_user_activation-manual.html

<abbr> and <acronym> have underline by default

<abbr> and <acronym> should have dotted underline by default according to the HTML standard. #

This feature was specified in this Spec.

Allowing autoplay unmuted in WebAPK manifest scope

In WebAPK mode, frames that are within the WebAPK manifest scope will be allowed to autoplay media unmuted. #

CSS class name: Apple-interchange-newline, Apple-converted-space, Apple-paste-as-quotation, Apple-style-span, and Apple-tab-span

These non-standard CSS classes are used to differentiate the span elements added by Blink itself in editing. #

ClipboardEvent Constructor

This entry tracks exposing ClipboardEvent constructor. #

This feature was specified in this Spec.

Resources

Docs: https://developer.mozilla.org/en-US/docs/Web/API/Clipboard_APIhttps://developer.mozilla.org/en-US/docs/Web/API/ClipboardEvent/ClipboardEvent

No linked samples

Create Workers from `data:` URLs

HTML specifies that `data:` URLs can be used to create workers with opaque origins. We should support this as a first step towards defining a sandboxing mechanism for Workers (and parity with other browsers). #

This feature was specified in this Spec.

EME: Make navigator.requestMediaKeySystemAccess() spec compliant

Require that one of 'audioCapabilities' and 'videoCapabilities' be specified in the configuration passed to navigator.requestMediaKeySystemAccess(), and require that the contentType strings used as part of the entries to 'audioCapabilities' and 'videoCapabilities' include the desired codec as part of the MIME type. This item covers two bugs though only one is listed under the status section: https://crbug.com/605661, https://crbug.com/616233 #

This feature was specified in this Spec.

Resources

Docs: https://developer.mozilla.org/en-US/docs/Web/API/Navigator/requestMediaKeySystemAccess

No linked samples

INPUT element: selectionDirection, selectionStart, and selectionEnd attribute getters should not throw

For input types which don't support text selection API, we have thrown InvalidStateError. The specification was changed so that null is returned in such case. #

This feature was specified in this Spec.

IndexedDB 2.0

IndexedDB 2.0 introduces a few APIs that optimize some database access patterns and improve programming ergonomics. Chrome will support the full standard by shipping the following features: support for binary keys, object store and index renaming, getKey() on IDBObjectStore, getPrimaryKey() on IDBIndex. #

This feature was specified in this Spec.

Resources

Docs: https://hacks.mozilla.org/2016/10/whats-new-in-indexeddb-2-0/https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore/namehttps://developer.mozilla.org/en-US/docs/Web/API/IDBIndex/namehttps://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore/getKeyhttps://developer.mozilla.org/en-US/docs/Web/API/IDBCursor/continuePrimaryKey

Samples: https://hacks.mozilla.org/2016/10/whats-new-in-indexeddb-2-0/https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore/namehttps://developer.mozilla.org/en-US/docs/Web/API/IDBIndex/namehttps://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore/getKeyhttps://developer.mozilla.org/en-US/docs/Web/API/IDBCursor/continuePrimaryKey

Intervention: Offline Previews

When users are on slow connections, Chrome will show an offline copy of a page if there is an offline version of the page available on the user’s device. Users will be shown a lite mode UI in the omnibox. If Chrome determines the network has 2G speeds and there's an offline page stored, Chrome shows the offline page. Chrome’s offline pages are based on MHTML snapshots. An intervention report is sent when this optimization occurs. #

Resources

Docs: https://developers.google.com/web/updates/2018/09/reportingapihttps://www.w3.org/TR/reporting/#intervention-report

No linked samples

Long Task API

A performance API to enable applications to detect presence of “long tasks” that monopolize the UI thread for extended periods of time and block other critical tasks from being executed - e.g. reacting to user input. #

This feature was specified in this Spec.

Resources

Docs: https://github.com/w3c/longtaskshttps://developer.mozilla.org/en-US/docs/Web/API/Long_Tasks_API

No linked samples

Mouse on Android stops firing TouchEvents

A mouse on an Android M (or later) device: (a) will no longer fire TouchEvents, and (b) will fire a consistent sequence of MouseEvents with appropriate buttons & other properties. Before this change, a low-level mouse events in Android reached blink as a touch event, hence fired a touch event then a compat mouse event if the touch event went uncanceled. #

Resources

Docs: https://docs.google.com/document/d/1mpBR7J7kgTXvp0QACVjhxtwNJ7bgGoTMmxfxN2dupGg/edit?usp=sharing

No linked samples

Native media controls customization

We propose extending the “controls” attribute of the HTMLMediaElement so that the website could enable/disable certain media controls without having to implement all the controls on its own. A “controlsList” property will be added reflecting the current value of “controls” similar to the “class” and “classList” on HTMLElement. #

Resources

Docs: https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement/controlsList

No linked samples

Pause autoplaying muted video by attribute when invisible (Android)

As a muted video with autoplay attribute only starts playing when it's becoming visible, it's reasonable to pause them when invisible to reduce power usage. #

Resources

Docs: https://github.com/whatwg/html/pull/2324

Samples: https://googlechrome.github.io/samples/muted-autoplay/index.html

PointerEvent.getCoalescedEvents

An API to return all the coalesced events of the received events in javascript. This API enables apps like drawing app to draw smoother curves using the precise history of points. #

This feature was specified in this Spec.

Resources

Docs: https://developer.mozilla.org/en-US/docs/Web/API/PointerEvent/getCoalescedEvents

No linked samples

RTCPeerConnection.getStats

This is a spec-compliant version of RTCPeerConnection.getStats returning a promise resolved with RTCStatsReport, a maplike containing RTCStats dictionaries. Stats are being implemented according to the spec in a continuous effort for coverage to become good enough that the old getStats method can be deprecated. The old getStats (taking a callback as argument) is very different from the spec and riddled with goog-prefixed things. #

This feature was specified in this Spec.

Resources

Docs: https://docs.google.com/document/d/1Wc6a4o0PqTxIWD7LM_smA7Z0GZUTy6XOgr1qyS4M7hQ/edit?usp=sharinghttps://cs.chromium.org/chromium/src/third_party/webrtc/api/stats/rtcstats_objects.hhttps://developer.mozilla.org/en-US/docs/Web/API/RTCRtpReceiver/getStats

No linked samples

RTCPeerConnection.setConfiguration

Implement setConfiguration according to WebRTC 1.0 and JSEP. This API allows an application to change the set of ICE servers, ICE candidate policy, and ICE candidate pool size without creating a new RTCPeerConnection. #

This feature was specified in this Spec.

Resources

Docs: https://developer.mozilla.org/en-US/docs/Web/API/RTCPeerConnection/setConfiguration

No linked samples

Remove "reset" and "document" as valid zoom values

There are two special values for the CSS zoom property that are inconsistently documented: "reset" and "document". They set the element's zoom to 1.0 regardless of parent element zoom status and prevent page zoom from affecting the element's size. We're removing them. #

This feature was specified in this Spec.

Resources

Docs: https://groups.google.com/a/chromium.org/forum/#!msg/Blink-dev/Udxmfvq4Wf8/Jy4VsQxGAQAJ

Samples: foodviva.comhappiestminds.comruinergame.comasiancorrespondent.compatycantu.com

Selection API: addRange() ignores additional Ranges

In a case where document already has text selection and Selection.addRange() is called, Blink merges the Range and the existing text selection into one if they have overlap, and does nothing otherwise. We'll change it so that Blink always ignore the Range. It matches to Edge. #

Resources

Docs: https://github.com/w3c/selection-api/issues/80https://developer.mozilla.org/en-US/docs/Web/API/Selection/addRange

No linked samples

Selection API: removeRange() function

Selection interface should support removeRange() function to remove the specified Range. #

This feature was specified in this Spec.

Resources

Docs: https://developer.mozilla.org/en-US/docs/Web/API/Selection/removeRange

No linked samples

Selection API: setBaseAndExtent() throws IndexSizeError for too large offsets

setBaseAndExtent() silently clamped too large offset values. IndexSizeError should be thrown for such values to match to Firefox, Edge, and the specification. #

This feature was specified in this Spec.

Selection API: setBaseAndExtent(), extend(), and collapse() throw InvalidNodeTypeError for DOCTYPE

These function silently normalized the specified position with DOCTYPE. However, they should throw InvalidNodeTypeError to match to Edge, Firefox, and the specification. #

This feature was specified in this Spec.

Ship PointerEvent.tangentialPressure and PointerEvent.twist

Adding support of tangentialPressure and twist attributes in the pointer events API on Mac. They are supported by some stylus devices and are already used in numerous painting apps. #

This feature was specified in this Spec.

Resources

Docs: https://github.com/w3c/pointerevents/issues/70https://github.com/w3c/pointerevents/issues/25https://developer.mozilla.org/en-US/docs/Web/API/PointerEventhttps://developer.mozilla.org/en-US/docs/Web/API/PointerEvent/tangentialPressurehttps://developer.mozilla.org/en-US/docs/Web/API/PointerEvent/twist

Samples: https://output.jsbin.com/pahefaz/quiet/

Strict Secure Cookies

This adds restrictions on cookies marked with the 'Secure' attribute. Currently, Secure cookies cannot be accessed by insecure (e.g. HTTP) origins. However, insecure origins can still add Secure cookies, delete them, or indirectly evict them. This feature modifies the cookie jar so that insecure origins cannot in any way touch Secure cookies. This does leave a carve out for cookie eviction, which still may cause the deletion of Secure cookies, but only after all non-Secure cookies are evicted. #

This feature was specified in this Spec.

Resources

Docs: https://developer.mozilla.org/en-US/docs/Web/API/Document/cookie

No linked samples

Trailing comma in JavaScript function parameter lists

A small modification to JavaScript syntax allows trailing comma in formal parameter lists and in argument lists. For example, all the following become valid: function f(a, b,) { return a + b } let g = (a, b,) => a + b f(1, 2,) + g(3, 4,) This is expected to be available by default in Chrome 58. #

This feature was specified in this Spec.

Unprefix CSS 'line-break' property

The CSS 'line-break' property specifies the strictness of line-breaking rules. The exact definition of the strictness depends on languages. Our implementation relies on ICU (see doc link) which supports East Asian writing systems and Finnish. #

This feature was specified in this Spec.

Resources

Docs: http://cldr.unicode.org/development/development-process/design-proposals/specifying-text-break-variants-in-locale-ids

Samples: https://ja.stackoverflow.com/questions/33378/chrome%E3%81%A7%E6%97%A5%E6%9C%AC%E8%AA%9E%E3%81%AE%E7%A6%81%E5%89%87%E5%87%A6%E7%90%86%E3%81%8C%E5%8A%B9%E3%81%8B%E3%81%AA%E3%81%84

WebAudio: Add buffering/latency hint via latencyHint

Currently, WebAudio will use the lowest latency possible for the audio device for the best interactive behavior. However, for some use-cases such as media playback, this causes unnecessary power and/or CPU utilization. The latencyHint is a hint from the developer that such a latency is not required. The latencyHint is either an AudioContextLatencyCategory value or a double specifying the desired numeric latency. This is a hint to Chrome. #

This feature was specified in this Spec.

Resources

Docs: http://webaudio.github.io/web-audio-api/#BaseAudioContexthttps://webaudio.github.io/web-audio-api/#idl-def-AudioContextOptions

No linked samples

WebAudio: AudioBuffer constructor only takes one argument

Currently the AudioBuffer constructor takes two arguments: the context, and the AudioBufferOptions. The context argument is removed so that only AudioBufferOptions is required. In addition the sampleRate member of AudioBufferOptions is now required. #

This feature was specified in this Spec.

Resources

Docs: https://webaudio.github.io/web-audio-api/#AudioBufferhttps://developer.mozilla.org/en-US/docs/Web/API/AudioBuffer/AudioBuffer

No linked samples

XSS Auditor violation report MIME type.

The XSS Auditor's violation reports are now sent with a MIME type of `application/xss-auditor-report` (as opposed to `application/json`). #

color-gamut media query

Expose the approximate range of colors supported by the user agent and the output device in a CSS Media Query. #

This feature was specified in this Spec.

Resources

Docs: https://developer.mozilla.org/en-US/docs/Web/CSS/@mediahttps://developer.mozilla.org/en-US/docs/Web/CSS/@media/color-gamut

Samples: https://beaufortfrancois.github.io/sandbox/media-capabilities/color-gamut-media-query.html

display: flow-root

display: flow-root generates a block container box, and lays out its contents using flow layout. It always establishes a new block formatting context for its contents. #

This feature was specified in this Spec.

Resources

Docs: https://developer.mozilla.org/en-US/docs/Web/CSS/display

No linked samples

Origin Trials in-progress in 58

This release of Chrome had 0 new origin trials.

Flagged features in 58

This release of Chrome had 0 are available behind a flag.

Deprecations and Removals

Deprecation policy

To keep the platform healthy, we sometimes remove APIs from the Web Platform which have run their course. There can be many reasons why we would remove an API, such as:

Some of these changes will have an effect on a very small number of sites. To mitigate issues ahead of time, we try to give developers advanced notice so they can make the required changes to keep their sites running.

Chrome currently has a process for deprecations and removals of API's, essentially:

You can find a list of all deprecated features on chromestatus.com using the deprecated filter and removed features by applying the removed filter. We will also try to summarize some of the changes, reasoning, and migration paths in these posts.

Deprecated features in 58

This release of Chrome had 0 features deprecated.

Removed features in 58

This release of Chrome had 9 features removed.

Deprecate and Remove case-insensitive matching for usemap attribute

"Compatibility caseless" had been applied to usemap attribute matching. The specification was updated so that case-sensitive matching is applied. https://github.com/whatwg/html/commit/6acdb2122298d2bb7bb839c0a61b4e1f9b0f9bc9 A deprecation warning is printed to the console starting in Chrome 57. #

This feature was specified in this Spec.

Resources

Docs: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/img

No linked samples

Deprecate and Remove: setting Event.cancelBubble to false

According to https://github.com/whatwg/dom/issues/211, setting cancelBubble to true is considered as an alias to stopPropagation(), and the spec indicates setting cancelBubble to false should do nothing. #

This feature was specified in this Spec.

Legacy caller for HTMLEmbedElement and HTMLObjectElement

That an interface has a legacy caller means that an instance can be called as a function. This used to be the case for HTMLEmbedElement and HTMLObjectElement but is being removed. Calling will instead throw an exception. This was deprecated in Chrome 57. #

Resources

Docs: https://developer.mozilla.org/en-US/docs/Web/API/HTMLEmbedElementhttps://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement

No linked samples

Remove EME from Unsecure Contexts

Per https://w3c.github.io/webappsec-secure-contexts/, we are deprecating and then removing EME from insecure contexts. EME is a powerful feature that exposes DRM implementations that involve access to persistent unique identifiers, are not open source, and/or run unsandboxed or with privileged access. The risks are increased when exposed via insecure HTTP, because they could be attacked by anyone on the channel. This was deprecated in Chrome 44. #

Resources

Docs: Part of the larger effort to remove powerful features on insecure origins:https://chromium.org/Home/chromium-security/deprecating-powerful-features-on-insecure-originshttps://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement/setMediaKeys

No linked samples

Remove pre-standard ChaCha20-Poly1305 ciphers

In 2013, Chrome 31 deployed new TLS cipher suites based on Prof. Dan Bernstein's ChaCha20 and Poly1305 algorithms. This was later standardized, with small tweaks, at the IETF as RFC 7539 and RFC 7905. We shipped the standardized variant early in 2016 with Chrome 49. We are now removing the pre-standard variants. #

This feature was specified in this Spec.

Support for commonName matching in Certificates

RFC 2818 describes two methods to match a domain name against a certificate - using the available names within the subjectAlternativeName extension, or, in the absence of a SAN extension, falling back to the commonName. The fallback to the commonName was deprecated in RFC 2818 (published in 2000), but support still remains in a number of TLS clients, often incorrectly. #

This feature was specified in this Spec.

Resources

Docs: https://tools.ietf.org/html/rfc2818https://cabforum.org/baseline-requirements-documents/

No linked samples

VTTRegion-related bits of TextTrack

The interface elements regions, addRegion() and removeRegion() have been removed from the WebVTT spec and will be removed from Chrome. The VTTCue.region property was added and the VTTRegion interface was updated to match a late version of the specification. #

This feature was specified in this Spec.

WebAudio: Remove AudioSourceNode interface

Remove the AudioSourceNode interface. This interface is not part of the WebAudio specification, is not constructible, and has no attributes so it basically has no user-accessible functionality. #

This feature was specified in this Spec.

webkitdropzone global attribute

The dropzone global attribute was introduced by the HTML5 drag and drop specification as a declarative method for specifying an HTML element's willingness to be the target of a drag-and-drop operation, the content types that can be dropped onto the element, and the drag-and-drop operation (copy/move/link). No browser has implemented the unprefixed version. Blink and WebKit implement a prefixed form of the attribute, webkitdropzone. We would like to remove the prefixed attribute. #

This feature was specified in this Spec.

Resources

Docs: https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/dropzone

No linked samples