Abandons et suppressions dans Chrome 60

Joe Medley
Joe Medley

Dans presque chaque version de Chrome, nous constatons un grand nombre de mises à jour et d'améliorations du produit, de ses performances et des fonctionnalités de la plate-forme Web. Cet article décrit les abandons et les suppressions dans Chrome 60, qui est en version bêta depuis le 8 juin. Cette liste est susceptible d'être modifiée à tout moment.

Sécurité

crypto.subtle nécessite désormais une origine sécurisée

L'API Web Crypto, prise en charge depuis Chrome 37, a toujours travaillé sur des origines non sécurisées. En raison de la règle établie de longue date par Chrome qui préfère les origines sécurisées pour les fonctionnalités puissantes, crypto.subtle n'est pas uniquement visible sur les origines sécurisées.

Intention de suppression | Bug Chromium

Supprimer les navigations à l'aide des cadres supérieurs déclenchées par le contenu des URL de données

En raison du caractère inconnu des utilisateurs de navigateurs non techniques, nous constatons de plus en plus que le schéma data: est utilisé dans les attaques de spoofing et d'hameçonnage. Pour éviter cela, nous empêchons les pages Web de charger les URL data: dans le frame supérieur. Cela s'applique aux balises <a>, window.open, window.location et à des mécanismes similaires. Le schéma data: continue de fonctionner pour les ressources chargées par une page.

Cette fonctionnalité était obsolète dans Chrome 58 et est désormais supprimée.

Intention de suppression | Outil de suivi Chromestatus | Bug Chromium

Désactiver temporairement navigateurator.sendBeacon() pour certains blobs.

La fonction navigator.sendBeacon() est disponible depuis Chrome 39. Tel qu'il est implémenté initialement, l'argument data de la fonction peut contenir tout blob arbitraire dont le type ne figure pas dans la liste sécurisée CORS. Nous pensons qu'il s'agit d'une menace potentielle pour la sécurité, mais personne n'a encore tenté de l'exploiter. Étant donné que nous n'avons PAS de solution immédiate à ce problème, temporairement, sendBeacon() ne peut plus être appelé sur les blobs dont le type n'est PAS inclus dans la liste sécurisée CORS.

Bien que cette modification ait été mise en œuvre pour Chrome 60, elle a depuis été fusionnée avec Chrome 59.

Bug Chromium

CSS

Rendre le combinateur de descendants perceur d'ombres se comporter comme un combinateur de descendants

Le combinateur descendant anti-ombre (>>>), qui fait partie du module de champ d'application CSS de niveau 1, était destiné à correspondre aux enfants d'un élément ancêtre particulier, même lorsqu'ils apparaissaient à l'intérieur d'un arbre fantôme. Cela avait certaines limites. Tout d'abord, conformément aux spécifications, il ne pouvait être utilisé que dans les appels JavaScript tels que querySelector() et ne fonctionnait pas dans les feuilles de style. Plus important encore, les fournisseurs de navigateurs n'ont pas pu faire fonctionner au-delà d'un niveau du Shadow DOM.

Par conséquent, le combinateur descendant a été supprimé des spécifications pertinentes, y compris Shadow DOM v1. Plutôt que de casser les pages Web en supprimant ce sélecteur de Chromium, nous avons choisi d'alias le combinateur descendant qui masque les ombres et le combinateur descendant. Le comportement d'origine a été abandonné dans Chrome 45. Le nouveau comportement est implémenté dans Chrome 61.

Intention de suppression | Outil de suivi Chromestatus | Bug Chromium

JavaScript

Abandon et suppression de RTCPeerConnection.getStreamById()

Il y a près de deux ans, getStreamById() a été supprimé de la spécification WebRTC. La plupart des autres navigateurs ont déjà supprimé cette fonctionnalité de leurs implémentations. Bien que cette fonction soit considérée comme peu utilisée, elle présente également un risque mineur d'interopérabilité avec les navigateurs basés sur Edge et WebKit, autres que Safari, où getStreamById() est toujours pris en charge. Les développeurs qui ont besoin d'une autre implémentation peuvent trouver un exemple de code dans la section "Intent à supprimer" ci-dessous.

La suppression est effectuée dans Chrome 62.

Intention de suppression | Outil de suivi Chromestatus | Bug Chromium

Abandon de SVGPathElement.getPathSegAtLength

Il y a plus de deux ans, getPathSegAtLength() a été supprimé de la spécification SVG. Comme il n'y a que quelques appels pour cette méthode dans httparchive, elle sera abandonnée dans Chrome 60. La suppression devrait avoir lieu dans Chrome 62, qui sera disponible début ou mi-octobre.

Intention d'abandon | Outil de suivi de l'état Chrome | Bug Chromium

Déplacer getContextAttributes() derrière un indicateur

La fonction getContextAttributes() est compatible avec CanvasRenderingContext2D depuis 2013. Cependant, cette fonctionnalité ne faisait partie d'aucune norme et n'en a pas été intégrée depuis cette date. Il aurait dû être implémenté derrière l'indicateur de ligne de commande --enable-experimental-canvas-features, mais ce n'est pas le cas par erreur. Ce problème a été corrigé dans Chrome 60. Cette modification est considérée comme sans risque, car aucune donnée ne montre que quelqu'un utilise cette méthode.

Bug Chromium

Supprimer Headers.prototype.getAll()

La fonction Headers.prototype.getAll() est en cours de suppression conformément à la dernière version de la spécification Fetch.

Intention de suppression | Outil de suivi Chromestatus | Bug Chromium

Suppression de indexéeDB.webkitGetDatabaseNames()

Nous avons ajouté cette fonctionnalité lorsque la base de données indexée était relativement récente dans Chrome et que les préfixes étaient devenus très répandus. L'API renvoie de manière asynchrone une liste de noms de bases de données existantes dans une origine, ce qui semblait suffisamment judicieux.

Malheureusement, la conception présente des défauts, car les résultats peuvent devenir obsolètes dès qu'ils sont renvoyés. Ils ne peuvent donc être réellement utilisés que pour la journalisation, et non pour une logique d'application sérieuse. Le problème GitHub suit/lien vers la discussion précédente sur les alternatives, ce qui nécessiterait une approche différente. Bien que les développeurs aient manifesté un intérêt constant de la part des développeurs, compte tenu de l'absence de progression entre les navigateurs, les auteurs de bibliothèques ont résolu le problème.

Les développeurs qui ont besoin de cette fonctionnalité doivent développer leur propre solution. Les bibliothèques telles que Dexie.js utilisent par exemple une table globale qui est elle-même une autre base de données pour suivre les noms des bases de données.

Cette fonctionnalité était obsolète dans Chrome 58 et est désormais supprimée.

Intention de suppression | Outil de suivi de l'état Chrome | Bug Chromium

Supprimer WEBKIT_KEYFRAMES_RULE et WEBKIT_KEYFRAME_RULE

Les constantes WEBKIT_KEYFRAMES_RULE et WEBKIT_KEYFRAME_RULE non standards sont supprimées de la règle CSS. Les développeurs doivent utiliser KEYFRAMES_RULE et KEYFRAME_RULE à la place.

Intention de suppression | Outil de suivi de l'état Chrome | Bug Chromium

Interface utilisateur

Exiger un geste de l'utilisateur pour les boîtes de dialogue beforeunload

À partir de Chrome 60, la boîte de dialogue beforeunload ne s'affiche que si le frame qui tente de l'afficher a reçu un geste ou une interaction utilisateur (ou si un frame intégré a reçu un tel geste). Notez qu'il ne s'agit pas d'une modification de l'envoi de l'événement beforeunload. Il s'agit simplement de changer l'affichage ou non de la boîte de dialogue.

La boîte de dialogue beforeunload est une boîte de dialogue modale de l'application. De ce fait, elle est intrinsèquement hostile pour l'utilisateur, c'est-à-dire qu'elle répond à la navigation d'un utilisateur en remettant en question sa décision. Cette fonctionnalité peut être utilisée de façon positive. Par exemple, il est souvent utilisé pour avertir les utilisateurs lorsqu'ils perdront des données en naviguant.

Bien que la possibilité pour une page de fournir du texte pour la boîte de dialogue beforeunload ait été supprimée il y a quelque temps, les boîtes de dialogue beforeunload restent un vecteur d'abus. En particulier, les boîtes de dialogue beforeunload sont une composante des sites Web frauduleux. La lecture automatique de contenus audio et le texte menaçant indiquent que le message "Voulez-vous vraiment quitter cette page ?" dans Chromium devient inquiétant.

Nous voulons enfiler l'aiguille et n'autoriser que les bonnes utilisations de la boîte de dialogue beforeunload. La boîte de dialogue est utilisée de manière appropriée si l'utilisateur dispose d'un état susceptible d'être perdu. Si l'utilisateur n'a jamais interagi avec la page, il ne peut pas connaître d'état susceptible d'être perdu. Par conséquent, nous ne risquons pas de perdre des données utilisateur en supprimant la boîte de dialogue dans ce cas.