Extensões, temas e aplicativos são apenas pacotes de recursos, agrupados com um arquivo
manifest.json
que descreve o conteúdo do pacote. Em geral, o formato desse arquivo é
estável, mas, de vez em quando, é necessário fazer alterações interruptivas para resolver problemas importantes.
Os desenvolvedores precisam especificar qual versão da especificação do manifesto são o destino do pacote
definindo uma chave manifest_version
nos manifestos.
Versão atual
Os desenvolvedores precisam especificar 'manifest_version': 2
:
{
...,
"manifest_version": 2,
...
}
A versão 1 do manifesto foi descontinuada no Chrome 18, e o suporte vai ser descontinuado de acordo com a programação a seguir.
Cronograma de suporte da versão 1 do manifesto
Agosto de 2012
- A Chrome Web Store vai bloquear a criação de novas extensões da versão 1 do manifesto.
- A Web Store permitirá atualizações para as extensões da versão 1 do manifesto.
Março de 2013
- A Web Store bloqueará atualizações para extensões da versão 1 do manifesto em 4 de março de 2013.
Abril de 2013
- O Chrome 27 Beta deixará de empacotar as extensões da versão 1 do manifesto (ou carregá-las para desenvolvimento).
Junho de 2013
- A Web Store vai remover as extensões da versão 1 do manifesto do mural, dos resultados da pesquisa e das páginas de categoria.
- Os e-mails vão ser enviados a todos os desenvolvedores com extensões da versão 1 do manifesto que ainda estiverem na loja, lembrando que a publicação dessas extensões será cancelada e fornecendo instruções de atualização.
Setembro de 2013
- A Chrome Web Store vai cancelar a publicação de todas as extensões da versão 1 do manifesto.
- O aviso final por e-mail será enviado aos desenvolvedores com extensões da versão 1 do manifesto que ainda estiverem na Web Store.
- O Chrome vai continuar carregando e executando as extensões instaladas da versão 1 do manifesto.
Janeiro de 2014
- O Chrome vai parar de carregar ou executar extensões da versão 1 do manifesto.
Mudanças entre as versões 1 e 2
- Uma Política de Segurança de Conteúdo é definida como
`script-src 'self'; object-src 'self';
por padrão. Isso tem diversos impactos para os desenvolvedores, descritos em detalhes na documentaçãocontent_security_policy
. - Os recursos de um pacote não estão mais disponíveis por padrão para sites externos (como o
src
de uma imagem ou uma tagscript
). Se você quiser que um site possa carregar um recurso contido no seu pacote, precisará incluí-lo na lista de permissões explicitamente usando o atributo de manifestoweb_accessible_resources
. Isso é especialmente relevante para extensões que criam uma interface em um site por meio de scripts de conteúdo injetados. - A propriedade
background_page
foi substituída por uma propriedadebackground
que contém uma propriedadescripts
oupage
. Veja detalhes na documentação das Páginas de eventos. Mudanças na ação do navegador:
- A chave
browser_actions
no manifesto e a APIchrome.browserActions
desapareceram. Use os singularbrowser_action
echrome.browserAction
. - A propriedade
icons
debrowser_action
foi removida. Use a propriedadedefault_icon
ou browserAction.setIcon. - A propriedade
name
debrowser_action
foi removida. Use a propriedadedefault_title
ou browserAction.setTitle. - A propriedade
popup
debrowser_action
foi removida. Em vez dela, use a propriedadedefault_popup
ou browserAction.setPopup. - A propriedade
default_popup
debrowser_action
não pode mais ser especificada como um objeto. Ele precisa ser uma string.
- A chave
Mudanças na ação da página:
- A chave
page_actions
no manifesto e a APIchrome.pageActions
desapareceram. Use os singularpage_action
echrome.pageAction
. - A propriedade
icons
depage_action
foi removida. Use a propriedadedefault_icon
ou pageAction.setIcon. - A propriedade
name
depage_action
foi removida. Use a propriedadedefault_title
ou pageAction.setTitle. - A propriedade
popup
depage_action
foi removida. Use a propriedadedefault_popup
ou pageAction.setPopup. - A propriedade
default_popup
depage_action
não pode mais ser especificada como um objeto. Ele precisa ser uma string.
- A chave
A API
chrome.self
foi removida. Em vez disso, use umchrome.extension
.chrome.extension.getTabContentses
(!!!) echrome.extension.getExtensionTabs
foram embora. Use extension.getViews.Port.tab
sumiu. Em vez disso, use runtime.Port.