Chrome 120 bêta

Masquage CSS, assouplissement des règles d'imbrication CSS, création de motifs en accordéon avec l'élément <details>, l'action enterpictureinpicture pour l'API Media Session

Sauf indication contraire, les modifications décrites 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, consultez les liens fournis ou consultez la liste sur chromestatus.com. Chrome 120 est en version bêta depuis le 1er novembre 2023. Vous pouvez télécharger la dernière version sur Google.com sur un ordinateur ou sur le Google Play Store sur Android.

CSS

Cette version inclut sept nouvelles fonctionnalités CSS.

Syntaxe CSS <image> pour les propriétés personnalisées enregistrées

Prise en charge de l'utilisation de la syntaxe <image> pour les propriétés personnalisées enregistrées avec @property ou registerProperty(). La syntaxe <image> peut être utilisée pour limiter les valeurs de la propriété personnalisée aux valeurs url() et aux images générées telles que les dégradés.

Syntaxe CSS <transform-function> et <transform-list> pour les propriétés personnalisées enregistrées

Prise en charge des syntaxes <transform-function> et <transform-list> pour les propriétés personnalisées enregistrées auprès de @property ou registerProperty().

La syntaxe peut être utilisée pour limiter les valeurs de la propriété personnalisée afin de représenter des transformations. Cela permet également d'utiliser des transitions et des animations directement sur ces propriétés personnalisées enregistrées.

Requêtes médias: fonctionnalité de script

La fonctionnalité d'écriture de script permet de demander si des langages de script, tels que JavaScript, sont pris en charge dans le document actuel. Les options suivantes sont acceptées : "enabled" (activé), "initial-only" (initiale uniquement) et "none" (aucune). Toutefois, "initial-only" ne correspond jamais à un navigateur.

Sélecteur de pseudo-classe :dir()

Le sélecteur de pseudo-classe CSS :dir() fait correspondre des éléments en fonction de leur orientation. Celle-ci est déterminée à partir de l'attribut "dir" HTML.

:dir(ltr) correspond à l'orientation du texte de gauche à droite. :dir(rtl) correspond aux éléments dont l'orientation du texte s'écrit de droite à gauche.

Il n'est pas équivalent aux sélecteurs d'attribut [dir], car ils correspondent aux directions héritées d'un ancêtre avec l'attribut dir, et à la direction calculée à partir de l'utilisation de dir=auto (qui détermine l'orientation à partir du premier caractère du texte à forte orientation).

Fonctions exponentielles CSS

Ajoute les fonctions exponentielles CSS pow(), sqrt(), hypot(), log() et exp() issues de la spécification "Valeurs CSS" et "Unités de niveau 4".

Masquage CSS

Le code CSS mask et les propriétés associées telles que mask-image et mask-mode permettent de masquer un élément (partiellement ou entièrement) en masquant ou en rognant l'image à des points spécifiques.

Cette fonctionnalité annule le préfixe des propriétés -webkit-mask* et les harmonise avec la spécification actuelle. Cela inclut mask-image, mask-mode, mask-repeat, mask-position, mask-clip, mask-origin, mask-size et mask-composite, ainsi que le raccourci mask. Les références mask-image locales sont prises en charge, la sérialisation correspond désormais à la spécification et les valeurs acceptées correspondent désormais à la spécification (par exemple, add au lieu de source-over pour mask-composite).

Imbrication CSS souple

Cette modification de l'implémentation de l'imbrication CSS permet aux règles de style imbriquées de commencer avec un élément, par exemple h1, au lieu de devoir placer le symbole & au début ou d'être encapsulé avec is(). L'exemple suivant est désormais valide dans la spécification et fonctionne dans Chrome 120.

.card {
  h1 {
    /* h1 does not start with a symbol */
  }
}

HTML

Motif d'accordéon utilisant l'attribut name sur <details>

Cette fonctionnalité permet de construire des accordéons à l'aide d'une séquence d'éléments HTML <details>. Elle ajoute un attribut de nom à l'élément <details>. Lorsque cet attribut est utilisé, plusieurs éléments <details> portant le même nom forment un groupe. Un seul élément du groupe peut être ouvert à la fois.

API Web

Autoriser le transfert de ArrayBuffer dans les constructeurs VideoFrame, AudioData, EncodedVideoChunk, EncodedAudioChunk et ImageDecoder

Cela permettra de dissocier les tampons du tableau et d'utiliser les tampons correspondants dans VideoFrame, ImageDecoder, EncodedVideoChunk, EncodedAudioChunk et AudioData sans copie.

API Font Loading de l'API FontFaceSet: méthode check()

La méthode check() de FontFaceSet vérifie s'il est possible d'afficher du texte avec les polices spécifiées sans essayer d'utiliser des polices dans FontFaceSet dont le chargement n'est pas terminé. Les utilisateurs peuvent ainsi employer la police en toute sécurité sans déclencher de remplacement par la suite.

Requêtes de fermeture et CloseWatcher

Les demandes de fermeture sont un nouveau concept qui englobe les demandes des utilisateurs de fermer un élément ouvert à l'aide de la touche Esc sur ordinateur, ou du geste ou du bouton "Retour" sur Android. Leur intégration dans Chrome implique deux modifications:

  • CloseWatcher, une nouvelle API permettant d'écouter directement les requêtes de fermeture et d'y répondre.
  • Mises à niveau vers <dialog> et popover="" pour utiliser le nouveau framework de requête de fermeture et répondre au bouton "Retour" d'Android.

Nœuds de calcul dédiés et API Storage Access

Les nœuds de calcul dédiés héritent de l'état d'accès à l'espace de stockage du contexte parent. Par conséquent, si un document obtient un accès au stockage via document.requestStorageAccess(), puis crée un nœud de calcul dédié, celui-ci aura également accès au stockage (et pourra accéder aux cookies non partitionnés).

FedCM: API Error et AutoSelectedFlag

API dédiées permettant aux développeurs et aux utilisateurs de mieux comprendre le flux d'authentification Les deux API sont déclenchées une fois que l'utilisateur est autorisé à se connecter à un site Web ou à une application (dans ce contexte, appelé "tiers de confiance") via un fournisseur d'identité. En d'autres termes, une fois que l'utilisateur a cliqué sur le bouton Continuer en tant que.

Avec l'API Error, si la tentative de connexion d'un utilisateur échoue, le fournisseur d'identité peut partager les raisons avec le navigateur pour tenir les utilisateurs et les développeurs tiers assujettis à des restrictions.

Grâce à l'API AutoSelectedFlag, les fournisseurs d'identité et les développeurs tiers assujettis à des restrictions peuvent mieux comprendre l'expérience de connexion, et évaluer les performances et segmenter les métriques en conséquence.

Pour en savoir plus, consultez cet article du blog FedCM sur Chrome 120.

Mises à jour du fonctionnement de Fenced Frames

Il existe une option de format supplémentaire pour les macros de taille d'annonce Protected Audience dans l'API Protected Audience dans la Privacy Sandbox. Une fonctionnalité d'activation vous permet d'utiliser des macros afin de spécifier la taille de l'annonce qui remporte l'enchère dans l'URL de l'annonce. Par exemple:

https://ad.com?width={/%AD_WIDTH%}&height={/%AD_HEIGHT%}

Pour plus de cohérence avec d'autres types de macros dans Protected Audience, comme ceux utilisés par deprecatedReplaceInURN et registerAdMacro(), nous allons ajouter dans Chrome 120 la possibilité d'utiliser le format ${AD_WIDTH} et ${AD_HEIGHT}, en plus du format actuel.

Les balises automatiques sont désormais envoyées à toutes les URL enregistrées. Auparavant, seules les destinations spécifiées lors de l'appel de setReportEventDataForAutomaticBeacons() reçoivent des balises automatiques, même si cette destination appelait registerAdBeacon() pour reserved.top_navigation dans le worklet. Désormais, toute destination qui appelle registerAdBeacon() pour reserved.top_navigation sera associée à une balise automatique, mais seules les destinations spécifiées dans setReportEventDataForAutomaticBeacons() recevront les données automatiques de la balise en même temps que la balise. Le paramètre once de setReportEventDataForAutomaticBeacons() détermine désormais si les données sont envoyées une seule fois, au lieu de déterminer si la balise est envoyée une seule fois.

Marge de défilement de l'observateur d'intersection

L'observateur d'intersection scrollMargin permet aux développeurs d'observer des cibles dans des conteneurs de défilement imbriqués qui sont actuellement tronqués par les conteneurs de défilement. Pour ce faire, développez le rectangle de coupe du conteneur à l'aide de scrollMargin lors du calcul de l'intersection.

Rapports sur les cas de non-respect des règles relatives aux autorisations

Cette API intègre l'API Permissions Policy à l'API Reporting, ce qui permet aux développeurs Web de configurer les points de terminaison pour lesquels les rapports sur les cas de non-respect des règles concernant les autorisations sont envoyés. Les propriétaires de sites peuvent ainsi savoir quand des fonctionnalités non autorisées sont demandées sur leurs pages.

Il inclut également l'en-tête Permissions-Policy-Report-Only, qui permet d'envoyer des rapports en fonction d'une règle proposée (analogique à Content-Security-Policy-Report-Only) afin d'évaluer les modifications apportées aux règles pour détecter d'éventuels problèmes avant de les implémenter en mode d'application standard.

API Media Session: action enterpictureinpicture

Ajoute une action enterpictureinpicture à l'API Media Session. Les sites Web peuvent enregistrer un gestionnaire d'actions qui peut être utilisé pour ouvrir une fenêtre Picture-in-picture ou Document Picture-in-picture.

Pour en savoir plus, consultez Picture-in-picture automatique pour les applications Web.

Compatibilité avec WebGPU f16

Permet d'utiliser le type f16 à virgule flottante demi-précision dans les nuanceurs WebGPU (WGSL).

Les développeurs peuvent utiliser la fonctionnalité "shader-f16" de la spécification WebGPU et l'extension "f16" de la spécification WGSL pour accéder aux variables à virgule flottante 16 bits et aux API dans leurs nuanceurs.

MediaCapabilities: interroger la compatibilité HDR avec decodingInfo()

Étend l'API Media Capabilities pour permettre la détection de la prise en charge du rendu HDR via trois nouveaux champs de dictionnaire VideoConfiguration: hdrMetadataType, colorGamut et transferFunction. Chrome implémente ses propres algorithmes de mappage des tons. Il renvoie donc toujours la valeur "true" pour les métadonnées statiques HDR10 (smpteSt2086). Les métadonnées dynamiques HDR10+ (smpteSt2094-10) et Dolby Vision (smpteSt2094-40) ne sont pas compatibles pour le moment. Par conséquent, elles renverront la valeur "false". Nous prévoyons d'ajouter la prise en charge des métadonnées dynamiques à l'avenir. Cette API permettra donc aux développeurs de sélectionner le contenu approprié pour les utilisateurs disposant de cette API.

Statistiques MediaStreamTrack (vidéo)

API qui expose les compteurs de frames (diffusés, supprimés, totaux) pour les MediaStreamTracks de type vidéo. Les statistiques audio seront abordées lors d'un lancement distinct de fonctionnalités Chrome.

API Private Agrégation: sélection du coordinateur d'agrégation

Modification de l'API Private Aggregation pour fournir un mécanisme permettant de sélectionner le coordinateur à utiliser pour le chiffrement des charges utiles (à partir d'une liste d'autorisation spécifiée par un fournisseur). Le choix du service est possible avec une option supplémentaire dans les appels SharedStorage run() et selectURL(), ainsi que dans les appels Protected Audience runAdAuction() et joinAdInterestGroup(). Cette approche globale correspond en grande partie à celle de l'API Attribution Reporting.

API Login Status dans FedCM

L'API Login Status (anciennement IdP Sign-in Status) permet aux fournisseurs d'identité de signaler au navigateur lorsque leurs utilisateurs se connectent ou se déconnectent.

Elle est utilisée par FedCM pour faire face à une attaque silencieuse par synchronisation et, ainsi, permet à FedCM de fonctionner sans les cookies tiers.

À l'avenir, cette API pourra être disponible pour d'autres cas d'utilisation.

Pour en savoir plus, consultez cet article de blog à ce sujet.

Afficher les transitions: Rendre les rappels non nullables

L'appel startViewTransition utilise actuellement un type de rappel facultatif pouvant avoir une valeur nulle, avec une valeur par défaut nulle: startViewTransition(optional UpdateCallback? callback = null).

Cette fonctionnalité modifie le type pour qu'il devienne un type ne pouvant être nul: startViewTransition(optional UpdateCallback callback).

Encapsulation de clé X25519Kyber768 pour TLS

Protégez le trafic TLS actuel de Chrome contre la future cryptanalyse quantique en déployant l'algorithme de contrat de clé résistant aux quantiques Kyber768. Il s'agit d'un contrat clé hybride X25519 + Kyber768 basé sur une norme IETF. Cette spécification et ce lancement n'entrent pas dans le cadre du W3C. Cet accord clé sera lancé sous la forme d'un algorithme de chiffrement TLS et doit être transparent pour les utilisateurs.

Essais d'origine en cours

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

En-tête de requête HTTP "priorité"

Cette fonctionnalité ajoute l'en-tête de requête priority pour toutes les requêtes HTTP avec les informations de priorité de la requête au moment de son envoi.

RFC 9218 (Extensible Prioritization Scheme pour le protocole HTTP) définit un en-tête de requête HTTP "Priority" (Priorité) à utiliser pour signaler la priorité des requêtes aux origines (et aux intermédiaires). Il définit également les processus de négociation et les trames au niveau du protocole pour que HTTP/2 et HTTP/3 transmettent les mêmes informations de priorité. L'en-tête ne peut indiquer la priorité initiale d'une ressource que lors de sa première demande, tandis que les mécanismes basés sur les trames permettent de modifier la priorité a posteriori. L'en-tête peut fonctionner de bout en bout avec les serveurs d'origine (et fournir à l'origine un mécanisme permettant à l'origine de remplacer la priorité si elle est reconnue par des intermédiaires), tandis que les trames sont limitées au fonctionnement au niveau du lien. Cette fonctionnalité est spécifiquement compatible avec le schéma de priorisation basé sur l'en-tête.

Nous proposons une extension de l'API Storage Access (rétrocompatible) pour permettre l'accès au stockage non partitionné (cookie et non cookie) dans un contexte tiers.

Autorisation d'accès au réseau privé pour assouplir le contenu mixte

Afin d'établir des connexions à des appareils sur un réseau local qui ne possèdent pas de noms uniques et qui ne peuvent donc pas obtenir de certificats TLS, cette fonctionnalité introduit une nouvelle option fetch() permettant de déclarer l'intention d'un développeur de communiquer avec un appareil de ce type, une nouvelle fonctionnalité contrôlée par des règles pour restreindre l'accès de chaque site à cette fonctionnalité, ainsi que de nouveaux en-têtes pour la réponse préliminaire du serveur afin de fournir des métadonnées supplémentaires.

Inscrivez-vous à la phase d'évaluation de l'invite d'autorisation d'accès au réseau privé.

Accès illimité à performance.measureUserAgentSpecificMemory()

La méthode performance.measureUserAgentSpecificMemory() n'est disponible que dans des environnements isolés multi-origines (derrière COOP/COEP). Cette fonctionnalité supprime la restriction COOP/COEP pour permettre des tests de régression et la mesure de l'impact en cas d'impossibilité de déployer complètement COOP/COEP. Notez que performance.memory (ancienne API) ne peut pas être utilisée à cette fin, car elle n'a jamais été activée sur les nœuds de calcul.

performance.measureUserAgentSpecificMemory()

Cette fonctionnalité ajoute une fonction performance.measureUserAgentSpecificMemory() qui estime l'utilisation de la mémoire de la page Web. Pour utiliser l'API, le site Web doit être isolé multi-origine.

Abandons et suppressions

Cette version de Chrome présente les abandons et suppressions listés ci-dessous. Accédez à ChromeStatus.com pour consulter la liste des abandons prévus, des abandons actuels et des suppressions précédentes.

Cette version de Chrome abandonne une fonctionnalité.

Abandon et suppression de la prise en charge de Theora

En raison de nouveaux risques de sécurité, Chrome abandonnera la compatibilité du codec vidéo Theora avec le navigateur Chrome pour ordinateur. L'utilisation de Theora, faible (et désormais souvent incorrecte), ne justifie plus la prise en charge de la plupart des utilisateurs.

Cette version de Chrome supprime deux fonctionnalités.

Supprimer les données: URL dans SVGUseElement

Attribuer une URL de données dans SVGUseElement peut provoquer des erreurs XSS. Cela a aussi conduit à un contournement des Trusted Types. C'est pourquoi nous prévoyons d'abandonner et de supprimer la prise en charge de ce service.

Suppression de l'application globale de la même origine dans CSPEE

Supprime un traitement spécial pour les iFrames de même origine dans l'application intégrée de CSP. Cela permet d'aligner le comportement lié à l'application de CSP Embedded Enforcement pour les iFrames multi-origines et de même origine.