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

Joe Medley
Joe Medley

Em quase todas as versões do Chrome, há um número significativo de atualizações e melhorias no produto, no desempenho e nos recursos da plataforma da Web. Este artigo descreve as descontinuações e remoções no Chrome 60, que está na versão Beta desde 8 de junho. Essa lista está sujeita a mudanças a qualquer momento.

Segurança

O crypto.subtle agora exige uma origem segura

A API Web Crypto, que é compatível desde o Chrome 37, sempre funcionou em origens não seguras. Devido à política de longa data do Chrome de preferir origens seguras para recursos avançados, crypto.subtle não é visível apenas em origens seguras.

Intent to remove | Bug do Chromium

Remover navegações de primeiro frame iniciadas pelo conteúdo para URLs de dados

Devido à falta de familiaridade dos usuários não técnicos do navegador, estamos vendo cada vez mais o esquema data: sendo usado em ataques de spoofing e phishing. Para evitar isso, estamos impedindo que as páginas da Web carreguem URLs data: no frame superior. Isso se aplica a tags <a>, window.open, window.location e mecanismos semelhantes. O esquema data: ainda vai funcionar para recursos carregados por uma página.

Esse recurso foi descontinuado no Chrome 58 e removido.

Intent to remove | Chromestatus Tracker | Chromium Bug

Desativação temporária de navigator.sendBeacon() para alguns blobs

A função navigator.sendBeacon() está disponível desde o Chrome 39. Conforme implementado originalmente, o argumento data da função pode conter qualquer blob arbitrário cujo tipo não esteja na lista segura do CORS. Acreditamos que essa é uma possível ameaça à segurança, embora ninguém tenha tentado explorá-la. Como NÃO temos uma correção imediata razoável, temporariamente, sendBeacon() não pode mais ser invocado em blobs cujo tipo NÃO está na lista de segurança do CORS.

Embora essa mudança tenha sido implementada no Chrome 60, ela foi mesclada de volta ao Chrome 59.

Bug do Chromium

CSS

Fazer com que o combinator de descendentes com perfuração de sombra se comporte como o combinator de descendentes

O combinador de descendentes de perfuração de sombra (>>>), parte do nível 1 do módulo de escopo do CSS, tinha como objetivo corresponder aos filhos de um elemento ancestral específico, mesmo quando eles apareciam dentro de uma árvore de sombra. Isso tinha algumas limitações. Primeiro, de acordo com a especificação, ele só podia ser usado em chamadas de JavaScript, como querySelector(), e não funcionava em folhas de estilo. Mais importante, os fornecedores de navegadores não conseguiram fazer com que ele funcionasse além de um nível do DOM da sombra.

Consequentemente, o combinator de descendentes foi removido das especificações relevantes, incluindo o Shadow DOM v1. Em vez de quebrar páginas da Web removendo esse seletor do Chromium, escolhemos usar um alias para o combinador de descendentes de perfuração de sombra no combinador de descendentes. O comportamento original foi descontinuado no Chrome 45. O novo comportamento foi implementado no Chrome 61.

Intent to remove | Chromestatus Tracker | Chromium Bug

JavaScript

Suspensão e remoção de RTCPeerConnection.getStreamById()

Há quase dois anos, o getStreamById() foi removido da especificação do WebRTC. A maioria dos outros navegadores já removeu esse recurso das implementações. Embora se acredite que essa função seja pouco usada, também há um pequeno risco de interoperabilidade com o Edge e os navegadores baseados no WebKit diferentes do Safari, em que o getStreamById() ainda é compatível. Os desenvolvedores que precisam de uma implementação alternativa podem encontrar um exemplo de código na intenção de remoção abaixo.

A remoção está no Chrome 62.

Intent to remove | Chromestatus Tracker | Chromium Bug

Suspensão do uso de SVGPathElement.getPathSegAtLength

Há mais de dois anos, o getPathSegAtLength() foi removido da especificação do SVG. Como há apenas alguns hits para esse método no httparchive, ele está sendo descontinuado no Chrome 60. A remoção deve ocorrer no Chrome 62, que será lançado no início ou no meio de outubro.

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

Move getContextAttributes() para trás de uma flag

A função getContextAttributes() tem suporte no CanvasRenderingContext2D desde 2013. No entanto, o recurso não fazia parte de nenhum padrão e não se tornou parte de nenhum desde então. Ele deveria ter sido implementado atrás da flag de linha de comando --enable-experimental-canvas-features, mas não foi. No Chrome 60, esse erro foi corrigido. Acredita-se que essa mudança é segura, já que não há dados mostrando que alguém está usando o método.

Bug do Chromium

Remover Headers.prototype.getAll()

A função Headers.prototype.getAll() está sendo removida de acordo com a versão mais recente da especificação de busca.

Intent to remove | Chromestatus Tracker | Chromium Bug

Remover indexedDB.webkitGetDatabaseNames()

Adicionamos esse recurso quando o Indexed DB era relativamente novo no Chrome e o prefixo era a última moda. A API retorna de forma assíncrona uma lista de nomes de banco de dados existentes em uma origem, o que parecia bastante razoável.

Infelizmente, o design é falho, já que os resultados podem ficar obsoletos assim que são retornados. Portanto, ele só pode ser usado para registro, não para lógica de aplicativo séria. O problema do GitHub rastreia/vincula a discussão anterior sobre alternativas, o que exigiria uma abordagem diferente. Embora os desenvolvedores tenham mostrado interesse, o problema foi resolvido pelos autores da biblioteca devido à falta de progresso entre navegadores.

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 descontinuado no Chrome 58 e removido.

Intent to Remove | Chromestatus Tracker | Chromium Bug

Remover WEBKIT_KEYFRAMES_RULE e WEBKIT_KEYFRAME_RULE

As constantes não padrão WEBKIT_KEYFRAMES_RULE e WEBKIT_KEYFRAME_RULE foram removidas da Regra CSS. Os desenvolvedores precisam usar KEYFRAMES_RULE e KEYFRAME_RULE.

Intent to Remove | Chromestatus Tracker | Chromium Bug

Interface do usuário

Exigir gesto do usuário para caixas de diálogo de beforeunload

A partir do Chrome 60, a caixa de diálogo beforeunload só vai aparecer se o frame que está tentando ser mostrado tiver recebido um gesto ou interação do usuário (ou se um frame incorporado tiver recebido esse gesto). Para deixar claro, essa não é uma mudança no envio do evento beforeunload. É apenas uma mudança na exibição da caixa de diálogo.

A caixa de diálogo beforeunload é uma caixa de diálogo modal do app. Por isso, ele é inerentemente hostil ao usuário, ou seja, ele responde à navegação do usuário questionando a decisão dele. Há usos positivos para esse recurso. Por exemplo, ele é usado com frequência para alertar os usuários quando eles vão perder dados ao navegar.

Embora a capacidade de uma página fornecer texto para a caixa de diálogo beforeunload tenha sido removida há algum tempo, as caixas de diálogo beforeunload continuam sendo um vetor de abuso. Em particular, as caixas de diálogo beforeunload são um ingrediente de sites de golpes, em que o áudio de reprodução automática e o texto ameaçador fornecem um contexto em que a mensagem "Você tem certeza de que quer sair desta página?" do Chromium se torna preocupante.

Queremos encontrar o equilíbrio e permitir apenas bons usos da caixa de diálogo beforeunload. As boas utilizações da caixa de diálogo são aquelas em que o usuário tem um estado que pode ser perdido. Se o usuário nunca interagiu com a página, ele não pode ter nenhum estado que possa ser perdido. Portanto, não corremos o risco de perder dados do usuário ao suprimir a caixa de diálogo nesse caso.