Descontinuações e remoções no Chrome 58

Joe medley
Joe Medley

Em quase todas as versões do Chrome, vemos um número significativo de atualizações e melhorias no produto, no desempenho dele e também nos recursos da plataforma da Web. Neste artigo, descrevemos as descontinuações e remoções do Chrome 58, que está na versão Beta desde 16 de março. Essa lista está sujeita a alterações a qualquer momento.

Mouse no Android para de disparar TouchEvents

Até o Chrome 57, os eventos de mouse de baixo nível do Android no Chrome seguiam principalmente um caminho de evento projetado para interações de toque. Por exemplo, um movimento de arrastar o mouse que ocorre enquanto um botão do mouse é pressionado gera MotionEvents, entregue pelo View.onTouchEvent.

No entanto, como os eventos de toque não oferecem suporte a esse tipo de ação, esse movimento seguiu um caminho separado. O design teve muitos efeitos colaterais, incluindo interações do mouse disparando TouchEvents, todos os botões do mouse aparecendo como botões esquerdos do mouse e MouseEvents sendo suprimido por TouchEvents.

A partir do Chrome 58, um mouse no Android M ou mais recente fará o seguinte:

  • Não disparar mais TouchEvents.
  • Dispare uma sequência consistente de MouseEvents com os botões apropriados e outras propriedades.

Intenção de remover | Rastreador de status do Chrome | Bug do Chromium

Removemos a correspondência que não diferencia maiúsculas de minúsculas para o atributo usemap

O atributo usemap era definido anteriormente como sem maiúsculas. Infelizmente, implementar isso foi complicado o suficiente, e nenhum navegador o implementou corretamente. A pesquisa sugeriu que um algoritmo tão complicado é desnecessário, e mesmo a correspondência ASCII que não diferencia maiúsculas de minúsculas é desnecessária.

Consequentemente, a especificação foi atualizada para que a correspondência que diferencia maiúsculas de minúsculas seja aplicada. O comportamento antigo foi descontinuado no Chrome 57 e foi removido.

Intenção de remover | Rastreador de status do Chrome | Bug do Chromium

Remover navegações dos principais frames iniciadas pelo conteúdo para os URLs de dados

Como os usuários não técnicos não conhecem o navegador, o esquema data: é cada vez mais usado em ataques de spoofing e phishing. Para evitar isso, estamos bloqueando o carregamento de URLs data: de páginas da Web no frame superior. Isso se aplica a tags <a>, window.open, window.location e mecanismos semelhantes. O esquema data: ainda funciona para recursos carregados abaixo por uma página.

Esse recurso será removido no Chrome 60.

Intenção de remover | Rastreador de status do Chrome | Bug do Chromium

Remover nomes descontinuados das propriedades de trajetória de animação

As propriedades CSS da trajetória de animação permitem que os autores animem qualquer objeto gráfico ao longo de um caminho especificado pelo autor. Para seguir a especificação, várias propriedades foram implementadas no Chrome 45. Os nomes dessas propriedades foram alterados na especificação em meados de 2016. O Chrome implementou os novos nomes no Chrome 55 e no Chrome 56. Avisos de descontinuação do console também foram implementados.

No Chrome 58, os nomes antigos das propriedades estão sendo removidos. As propriedades afetadas e os novos nomes são mostrados abaixo.

Propriedade removida Nome atual
demarcação de animação deslocamento-caminho
deslocamento de movimento deslocamento-distância
rotação de movimento deslocamento-rotação
movimento offset

Intenção de remoção

Remover o EME de contextos não seguros

Alguns usos de Encrypted Media Extensions (EME) expõem implementações de gerenciamento de direitos digitais que não são de código aberto, envolvem acesso a identificadores exclusivos persistentes e/ou são executados sem sandbox ou com acesso privilegiado. Os riscos de segurança são maiores em sites expostos por HTTP não seguro, porque eles podem ser atacados por qualquer pessoa no canal. Além disso, quando o consentimento do usuário é necessário, a aceitação mantida para um site HTTP não seguro pode ser explorada por esse invasor.

O suporte a contextos não seguros foi removido da especificação versão 1 da EME e não é compatível com a recomendação proposta nem previsto na versão final subsequente. Ele não estará na próxima recomendação proposta ou na recomendação final subsequente. A API mostra uma mensagem de descontinuação em origens não seguras desde o Chrome 44 (maio de 2015). No Chrome 58, ela foi removida. Essa mudança faz parte do nosso esforço mais amplo para remover recursos avançados de origens não seguras.

Intenção de remover | Rastreador de status do Chrome | Bug do Chromium

Remover o autor da chamada legado para HTMLEmbedElement e HTMLObjectElement

Se a interface tem um autor de chamada legado, isso significa que uma instância pode ser chamada como uma função. Atualmente, HTMLEmbedElement e HTMLObjectElement são compatíveis com essa funcionalidade. No Chrome 57, esse recurso foi suspenso. A partir do Chrome 58, chamar uma exceção gera uma exceção.

Essa mudança deixa o Chrome alinhado com mudanças recentes nas especificações. O comportamento legado não é compatível com o Edge ou o Safari e está sendo removido do Firefox.

Intenção de remover | Rastreador de status do Chrome | Bug do Chromium

As criptografias ChaCha20-Poly1305 pré-padrão foram removidas

Em 2013, o Chrome 31 implantou novos pacotes de criptografia TLS baseados nos algoritmos ChaCha20 e Poly1305 do Prof. Dan Bernstein. Posteriormente, elas foram padronizadas, com pequenos ajustes, no IETF como RFC 7539 e RFC 7905 (links em inglês). Lançamos a variante padronizada no início de 2016 com o Chrome 49. Agora, vamos remover as variantes pré-padrão.

Intenção de remover | Rastreador de status do Chrome | Bug do Chromium

Remoção do suporte para correspondência de commonName em certificados

A RFC 2818 (link em inglês) descreve dois métodos para corresponder um nome de domínio a um certificado: usando os nomes disponíveis na extensão subjectAlternativeName ou, na ausência de uma extensão SAN, voltando para commonName. O substituto para o commonName foi descontinuado na RFC 2818 (publicado em 2000), mas o suporte continua com vários clientes TLS, geralmente de maneira incorreta.

O uso dos campos subjectAlternativeName não determina se um certificado está expressando uma vinculação a um endereço IP ou nome de domínio e é totalmente definido em termos de interação com as restrições de nome. No entanto, o commonName é ambíguo e, por isso, o suporte tem sido uma fonte de bugs de segurança no Chrome, nas bibliotecas que ele usa e no ecossistema TLS em geral.

O risco de compatibilidade para remover commonName é baixo. A RFC 2818 suspendeu o uso desse recurso há quase duas décadas, e os requisitos de referência, que todas as autoridades de certificação públicas precisam cumprir, exigem a presença de um subjectAltName desde 2012. O Firefox já exige o subjectAltName para todos os certificados publicamente confiáveis recém-emitidos, desde o Firefox 48.

Intenção de remover | Rastreador de status do Chrome | Bug do Chromium

Os elementos da interface regions, addRegion() e removeRegion() foram removidos da especificação WebVTT e no Chrome 58 para obedecer à especificação mais recente. Esperamos pouco impacto dessa remoção, já que o recurso nunca foi ativado por padrão (ou seja, estava por trás de uma flag). Quem precisa de uma alternativa pode usar a propriedade VTTCue.region, que será adicionada no Chrome 58.

Rastreador do Chromestatus | Bug do Chromium

WebAudio: remoção da interface AudioSourceNode.

A interface AudioSourceNode não faz parte da especificação de áudio da Web, não é construível e não tem atributos, portanto, basicamente não tem funcionalidade acessível para o desenvolvedor. Por isso, ele está sendo removido.

Intenção de remover | Rastreador de status do Chrome | Bug do Chromium

O atributo global webkitdropzone foi removido.

O atributo global dropzone foi introduzido pela especificação de arrastar e soltar HTML5 como um método declarativo para especificar a disposição de um elemento HTML como destino de uma operação de arrastar e soltar, os tipos de conteúdo que podem ser soltos no elemento e a operação de arrastar e soltar (copiar/mover/vincular).

O atributo não conseguiu ganhar força entre os fornecedores de navegadores. O Blink e o WebKit implementam apenas uma forma prefixada do atributo, webkitdropzone. Como o atributo dropzone foi removido da especificação no início de março de 2017, a versão prefixada está sendo removida do Chrome.

Intenção de remover | Rastreador de status do Chrome | Bug do Chromium

Suspensão do uso não seguro de notificações

As notificações são um recurso poderoso, porque permitem que os sites invoquem a interface do sistema para transmitir informações particulares ou um sinal de que informações particulares foram alteradas. Os invasores podem detectar ou roubar informações enviadas por notificação em uma conexão não segura. O push na Web exige uma origem segura. Portanto, essa mudança vai alinhar as notificações que não são push às notificações push. Essa mudança faz parte do nosso esforço mais amplo para remover recursos avançados de origens não seguras.

Intenção de remover | Rastreador de status do Chrome | Bug do Chromium

Descontinuação do uso de notificações de iframes não seguros

As solicitações de permissão de iframes podem confundir os usuários, porque é difícil distinguir entre a origem da página que contém e a do iframe que está fazendo a solicitação. Quando o escopo das solicitações não é claro, é difícil para os usuários julgarem se vão conceder ou negar a permissão.

Isso também vai alinhar os requisitos de permissão de notificações com os de notificações push, facilitando o atrito para os desenvolvedores.

Os desenvolvedores que precisam dessa funcionalidade podem abrir uma nova janela para solicitar permissão de notificação.

A remoção ocorrerá no Chrome 62.

Intenção de remover | Rastreador de status do Chrome | Bug do Chromium

Remoção de indexarDB.webkitGetDatabaseNames()

Adicionamos esse recurso quando o Indexed DB era relativamente novo no Chrome, e o prefixo era muito comum. A API retorna de maneira assíncrona uma lista de nomes de bancos de dados existentes em uma origem, que pareciam razoáveis o suficiente.

Infelizmente, o design é falho, já que os resultados podem ficar obsoletos assim que são retornados. Portanto, ele só pode ser usado para geração de registros, não para uma lógica de aplicativo séria. O problema no github (link em inglês) rastreia/vincula a uma discussão anterior sobre alternativas, o que exigiria uma abordagem diferente. Os desenvolvedores têm bastante interesse, mas devido à falta de progresso entre navegadores, o problema foi resolvido pelos autores das bibliotecas.

Os desenvolvedores que precisam dessa funcionalidade precisam desenvolver a própria solução. Bibliotecas como Dexie.js, por exemplo, usam uma tabela global, que é outro banco de dados para rastrear os nomes dos bancos de dados.

Esse recurso foi removido no Chrome 60.

Intenção de descontinuação | Rastreador do Chromestatus | Bug do Chromium