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


