A Google apresentou o lançamento do navegador web Chrome 99. Simultaneamente, a versão estável do projeto livre Chromium, que serve como base para o Chrome, está disponível. O navegador Chrome se destaca pelo uso dos logotipos do Google, pelo sistema de envio de notificações em caso de falhas, pelos módulos para reprodução de conteúdo de vídeo protegido contra cópias (DRM), pelo sistema de instalação automática de atualizações e pela transmissão dos parâmetros RLZ durante a busca. O próximo lançamento do Chrome 100 está agendado para 29 de março.
Principais mudanças no Chrome 99:
- No Chrome para Android, foi incluído o uso do mecanismo de Transparência de Certificados, que garante a manutenção de um log público independente de todos os certificados emitidos e revogados. O log público permite a realização de auditorias independentes de todas as alterações e ações dos centros de certificação, além de permitir monitorar imediatamente qualquer tentativa de criação oculta de registros falsos. Os certificados que não estiverem refletidos na Transparência de Certificados serão automaticamente rejeitados pelo navegador, com a exibição do erro correspondente. O mecanismo mencionado anteriormente foi ativado apenas para a versão de desktop e para uma pequena porcentagem de usuários do Android.
- Devido ao grande número de reclamações, foi desativado o mecanismo de Acesso à Rede Privada, que estava em teste e visava aumentar a proteção contra ataques relacionados ao acesso a recursos na rede local ou no computador do usuário (localhost) a partir de scripts carregados ao abrir o site. Para proteger contra tais ataques, foi proposta a necessidade de enviar uma solicitação explícita de autorização para carregar tais sub-recursos ao acessar qualquer sub-recurso na rede interna. O Google revisará a implementação com base no feedback recebido e, em uma das futuras versões, oferecerá uma versão aprimorada.
- Foi restaurada a possibilidade de remover os mecanismos de pesquisa propostos por padrão. Lembramos que, desde o Chrome 97, na configuração na seção "Gerenciar mecanismos de pesquisa" (chrome://settings/searchEngines), a possibilidade de remover itens da lista de mecanismos de pesquisa padrão (Google, Bing, Yahoo) e editar as configurações do mecanismo de pesquisa foi interrompida, o que gerou descontentamento entre muitos usuários.
- Na plataforma Windows, foi adicionada a possibilidade de remover aplicativos web autossuficientes (PWA, Progressive Web App) através das configurações do sistema ou painel de controle por analogia à remoção de aplicativos do Windows.
- Está sendo realizado o teste final para verificar possíveis interrupções no funcionamento dos sites após o navegador atingir uma versão de três dígitos em vez de duas (na época, após o lançamento do Chrome 10, surgiram muitos problemas nas bibliotecas de análise do User-Agent). Ao ativar a opção "chrome://flags#force-major-version-to-100", o cabeçalho do User-Agent começará a exibir a versão 100.
- O CSS implementou suporte para camadas em cascata, definidas pela regra @layer e importadas através da regra @import, utilizando a função layer(). As regras CSS dentro de uma única camada em cascata são agrupadas, simplificando a gestão de toda a cascata, proporcionando flexibilidade na alteração da ordem das camadas e permitindo um controle mais explícito sobre os arquivos CSS, evitando conflitos. As camadas em cascata são convenientes para temas, definição de estilos padrão e para transferir a formatação de componentes para bibliotecas externas.
- Foi adicionado ao classe HTMLInputElement o método showPicker(), que permite exibir diálogos prontos para preenchimento de valores típicos em campos com os tipos "date", "month", "week", "time", "datetime-local", "color" e "file", bem como para campos que suportam preenchimento automático (autofill) e seleção de lista (datalist). Por exemplo, é possível mostrar uma interface em forma de calendário para seleção de data ou uma paleta para inserção de cor.

- No modo Origin Trials (recursos experimentais que requerem ativação separada), foi implementada a capacidade de ativar o modo escuro para web apps. As cores e fundos para o tema escuro são escolhidos usando o novo campo color_scheme_dark no arquivo de manifesto do web app. O Origin Trial pressupõe a possibilidade de trabalhar com a API mencionada a partir de aplicativos carregados do localhost ou 127.0.0.1, ou após registro e obtenção de um token especial, que tem um tempo limitado de validade para um site específico.
- Foi estabilizada e disponibilizada a todos interessados a API Handwriting Recognition, que permite usar serviços de reconhecimento de entrada manuscrita fornecidos pelo sistema operacional.
- Para aplicações web progressivas (PWA), o componente Window Controls Overlay foi estabilizado, ampliando a área de exibição do aplicativo para toda a janela, incluindo a área do cabeçalho, sobre a qual são sobrepostas as botões de controle da janela (fechar, minimizar, maximizar). O aplicativo web pode gerenciar a renderização e o processamento de entrada em toda a janela, exceto na área sobreposta com os botões de controle da janela.
- Na função CSS calc(), é permitido especificar valores como "infinity", "-infinity" e "NaN" ou expressões que levam a esses valores, como 'calc(1/0)'.
- Na propriedade CSS color-scheme, que permite definir em quais esquemas de cores um elemento pode ser exibido corretamente ("light", "dark", "day mode" e "night mode"), foi adicionado o parâmetro "only", permitindo excluir a alteração forçada no esquema de cores para elementos HTML específicos. Por exemplo, ao especificar "div { color-scheme: only light }", o elemento div usará apenas o tema claro, mesmo que o modo escuro esteja forçado no navegador.
- Para alterar os valores da propriedade document.adoptedStyleSheets, agora podem ser aplicadas as operações push() e pop() em vez de reatribuir completamente a propriedade. Por exemplo, "document.adoptedStyleSheets.push(newSheet);".
- A implementação da interface CanvasRenderingContext2D adicionou suporte para eventos ContextLost e ContextRestored, método reset(), opções "willReadFrequently", modificadores de texto CSS, o primitivo de desenho roundRect e gradientes cônicos. O suporte para filtros SVG foi melhorado.
- Os prefixos "-webkit-" foram removidos das propriedades "text-emphasis", "text-emphasis-color", "text-emphasis-position" e "text-emphasis-style".
- Para páginas abertas sem HTTPS, o acesso à API Battery Status, que permite obter informações sobre o nível da bateria, é proibido.
- No método navigator.getGamepads(), agora é retornado um array de objetos Gamepad em vez de GamepadList. GamepadList não é mais suportado no Chrome, conforme o padrão e comportamento dos motores Gecko e Webkit.
- A API WebCodecs foi alinhada à especificação. Em particular, foram alterados o método EncodedVideoChunkOutputCallback() e o construtor VideoFrame().
- No motor JavaScript V8, novas propriedades foram adicionadas à API Intl.Locale, como calendars, collations, hourCycles, numberingSystems, timeZones, textInfo e weekInfo, que fornecem informações sobre calendários suportados, fusos horários e opções de tempo e texto. 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’ }
- Foi adicionada a função Intl.supportedValuesOf(code), que retorna um array de identificadores suportados para a API Intl para as propriedades calendar, collation, currency, numberingSystem, timeZone e unit. Intl.supportedValuesOf(‘unit’) // [‘acre’, ‘bit’, ‘byte’, ‘celsius’, ‘centimeter’, …]
- Houve melhorias nas ferramentas para desenvolvedores web. O painel de rede agora permite desacelerar solicitações WebSocket para depuração em condições de conexão lenta. Uma nova guia 'Application' foi adicionada para rastrear relatórios gerados através da API Reporting. No painel Recorder, foi implementado suporte para aguardar até que um elemento se torne visível ou clicável antes de reproduzir um comando gravado. A emulação do tema escuro foi simplificada. O controle de painéis em telas sensíveis ao toque foi aprimorado. O console web agora suporta sequências de escape para destacar texto com cores e também suportará máscaras de substituição %s, %d, %i e %f, além de melhorias na funcionalidade dos filtros de mensagens.

Além das inovações e correções de bugs, a nova versão corrigiu 28 vulnerabilidades. Muitas das vulnerabilidades foram identificadas por meio de testes automatizados com as ferramentas AddressSanitizer, MemorySanitizer, Control Flow Integrity, LibFuzzer e AFL. Não foram encontradas questões críticas que permitissem contornar todos os níveis de proteção do navegador e executar código fora do ambiente de sandbox. Como parte do programa de recompensas por exposição de vulnerabilidades para esta versão, a Google pagou 21 prêmios totalizando 96 mil dólares (um prêmio de $15000, dois prêmios de $10000, seis prêmios de $7000, dois prêmios de $5000, dois prêmios de $3000, e um prêmio de $2000 e um prêmio de $1000).
Fonte: opennet.ru


