Version bêta de Chrome 135

Publié le 5 mars 2025

Sauf indication contraire, les modifications suivantes s'appliquent à la dernière version bêta de Chrome pour Android, ChromeOS, Linux, macOS et Windows. Pour en savoir plus sur les fonctionnalités listées ici, cliquez sur les liens fournis ou consultez la liste sur ChromeStatus.com. Chrome 135 est en version bêta depuis le 5 mars 2025. Vous pouvez télécharger la dernière version sur Google.com pour ordinateur ou sur le Google Play Store sur Android.

CSS et interface utilisateur

Cette version ajoute 13 nouvelles fonctionnalités CSS et d'interface utilisateur.

Décalage de défilement mémorisé pour le positionnement de l'ancre

Ajout de la prise en charge du concept de décalage de défilement mémorisé. Lorsqu'un élément positionné comporte une ancre par défaut, qu'il est lié à cette ancre sur un bord et au bloc conteneur d'origine sur l'autre bord, le décalage de défilement est pris en compte lors du dimensionnement de l'élément. Cela signifie que vous pouvez utiliser tout l'espace visible (à l'aide de position-area) pour l'élément ancré lorsque le document est défilé à un décalage de défilement donné. Pour éviter la mise en page (redimensionnement de l'élément) chaque fois que le document est défilé, le navigateur utilise le décalage de défilement mémorisé au lieu d'utiliser systématiquement le décalage de défilement actuel. Le décalage de défilement mémorisé est mis à jour au niveau d'un point de recalcul de l'ancre, qui correspond à la position où l'élément positionné est initialement affiché ou, lorsqu'une autre option de position (position-try-fallbacks) est choisie.

Inertie CSS

Le fait de rendre un élément inerte a une incidence sur la possibilité de le sélectionner, de le modifier, de le sélectionner et de le rechercher dans la page. Cela a également une incidence sur sa visibilité dans l'arborescence d'accessibilité. La propriété interactivity spécifie si un élément et ses descendants d'arborescence plate (y compris les séquences de texte) sont inertes ou non. La propriété interactivity accepte l'une des deux valeurs suivantes : auto ou inert.

Propriétés de débordement logiques

Les propriétés CSS overflow-inline et overflow-block vous permettent de définir le débordement dans le sens en ligne et de bloc par rapport au mode d'écriture. Dans un mode d'écriture horizontal, overflow-inline correspond à overflow-x, tandis que dans un mode d'écriture vertical, il correspond à overflow-y.

Propriété dynamic-range-limit

Permet à une page de limiter la luminosité maximale du contenu HDR.

Fonction shape()

La fonction shape() autorise les formes libres réactives dans la propriété clip-path. Elle vous permet de définir une série de commandes, équivalentes à celles de path(). Toutefois, les commandes acceptent les unités réactives (par exemple, % ou vw), ainsi que toutes les valeurs CSS telles que les propriétés personnalisées.

Pseudo-élément ::column

Un pseudo-élément ::column, qui permet d'appliquer un ensemble limité de styles aux fragments générés. Plus précisément, cela se limite aux styles qui n'affectent pas la mise en page et qui peuvent donc être appliqués après la mise en page.

Pseudo-éléments ::scroll-button()

Permettent de créer des boutons de défilement interactifs en tant que pseudo-éléments. Exemple :

.scroller {
  overflow: auto;
}

.scroller::scroll-button(inline-start) {
  content: "<";
}

.scroller::scroll-button(inline-end) {
  content: ">";
}

Ils doivent être sélectionnables et se comporter comme un bouton (y compris leurs styles UA). Lorsqu'ils sont activés, un défilement doit être effectué dans la direction d'un certain montant. Lorsqu'il n'est pas possible de faire défiler dans cette direction, ils doivent être désactivés (et stylisés avec :disabled), sinon ils sont activés (et stylisés avec :enabled). Le sélecteur vous permet de définir des boutons dans quatre directions logiques : block-start, block-end, inline-start, inline-end, ainsi que dans quatre directions physiques : up, down, left, right.

::scroll-marker et ::scroll-marker-group

Ajoute ::scroll-marker et ::scroll-marker-group pour les conteneurs de défilement. Ces pseudo-éléments vous permettent de créer un ensemble de repères sélectionnables pour tous les éléments associés dans le conteneur de défilement.

Stylisation des pseudo-éléments imbriqués

Permet de styliser les pseudo-éléments imbriqués dans d'autres pseudo-éléments. Jusqu'à présent, la prise en charge est définie pour : ::before::marker et ::after::marker, ::column::scroll-marker étant pris en charge à l'avenir.

Pour éviter les fuites de l'historique de navigation des utilisateurs, les éléments d'ancrage ne sont stylisés en tant que :visited que si les utilisateurs ont déjà cliqué dessus à partir de ce site de premier niveau et de cette origine de frame. Styliser uniquement les liens sur lesquels l'utilisateur a déjà cliqué sur ce site et dans ce frame permet de rendre obsolètes les nombreuses attaques par canal auxiliaire développées pour exploiter le style des liens :visited, car elles ne fournissent plus de nouvelles informations sur les utilisateurs aux sites.

Une exception s'applique aux liens auto, pour lesquels les liens pointant vers les pages d'un site peuvent être stylisés en tant que :visited, même si les utilisateurs n'ont jamais cliqué dessus sur ce site de premier niveau et cette origine de frame. Cette exception n'est activée que dans les frames de premier niveau ou les sous-frames ayant la même origine que le frame de premier niveau. Les avantages en termes de confidentialité sont toujours obtenus, car les sites savent déjà quelles sous-pages un utilisateur a consultées. Aucune nouvelle information n'est donc exposée. Il s'agit d'une exception demandée par la communauté qui améliore l'expérience utilisateur.

Notation fonctionnelle de la progression de l'interpolation : fonction CSS *progress()

Variables safe-area-max-inset-*

En plus des variables d'environnement safe-area-inset, Chrome est désormais compatible avec les variantes max-area-safe-inset-* de ces variables. Contrairement aux insets dynamiques, les insets max ne changent pas et représentent l'inset maximal possible de la zone sécurisée.

Ces valeurs sont nécessaires lors de la création d'expériences Web performantes de bout en bout.

API Web

Ajout de la prise en charge de MediaStreamTrack à l'API Web Speech

Ajout de la prise en charge de MediaStreamTrack à l'API Web Speech. L'API Web Speech est une API standard Web qui permet aux développeurs d'intégrer la reconnaissance et la synthèse vocales dans leurs pages Web. Actuellement, l'API Web Speech utilise le micro par défaut de l'utilisateur comme entrée audio. La prise en charge de MediaStreamTrack permet aux sites Web d'utiliser l'API Web Speech pour sous-titrer d'autres sources audio, y compris des pistes audio à distance.

Partitionnement des URL blob : extraction et navigation

Dans le cadre de la proposition Storage Partitioning, cette fonctionnalité implémente le partitionnement de l'accès aux URL blob par clé de stockage (site de premier niveau, origine des frames et valeur booléenne has-cross-site-ancestor), à l'exception des navigations de niveau supérieur qui ne seront partitionnées que par origine de frame.

CSP require-sri-for pour les scripts

La directive require-sri-for vous permet d'affirmer que chaque ressource d'un type donné doit être vérifiée en termes d'intégrité. Si une ressource de ce type tente d'être chargée sans métadonnées d'intégrité, cette tentative échoue et déclenche un rapport de violation CSP. Cette intention couvre la "script" valeur de cette directive.

Créer un client de service worker et hériter du contrôleur de service worker pour l'iFrame srcdoc

Les documents de contexte srcdoc ne sont actuellement pas des clients de service worker et ne sont pas couverts par le service worker de leur parent. Cela entraîne des divergences (par exemple, l'entrée Resource Timing indique les URL que ces documents chargent, mais le service worker ne les intercepte pas). L'objectif est de corriger ces divergences en créant des clients de service worker pour les iFrames srcdoc et en les faisant hériter du contrôleur de service worker de leur parent.

Envoi d'événements de clic au pointeur capturé

Si un pointeur est capturé lors de l'envoi de l'événement pointerup, l'événement click est envoyé à la cible capturée au lieu de l'ancêtre commun le plus proche des événements pointerdown et pointerup, conformément à la spécification des événements d'interface utilisateur. Pour les pointeurs non capturés, la cible click reste inchangée.

Float16Array

Ajoute le tableau typé Float16Array. Les valeurs numériques sont arrondies à IEEE fp16 lors de l'écriture dans des instances Float16Array.

Intégration de l'initiateur de navigation dans la clé de partition du cache HTTP

Le schéma de clé de cache HTTP de Chrome a été mis à jour pour inclure un booléen is-cross-site-main-frame-navigation afin d'atténuer les attaques de fuite intersites impliquant la navigation de premier niveau. Plus précisément, cela empêchera les attaques intersites dans lesquelles un pirate informatique peut lancer une navigation de premier niveau vers une page donnée, puis accéder à une ressource connue pour être chargée par la page afin d'inférer des informations sensibles via le timing de chargement. Cette modification améliore également la confidentialité en empêchant un site malveillant d'utiliser des navigations pour déduire si un utilisateur a déjà consulté un site donné.

Prévention du suivi HSTS

Limite le suivi des utilisateurs par des tiers via le cache HSTS.

Cette fonctionnalité n'autorise les mises à niveau HSTS que pour les navigations de niveau supérieur et bloque les mises à niveau HSTS pour les requêtes de sous-ressources. Cela empêche les sites tiers d'utiliser le cache HSTS pour suivre les utilisateurs sur le Web.

Commandes d'appel : attributs command et commandfor

Les attributs command et commandfor des éléments <button> vous permettent d'attribuer un comportement aux boutons de manière plus accessible et déclarative, tout en réduisant les bugs et en simplifiant la quantité de code JavaScript nécessaire à l'interactivité. Les boutons avec commandfor et command envoient un CommandEvent à l'élément référencé par commandfor lorsqu'ils sont cliqués, touchés ou activés par une pression sur une touche, avec certains comportements par défaut tels que l'ouverture de boîtes de dialogue et de pop-ups.

Ajoute la prise en charge de <link rel="facilitated-payment" href="..."> comme indication que le navigateur doit informer les clients de paiement enregistrés d'un paiement push en attente de paiement.

Propriété sourceElement de NavigateEvent

Lorsqu'une navigation est lancée par un élément (c'est-à-dire un clic sur un lien ou l'envoi d'un formulaire), la propriété sourceElement de NavigateEvent renvoie l'élément initiateur.

Modification du nom de la raison de l'API NotRestoredReasons

L'API NotRestoredReasons modifie certains textes de raison pour les aligner sur les noms standardisés. Les développeurs qui surveillent ces raisons peuvent remarquer une modification des textes de raison.

API Web Speech sur l'appareil

Le client de service worker ignore les modifications d'URL history.pushState

Modifie la propriété Client.url du service worker pour ignorer les modifications d'URL du document à l'aide de history.pushState() et d'autres API d'historique similaires. La propriété Client.url est destinée à être l'URL de création du document HTML qui ignore ces modifications.

Prise en charge des attributs rel et relList pour SVGAElement

L'interface SVGAElement dans SVG 2.0 permet de manipuler des éléments <a> semblables à des éléments d'ancrage HTML. La prise en charge des attributs rel et relList améliore la sécurité et la confidentialité pour les développeurs. Cet alignement avec les éléments d'ancrage HTML garantit la cohérence et la facilité d'utilisation entre les technologies Web.

Codes temporels pour les frames encodées RTC

Cette fonctionnalité consiste à exposer au Web certains codes temporels présents dans les frames encodées WebRTC transmises via RTCPeerConnection. Les codes temporels en question sont les suivants :

  • Code temporel de capture : code temporel indiquant le moment où un frame a été capturé à l'origine
  • Code temporel de réception : code temporel indiquant le moment où un frame a été reçu

Modifier ProgressEvent afin d'utiliser le type double pour "loaded" et "total"

L'élément ProgressEvent comporte des attributs loaded et total indiquant la progression, et leur type est désormais unsigned long long. Avec cette fonctionnalité, le type de ces deux attributs est remplacé par double, ce qui permet au développeur de mieux contrôler la valeur. Par exemple, les développeurs peuvent désormais créer un ProgressEvent avec un total de 1 et un loaded qui augmente progressivement de 0 à 1. Cela correspond au comportement par défaut de l'<progress> élément HTML si l'attribut max est omis.

API fetchLater

L'API fetchLater() est une API JavaScript permettant de demander une extraction différée, particulièrement utile pour une signalisation plus fiable à la fin de la durée de vie d'une page. Une fois appelée dans un document, une requête différée est mise en file d'attente par le navigateur à l'état EN ATTENTE et est appelée par la première des conditions suivantes :

Le document est détruit. Après une durée spécifiée par l'utilisateur. Pour des raisons de confidentialité, toutes les requêtes en attente sont vidées lorsque le document entre dans le bfcache, quel que soit le temps restant. Le navigateur décide qu'il est temps de l'envoyer.

L'API renvoie un FetchLaterResult contenant un champ booléen activated qui peut être mis à jour pour indiquer si la requête différée a été envoyée ou non. En cas d'envoi réussi, l'ensemble de la réponse est ignoré par le navigateur, y compris le corps et les en-têtes.

Notez que du point de vue de l'utilisateur de l'API, l'heure d'envoi exacte est inconnue.

Nouvelles phases d'évaluation

Dans Chrome 135, vous pouvez activer les nouvelles phases d'évaluation suivantes.

Demandeurs d'intérêt

Cette fonctionnalité ajoute un interesttarget attribut aux <button> et <a> éléments. L'attribut interesttarget ajoute des comportements "d'intérêt" à l'élément, de sorte que lorsque l'utilisateur "manifeste un intérêt" pour l'élément, des actions sont déclenchées sur l'élément cible. Les actions peuvent inclure l'affichage d'un pop-up. L'agent utilisateur gère la détection du moment où l'utilisateur "manifeste un intérêt" pour l'élément, à l'aide de méthodes telles que le survol de l'élément avec une souris, l'utilisation de raccourcis clavier spéciaux ou l'appui prolongé sur l'élément sur les écrans tactiles. Lorsque l'intérêt est manifesté ou perdu, un InterestEvent est déclenché sur la cible, qui comporte des actions par défaut dans le cas des pop-ups : afficher et masquer le pop-up.

Intégrité basée sur la signature

Cette fonctionnalité fournit aux développeurs Web un mécanisme permettant de vérifier la provenance des ressources dont ils dépendent, créant ainsi une base technique pour la confiance dans les dépendances d'un site. En bref, les serveurs peuvent signer des réponses avec une paire de clés Ed25519, et les développeurs Web peuvent exiger que l'agent utilisateur vérifie la signature à l'aide d'une clé publique spécifique. Cela constitue un ajout utile aux vérifications basées sur les URL proposées par la Content Security Policy d'une part, et aux vérifications basées sur le contenu de l'intégrité des sous-ressources d'autre part.

Abandon et suppression

Cette version de Chrome introduit les abandons et les suppressions listés ci-dessous. Consultez ChromeStatus.com pour obtenir la liste des abandons prévus, des abandons actuels et des suppressions précédentes.

Cette version de Chrome abandonne une fonctionnalité.

Abandon des getters dans Intl Locale Info

L'API Intl Locale Info est une proposition ECMAScript TC39 de phase 3 visant à améliorer l'objet Intl.Locale en exposant des informations sur les paramètres régionaux, telles que les données relatives aux semaines (premier jour de la semaine, jour de début du week-end, jour de fin du week-end, valeur minimale du jour de la première semaine), l'orientation du texte et le cycle horaire utilisé dans les paramètres régionaux. Chrome a implémenté une implémentation dans Chrome 99, mais la proposition a été modifiée pour déplacer plusieurs getters vers des fonctions. Nous devons supprimer les getters obsolètes et relancer les fonctions renommées.

Cette version de Chrome supprime trois fonctionnalités.

Suppression de la méthode navigator.xr.supportsSession obsolète

La méthode navigator.xr.supportsSession a été remplacée par navigator.xr.isSessionSupported dans la spécification WebXR en septembre 2019 après des retours sur la conception de l'API de la part du TAG. Depuis, elle a été marquée comme obsolète dans Chrome, ce qui génère un avertissement dans la console redirigeant les développeurs vers l'API mise à jour. L'utilisation de l'appel est très faible, et il a été confirmé que tous les principaux frameworks utilisés pour créer du contenu WebXR ont été mis à jour pour utiliser le nouvel appel.

Suppression de la propriété canTransition de NavigateEvent

Dans Chrome 108, la méthode transitionWhile() et la propriété canTransition de NavigateEvent ont été remplacées par la nouvelle méthode intercept() et la propriété canIntercept. À ce moment-là, la méthode transitionWhile() a été supprimée. Cependant, nous avons oublié de supprimer la propriété canTransition. Au lieu de cela, nous l'avons laissée comme alias pour canIntercept. Dans Chrome 135, nous corrigeons ce problème et supprimons canTransition. Toutes les utilisations de canTransition peuvent être remplacées par canIntercept, sans aucun changement de comportement.

Suppression de la limite WebGPU maxInterStageShaderComponents

La limite maxInterStageShaderComponents est supprimée en raison d'une combinaison de facteurs :

  • Redondance avec maxInterStageShaderVariables : cette limite a déjà un objectif similaire, qui consiste à contrôler la quantité de données transmises entre les étapes du shader.
  • Écarts mineurs : bien qu'il existe de légères différences dans le calcul des deux limites, ces différences sont mineures et peuvent être gérées efficacement dans la maxInterStageShaderVariables limit.
  • Simplification : la suppression de maxInterStageShaderComponents simplifie l'interface du shader et réduit la complexité pour les développeurs. Au lieu de gérer deux limites distinctes (qui s'appliquent simultanément, mais avec de légères différences), ils peuvent se concentrer sur maxInterStageShaderVariables, qui est plus approprié et complet.