Suporte a subgrade de grade CSS, 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 aqui 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 no Android.
CSS
Nesta versão, adicionamos seis novos recursos de CSS. As três primeiras propriedades fazem parte do trabalho de ativação de transições em propriedades discretas, que permitem animações de entrada e saída.
A regra de estilo @starting-style
Essa at-rule 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 serve para evitar transições inesperadas dos estilos iniciais. Para iniciar uma transição na primeira atualização de estilo, agora é possível aplicar estilos dentro de uma regra @starting-style
. Por exemplo, o seguinte CSS inicia uma transição da cor do plano de fundo de verde para limão na primeira atualização de estilo de 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 usar dois valores: none
ou auto
.
Propriedade de comportamento de transição do CSS
A propriedade CSS transition-behavior
é uma extensão da propriedade transition
que permite que propriedades discretas sejam usadas em transições. Ao especificar o valor allow-discrete
para o comportamento de transição, as propriedades discretas agora vão iniciar animações e mudar 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 na origem em vez de criar uma nova definição de faixa para linhas, colunas ou ambas.
Quebra de texto em CSS: muito
O valor pretty
para a propriedade text-wrap
do CSS é otimizado para o melhor layout em vez de velocidade. É 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 que wrap
, o que otimiza a performance. A implementação atual no Chrome é otimizada para órfãos, evitando que uma única palavra seja exibida na parte inferior de um parágrafo de texto.
No Chrome 117, teste esta demonstração de ajuste de texto: beleza e veja como o valor altera a apresentação de texto.
container-intrinsic-size: suporte para autonone
Esse recurso estende a sintaxe contain-intrinsic-size
atual para incluir também auto && none
.
APIs Web
Agrupamento de matrizes
O agrupamento de matrizes é uma operação extremamente comum, melhor exemplificada pela cláusula GROUP BY do SQL e pela programação MapReduce (que é mais adequada para 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 Objeto retorna um objeto simples, em que os grupos são chaves de propriedade. O método Map retorna um mapa, em que as chaves podem ser valores arbitrários.
Limpar dicas de cliente 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 "cookies", "cache" ou "*" são segmentados pelo mesmo cabeçalho. Isso ocorre porque, se o usuário limpar os cookies nas dicas do cliente da interface do usuário também já estiverem limpos, o cache de dicas do cliente será um cache e para ser consistente com os destinos curinga, respectivamente.
Sintaxe de caractere curinga do cabeçalho Clear-Site-Data
Os sites agora poderão limpar todos os destinos de armazenamento ("cookies", "cache" e "armazenamento") enviando Clear-Site-Data: "*"
. O Chrome não permite limpar "executionContexts" no momento. Porém, se adicioná-lo futuramente qualquer cabeçalho segmentar "*" as limparia também.
customElements.getName
O método customElements.getName()
retorna o nome da tag da definição do elemento personalizado em questão.
Auxiliares de iterador
Os auxiliares de iterador são novos métodos no protótipo de iterador para permitir o uso geral e o consumo de iteradores.
Fazer o CaptureController derivar da interface EventTarget
A interface CaptureController permite uma outra manipulação de uma sessão de captura de tela. No futuro, espera-se que os eventos relacionados a uma sessão de captura sejam enviados nesse controlador. Para gerenciar listeners para esses eventos, os métodos EventTarget
são disponibilizados em CaptureController
.
Tipo de entrega de PerformanceResourceTiming
A propriedade deliveryType
de PerformanceResourceTiming
retorna informações sobre como um recurso foi entregue. Por exemplo, recursos que foram entregues do cache (atualmente expostos por transferSize
) e navegações que foram pré-buscadas pela página anterior.
Verificação de limites de valores de portas excedidos 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 alteração:
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 indicadores particulares limitados entre sites, sem usar identificadores persistentes entre sites, como cookies de terceiros. Métodos antifraude que dependem de cookies de terceiros não funcionarão depois que esses cookies forem desgastados. A API Private State Token não gera nem define sinais antifraude: isso depende da parte primária correspondente e dos emissores do token. Em vez disso, a API mantém a privacidade aplicando limites às informações transferidas nesses indicadores. A API é baseada em uma variante do protocolo Privacy Pass, que está em processo de padronização pela IETF. Ele pode ser considerado um formato exposto à Web dos protocolos do cartão de privacidade. A especificação da API vai ser atualizada para novas versões e tipos de tokens e vai ser atualizada com as especificações do grupo de trabalho do Privacy Pass. 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 de busca de emissão e resgate voltadas para o desenvolvedor. A API Private State Token era conhecida como API Trust Token. Ele foi renomeado 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 ao IPv4 compatível com padrão de URL
O comportamento da análise do analisador de host IPv6 incorporado ao 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 sempre deve ter 4 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 do URL contiver "%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 URLs, nenhuma sequência de caracteres ou bytes no caminho do URL deve tornar o URL inválido, e essa mudança atualiza o Chrome para seguir esse padrão.
Controle de extensão do cabeçalho RTP do WebRTC
Amplie a API WebRTC RTCRtpTransceiver
para oferecer controle sobre quais extensões de cabeçalho RTP são negociadas.
Quantizador por frame no VideoEncoder
Adiciona "quantizador" VideoEncoderBitrateMode
para VideoEncoder.
Isso permite especificar um parâmetro de quantizador para cada frame para codecs de vídeo AV1, VP9 e AVC.
Opção exclusionFilters
de WebUSB em requestDevice()
A opção exclusionFilters
em navigator.usb.requestDevice()
permite que os desenvolvedores Web excluam alguns dispositivos do seletor de navegador. Ela pode ser usada 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, é possível ativar os novos testes de origem a seguir.
Transporte do dicionário de compactação com o Shared Brotli
Esse recurso adiciona suporte ao uso de respostas anteriores designadas, como um dicionário externo para respostas HTTP compactadas 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 usam esse recurso são incentivados a migrar para o SQLite via Wasm.
Com este teste de descontinuação, os desenvolvedores que precisam de mais tempo para a migração podem continuar usando o WebSQL até o Chrome 123 (março de 2024). Inscreva-se no teste 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 na barra de guias.
Inscreva-se no teste de origem dos apps da Web com guias.
Descontinuações e remoções
Esta versão do Chrome apresenta as descontinuações e remoções listadas abaixo. Acesse ChromeStatus.com para conferir listas de descontinuações planejadas, descontinuações atuais e remoções anteriores.
Essa versão do Chrome descontinua dois recursos.
Descontinuar o 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 sobre a descontinuação do unload
para mais detalhes.
Suspensão do uso das assinaturas SHA-1 do servidor TLS
O Chrome vai remover o suporte para algoritmos que usam o 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 de clientes, que continuam disponíveis.
Essa versão do Chrome remove quatro recursos.
[WebRTC] Remover getStats() legado com base em callback
O RTCPeerConnection tem duas versões de getStats()
, uma que está em conformidade com as especificações e retorna o relatório por meio da resolução de uma promessa e outra que não é padrão, retornando um relatório muito diferente por meio de um callback como o primeiro argumento. Aquela baseada em callback foi removida.
Para mais informações sobre a migração e o que fazer se você precisar de mais tempo, consulte o Guia de migração do getStats() legado.
Remoção do valor -1 de WebRTC getStats datachannelIdentifier
A API WebRTC getStats expõe uma propriedade dataChannelIdentifier. Ele não fornecerá mais o valor "-1" nos casos em que as estatísticas são consultadas antes que a conexão do canal de dados seja estabelecida. Em vez disso, o membro do dicionário será omitido.
Remoção do WebRTC getStats encoderImplementation e decoderImplementation "unknown"
A API WebRTC getStats expõe os nomes de implementação do codificador e decodificador para vídeos de saída e de entrada. Ele não vai mais mostrar o valor "unknown" nos casos em que as estatísticas forem consultadas antes da codificação ou decodificação de um frame de vídeo. Em vez disso, o membro do dicionário será omitido.
Propriedade CSS -webkit-highlight
Remova a propriedade CSS -webkit-highlight
que destaca o texto, mas nunca é padronizada. Ela não tem efeito visível no Chromium (é analisada, mas nunca usada na renderização de conteúdo). A propriedade foi removida do WebKit em 2014, foi marcada como descontinuada no MDN e substituída recentemente pela pseudoespecificação de destaque do CSS.