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

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 57, que está na versão Beta desde o início de fevereiro. Esta lista está sujeita a mudanças a qualquer momento.

Remover o atributo BluetoothDevice.uuids

O atributo BluetoothDevice.uuids está sendo removido para alinhar a API Web Bluetooth à 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 indicou indicadores públicos para oferecer suporte a <keygen>. O Firefox já limita <keygen> a um gesto do usuário, mas apoia publicamente a remoção dele. O Safari envia <keygen> e não expressou opiniões públicas sobre o suporte contínuo. No Chrome 57, esse elemento foi removido.

Intent to remove | Chromestatus Tracker | Chromium Bug

Remover a API de gerenciamento de buffer de tempo de recursos prefixada

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

Intent to remove | Chromestatus Tracker | Chromium Bug

O ServiceWorkerMessageEvent foi removido em favor do MessageEvent.

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

Intent to remove | Chromestatus Tracker | Chromium Bug

Remover os alias globais da IndexedDB com prefixo webkit

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

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

Intent to remove | Chromestatus Tracker | Chromium Bug

WebAudio: remover AudioContext e OfflineAudioContext prefixados

O Chrome oferece suporte a WebAudio desde meados de 2011, incluindo AudioContext. OfflineAudioContext foi adicionado no ano seguinte. Considerando o tempo de suporte às interfaces padrão e a meta de longo prazo do Google de remover recursos com prefixo, as versões com prefixo dessas interfaces foram descontinuadas desde o final de 2014 e agora estão sendo removidas.

Intent to remove | Chromestatus Tracker | Chromium Bug

Descontinuar e remover o webkitCancelRequestAnimationFrame

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

Intent to remove | Chromestatus Tracker | Chromium Bug

Descontinuação da correspondência sem distinção entre maiúsculas e minúsculas para o atributo usemap

O atributo usemap era definido como sem distinção entre maiúsculas e minúsculas. Infelizmente, a implementação era tão complicada que nenhum navegador a implementou corretamente. A pesquisa sugeriu que esse algoritmo complicado é desnecessário, e até mesmo a correspondência ASCII sem distinção entre maiúsculas e minúsculas é desnecessária.

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

Intent to remove | Chromestatus Tracker | Chromium Bug

Descontinuação do FileReaderSync em service workers

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

No momento, apenas o Firefox e o Chrome expõem FileReaderSync em workers de serviço. O Firefox concorda com a discussão sobre a especificação de que isso precisa ser corrigido. A remoção está prevista para o Chrome 59.

Intent to remove | Chromestatus Tracker | Chromium Bug

Descontinuação do autor de chamada legado para HTMLEmbedElement e HTMLObjectElement

Uma interface com um autor da chamada legado significa que uma instância pode ser chamada como uma função. No momento, HTMLEmbedElement e HTMLObjectElement oferecem suporte a essa funcionalidade. No Chrome 57, essa capacidade foi descontinuada. Após a remoção, que é esperada no Chrome 58, a chamada vai gerar uma exceção.

Essa mudança alinha o Chrome às 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.

Intent to remove | Chromestatus Tracker | Chromium Bug

Descontinuação de RTCRtcpMuxPolicy de "negotiate"

O rtcpMuxPolicy é usado pelo Chrome para especificar a política preferencial em relação ao uso da multiplexação RTP/RTCP. No Chrome 57, mudamos o padrão rtcpMuxPolicy para "require" e descontinuamos "negotiate" pelos seguintes motivos:

  • O RTCP não-muxado usa recursos de rede extras.
  • A remoção de "negotiate" vai simplificar a API, já que um "RtpSender"/"RtpReceiver" vai ter apenas um único transporte.

No Chrome 57, a opção "negociação" foi descontinuada. Acreditamos que essa é uma mudança sem interrupção, já que o usuário vai receber uma mensagem de descontinuação e o RTCPeerConnection ainda pode ser criado. A remoção está no Chrome 63.

Intenção de descontinuar | Bug do Chromium

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

A codificação de credenciais em solicitações de subrecursos é problemática do ponto de vista da segurança, porque permite que hackers usem força bruta nas credenciais no passado. Esses perigos são exacerbados para solicitações de subrecursos com credenciais que alcançam intervalos de IP internos (roteadores etc.). Considerando o baixo uso, fechar esse (pequeno) problema de segurança parece bastante razoável.

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

Intent to remove | Chromestatus Tracker | Chromium Bug