What’s new in Chromium 70 and Opera 57

Opera 57 (based on Chromium 70) for Mac, Windows, Linux is out! To find out what’s new for users, see our Desktop blog post. Here’s what it means for web developers.

Displaying a dialog will cause pages to leave fullscreen

Dialogs (authentication prompt, payment request etc.) require proper context when shown to the user. When the browser is in fullscreen mode - an immersive mode - that context is not available. To help the user get the right context when a dialog is displayed, the browser will now leave fullscreen mode in those cases.

The ontouch* APIs default to disabled on desktop platforms

The ontouch* event attributes on Window, Document and Element are now disabled by default on desktop platforms. This is to avoid confusion when feature detecting touch support - use navigator.maxTouchPoints for touchscreen detection and window.TouchEvent touch event detection instead. To support both touch and mouse input, consider using the Pointer Events API.

Event listeners for the associated touch events can still be added via EventTarget.prototype.addEventListener, like:

document.addEventListener("touchstart", ...);

Options dictionary for postMessage methods

An optional PostMessageOptions dictionary can now be passed to the postMessage method on DedicatedWorkerGlobalScope, Worker, ServiceWorker, ServiceWorker, and Window.

Thus what was previously written as:

window.postMessage('my message', 'https://origin.example.com');

can now also be written as:

window.postMessage('my message', { targetOrigin: 'https://origin.example.com' });

Media and Real-time Communications

  • RTCPeerConnection.prototype.getConfiguration has been added to allow accessing the last configuration set by RTCPeerConnection.prototype.setConfiguration.
  • The Opus codec is now supported in mp4 (ISO-BMFF) containers with Media Source Extensions (MSE).
  • The new SourceBuffer.changeType() method allows for improved cross-codec or cross-bytestream transitions within a SourceBuffer. It would for example allow changing the type of media bytes append to a media stream.

Network

Intervention Reports

An “intervention” happens when the user agent (the browser) willfully violates the request of a web application in order to improve performance, security or eliminate behavior that is considered annoying to a user. These interventions can now be reported back to the page author either by using the Report-To HTTP Response header or the ReportingObserver API.

TLS 1.3

TLS 1.3 is a new version of the TLS protocol that sports a simpler, less error-prone design which improves both efficiency and security. This is achieved by, among other things, reducing the number of round-trips needed to setup a connection, and remove a number of insecure legacy options.

Layout / CSS

  • The <rp> element is now display: none by default even outside a <ruby> element.
  • The behavior of percentage row tracks and gutters in grid containers with indefinite heights has been updated, and now behaves the same as (grid) columns.

Miscellaneous

Symbol.prototype.description

Symbol.prototype.description provides a more straight-forward way to access the description of a Symbol rather than the previously more indirect access via Symbol.prototype.toString.

WebUSB on Dedicated Workers

The WebUSB feature can now be accessed from within a dedicated worker. This for example allows communication with an USB device to be offloaded from the main thread - which can improve performance.

Removed features

AppCache in non-secure contexts

The Application Cache feature, after having been deprecated since Opera 54 (Chromium 67), is no longer exposed in non-secure contexts.

Anonymous getter on HTMLFrameSetElement

It was previously possible to access <frame> elements by name via their parent <frameset>. This was a non-standard extension, which has now been removed.

Deprecated features

Custom Elements “V0” and Shadow DOM “V0”

The “V0” versions of the Custom Elements and Shadow DOM APIs has been deprecated, and is expected to be removed in Opera 60 (Chromium 73). Please watch out for deprecation warnings and migrate any usage to the “V1” APIs:

At the time of writing, the latter specification is in the process of being split up and included into the DOM Standard, HTML Standard and CSS Scoping.

To understand what the differences are between “V0” and “V1” of Shadow DOM, see What’s New in Shadow DOM v1 (by examples) by Hayato Ito, for a very thorough list.

HTML Imports

HTML Imports allowed importing HTML documents into other HTML documents. This feature was never widely supported, and is thus being deprecated. Like Custom Elements “V0” and Shadow DOM “V0” above, it’s also expected to be removed in Opera 60 (Chromium 73).

What’s next?

If you’re interested in experimenting with features that are in the pipeline for future versions of Opera, we recommend following our Opera Developer stream.

You can also see features that we and other Chromium/Blink contributors are working on by looking at the Chrome Platform Status page.