Firefox 5 pour les développeurs

Firefox 5, basé sur Gecko 5.0, est sorti le 21 juin 2011. Cet article fournit des informations à propos des changements qui affectent les développeurs dans cette version.

Changements pour les développeurs Web

HTML

Améliorations de Canvas

  • L'environnement de dessin 2D <canvas> supporte désormais la spécification d'un objet ImageData en entrée de la méthode createImageData() ; cela créé un nouvel objet ImageData qui est initialisé avec les mêmes dimensions que l'objet spécifié, mais tous les pixels sont toujours prédéfinis en noir transparent. ceci a été documenté comme déjà mis en oeuvre alors que ça ne l'était pas.
  • Spécifier des valeurs non finies lors de l'ajout de couleur arrête l'ajout via un appel à addColorStop() de la méthode CanvasGradient en renvoyant désormais INDEX_SIZE_ERR à la place de SYNTAX_ERR.
  • La méthode HTMLCanvasElement toDataURL() now correctly lower-cases the specified MIME type before matching.
  • getImageData() accepte maintenant correctement les rectangles qui vont au-delà des limites de la zone, les pixels qui sont en dehors de la zone sont mis en noir transparent.
  • drawImage() et createImageData() traitent désormais les arguments négatifs conformément à la spécification, en retournant le rectangle autour de l'axe approprié. Nous avons besoin d'un article sur CSS sizing et son fonctionnement.
  • La spécification de valeurs non-finies lors de l'appel de createImageData() renvoi maintenant l'exception NOT_SUPPORTED_ERR.
  • createImageData() et getImageData() retournent maintenant correctement une valeur d'un pixel en données d'image si un rectangle plus petit qu'un petit qu'un pixel est spécifié.
  • La spécification d'un angle négatif lors de l'appel de createRadialGradient() renvoi désormais INDEX_SIZE_ERR.
  • La spécification d'une image null ou undefined lors de l'appel de createPattern() ou drawImage() renvoi désormais l'exception TYPE_MISMATCH_ERR.
  • La spécification de valeurs incorrectes pour globalAlpha ne renvoie plus l'exception SYNTAX_ERR, cela est désormais ignoré silencieusement.
  • La spécification de valeurs incorrectes lors de l'appel de translate(), transform(), rect(), clearRect(), fillRect(), strokeRect(), lineTo(), moveTo(), quadraticCurveTo() ou arc() ne renvoie plus une exception ; ces appels sont désormais ingorés silencieusement.
  • Le réglage de la valeur de shadowOffsetX, shadowOffsetY ou shadowBlur avec une valeur incorrecte est désormais ignoré silencieusement.
  • Le réglage de la valeur de rotate ou scale avec une valeur incorrecte est désormais ignoré silencieusement.

CSS

Animations CSS

Le support pour les animations CSS a été ajouté, pour l'instant il faut utilisé le préfixe -moz-.

DOM

  • L'objet selection de la méthode modify() a été modifiée afin que la sélection de la granularité "mot" ne contienne plus les espaces à la fin, ce qui est plus cohérent et correspond au comportement de WebKit.
  • La méthode window.setTimeout() veille maintenant à ne plus envoyer de délai d'attente dans les onglets inactifs. En plus, le délai est imbriqué à la valeur minimale autorisée par la spécification HTML5 : 4 ms (au lieu de 10 ms qui sert à fixer).
  • De même, la méthode window.setInterval() ne serre pas plus d'un intervalle par seconde dans les onglets inactifs.
  • XMLHttpRequest supporte maintenant l'évènement loadend. C'est envoyé après qu'un transfert soit terminé (c'est-à-dire après l'évènement abort, error ou load). Vous pouvez utiliser cette fonction pour gérer les tâches qui doivent être exécutées indépendamment de la réussite ou l'échec d'un transfert.
  • Blob et, par extension, les objets de File de la méthode slice() ont été supprimés et remplacés par une nouvelle, avec une syntaxe qui la rend mieux compatible avec les méthodes Array.slice() et String.slice() dans JavaScript. Cette méthode s'appelle pour l'instant mozSlice().
  • La valeur de window.navigator.language est maintenant déterminée en examinant la valeur de l'en-tête HTTP Accept-Language.
  • La propriété Node.prefix est maintenant en lecture seule, comme l'exige la spécification DOM.
  • HTMLVideoElement supporte maintenant des propriétés expérimentales qui permettent d'obtenir des informations sur les statistiques des vidéos comme le nombres d'images par seconde.

JavaScript

  • Les expressions régulières ne sont plus appelable comme si il s'agissait de fonctions, ce changement a été fait de concert avec l'équipe de WebKit afin d'assurer la compatibilité (voir la bogue WebKit 28285. Cette fonctionnalité existait depuis longtemps déjà mais n'a jamais été documentée (du moins, pas sur MDN).
  • La méthode Function.prototype.isGenerator() est désormais supportée, ce qui vous permet de déterminer si une fonction est génératrice.
  • Les mots suivants ont été réservés : class, enum, export, extends, import et super. Auparavant, ils étaient uniquement considérés comme réservés en mode strict.
  • Les documents DOM crées dans le chrome ne peuvent plus être exposés à des scripts en sandbox.
  • Le parser JSON a été ré-écrit pour améliorer la vitesse et la conformité. Ce qui inclut un correctif pour le bug Firefox 572279.

SVG

  • L'attribut SVG class peut maintenant être animé.
  • Les interfaces SVG suivantes sont liées à des interfaces DOM représentant les listes d'objets qui sont maintenant indexables et peuvent être consultées comme des tableaux ; en outre, ils ont une propriété length indiquant le nombre d'éléments dans les listes : SVGLengthList, SVGNumberList, SVGPathSegList et SVGPointList.

HTTP

  • Firefox n'envoi plus l'en-tête HTTP Keep-Alive, nous n'avons pas pu le formater correctement et il était redondant car on retrouve la valeur "keep-alive" dans l'en-tête Connection ou Proxy-Connection.
  • Le modèle de transaction HTTP a été mis à jour pour être plus intelligent sur la réutilisation des connexions dans le pool de connexions persistantes, au lieu de traiter le pool pool comme une file d'attente, Necko tente maintenant de trier le pool avec des connexions avec la fenêtre qui a le plus de fenêtre de congestion (CWND) en premier. Cela peut réduire le temps d'aller-retour (RTT) des transactions HTTP en évitant la nécessité de développer des connexions fenêtres dans de nombreux cas.
  • Firefox gère désormais l'en-tête de réponse HTTP Content-Disposition plus efficacement si les deux paramètres filename et filename* sont fournis, il regarde à travers tous les noms fournis, en utilisant le paramètre filename* si il est disponible, même si un paramètre filename est inclus en premier. Auparavant, le premier paramètre correspondant était utilisé, ce qui empêchait l'utilisation d'un nom plus approprié. Voir bug Firefox 588781.

MathML

Outils pour les développeurs

  • L'objet Console de la Console Web a maintenant une méthode debug(), qui est un alias pour la méthode log(), cela améliore la compatibilité avec certains sites.

Changements pour les développeurs de Mozilla et de modules complémentaires

Pour des conseils utiles sur la mise à jour des extensions pour Firefox 5, voir Updating add-ons for Firefox 5.

Note : Firefox 5 requiert que les composants binaires soient recompilés, comme pour toutes les versions majeures de Firefox. Pour plus de détails, voir Interfaces Binaires.

Changements dans les modules de code JavaScript

Nouveau module de code JavaScript

  • Le module de code Dict.jsm a été ajouté, il fournit une API pour les dictionnaires de paires clé/valeur.

NetUtil.jsm

  • La méthode asyncFetch() supporte désormais la spécification de la source en tant que nsIInputStream.

Changements dans les interfaces

  • L'interface nsIHttpChannelInternal a maintenant de nouveaux attributs donnant accès à des informations sur les points finaux des canaux des adresses et des ports. Ces informations sont fournies principalement à des fins de débogage.
  • Les attributs width et height de l'élément <canvas> sont désormais inclus dans IDL comme des entiers non signés au lieu d'être signés (voir HTMLCanvasElement).
  • Les interfaces nsIAppStartup2 et nsIAppStartup_MOZILLA_2_0 ont été fusionnées avec l'interface nsIAppStartup.
  • L'interface nsIDocShell_MOZILLA_2_0_BRANCH a été fusionnée avec l'interface nsIDocShell.
  • L'interface nsIFocusManager_MOZILLA_2_0_BRANCH a été fusionnée avec l'interface nsIFocusManager.
  • L'interface nsIHTMLEditor_MOZILLA_2_0_BRANCH a été fusionnée avec l'interface nsIHTMLEditor.

Nouvelle interface

Interfaces supprimées

Les interfaces suivantes ont été supprimées car elles n'étaient plus indispensables :

Aide au débogage

  • La nouvelle aide DebugOnly<T> permet de déclarer des variables seulement pour les versions DEBUG.

API JavaScript (SpiderMonkey)

Changement dans le système de compilation

  • Vous pouvez désormais compiler Firefox sans le fichier mozconfig, l'option --enable-application paramètre par défaut à "browser". Après avoir extrait ou téléchargé le code, vous pouvez tout simplement faire configure && make (ou make -f client.mk) pour compiler Firefox.

Voir aussi