Software-update: Google Chrome 89.0.4389.72

Google Chrome logo (80 pix) Google heeft versie 89 van zijn webbrowser Chrome uitgebracht. Google Chrome is beschikbaar voor Windows, Linux en macOS. Er zijn ook versies voor Android en iOS, maar die volgen een iets ander releaseschema. In versie 89 treffen we onder meer ondersteuning aan voor avif-afbeeldingen, en zijn er api's toegevoegd voor nfs, hid's en seriele communicatie. Meer informatie over de veranderingen die in versie 89 zijn aangebracht, naast de gebruikelijke bug- en security fixes, kunnen hieronder worden gevonden.

WebHID API

There is a long tail of human interface devices (HIDs) that are too new, too old, or too uncommon to be accessible by systems' device drivers. The WebHID API solves this by providing a way to implement device-specific logic in JavaScript.

A human interface device is one that takes input from or provides output to humans. Examples of devices include keyboards, pointing devices (mice, touchscreens, etc.), and gamepads.

The inability to access uncommon or unusual HID devices is particularly painful, for example, when it comes to gamepad support. Gamepad inputs and outputs are not well standardized and web browsers often require custom logic for specific devices. This is unsustainable and results in poor support for the long tail of older and uncommon devices.

With its origin trial over, WebHID is enabled by default in Chrome 89 on desktop. To learn how to use it, check out Connecting to uncommon HID devices, and see demos in Human interface devices on the web: a few quick examples.

Web NFC

NFC stands for Near Field Communications, a short-range wireless technology for transmitting small amounts of data, usually between a specialized NFC device and a reader. If you've scanned a badge to enter a building, you may have used NFC.

Web NFC allows a web app to read from and write to NFC tags. This opens new use cases to the web, including providing information about museum exhibits, inventory management, providing information in a conference badge, and many others. In Chrome 89 on Android, Web NFC is enabled by default.

With NFC reading and writing are simple operations. You'll need a little instruction for constructing and interpreting payloads, but it's not complicated. Fortunately, we have an article, Interact with NFC devices on the web. Check it out. We have some samples you can play with. Here's a taste:

Writing a string to an NFC tag:

if ("NDEFReader" in window) {
  const ndef = new NDEFReader();
  await ndef.write("Hello world!");
}

Scanning messages from NFC tags:

if ("NDEFReader" in window) {
  const ndef = new NDEFReader();
  await ndef.scan();
  ndef.onreading = ({ message }) => {
    console.log(`Records read from a NFC tag: ${message.records.length}`);
  };
}
Web Serial API

A serial port is a bidirectional communication interface that allows sending and receiving data byte by byte. The Web Serial API brings this capability to websites, letting them control devices such as microcontrollers and 3D printers.

In educational, hobbyist, and industrial settings, peripheral devices are already controlled through web pages. In all such cases device control requires installation of adapters and drivers. The Web Serial API improves the user experience by enabling direct communication between a website and a peripheral.

Its origin trial is over and the Web Serial API is now enabled on desktop. A demo is available on GitHub. For information about using it, see Read to and write from a serial port.

Web Sharing on Desktop

To allow users to easily share content on social networks, developers have manually integrated sharing buttons into their site for each social service. This often leads to users not being able to share with the services they actually use, in addition to bloated page sizes and security risks from third-party code. On the receiving end, only platform apps could register to be share targets and receive shares from other apps.

Chrome for Android started adding these features between Chrome 61 and 75. In Chrome 89, web sharing is available on Windows and ChromeOS, while registering as a share target is supported on ChromeOS. On these platforms, sites can now use navigator.share() on desktop to trigger a share dialog box. And an entry to the web app manifest allows a PWA to act as a share target.

For information on web sharing, see Integrate with the OS sharing UI with the Web Share API. To learn to configure a PWA as a share target, see Receiving shared data with the Web Share Target API.

Origin Trials

There are no new origin trials in this version of Chrome. To register for current origin trials, visit the Origin Trials dashboard. To learn more about origin trials themselves, visit the Origin Trials Guide for Web Developers.

AVIF Image Decode

Chrome now supports decoding AVIF content natively using existing AV1 decoders on Android and WebView. (Desktop support was added in Chrome 85.) AVIF is a next generation image format standardized by the Alliance for Open Media. There are three primary motivations for supporting AVIF:

  • Reducing bandwidth consumption to load pages faster and reduce overall data consumption. AVIF offers significant file size reduction for images compared with JPEG or WebP.
  • Adding HDR color support. AVIF is a path to HDR image support for the web. JPEG is limited in practice to 8-bit color depth. With displays increasingly capable of higher brightness, color bit depth, and color gamuts, web stakeholders are increasingly interested in preserving image data that is lost with JPEG.
  • Supporting ecosystem interest. Companies with a large web presence have expressed an interest in shipping AVIF images on the web.
Cross-origin opener policy reporting API

A new reporting API helps developers deploy cross-origin opener policy. In addition to reporting breakages when COOP is enforced, the API provides a report-only mode for COOP. The report-only mode for COOP will not enforce COOP, but it will report potential breakages that would have happened had we enforced COOP. Developers can inspect the reporting API with Chrome DevTools.

Display override in web app manifests

The new display_override field for the web app manifest allows developers to specify an explicit fallback chain for the display field. The following example specifies a "minimal-ui", falling back to "standalone".

{
  "display": "standalone",
  "display_override": ["minimal-ui"],
}

This API is intended for advanced use cases and display modes, and its capabilities are limited. You can learn more in its Chrome Status entry.

Expose ReadableStreamDefaultController interface

Chrome now exposes the ReadableStreamDefaultController interface on the global object, as with the other ReadableStream-related classes. This eliminates a previous limitation where instances had to be created inside stream constructors.

performance.measureUserAgentSpecificMemory()

The feature adds a performance.measureUserAgentSpecificMemory() function which estimates the memory usage of the web page. The method is gated behind COOP/COEP thus the web site needs to be cross-origin isolated to use it.

Potentially trustworthy data: urls

To conform to current web standards, Chrome now treats all data: urls as potentially trustworthy. For background, It's often necessary to evaluate whether a URL is secure in order to only enable certain features when minimum standards of authentication and confidentiality are met. For that purpose, web standards rely on the definition of "potentially trustworthy URL", which includes URLs with the "data" scheme in the latest version of the Secure Contexts specification. Blink previously only treated some data: URLs as potential trustworthy.

Streams API: Byte Streams

The streams APIs provide ubiquitous, interoperable primitives for creating, composing, and consuming streams of data. For streams representing bytes, Chrome now supports an extended version of the readable stream to handle bytes efficiently, specifically by minimizing copies.

Byte streams allow for Bring Your Own Buffer (BYOB) readers to be acquired. The default implementation can give a range of different outputs such as strings or array buffers in the case of web sockets, whereas byte streams guarantee byte output. Furthermore, being able to have BYOB readers has stability benefits. This is because if a buffer detaches, there's now a guarantee that the same buffer won't be written to twice, hence avoiding race conditions. BYOB readers also do not need to garbage collect for every read, because buffers are reused.

Support for full 'filter' property syntax on SVG elements

Chrome now allows the full syntax of the 'filter' property to be used on SVG elements which previously only supported single url() references. This lets filter functions such as blur(), sepia() and grayscale() apply to both SVG elements and non-SVG elements. It makes the platform support for 'filter' more uniform and allows for easier application of some "canned" effects. Without this feature developers need to use a full SVG <filter> element definition even for basic filters such as grayscale() or blur().

WebAuthentication API: ResidentKeyRequirement and credProps extension

Chrome now supports two new features related to the Web Authentication API. The AuthenticatorSelectionCriteria.residentKey property specifies for web authentication credential registration whether a client-side discoverable credential should be created.

The Web Authentication credProps extension indicates to the relying party whether a created credential is client-side discoverable. "Client-side discoverable credentials" are a type of WebAuthn credential that can be challenged by a relying party without needing to provide the credential ID in the WebAuthn API request. Browsers display a list of all discoverable credentials from a given authenticator (either external security key or built-in) and let the user choose one to sign in with.

CSS ::target-text pseudo-element

Adds a highlight pseudo element to allow authors to style scroll-to-text fragments differently from the default user agent highlighting.

flow-relative Corner Rounding properties

Flow-relative corner rounding properties now allow control of corners using logical mappings rather than physical properties. Additionally, this allows authors to set different corner border radii depending on the direction and writing mode of the page.This brings Chrome in line with the CSS Logical Properties and Values spec. The following logical properties have been added:

  • border-start-start-radius
  • border-start-end-radius
  • border-end-start-radius
  • border-end-end-radius
Forced colors property

The forced-colors media feature detects whether the user agent is enforcing a user-chosen limited color palette on the page.

Forced colors adjust property

The forced-color-adjust property allows authors to opt particular elements out of forced colors mode, restoring full control over the colors to CSS.

JavaScript

This version of Chrome incorporates version 8.9 of the V8 JavaScript engine. It specifically includes the changes listed below. You can find a complete list of recent features in the V8 release notes.

Top-level await

Chrome now allows the await keyword at the top level within JavaScript modules. This allows more seamless integration of asynchronous calls into the module loading process. Today this is accomplished by wrapping modules in async functions, but this pushes complexity into dependent modules and exposes implementation details.

Developer Notes Image Orientation with EXIF

EXIF information is now always used to orient cross-origin images. That is, setting image-orientation: none in CSS has no effect on non-secure-origin images. The spec discussion behind the change is available in a CSS working group draft.

Deprecations and Removals

This version of Chrome introduces the deprecations and removals listed below. Visit ChromeStatus.com for lists of current deprecations and previous removals.

Remove prefixed events for <link rel=prerender>

The legacy prefixed events (webkitprerenderstart, webkitprerenderstop, webkitprerenderload, and webkitprerenderdomcontentloaded) dispatched on <link rel=prerender> are now removed from Chrome.

Stop cloning sessionStorage for windows opened with noopener

When a window is opened with noopener, Chrome will no longer clone the sessionStorage of its opener; it will instead start an empty sessionStorage namespace. This brings Chrome in conformance with the HTML specification.

Google Chrome

Versienummer 89.0.4389.72
Releasestatus Final
Besturingssystemen Windows 7, Linux, macOS, Windows Server 2012, Windows 8, Windows 10, Windows Server 2016, Windows Server 2019
Website Google
Download https://www.google.com/chrome/
Licentietype Freeware

Reacties (12)

12
12
9
1
0
2
Wijzig sortering
Misschien ook wel fijn om even te noemen dat er een 'code execution' die actief misbruikt wordt is gefixed in deze versie (CVE-2021-21166).

Ik weet het, is allemaal vrij saai, want automatische updates. Maar toch.
[$TBD][1177465] High CVE-2021-21166: Object lifecycle issue in audio. Reported by Alison Huffman, Microsoft Browser Vulnerability Research on 2021-02-11
[..]
Google is aware of reports that an exploit for CVE-2021-21166 exists in the wild.
https://chromereleases.go...l-update-for-desktop.html

[Reactie gewijzigd door Henk Poley op 27 juli 2024 00:48]

Leuk al die nieuwe API's, het is meer een OS dan een webbrowser aan het worden, met dus nog een plek waar je goed moet letten op de configuratie (waarom bijvb webhid enabled by default ?!?).
Precies ook mijn eerste gedachte. Bijna een compleet OS inmiddels.

Maar misschien is dat ook wel het doel om de laag buiten Chrome die nu nog nodig is in Chrome OS helemaal te kunnen verwijderen en alle API's binnen Chrome beschikbaar te hebben.
Dat zal niet onbewust zijn, hoe meer je in chrome doet, hoe beter ze je kunnen volgen.
We gaan weer terug naar het Mainframe tijdperk. Iedereen een Thin-client om te verbinden met de tien partijen die 90% van al het internet vertegenwoordigen. Smartphones zijn al over de helft die transformatie, en desktops en laptops zijn al goed op weg.
Dat zou zomaar wel eens nog meer kunnen zijn dan je denkt. Kijk naar ChromeOS op de ChromeBooks. OF makkelijker, kijk naar hoe ChromiumOS is opgebouwd: Voor zover ik gezien heb, is dat een linux kernel en een zo min mogelijke runtime omgeving en een Chrome/Chromium browser als grafische omgeving, waar steeds meer door/via die browser wordt gedaan.
Ik zie de toegevoegde waarde van WebHID niet echt. Lijkt de perfect API om je gebruikers te fingerpinten. Gelukkig zijn er nog browsers die deze privacy problemen in zien er niet aan meedoen zoals Webkit/Safaari
Fingerprinten op bases van HIDs gaat lastig worden in Chrome want je moet eerst toestemming krijgen van de gebruiker voordat je toegang tot een HID krijgt. Op https://wicg.github.io/webhid/#security-and-privacy staat duidelijk beschreven hoe ze misbruik van deze API tegengaan.
Ja, dat zal vast maar als je eenmaal toegang hebt gegeven weet je nog steeds niet wat ze gaan uitspoken. Ik vind het ook niet echt toegevoegde waarde hebben. RFC snap ik nog wel.
Beetje een zwak argument als je het mij vraagt. Hoe is dit anders dan dat je op je smartphone een app toestemming geeft tot bepaalde functionaliteit? De browser is niet veel anders dan een doorgeefluik van functionaliteit dat al aanwezig is in het onderliggende OS. En als je het niet vertrouwt dan moet je geen toestemming geven.

De toegevoegde waarde is hetzelfde als bij alle reguliere apps die je op je smartphone draait. Het web als platform wordt op deze manier nog bruikbaarder met als voordeel dat we als consument niet meer (gedwongen) afhankelijk zijn van app stores met allerhande nadelen en restricties van dien. Gewoon een open platform dat op alle apparaten en besturingssystemen te gebruiken is.

[Reactie gewijzigd door Jorick op 27 juli 2024 00:48]

Ja, op iOS kan je per foto aangeven je deze will delen met de app of niet Dan kan volgens mij niet met Android? Maar goed, wat is de toegevoegde waarde WebHID als Safari en Firefox het niet implementeren?
Android heeft een vergelijkbaar permissiemodel als iOS, zie https://developer.android...pics/permissions/overview. Tegenwoordig kunnen apps niet meer ongezien en onbeperkt overal bij tenzij de gebruiker daar expliciet toegang voor geeft.

De toegevoegde waarde van o.a. een WebHID API is dat de browser functioneler wordt en daardoor het web beter kan concurreren met native apps. Dat zou voor Firefox al een goede reden moeten zijn om het te implementeren. Een functionelere browser betekent dat we minder afhankelijk hoeven te zijn van apps en dat is wat mij betreft alleen maar goed.

Dit is niet in het belang van Apple want die willen graag hun macht/positie rond de App Store in stand houden zodat ze ordinair geld kunnen afromen. Voor ontwikkelaars én gebruikers is een open & platform-onafhankelijke web wenselijk omdat we dan zelf de controle behouden over wat we wel/niet met een apparaat mogen doen.

[Reactie gewijzigd door Jorick op 27 juli 2024 00:48]

Op dit item kan niet meer gereageerd worden.