Descontinuações e remoções de APIs no Chrome 57

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. Este artigo descreve as descontinuações e remoções do Chrome 57, que está na versão Beta desde o início de fevereiro. Essa lista está sujeita a alterações a qualquer momento.

Remoção do atributo BluetoothDevice.uuids

O atributo BluetoothDevice.uuids está sendo removido para alinhar a API Web Bluetooth com a especificação atual. É possível recuperar todos os serviços GATT permitidos chamando device.getPrimaryServices().

Bug do Chromium

Remover elemento de geração de chave

Desde o Chrome 49, o comportamento padrão de <keygen> é retornar a string vazia, a menos que uma permissão tenha sido concedida a essa página. O IE/Edge não oferece suporte a <keygen> e não indicaram sinais públicos para oferecer suporte a <keygen>. O Firefox já bloqueia o <keygen> atrás de um gesto do usuário, mas apoia publicamente a remoção dele. O Safari envia o <keygen> e não expressou as opiniões públicas sobre o apoio contínuo a ele. No Chrome 57, esse elemento é removido.

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

Remoção da API prefixada de gerenciamento de buffer de tempo de recurso

Dois métodos e um manipulador de eventos, webkitClearResourceTimings(), webkitSetResourceTimingBufferSize() e onwebkitresourcetimingbufferfull, são obsoletos e são específicos do fornecedor. As versões padrão dessas APIs têm suporte desde o Chrome 46, e as funções prefixadas também foram descontinuadas nessa versão. Esses recursos foram implementados originalmente no WebKit, mas o Safari não os ativou. O Firefox, o IE 10+ e o Edge têm apenas versões sem prefixo da API. Por isso, as versões do webkit estão sendo removidas.

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

Remoção de ServiceWorkerMessageEvent pelo uso de MessageEvent.

A especificação HTML estendeu MessageEvent para permitir ServiceWorker como um tipo para o atributo source. O client.postMessage() e a criação de eventos de mensagens personalizados foram alterados para usar MessageEvent em vez de ServiceWorkerMessageEvent. ServiceWorkerMessageEvent foi removido.

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

Aliases globais do IndexedDB com prefixo webkit

O ponto de entrada IndexedDB e os construtores globais foram expostos com prefixos webkit em algum lugar no Chrome 11. As versões sem prefixo foram adicionadas no Chrome 24, e as versões prefixadas foram descontinuadas no Chrome 38. As interfaces abaixo são afetadas:

  • webkitIndexedDB (ponto de entrada principal)
  • webkitIDBKeyRange (construtor global não chamável, mas tem métodos estáticos úteis)
  • webkitIDBCursor
  • webkitIDBDatabase
  • webkitIDBFactory
  • webkitIDBIndex
  • webkitIDBObjectStore
  • webkitIDBRequest
  • webkitIDBTransaction (construtores globais não chamáveis)

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

WebAudio: o AudioContext e o OffAudioContext prefixados foram removidos

O Chrome oferece suporte ao WebAudio desde meados de 2011, incluindo AudioContext. OfflineAudioContext foi adicionado no ano seguinte. Considerando o tempo de suporte das interfaces padrão e o objetivo de longo prazo do Google de remover os recursos prefixados, as versões prefixadas dessas interfaces foram descontinuadas desde o final de 2014 e estão sendo removidas.

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

O uso do webkitCancelRequestAnimationFrame foi descontinuado e removido.

O método webkitCancelRequestAnimationFrame() é uma API obsoleta e específica do fornecedor, e o padrão cancelAnimationFrame() é compatível há muito tempo no Chromium. Por isso, a versão do webkit está sendo removida.

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

O uso da correspondência que não diferencia maiúsculas de minúsculas foi descontinuado no 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 esse algoritmo 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 a remoção está prevista no Chrome 58.

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

Suspensão do uso de FileReaderSync em service workers

A especificação Service Worker sempre teve a observação (não normal) de que "nenhum tipo de solicitação síncrona não pode ser iniciado dentro de um service worker" para evitar o bloqueio do service worker. Bloquear o service worker bloqueia todas as solicitações de rede das páginas controladas. Infelizmente, a API FileReaderSync está disponível há muito tempo em service workers.

Atualmente, apenas o Firefox e o Chrome expõem FileReaderSync nos service workers. O Firefox está de acordo com a discussão de especificações (em inglês) de que isso precisa ser corrigido. A remoção está prevista para o Chrome 59.

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

Suspensão do uso da chamada legada 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. Após a remoção, que é esperada no Chrome 58, uma chamada vai gerar 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

Suspensão do uso de RTCRtcpMuxPolicy de "negociar"

O rtcpMuxPolicy é usado pelo Chrome para especificar a política preferencial relacionada ao uso de multiplexação RTP/RTCP. No Chrome 57, mudamos o rtcpMuxPolicy padrão para "requer" e descontinuamos "negociar" pelos seguintes motivos:

  • O RTCP não multiplexado usa recursos de rede extras.
  • Remover "negociar" vai simplificar a superfície da API, já que um "RtpSender"/"RtpReceiver" só vai ter um único transporte.

No Chrome 57, o uso de "negociar" foi suspenso. Acreditamos que essa não é uma alteração interruptiva, já que o usuário vai receber uma mensagem de descontinuação, e RTCPeerConnection ainda pode ser criado. A remoção ocorrerá no Chrome 63.

Intent de descontinuação | Bug do Chromium

Descontinuação do suporte para credenciais incorporadas em solicitações de recursos secundários

Fixar credenciais no código em solicitações de recursos secundários é um problema do ponto de vista da segurança, já que permitiria que hackers forçassem as credenciais no passado. Esses perigos são agravados para solicitações de recursos secundários credenciados que alcançam intervalos de IP internos (seus roteadores etc.). Devido ao baixo uso, encerrar essa (pequena) falha de segurança parece bastante razoável.

Os desenvolvedores podem incorporar recursos que não exijam autenticação básica/resumo, usando cookies e outros mecanismos de gerenciamento de sessão.

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