Firma Google zaprezentowała wydanie przeglądarki internetowej Chrome 99. Równocześnie dostępne jest stabilne wydanie wolnego projektu Chromium, który stanowi podstawę Chrome. Przeglądarka Chrome różni się użyciem logo Google, systemem wysyłania powiadomień w przypadku awarii, modułami do odtwarzania chronionych treści wideo (DRM), automatyczną instalacją aktualizacji oraz przekazywaniem parametrów RLZ w trakcie wyszukiwania. Następne wydanie Chrome 100 zaplanowane jest na 29 marca.
Główne zmiany w Chrome 99:
- W Chrome na Androida wprowadzono mechanizm Certificate Transparency, który zapewnia prowadzenie niezależnego publicznego dziennika wszystkich wydanych i odwołanych certyfikatów. Publiczny dziennik umożliwia przeprowadzanie niezależnego audytu wszystkich zmian i działań centrów certyfikacji oraz umożliwi natychmiastowe śledzenie prób ukrytego tworzenia fałszywych wpisów. Certyfikaty, które nie są odzwierciedlone w Certificate Transparency, będą automatycznie odrzucane przez przeglądarkę z odpowiednim komunikatem o błędzie. Wcześniej ten mechanizm był włączony tylko dla wersji desktopowej oraz dla niewielkiego procenta użytkowników Androida.
- Z powodu licznych skarg wyłączono wcześniej proponowany w trybie testowym mechanizm Private Network Access, mający na celu zwiększenie ochrony przed atakami związanymi z dostępem do zasobów w lokalnej sieci lub na komputerze użytkownika (localhost) z skryptów ładowanych podczas otwierania strony. Aby chronić przed takimi atakami, w przypadku dostępu do jakichkolwiek podzasobów w sieci wewnętrznej, zaproponowano wysłanie wyraźnego żądania upoważnienia do ładowania takich podzasobów. Google przemyśli realizację uwzględniając otrzymane opinie i w jednym z przyszłych wydań zaproponuje ulepszoną wersję.
- Przywrócono możliwość usuwania domyślnie proponowanych wyszukiwarek. Przypominamy, że od Chrome 97 w konfiguracji w sekcji "Zarządzanie wyszukiwarkami" (chrome://settings/searchEngines) wstrzymano możliwość usuwania elementów z listy domyślnych wyszukiwarek (Google, Bing, Yahoo) oraz edytowania parametrów wyszukiwarki, co wywołało niezadowolenie wielu użytkowników.
- Na platformie Windows wprowadzono możliwość usuwania samodzielnych aplikacji webowych (PWA, Progressive Web App) przez ustawienia systemowe lub panelu administracyjnego w porównaniu do usuwania aplikacji Windows.
- Przeprowadzane są ostateczne testy potencjalnych zakłóceń w działaniu stron internetowych po osiągnięciu przez przeglądarkę wersji składającej się z trzech cyfr zamiast dwóch (w swoim czasie po wydaniu Chrome 10 w bibliotekach analizy User-Agent pojawiło się wiele problemów). Po włączeniu opcji „chrome://flags#force-major-version-to-100” w nagłówku User-Agent zaczyna być wyświetlana wersja 100.
- W CSS wprowadzono obsługę kaskadowych warstw, definiowanych za pomocą reguły @layer i importowanych przez regułę CSS @import, korzystając z funkcji layer(). Reguły CSS w obrębie jednej kaskadowej warstwy są kaskadowane razem, co upraszcza zarządzanie całym kaskadem, oferując elastyczne możliwości zmiany kolejności warstw i pozwalając na bardziej jednoznaczne zarządzanie plikami CSS, zapobiegając powstawaniu konfliktów. Kaskadowe warstwy są wygodne w stosowaniu do motywów, definiowania stylów domyślnych dla elementów oraz przenoszenia stylizacji komponentów do zewnętrznych bibliotek.
- Do klasy HTMLInputElement dodano metodę showPicker(), umożliwiającą wyświetlenie gotowych dialogów do wypełniania typowych wartości w polach z typami „date”, „month”, „week”, „time”, „datetime-local”, „color” i „file”, a także w polach obsługujących autouzupełnianie (autofill) i wybór z listy (datalist). Na przykład, można pokazać interfejs w formie kalendarza do wyboru daty lub paletę do wprowadzania koloru.

- W trybie Origin Trials (eksperymentalne możliwości, które wymagają oddzielnej aktywacji) wprowadzono możliwość włączenia ciemnego trybu wyświetlania dla aplikacji webowych. Kolory i tło dla ciemnej tematyki są wybierane za pomocą nowego pola color_scheme_dark w pliku manifestu aplikacji webowej. Origin Trial zakłada możliwość korzystania z określonego API z aplikacji załadowanych z localhost lub 127.0.0.1, lub po zarejestrowaniu się i uzyskaniu specjalnego tokena, który działa przez ograniczony czas dla konkretnej strony.
- Ugruntowane i udostępnione wszystkim zainteresowanym API Rozpoznawania Pisma Ręcznego, umożliwiające korzystanie z usług rozpoznawania ręcznego wprowadzania, oferowanych przez system operacyjny.
- Dla instalowanych aplikacji webowych (PWA, Progressive Web App) znormalizowano komponent Window Controls Overlay, rozszerzający obszar ekranu aplikacji na całe okno, w tym obszar nagłówka, na który nakładają się standardowe przyciski sterowania oknem (zamykanie, minimalizacja, maksymalizacja). Aplikacja webowa może zarządzać rysowaniem i przetwarzaniem wejścia w całym oknie, z wyjątkiem nałożonego bloku z przyciskami sterującymi oknem.
- W funkcji CSS calc() dozwolone jest podawanie wartości „infinity”, „-infinity” oraz „NaN” lub wyrażeń prowadzących do podobnych wartości, np. ‘calc(1/0)’.
- W CSS-własności color-scheme, umożliwiającej określenie, w jakich schematach kolorystycznych element może być poprawnie wyświetlany („light”, „dark”, „day mode” i „night mode”), dodano parametr „only”, pozwalający na wykluczenie wymuszonej zmiany schematu kolorystycznego dla poszczególnych elementów HTML. Na przykład, jeśli określi się „div { color-scheme: only light }”, to dla elementu div będzie używana tylko jasna tematyka, nawet jeśli w przeglądarce wymuszone będzie ciemne wybarwienie.
- Aby zmienić wartości właściwości document.adoptedStyleSheets, teraz można stosować operacje push() i pop() zamiast całkowitego przypisania właściwości. Na przykład, „document.adoptedStyleSheets.push(newSheet);”.
- W implementacji interfejsu CanvasRenderingContext2D dodano obsługę zdarzeń ContextLost i ContextRestored, metody reset(), opcji „willReadFrequently”, CSS-modyfikatorów tekstu, prymitywu rysowania roundRect oraz gradientów stożkowych. Udoskonalono wsparcie dla filtrów SVG.
- Usunięto prefiks „-webkit-” z właściwości „text-emphasis”, „text-emphasis-color”, „text-emphasis-position” i „text-emphasis-style”.
- Dla stron otwartych bez HTTPS zablokowano dostęp do API Battery Status, który pozwala uzyskać informacje o poziomie naładowania akumulatora.
- W metodzie navigator.getGamepads() zapewniono wyjście tablicy obiektów Gamepad zamiast GamepadList. GamepadList nie jest już wspierany w Chrome, co jest zgodne z wymaganiami standardu i zachowaniem silników Gecko i Webkit.
- API WebCodecs zostało dostosowane do specyfikacji. W szczególności zmieniono metodę EncodedVideoChunkOutputCallback() oraz konstruktor VideoFrame().
- W silniku JavaScript V8 do API Intl.Locale dodano nowe właściwości: calendars, collations, hourCycles, numberingSystems, timeZones, textInfo oraz weekInfo, które pokazują informacje o obsługiwanych kalendarzach, strefach czasowych oraz parametrach czasu i tekstu. 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’ }
- Dodano funkcję Intl.supportedValuesOf(code), która zwraca tablicę obsługiwanych identyfikatorów dla API Intl dla właściwości calendar, collation, currency, numberingSystem, timeZone i unit. Intl.supportedValuesOf(‘unit’) // [‘acre’, ‘bit’, ‘byte’, ‘celsius’, ‘centimeter’, …]
- Wprowadzono ulepszenia w narzędziach dla programistów webowych. W panelu sieciowym dodano możliwość spowolnienia zapytań WebSocket dla debugowania w warunkach wolnego połączenia internetowego. Na zakładkę „Application” dodano panel do śledzenia raportów generowanych przez API Reporting. W panelu Recorder przed odtworzeniem nagranej komendy dodano wsparcie dla oczekiwania, aż element stanie się widoczny lub dostępny do kliknięcia. Uproszczono emulowanie ciemnego motywu. Udoskonalone zarządzanie panelami na ekranach dotykowych. W konsoli internetowej dodano wsparcie dla sekwencji escape do kolorowania tekstu, dodano wsparcie dla masek podpowiedzi %s, %d, %i i %f, poprawiono działanie filtrów wiadomości.

Oprócz nowości i poprawek w nowej wersji usunięto 28 podatności. Wiele z podatności ujawniono w wyniku automatycznego testowania narzędziami AddressSanitizer, MemorySanitizer, Control Flow Integrity, LibFuzzer i AFL. Nie wykryto krytycznych problemów, które pozwalałyby obejść wszystkie poziomy ochrony przeglądarki i wykonać kod w systemie poza środowiskiem sandbox. W ramach programu wypłaty nagród za wykrycie podatności w bieżącej wersji firma Google wypłaciła 21 nagród o łącznej wartości 96 tysięcy dolarów USA (jedna nagroda $15000, dwie nagrody $10000, sześć nagród $7000, dwie nagrody $5000, dwie nagrody $3000 oraz jedna nagroda o wartości $2000 i jedna o wartości $1000.
Źródło: opennet.ru


