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.
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.
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.