Chrome 117 Beta

Subgrade de grade CSS, suporte a animação de entrada e saída para CSS, agrupamento de matrizes, assistentes de iterador e muito mais.

Salvo indicação em contrário, as mudanças descritas se aplicam à versão mais recente do Canal Beta do Chrome para Android, ChromeOS, Linux, macOS e Windows. Saiba mais sobre os recursos listados nos links fornecidos ou na lista em ChromeStatus.com. O Chrome 117 está na versão Beta desde 16 de agosto de 2023. Faça o download da versão mais recente em Google.com para computador ou na Google Play Store para Android.

CSS

Nesta versão, adicionamos seis novos recursos CSS. As três primeiras propriedades fazem parte do trabalho de ativar transições em propriedades discretas, que permitem animações de entrada e saída.

A regra de estilo @starting-style

Essa regra permite que os autores iniciem transições CSS na primeira atualização de estilo.

As transições CSS não acionam transições de estilos iniciais na primeira atualização de estilo de um elemento ou quando o tipo de exibição muda de none para algum outro tipo. Isso evita transições inesperadas de estilos iniciais. Para iniciar uma transição desde a primeira atualização de estilo, agora é possível aplicar estilos de uma regra @starting-style. Por exemplo, o CSS a seguir inicia uma transição de cor de fundo de verde para verde na primeira atualização de estilo para um div:

div { 
  transition: background-color 0.5s; 
  background-color: lime; 
} 

@starting-style {
  div { 
    background-color: green; 
  } 
}

A propriedade de sobreposição

A propriedade overlay permite que os desenvolvedores mantenham os elementos na camada superior para uma transição de saída. A propriedade de sobreposição é adicionada para indicar se um elemento está ou não na camada superior e pode receber dois valores: none ou auto.

Propriedade de comportamento de transição do CSS

A propriedade CSS transition-behavior é um longo da propriedade transition que permite que propriedades discretas sejam usadas em transições. Ao especificar o valor do allow-discrete para o comportamento de transição, propriedades discretas agora iniciarão animações e mudarão do valor inicial para o valor final em 50% Para transições em que display: none e content-visibility: hidden são um dos valores iniciais ou finais, o valor visível é usado durante toda a transição.

O valor da subgrade da grade CSS

O valor subgrid para grid-template-columns e grid-template-rows agora está implementado no Chrome. Esse valor permite que uma grade aninhada use as faixas definidas no pai, em vez de criar uma nova definição de faixa para linhas, colunas ou ambas.

Quebra de texto CSS: bela

O valor de pretty para a propriedade text-wrap do CSS é otimizado para o melhor layout, não a velocidade. Ele é destinado ao corpo do texto e, portanto, espera várias linhas. Ao usar pretty, um desenvolvedor ativa explicitamente um método de layout que pode ser mais lento do que wrap, o que otimiza a performance. A implementação atual no Chrome otimiza o uso de órfãos para evitar que uma única palavra seja exibida na parte de baixo de um parágrafo de texto.

No Chrome 117, confira esta demonstração do ajuste de texto: linda (link em inglês) e veja como o valor altera a apresentação de texto.

container-intrinsic-size: suporte para nenhum automático

Esse recurso estende a sintaxe contain-intrinsic-size atual para incluir auto && none

APIs Web

Agrupamento de matrizes

O agrupamento de matrizes é uma operação extremamente comum, exemplificada melhor pela cláusula GROUP BY do SQL e pela programação MapReduce (que é melhor pensada em map-group-reduce). A capacidade de combinar dados em grupos permite que os desenvolvedores calculem conjuntos de dados de ordem superior, como a idade média de uma coorte ou valores diários de LCP para uma página da Web. Esse recurso permite isso adicionando os métodos estáticos Object.groupBy e Map.groupBy. O método Object retorna um objeto simples, em que os grupos são chaves de propriedade. O método Map retorna um Map, em que as chaves podem ser valores arbitrários.

Limpar dicas de clientes pelo cabeçalho "Clear-Site-Data"

Os sites agora poderão limpar o cache de dicas do cliente usando Clear-Site-Data: "clientHints". As dicas do cliente também serão apagadas quando os termos "cookies", "cache" ou "*" forem segmentados pelo mesmo cabeçalho. Isso ocorre porque, se o usuário limpa os cookies quando as dicas de cliente da interface já estão limpas, o cache de dicas do cliente é um cache e, para ser consistente com os destinos de caractere curinga, respectivamente.

Sintaxe de caractere curinga no cabeçalho "Clear-Site-Data"

Agora, os sites poderão apagar todos os recursos de armazenamento ("cookies", "cache" e "armazenamento") enviando Clear-Site-Data: "*". No momento, o Chrome não oferece suporte à limpeza de "executionContexts", mas, se adicioná-lo no futuro, qualquer segmentação de cabeçalho "*" os limparia também.

customElements.getName

O método customElements.getName() retorna o nome da tag da definição do elemento personalizado fornecido.

Auxiliares de iterador

Os auxiliares de iterador são novos métodos no protótipo de iterador para permitir o uso e o consumo gerais de iteradores.

Fazer o CaptureController derivar da interface EventTarget

A interface CaptureController permite manipulação adicional de uma sessão de captura de tela. No futuro, espera-se que os eventos relacionados a uma sessão de captura sejam despachados nesse controlador. Para gerenciar listeners desses eventos, os métodos EventTarget são disponibilizados em CaptureController.

Tipo de entrega PerformanceResourceTiming

A propriedade deliveryType de PerformanceResourceTiming retorna informações sobre como um recurso foi entregue. Por exemplo, recursos entregues do cache (atualmente expostos por transferSize) e navegações que foram pré-buscadas pela página anterior.

Verificação de estouro de porta em setters de URL

O valor da porta será verificado ao definir url.port. Todos os valores que ultrapassarem o limite numérico de 16 bits não serão mais válidos. Por exemplo, o script a seguir se comporta de maneira diferente após a mudança:

u = new URL("http://test.com"); 
u.port = 65536; 
console.log(u.port); 

Antes da mudança, a saída é 65536. Após a mudança, a saída será 80.

API Private State Token

Essa é uma nova API para propagar sinais particulares limitados entre sites, sem usar identificadores persistentes entre sites, como cookies de terceiros. Os métodos antifraude que dependem de cookies de terceiros não vão mais funcionar quando o uso deles for descontinuado. A API Private State Token não gera nem define indicadores antifraude: isso cabe ao próprio terceiro e aos emissores de token. Em vez disso, a API mantém a privacidade ao aplicar limites às informações transferidas nesses indicadores. A API é baseada em uma variante do protocolo Privacy Pass, que está em processo de padronização pelo IETF. Ele pode ser considerado uma forma exposta pela Web dos protocolos do cartão de privacidade. A especificação da API será atualizada para novas versões e tipos de tokens e vai continuar atualizada com as especificações do grupo de trabalho do cartão de privacidade. As mudanças esperadas seriam nos protocolos criptográficos subjacentes e no código de emissão de tokens: não esperamos mudanças nas APIs Fetch de emissão e resgate voltadas para o desenvolvedor. A API Private State Token era conhecida como API Trust Token. Ela foi renomeada para capturar com mais precisão a semântica subjacente e destacar os benefícios de privacidade para os usuários.

Analisador de host IPv6 incorporado IPv4 compatível com o URL padrão

O comportamento de análise do analisador de host IPv6 incorporado IPv4 será atualizado para seguir estritamente o padrão de URL da Web. As restrições introduzidas no endereço IPv6 são:

  • O endereço IPv4 incorporado será composto por quatro partes.
  • Endereços com menos de quatro partes, como http://[::1.2], não serão mais válidos. O recurso faz parte da Interoperabilidade de URL de 2023.

URL: permitir "%00" como um caminho de URL válido

Atualmente, o Chrome considera um URL inválido se a parte do caminho dele contém "%00" (ou nulo), o que não é compatível com o padrão de URL. Por exemplo, o teste a seguir falha no Chrome, porque new URL(...) gera uma exceção de URL inválido.

assertEquals(new URL("http://example.com/%00").pathname, "/%00"); 

De acordo com o padrão de URL, nenhuma sequência de caracteres ou bytes no caminho pode tornar o URL inválido. Essa mudança atualiza o Chrome para seguir esse padrão.

Controle de extensão de cabeçalho RTP do WebRTC

Amplie a API WebRTC RTCRtpTransceiver para oferecer controle sobre quais extensões de cabeçalho RTP são negociadas.

Quantizer por frame no VideoEncoder

Adiciona VideoEncoderBitrateMode "quantizer" para VideoEncoder. Isso permite especificar um parâmetro quantizador para cada frame para os codecs de vídeo AV1, VP9 e AVC.

Opção WebUSB exclusionFilters em requestDevice()

A opção exclusionFilters no navigator.usb.requestDevice() permite que os desenvolvedores da Web excluam alguns dispositivos do seletor do navegador. Ele pode ser usado para excluir dispositivos que correspondem a um filtro mais amplo, mas não são compatíveis.

Testes de origem em andamento

No Chrome 117, você pode ativar os novos testes de origem a seguir.

Transporte de dicionário de compactação com o Brotli compartilhado

Esse recurso adiciona suporte ao uso de respostas anteriores designadas, como um dicionário externo para respostas HTTP de compactação com Brotli.

Inscreva-se no teste de origem do CompressionDictionaryTransport.

Teste de descontinuação do WebSQL

O WebSQL está sendo removido do Chrome. Os sites que dependem dele são incentivados a migrar para o SQLite via Wasm.

Com esse teste de descontinuação, os desenvolvedores que precisarem de mais tempo para fazer a migração vão poder continuar usando o WebSQL até o Chrome 123 (março de 2024). Inscreva-se na avaliação de descontinuação do WebSQL.

Apps da Web com guias

Permita que as janelas de apps da Web tenham uma barra de guias, por exemplo, para editar vários documentos no mesmo app. Isso adiciona um novo modo de exibição com guias e um novo campo de manifesto para permitir personalizações nessa barra.

Inscreva-se no teste de origem de apps da Web com guias.

Descontinuações e remoções

Essa versão do Chrome apresenta as descontinuações e remoções listadas abaixo. Acesse ChromeStatus.com para consultar as listas de descontinuações planejadas, descontinuações atuais e remoções anteriores.

Esta versão do Chrome descontinua dois recursos.

Suspender o uso do evento de descarregamento

O Chrome 117 iniciará o processo de descontinuação do manipulador de eventos unload. Caso seu site use esses recursos, leia a postagem dedicada à suspensão do uso do unload para saber mais.

Descontinuação das assinaturas do servidor TLS SHA-1

O Chrome não vai mais oferecer suporte a algoritmos de assinatura que usam SHA-1 nas assinaturas do servidor durante o handshake de TLS. Isso não afeta o suporte a SHA-1 em certificados do servidor, que já foram removidos, nem em certificados do cliente, que continuam sendo compatíveis.

Esta versão do Chrome remove quatro recursos.

[WebRTC] Remoção do getStats() legado baseado em callback

O RTCPeerConnection tem duas versões de getStats(), uma em conformidade com as especificações retornando o relatório resolvendo uma promessa e outra que não é padrão retornando um relatório muito diferente com um callback como o primeiro argumento. O baseado em callback foi removido.

Para mais informações sobre migração e o que fazer se precisar de mais tempo, consulte o guia de migração getStats() legado.

Remoção do valor -1 para getStats datachannelIdentifier do WebRTC

A API WebRTC getStats expõe uma propriedade dataChannelIdentifier (em inglês). Ele não fornecerá mais o valor "-1" quando as estatísticas forem consultadas antes do estabelecimento da conexão do canal de dados. Em vez disso, o membro do dicionário será omitido.

Remoção de "unknown" encoderImplementation and decoderImplementation do WebRTC

A API WebRTC getStats expõe os nomes de implementação do codificador e do decodificador para vídeos de saída e entrada. Ele não vai mais fornecer o valor "unknown" nos casos em que as estatísticas são consultadas antes de um frame de vídeo ser codificado ou decodificado. Em vez disso, o membro do dicionário será omitido.

Propriedade CSS -webkit-highlight

Remova a propriedade CSS -webkit-highlight destinada a destacar texto, mas nunca padronizada. Ele não tem efeito visível no Chromium. Ele é analisado, mas nunca usado para renderizar conteúdo. A propriedade foi removida do WebKit em 2014, foi marcada como descontinuada no MDN e foi substituída recentemente pela especificação CSS Highlight Pseudo.