Abandon et suppression d'API dans Chrome 57

Joe Medley
Joe Medley

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 fonctionnalités abandonnées et supprimées dans Chrome 57, qui est en version bêta depuis début février. Cette liste est susceptible d'être modifiée à tout moment.

Suppression de l'attribut BluetoothDevice.uuids

L'attribut BluetoothDevice.uuids est supprimé pour mettre l'API Web Bluetooth en conformité avec la spécification actuelle. Vous pouvez récupérer tous les services GATT autorisés en appelant device.getPrimaryServices().

Bug Chromium

Supprimer l'élément de génération de clés

Depuis Chrome 49, le comportement par défaut de <keygen> est de renvoyer la chaîne vide, sauf si une autorisation a été accordée à cette page. IE/Edge n'est pas compatible avec <keygen> et n'a pas indiqué de signaux publics pour prendre en charge <keygen>. Firefox limite déjà <keygen> derrière un geste utilisateur, mais soutient publiquement sa suppression. Safari fournit <keygen> et n'a pas exprimé d'avis publics concernant sa prise en charge continue. Avec Chrome 57, cet élément est supprimé.

Intent to Remove | Chromestatus Tracker | Bug Chromium

Suppression de l'API de gestion des tampons de temporisation des ressources avec préfixe

Deux méthodes et un gestionnaire d'événements, webkitClearResourceTimings(), webkitSetResourceTimingBufferSize() et onwebkitresourcetimingbufferfull, sont obsolètes et spécifiques au fournisseur. Les versions standards de ces API sont compatibles depuis Chrome 46, et les fonctions avec préfixe ont également été abandonnées dans cette version. Ces fonctionnalités ont été implémentées à l'origine dans WebKit, mais Safari ne les a pas activées. Firefox, IE 10 et versions ultérieures, et Edge ne disposent que de la version non préfixée de l'API. Par conséquent, les versions WebKit sont supprimées.

Intent to Remove | Chromestatus Tracker | Bug Chromium

Suppression de ServiceWorkerMessageEvent au profit de MessageEvent

La spécification HTML a étendu MessageEvent pour autoriser ServiceWorker comme type pour l'attribut source. client.postMessage() et la création d'événements de message personnalisés sont modifiés pour utiliser MessageEvent au lieu de ServiceWorkerMessageEvent. ServiceWorkerMessageEvent a bien été supprimé.

Intent to Remove | Chromestatus Tracker | Bug Chromium

Suppression des alias globaux IndexedDB avec préfixe webkit

Le point d'entrée IndexedDB et les constructeurs globaux ont été exposés avec des préfixes webkit vers Chrome 11. Les versions sans préfixe ont été ajoutées dans Chrome 24, et les versions avec préfixe ont été abandonnées dans Chrome 38. Les interfaces suivantes sont concernées:

  • webkitIndexedDB (point d'entrée principal)
  • webkitIDBKeyRange (constructeur global non appelable, mais avec des méthodes statiques utiles)
  • webkitIDBCursor
  • webkitIDBDatabase
  • webkitIDBFactory
  • webkitIDBIndex
  • webkitIDBObjectStore
  • webkitIDBRequest
  • webkitIDBTransaction (constructeurs globaux non appelables)

Intent to Remove | Chromestatus Tracker | Bug Chromium

WebAudio: suppression des préfixes AudioContext et OfflineAudioContext

Chrome est compatible avec WebAudio depuis mi-2011, y compris avec AudioContext. OfflineAudioContext a été ajouté l'année suivante. Compte tenu de la durée de prise en charge des interfaces standards et de l'objectif à long terme de Google de supprimer les fonctionnalités avec préfixe, les versions avec préfixe de ces interfaces sont obsolètes depuis fin 2014 et sont en cours de suppression.

Intent to Remove | Chromestatus Tracker | Bug Chromium

Abandon et suppression de webkitCancelRequestAnimationFrame

La méthode webkitCancelRequestAnimationFrame() est une API obsolète, spécifique au fournisseur, et la cancelAnimationFrame() standard est depuis longtemps compatible avec Chromium. Par conséquent, la version WebKit est en cours de suppression.

Intent to Remove | Chromestatus Tracker | Bug Chromium

Abandon de la correspondance non sensible à la casse pour l'attribut usemap

L'attribut usemap était auparavant défini comme insensible à la casse. Malheureusement, l'implémentation de cette fonctionnalité était suffisamment complexe pour qu'aucun navigateur ne l'implémente correctement. Des recherches ont suggéré qu'un tel algorithme complexe n'était pas nécessaire, et même que la mise en correspondance ASCII insensible à la casse n'était pas nécessaire.

Par conséquent, la spécification a été mise à jour pour que la correspondance sensible à la casse soit appliquée. L'ancien comportement est obsolète dans Chrome 57 et devrait être supprimé dans Chrome 58.

Intent to Remove | Chromestatus Tracker | Bug Chromium

Abandon de FileReaderSync dans les service workers

La spécification du service worker a toujours inclus la note (non normative) selon laquelle "aucun type de requêtes synchrones ne doit être lancé dans un service worker", afin d'éviter de le bloquer. Le blocage du service worker bloquerait toutes les requêtes réseau provenant des pages contrôlées. Malheureusement, l'API FileReaderSync est disponible depuis longtemps dans les service workers.

Actuellement, seuls Firefox et Chrome exposent FileReaderSync dans les service workers. Firefox est d'accord dans la discussion sur les spécifications que ce problème doit être corrigé. La suppression est prévue pour Chrome 59.

Intent to Remove | Chromestatus Tracker | Bug Chromium

Abandon de l'ancien appelant pour HTMLEmbedElement et HTMLObjectElement

Si une interface possède un ancien appelant, cela signifie qu'une instance peut être appelée en tant que fonction. Actuellement, HTMLEmbedElement et HTMLObjectElement sont compatibles avec cette fonctionnalité. Dans Chrome 57, cette fonctionnalité est obsolète. Après la suppression, qui devrait intervenir dans Chrome 58, l'appel génèrera une exception.

Cette modification permet d'aligner Chrome sur les modifications récentes apportées aux spécifications. L'ancien comportement n'est pas compatible avec Edge ni Safari, et il est en cours de suppression de Firefox.

Intent to Remove | Chromestatus Tracker | Bug Chromium

Abandon de la valeur "negotiate" pour RTCRtcpMuxPolicy

Chrome utilise rtcpMuxPolicy pour spécifier sa règle préférée concernant l'utilisation du multiplexage RTP/RTCP. Dans Chrome 57, nous avons remplacé la valeur par défaut rtcpMuxPolicy par "require" et abandonné "negotiate" pour les raisons suivantes:

  • Le RTCP non multiplexé utilise des ressources réseau supplémentaires.
  • La suppression de "negotiate" simplifiera la surface de l'API, car un "RtpSender"/"RtpReceiver" n'aura alors qu'un seul transport.

Dans Chrome 57, "negotiate" est obsolète. Nous pensons qu'il s'agit d'un changement sans interruption, car l'utilisateur recevra un message d'abandon et RTCPeerConnection pourra toujours être créé. La suppression est prévue dans Chrome 63.

Intent to Deprecate | Bug Chromium

Abandon de la prise en charge des identifiants intégrés dans les requêtes de sous-ressources

L'encodage en dur des identifiants dans les requêtes de sous-ressources pose problème d'un point de vue de sécurité, car il a permis aux pirates informatiques de forcer les identifiants par le passé. Ces dangers sont exacerbés pour les requêtes de sous-ressources authentifiées qui atteignent des plages d'adresses IP internes (vos routeurs, etc.). Compte tenu de la faible utilisation, la fermeture de cette (petite) faille de sécurité semble tout à fait raisonnable.

Les développeurs peuvent intégrer des ressources qui ne nécessitent pas d'authentification de base/digest, en s'appuyant plutôt sur des cookies et d'autres mécanismes de gestion des sessions.

Intent to Remove | Chromestatus Tracker | Bug Chromium