chromium 51 chrome 各个版本发布功能列表(01-57)

chrome 各个版本发布功能列表

webrtc release-notes.md

chromium1 Features:5

  1. CSS Masking

Allows hiding of portions of a visible elements.

  1. CSS text properties

CSS properties used for manipulating text (decoration, line breaking, processing model…)

  1. Canvas

Provides an API to draw 2D graphics

  1. XSL Transformations (XSLT)

XSLT is a declarative language for transforming XML.

  1. postMessage

Safely enables cross-origin communication.

chromium2 Features:1

  1. Message Channels

A messaging system that allows documents to communicate with each other regardless of their source domain, in a way designed to not enable cross-site scripting attacks.

chromium3 Features:0

chromium4 Features:5

  1. HTTP Strict Transport Security (HSTS)

Header to inform the browser to always request a given domain over SSL, reducing MITM attack surface area.

  1. Proprietary CSS reflections

-webkit-box-reflect

  1. Proprietary mask properties

-webkit-mask-* (-webkit-mask-clip)

  1. WebSocket

The WebSocket JavaScript API provides a simple API for bi-directional communication with web servers.

The WebSocket network protocol enables low overhead bi-directional communication with web servers over a persistent TCP connection.

  1. X-Frame-Options

The X-Frame-Options HTTP header field protects pages against clickjacking attacks by allowing sites to opt-out of being embedded in cross-origin (or any) contexts.

chromium5 Features:3

  1. Geolocation

Provides access to device’s physical location. https://bugs.chromium.org/p/chromium/issues/detail?id=769231

  1. Notifications

An API for displaying simple notifications to the user. Chrome does not yet support displaying them from a Web Worker.

  1. Web Storage

Refers to both localStorage and sessionStorage

chromium6 Features:1

  1. EventSource

Also called Server-sent Events, these are push notifications from the server received as DOM events.

chromium7 Features:3

  1. Device Orientation

Provides access to device’s physical orientation

  1. FileReader

The FileReader object lets web applications asynchronously read the contents of files (or raw data buffers) stored on the user’s computer, using File or Blob objects to specify the file or data to read.

  1. HTTP/2 (SPDY)

A fast, open protocol for transporting web content.

chromium8 Features:0

chromium9 Features:5

  1. FileWriter

Synchronous API added in Chrome 9 for Workers

  1. WebGL (Canvas 3D)

3D rendering via the element.

  1. WebP image format support

WebP is an image format that provides lossless and lossy compression for images on the web. WebP lossless images are 26% smaller in size compared to PNGs; lossy is 35% smaller than JPEG.

  1. matchMedia

API for testing if a given media query will apply.

  1. spellcheck attribute

Allows content editable elements to be spell checked

chromium10 Features:2

  1. Form validation

Constraint validation API and interactive form validation UI.

  1. Runtime error reporting: ErrorEvent.

Unhandled exceptions trigger the ‘window.onerror’ callback (or ‘self.onerror’ inside Workers) for centralized handling.

chromium11 Features:1

  1. IndexedDB

An asynchronous client-side storage API offering fast access to large amounts of structured data

chromium12 Features:2

  1. <details>/<summary>

Interactive widget to show/hide content.

  1. Remove support for -webkit-line-box-contain

Feature is not part of formal spec and will be subsumed by upcoming css-line-grid spec in discussion. Only supported by Safari among major browsers. Utilization is low.

chromium13 Features:4

  1. File System API (Chromium)

With the FileSystem API, a web app can create, read, navigate, and write to a sandboxed section of the user’s local file system.

  1. Navigation Timing API

Allows web applications to access timing information related to navigation and elements.

  1. Typed Arrays

Buffers for holding binary data and working with WebGL & Audio API: ArrayBuffer, Float32Array , Int16Array, Uint8Array, etc.)

  1. Web SQL Database

API exposing an SQLite database

chromium14 Features:3

  1. Content Security Policy Level 1

Allows you to create a whitelist of sources of trusted content, and instructs the browser to only execute or render resources from those sources.

  1. Quota Management API

This API can be used to check how much quota an app/origin is using.

  1. a[download] attribute

When used on an , this attribute signifies that the resource it points to should be downloaded by the browser rather than navigating to it.

chromium15 Features:1

  1. Prefixed Fullscreen API

Programmatically instruct content on the page to be presented in the browser’s fullscreen mode. This entry is for the prefixed variants of the API, webkitRequestFullscreen. The status for other browsers is also for their prefixed variants.

chromium16 Features:0

chromium17 Features:0

chromium18 Features:3

  1. GamePad API

Gives JS access to a game controller via USB.

  1. Mutation Observers

Provides notifications when DOM nodes are rearranged or modified.

  1. Touch Events

Touchscreen input API, originally introduced by Apple on iOS

chromium19 Features:3

  1. CSS Filters

Apply (SVG-like) filter effects to arbitrary DOM elements.

  1. CSS calc()

Method of allowing calculated values for length units, i.e. width: calc(100% - 3em)

  1. iframe[sandbox] attribute

Method of running external site pages with reduced privileges (i.e. no JavaScript) in iframes ()

chromium20 Features:5

  1. iframe[seamless] attribute

The seamless attribute is used to embed and in the calling page without scrollbars or borders (e.g. seamlessly)

  1. Element

Shows a list of pre-defined options to suggest to the user when entering an input element.

  1. Blob

Allows you to construct Blobs directly (var blob = new Blob([“1234”], {type: ‘text/plain’})). Blob() constructor also can take ArrayBufferView directly rather than constructing a blob with ArrayBuffer.

  1. Date/time input types

, , , , , and .

  1. iframe[srcdoc] attribute

Gives the content of an iframe as a src context to embed (e.g. ).

chromium21 Features:4

  1. CSS Flexbox

A CSS box model optimized for user interface design. In the flex layout model, the children of a flex container can be laid out in any direction, and can “flex” their sizes, either growing to fill unused space or shrinking to avoid overflowing the parent.

  1. Drag and Drop Directories

Allows dragging and dropping entire folders using HTML5 Drag and Drop. Extends the DataTransferItem with a method to get a FileEntry/DirectoryEntry.

  1. Meta Referrer

Using the referrer metadata attribute, a document can control the behavior of the Referer HTTP header attached to requests that originate from the document.

  1. getUserMedia

Local component of WebRTC

chromium22 Features:0

chromium23 Features:4

  1. Media Source Extensions

Allows appending data to an / element.

  1. Pointer Lock (Mouse Lock)

Gives access to raw mouse movement, locks the target of mouse events to a single element, eliminates limits of how far mouse movement can go in a single direction, and removes the cursor from view. Obvious use cases are for first person or real time strategy games.

  1. Track element

Add subtitles, captions, screen reader descriptions, chapters and other types of timed metadata to video and audio. Chrome currently supports the WebVTT format for track data.

  1. WebRTC

Real-time communication in the browser.

chromium24 Features:2

  1. performance.now()

Enables reliable, high-resolution timing of client-side performance.

The resolution of the timer was adjusted in M91 details are included in: Align performance API timer resolution to cross-origin isolated capability (https://chromestatus.com/features/6497206758539264)

  1. requestAnimationFrame()

Offload animation repainting to browser for optimized performance. You should call this method whenever you’re ready to update your animation onscreen. This will request that your animation function be called before the browser performs the next repaint.

chromium25 Features:4

  1. CSS Gradients

Gradients provide a method to, over a customizable amount of space, transition from one color to another.

  1. Resource Timing API

Allows web applications to access timing information related to HTML elements.

  1. User Timing API

Helps web developers measure the performance of their applications by giving them access to high precision timestamps.

  1. Web Speech API (input)

Enables web developers to incorporate speech recognition into their web pages.

chromium26 Features:1

  1. <template> Element

HTML template element to allow creating fragment of inert HTML as a prototype for stamping out DOM.

chromium27 Features:0

chromium28 Features:1

  1. CSS Conditional Rules

Support for the @supports at-rule and the “window.CSS.supports()” API

chromium29 Features:8

  1. CSS Device Adaptation

The @viewport rule, in combination with media queries, enabled web developers to optimize the layout of sites and apps for different devices with minimal effort.

It generalizes the viewport meta tag to CSS, while being much simpler to understand and without the quirks that exists with the meta tag.

  1. Media Queries: resolution feature

Allows to query the device pixel count per CSS unit

  1. QUIC (HTTP/3)

QUIC is a multiplexed and secure general-purpose transport protocol that provides:

  • Stream multiplexing
  • Stream and connection-level flow control
  • Low-latency connection establishment
  • Connection migration and resilience to NAT rebinding
  • Authenticated and encrypted header and payload
  1. Sending Messages to Extensions

Expose a Chrome-specific API to allow websites to send messages to extensions. Only exposed to websites whitelisted by an installed extension.

  1. TLS 1.2

The latest version of the Transport Layer Security (TLS) protocol. Uses asymmetric cryptography to assure who is communicating, and to exchange a symmetric key. This session key is then used to encrypt data flowing between the parties. This allows for data/message confidentiality, and message authentication codes for message integrity and as a by-product message authentication.

  1. VP9

VP9 is an open and royalty free video compression standard.

  1. XMLHttpRequest timeout

Exposing the XHR timeout property and sending corresponding events such as ontimeout.

  1. Proprietary marquee value

overflow: -webkit-marquee

chromium30 Features:2

  1. DOM3 mouseenter & mouseleave Events

MouseEvents dispatched when a pointing device is moved onto or off of an Element or one of its descendents. Similar to mouseover and mouseout respectively, but are not cancelable and are not dispatched more than one “round-trip” into an Element’s boundary.

  1. imageSmoothingEnabled attribute for CanvasRenderingContext2D

The CanvasRenderingContext2D.imageSmoothingEnabled attribute can be set to change if images are smoothed. It is true by default. On getting the imageSmoothingEnabled property, the last value it was set to, is returned.

chromium31 Features:5

  1. Canvas focus ring

Adds APIs to the canvas 2D context that make it possible to draw a focus ring around a canvas path and notify the operating system of the bounding box of the focused object for accessibility.

  1. CSS object-fit and object-position

CSS properties that control the position and size of replaced content within the content box

  1. DOM3 Wheel Events

Implementation of the standard DOM Level 3 WheelEvent. Currently Blink implements a non standard mousewheel event with a very similar but incompatible API.

  1. Device Motion

Provides access to device’s physical motion.

  1. devicePixelRatio on zoom

Update window.devicePixelRatio on full page zoom so that it accurately portraitists the ratio between css and device pixels.

chromium32 Features:5

  1. Animated WebP

Support for animated WebP images

  1. Canvas context “alpha” attribute

Allow the specification of a 2D canvas with an opaque backing store (alpha: false). Speeds up compositing. Enables LCD text anti-aliasing.

  1. Promises (ES6)

Using V8 Promises.

  1. URL

Expose constructible URL objects that can be manipulated and combined.

  1. Vibration API

This specification defines an API that provides access to the vibration mechanism of the hosting device. Vibration is a form of tactile feedback. Note this feature is only available on Android.

chromium33 Features:6

  1. CSS font-kerning

A CSS property to control text kerning.

  1. Opus in MSE and <video>

Ability to play the open source WebRTC preferred audio codec - Opus in MSE and tags on the for the webM and matroska containers. Please note that we have had Opus support in chromium since M25. This change enables Opus playback on MSE and tags.

  1. Page Visibility API

Provides an API to ask whether the current tab is visible or not. If you, you might want to throttle back action or set an idle state.

  1. VTTCue

The VTTCue interface, part of WebVTT. Previously the members of VTTCue were on the TextTrackCue interface and there was a TextTrackCue constructor, now the VTTCue constructor must be used instead.

  1. Web Speech API (synthesis)

Enables web developers to incorporate speech synthesis into their web pages. Uses whatever the platform provides for synthesis.

Coming in M71, synthesis will have a few small changes.

  1. Exposing the following existing interfaces: SpeechSynthesis, SpeechSynthesisVoice, SpeechSynthesisEvent

  2. Adding a constructor to SpeechSynthesisEvent

  3. Adding and exposing a new interface, SpeechSynthesisErrorEvent.

  4. requestAutocomplete()

Allows a form to be filled out on demand by the browser’s autofill. Particularly for mobile applications, this solves the problem of working with long or even multi-page forms. For merchants, this results in improved conversion rates, sorely needed in mobile purchase scenarios.

chromium34 Features:5

  1. <img srcset>

Enable a responsive images solution by providing the browser multiple resources in varying resolutions for a single image.

  1. CSS font-variant-ligatures

A CSS property to control ligatures in text.

chromium35 Features:5

  1. CSS Blending of background images (mix-blend-mode)

Offers more ways to blend a background image of an element with other background images that are below it and with the element’s background color.

  1. CSS Font Loading

A feature that enables applications to know if a web font is really loaded.

  1. Unprefixed Web Audio API

A high-level JavaScript API for processing and synthesizing audio in web applications

  1. Prefixed Shadow DOM

Enables DOM tree encapsulation. Without it, widgets may inadvertently break pages by using conflicting CSS selectors, class or id names, or JavaScript variables.

  1. Scoped Styles

Boolean attribute for the <style> element (<style scoped>). When present, its styles only apply to the parent element.

chromium36 Features:7

  1. CSS touch-action

New CSS property to enable websites to declaratively state how touches should be handled for purposes of scrolling and zooming.

  1. CSS will-change

Adds a will-change CSS property, that can be used to signal that a particular property is likely to be changed in the future, or that an element’s content is likely to change.

  1. Unprefixed CSS Transforms

Enables changing the position of content in 3D space without disrupting the document’s normal flow.

  1. WOFF 2.0 (improved font compression)

WOFF 2.0 significantly improves font compression. We are seeing average gains of 24% with peaks above 50% in particular for the larger fonts such as those typically used by CJK languages (analysis ran on the whole Google Fonts corpus).

M33: switching to Brotli Compression Algorithm (instead of LZMA).
M36: enabled by default.

  1. WeakMap (ES6)

WeakMaps are key/value maps in which keys are objects.

  1. WeakSet (ES6)

ES6 WeakSets are sets of arbitrary JavaScript objects, that hold on to their keys weakly

  1. Web Animations JavaScript API [element.animate()]

A unified model for supporting animation and synchronization on the Web platform.

chromium37 Features:10

  1. <dialog> Element

An HTML element for a dialog box

  1. CSS “all” shorthand

The all property is a shorthand that resets all CSS properties except direction and unicode-bidi. It only accepts the CSS-wide keywords.

  1. CSS Shapes Module Level 1

CSS Shapes allows one to specify a geometric “shape-outside” for a
float. Content will wrap around the float’s shape-outside, instead of
its rectangular boundary. The shape-outside property can be specified
with a geometric primitive, like an ellipse or a polygon, or by the
pixels of an image’s alpha channel whose values are greater than
shape-image-threshold. A shape-outside’s boundary can be uniformly
expanded with the shape-margin property.

  1. Cross Origin Font Loading Restriction

Aligning with the specification (and other browsers) and blocking cross origin font loading, unless the response include the appropriate CORS headers.

  1. DirectWrite on Windows

Use DirectWrite instead of GDI for text on Windows.

  1. Fractional TouchEvent co-ordinates

Updates co-ordinates returned by TouchEvent objects to include the full precision provided by the underlying platform.

  1. Navigator.hardwareConcurrency

This is a new attribute on the Navigator object.
It returns the number of tasks that can be run efficiently in parallel on the current system under ideal circumstances.

  1. NavigatorLanguage: navigator.languages and languagechange event

navigator.languages will expose the Accept Languages and languageevent (fired on the Window object) will notify of a change in this value. The goal is to allow web applications to handle i18n on the client side, thus allowing offline applications to react to user language changes.

  1. Subpixel font scaling

Allow sub-css-pixel font-sizes and thus smooth font scaling.

  1. Web Crypto API

JavaScript bindings for cryptographic operations

chromium38 Features:11

  1. <picture> Element

Enable a responsive images solution by declaring multiple resources for an image using CSS media queries.

  1. Encoding API

Script API to allow encoding/decoding of strings from binary data. Common scenario: decoding a binary data file fetched via XHR into an ArrayBuffer that contains strings encoded as UTF-8.

  1. File constructor

A programmatic method of constructing File objects, very similar to how Blob objects are built.

  1. JS iterators (i.e. the for-of feature) (ES6)

Iterates over iterable objects (including arrays, array-like objects, iterators and generators), invoking a custom iteration hook with statements to be executed for the value of each distinct property.

  1. Map (ES6)

Map objects are simple key/value maps.

  1. Math functions (ES6)

Math related functions - sign, trunc, sinh, cosh, tanh, asinh, acosh, atanh, log10, log2, hypot, fround, clz32, cbrt, log1p, expm1 (as Math.sign(…), Math.trunc(…) and so on).

  1. Screen Orientation API

Gives ability to read the screen orientation and lock it.

  1. Set (ES6)

Set objects let you store unique values of any type, whether primitive values or object references.

  1. Symbols (ES6)

Allows properties to be added to existing objects without the possibility of interference with the existing properties, unintended visibility, or with other uncoordinated additions by any other code.

  1. Unscopables (ES6)

Unscopables allows properties to be hidden to with statement lookup rules. This is important for adding new properties to existing objects both in JavaScript and in DOM.

  1. SVG (1.1) Fonts

Use the SVG based font format (that non WebKit based browsers never implemented) as a @font-face web font.

chromium39 Features:5

  1. Beacon

This specification defines an interoperable means for site developers to asynchronously transfer small HTTP data from the User Agent to a web server.

Initiated by the navigator.sendBeacon() method, the ‘beacon’ data will be transmitted by the User Agent as soon as possible, but independent of document navigation. The sendBeacon method returns true if the user agent is able to successfully queue the data for transfer. Otherwise it returns false.

  1. Generators (ES6)

A generator is a special type of function that works as a factory for iterators.

  1. Web Animations Javascript API [playback control]

A unified model for supporting animation and synchronization on the Web platform. This feature covers playback control of AnimationPlayer: play(), pause(), reverse(), finish(), currentTime, startTime, playbackRate and playState.

  1. Web Application Manifest

This specification defines a JSON-based manifest, which provides developers with a centralized place to put metadata associated with a web application. This includes, but is not limited to, the web application’s name, links to icons, as well as the preferred URL to open when the user launches the web application. The manifest also allows developers to declare a default orientation for their web application, as well as how the application is to be displayed by the user agent (e.g. in fullscreen).

  1. meta-theme-color

The meta-theme-color is the color of the brand, browser may use it when a distinct color representation is needed.

chromium40 Features:6

  1. Cache API

The Cache API allow authors to fully and conveniently manage their content caches for offline use. An origin can have multiple, named Cache objects which are accessible via workers and document scripts.

  1. Content Security Policy Level 2

An evolution of the Content Security Policy specification, allowing developers to create a whitelist of sources of trusted content, and instructing the browser to only execute or render resources from those sources.

  1. Service Worker

ServiceWorkers (formerly Navigation Controllers) are a new system that provides event-driven scripts that run independent of web pages. They are similar to SharedWorkers except that their lifetime is different and they have access to domain-wide events such as network fetches.

Use cases: offline, reducing perceived page load latency and will eventually power notification/push/sync/… use cases.

  1. WebAudio: PannerNode default behavior

The HRTF panner uses significant memory for the responses and requires a fair amount of processing to implement. For low-end mobile devices, this can be an issue. Since the default panner model is HRTF, the creation of the panner can cause the responses to be loaded.

The default has been changed to equalpower, which doesn’t consume significant memory and is much less intensive in processing power.

  1. minlength attribute

minlength attribute declares a lower bound on the number of characters a user can input.

  1. reportValidity() for form controls

reportValidity() invokes built-in form validation UI programatically.

chromium41 Features:11

  1. Element.computedRole and Element.computedName

Retrieve the computed accessible role and name for the element, if any.

  1. Documentation: Doc 1
    ‘any-pointer’ and ‘any-hover’ Media Queries

Media queries for determining capabilities of a UA’s pointer devices

  1. Blending of HTML and SVG elements

Provides a way to blend an HTML or SVG element with its backdrop.
The CSS properties: mix-blend-mode and isolation.

  1. ES6 numeric literals

Allows binary and octal numeric literals using 0b101 and 0o753 respectively.

  1. Lexical Declarations (ES6)

‘let’ and ‘const’ declarations define variables/constants with block scoping in strict mode.

  1. Template Strings (ES6)

Template strings are string literals allowing embedded expressions.

  1. Virtual viewport pinch-zoom

Pinch to zoom will behave rationally with respect to position:fixed elements. position:fixed elements no longer stick to the visual viewport during a pinch-zoom.

  1. WebAudio: StereoPannerNode

StereoPannerNode is a audio processing node which positions an incoming audio stream in a stereo image using robust equal-power panning algorithm and sample-accurate automation.

Web Audio API specification has been updated to include a new audio node dedicated to equal-power stereo panning.

  1. WebAudio: suspend/resume

Supports suspending and resuming an AudioContext to allow applications to pause the audio device when needed. This reduces CPU usage and power consumption when audio is suspended.

  1. image-rendering: pixelated

“image-rendering: pixelated” indicates that image should be scaled “so that the image appears to be simply composed of very large pixels”, e.g. using nearest-neighbour.

  1. WebAudio: Deprecate Doppler Effect

The W3C Audio Working Group has removed the doppler effect from the PannerNode as part of the rework of the PannerNode. The methods panner.setVelocity() and listener.setVelocity() and the attributes listener.speedOfSound and listener.dopplerFactor are now no-ops and will be removed in Chrome 55, around November 2016.

chromium42 Features:11

  1. Classes (ES6)

Language support for classes.

In 42, shipped in strict mode. In 49, shipped outside of strict mode as well.

  1. ES6 Extended Object Literals

Allows concise methods and property shorthands in object literals

  1. Encrypted Media Extensions (EME)

Defines a common API that may be used to discover, select and interact with Digital Rights Management systems for use with HTMLMediaElement.

  1. Fetch API

Fetch API is a new API for loading resources in web applications. It’s intended to supersede XMLHttpRequest.

Fetch API is already available in ServiceWorker scope. This entry is for announcing its availability in window scope.

  1. ImageData constructor

Instantiate new ImageData objects by way of an object constructor.

  1. Notifications using Service Workers

Web Notifications have an in-page event delivery model by default, which means that notifications cannot reliably outlive the page’s lifetime. Allowing event delivery to be routed to a page’s Service Worker provides a solid solution.

  1. Push API

Push notifications for the web

  1. Web/native app install banners

Chrome 42 for Android will encourage users to add high quality sites they visit frequently to their home screen. In the future it will support the same for native apps.

This entry is for the visual aspect, not the API surface. The Manifest API surface is covered by https://www.chromestatus.com/features/4754986680451072. The event API surface is covered in https://www.chromestatus.com/features/6560913322672128

  1. WebAudio: OfflineAudioContext.startRendering() returns a promise

The startRendering() method for an OfflineAudioContext now returns a promise that is resolved with the rendered audio when rendering is done.

  1. WebAudio: Deprecate setting AudioBufferSourceNode.buffer more than once

Setting AudioBufferSourceNode.buffer more than once is deprecated. A deprecation message is displayed if the buffer attribute is assigned more than once.

  1. showModalDialog

The global showModalDialog() method displays a modal dialog box containing a specified HTML document. This feature has an incredibly high cost in terms of code complexity since it requires us to run an event loop on top of an arbitrary JavaScript stack. It also complicates the web platform by making task dispatch reentrant and hard to reason about.

In Chrome 37 it was disabled and in Chrome 43 it is removed.

chromium43 Features:17

  1. CSS font-size-adjust

The font-size-adjust CSS property specifies that font size should be chosen based on the height of lowercase letters rather than the height of capital letters. It was once dropped since css 2.1, but newly defined in CSS3 font.

  1. Allow JS-triggered copy/cut with a user gesture

execCommand(“copy”) and execCommand(“cut”) should be allowed to modify the system clipboard in the context of a user gesture (the spec uses the language “allowed to show a popup”).

  1. CSSOM Document.elementsFromPoint API

An API on Document for returning the sequence of elements under a point.

  1. Cache API (global scope)

The Cache API allows authors to fully and conveniently manage their content caches for offline use. An origin can have multiple, named Cache objects.

This API is already available in a Service Worker context. This entry is to make it available globally (=> accessible from a document context).

  1. Fetch API: Streaming response body

Addition of the response.body property to the Fetch API. response.body is a ReadableStream from the Streams Standard.

  1. MouseEvent.buttons

The ‘buttons’ property on MouseEvent indicates (for ALL mouse events) which combination of buttons are current down.

  1. Move DOM attributes to prototype chains.

Blink has placed DOM attributes on instances instead of prototypes. However, the Web IDL spec requires that DOM attributes must be placed on prototype chains (except for a few exceptions such as static attributes and [Unforgeable].)

We move DOM attributes on instances to prototype chains following the spec.

  1. Permissions API

The Permissions API allows a web application to be aware of the status of a given permission, to know whether it is granted, denied or if the user will be asked whether the permission should be granted. The purpose of the API is to improve general UX with regards to permissions on the Web, allowing developers to be aware of what is going to happen will enable better flow.

  1. Remove designMode inheritance from ancestors

Change the initial value of document.designMode from “inherit” to “off” and remove support for “inherit”.

  1. Unprefixed CSS Animations

CSS Animations without the -webkit- prefix.

  1. Upgrade insecure requests

We encourage authors to transition their sites and applications away from insecure transport, and onto encrypted and authenticated connections, but mixed content checking causes headaches. This feature allows authors to ask the user agent to transparently upgrade HTTP resources to HTTPS to ease the migration burden.

  1. Web MIDI API

Defines an API supporting the MIDI protocol, enabling web applications to enumerate and select MIDI input and output devices on the client system and send and receive MIDI messages.

  1. WebAudio: Allow developers to close an AudioContext explicitly

An AudioContext can now be explicitly closed, thereby releasing any hardware resources associated with the AudioContext. Without this, developers had to depend on garbage collection of the AudioContext to release hardware resources.

  1. WebAudio: AudioBuffer copyFromChannel and copyToChannel

Support the copyFromChannel and copyToChannel methods on a WebAudio AudioBuffer

  1. WebAudio: Selective Disconnection on AudioNode.disconnect()

Currently AudioNode.disconnect() disconnects all existing connections from output(s) of the AudioNode. This is to support disconnecting only one connection.

There have been numerous requests to support selective disconnection with disconnect() method and Audio WG agreed to change the spec to accommodate the feature request. With this change, it is possible to disconnect a signal path out of multiple connections to AudioNode input or AudioParam.

  1. autocapitalize

Enables web pages to give hint with regards to the autocapitalization behaviour to use on text fields.

  1. overflowchanged event

The overflowchanged event and the OverflowEvent interface have been removed.

chromium44 Features:9

  1. Parsing related_applications from Web Manifest

We will start parsing the related_applications key in the web manifest to display install banners as described in https://www.chromestatus.com/features/4540065577435136

https://github.com/slightlyoff/AppInstallImprovements/blob/master/explainer.md#offering-related-applications (see open pull request on the manifest spec: https://github.com/w3c/manifest/pull/344)

  1. Cache.add()

add() takes a RequestInfo object, fetches it and adds the response object into this Cache object.

  1. Computed Property Names (ES6)

Allows expression for property names in object literals and class literals

  1. Document.scrollingElement

Simple API to indicate whether ‘body’ or ‘documentElement’ is used for scrolling. Used to ease transition to spec-compliant scrolling behavior.

  1. Fetch API: Request.context

Request.context contains the context of the Request, such as “fetch”, “image”, “script”, “frame”, etc.

  1. Notification.data and ServiceWorkerRegistration.getNotifications()

Support for the Notification.data attribute, which allows authors to attach some (immutable) data to a persistent Web Notification they are displaying.

Support for the static ServiceWorkerRegistration.getNotifications() method for getting all existing persistent notifications created by the current origin.

  1. WebAudio: AudioBufferSourceNode.detune

Add ‘detune’ feature to AudioBufferSourceNode for the sample-accurate pitch control of sample playback.

  1. WebAudio: ChannelMergerNode Static Routing

This is to change the behavior of ChannelMergerNode when the input changes dynamically. There have been critical issues with the previous implementation. (See related issues for the detail)

To address these issues, a new proposal for the ChannelMergerNode was made. The proposal effectively makes the channel order in the merger node static after the instantiation.

  1. WebAudio: Disallow setting AudioBufferSourceNode.buffer more than once

Setting AudioBufferSourceNode.buffer again after it has already been set to a non-null buffer is no longer allowed and will generate an exception.

This feature was deprecated and is now being removed

chromium45 Features:33

  1. Audio and video tracks

This adds the ability to get information about multiple audio and video tracks, and switch between them using the AudioTrack.enabled and VideoTrack.selected attributes.

  1. Arrow functions (ES6)

The arrow (=>) takes the place of the function keyword

  1. Battery Status API

Allows access to see the battery level of the device’s battery

  1. CSP2: Exclude ‘blob:’ and ‘filesystem:’ from the ‘self’ source expression.

In CSP2, the 'self' source expression explicitly excludes blob: and filesystem:. This means that developers will need to add those schemes explicitly to their directives if they wish to include content at those URLs.

  1. CSS Motion Path

Motion paths allow authors to animate any graphical object along an author-specified path.

The following CSS properties are defined:
motion-offset
motion-path
motion-rotation
motion (shorthand)

  1. CSS Multi-column (new implementation)

Ship the flow thread based multicol implementation, so that we eventually can bring Blink’s multicol support to a level that matches other engines’ (Presto and Trident).

  1. CSSGroupingRule

The CSSGroupingRule interface represents an at-rule that contains other rules nested inside itself. Per spec, CSSMediaRule and CSSPageRule inherit from CSSGroupingRule.

  1. Document’s “first-party” takes ancestors into account.

I’d like to make a small change to the definition of “first-party” that we use for third-party cookie blocking: we currently look only at the top-level origin to determine the first-party origin for a request. I’d like to start walking the whole ancestor chain of a frame.

  1. ES6 Array methods

Additional static methods on Array and instance methods on Array.prototype: Array.from, Array.of, Array.prototype.copyWithin, Array.prototype.fill, Array.prototype.find, Array.prototype.findIndex

  1. ES6 TypedArray methods

Additional static methods on concrete TypedArray subclasses (Int8Array, Float32Array, etc) and instance methods on their prototypes. Includes most of the existing Array methods, as well as those added in ES6.

  1. Notification.vibrate

The vibrate member of the NotificationOptions dictionary allows web developers to specify a vibration pattern for a notification.

As of Chrome 53, the Notification.vibrate property is exposed as well.

  1. Object.assign()

The Object.assign() method is used to copy the values of all enumerable own properties from one or more source objects to a target object. It will return the target object.

  1. Service Worker: Client.id

Client.id is a GUID allowing the ServiceWorker to track client objects between SW termination & restart.

  1. Service Worker: Client.postMessage() and ServiceWorkerMessageEvent

Before Chrome 45, a Service Worker sending a message via Client.postMessage() results in a MessageEvent fired on the Client’s global scope (e.g., window). Since Chrome 45, the event is a ServiceWorkerMessageEvent fired on navigator.serviceWorker rather than window.

Until Chrome 45, Client.postMessage displayed an “experimental, may change” deprecation warning.

  1. Service Worker: ServiceWorkerContainer.getRegistrations()

Returns all Service Worker registrations for the current origin.

  1. Service Worker: ServiceWorkerRegistration.update()

update() pings the server for an updated version of this Service Worker registration without consulting caches.

  1. Stop sending mouse position updates during scrolling

While scrolling via trackpad or mousewheel, we previously sent mouse position updates every 100ms. On pages with heavy mouse handlers or :hover styles, this could cause significant amounts of scroll jank.

Sending a mouse position update includes updating :hover styles, and dispatching mousemove, mouseover, mouseenter, mouseleave, and mouseout events.

We’re planning to stop sending mouse position updates while scrolling. Instead, we’ll trigger this behavior 100ms after scrolling ends.

  1. Subresource Integrity

Subresource Integrity defines a mechanism by which user agents may verify that a fetched resource has been delivered without unexpected manipulation. In a nutshell, metadata inlined into HTML elements allows the browser to determine whether the resource that was downloaded matches the resource the page’s author expected to download. This implementation covers only the two elements outlined in the spec: <script> and <link rel="stylesheet"> elements.

  1. Touch event timeout on mobile sites

Chrome on Android currently has a touch ACK timeout of 200ms for desktop sites. If the renderer does not respond to a touch event before the timeout delay, the touch sequence is cancelled and any associated gestures are dispatched.

This change restores a touch timeout for sites with a mobile-friendly viewport, but with a timeout delay of 1 second.

  1. Touch.rotationAngle

The rotation angle, in degrees, of the contact area ellipse defined by Touch.radiusX and Touch.radiusY.

  1. Treat file:// URLs as having unique origin

Similar to sandboxed iframes and data: URLs, treat file:// URLs as having unique origin.

  1. Window.{move,resize}{To,By} with non-optional arguments

The functions window.moveTo(), window.moveBy(), window.resizeTo() and window.resizeBy() throw TypeError when called with fewer than two arguments.

  1. beforeinstallprompt event for web/native app install banners

An event for notifying the site that the browser is about to show an install banner, that also gives the site the ability to both suppress the banner, as well as show it later at a time of their choosing.

Related: https://www.chromestatus.com/features/4540065577435136

  1. rtcpMuxPolicy

The rtcpMuxPolicy is used by the application to specify its preferred policy regarding use of RTP/RTCP multiplexing.

When the policy is “negotiate”, the ICE candidates for both RTP and RTCP will be gathered. If the remote-endpoint is capable of multiplexing RTCP, multiplex RTCP on the RTP candidates. If it is not, use both the RTP and RTCP candidates separately.

Note: The removal of this feature is not certain. Please comment on the launch bug #685727 if there is any concern.

  1. Attr child nodes

Attr should not have any child nodes per the DOM spec and should not inherit from Node. This entry covers the child node aspect only.

  1. CSSKeyframesRule.insertRule()

Replaced by CSSKeyframesRule.appendRule()

  1. CSSUnknownRule

The CSSUnknownRule interface represents an at-rule not supported by this user agent.

  1. Document.charset setter

Document.charset is a non-standard IDL attribute supported by all engines except Gecko, with a proposal to standardize it:
https://www.w3.org/Bugs/Public/show_bug.cgi?id=27436

In order to simplify standardization, Document.charset has been made readonly, as a simple alias of Document.characterSet.

  1. NPAPI plug-in support

NPAPI’s 90s-era architecture has become a leading cause of hangs, crashes, security incidents, and code complexity in Chrome. Because of this, Chrome will be phasing out NPAPI support in 2013.

  1. Push API: PushSubscription.subscriptionId

[Deprecated in Chrome 44, removed in Chrome 45]

The Push API previously exposed two properties identifying the subscription: {endpoint, subscriptionId}.

These will be merged to be only a single property: endpoint.

Developers can update their implementation by only considering endpoint if it considers the contents of subscriptionId.

  1. Push API: gcm_user_visible_only deprecation

[Deprecated in Chrome 44, removed in Chrome 45]

We asked developers to indicate their intent to only send push messages that result in user visible UI - Web Notifications, by including the “gcm_user_visible_only” key in their Manifest.

We are now removing this key in favor of the specified solution: userVisibleOnly. The subscribe() method should be updated like this:

serviceWorkerRegistration.pushManager.subscribe({
userVisibleOnly: true
}).then(…)

  1. Range.compareNode() and Range.expand()

These are non-standard extensions to the Range interface introduced in 2006 and 2009 respectively:
https://trac.webkit.org/changeset/48271
https://trac.webkit.org/changeset/16302

  1. Remove filterRes attribute

We plan to remove the filterRes attribute to align with the spec (http://www.w3.org/TR/filter-effects/#element-attrdef-filter-filterres).

chromium46 Features:26

  1. ‘allow-popups-to-escape-sandbox’ sandboxing flag.

This is a new flag for <iframe sandbox="..."> which will allow a sandboxed document to spawn new windows without forcing the sandboxing flags upon them. This will allow, for example, a third-party advertisement to be safely sandboxed without forcing the same restrictions upon a landing page.

  1. API to disable scroll restoration on history navigation

The API allows web applications to explicitly disable user agents default scroll restoration behavior on history navigation through history.scrollRestoration = 'manual'.

  1. Block modal dialogs inside a sandboxed iframe.

Folks in Google’s anti-malvertising team would like to be able to prevent sandboxed frames from popping up confusing, modal messages to users. This includes things like alert(), confirm(), and prompt() (and print() (and maybe authentication dialogs)).

  1. CSS Intrinsic Sizing

Extends the CSS sizing properties with keywords that represent content-based “intrinsic” sizes and context-based “extrinsic” sizes, allowing CSS to more easily describe boxes that fit their content or fit into a particular layout context.

(Note that the “fill” keyword is only shipping prefixed so far, pending CSSWG agreement to unprefix)

  1. CSS.escape()

CSS.escape() serializes a string as a CSS identifier. This enables developers to easily and securely do things like escaping a string for use as part of a selector.

  1. Cache API is restricted to secure origins

Cache API exposed to window and worker contexts (not just service worker) shipped in Chrome 43. As of Chrome 46, the API is restricted to secure origins (HTTPS only), per https://github.com/slightlyoff/ServiceWorker/issues/709

  1. Cache.addAll()

addAll() takes an array of RequestInfo objects, fetches them and adds the response objects into this Cache object.

  1. DOMException constructor

Allow DOMExceptions to be created from script

  1. Event.isTrusted attribute

Event.isTrusted is an attribute that is true when the event was generated by a user action, and false when the event was created or modified by script, or dispatched via dispatchEvent.

  1. Fetch API: Request.redirect

Request.redirect could be “follow”, “error” or “manual”.

If it is “follow”, fetch() API follows the redirect response (HTTP status code = 301,302,303,307,308).
If it is “error”, fetch() API treats the redirect response as an error.
If it is “manual”, fetch() API doesn’t follow the redirect and returns an opaque-redirect filtered response which wraps the redirect response.

  1. HTTP Client Hints: DPR, Width, Viewport-Width

DPR, Width, and Viewport-Width hints enable proactive content negotiation between client and server, enabling automated delivery of optimized assets - e.g. auto-negotiating image DPR resolution, image size, and other optimized assets based on signals such as client’s viewport width.

For more detail, see: https://docs.google.com/document/d/1SnRhnR_oWQ4Rivb7InJ9a_0T2k9CnuhNcMkd9xtLrKY/edit and https://github.com/igrigorik/http-client-hints#use-cases

  1. HTTP Public Key Pinning violating reporting

HTTP Public Key Pinning (HPKP) allows websites to send an HTTP header that pins one or more of the public keys present in the site’s certificate chain. This feature tracks the implementation of HPKP reporting, which allows website owners to receive reports when the browser detects HPKP violations.

  1. Link rel=preconnect (Resource Hints)

Adds support for <link rel="preconnect" href="..."> (and the equivalent HTTP link header) as a hint that the browser should predictively open a connection to the supplied server/protocol for resources that will be needed later in the loading process.

  1. Parsing background_color from Web Application Manifest

The background_color attribute in the JSON Web Application Manifest allows web developers to provide a hint to Chrome indicating the background color of their web application. This color is used as the background of the application while its resources are fetched.

  1. Parsing theme_color from Web Application Manifest

The theme_color attribute in the JSON Web Application Manifest allows web developers to provide a global theme color which can be used throughout their entire website. This color is used for the header in the recents menu of Android.

  1. Performance Timeline APIs for Workers

Performance Timeline APIs (User Timing and Resource Timing) are now available to Web Workers.

  1. PerformanceResourceTiming.workerStart

PerformanceResourceTiming.workerStart attribute allows developers to instrument and measure ServiceWorker startup time.

  1. Service Worker: Allow CORS responses for client requests

When a FetchEvent is for page loading or worker script loading, FetchEvent.respondWith() will accept CORS responses.

  1. Service Worker: ServiceWorkerRegistration.update() returns a promise

update() pings the server for an updated version of this Service Worker registration. This feature was shipped in milestone 45.

In milestone 46, update() returns a promise that resolves with ‘undefined’ if the operation completed successfully or there was no update, and rejects if update failed. If the new worker ran but installation failed, the promise still resolves (same with register()).

  1. Service worker: Clients.matchAll() returns clients in MRU order

Clients.matchAll sorts the clients in most-recently-focused order.

  1. Spread (call and array) (ES6)

Spread calls allow an iterable expression to be spread into function arguments, similar to using Function.prototype.apply.

Spread array allows an array literal to contain spread expressions which spreads the values of the iterator into the array.

  1. Unprefixed Resource Timing API

Resource Timing extensions to the Performance interface without the “webkit” prefix.

  1. WebAudio: Allow disabling normalization in PeriodicWave

createPeriodicWave() takes an optional third parameter that allows enabling or disabling normalization of the waveform that would be produced by a PeriodicWave. The default is to enable normalization, which was the previous behavior.

  1. WebRTC Data Channel buffer monitoring with the “bufferedamountlow” event

This event allows pages to use WebRTC DataChannels for high-throughput applications more efficiently and conveniently, by removing the need to use timer-based polling for output buffer management.

  1. new.target (ES6)

new.target is a “meta-property” available in all functions. It refers to the constructor invoked by ‘new’ (if a construct call is underway) or undefined otherwise.

  1. Fetch API: Deprecate and remove Request.context

Request.context was implemented in Chrome 44 (https://www.chromestatus.com/feature/4699713102151680), but is removed from the spec as a result of discussion (https://github.com/whatwg/fetch/issues/93).

Chrome 45: Added deprecation warning.
Chrome 46: Removed.

chromium47 Features:19

  1. EXT_disjoint_timer_query WebGL extension

This WebGL extension, exposing the underlying OpenGL ES functionality, allows developers to measure the duration of the commands they submit to the graphics processor. This will allow the development of additional tools to help developers make their WebGL code run faster.

  1. Array.prototype.includes

Method to determine whether an array includes a given element.

  1. CSSNamespaceRule

The CSSNamespaceRule interface represents an at-rule for declaring the default namespace and binding namespaces to namespace prefixes.

  1. Cache.matchAll()

matchAll() returns a promise to be resolved with an array of all matched responses in the Cache object.

  1. Fetch API: RequestInit.referrer

This feature enables users to specifying request’s referrer as a construct argument. Note this is different from Request.referrer which was already introduced.

In service workers, a captured request had the service worker’s referrer (i.e. the service worker’s script URL), but with this feature the request keeps the original referrer.

  1. MouseEvent.getModifierState

MouseEvent.getModifierState is unimplemented.

KeyboardEvent.getModifierState is implemented; but the action on the MouseEvent isn’t. We need to be consistent in our APIs this is a simple change to bring matching spec behavior.

http://www.w3.org/TR/DOM-Level-3-Events/#widl-MouseEvent-getModifierState

  1. Navigator.mediaDevices

Navigator.mediaDevices has

  • an enumerateDevices function, which provides the same functionality as MediaStreamTrack.getSources and adds audio output devices to the list, and
  • a devicechange event to notify when the set of devices available have changed.

enumerateDevices is enabled by default, and the devicechange event is behind a flag.

  1. NotificationOptions.requireInteraction, and auto-minimize timeout

Support for the NotificationOptions.requireInteraction property, letting authors hint that a notification should remain readily available until the user clicks or dismisses it.

When omitted, Chrome desktop will start to close* notifications after ~20 seconds (rather than the toast remaining permanently on-screen); Chrome for Android will be unaffected, since the platform requires that notifications are always minimized there.

*Chrome OS only - auto-minimize to the notification center.

  1. Rest parameters (ES6)

Allows representation of an indefinite number of arguments as an array.

  1. Secure Contexts

This specification provides guidelines for user agent implementors and spec authors for implementing features whose properties dictate that they be exposed to the web only within a trustworthy environment.

  1. Service Worker: Change the fetch API request flags (mode, credentials and redirect) for navigation requests.

The flags of request objects which are passed to the service worker’s Fetch Event handler for navigation requests will be changed.

Current:
mode: “no-cors”
credentials: “same-origin”
redirect: “follow” (available since in M46)

From M47:
mode: “same-origin”
credentials: “include”
redirect: “manual”

  1. The Placeholder-shown Pseudo-class: :placeholder-shown

The :placeholder-shown pseudo-class matches an input element that is showing placeholder text.

  1. UIEvent.sourceCapabilities & InputDeviceCapabilities.firesTouchEvents

The InputDeviceCapabilities API provides details about the physical device responsible for generating an event. InputDeviceCapabilities.firesTouchEvents returns whether this device dispatches touch events. All types of UIEvent now have their own sourceCapabilities attribute which returns the InputDeviceCapabilities associated with the physical device responsible for them.

  1. requestIdleCallback

An API which allows posting of tasks which are scheduled during periods when the browser is idle, and are passed a deadline when called which is calculated based on how long the browser expects to remain idle. This enables developers to perform background work on the main event loop, without impacting latency-critical events such as animation and input response.

  1. MediaStream.label, MediaStream.ended and MediaStream.stop()

These parts of the MediaStream API have been removed from the spec.

  1. Remove getUserMedia() from Insecure Contexts

Per https://w3c.github.io/webappsec-secure-contexts/, we are deprecating and then removing getUserMedia() from insecure contexts. getUserMedia() is a powerful feature that allows access to the microphone and camera of the user agent’s machine, which is a powerful privilege escalation for HTTP content injection. This will remove that attack vector by only allowing it over HTTPS.

  1. Remove support for <applet>

The <applet> tag is only used to instantiate the Java plugin. Running the Java plugin requires NPAPI support, but NPAPI support in Blink has already been removed.

Most <applet> support has been removed, though the special parsing rules have been retained for backwards compatibility.

  1. SVG hasExtension() methods

The hasExtension() methods have been removed in SVG2. As implemented in Blink they always returned false and were thus of no use.

  1. SVGSVGElement.pixelUnitToMillimeterX and friends

These were in SVG 1.1 put have been removed:
http://www.w3.org/TR/SVG11/struct.html#InterfaceSVGSVGElement
http://www.w3.org/TR/SVG2/struct.html#InterfaceSVGSVGElement

These properties all return the constant 0.2645833194255829 on all platforms, so they don’t do what their names suggest.

chromium48 Features:25

  1. Indexed DB: Replace DOMError with DOMException

DOMError has been removed from the DOM standard in favor of
DOMException, and the Indexed DB draft spec has been updated
to use DOMException for error attributes.

The error attribute on IDBRequest and IDBTransaction will now
return DOMException instances instead of DOMError instances.
Both types have ‘name’ and ‘message’ properties, so code that
tests properties (e.g. request.error.name) or does logging
(e.g. transaction.error.message) will be unaffected.

  1. CSS Font Loading API - FontFaceSet interface

Update FontFaceSet to confirm the latest spec.
Now, FontFaceSet behaves as setlike <FontFace> with entries(), keys(), values(), and iterator.
(crbug.com/392075)

Also add() and remove() are changed not to throw InvalidModificationError on handling CSS-connected FontFaces.
(crbug.com/510346)

  1. CSS font-feature-settings

This property provides low-level control over OpenType font features. It is intended as a way of providing access to font features that are not widely used but are needed for a particular use case.

Currently available with the -webkit prefix. This is about shipping the unprefixed version AND deprecating the prefix version.

  1. Fetch API: data and blob schemes support

Fetch to data or blob schemes:
fetch(‘data:…’)
fetch(‘blob:…’)

  1. Fix Window’s members’ visibility.

The current behaviors of Blink about name look-up of Window’s members are not conforming to the spec, and they’re different from other browser’s behaviors. Let’s fix them.

  1. Implement more KeyboardEvent/MouseEvent getModifierState() identifiers

Currently only getModifierState only supports Alt, Control, Shift, Meta query modifiers.

Introduce support for the following query modifier fields:
Accel, AltGraph, CapsLock, Fn, NumLock, OS, ScrollLock, Symbol.

This leaves: FnLock, Hyper, Super, SymbolLock specified but not supported. These keys typically are not generated on modern OS and keyboards. Nor does FireFox support them.

  1. IndexedDB getAll() methods

Indexed DB “batched get” APIs and two other methods that have been implemented in FF for some time

  • IDBObjectStore.getAll()
  • IDBObjectStore.getAllKeys()
  • IDBIndex.getAll()
  • IDBIndex.getAllKeys()
  • IDBObjectStore.openKeyCursor()
  • IDBTransaction.objectStoreNames
  1. MediaStreamTrack.remote attribute

This allows Javascript to know whether a WebRTC MediaStreamTrack is from a remote source or a local one.

  1. More correct min-width/height: auto implementation for flex items

The implied minimum size of a flex item (min-width: auto / min-height: auto) will now also work correctly when flex-basis is not auto.

  1. Notification action buttons

Support for the NotificationOptions.actions, Notification.actions and Notification.maxActions attributes, which allow authors to show action buttons alongside a notification.

These allow users to quickly handle the most common tasks for a particular notification, without having to open the originating website.

As of Chrome 53, the Notification.actions property is exposed as well.

  1. ServiceWorkerRegistration.update() does not bypass the browser HTTP cache

Before this feature, update() always bypassed the browser cache. Now, it only does so if the previous update check occurred over 24 hours ago.

  1. Touch and TouchEvent constructors

The constructor creates a Touch/TouchEvent object from an init dictionary like other event types, also able to initialize UIEvent fields. More favorable than the old “document.create… + e.init…” way.

  1. UI Events KeyboardEvent |code| attribute

The KeyboardEvent |code| attribute contains information about the key event that can use used identify the physical key being pressed by the user.

  1. Unprefixed CSS Writing Modes with syntax updates

CSS Writing Modes Level 3 without “webkit” prefix, along with syntax updates to the most recent CR.

As part of the work, a non-standard value “horizontal-bt” is removed from -webkit-writing-mode.

  1. VP9 software encoder/decoder in Chrome for WebRTC

Include a VP9 video codec encoder and decoder in Chrome for use with WebRTC.

  1. WebAudio: Support chaining on AudioNode.connect() and AudioParam automation methods

This is to support ‘method chaining’ on AudioNode.connect() and the automation methods of AudioParam object. The current implementation does not return anything when these methods get executed. It improves the control flow and the readability of Web Audio JS code.

  1. navigator.connection.downlinkMax, wimax, and onchange

Add support for the downlinkMax attribute which provides the maximum theoretical bandwidth that the current connection can support. Also add “wimax” as a connection type. Also adds support for the connection.onchange event. The ontypechange event will be deprecated later.

  1. Deprecate/Remove SVGGraphicsElement.getTransformToElement

Remove the support of SVGGraphicsElement.getTransformToElement

  1. Deprecate/remove support for intrinsic and min-intrinsic

intrinsic and min-intrinsic are webkit/blink-specific keywords for the standard fit-content and min-content keywords, recently unprefixed.

intrinsic and min-intrinsic were deprecated in Chrome 47 and removed in Chrome 48.

  1. HTMLFrameElement.prototype.getSVGDocument()

Per spec the getSVGDocument() method should be only on HTMLEmbedElement, HTMLIFrameElement and HTMLObjectElement.

  1. Remove RC4

RC4 is a 28 year old cipher that has done remarkably well, but it is now the subject of several, significant attacks. The IETF has decided that RC4 is sufficiently bad to warrant a statement that it must no longer be used (RFC 7465). When Chrome makes an HTTPS connection it has an implicit duty to do what it can to ensure that the connection is secure. At this point, the use of RC4 in an HTTPS connection is falling below that bar.

  1. Remove SVG glyph-orientation-horizontal and glyph-orientation-vertical

Remove SVG glyph-orientation-horizontal and glyph-orientation-vertical properties.

CSS Writing Modes evolved since SVG has forked its old specification and add these properties. It now includes better alternatives for these properties, and recommend to deprecate.

Since the usage of these properties are low enough that simply removing them should simplify the work for both browser developers and web developers.

Web developers can now use CSS text-orientation property for SVG text.

  1. Remove darker composite operator

deprecate darker composite operator because Compositing spec [1] doesn’t contain “darker” composite operator.
[1] http://dev.w3.org/fxtf/compositing-1

  1. SVGPathSeg interfaces

The SVGPathSeg interfaces were part of SVG 1.1, but have been removed.

A polyfill is available at https://github.com/progers/pathseg

  1. TextTrackList and TextTrackCueList item methods

Per spec the TextTrackList and TextTrackCueList have anonymous indexed getters, but no item method:
https://html.spec.whatwg.org/#texttracklist
https://html.spec.whatwg.org/#texttrackcuelist

chromium49 Features:34

  1. ‘noopener’ link relation

The ‘noreferrer’ link relation currently governs both referrer policy for a navigation, as well as the ‘opener’ attribute of any newly created browsing context. The ‘noopener’ link relation gives devlopers the ability to control the latter without opting into the former.

  1. Audio Output Devices API

This feature will incorporate a set of JavaScript APIs that let a Web application direct the audio output of a media element to authorized devices other than the system or user agent default.

  1. Background Sync API

An API that extends Service Workers with an onsync event.

  1. CHACHA20_POLY1305 cipher suites for TLS

Chrome 31 deployed a new TLS cipher suite based on Prof. Dan Bernstein’s ChaCha20 and Poly1305 algorithms. They run three times faster than AES-GCM on devices that don’t have AES hardware acceleration, including most Android phones.

These have now made their way through the standardization process. We’ll be deploying the standardized variant in Chrome 49.

  1. CSP: Insecure source expressions match secure URLs.

In the wake of Sniffly, it seems pretty reasonable to prevent folks from locking themselves into insecurity. To that end, Insecure schemes in source expressions now match their secure variants. That is, http: is equivalent to http: https:, and http://a.com to http://a.com https://a.com.

  1. CSS Custom Properties (CSS Variables)

Introduces cascading variables as a new primitive value type that is accepted by all CSS properties, and custom properties for defining them.

  1. Case-insensitive Attribute Selector Matching

An additional modifier (‘i’) for attribute selectors, that allows an author to match an attribute (ASCII) case-insensitively.

  1. Cookie Prefixes

This feature adds a set of restrictions upon the names which may be used for cookies with specific properties. These restrictions enable user agents to smuggle cookie state to the server within the confines of the existing “Cookie” request header syntax, and limits the ways in which cookies may be abused.

In a nutshell: __Secure-* cookies have to have the Secure flag, and __Host-* cookies have to have Path=/, can’t have Domain, and might require Secure (depending on the setter).

  1. Default parameters (ES6)

Allows formal parameters to be initialized with default values if no value (or ‘undefined’) is passed.

  1. Destructuring (ES6)

Destructuring assignment allows extracting data from arrays or objects using a syntax that mirrors array and object literals.

  1. Fetch API: New value “navigate” for Request.mode

Introduce a new value “navigate” for Request.mode of the Fetch API.

“navigate” mode is intended to be used only for navigation.

  1. FetchEvent.clientId attribute

A read-only attribute that indicates the id of the Client object that initiated this fetch request. For a navigation request and worker (dedicated worker and shared worker) script fetch, this attribute returns null.

  1. HTMLMediaElement.disableRemotePlayback

This attribute allows websites to tell the UA that they do not wish for a media element to be played remotely. The UA will prevent the element from being played remotely and will not show any UI advertising remote playback.

  1. HTTP Client Hints: Save-Data

The “Save-Data” header field is a boolean that, in requests, indicates client’s explicit opt-in for reduced data usage, due to high transfer costs, slow connection speeds, or other reasons. When communicated to origins, it allows them to deliver alternate content honoring such preference - e.g. smaller image and video resources, alternate “light mode” markup, etc.

  1. High Resolution Time Stamp for Events

Change Event.timeStamp to be a DOMHighResTimeStamp which is a high resolution monotonic time with microseconds resolution instead DOMTimeStamp which is an epoch time with millisecond resolution. For input events, the timestamp value will represent the underlying OS timestamp for the event. High resolution monotonic timestamp for input events enables new functionality such as accurate measurement of pointer velocity, simple input latency measurements, and etc.

  1. MediaRecorder

Encode audio and video streams in the browser.

  1. Presentation API: PresentationConnection.close()

Add support for close() method in Presentation API’s PresentationConnection interface. This method allows closing a connection without terminating the session. This is in addition of terminate() that is already available.

  1. Promise rejection tracking events

Introduces a pair of events on the global objects, unhandledrejection and rejectionhandled, for tracking promise rejections.

  1. Proxies (ES6)

Proxies are objects for which the programmer has to define the semantics in JavaScript.

  1. Reflect (ES6)

Improved imperative methods for invoking, examining or modifying values at runtime.

  1. Service Worker: WindowClient.navigate()

The method can instruct a controlled window client to navigate to a different url.

  1. Sloppy mode block bindings (let, class, const, function) (ES6)

Enable ES6-style block-scoped bindings including let and class in sloppy mode, and modify semantics of const and function to operate according to ES6 in sloppy mode.

  1. Symbol.toStringTag (ES6)

Using Symbol.toStringTag, user-defined types can return customized output when passed to Object.prototype.toString (either directly or as a result of string coercion) by storing a descriptive string in a Symbol.toStringTag-keyed property.

  1. URLSearchParams

The URLSearchParams interface allows developers to (shock!) manipulate the search params of a URL. It also provides a mechanism to POST data via fetch() with a urlencoded body vs. the multipart body that FormData produces.

  1. WebAudio: Add IIRFilterNode

Add a new node, IIRFilterNode, that implements a general IIR filter. The coefficients are fixed at creation and not changeable with no automation functions allowed.

  1. WebAudio: OfflineAudioContext.suspend() and resume()

Adds suspend() and resume() feature in OfflineAudioContext to support the synchronous graph manipulation with the render block precision (k-rate) in the non-realtime audio rendering.

  1. WebAudio: decodeAudioData returns a Promise

AudioContext.decodeAudioData returns a Promise <AudioBuffer> that is resolved when decoding the audio data is finished. This is in addition to the existing callbacks, which are now optional.

  1. WebRTC API for choosing key pair algorithm (RSA, ECDSA) for certificates used in DTLS handshake

A WebRTC JavaScript API is added to control the key pair algorithm (RSA, ECDSA) to use for the self-signed certificates generated when DTLS is used for peerconnections.

Changes to API surface: RTCCertificate class added, RTCPeerConnection.generateCertificate static method added, RTCConfiguration.certificates (sequence <RTCCertificate> ) member added.

This feature was behind a flag starting in Chrome 48 and Opera 35. Earlier, this feature was erroneously marked as shipping in M52

  1. addEventListener/removeEventListener EventListenerOptions API

Add an additional API to addEventListener/removeEventListener which takes EventListenerOptions dictionary.

void [add|remove]EventListener(DOMString type, EventListener listener, EventListenerOptions options);

Currently other platforms (Gecko) add additional booleans to the argument list to modify the behavior of the added event listeners. We’d like to turn this into a dictionary (EventListenerOptions) so that is a more flexible API for future work.

  1. addEventListener/removeEventListener non-optional arguments

For a very long time, the first two arguments (type and listener) of addEventListener and removeEventListener have been optional, where they are non-optional in the spec and other browsers. This will change, so that calling these methods with zero or one argument will start to throw exceptions.

  1. Remove Non-standard getComputedStyle(e).css* behaviour

getComputedStyle(e).css* (except for .cssFloat) is non-standard behaviour that only Blink and WebKit support. In all cases it is aliased by getComputedStyle(e).*. We are proposing to deprecate and remove this functionality in an upcoming release.

  1. Deprecate & Remove webkitMovementX/Y

Remove prefixed version of MouseEvent.webkitMovementX/Y leaving Pointer Lock specification version: MouseEvent.movementX/Y.

  1. Navigator.getStorageUpdates()

The getStorageUpdates() method for Navigator is no longer in the spec, and is a no-op.

  1. Intervention: WebFonts use adaptive timeouts to take fallback fonts

Originally, Blink use fallback fonts if the font loading isn’t finished in 3 seconds. But this timeout value wasn’t defined in any spec.

Blink changes this timeout adaptively to improve performance on slow connections.

If font-display feature is enabled, this change happens only if ‘auto’ is specified to follow the font-display spec. Otherwise, it happens always.

The definition of slow connection would be changed in the field trial.

chromium50 Features:33

  1. Symbol.hasInstance (ES6)

Symbol.hasInstance enables customizing the behavior of the ‘instanceof’ operator.

  1. Accept-encoding: br on HTTPS connection

Brotli (shortname “br”) is used in WOFF 2.0 web fonts with great success.

This is about making it available as an HTTP content-encoding method (e.g. Accept-Encoding: br).

Advantages of Brotli over gzip:

  • significantly better compression density
  • comparable decompression speed
  1. Access relative and absolute orientation sensors from Chrome for Android for Virtual and Augmented Reality

Summarized this feature includes the following changes/additions:

  • make ‘deviceorientation’ relative by default
    – now compatible with Safari on iOS,
    – better usability (no drift) for VR applications,
    – not reliant on magnetometer hence no interference in the presence of magnetic fields.
  • add dedicated ‘deviceorientationabsolute’ event for AR applications.
  1. CSS column-fill property

column-fill is the one missing CSS property from the multicol spec (not counting break-after, break-before or break-inside, which really belong in a more generic spec for fragmentation). This property is used to tell the engine whether columns should be balanced or not. If they are balanced, each column gets similar amounts of content inside. If they are not balanced, each column will be filled to the height of the multicol container, until we run out of content.

  1. DOMTokenList validation

DOMTokenList has a “supported tokens” concept which will enable feature detection of things like sandbox flags and link relations.

  1. FormData methods for inspection and modification

The FormData object allows pages to programmatically construct a list of key/value entries that can be submitted via XHR just like an HTML form. Previously, the object was write-only via a single append() method.

The spec was fleshed out to add has(), get(), getAll(), delete(), set(), entries(), keys(), values(), forEach() and Symbol.iterator() methods to allow inspection, iteration and modification.

  1. HTMLCanvasElement toBlob

Creates a Blob object representing a file containing the image in the canvas, and invokes a callback with a handle to that object.

  1. HTMLMediaElement.play() returns a promise

This is allowing a simpler flow to know whether playback started or whether it failed. It also allows the UA to reject the promise if playback is not allowed in the current context, solving issues websites have to detect whether autoplay restrictions blocked the playback.

  1. ImageBitmap

An ImageBitmap object represents a bitmap image that can be painted to a canvas without undue latency. An ImageBitmap object can be obtained from a variety of different objects, using the createImageBitmap() method. ImageBitmap provides an asynchronous and resource efficient pathway to prepare textures for rendering in WebGL.

  1. Link rel=preload

Defines the “preload” keyword that may be used with link elements or Link header. This keyword provides a declarative fetch primitive that initiates an early fetch and separates fetching from resource execution.

  1. Media Source Extensions - SourceBuffer.mode attribute and ‘sequence’ AppendMode support

Add ‘mode’ attribute to SourceBuffer, and support the ability to use and switch among ‘sequence’ and ‘segments’ appendMode.
‘segments’ is the default (and current) behavior. ‘sequence’ enables web developers to simplify some types of media streaming apps that use Media Source Extensions (MSE).
‘sequence’ appendMode allows more flexibility to maintain a gap-free buffered media timeline for web apps.

  1. Merge DOMSettableTokenList into DOMTokenList

Merge DOMSettableTokenList into DOMTokenList in order to simplify spec and implementation.

  1. Notification action icons

On some platforms the button rendered for a NotificationAction can display an icon. This change adds an optional icon url for notification actions.

  1. Notification custom timestamps

By default, Web Notifications on Android display the time at which they were created in their top-right corner.

However, this is not always appropriate. For example, when the device was offline the event could have happened in the past, or the notification could be shown for an upcoming meeting.

The timestamp property enables developers to provide the time.

Note that we don’t visually surface the timestamp on desktop right now, but do use it to affect notification ordering.

  1. Notification notificationclose event

Fire a notificationclose event when a notification has been closed by the user in the registered Service Worker.

  1. Notification renotify preference flag

Allows a developer to specify whether a notification should play sound, light, and vibrate alerts again when the notification replaces another notification which is currently displayed.

  1. Presentation API: implement PresentationConnection.on{connect,close,terminate} and deprecate onstatechange

Deprecate PresentationConnection.onstatechange and implement explicit state transition events onconnect, onclose, onterminate.

Implement PresentationConnectionCloseEvent for onclose.

This allows us to expose a PresentationConnectionCloseReason for clients listening for onclose.

  1. Push API: Payloads

The ability to include payloads with messages send using the Push API. Message payloads must be encrypted.

  1. RegExp @@match, @@search, @@replace, @@split (ES6)

Support well-known symbols to enhance the Regex capabilities

  1. Sequential focus navigation starting point

The feature ‘sequential focus navigation starting point’ defines where we start to search for focusable area for sequential focus navigation (TAB or Shift-TAB) when there is no focused area.

  1. Web Animations JavaScript API [level 1 interop part 1]

A unified model for supporting animation and synchronization on the Web platform. This feature covers bug and interop fixes to bring Chrome in line with the spec: Cancel events; Animation.id; pause() moves from idle to the paused state; deprecate dashed-names as keys in keyframes.

  1. WebAudio: Biquad filters run at a-rate

Automations for the BiquadFilter node will run at a-rate (updated every frame) instead of the current k-rate (updated every rendering quantum of 128 frames)

  1. X25519 for TLS

Curve25519, designed by Prof. Dan Bernstein, is one of the two curves selected by the CFRG for recommendation. When compared to P-256, the most commonly used curve in TLS today, it admits simpler, faster implementations that are more naturally resistant to side-channels.

In Chrome 50, we will be adding support for X25519, the Diffie-Hellman primitive over curve25519, to TLS.

  1. Deprecate and Remove: -webkit-background-composite

Removing -webkit-background-composite as the property is non-standard and supported only by WebKit and Blink.

  1. Deprecate and remove some nonstandard uses of RTCPeerConnection legacy methods.

The latest version of the WebRTC spec introduces new promise-based methods for the RTCPeerConnection interface while keeping support for legacy callback-based methods.

Some nonstandard uses of the legacy methods prevent the implementation of the new promise-based methods due to overloading conflicts and they are now deprecated. More specifically, calling createOffer() and createAnswer() without providing a failure callback (mandatory in the spec, but optional in Chromium) is now deprecated.

  1. Deprecate/remove <link rel=subresource>

Remove support for the “subresource” rel of HTMLLinkElement, as it is not useful, proprietary, and buggy.

  1. Document.defaultCharset

The defaultCharset attribute on the Document interface is non-standard and will be removed.

  1. KeyboardEvent.prototype.keyLocation

The keyLocation attribute allows disambiguating between keys that are on multiple places on a keyboard, like numbers and Enter. It is an alias of the location attribute, which is the more widely supported and standardized form. The keyLocation attribute will be removed.

  1. Object.observe()

Observe changes to JS objects.

  1. Remove geolocation from Insecure Contexts

Per https://w3c.github.io/webappsec-secure-contexts/, we are deprecating and then removing geolocation from insecure contexts. Geolocation is a powerful feature that allows access to the user’s precise location, which is a powerful privilege escalation for HTTP content injection. This will remove that attack vector by only allowing it over HTTPS.

  1. Remove insecure TLS version fallback

TLS has a version negotiation mechanism to securely introduce new versions without breaking compatibility. Yet buggy servers implemented this wrong in the past, so browsers were forced to add (non-standard) insecure fallbacks to work around this. Unlike TLS’s actual version negotiation, the fallback is insecure. Network attackers can downgrade to weaker versions, despite both client and server supporting newer, more secure versions. Note that this does not remove TLS 1.0 and TLS 1.1.

  1. SVGElement.offset(Parent|Top|Left|Width|Height)

These attributes should only be supported on HTMLElement, but have been supported on all Elements in WebKit and Blink. getBoundingClientRect() can typically be used as a replacement.

  1. XMLHttpRequestProgressEvent (position and totalSize)

The XMLHttpRequestProgressEvent interface will be removed, together with the attributes position and totalSize. Instead the ProgressEvent interface will be used, and the attributes loaded and total should be used instead.

chromium51 Features:34

  1. Clients.get(id)

A method that gets a service worker’s Client object matching a given id and returns a promise that resolves with it.

  1. ‘SameSite’ cookie attribute

Same-site cookies (née “First-Party-Only” (née “First-Party”)) allow servers to mitigate the risk of CSRF and information leakage attacks by asserting that a particular cookie should only be sent with requests initiated from the same registrable domain.

  1. AES_256_GCM for TLS.

Historically, TLS used AES ciphers based on a flawed CBC-mode-based construction. These ciphers are fragile and very difficult to implement securely. TLS 1.2 added better ciphers based on AES-GCM. We current support AES_128_GCM, but many servers order by key size above all else, placing the legacy AES_256_CBC above our preferred AES_128_GCM. To simplify server configuration and negotiate modern ciphers with more existing servers, we’ll be adding AES_256_GCM as well.

  1. Array subclassing and Symbol.species support

ES2015 changes the semantics of Arrays and certain other classes to create subclass instances from certain methods, and allow a new interception point, Symbol.species, to control whether it’s actually the subclass or another class which is instantiated. For example, Array.prototype.map constructs instances of the subclass as its output, with the option to customize this by changing Symbol.species

  1. Asynchronous Blob Construction

Large blobs previously blocked the renderer while transferring data to the browser. This is now asynchronous, which speeds up blob construction. This is the first part of the plan to allow blob data to be saved on disk, which removes the 500MB limit on blob storage.

  1. CSS border-image: respect border style

Blink will begin to require a border style in order to paint border images. This has always been required by the spec, but has not been enforced. In order to not be affected by this change, add e.g. ‘border-style:solid’ where border-image is used.

  1. Correct handling of percentages in children of flex items

Certain flex items should be considered to have definite sizes (see spec URL), and therefore if a child element of a flex item uses percentage sizes, they should work.

  1. Credential Management API

The API provides a programmatic interface to the browser’s credential manager. In short, an origin can request a user’s credentials to sign them in, or can ask the browser to save credentials on the user’s behalf. Both of these requests are user-mediated.

  1. ES2015 RegExp subclassing semantics

This feature allows RegExp subclasses to override RegExp.prototype.exec and flags to change the semantics of higher-level functionality, such as String.prototype.replace. Previous JavaScript versions always used the original value of exec from replace. This feature makes it easier to implement new RegExp subclasses by changing a single core piece, without duplicating the higher level integration logic.

  1. ExtendableMessageEvent on ServiceWorkerGlobalScope

ServiceWorker.postMessage() now results in an ExtendableMessageEvent fired on ServiceWorkerGlobalScope as a ‘message’ event. ExtendableMessageEvent.waitUntil() extends its lifetime until a passed Promise is settled. Before this change, postMessage() resulted in a MessageEvent fired on the global scope.

  1. Function “name” property (ES6)

In ECMAScript 2015, the “name” property on anonymous Function objects is sometimes set based on the syntactic position of the function (or class) expression. For example:

var x = function() { };
x.name === ‘x’

  1. Intersection Observer

The Intersection Observer API can be used to asynchronously observe changes in the intersection of a target Element with an ancestor element (for infinite scrolling lists) or the top-level document’s viewport (for ‘viewability’ tracking).

  1. Iterable Array-like DOM interfaces

Adds Symbol.iterator to any DOM interface containing an indexed property getter, and a “length” property, such as HTMLAllCollection, FileList or MediaList.

This enables their use in ECMAScript 6 for-of loops.

  1. Iterable NodeList

Add Symbol.iterator method to NodeList, as well as methods keys(), values(), entries() and forEach().

This will allow NodeList to be traversed via ES6 iteration statements:

for (let node of document.querySelectorAll('.my-class') { ... }

… or via

document.querySelectorAll('.my-class').forEach(node => { ... }
  1. Media Capture from Canvas

“Media Capture from DOM Elements” document by W3C defines captureStream() method that allows the capture of the <canvas> element in the form of a MediaStream. We want to implement the necessary Blink and Chromium sections that would create this stream by accessing the canvas output according to the given frame rate constraints.

  1. Non-standard contenteditable=plaintext-only limits white-space CSS property

Blink supports plaintext-only editing mode by contenteditable=plaintext-only and -webkit-user-modify:read-write-plaintext-only. This is a non-standard feature inherited from WebKit.

An element with plaintext-only editing silently changes white-space CSS property:
normal to pre-wrap, nowrap to pre, pre-line to pre-wrap,

in order to
insert \n by typing Enter key instead of <br>, and
insert a space character by typing a space key instead of  

  1. Origin Trials Framework

Implement a framework for exposing experimental features in the browser, but only to specific/registered origins, for limited duration and subject to global usage caps.

  1. Passive event listeners

Expose “passive” boolean in the EventListenerOptions dictionary.

Implement the behaviour with respect to dispatching passive EventListeners so that calling preventDefault inside executing the passive registered callback only generates a warning to the console. Can be used to dramatically improve scrolling performance.

  1. Presentation API

Gives ability to access external presentation-type displays and use them for presenting web content.

  1. RTCPeerConnection promise-based methods

Add promise-based versions of RTCPeerConnection methods: setLocalDescription, setRemoteDescription, addIceCandidate, createOffer and createAnswer.

To be done in 2 steps. First, setLocalDescription, setRemoteDescription and addIceCandidate (anticipated in M50). The new versions of these don’t have any overloading issues that can cause problems to existing code. For createOffer and createAnswer the overloading issues will be solved before adding the promised-based versions (anticipated in M51).

  1. Referrer Policy - HTML referrerpolicy attribute

Support for the HTML referrerpolicy attribute on elements: <a>, <area>, <img>, <iframe> (and possibly others) allowing authors to set a Referrer-Policy for a single request associated with the HTML element referencing a sub-resource. More details are disclosed in the spec.

  1. ReferrerPolicy: HTMLLinkElement referrerpolicy attribute

Support for the HTML referrerpolicy attribute on < link> elements allowing authors to set a Referrer-Policy for a single request associated with the HTML element referencing a sub-resource. More details are disclosed in the spec.

  1. Remove propagation of mouse wheel events to parent iframe.

When an iframe does not handle a mouse wheel event it is currently dispatched to the parent iframe.

Mouse wheel events are unique in this dispatching aspect and other vendors FireFox and Microsoft both don’t dispatch the event to the parent iframe. This request is to make Chrome match FF and Edge.

Some public discussion has happened on Fireכox’s bug where a web developer asked Mozilla to implement similar behavior to chrome.

  1. Remove: OSX-specific appearances of <meter>

Remove the following -webkit-appearance values:
-webkit-appearance: continuous-capacity-level-indicator
-webkit-appearance: discrete-capacity-level-indicator
-webkit-appearance: relevancy-level-indicator
-webkit-appearance: rating-level-indicator

  1. UIEvents KeyboardEvent |key| attribute

The KeyboardEvent |key| attribute contains information about the character being generated by the key event.

  1. URL.searchParams readonly attribute

Access the query portion of a URL by way of a URLSearchParams object.

  1. Web Animations JavaScript API [level 1 interop part 2]

A unified model for supporting animation and synchronization on the Web platform. This feature covers bug and interop fixes to bring Chrome in line with the spec: lists of values in keyframes; remove dashed-names as keys in keyframes.

  1. WebAudio: OfflineAudioContext.length attribute

Add a length attribute to an OfflineAudioContext that indicates the length (in frames) that the offline context will render.

  1. Deprecate DHE-based ciphers

Last year, we raised the minimum TLS Diffie-Hellman group size from 512-bit to 1024-bit. As mentioned then, 1024-bit is insufficient for the long-term. However, metrics report that around 95% of DHE connections seen by Chrome use 1024-bit DHE. This, compounded with how DHE is negotiated in TLS, makes it difficult to move past 1024-bit. Servers should upgrade to ECDHE if available. Otherwise, ensure a plain-RSA cipher suite is enabled.

  1. Deprecate and remove: ‘results’ attribute for <input type=search>

In Blink, ‘results’ attribute just adds a magnifier icon to an INPUT field. It’s a cosmetic feature.

In desktop Safari, it controls how many submitted queries are shown in a popup opened by clicking the magnifier icon.

This is a WebKit-extension, and it seems no one tried to standardize it.

  1. Service Worker: remove URL.createObjectURL and URL.revokeObjectURL

Per FileAPI:
https://w3c.github.io/FileAPI/#creating-revoking

change: https://github.com/w3c/FileAPI/commit/b9c2275df53cf3a808f1f272f3d6134d1b920549

URL.createObjectURL and URL.revokeObjectURL should not be exposed in Service Workers.

  1. Custom messages in onbeforeunload dialogs

A window’s onbeforeunload property may be set to a function that returns a string. If the function returns a string, then before unloading the page, a dialog is shown to have the user confirm that they indeed want to navigate away.

The string provided by the function will no longer be shown in the dialog. Rather, a generic string not under the control of the webpage will be shown.

  1. Deprecate and remove SPDY/3.1

SPDY/3.1 is the experimental application layer protocol that provides performance improvements over HTTP/1.1 by, for example, connection multiplexing and server push. SPDY/3.1 is superseded by HTTP/2, which was published as an RFC last May.

  1. Deprecate and remove TLS Next Protocol Negotiation

NPN was the TLS extension used to negotiate SPDY (and, in transition, HTTP/2). During the standardization process, NPN was replaced with ALPN, published as RFC 7301 in July 2014. We intend to remove NPN at the same time as the SPDY removal.

chromium52 Features:32

  1. -webkit-appearance:none for METER element

Web authors had no way to completely disable UA rendering of METER element, and were unable to render them with pure CSS.

This feature is to implement the standard appearance:none behavior for METER element as -webkit-appearance:none.
-webkit-appearance:none removes UA rendring at all, and renders the content of <meter> element.

  1. Alternative Services

Alternative services allow an origin serving an http:// or https:// resource to nominate additional (protocol, host, port) tuples that the client can choose to request the resource from instead of the origin when making subsequent requests. This can be used, for example, as a protocol upgrade mechanism, for connection pooling, or for load balancing.

  1. CSP3: The ‘strict-dynamic’ source expression.

The ‘strict-dynamic’ source expression allows script loaded via nonce- or hash-based whitelists to load other script, simplifying the requirements for deployment, and (hopefully!) making it more likely that CSP can reach more sites.

  1. CSS Containment

A primitive for isolating style, layout, and paint. This allows authors to explicitly opt into a set of restrictions that enables user agent optimizations.

  1. CSS Flexbox: New behavior for absolute-positioned children

A previous version of the Flexbox spec set the static position of abspos children as if they were a 0x0 flex item. However, the latest version of the spec takes them fully out of flow and sets the static position based on align and justify properties.

(The static position is used when there are no top: or left: or related properties used to position the absolute-positioned element. See the sample below.)

  1. Exponentiation Operator (** / **=)

Provides an arithmetic operator equivalent of Math.pow(), in which the lefthand-side expression serves as the base value, and the righthand-side expression serves as the exponent.

  1. Fetch API: Response construction with ReadableStream

Developers can now construct their own ReadableStream instances, and use one as a body for constructing a Response object. It enables streaming composed body data from a ServiceWorker to a page controlled by it.

  1. Fetch API: referrer policy

This feature enables users to get / set a Request’s referrer policy which affect’s the “Referer” HTTP header.

  1. Filters in 2D canvas

Add a string attribute called ‘filter’ to CanvasRenderingContext2D to apply effects to primitives drawn to the canvas.

The attributes is parsed the same way as CSS filters.

  1. H.264 software encoder/decoder in Chrome for WebRTC

Include a H.264 video codec encoder and decoder in Chrome for use with WebRTC. At IETF in late november 2014, a compromise was reached with the main contributors to WebRTC to ship both VP8 and H.264. This launch is to follow up in this public commitment.

The plan is to use the OpenH264 (same lib as Firefox uses) for encoding and FFmpeg (which is already used elsewhere in Chrome) for decoding.

  1. HTMLMediaElement.srcObject attribute

The srcObject attribute allows associating a MediaStream to a media element using a simple assignment.
Previously, achieving this required first obtaining a URL associated to the MediaStream, and then associating this URL to the media element.

  1. IDBKeyRange.includes()

Test whether or not a key exists within the bounds of an IDBKeyRange.

  1. ImageBitmapOptions

An ImageBitmapOptions is a dictionary object passed to the createImageBitmap(), such that an ImageBitmap can be created with specific format, for example, premultiplyAlpha = false.

  1. Invalid <track kind> values behave like “metadata”, not “subtitles”

Invalid values for <track kind> are currently treated as “subtitles”. This means that any new values will be treated as subtitles by old UAs. Instead use “metadata” as the “invalid value default”, to avoid UAs showing <track>s with unrecognized values.

  1. Node.isConnected

The isConnected attribute’s getter returns true, if context object is in a shadow-including document, and false otherwise.

  1. Pause event loop during modal dialogs

When using alert(), confirm() or onbeforeunload, Chromium’s old behavior was to block JS waiting for the result, but allows all declarative animations to continue. This change is to make all main-thread tasks (such as <marquee> and CSS 2d animations) also pause during this interval.

  1. Performance Observer

Used to observe the Performance Timeline (http://w3c.github.io/performance-timeline) and be notified of new performance entries as they are recorded by the user agent

  1. Push subscription restrictions, Web Push protocol

Supporting server authentication and subscription restrictions from the following IETF draft, that will allow developers to provide a public key when subscribing for push upon which Chrome will return a Web Push protocol-compatible endpoint.

https://tools.ietf.org/html/draft-thomson-webpush-vapid-02

This will enable us to move away from our current GCM implementation requirements.

  1. Streams API

APIs for creating, composing, and consuming streams of data, that map efficiently to low-level I/O primitives, and allow easy composition with built-in backpressure and queuing.

  1. Stricter user gestures for touch

Don’t allow opening popups (and other sensitive operations) on touch events which don’t correspond to a tap from inside of cross-origin iframes (Chrome 52).

  1. The ‘SecureContext’ WebIDL attribute.

The ‘SecureContext’ WebIDL attribute controls the exposure of a given interface, method, attribute, etc. If present, it ensures that the given item will be exposed only in a “Secure Context”, as defined by https://w3c.github.io/webappsec-secure-contexts/

  1. WebAudio: AudioParams include min/max attributes to specify the nominal range

All AudioParams have a readonly min and max attribute to specify the minimum and maximum value the AudioParam can have. The value is clamped to lie in this range. This allows easy introspection for the developer to determine the valid ranges for a parameter.

  1. WebAudio: Add Automation Support to PannerNode and AudioListener

Automation methods for the position and orientation coordinates of PannerNode and the position, up, and forward vectors of the AudioListener are added. This allows smooth changes in the coordinates via AudioParam methods.

This effectively undeprecates the PannerNode and AudioListener. The old methods such as setPosition, setOrientation, etc., are retained, but deprecated because they have obvious equivalents with just setting the individual coordinate values.

  1. WebAudio: DynamicsCompressor.reduction is a float not AudioParam

Chrome implements the reduction attribute for a DynamicsCompressorNode as an AudioParam. The WebAudio spec says it should be a readonly float.

Change Chrome to implement the specification.

  1. WebRTC: Storing RTCCertificate in IndexedDB

RTCCertificates are self-signed certificates used in the DTLS handshake for when setting up a connection with an RTCPeerConnection. This feature allows RTCCertificates to be persisted to storage by an application by implementing the structured clone algorithm. This means RTCCertificates can be saved and loaded from an IndexedDB database, saving the cost of generating new certificates for new sessions.

  1. addEventListener AddEventListenerOptions API

EventListenerOptions API was added in https://www.chromestatus.com/features/5718574840676352

The spec was revised to add
AddEventListenerOptions which is a dictionary only for addEventListener(…) so that fields could be added that did not make up the matching key.

This change is to move the add the AddEventListenerOptions dictionary definition, change the API and move the ‘passive’ field from EventListenerOptions to AddEventListenerOptions

  1. font-variant-caps

Space separated CSS value keywords for activating OpenType features related to small-caps, all-small-caps, etc.

Using the CSS keywords for feature selection is at candidate recommendation status in the CSS Fonts Module level 3 and is the spec recommended way to activate common features.

Signals from content developers and font foundries indicate that the CSS font-variant-* value keywords are easier to work with and less cryptic than font-feature settings.

  1. font-variant-numeric

Space separated CSS value keywords for activating OpenType features related to numeric forms.
Using the CSS keywords for feature selection is at candidate recommendation status in the CSS Fonts Module level 3 and is the spec recommended way to activate common features. Signals from content developers and font foundries indicate that the CSS font-variant-* value keywords are easier to work with and less cryptic than font-feature settings.

  1. Deprecate and remove: WebKit legacy window.postMessage() overload

WebKit/Blink supports three overloads of window.postMessage(): “postMessage(message, targetOrigin)”, “postMessage(message, targetOrigin, transferables)” and “postMessage(message, transferables, targetOrigin)”

The last one being an accident of history as implementation and spec initially evolved, but an overload that got stuck. As it has little or no actual use (Link1), it will be deprecated and removed. Any remaining uses will have to swap arguments.

  1. Deprecate ‘X-Frame-Options’ support inside <meta>.

Intent to Deprecate and Remove: https://groups.google.com/a/chromium.org/forum/#!topic/blink-dev/R1gkjKZI0J8

  1. Remove density property from Manifest’s icons

Remove density property from Manifest’s icons

  1. Intervention: Throttle rendering pipeline based on viewport visibility

As an intervention, stop running Blink’s rendering pipeline (including requestAnimationFrame callbacks) for content which isn’t visible in the viewport. This helps to avoid doing unnecessary work for animations which aren’t going to be seen by the user.

chromium53 Features:20

  1. ‘allow-presentation’ sandboxing flag

This is a new flag for <iframe sandbox="..."> which will
allow embedders to have control over whether an iframe can start a presentation session.

  1. Apply Unicode flag to `pattern’ content attribute of INPUT element

Apply the unicode flag to `pattern’ attribute values. Syntax checking will be stricter, and ‘.’ matches to a surrogate pair, and some other benefits.

  1. Autoplay muted videos (Android)

Relax autoplay restrictions to allow muted videos to autoplay. They will only be able to play while muted and unmuting will pause if not coming from a user gesture.

  1. CSS -webkit-user-select: all

The user-select property enables authors to specify which elements in the document can be selected by the user and how.
Chrome has supported only prefixed version: -webkit-user-select.

With -webkit-user-select:all value,
the content of the element must be selected atomically: If a selection would contain part of the element, then the selection must contain the entire element including all its descendants.

  1. Do not perform default action on un-trusted events

According to the UI Events specification un-trusted events (i.e. those created by JavaScript) should not invoke the default action. ‘click’ is the only event that is a legacy permitted case.

The isTrusted support was added in https://www.chromestatus.com/features/6461137440735232 which identifies trusted events from un-trusted events.

We wish to prevent synthetic events from executing the default action, aligning with Firefox and IE.

  1. Force flattening for elements with opacity < 1

3D-positioned descendants will be flattened by an ancestor that has opacity.

Previously it did not, if that ancestor also specified transform-style: preserve-3d

  1. HTMLObjectElement.contentWindow

The contentWindow property returns the Window object of an <Object> element. This attribute is read-only, but its properties can be manipulated like the global Window object.

  1. Media Source EventHandler attributes

Per recent MSE spec change [1], MSE objects should have EventHandler attributes for their various events. The logic for the events does not change; this feature just adds support for them via EventHandler attributes.
[1] https://github.com/w3c/media-source/pull/75

  1. MediaStreamTrack constraints API

Support for the new format of MediaStreamTrack constraints.

Support for the API calls for getting, setting and querying constraints on a MediaStreamTrack.

  1. Notification badges

A badge image may be used to represent a notification when there is not enough space to display the notification itself. It may also be displayed inside the notification, but then it should have less visual priority than the notification icon.

  1. Promise-based getUserMedia

Adds the API navigator.mediaDevices.getUserMedia(), which returns a promise.

As part of this feature, also release the unprefixed version of navigator.getUserMedia(), which uses callbacks.

  1. Raster on composited layer scale change, except if will-change: transform or an accelerated animation is present

All content will be re-rastered when its transform scale changes, iff it does not have the will-change: transform CSS property. In other words, will-change: transform means “please animate it fast”. This only applies to transforms scales that happen via script manipulation, and does not apply to CSS animations. This means your site will likely get better-looking content, but it may also be slower without some simple changes outlined below.

  1. Shadow DOM v1

The new Shadow DOM APIs, called v1, including, but not limited to:

  • Element.attachShadow
  • New HTML Element: HTMLSlotElement
  • Slotable.assignedSlot
  • Event.composed, Event.composedPath()

See http://hayato.io/2016/shadowdomv1/ for the difference between v0 and v1.
Intent to Ship: https://groups.google.com/a/chromium.org/forum/#!topic/blink-dev/zrZRD2ls5tw

  1. Unprefixed CSS Filters

CSS Filters without the -webkit- prefix.

  1. WebAudio: New lowpass and highpass BiquadFilter implementation

The existing lowpass and highpass BiquadFilter implementation has a defect where valid filters cannot be represented. To fix this, the filter formulas were updated. However, the new formulas will cause a change in the output of the filters.

  1. Remove FileError interface

FileError was removed from File API (https://w3c.github.io/FileAPI/) after Chrome shipped the feature.

This surfaces on: FileReader.error, FileWriter.error, and in the FileSystem API passed to the ErrorCallback (async) and thrown (sync)

Other browsers do not use this, returning DOMError instead, which is itself being deprecated in favor of DOMException.

The interface has been deprecated since 2013. In Chrome 53 we’re adding a console warning. Removal is anticipated in Chrome 54.

  1. Deprecate PaymentAddress.careOf

The PaymentAddress interface has a careOf field which is non-standard (no well-known address
standards support it, see below). The careOf field is unnecessary, the recipient and organization fields
sufficiently support all necessary use cases. Adding careOf poses significant issues in terms of
interoperability with existing postal address schemas and APIs.
(From spec discussion: https://github.com/w3c/browser-payment-api/issues/244)

  1. Drop LABEL element from form-associated elements

The HTML specification was changed so that LABEL element isn’t a form-associated element.

  • Remove `form’ content attribute support from LABEL element
  • Change the behavior of `form’ IDL attribute of LABEL element so that it returns the form owner of the associated control.
  1. Remove DHE-based ciphers

Last year, we raised the minimum TLS Diffie-Hellman group size from 512-bit to 1024-bit. As mentioned then, 1024-bit is insufficient for the long-term. However, metrics report that around 95% of DHE connections seen by Chrome use 1024-bit DHE. This, compounded with how DHE is negotiated in TLS, makes it difficult to move past 1024-bit. Servers should upgrade to ECDHE if available. Otherwise, ensure a plain-RSA cipher suite is enabled.

  1. TextEncoder API: drop support for legacy encodings

The TextEncoder API never supported legacy encodings (such as ‘shift_jis’, ‘windows-1252’, etc) except for two UTF-16 variants (‘utf-16’, ‘utf-16be’). Usage was minimal and support was removed from the spec. The TextEncoder constructor will no longer take an argument (if one is passed it is ignored, as is the standard for DOM APIs), and will always encode to “the encoding” (utf-8).

chromium54 Features:27

  1. SRI: The require-sri-for CSP directive.

The require-sri-for directive gives developers the ability to assert to the browser that every resource of a given type ought to be integrity checked. If a resource of that type is loaded without integrity metadata, it will be rejected without triggering a network request.

  1. Align behavior of window.external.IsSearchProviderInstalled and window.external.AddSearchProvider with the spec

window.external.IsSearchProviderInstalled and window.external.AddSearchProvider will both be defined as methods that are no-ops.

This was never implemented in Safari. In IE10, these methods are (mostly) no-ops: IsSearchProviderInstalled always returns 2, and AddSearchProvider always returns S_OK.

Firefox still implements this, but notes that it may be removed at any time.

  1. BroadcastChannel

BroadcastChannel allows scripts from the same origin but other browsing contexts to send each other messages. Channels are scoped to an origin and have a name, messages posted to a channel will be delivered to all listeners of that channel in all documents.

  1. CECPQ1 in TLS

CECPQ1 is a post-quantum cipher suite: one that is designed to provide confidentiality even against an attacker who possesses a large quantum computer. It is a key-agreement algorithm plugged into TLS that combines X25519 and NewHope, a ring-learning-with-errors primitive. Even if NewHope turns out to be breakable, the X25519 key-agreement will ensure that it provides at least the security of our existing connections.

This is only an experiment and will only be used on a small fraction of HTT

  1. CSS text-size-adjust

The text-size-adjust property lets authors control and disable the text autosizing feature which increases font sizes on mobile.

  1. CacheStorage CacheQueryOptions support

CacheQueryOptions (ignoreMethod, ignoreVary, ignoreQuery, and cacheName) have been exposed but worked inconsistently across the various CacheStorage methods. As of M54 they are all supported as specified.

  1. Custom Elements v1

Custom Elements let web authors define their own tags. Chrome shipped an implementation based on the working draft of the spec in M33. The current editor’s draft of the spec has significant updates based on web developer and implementer feedback.

  1. Disable navigations in the unload handler.

When a navigation is initiated in the unload handler, it should be blocked and the previous navigation should continue.

  1. Enterprise flag to allow continued use of SHA-1 certificates by private PKIs

Private PKIs are not bound by the CA/Browser Forum’s Baseline Requirements, and many not have completed the process to deprecate SHA-1 by Jan 2017, after which we’ll start showing interstitials.

Provide an enterprise flag that would cause SHA-1 certificates that chain to a locally installed trust anchor to display the standard HTTP page icon after Jan 2017.

  1. Expose HTMLAreaElement download and rel attributes

HTMLAreaElement should define IDL download and rel attributes for faster access.

  1. New DOM node methods: prepend, append, before, after, replaceWith

The DOM standard provides a set of convenience methods for working with DOM Node trees: ParentNode.prepend(), ParentNode.append(), ChildNode.before(), ChildNode.after(), ChildNode.replaceWith().

Removal of the flag is anticipated in Chrome 54.

  1. Node.getRootNode(options)

The getRootNode(options) attribute’s getter must return context object’s shadow-including root if options’s composed is true, and context object’s root otherwise.

The former name was Node.rootNode.
See https://github.com/whatwg/dom/issues/241 the context of renaming

  1. Object.entries() and Object.values()

These methods are siblings to the Object.keys() function, and aim to provide Objects with the same set of iteration methods that exist for other ES2015 types (Array, Map, and Set).

  1. Object.getOwnPropertyDescriptors()

Retrieve all own PropertyDescriptors from an object, which could be used by Object.create() or Object.defineProperties().

  1. PushSubscription.options

An “options” attribute is added to PushSubscription objects that the PushManager.subscribe(…) and getSubscription() promises resolve to. It reflects the options passed in when subscribing.

This allows web developers to see what applicationServerKey each PushSubscription is associated with, and hence what key their server will need to present when sending messages. Previously web developers with more than one applicationServerKey had to keep track of this separately (e.g. in IndexedDB).

  1. Request fullscreen on orientation change

Allow web pages to request fullscreen while an orientation change event handler is running. This will allow pages to go fullscreen when the user turn their device.

  1. Size related attributes to Resource Timing API

Add size related attributes to Resource Timing API

Changes to API surface:
Add 3 attributes (transfer/encoded/decoded sizes)

  1. Unprefixed CSS user-select

The user-select property enables authors to specify which elements in the document can be selected by the user and how.
Chrome has supported only prefixed version: -webkit-user-select.

  1. imageSmoothingQuality attribute for CanvasRenderingContext2D

It allows a web developer to choose the quality/performance tradeoff when scaling images. There are 3 options in total: low, medium and high.

  1. Beacon with non-CORS-safelisted Content-Type

sendBeacon() has been available as described in https://www.chromestatus.com/feature/5517433905348608.

A part of sendBeacon()'s functionalities has been temporarily disabled later due to a security issue.

The change is that, from M60, sendBeacon() will throw when called with a Blob whose type is not a CORS-safelisted value for the Content-Type request header as the data argument.

This entry is used for tracking progress on resolving the issue and re-enabling the functionality.

  1. Deprecate SVGSVGElement.viewport attribute

The implementation is trivial but entirely useless and has been since
2012. The attribute is not present at all in Gecko.

It has been removed from the spec:
https://github.com/w3c/svgwg/commit/99a342c09dc0f8f164667d45d1c8486f0f87af8f

  1. Blocking sync XHR during microtask execution

Certain blocking APIs spin up nested message loops. Invoking those APIs during microtask execution has undesirable effects, e.g., it is possible that events are dispatched during microtasks.

Those APIs currently are alert, prompt, confirm, print, and send() on synchronous XHRs.

  1. Deprecate and Remove SVGZoomEvent

SVGZoomEvent has been removed from the SVG 2.0 specification and has a non-functional implementation in Chromium. Since it doesn’t work but is still feature detectable, it’s in a confusing state right now and should be removed.

  1. Deprecate and remove initTouchEvent

Chrome’s initTouchEvent is not interoperable with Safari’s or Firefox’s version of initTouchEvent.
Deprecated since M49.

Developers should use the new TouchEvent constructor.
See https://www.chromestatus.com/features/4923255479599104

  1. MediaStream ended event and onended attribute

The ended event and the corresponding onended attribute have been removed from the MediaStream spec.

Removal is anticipated in Chrome 54.

  1. Remove KeyEvent.keyIdentifier

Remove the WebKit specific KeyEvent.keyIdentifier field.

It is not specified in a current specification and has a number of interoperability concerns.

The KeyboardEvent.key field is a suitable specified replacement for this field.

  1. Foreign Fetch

Foreign Fetch is a proposal to enable third party Service Workers.

chromium55 Features:24

  1. Async/await functions

Async functions make it easy to write code which needs to “block” on certain asynchronous events JavaScript. Async/await does this by providing a simpler and more ergonomic way to use Promises. To block on a value, use the ‘await’ keyword. Async/await can be implemented based on a desugaring to generators, as described in the following design doc: https://docs.google.com/document/d/1K38ct2dsxG_9OfmgErvFld4MPDC4Wkr8tPuqmSWu_3Y/edit?usp=sharing

  1. Block script execution for non-script MIME types.

Script should not execute if it is delivered with a MIME type of ‘audio/', 'image/’, ‘video/*’, or ‘text/csv’.

  1. Block the load of cross-origin, parser-blocking scripts inserted via document.write() for users on 2G

For users on slow connections such as 2G, the performance penalty from third-party scripts loaded via document.write() is often so severe as to delay display of main page content for tens of seconds. This feature will block the load of cross-origin, parser-blocking scripts inserted via document.write() in case of an HTTP cache miss for users on a 2G connection. The feature will only be applicable to such scripts in the main frame.

  1. CSS hyphens property

This CSS property controls automatic hyphenations. The automatic hyphenation is strongly demanded as seen in crbug.com/47083, and is already supported by all other major browsers.

Blink enables the following values on all platforms:

“manual” - the initial value.
“none” - disables soft hyphens.

and the following value on Android and Mac:

“auto” - enables the automatic hyphenation for languages where the underlying operating system has dictionaries.

  1. EME: onwaitingforkey, onkeystatuseschange, & onmessage event handler attributes

Add the following EventHandler attributes for existing EME events:

  • HTMLMediaElement:
    • onwaitingforkey
    • (onencrypted is already implemented)
  • MediaKeySession:
    • onkeystatuseschange
    • onmessage
  1. GREASE for TLS

TLS clients offer lists of 16-bit code points (e.g. cipher suites) that servers select from. To remain extensible, servers must ignore unknown values. However, servers may have bugs and reject unknown values. These servers will interoperate with existing clients, so the mistake may spread unnoticed, breaking extensibility for the whole ecosystem. We will reserve some values to advertise at random, to prevent such mistakes before broken servers are widespread.

  1. Intervention: Web Audio user gesture requirement on cross origin iframes on Android

This will require a user gesture in order to start playback using Web Audio in a cross origin iframe, the same way a user gesture is required to play an audio or video element.

  1. Make Event.composedPath() behavior on window match that on document

The spec is: https://dom.spec.whatwg.org/#dom-event-composedpath
The relevant change of the spec: https://github.com/whatwg/dom/pull/327

Before: event.composedPath() on window object returns [window] in Blink, which does not include nodes in a document.

After: event.composedPath() on window behaves the same way as that on document. It would include a node in a document tree.

  1. MediaStream constructor

A prefixed constructor webkitMediaStream has been available since 2012. It will now be available without the prefix as MediaStream.

  1. MediaStreamTrackEvent constructor

This is a standard event constructor. Previously, the event interface was hidden, so that scripts could not create instances.

  1. New “auxclick” event for non-primary button click behavior

The new input event type “auxclick” introduced here provides web developers a way to listen to the click behavior of non-primary buttons, and potentially cancel their effect (eg. opening a new tab when middle clicking on a link). This new input type is needed because the “click” event is restricted to primary button only according to the spec https://w3c.github.io/uievents/#event-type-click. So after this change “click” event will no longer be dispatched for non-primary buttons.

  1. Persistent Storage Permission (Durable Storage)

Allow sites to request that web storage be treated as “persistent”, preventing Chrome’s automatic storage eviction from clearing storage for that site.

The permission is automatically granted when the site:

  • Is bookmarked (if the user has <= 5 bookmarks)
  • Is added to homescreen
  • Has push notification permissions
  • Has high site engagement

(Launched as Origin Trial in M52)

  1. Persistent storage

Allow origins to opt out of the browser’s storage-eviction logic that is run when the user’s storage space is running low.

  1. Pointer Events

Unified pointer input API subsuming MouseEvent and TouchEvents which addresses several existing problems (especially on touchscreen laptops) and provides future extensibility.

Intent-to-implement thread: https://groups.google.com/a/chromium.org/forum/#!topic/blink-dev/ODWmcKNQl0I

This was behind a flag starting in Chrome 52.

  1. Support “once” event listener option

Support adding event listeners with the “once” option set to true.
When set to true, options’s once member indicates that the callback will only be invoked once after which the event listener will be removed.

  1. Support dataset property on SVGElement

Dataset is supported on HTMLElement. Recently spec was modified to support for SVGElement as well.
https://svgwg.org/svg2-draft/types.html#InterfaceSVGElement

  1. Touch-action: pan-up pan-down pan-left pan-right CSS properties

The touch-action CSS property determines whether touch input may trigger default behavior supplied by user agent. This includes, but is not limited to, behaviors such as panning or zooming.

Additional keywords indicating: pan-up, pan-down, pan-left, pan-right have been added to the specification.

  1. Unprefixed CSS Clipping Paths

The CSS Clipping Path (CSS Masking specification) property without the “webkit” prefix.

  1. Update <textarea maxlength/minlength> behavior for linebreaks

The specification was updated by https://github.com/whatwg/html/commit/163703186794c21daa92cc2718218afa44f26071.

Before the change, maxlength/minlength limits |value| length, not |API value| length. In <textarea>, a single linebreak is represented as CR LF in |value|, and LF in |API value|.

Firefox and Edge incorrectly applied to |API value|, and WebKit and Blink correctly applied to |value|. But the specification followed Firefox and Edge.

  1. WebAudio: Add BaseAudioContext

Implement BaseAudioContext according to the spec. This introduces a trivial but user-visible change: querying AudioContext.prototype.hasOwnProperty(functionName) will fail. See the comment to see how to fix the potential issue.

  1. WebAudio: AudioNode constructors

Add constructor for WebAudio AudioNodes. Instead of saying “context.createFoo()”, you can now say “new FooNode(context, optionalOptions)”, roughly.

  1. WebAudio: close() removed from OfflineAudioContext

The close() method is no longer defined for an OfflineAudioContext. It only threw an error anyway, so it wasn’t useful. It’s now only defined for an AudioContext.

  1. Block navigator.vibrate in cross-origin iframes

Calls to navigator.vibrate will immediately return ‘false’ inside cross-origin iframes.The Vibrate API is being abused by unsafe third-party content (eg., malicious ads).

As of Chrome 57 this is relaxed to allow vibration after the user has tapped on the frame. See https://crbug.com/683938.

  1. HTTP/0.9 over non-default ports

HTTP/0.9 is the predecessor to HTTP/1.x. One big difference between HTTP/0.9 and HTTP/1.x is that HTTP/0.9 lacks any response headers. So when we send an HTTP/1.x request, if the server responds with a message that doesn’t look like HTTP/1.x, we just assume it’s an HTTP/0.9 response and treat the entire response is the response body, with no headers. We’re removing this behavior except on default ports, and plan to further reduce support in the future.

chromium56 Features:51

  1. Shadow-piercing descendant combinator (>>>) in snapshot profile

A shadow-piercing descendant combinator (>>>) is defined in https://drafts.csswg.org/css-scoping/#deep-combinator as a straightforward replacement for /deep/ combinator (which was for Shadow DOM V0), with a restriction that it is only allowed for selectors in querySelector() (aka static profile, not in dynamic profile for styling).

See spec discussions:
https://github.com/w3c/webcomponents/issues/78 (already closed)
https://github.com/w3c/csswg-drafts/issues/640

  1. “system-ui” generic font family

This generic font family allows authors to style contents so it fits within the system UI.

  1. 2nd arg of document.createElement should be an object

This feature adds a dictionary as a second argument for document.createElement. The dictionary ‘is’ member is used to set custom element attribute.

For now both syntaxes will be supported.

Later on after v1 custom elements (https://www.chromestatus.com/features/4696261944934400) are shipped the string argument will be deprecated.

  1. CSP: SecurityPolicyViolationEvent for Workers.

When a Worker’s CSP is violated, we should fire a ‘SecurityPolicyViolation’ event at its global object.

  1. CSS border-image-repeat: space support

Previously, “space” was implemented the same as “repeat”.

  1. CSS position: sticky

position: sticky is a new way to position elements and is conceptually similar to position: fixed. The difference is that a stickily positioned element behaves like position: relative within its parent, until a given offset threshold is met.

  1. CSS: New names for motion path properties

Motion paths allow authors to animate any graphical object along an author-specified path.

The CSS properties are being named: offset-path offset-distance offset-rotate.

From Chrome 55, offset-path and offset-distance are supported. offset-rotate will become available in Chrome 56.

  1. CSSConditionRule interface

The CSSConditionRule interface inherits from CSSGroupingRule. CSSMediaRule and CSSSupportsRule both inherit from CSSConditionRule. Before the introduction of CSSConditionRule in Blink, CSSMediaRule inherited from CSSGroupingRule, while CSSSupportsRule inherited from CSSRule and duplicated the members of CSSGroupingRule.

  1. Dispatch synthetic events (at least until its root) when target and relatedTarget are identical

Spec: DOM Standard: https://dom.spec.whatwg.org/#dispatching-events
WPT Update: https://github.com/w3c/web-platform-tests/pull/3865

So far, Blink does not dispatch synthetic events if all of the following conditions are satisfied:

  1. event’s target is in a shadow tree
  2. event has relatedTarget
  3. event’s target and event’s relatedTarget are identical

The new behavior will dispatch synthetic events even if the all conditions are satisfied.

  1. FLAC codec support for <audio> and WebAudio.

Enables support for the FLAC audio codec within the FLAC and Ogg containers for the HTML5 <audio> tag and WebAudio’s decodeAudioData() API.

  1. Fire VisibilityChange event on document unloading

visibilitychange event should fire as part of unload process and document.visibilityState should report ‘hidden’.

  1. Fractional coordinates in MouseEvents

Update the types of all coordinates in MouseEvents from long to double to make the coordinates more precise for PointerEvents on high-DPI devices.

Note, however, that the only browser-fired events that will change are PointerEvents. MouseEvents will continue to have integral coordinates for backward compatibility.

  1. Inert URL Bar

Hiding and Showing the URL bar will no longer resize the initial containing block or elements sized with vh units. This matches iOS Safari.

  1. KeyboardEvent.isComposing

Allows an app to determine if there is an active composition outstanding for keyboard events being generated without monitoring composition events directly.

  1. Link rel=prefetch header support

The proposed change will add support for the “prefetch” rel value in Link headers, enabling easy addition of such resource hints and therefore easier hinting of resources needed for next navigation.

  1. Media preload over cellular connections

Allow preloading metadata over cellular connection unless some restrictions apply such as Data Saver being enabled.

  1. Notification image

Allows developers to show a large image as part of the content of a notification (whereas the existing icon and badge properties tend to be icons and are rendered smaller).

Screenshot: http://i.imgur.com/fNf97ro.png

  1. OPUS codec support in WebAudio’s decodeAudioData() API.

Extends support for OPUS to WebAudio’s decodeAudioData() API.

  1. PaymentRequest.canMakePayment()

A method in PaymentRequest, canMakePayment(), that returns back a boolean indicating whether or not the user has the ability to make a payment at the time PaymentRequest.show() is called.

  1. RSA-PSS for TLS

In preparation for TLS 1.3, ship RSA-PSS signature algorithms in our TLS implementation. This will improve the options available for signing with RSA keys in TLS 1.2 (aligning with QUIC and TLS 1.3) and, more importantly, pave the road for TLS 1.3 by ensuring the ecosystem can handle new signature algorithms.

  1. RTCConfiguration iceTransportPolicy member

RTCConfiguration is the type of the optional first argument to the RTCPeerConnection constructor. Previously only ‘iceTransports’ was supported, but now the standard ‘iceTransportPolicy’ will also be supported.

  1. RTCPeerConnection unprefixed interface

This entry track exposing the unprefixed RTCPeerConnection. webkitRTCPeerConnection has been exposed for a long time, and removing it is not part of this entry.

  1. Referrer-Policy header

The Referrer-Policy header allows pages to set a referrer policy by sending an HTTP response header.

  1. Remote Playback API

This specification defines an API extending the HTMLMediaElement that enables controlling remote playback of media from a web page. In M56, this will work on Android only (desktop will report no devices available) with the desktop backend being added later.

  1. Rename RTCIceCandidateEvent to RTCPeerConnectionIceEvent and expose

This entry track renaming RTCIceCandidateEvent (implemented and shipped) to RTCPeerConnectionIceEvent and exposing RTCPeerConnectionIceEvent constructor.

  1. Render Unicode control characters

Currently Chrome and other browsers do not render unicode control characters. This violates the unicode spec and the handling in other software. With this change non-white-space control characters will be rendered.

  1. Stop re-signaling a slotchange event.

The spec change: https://github.com/whatwg/dom/pull/353 (PR to DOM Standard)

Blink no longer re-fires a slotchange event at a slot’s assignedSlot (or parent slot).
See https://github.com/w3c/webcomponents/issues/571 for details.

  1. Supporting chrome_settings_overrides API on OS X

The API is currently only available on Windows. This change will enable it on OS X as well

  1. Throttle the rendering pipeline during page load when there’s pending sheets.

Delay running the rendering pipeline (style, layout, paint) and executing requestAnimationFrame callbacks inside iframes until pending stylesheets have finished loading.

  1. Touch-action: pinch-zoom CSS property

Support the touch-action: pinch-zoom CSS property.

The user agent MAY consider touches that begin on the element for the purposes of continuous zooming and immediately execute the default action instead of waiting for an event handler to not cancel it.

  1. Web Bluetooth API

Allows web sites to communicate over GATT with nearby user-selected Bluetooth devices in a secure and privacy-preserving way.

Status in Chrome is more complicated than can be captured by this form. In Chrome 56, this shipped on Android, ChromeOS, and macOS. In Chrome 70 it is shipping on Windows 10. For earlier versions of Windows and Linux, it is still behind a flag (chrome://flags/#enable-experimental-web-platform-features).

  1. WebAudio: Add ConstantSourceNode

Add a new ConstantSourceNode that produces a constant output mixed with an AudioParam. This node serves as a constant source and also as a “constructible AudioParam”

  1. WebAudio: ChannelSplitterNode channelCount and channelCountMode are constant

The channelCount and channelCountMode attributes for a ChannelSplitterNode are fixed to the number of outputs and “explicit”, respectively.

They cannot be changed.

  1. WebAudio: PannerNode.rolloffFactor clamps to nominal range.

The PannerNode.rolloffFactor clamps to the nominal range which depends on the distance model being used.

  1. WebAudio: Remove Doppler API

Remove the deprecated Doppler API. This includes removing speedOfSound, dopplerFactor, and setVelocity from the WebAudio API. This was removed from the WebAudio spec quite a while ago. The actual effect was removed a while ago, but the API remained. The API is being removed now.

  1. WebGL 2

OpenGL ES 3.0 level rendering capabilities via the <canvas> element.

  1. Deprecate and Remove SVGViewElement.viewTarget attribute

As per SVG2.0, SVGViewElement.viewTarget is removed

https://github.com/w3c/svgwg/commit/c1690ae1b99aa95c648a304ec7a8f7dec46d7c83

  1. Remove case-insensitive matching for radio button group names

“Compatibility caseless” had been applied to radio button group name matching. The specification was updated so that case-sensitive matching is applied.
https://github.com/whatwg/html/commit/6acdb2122298d2bb7bb839c0a61b4e1f9b0f9bc9

  1. CSP ‘referrer’ directive

The CSP ‘referrer’ directive allows site owners to set a Referrer Policy (https://w3c.github.io/webappsec-referrer-policy/) for their page from an HTTP header. The ‘referrer’ directive has been removed from the spec and replaced with the Referrer-Policy header.

This feature was added in Chrome 33.

  1. Deprecate SVGSVGElement.currentView/useCurrentView and SVGViewSpec interface

SVGSVGElement.currentView/useCurrentView and SVGViewSpec interface are removed from SVG2.0 spec.

This was deprecated in Chrome 54.

  1. Deprecate reflected-xss CSP directive.

Early drafts of CSP2 contained a reflected-xss directive, which is little more than syntactic sugar for the X-XSS-Protection header. It offered no additional functionality beyond that header, just a better syntax. I shipped our implementation as part of shipping CSP2 (https://groups.google.com/a/chromium.org/forum/#!msg/blink-dev/wToP6b04zVE/imuPatGy3awJ). I should have undone that in 2015 when we dropped the directive from the CR draft. I’d like to undo it now.

  1. Deprecate all fetches for scripts with invalid type/language attributes

Right now, the preload scanner will send fetches for script tags regardless of type/language, but the script will not execute when parsed. Often, sites will use these custom tags combined with XHR, resulting in double downloads. By deprecating the fetch, the preload scanner and the parser will have the same semantics, and we will not be initiating fetches for scripts we will not execute.

To work around this issue and maintain the fetch, sites should use link preload.

  1. Deprecate and remove MediaStreamTrack.getSources()

Remove support for the MediaStreamTrack.getSources() method.
This method was removed from the spec in favor of MediaDevices.enumerateDevices().

This was deprecated in Chrome 40.

  1. Remove CBC-mode ECDSA ciphers in TLS

Remove ECDHE_ECDSA_WITH_AES_128_CBC_SHA and ECDHE_ECDSA_WITH_AES_256_CBC_SHA TLS cipher suites. TLS’s CBC-mode construction is flawed, making it fragile and very difficult to implement securely. Although CBC-mode ciphers are still widely used with RSA, they are virtually nonexistent with ECDSA.

  1. Remove TLS 1.2 ECDSA with SHA-1 and SHA-512 signature algorithms

In most modes, TLS 1.2 uses a signature in the ServerKeyExchange message to prove ownership of the private key. (Note this is NOT related to SHA-1 certificates.) There is an extension, signature_algorithms, to negotiate which signature algorithms are acceptable. To reduce dependencies on SHA-1 and prepare for TLS 1.3’s new ECDSA handling, we intend to remove ECDSA with SHA-1 and ECDSA with SHA-512, leaving only SHA-256 and SHA-384 for ECDSA.

  1. Stop Trusting SHA-1 Certificates

Protect Chrome users from attackers who might use the broken SHA-1 hash algorithm to obtain counterfeit website authentication certificates.

  1. User gesture for touch scrolling

No longer allow opening pop-ups (and other sensitive operations) to occur during input events which represent a touch scroll. In particular, touchstart and touchmove listeners now never have a user gesture. touchend listeners do have a user gesture unless the user was scrolling / pinching.

Builds on https://www.chromestatus.com/feature/5649871251963904.

  1. Web MIDI MIDIMessageEvent.receivedTime deprecation

Deprecate receivedTime property from MIDIMessageEvent.

This is because the attribute was introduced to represent a high-resolution timestamp for real-time MIDI processing, but DOM Event started using hi-resolution monotonic time instead of epoch time for Event.timeStamp that can cover our use-case too.

  1. Intervention: Scroll Anchoring

Scroll anchoring adjusts the scroll position to prevent visible jumps (or “reflows”) when content changes above the viewport.

Scroll anchoring introduces CSS “overflow-anchor” as an opt-out for developers.

  1. Treat Document Level Touch Event Listeners as Passive

AddEventListenerOptions defaults passive to false. With this change touchstart and touchmove listeners added to the document will default to passive:true (so that calls to preventDefault will be ignored)…

If the value is explicitly provided in the AddEventListenerOptions it will continue having the value specified by the page.

This is behind a flag starting in Chrome 54, and enabled by default in Chrome 56. See https://developers.google.com/web/updates/2017/01/scrolling-intervention

  1. window.prompt() will not activate parent page

If a document in a background tab calls window.prompt() then the call to prompt() will return immediately, and no dialog will be shown to the user for that call to prompt(). If the tab is foremost (if it is the active tab in the front window), then the call will show a dialog. Specifically, this removes the ability to use window.prompt() to bring a tab to the front against the user’s will.

chromium57 Features:41

  1. Intervention: Block audible cross-origin autoplay

This is an intervention that intends to block cross-origin iframes from autoplaying audible media. In other words, cross-origin iframes on desktop will behave like mobile currently behaves: only muted/inaudible autoplay will be allowed.

  1. MediaStreamTrack Content Hints

This feature extends MediaStreamTrack to provide a media-content hint attribute. This optional hint permits MediaStreamTrack consumers such as PeerConnection or MediaRecorder to encode or process track media with methods more appropriate to the type of content that is being consumed.

  1. Add sequence <DOMString> constructor to PresentationRequest and PresentationConnection.url

This change adds a new constructor to PresentationRequest taking taking multiple URLs (sequence <DOMString>), in addition to the existing constructor that takes a single URL. It also adds the url attribute to PresentationConnection to tell the site what URL was presented.

  1. Add |timecode| to MediaRecorder’s BlobEvent

MediaRecorder produces BlobEvents that have no timing information. [1] requested adding a DOMHighResTimestamp to said BlobEvent [2]. The Pull Request was reviewed and approved by the only two implementors of the said API, Gecko and Chrome.

[1] https://github.com/w3c/mediacapture-record/issues/73
[2] https://github.com/w3c/mediacapture-record/pull/95

  1. CSS ::placeholder pseudo element

Unprefixed version of ::-webkit-input-placeholder.

  1. CSS Grid Layout

A two-dimensional grid-based layout system, optimized for user interface design.

  1. CSS UI: caret-color property

This property allows coloring the insertion caret.

  1. CSS logical height and width

Implement {inline-,block-}size and {min-,max-}{inline-,block-}size, which are introduced by CSS Logical Properties.
The related properties are: inline-size, block-size , min-inline-size,min-block-size, max-inline-size, max-block-size
Provide the author with the ability to control layout through logical, rather than physical, direction and dimension mappings.

  1. CSS3 Text Decorations

CSS3 Text Decoration specification provides new properties that implements new text decoration styling features such as lines, color and style. As the specification says:

“CSS Levels 1 and 2 only defined very basic line decorations (underlines, overlines, and strike-throughs) appropriate to Western typographical traditions. Level 3 of this module adds the ability to change the color, style, position, […]”

This Chromestatus entry consists of the
https://drafts.csswg.org/css-text-decor-2

  1. Child-indexed pseudo-classes matching elements without a parent

Change how the child-indexed pseudo-class selectors are matched so they also match elements without a parent.

This is a change in the spec from selectors-3 to selectors-4. The reasoning for this is explained in the spec.

  1. FontFaceSetLoadEvent Constructor

This entry tracks exposing FontFaceSetLoadEvent constructor.

  1. Fullscreen Media Orientation

Automatically lock the screen orientation when a video with default controls go fullscreen in order to maximize the screen usage. The orientation of the screen will match the aspect ratio of the video.

  1. Intl.DateTimeFormat.prototype.formatToParts()

Intl.DateTimeFormat.prototype.formatToParts() is scheduled to be added to the EcmaScript Internationalization API specification (Ecma 402).

It adds a method to format date and time to a list of tokens and their type (e.g. literal, day, year, month, hour, minute, era, etc).

  1. MediaDevices devicechange event

The devicechange event is fired when a media device (e.g., camera, microphone or speaker) is connected to or removed from the system.

This feature is useful for applications that wish to react to changes in the set of available media devices; for example, to show a device list that is always up-to-date. This is expected to be on by default in Chrome 57.

  1. Navigation Timing 2

Navigation Timing 2 (NT2) enables obtaining accurate timing data related to the navigation of the document.

  1. PaymentDetails.error

When the payment request is updated using updateWith, the PaymentDetails can contain a message in the error field that will be displayed to the user. For example, this might commonly be used to explain why goods cannot be shipped to the chosen shipping address.

The error field cannot be passed to the PaymentRequest constructor. Doing so will cause a TypeError to be thrown.

  1. RTCDataChannelEvent constructor

This entry track exposing RTCDataChannelEvent constructor. RTCDataChannel and RTCDataChannelEvent was implemented and shippped before the current process.

  1. Remove MediaRecorder |ignoreMutedMedia|

After discussion in the W3C Spec Github [1], there is agreement to remove this feature (and its associated boolean attribute). FF never shipped it [2], Chromium never wired its behaviour [3].

[1] https://github.com/w3c/mediacapture-record/issues/99
[2] https://github.com/mozilla/gecko-dev/blob/master/dom/webidl/MediaRecorder.webidl
[3] https://cs.chromium.org/search/?q=m_ignoreMutedMedia&sq=package:chromium&type=cs

  1. Remove ServiceWorkerMessageEvent in favor of using MessageEvent

As HTML spec extended MessageEvent to allow ServiceWorker as a type of the source attribute, client.postMessage(message, transfer) and creation of custom message events are changed to use MessageEvent instead of ServiceWorkerMessageEvent. ServiceWorkerMessageEvent is removed.

  1. String.prototype.padStart() / String.prototype.padEnd()

String formatting tools which returns a target/receiver string prepended or appended with a repeating pattern of characters:

“foo”.padStart(10, “0”); -> “0000000foo”;
“foo”.padEnd(10, “0”); -> “foo0000000”;

  1. WebAssembly

WebAssembly, or wasm, is an efficient low-level programming language for in-browser client-side execution. It is designed to support C/C++ and similar low-level languages. Future versions may be enhanced to better support other languages. WebAssembly is intended to be small, fast to decode, fast to compile, and fast to execute.

  1. WebAudio: Add AudioContext.getOutputTimestamp() method

The AudioContext.getOutputTimestamp() method helps to synchronize DOM time and AudioContext time values. It is used to estimate DOMHighResTimeStamp value of the audio output stream position for the given AudioContext.currentTime value, or do the opposite: estimate AudioContext.currentTime value of the audio output stream position for the given DOMHighResTimeStamp value.

  1. WebAudio: Add AudioScheduledSourceNode base class for source nodes

Add AudioScheduledSourceNode as a base class of AudioBufferSourceNode, OscillatorNode, and ConstantSourceNode.

This is a small change to capture the common features of the source nodes into a base class.

  1. WebAudio: AudioParam cancelAndHoldAtTime

cancelAndHoldAtTime cancels future AudioParam events and holds the value of the AudioParam at the value at the scheduled time.

  1. WebAudio: Event Constructors

Allow WebAudio-specific events to be constructed. Specifically, OfflineAudioCompletionEvent and AudioProcessEvent can be constructed.

  1. WebAudio: Remove prefixed AudioContext and OfflineAudioContext

Support for webkitAudioContext and webkitOfflineAudioContext is removed in favor of AudioContext and OfflineAudioContext. Currently warnings are produced, but upon removal, the prefixed versions will no longer exist.

  1. XSS Auditor blocks by default

Chrome’s XSS Auditor should block pages by default, rather than filtering out suspected reflected XSS. Moreover, we should remove the filtering option, as breaking specific pieces of page’s script has been an XSS vector itself in the past.

  1. basic-card support in PaymentRequest

Support the “basic-card” method for web payments.

  1. fieldset.elements returns an HTMLCollection, not an HTMLFormControlsCollection

The specification was changed so that fieldset.elements returns an HTMLCollection instead of an HTMLFormControlsCollection.

https://github.com/whatwg/html/commit/934887d313305448b7ba6dd3af6f7434e1b600c8

  1. location.reload() behavior change

Originally, location.reload() revalidates all cached resources.
But from the m57, this behavior is changed to revalidate only the main resource, and to follow cache policy protocols for subresources.

  1. ongot/lostpointercaptures in GlobalEventHandlers

Previously in PointerEvents spec v1 (https://www.w3.org/TR/pointerevents/) we had ongotpointercapture and onlostpointercapture attributes as part of the Element. Now we are moving them to GlobalEventHandlers to make them consistent with the other on’event’ attributes as the capture events will also bubble similar to other events.
Note that this way of listening to the events through on’event’ attributes are legacy and should not be mostly used. But this change makes sure they are all consistent.

  1. Deprecate and remove -internal-media-controls-overlay-cast-button

-internal-media-controls-overlay-cast-button selector exposes Blink internal shadow DOM to the web content. Authors that want to have a custom cast button should use custom controls and implement a cast button with the Remote Playback API. Authors that have custom controls and want to hide the overlay can use the disableRemotePlayback attribute.

  1. Deprecate and Remove webkitCancelRequestAnimationFrame

webkitCancelRequestAnimationFrame is an obsolete, vendor-specific API. Authors should use cancelAnimationFrame instead.

  1. Legacy constants on Event

There are 16 numeric constants on Event, Event.MOUSEDOWN and others. These constants no longer serve any purpose.

  1. Prefixed Resource Timing buffer-management API

Support for webkitClearResourceTimings(), webkitSetResourceTimingBufferSize(), and onwebkitresourcetimingbufferfull is removed from the Performance interface, in favor of clearResourceTimings(), setResourceTimingBufferSize(), and onresourcetimingbufferfull. Currently warnings are produced, but upon removal, the prefixed versions will no longer exist.

  1. Remove Key Generation Element

Since Chrome 49, <keygen>'s default behaviour has been to return the empty string, unless a permission was granted to this page. Removed in Chrome 57.

  1. SVGCursorElement

The <cursor> element. Can be referenced from the ‘cursor’ property to provide a use-defined cursor image.

  1. webkit-prefixed IndexedDB global aliases

The IndexedDB entry point and global constructors were exposed with webkit prefixes as was common circa Chrome 11:

webkitIndexedDB (main entry point)
webkitIDBKeyRange (non-callable global constructor, but has useful static methods)
webkitIDBCursor webkitIDBDatabase webkitIDBFactory webkitIDBIndex webkitIDBObjectStore webkitIDBRequest webkitIDBTransaction (non-callable global constructors)

The non-prefixed API shipped in M24 and the prefixed versions deprecated in M38.

  1. Intervention: Passive Touch Event Listeners During Fling

Passive Event Listeners is a way to improve the scroll performance by unblocking scrolling on touch and wheel event listeners, so that scrolling happens immediately while the events are processed by javascript. alexclarke@ proposed that we should treat all the touchstart and first touchmove event listeners as passive while there’s an active fling animation.

  1. Intervention: Throttle expensive background timers

As an intervention we want to limit how much CPU a background page is allowed to use and to throttle timer queues when this limit is violated.

Current target is that background page CPU load level should be under 1%.

  1. Intervention: Throttle timers in out-of-view frames

As an intervention we want to limit the rate at which timers in out-of-view, cross-origin frames are able to fire.

Until very recently it wasn’t possible for script authors to easily determine whether their content was visible to the user or not. A common pattern therefore is to use a continuous setTimeout() loop for driving animations without considering visibility, which can be very costly for performance.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值