La société Google a présenté la version 99 de son navigateur web Chrome. En même temps, une version stable du projet libre Chromium, qui sert de base à Chrome, est disponible. Le navigateur Chrome se distingue par l'utilisation des logos de Google, un système d'envoi de notifications en cas de crash, des modules pour la lecture de contenu vidéo protégé contre la copie (DRM), un système de mise à jour automatique et la transmission des paramètres RLZ lors des recherches. La prochaine version de Chrome 100 est prévue pour le 29 mars.
Principales nouveautés de Chrome 99 :
- Chrome pour Android intègre le mécanisme Certificate Transparency, qui assure la tenue d'un registre public indépendant de tous les certificats émis et révoqués. Ce registre public permet de réaliser un audit indépendant de tous les changements et actions des autorités de certification, facilitant la détection de tentatives de création secrète de faux enregistrements. Les certificats non répertoriés dans le registre Certificate Transparency seront automatiquement rejetés par le navigateur, avec un message d'erreur correspondant. Ce mécanisme avait été précédemment activé uniquement pour la version de bureau et pour un petit pourcentage d'utilisateurs d'Android.
- En raison d'un grand nombre de plaintes, le mécanisme d'accès au réseau privé, proposé précédemment en phase de test pour renforcer la protection contre les attaques liées à l'accès aux ressources du réseau local ou à l'ordinateur de l'utilisateur (localhost) à partir de scripts chargés lors de l'ouverture du site, a été désactivé. Pour se protéger contre de telles attaques, une demande explicite de permission pour charger ces sous-ressources dans le réseau interne a été suggérée. Google révisera l'implémentation en tenant compte des retours reçus et proposera une version améliorée dans une des futures mises à jour.
- La possibilité de supprimer les moteurs de recherche suggérés par défaut a été rétablie. Rappelons qu'à partir de Chrome 97, dans le configurateur de la section « Gestion des moteurs de recherche » (chrome://settings/searchEngines), il n'était plus possible de supprimer des éléments de la liste des moteurs de recherche par défaut (Google, Bing, Yahoo) et de modifier les paramètres des moteurs de recherche, ce qui a suscité le mécontentement de nombreux utilisateurs.
- Sur la plateforme Windows, la possibilité de supprimer les applications web autonomes (PWA, Progressive Web App) via les paramètres système a été ajoutée. le panneau de contrôle par analogie avec la suppression des applications Windows.
- Le test final est en cours pour vérifier les éventuels dysfonctionnements des sites après que le navigateur atteigne une version à trois chiffres au lieu de deux (il y a eu beaucoup de problèmes avec les bibliothèques d'analyse de User-Agent après la sortie de Chrome 10). En activant l'option «chrome://flags#force-major-version-to-100», la version 100 est affichée dans l'en-tête User-Agent.
- Le CSS a introduit la prise en charge des couches en cascade, définies à l'aide de la règle @layer et importées via la règle CSS @import, en utilisant la fonction layer(). Les règles CSS au sein d'une même couche en cascade se combinent, simplifiant la gestion de l'ensemble de la cascade, offrant des options flexibles pour modifier l'ordre des couches et permettant une gestion plus explicite des fichiers CSS, prévenant ainsi les conflits. Les couches en cascade sont particulièrement utiles pour les thèmes, la définition des styles par défaut des éléments et l'extraction du style des composants dans des bibliothèques externes.
- La classe HTMLInputElement a ajouté la méthode showPicker(), permettant d'afficher des dialogues prêts à l'emploi pour remplir des valeurs standards dans les champs avec les types «date», «month», «week», «time», «datetime-local», «color» et «file», ainsi que pour les champs prenant en charge le remplissage automatique (autofill) et la sélection par liste (datalist). Par exemple, on peut afficher une interface sous forme de calendrier pour sélectionner une date ou une palette pour entrer une couleur.

- En mode Origin Trials (fonctionnalités expérimentales nécessitant une activation distincte), il est possible d'activer le mode sombre pour les applications web. Les couleurs et l'arrière-plan pour le thème sombre sont choisis à l'aide d'un nouveau champ color_scheme_dark dans le fichier du manifeste de l'application web. L'Origin Trial implique la possibilité d'utiliser l'API spécifiée à partir d'applications chargées depuis localhost ou 127.0.0.1, ou après s'être enregistré et avoir obtenu un jeton spécial, valable pour une durée limitée pour un site spécifique.
- L'API Handwriting Recognition a été stabilisée et proposée à tout intéressé, permettant d'utiliser les services de reconnaissance de saisie manuscrite fournis par le système d'exploitation.
- Pour les applications web isolées (PWA, Progressive Web App) installées, le composant Window Controls Overlay est stabilisé, élargissant la zone d'affichage de l'application sur l'ensemble de la fenêtre, y compris la zone d'en-tête, sur laquelle sont superposées les boutons de gestion de la fenêtre par défaut (fermeture, minimisation, maximisation). L'application web peut contrôler le rendu et le traitement des entrées dans l'ensemble de la fenêtre, à l'exception du bloc superposé contenant les boutons de gestion de la fenêtre.
- Dans la fonction CSS calc(), il est permis d'indiquer les valeurs «infinity», «-infinity» et «NaN» ou des expressions conduisant à de telles valeurs, par exemple, ‘calc(1/0)’.
- Dans la propriété CSS color-scheme, qui permet de définir dans quelles schémas de couleurs un élément peut être correctement affiché («light», «dark», «day mode» et «night mode»), un paramètre «only» a été ajouté, permettant d'exclure le changement forcé du schéma de couleurs pour certains éléments HTML. Par exemple, si l'on indique «div { color-scheme: only light }», alors l'élément div n'utilisera que le thème clair, même si le mode sombre est forcé dans le navigateur.
- Pour modifier les valeurs de la propriété document.adoptedStyleSheets, on peut maintenant utiliser les opérations push() et pop() au lieu de réassigner complètement la propriété. Par exemple, «document.adoptedStyleSheets.push(newSheet);».
- L'implémentation de l'interface CanvasRenderingContext2D a été améliorée avec le support des événements ContextLost et ContextRestored, de la méthode reset(), de l'option «willReadFrequently», des modificateurs CSS de texte, du primitive de rendu roundRect et des dégradés coniques. Le support des filtres SVG a également été amélioré.
- Les propriétés «text-emphasis», «text-emphasis-color», «text-emphasis-position» et «text-emphasis-style» ont été débarrassées du préfixe «-webkit-».
- Pour les pages ouvertes sans HTTPS, l'accès à l'API Battery Status, qui permet d'obtenir des informations sur la charge de la batterie, est interdit.
- Dans la méthode navigator.getGamepads(), un tableau d'objets Gamepad est fourni à la place de GamepadList. GamepadList n'est plus supporté dans Chrome, conformément à l'exigence de la norme et au comportement des moteurs Gecko et Webkit.
- L'API WebCodecs a été mise en conformité avec les spécifications. En particulier, les méthodes EncodedVideoChunkOutputCallback() et le constructeur VideoFrame() ont été modifiés.
- Dans l'environnement JavaScript V8, l'API Intl.Locale a ajouté de nouvelles propriétés : calendars, collations, hourCycles, numberingSystems, timeZones, textInfo et weekInfo, qui fournissent des informations sur les calendriers pris en charge, les fuseaux horaires et les paramètres de temps et de texte. const arabicEgyptLocale = new Intl.Locale(‘ar-EG’) // ar-EG arabicEgyptLocale.calendars // [‘gregory’, ‘coptic’, ‘islamic’, ‘islamic-civil’, ‘islamic-tbla’] arabicEgyptLocale.collations // [‘compat’, ’emoji’, ‘eor’] arabicEgyptLocale.hourCycles // [‘h12’] arabicEgyptLocale.numberingSystems // [‘arab’] arabicEgyptLocale.timeZones // [‘Africa/Cairo’] arabicEgyptLocale.textInfo // { direction: ‘rtl’ } japaneseLocale.textInfo // { direction: ‘ltr’ } chineseTaiwanLocale.textInfo // { direction: ‘ltr’ }
- Une nouvelle fonction Intl.supportedValuesOf(code) a été ajoutée, renvoyant un tableau d'identifiants pris en charge pour l'API Intl pour les propriétés calendar, collation, currency, numberingSystem, timeZone et unit. Intl.supportedValuesOf(‘unit’) // [‘acre’, ‘bit’, ‘byte’, ‘celsius’, ‘centimeter’, …]
- Des améliorations ont été apportées aux outils pour les développeurs web. Le panneau réseau a ajouté la possibilité de ralentir les requêtes WebSocket pour déboguer des opérations dans des conditions de connexion réseau lente. Un panneau a été ajouté à l'onglet « Application » pour suivre les rapports générés via l'API Reporting. La fonction d'enregistrement prend désormais en charge l'attente jusqu'à ce qu'un élément devienne visible ou cliquable avant de jouer la commande enregistrée. L'émulation du thème sombre a été simplifiée. La gestion des panneaux sur les écrans tactiles a été améliorée. La console web a ajouté un support pour les séquences d'échappement permettant de colorer le texte, ainsi que le support des masques de remplacement %s, %d, %i et %f, et a amélioré le fonctionnement des filtres de messages.

En plus des nouvelles fonctionnalités et des corrections de bugs, la nouvelle version corrige 28 vulnérabilités. Beaucoup de vulnérabilités ont été découvertes grâce à des tests automatisés avec des outils tels que AddressSanitizer, MemorySanitizer, Control Flow Integrity, LibFuzzer et AFL. Aucune problématique critique n'a été identifiée, permettant de contourner tous les niveaux de sécurité du navigateur et d'exécuter du code en dehors de l'environnement sandbox. Dans le cadre du programme de récompenses pour la découverte de vulnérabilités pour cette version, Google a attribué 21 récompenses totalisant 96 000 dollars américains (une récompense de 15 000 $, deux récompenses de 10 000 $, six récompenses de 7 000 $, deux récompenses de 5 000 $, deux récompenses de 3 000 $ et une récompense de 2 000 $ et 1 000 $).
Source : opennet.ru


