Esboço
Esta página está incompleta.
O Firefox 5, é baseado no Gecko 5.0 e será lançado na metade de 2011. Este artigo proporciona links para informações sobre as mudanças que afetam os desenvolvedores nesta versão. Os nightly builds do futuro Firefox 5 estão disponíveis atualmente no canal Beta (iesto é, na seção mozilla-beta).
Nota: Devido à maneira de funcionamento do processo de desenvolvimento, é possível que características atualmente listadas aqui possam ser transferidas para versões futuras do Firefox, por este motivo, por favor, fique atento a esta página.
Mudanças para desenvolvedores
HTML
- Todos os elementos HTML agora possuem o atributo
accessKey
, assim como os métodosblur()
,click()
efocus()
. Os quais estão especificados na interfaceHTMLElement
. - Com o objetivo de cumprir a especificação do HTML5, foi removido o suporte aos conjuntos de caracteres UTF-7 e UTF-32.
- Peculiarmente,
<map>
vazios não são mais ignorados em favor de não vazios quando houver correspondência. Veja as notas do Gecko sobre o elemento<map>
para detalhes.
Melhorias no Canvas
- O contexto de desenhos 2D do
<canvas>
agora suporta a especificação de um objetoImageData
como entrada para o métodocreateImageData()
; isto cria um novo objetoImageData
inicializado com as mesmas dimensões do objeto especificado, mas ainda assim com pixels pré configurados para preto transparente. Isto já foi documentado, mas ainda não foi implementado. - A especificação de valores não finitos durante a adicão de cores, agora, através do método
CanvasGradient
addColorStop()
agora lança corretamenteINDEX_SIZE_ERR
ao invés deSYNTAX_ERR
. - O método
HTMLCanvasElement
toDataURL()
agora deixa as letras do tipo MIME especificado, minúsculas corretamente, antes da comparação. getImageData()
agora aceita corretamente retângulos que se estendem além do limite do seu canvas; pixels fora do canvas são retornados como preto transparente.drawImage()
ecreateImageData()
agora lidam com argumentos negativos de acordo com a especificação, coloando o retângulo ao redor do eixo apropriado. É necessário um artigo sobre redimencionamento CSS e como ele funciona.- A especificação de valores não finitos na chamada de
createImageData()
agora lança uma exceçãoNOT_SUPPORTED_ERR
apropriada. createImageData()
egetImageData()
agora retornam corretamente ao menos um pixels válido dos dados da imagem se um retângulo menor do que um pixels for especificado.- A especificação de um raio negativo na chamada de
createRadialGradient()
agora corretamente lançaINDEX_SIZE_ERR
. - A especificação de uma imagem
null
ouundefined
na chamada decreatePattern()
oudrawImage()
agora corretamente lança uma exceçãoTYPE_MISMATCH_ERR
. - A especificação de valores inválidos para
globalAlpha
não lança mais uma exceçãoSYNTAX_ERR
; estes agora são correta e silenciosamente ignorados. - A especificação de valores inválidos na chamada de
translate()
,transform()
,rect()
,clearRect()
,fillRect()
,strokeRect()
,lineTo()
,moveTo()
,quadraticCurveTo()
ouarc()
não lançam mais uma exceção; estas chamadas são agora correta e silenciosamente ignoradas. - A configuração do valor de
shadowOffsetX
,shadowOffsetY
oushadowBlur
para valores inválidos é agora silenciosamente ignorada. - A configuração do valor de
rotate
ouscale
para valores inválidos é agora silenciosamente ignorada.
CSS
- CSS animations
-
Foi adicionado o suporte para animações CSS, por enquanto com o uso do prefixo
-moz
-.
DOM
- O objeto
selection
do métodomodify()
foi mudado para que a granularidade da seleção da "palavra" não mais inclua espaços a direita; isto torna-o mais consistente em diferentes plataformas e combina com o comportamento da implementação do WebKit. - O método
window.setTimeout()
agora limita-se a não enviar mais de um tempo limite por segundo em abas inativas. Adicionalmente, ele agora limita-se aos tempos limite aninhados para o menor valor permitido pela especificação do HTML5: 4ms (ao invés de 10ms, antes fixado). - Similarmente, o método
window.setInterval()
agora limita-se a não enviar mais do que um intervalo por segundo em abas inativas. XMLHttpRequest
agora suporta o eventoloadend
para ouvintes de progresso. Isto é enviado após o fim de qualquer transferência (isto é, após os eventos deabort
,error
ouload
). Você pode usar isto para lidar com quaisquer tarefas que necessitem ser realizadas independente do sucesso ou da falha da transferência.- O
Blob
e, por extensão, o objetoFile
do métodoslice()
foi removido e substituido com uma nova sintaxe que o torna mais consistente com os métodosArray.slice()
eString.slice()
do JavaScript. Este método foi chamado demozSlice()
por enquanto. - O valor de
window.navigator.language
é agora determinado pela observação do valor deAccept-Language
do cabeçalho HTTP.
JavaScript
- Expressões regulare não podem mais ser chamadas como se fossem funções; esta mudança foi feita juntamente com a equipe do WebKit para assegurar a compatibilidade (veja WebKit bug 28285. Esta característica existiu por um longo tempo mas nunca foi documentada (ao menos não no MDC).
- O método
Function.prototype.isGenerator()
é agora suportado; ele permite determinar se uma função é um generator.
SVG
- O atributo SVG
class
pode agora ser animado. - As seguintes interfaces DOM relacionadas com o SVG, representando listas de objetos são agora indexáveis e podem ser acessadas como uma ordenação; adicionalmente, elas possuem uma propriedade
length
indicando o número de itens nas listas:SVGLengthList
,SVGNumberList
,SVGPathSegList
eSVGPointList
.
HTTP
- O Firefox não envia mais o cabeçalho HTTP "Keep-Alive"; nós não o estávamos formatando corretamente e ele era redundante, uma vez que também enviávamos o cabeçalho Connection: ou Proxy-Connection: com o valor "keep-alive" de qualquer modo.
- O modelo de transação HTTP foi atualizado para ser mais inteligente no reuso de conexões na área de conexão permanente; ao invés de tratar isto como uma pilha FIFO, o Necko agora tenta sortear uma área com conexões com as maiores congestion window (CWND) primeiro. Isto pode reduzir o tempo de ida e volta (RTT) de transações HTTP evitando a necessidade de aumentar janelas de conexões em muitos casos.
- O Firefox agora lida com o cabeçalho de resposta Content-Disposition HTTP mais efetivamente se ambos os parâmetros
filename
efilename*
são fornecidos; ele procura por todos os nomes fornecidos, usando o parâmetrofilename*
se houver um disponível, mesmo se um parâmetrofilename
é incluido primeiro. Anteriormente, o primeiro parâmetro de comparação seria usado, desta forma impedindo o uso de um nome mais apropriado. Veja bug 588781.
MathML
- Suporte a operadores embelezados
Ferramentas para desenvolvedores
- O objeto
Console
do Console Web agora possui um métododebug()
, o qual é um pseudônimo para seu métodolog()
; isto melhora a compatibilidade com certos sites existentes.
Mudanças para desenvolvedores de complementos e da Mozilla
Nota: O Firefox 5 requere que componentes bionários sejam recompilados, assim como todas as versões maiores do Firefox. Veja Interfaces Binárias para detalhes.
Mudanças nos módulos de código do JavaScript
Novos módulos de códigos JavaScript
- O módulo de código
Dict.jsm
foi adicionado; ele fornece uma API para dicionários de pares chave/valor.
NetUtil.jsm
- O método
asyncFetch()
agora suporta a especificação da fonte de entrada como umnsIInputStream
.
Mudanças na interface
- A interface
nsIHttpChannelInternal
possui novos atributos provendo acesso à informações sobre os pontos de extremidades dos endereços e portas dos canais. Esta informação é fornecida primariamente para propósitos de depuração. - Os atributos
width
eheight
do elemento<canvas>
são agora refletidos em IDL como unsigned integers ao invés de signed (vejaHTMLCanvasElement
).
Ferramentas de depuração
- O novo ajudante
DebugOnly<T>
torna possível declarar variáveis somente para construçõesDEBUG
.
API JavaScript (SpiderMonkey)
JS_DoubleToInt32()
eJS_DoubleToUint32()
foram adicionados, para converter valoresjsdouble
em integers C e unsigned integers.
Mudanças no sistema de construção
-
Você pode construir o Firefox sem um arquivo
mozconfig
; a configuração--enable-application
agora tem "browser" por padrão. Após puxar ou baixar o código, você pode simplesmenteconfigure && make
(oumake -f client.mk
) para construir o Firefox.