Extensões do navegador
======================

Extensões são capazes de extender e modificar a capacidade de um navegador. As extensões para Firefox são criadas usando a API WebExtensions, um sistema comum a vários navegadores para desenvolvimento de extensões. Em grande parte, o sistema é compatível com a API de extensões suportada pelo Google Chrome, Opera e W3C Draft Community Group.

Extensões escritas para esses navegadores na maioria dos casos vão funcionar no Firefox ou Microsoft Edge com apenas algumas alterações. A API é também totalmente compatível com o multiprocessamento do Firefox.

Se você tem dúvidas ou sugestões, ou precisa de ajuda para migrar um complemento legado para usar APIs WebExtensions, pode entrar em contato conosco pela newsletter de desenvolvimento de complementos ou #webextensions no IRC.

### Começando

* O que é uma extensão
* Sua primeira extensão
* Sua segunda extensão
* Anatomia de uma extensão
* Extensões de exemplo
* E depois?
### Conceitos

* Visão geral da API JavaScript
* Scripts de conteúdo
* Padrões de correspondência
* Trabalhando com arquivos
* Internacionalização
* Melhores práticas de segurança
* Política de segurança de conteúdo
* Troca de mensagens nativa
* Usando as APIs devtools
* Melhores práticas de experiência do usuário
* Manifestos nativos
### Interface do usuário

* Introdução
* Botão na barra de ferramenta
* Botão na barra de ferramenta com um popup
* Botão na barra de endereços
* Botão na barra de endereços com um popup
* Itens de menu de contexto
* Painéis laterais
* Página de opções
* Páginas da extensão
* Notificação
* Sugestões na barra de endereços
* Painéis na ferramenta do desenvolvedor
### Como

* Interceptar solicitações HTTP
* Modificar uma página da web
* Adicionar um botão na barra de ferramenta
* Implementar uma página de configurações
* Interagir com a área de transferência
* Trabalhar com a API de abas
* Trabalhar com a API de favoritos
* Trabalhar com a API de cookies
* Trabalhar com identidades contextuais
* Inserir conteúdo externo
### Portabilidade

* Portando uma extensão do Google Chrome
* Portando uma extensão legada do Firefox
* Desenvolvendo para o Firefox para Android
* WebExtensions incorporadas
* Comparação com Add-on SDK
* Comparação com extensões XUL/XPCOM
* Incompatibilidades com Chrome
* Diferenças entre desktop e Android
### Fluxo de trabalho do Firefox

* Experiência do usuário
* Instalando
* Depurando
* Testando funcionalidades de persistência e reinicialização
* Começando com web-ext
* Referência de comandos web-ext
* Extensões e ID de complementos
* Opções de distribuição alternativas
* Solicitando as permissões corretas
* Compartilhando objetos com scripts de páginas
* Publicando sua extensão
* Descontinuando sua extensão
* Dicas e truques
### Referências

#### APIs JavaScript

* Visão geral da API JavaScript
* Tabelas de compatibilidade de navegadores com APIs JavaScript

#### Chaves do Manifest

* Visão geral do manifest.json
* Compatibilidade de navegadores com manifest.json
* action
* author
* background
* browser\_action
* browser\_specific\_settings
* chrome\_settings\_overrides
* chrome\_url\_overrides
* commands
* content\_scripts
* content\_security\_policy
* declarative\_net\_request
* default\_locale
* description
* developer
* devtools\_page
* dictionaries
* externally\_connectable
* homepage\_url
* host\_permissions
* icons
* incognito
* manifest\_version
* name
* offline\_enabled
* omnibox
* optional\_permissions
* options\_page
* options\_ui
* page\_action
* permissions
* protocol\_handlers
* short\_name
* sidebar\_action
* storage
* theme
* theme\_experiment
* user\_scripts
* version
* version\_name
* web\_accessible\_resources