Firefox 6 pour les développeurs

  1. Notes de versions pour développeurs

    1. Notes de versions pour développeurs
  2. Modules complémentaires

    1. WebExtensions
    2. Thèmes
  3. Fonctionnement interne de Firefox

    1. Le projet Mozilla
    2. Gecko
    3. Mode « headless »
    4. Modules de code Javascript
    5. JS-ctypes
    6. Le projet MathML
    7. MFBT
    8. Les projets Mozilla
    9. Le système de préférences
    10. Connexions WebIDL
    11. XPCOM
    12. XUL
  4. Développer et contribuer

    1. Instructions de compilation
    2. Configuration des options de compilation
    3. Fonctionnement de la compilation
    4. Code source de Mozilla
    5. Localisation
    6. Mercurial
    7. Assurance qualité
    8. Utilisation de code Mozilla dans d'autres projets

Firefox 6, basé sur Gecko 6.0, est sorti le 16 août 2011. Cet article fournit des informations à propos des changements qui affectent les développeurs dans cette version.

Changements pour les développeurs web

HTML

  • L'élément HTML5 <progress>, qui vous permet de créer une barre de progression, est maintenant supporté.
  • L'analyse syntaxique de l'élément HTML5 <track>, qui spécifie les pistes de texte pour les éléments multimédias, est désormais supporté. Cet élément devrait apparaître dans les DOM, si son comportement n'est pas encore implémenté.
  • L'élément <iframe> est désormais correctement coupé par son conteneur lorsque les coins du conteneur ont été arrondis à l'aide de la propriété border-radius.
  • Les champs <input> des éléments <form> ne sont plus supportés par la propriété XUL maxwidth, cela n'a jamais été volontaire, et est contraire à la spécification HTML. Vous devriez plutôt utiliser l'attribut size pour définir la largeur maximum de champs de saisie.
  • Les propriétés fillStyle et strokeStyle de CanvasRenderingContext2d (<canvas>) utilisées pour ignorer les déchets inclus après la définition d'une couleur valide, maintenant c'est traité comme une erreur. Par exemple, "rouge bleu" est une couleur utilisée pour être traitée comme du "rouge", alors qu'elle aurait dû être ignorée.
  • La largeur et la hauteur des éléments <canvas> peuvent être correctement mis à 0px ; avant, lorsque vous essayez de le faire, elles se fixaient à 300px.
  • le support de l'attribut HTML des données personnalisées (data-*) a été ajouté. La propriété DOM element.dataset permet d'y accéder.
  • Quand un élément <textarea> reçoit le focus, le point d'insertion de texte est désormais placé, par défaut, au début du texte plutôt qu'à la fin. Le comportement de Firefox est ainsi conforme avec les autres navigateurs.

CSS

-moz-text-decoration-color

Cette nouvelle propriété vous permet de définir la couleur utilisée par les décorations du texte, comme le soulignement, le surlignement et le texte barré.

-moz-text-decoration-line

Cette nouvelle propriété vous permet de définir le type de décorations du texte ajoutée à un élément.

-moz-text-decoration-style

Cette nouvelle propriété vous permet de définir le style de décorations du texte, comme le soulignement, le surlignement et le texte barré. Les styles incluent les simples lignes, les lignes doubles, les lignes ondulées, les lignes pointillées, etc.

-moz-hyphens

Cette nouvelle propriété vous permet de contrôler la façon dont la césure des mots lors de retours à la ligne est gérée.

-moz-orient

Une nouvelle propriété (pour l'instant spécifique à Mozilla) qui vous permet de contrôler l'orientation verticale ou horizontale de certains éléments (en particulier <progress>).

::-moz-progress-bar

Un pseudo-élément spécifique à Mozilla qui vous permet de définir le style de la zone d'un élément <progress> représentant la fraction d'une tâche.

Autres changements

  • La propriété @-moz-document a une nouvelle fonction regexp(), qui vous permet d'adapter l'URL du document à une regular expression.
  • La propriété CSS azimuth n'est plus supportée, comme nous avons enlevé le peu de code que nous avions pour le groupe média aural. Il n'a jamais été implémenté de manière significative, donc il était plus logique de supprimer cette implémentation crufty pour le moment, au lieu d'essayer de le rafistoler.
  • Avant, la pseudo-classe :hover n'était pas appliquée aux sélecteurs de classe quand on était en mode quirks, par exemple, .someclass:hover ne fonctionne pas. Cette bizarrerie a été enlevée.
  • La pseudo-classe :indeterminate peut être appliquée à l'élément <progress>. Cela n'est pas un standard, mais nous espérons que ce soit adopté par les autres navigateurs car c'est utile.
  • La valeur -moz-win-exclude-glass a été ajoutée à la propriété CSS -moz-appearance afin d'exclure des zones opaques dans les effets d'Aero Glass sur les systèmes Windows.
  • Le bug 658949 change la façon dont le symbole dièse (#) est traité dans les données URI qui peut briser les feuilles de style CSS qui contiennent un tel symbole.

DOM

Utilisation de media queries à partir de code

Vous pouvez désormais tester le résultat d'une chaîne media query en programmant la méthode window.matchMedia() et l'interface MediaQueryList.

Evènements tactile

Firefox 6 ajout le support du standard W3C sur les évènements tactile, cela facilite l'interprétation d'une ou plusieurs touches à la fois sur les surfaces tactiles comme les écrans tactiles et pavés tactiles.

Evènements server-sent

Les évènements server-sent permettent à une application Web de demander à un serveur pour envoyer des événements comme n'importe quel événement DOM localement créé.

  • navigator.securityPolicy, qui a depuis longtemps retourné une chaîne vide, a simplement été supprimé.
  • BlobBuilder est maintenant implémenté, même si pour l'instant il est préfixé (vous devez utiliser MozBlobBuilder).
  • document.height et document.width ont été supprimées. bug 585877
  • Les propriétés entities et notations de l'objet DocumentType, qui n'ont jamais été implémentées et renvoyées toujours null, ont été retirées, car elles ont également été enlevées de la spécification.
  • L'interface DOMConfiguration et la propriété document.domConfig qu'elle utilisait ont été supprimées, elles n'ont jamais été supportées et ont depuis été retirées de la spécification DOM.
  • L'évènement hashchange comprend désormais les champs newURL et oldURL.
  • La méthode abort() de l'interface FileReader retourne maintenant une exception si aucun fichier n'est en cours de lecture lorqu'elle est utilisée.
  • La méthode window.postMessage() utilise maintenant l'algorithme de clonage structuré pour vous permettre de transmettre d'une fenêtre à une autre des objets JavaScript au lieu de chaînes.
  • L'API window.history utilise désormais l'algorithme de clonage structuré pour sérialiser des objets que vous passez avec les méthodes pushState() et replaceState(), ce qui vous permet d'utiliser des objets plus complexes (y compris ceux qui contiennent des références de graphes cycliques).
  • Vous pouvez désormais détecter lorsqu'une impression a été lancée et a été achevée grâce aux nouveaux évènements beforeprint et afterprint.
  • La propriété document.strictErrorChecking a été supprimée, car elle n'a jamais été implémentée et a été retiré de la spécification DOM.
  • La propriété standard event.defaultPrevented est maintenant supportée, vous devriez utiliser à la place la méthode non-standard getPreventDefault() pour détecter si event.preventDefault() a été appelée sur l'événement.
  • La propriété window.top est désormais en lecture seule.
  • DOM views, which we never documented, have been removed. This was a bit of implementation detail that was unnecessarily complicating things, so we got rid of it. If you notice this change, you're probably doing something wrong.
  • La fonction EventTarget de la méthode addEventListener() est désormais facultative, car ça l'est dans WebKit (et aussi dans la dernière version de la spécification).
  • La propriété mozResponseArrayBuffer de l'objet XMLHttpRequest a été remplacé par les propriétés responseType et response.
  • La propriété element.dataset a été ajoutée à l'interface HTMLElement permettant d'accéder aux attributs globaux data-* global attributes d'un élément.
  • L'interface CustomEvent a été implémentée. (voir bug 427537)
  • Pour des raisons de sécurité, les URIs data: et javascript: n'héritent plus de l'environnment de sécurité de la page active lorsque l'utilisateur les saisit dans la barre d'adresse, mais un nouvel environnment de sécurité vide est créé. Par exemple, le script chargé en entrant l'URI javascript: dans la barre d'adresse n'a plus accès aux méthodes DOM et similaires. Ces URIs continueront à travailler comme avant lorsqu'elles sont utilisées par le script.

JavaScript

  • Avant, il était possible d'utiliser l'opérateur new sur plusieurs fonctions natives (eval, parseInt, Date.parse, etc) ce qui, conformément à la spécification, n'était pas autorisé. Désormais ce comportement n'est plus supporté. Cette façon d'utiliser l'opérateur new n'a jamais été officiellement supportée et était peu utilisée, donc il est peu probable que ce changement vous affecte.
  • ECMAScript Harmony WeakMaps a été ajouté en tant que prototype.

SVG

  • L'attribut pathLength est désormais supporté.
  • Les modèles SVG, les dégradés et les filtres fonctionnent désormais correctement lorsqu'ils sont chargés à partir de data: URLs.

MathML

  • L'implémentation de <mstyle> a été corrigée.

Accessibilité (ARIA)

  • Un événement de changement d'état est à présent correctement envoyé lors d'un changement de la valeur de aria-busy.
  • Un événement de changement d'attribut est à présent correctement envoyé lorsque survient aria-sort.

Réseau

WebSockets

Pour Firefox 6, WebSockets a été mis à jour à la version 07 du protocole. De plus, l'objet WebSocket a été renommé en MozWebSocket pour l'empêcher d'être utilisé de façon incorrecte pour détecter la disponibilité des WebSockets sans préfixe.

  • L'analyse de l'en-tête Content-Disposition a été fixée afin d'interpréter correctement les antislashs des caractères ASCII. Auparavant, il été remplacé par le caractère underscore ("_").
  • La valeur du champ du chemin de l'en-tête Set-Cookie est désormais correctement interprétée lors de l'utilisation de guillements, auparavant, ils étaient considérés comme faisant partie de la chaîne du chemin d'accès à la place d'être des délimiteurs. Ce changement peut affecter la compatibilité avec certains sites web, les auteurs doivent vérifier leur code.
  • L'en-tête de la requête Upgrade est désormais supporté, vous pouvez demander la mise à niveau d'un canal vers un autre protocole HTTP en appelant nsIHttpChannelInternal.HTTPUpgrade().

Autres changements

  • Le support des microrésumés a été enlevé, ils n'ont jamais été très utilisés, n'étaient pas très détectable et continuer leur support été d'apporter des améliorations à Places (favoris et historique) à l'architecture difficile.
  • WebGL supporte maintenant l'extension OES_texture_float.
  • Le nouvel outil Ardoise offre un endroit pratique pour expérimenter du code JavaScript.
  • La méthode console.trace() a été ajouté à ConsoleAPI (voir bug 585956).

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

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

Note : Firefox 6 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 méthode openSafeFileOutputStream() ouvre maintenant les fichiers avec l'indicateur de comportement DEFER_OPEN au lieu d'essayer de les ouvrir immédiatement.

XPCOMUtils.jsm

  • La nouvelle méthode importRelative() vous permet de charger un module de code JavaScript depuis un chemin relatif au chemin d'un autre module de code JavaScript. Cela rend plus facile la construction de modules qui dépendent les uns des autres.

XPCOM

Utilisation du DOM depuis le chrome

Utilisation de l'API DOM File dans du code chrome

Bien que vous avez toujours pu utiliser l'API DOM File à partir du code chrome, le constructeur File supporte désormais la spécification d'un chemin d'accès local lorsqu'il est utilisé depuis le chrome. De plus, vous pouvez également spécifier le fichier pour accéder à l'aide de l'API DOM File en utilisant un objet nsIFile.

Changements dans les interfaces

  • nsINavHistoryQueryOptions supporte désormais le tri par orde de frecency à l'aide des nouvelles constantes SORT_BY_FRECENCY_ASCENDING et SORT_BY_FRECENCY_DESCENDING.
  • nsIFilePicker a un nouvel attribut nsIFilePicker.addToRecentDocs, qui vous permet d'indiquer que le fichier sélectionné doit être ajoutée à la liste "documents récents" de l'utilisateur si il y en a une. Cet attribut n'a aucun effet en mode navigation privée.
  • Les méthodes de nsINavBookmarkObserver avec les paramètres ID d'un élément exigent désormais un GUID.
  • nsIPrefBranch.clearUserPref() ne génère plus d'exception si la préférence spécifié n'existe pas ou n'a pas de valeur définie par l'utilisateur. Désormais, il ne fait rien.
  • L'interface nsIMemoryReporter prend désormais en charge l'indication du type de mémoire qui est décrite (mappée, heap, ou autre).
  • L'attribut stateData de nsISHEntry renvoi désormais à nsIStructuredCloneContainer.
  • nsIURI a un nouvel attribut nsIURI.ref, qui renvoie la partie de référence (la partie après le "#") de l'URI. Il y a également de nouvelles méthodes nsIURI.cloneIgnoringRef() qui clone nsIURI sans l'élément ref et nsIURI.equalsExceptRef() qui se compare à un autre nsIURI en ignorant l'élément ref.

Nouvelles interfaces

mozIAsyncFavicons

Un nouveau service qui vous permet d'accéder au service favicon de façon asynchrone.

nsIEventSource

Détails à venir.

nsIGSettingsCollection

Détails à venir.

nsIGSettingsService

Détails à venir.

nsIHttpUpgradeListener

L'interface de rappel pour le traitement des demandes de mise à niveau HTTP via la méthode nsIHttpChannelInternal.HTTPUpgrade().

nsIStructuredCloneContainer

Un conteneur pour les objets qui ont été sérialisé à l'aide de l'algorithme de clonage structuré.

nsITelemetry

Implémentation du support de la télémétrie permettant d'enregistrer des données de télémétrie pour être utilisé pour présenter des histogrammes à des fins de suivi des performances. Voir bug 649502 et bug 585196.

nsITimedChannel

Voir bug 576006.

nsIWebSocketListener

Voir bug 640003.

nsIWebSocketProtocol

Voir bug 640003.

Interfaces supprimées

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

Autres changements

Utilisation des préférences à partir du code d'application

Une nouvelle API statique est disponible pour accéder facilement aux préférences, ce n'est disponible que pour le code d'application et ne peut pas être utilisé par les modules complémentaires.

Voir aussi