Dans presque toutes les versions de Chrome, nous constatons un nombre important 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, compatible depuis Chrome 37, a toujours fonctionné sur des origines non sécurisées. En raison de la règle de longue date de Chrome qui consiste à privilégier les origines sécurisées pour les fonctionnalités puissantes, crypto.subtle
n'est pas seulement visible sur les origines sécurisées.
Intent to Remove | Bug Chromium
Suppression des navigations vers des URL de données déclenchées par le contenu dans le frame supérieur
En raison de leur manque de familiarité avec les utilisateurs de navigateurs non techniques, nous constatons de plus en plus que le schéma data:
est utilisé dans les attaques par hameçonnage et spoofing. Pour éviter cela, nous empêchons les pages Web de charger des URL data:
dans le frame supérieur. Cela s'applique aux balises <a>
, window.open
, window.location
et aux mécanismes similaires. Le schéma data:
fonctionnera toujours pour les ressources chargées par une page.
Cette fonctionnalité a été abandonnée dans Chrome 58 et est désormais supprimée.
Intent to Remove | Chromestatus Tracker | Bug Chromium
Désactivation temporaire de navigator.sendBeacon() pour certains blobs
La fonction navigator.sendBeacon()
est disponible depuis Chrome 39.
Tel qu'implémenté à l'origine, l'argument data
de la fonction pouvait contenir n'importe quel blob arbitraire dont le type n'est pas listé dans la liste de sécurité CORS. Nous pensons qu'il s'agit d'une menace de sécurité potentielle, bien que personne n'ait encore essayé de l'exploiter. Étant donné que nous ne disposons PAS d'un correctif immédiat raisonnable, sendBeacon()
ne peut plus être appelé temporairement sur les blobs dont le type n'est PAS listé dans la liste de sécurité CORS.
Bien que cette modification ait été implémentée pour Chrome 60, elle a depuis été fusionnée dans Chrome 59.
CSS
Faire en sorte que le combinateur descendant qui perce les ombres se comporte comme le combinateur descendant
Le combinator descendant qui perce l'ombre (>>>
), qui fait partie du niveau 1 du module d'énumération CSS, était destiné à faire correspondre les enfants d'un élément ancêtre particulier, même lorsqu'ils apparaissaient dans un arbre d'ombre. Cette approche présentait certaines limites.
Tout d'abord, selon la spécification, 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 réussi à le faire fonctionner au-delà d'un niveau du DOM fantôme.
Par conséquent, le combinateur descendant a été supprimé des spécifications pertinentes, y compris de Shadow DOM v1. Plutôt que de casser les pages Web en supprimant ce sélecteur de Chromium, nous avons choisi d'ajouter un alias au combinateur descendant qui perce les ombres au combinateur descendant. Le comportement d'origine a été obsolète dans Chrome 45. Ce nouveau comportement est implémenté dans Chrome 61.
Intent to Remove | Chromestatus Tracker | 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 l'ont déjà supprimé de leurs implémentations. Bien que cette fonction soit peu utilisée, il existe un risque d'interopérabilité mineur avec Edge et les navigateurs basés sur WebKit à l'exception de Safari, où getStreamById()
est toujours pris en charge. Les développeurs qui ont besoin d'une implémentation alternative peuvent trouver un exemple de code dans l'intent de suppression ci-dessous.
La suppression est prévue dans Chrome 62.
Intent to Remove | Chromestatus Tracker | Bug Chromium
Abandon de SVGPathElement.getPathSegAtLength
Il y a plus de deux ans, getPathSegAtLength()
a été supprimé de la spécification SVG. Étant donné qu'il n'y a que quelques résultats pour cette méthode dans httparchive, elle est obsolète dans Chrome 60. La suppression devrait intervenir dans Chrome 62, qui sera disponible début ou mi-octobre.
Intent to Deprecate | Chromestatus Tracker | Bug Chromium
Déplacer getContextAttributes() derrière un indicateur
La fonction getContextAttributes()
est prise en charge sur CanvasRenderingContext2D
depuis 2013. Toutefois, cette fonctionnalité ne faisait partie d'aucune norme et n'en fait toujours pas partie. Il aurait dû être implémenté derrière l'indicateur de ligne de commande --enable-experimental-canvas-features
, mais il ne l'a pas été par erreur. Dans Chrome 60, cette erreur a été corrigée. On considère que ce changement est sûr, car aucune donnée ne montre que quelqu'un utilise cette méthode.
Suppression de Headers.prototype.getAll()
La fonction Headers.prototype.getAll()
est supprimée conformément à la dernière version de la spécification Fetch.
Intent to Remove | Chromestatus Tracker | Bug Chromium
Suppression de indexedDB.webkitGetDatabaseNames()
Nous avons ajouté cette fonctionnalité lorsque IndexedDB était relativement nouveau dans Chrome et que le préfixage était à la mode. L'API renvoie de manière asynchrone une liste des noms de bases de données existants dans une origine, ce qui semble assez raisonnable.
Malheureusement, la conception est imparfaite, car les résultats peuvent être obsolètes dès qu'ils sont renvoyés. Elle ne peut donc être utilisée que pour la journalisation, et non pour une logique d'application sérieuse. Le problème GitHub suit/fait référence à une discussion précédente sur des alternatives, qui nécessiteraient une approche différente. Bien que les développeurs aient manifesté un intérêt intermittent, compte tenu du manque de progrès inter-navigateurs, les auteurs de la bibliothèque ont contourné le problème.
Les développeurs qui ont besoin de cette fonctionnalité doivent développer leur propre solution. Par exemple, des bibliothèques telles que Dexie.js utilisent 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é a été abandonnée dans Chrome 58 et est désormais supprimée.
Intent to Remove | Chromestatus Tracker | Bug Chromium
Suppression de WEBKIT_KEYFRAMES_RULE et WEBKIT_KEYFRAME_RULE
Les constantes non standards WEBKIT_KEYFRAMES_RULE
et WEBKIT_KEYFRAME_RULE
sont supprimées de la règle CSS.
Les développeurs doivent utiliser KEYFRAMES_RULE
et KEYFRAME_RULE
à la place.
Intent to Remove | Chromestatus Tracker | 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 de l'utilisateur (ou si un frame intégré a reçu un tel geste). Pour être clair, il ne s'agit pas d'un changement de la distribution de l'événement beforeunload
. Il ne s'agit que d'une modification de l'affichage de la boîte de dialogue.
La boîte de dialogue beforeunload
est une boîte de dialogue modale pour l'application. Par conséquent, il est intrinsèquement hostile à l'utilisateur, ce qui signifie qu'il répond à la navigation de l'utilisateur en remettant en question sa décision. Cette fonctionnalité peut être utilisée de manière positive. Par exemple, il est souvent utilisé pour avertir les utilisateurs lorsqu'ils vont perdre 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. Plus particulièrement, les boîtes de dialogue beforeunload
sont un ingrédient des sites Web d'escroquerie, où le contenu audio en lecture automatique et le texte menaçant fournissent un contexte dans lequel le message "Êtes-vous sûr de vouloir quitter cette page ?" fourni par Chromium devient inquiétant.
Nous souhaitons trouver le juste équilibre et n'autoriser que les bonnes utilisations de la boîte de dialogue beforeunload
. Les bons cas d'utilisation de la boîte de dialogue sont ceux où l'état de l'utilisateur peut être perdu. Si l'utilisateur n'a jamais interagi avec la page, il ne peut pas perdre d'état. Par conséquent, nous ne risquons pas de perdre des données utilisateur en supprimant la boîte de dialogue dans ce cas.