terça-feira, 13 de setembro de 2016

Estrutura básica de uma extensão XUL para o Mozilla Firefox

As extensões Firefox são uma forma de se publicar aplicativos cliente para navegadores.

As extensões do Chrome tem muitas limitações, devido às políticas de proteção e de contabilização do Google. Portanto, se for fazer extensões, faça para Firefox.

Estrutura de diretórios

As extensões apresentam a seguinte estrutura de diretório dentro do Windows:


Função dos diretórios

content - Armazena os arquivos XUL de extensão, bem como bibliotecas JAR e Javascript a que estes arquivos XUL façam referência;
locale - Armazena as constantes, nomes de labels e outros parâmetros que dependem da língua na qual a extensão será utilizada;
skin - Armazena as folhas de estilo (CSS) a serem intercambiadas para adaptação da interface da extensão.

Função dos arquivos

content/Hello.xul - Arquivo funcional principal da extensão. Poderia ter outro nome, mas precisa, obrigatoriamente, levar a extensão XUL;
chrome.manifest - Os desenvolvedores convencionaram chamar este tipo de arquivo de "manifesto", ou seja, a "placa" de referências dos caminhos onde estão os principais arquivos da aplicação. A origem de tal terminologia remonta aos programadores Java;
install.rdf - Contém informações básicas para registro da extensão no Firefox, como nome do projeto da extensão e informações de versão pouco importantes para o funcionamento, mas muito importantes para o controle da evolução da extensão.

Explicação detalhada dos conteúdos

install.rdf

<?xml version="1.0"?>

<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
  xmlns:em="http://www.mozilla.org/2004/em-rdf#">

  <Description about="urn:mozilla:install-manifest">
    <em:id>hello@meyer.com</em:id>
    <em:name>XUL Hello</em:name>
    <em:description>Welcome to XUL!</em:description>
    <em:version>0.1</em:version>
    <em:creator>Meyer</em:creator>
    <em:homepageURL>https://www.dvelopment.com.br</em:homepageURL>
    <em:type>2</em:type>

    <!-- Mozilla Firefox -->
    <em:targetApplication>
      <Description>
        <em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id>
        <em:minVersion>4.0</em:minVersion>
        <em:maxVersion>10.*</em:maxVersion>
      </Description>
    </em:targetApplication>
  </Description>
</RDF>

Como o leitor mesmo pode ver, não existem informações que possam influir no funcionamento da extensão. As mais importantes para o controle do projeto estão destacadas em vermelho. O código em fonte azul corresponde ao Firefox, e NÃO PODE SER ALTERADO.

chrome.manifest

Apesar de levar o nome chrome, este arquivo não carrega em si nenhuma compatibilidade com o navegador deste nome.

content hello content/

Apenas esta linha é necessária em nosso exemplo mínimo de extensão Firefox. Ela associa o "content" (conteúdo) ao caminho content/ do diretório que contém a nossa extensão, a partir da sua raiz.

content/Hello.xul

Este é o nome de um dos arquivos XUL utilizados em nossa extensão e, no nosso caso, o único.

<?xml version="1.0"?>
<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>

<window
id="findfile-window"
title="Find Files"
orient="horizontal"
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
<!-- Other elements go here --> 
<label value="This is some text"/>
</window>

Nesta estrutura de código, as tags Windows delimitam o mesmo objeto Windows que conhecemos do DOM (Document Object Model) do HTML.

Empacotamento da extensão

A extensão precisa ser compactada em arquivo ZIP (marque os diretórios e arquivos do mesmo nível que o diretório content) e sua extensão precisa ser alterada para XPI. Proceda a estas ações. Se não possuir um compactador, instale o 7zip, ou Windows RAR.

Instalação da extensão

Uma vez que você tenha compactado e renomeado o pacote de arquivos da extensão, execute o Firefox. Acione o menu à direita do navegador, e escolha a opção "Complementos".


Na tela seguinte, clique sobre a engrenagem mais à direita da tela.


Escolha a opção de instalação.

Será exibido o diálogo de arquivos do Explorer, e você deverá achar o diretório onde colocou o pacote renomeado para a extensão XPI.


Serão exibidas as mensagens de confirmação.


O Firefox vai avisar que você está tentando instalar um complemento não assinado. Mesmo assim, clique no botão "Instalar".

Se ele se recusar, assim mesmo, acione a configuração do Firefox (about:config).



Clique em "Serei Cuidadoso". Depois localize a chave "xpinstall".

Altere o valor desta opção para false, desta forma o Firefox vai desprezar esta segurança de assinaturas.

Em seguida ao instalar, conforme vinhamos em nosso roteiro, será dado um aviso, para reiniciar o Firefox.


Faça isso.

Teste da extensão

Lembre-se sempre que o teste e a execução desta extensão SÓ PODE SER FEITO NO NAVEGADOR FIREFOX. Muita gente se esquece disso, e perde tempo precioso, achando que fez algo errado, experimentando a extensão em outro navegador.

Digite o seguinte caminho no navegador Firefox:

chrome://hello/content/Hello.xul

e veja o resultado de todo o nosso esforço:


De onde veio esta frase que aparece no navegador ?

A frase veio da tag Label, colocada no arquivo Hello.xul:


E as tags Window delimitam o objeto que define a janela do navegador.


Nenhum comentário:

Postar um comentário