Firefox 7 pour les développeurs

Firefox 7, basé sur Gecko 7.0, est sorti le 27 september 2011. Cet article fournit des informations à propos des changements qui affectent les développeurs dans cette version.

Changements pour les développeurs Web

HTML

  • La propriété profile de HTMLHeadElement a été supprimée, cette propriété est obsolète depuis Gecko 2.0.
  • Les propriétés x et y de HTMLImageElement ont été supprimées.
  • Le paramètre before de la méthode add() de HTMLSelectElement est désormais optionnel.
  • L'attribut background de l'élément <body> n'est plus résolu en tant qu'URI, ce qui est conforme à la spécification HTML courante.
  • L'attribut label de l'élément <option> reflète désormais la valeur du contenu texte de l'élément si l'attribut n'est pas spécifié.

Canvas

  • Dans le cadre du projet Azure, le Backend Azure Direct2D a été implémenté et améliore considérablement les performances des canvas 2D.
  • La spécification de valeurs invalides lors de l'appel de setTransform(), bezierCurveTo() ou arcTo() ne renvoie plus d'exception, ces appels sont à présent ignorés silencieusement.
  • La méthode isPointInPath() considère maintenant correctement la matrice de transformation lors de la comparaison du point spécifié au tracé en cours.
  • L'appel de strokeRect() avec une largeur et une hauteur de zéro n'a désormais plus aucun effet.
  • L'appel de drawImage() avec une largeur ou hauteur <canvas> de zéro lance désormais INVALID_STATE_ERR.
  • L'appel de drawImage() avec des coordonnées non-finies ne renvoie plus d'exception.
  • La méthode toDataURL() accepte désormais un second paramètre pour contrôler la qualité JPEG.
  • Le support des opérations non-standards clear et over de globalCompositeOperation a été enlevé.
  • Les ombres sont désormais uniquement dessinées pour les opérations de composition de source-over.
  • Vous pouvez désormais configurer la règle de remplissage utilisé par la toile en définissant l'attribute mozFillRule au contexte.
  • Le support des attributs expérimentaux mozDash, mozDashOffset, mozCurrentTransform et mozCurrentTransformInverse a été ajouté.
  • Le support des méthodes non-standards mozDrawText(), mozMeasureText(), mozPathText() et mozTextAlongPath() a été retiré.

CSS

  • text-overflow est désormais supporté.
  • La propriété -moz-orient a été corrigée pour que les éléments <progress> qui sont orientés verticalement aient des dimensions par défaut appropriées.

MathML

  • XLink href a été rétabli et l'attribut href de MathML3 est maintenant supporté. Les développeurs sont encouragés à passer à la dernière syntaxe.
  • Le support de l'attribut voffset sur les éléments <mpadded> a été ajouté et le comportement de l'attribut lspace a été fixé.
  • L'élément de premier niveau <math> accepte maintenant tous les atributs de l'élément <mstyle>.
  • Le support des polices Asana Math a été ajouté.
  • L'épaisseur des lignes medium des barres de fraction des éléments <mfrac> a été corrigé pour correspondre à l'épaisseur par défaut.
  • Les noms des espaces négatifs sont maintenant supportés.

DOM

  • Les méthodes non-standards getAsBinary(), getAsDataURL() et getAsText() de l'interface File ont été supprimées ainsi que les propriétés non-standards fileName et fileSize.
  • L'interface FormData ne signale plus le nom du fichier comme une chaîne vide lors de l'envoi l'en-tête HTTP Content-Disposition si les données ont été définies à l'aide de Blob. Cela corrige les erreurs qui avaient lieu sur certains serveurs.
  • L'attribut element.dir renvoie désormais toujours son résultat en minuscules, comme l'exige la spécification HTML.
  • la méthode readAsArrayBuffer() de FileReader est maintenant implémentée.
  • document.createEntityReference a été retiré. Elle n'a jamais été correctement implémentée et n'est pas intégrée dans la plupart des autres navigateurs.
  • document.normalizeDocument a été retiré. Utilisez Node.normalize à la place.
  • DOMTokenList.item renvoie désormais undefined si index est en dehors des limites, auparavant il renvoyé null.
  • Node.getFeature a été supprimé.
  • Les interfaces HTMLInsElement et HTMLDelElement ont été retirées, depuis que les éléments <ins> et <del> utilisent l'interface HTMLModElement.
  • Dans le but d'être conforme à la prochaine spécification DOM4Attr n'hérite plus de Node (il l'a fait dans les DOM Core 1, 2 and 3), beaucoup de propriétés et méthodes de Node sur l'interface Attr sont maintenant des rapports d'alertes que nous nous efforçons de retirer dans une version ultérieure.
  • Ajout du support des propriétés window.ondeviceorientation et window.ondevicemotion sur les objets window.
  • window.resizeTo, window.resizeBy, window.moveTo et window.moveBy ne s'appliquent plus à la fenêtre principale.

JavaScript

WebSockets

  • la préférence network.websocket.max-connections est utilisée pour déterminer le nombre maximum de connexions à WebSocket qui peuvent être ouvertes en même temps. La valeur par défaut est 200.
  • La version 8 du protocole WebSocket (comme spécifié par IETF draft 10) est maintenant utilisé à la place de la version 7 du protocole utilisé par Firefox 6.
  • L'API WebSocket est maintenant disponible sur Firefox Mobile.

Console API

  • Les messages enregistrés avec console.log alors que la console web n'est pas ouverte sont toujours enregistrés, bien qu'ils ne s'affichent pas lorsque la console web est ouverte.

Web timing

  • Première implémentation de la spécification Navigation Timing qui fournit des données pouvant être utilisées pour mesurer les performances d'un site.

XML

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

Ces changements affectent les développeurs d'extensions ainsi que les développeurs qui travaillent sur ou avec le code de Mozilla lui-même. Les developpeurs d'extensions doivent voir Updating extensions for Firefox 7 pour plus d'informations.

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

Modules de code JavaScript

FileUtils.jsm

  • la nouvelle méthode openFileOutputStream() ouvre un flux de sortie du fichier, la variante non-sécurisée, pour écrire dedans.

AddonManager.jsm

XUL

XPCOM

  • La nouvelle méthode Components.utils.schedulePreciseGC() vous permet de programmer un cycle approfondi de collection de garbage de se produire à un moment donné lorsqu'aucun code JavaScript n'est exécuté, un rappel est exécuté une fois la collecte terminée.
  • La méthode Components.utils.unload() vous permet de décharger les modules de code JavaScript déjà chargés en appelant Components.utils.load().

Rapporteur de mémoire

Ajout du support pour le multi-reporters, c'est le rapporteur de mémoire qui rassemble des données sur demande et effectue un rappel pour chaque résultat généré. Voir nsIMemoryMultiReporter et nsIMemoryMultiReporterCallback pour les interfaces nécessaires, ainsi que les méthodes nsIMemoryReporterManager.registerMultiReporter() et nsIMemoryReporterManager.unregisterMultiReporter().

Changements de l'expérience utilisateur

Changements dans le système de compilation

  • L'API d'intégration d'ActiveX n'est plus compilée et son support a été retiré du système de compilation. Des interfaces ont également été supprimées, voir Interfaces supprimées.
  • Vous n'avez plus besoin de préciser -Zc:wchar_t- lors de la compilation sous Windows. Pour plus de détails, voir la documentation sur la compilation.

Changements dans les interfaces

  • nsISocketTransport offre désormais un nouveau drapeau de connexion : DISABLE_IPV6, cela entraîne des tentatives de connexion uniquement aux adresses IPv4, en ignorant toutes les adresses IPv6 disponibles. De plus, nsIDNSService offre désormais un nouveau drapeau de résolution : RESOLVE_DISABLE_IPV6, ce qui entraîne un résolution des noms de domaine en ne tenant compte que des hôtes IPv4 et en ignorant toutes les adresses IPv6 disponibles. Ces changements permettent d'implémenter la stratégie "happy eyeballs" pour améliorer le temps de réponse lors d'une tentative de connexion sur les hôtes qui supportent à la fois IPv4 et IPv6 (en particulier ceux qui ont brisé la connectivité IPv6).
  • inIDOMUtils a deux nouvelles méthodes, inIDOMUtils.getChildrenForNode() qui renvoie une liste des nœuds enfants d'un noeud et inIDOMUtils.getUsedFontFaces() qui renvoie la liste des police de caractères utilisées dans une gamme.
  • L'interface nsIMarkupDocumentViewer_MOZILLA_2_0_BRANCH a été intégrée dans l'interface nsIMarkupDocumentViewer.
  • L'interface nsIDOMWindow2 a été intégrée dans l'interface nsIDOMWindow.
  • L'interface nsIDOMWindow_2_0_BRANCH a été intégrée dans l'interface nsIDOMWindowInternal.
  • Les méthodes nsINavHistoryObserver avec des paramètres d'URI exigent désormais un GUID.
  • L'interface nsISHistory_2_0_BRANCH a été intégrée dans l'interface nsISHistory.
  • nsITelemetry a une nouvelle méthode, nsITelemetry.getHistogramById() qui retourne un histogramme par son ID, et un nouvel attribut canRecord qui, lorsqu'il est défini sur false désactive l'enregistrement des statistiques de télémétrie. Les statistiques de télémétrie ne sont plus enregistrées lorsque l'on est en mode de navigation privée. (voir bug Firefox 661574 et bug Firefox 661573) Les histogrammes de télémétrie définis avec nsITelemetry.newHistogram() ne seront pas rapportés dans le ping de télémétrie.
  • L'interface nsIMemoryReporter a été sensiblement modifiée, si vous l'utilisez, vous devez faire quelques ajustements à votre code.
  • Les en-têtes nsIXMLHttpRequest fixées par nsIXMLHttpRequest.setRequestHeader() sont envoyées à la demande lorsque l'on suit une redirection. Auparavant, ces en-têtes n'auraient pas été envoyées.
  • nsIDocShell a un nouvel attribut allowWindowControl. Si il est true, le contenu du docshell est autorisé à contrôler la fenêtre (c'est-à-dire la déplacer ou la redimensionner).
  • L'interface nsIThreadInternal2 a été intégrée dans l'interface nsIThreadInternal.

Nouvelles interfaces

nsIDOMFontFace

Décrit une seule police de caractères.

nsIDOMFontFaceList

Décrit une liste de polices de caractères, chacune représentée par nsIDOMFontFace.

Interfaces supprimées

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

  • nsIDOM3Attr
  • nsIDOM3Node
  • nsIDOM3TypeInfo
  • nsIDOM3Text
  • nsIDOMDocumentStyle
  • nsIDOMNSDocument
  • nsIDOMNSFeatureFactory
  • nsIDOMNSHTMLDocument
  • nsIDOMNSHTMLFormElement
  • nsIDOMNSHTMLHRElement
  • nsIDOMNSHTMLTextAreaElement

Les interfaces suivantes ont été supprimées dans le cadre du retrait de l'API ActiveX :

  • DITestScriptHelper
  • DWebBrowserEvents
  • DWebBrowserEvents2
  • IDispatch
  • IMozControlBridge
  • IMozPluginHostCtrl
  • IWebBrowser
  • IWebBrowser2
  • IWebBrowserApp
  • IXMLDocument
  • IXMLElement
  • IXMLElementCollection
  • IXMLError
  • nsIActiveXSecurityPolicy
  • nsIDispatchSupport
  • nsIMozAxPlugin
  • nsIScriptEventHandler
  • nsIScriptEventManager

Autres changements

Voir aussi