Firefox 3.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 3.6 (nom de code Namoroka) est sorti le 21 janvier 2010 et est basé sur Gecko 1.9.2. Cette page fournit des liens vers des articles qui décrivent les nouvelles fonctionnalités de Firefox 3.6.

Pour les développeurs de sites et d'applications Web

CSS

Utilisation de dégradés

Firefox 3.6 ajoute le support de -moz-linear-gradient et -moz-radial-gradient pour la propriété background.

Fonds multiples

La propriété background (ainsi que background-attachmentbackground-color, background-image, background-position et background-repeat) peuvent gérer des fonds multiples. Ceux-ci seront affichés par couches, les uns au dessus des autres.

Fonctionnalités de médias spécifiques à Mozilla

Des fonctionnalités de médias ont été ajoutées pour des mesures spécifiques à Mozilla, afin de pouvoir utiliser des media queries pour vérifier plus aisément la disponibilité de fonctionnalités comme un écran tactile.

Redimensionnement d'images de fond

La propriété background-size du brouillon CSS 3 Backgrounds and Borders est gérée sous le nom de -moz-background-size.

Support des polices WOFF

@font-face supporte désormais le format de polices Web téléchargeables WOFF

Evènements pointeurs

La propriété pointer-events si le contenu d'un élément peut être ou non la cible d'évènements pointeur avec la souris.

Autres changements CSS

  • L'unité de longueur rem de CSS3 Values and Units est maintenant supportée. Voir bug 472195.
  • image-rendering est gérée pour les images, images de fond, vidéos et canvas. Voir bug 423756.
  • text-align:end est maintenant supportée. Voir bug 299837.
  • Les changements DOM sur des éléments utilisant les types de display table fonctionnent beaucoup mieux.
  • Ajout de :-moz-locale-dir(ltr) et :-moz-locale-dir(rtl) pour faciliter la personnalisation de mise en page selon l'orientation de l'interface dépendant de la locale (gauche à droite ou droite à gauche). Voir bug 478416.
  • Ajout de la pseudo-classe :indeterminate correspondant aux éléments <input> checkbox dont l'attribut indeterminate est true.
  • Les plugins fenêtrés ne sont plus affichés par la propriété CSS tranforms, car ils ne peuvent pas être correctement tranformés par le compositeur.

HTML

Utilisation de fichiers à partir d'applications Web

Le support de la nouvelle API de fichier HTML5 a été ajouté à Gecko, ce qui permet à des applications Web d'accéder à des fichiers locaux sélectionnés par l'utilisateur.

Support des affiches pour les vidéos HTML5

L'attribut poster est pris en charge pour l'élément <video>, ce qui permet au contenu de choisir une image à afficher tant que la vidéo n'a pas commencée.

Support de la propriété indeterminate pour les cases à cocher et boutons radio

Les éléments HTML <input> des types checkbox et radio supportent désormais la propriété indeterminate qui permet d'avoir un troisième état « indéterminé ».

Contrôle du lissage d'images dans canvas

La nouvelle propriété mozImageSmoothingEnabled peut être utilisée pour activer et désactiver le lissage lors d'un redimensionnement dans les éléments <canvas>.

Exécution d'un script asynchrone

En définissant l'attribut async sur un élément <script>, le script ne bloquera pas le chargement ou l'affichage du reste de la page. En revanche, le script s'exécutera dès qu'il sera téléchargé.

JavaScript

Gecko 1.9.2 introduit JavaScript 1.8.2, qui ajoute un certain nombre de fonctionnalités de langage de la norme ECMAScript 5 :

  • Date.parse() peut analyser des dates ISO 8601 au format YYYY-MM-DD (année-mois-jour).
  • La propriété prototype d'instances de fonctions n'est plus énumérable.

DOM

Terminaison des web workers par eux-mêmes

Les web workers prennent désormais en charge la méthode nsIWorkerScope.close(), qui leur permet de se terminer d'eux-mêmes.

Glisser-déposer de fichiers

L'objet DataTransfer fournit à présent aux observateurs de glisser-déposer une liste des fichiers glissés.

Vérification pour voir si un élément correspond à un sélecteur CSS

La nouvelle méthode element.mozMatchesSelector permet de déterminer si un élément correspond bien à un sélecteur CSS. Voir bug 518003.

Dispositf de détection de l'orientation

Le contenu peut à présent détecter l'orientation de l'appareil s'il dispose d'un accéléromètre, à l'aide de l'évènement MozOrientation. Firefox 3.6 gère notamment l'accéléromètre des ordinateurs portables Mac.

Détection des changements de largeur et hauteur d'un document

Le nouvel évènement MozScrollAreaChanged est déclenché lorsqu'une des propriétés scrollWidth ou scrollHeight d'un document change.

  • La méthode getBoxObjectFor() a été supprimée, car elle n'était pas standard et exposait d'autres fonctionnalités non standard. Voir bug 340571. La bibliothèque MooTools qui utilisait cet appel pour la détection de Gecko est affectée ; cela a été corrigé dans la dernière version de MooTools, assurez-vous donc d'être à jour.
  • Les nouvelles propriétés mozInnerScreenX et mozInnerScreenY sur les objets DOM window on été ajoutés ; ils renvoient les coordonnées à l'écran du coin supérieur gauche de la zone de visualisation de la fenêtre.
  • La nouvelle propriété mozScreenPixelsPerCSSPixel de nsIDOMWindowUtils uniquement accessible depuis le chrome, fournit un facteur de conversion entre les pixels CSS et les pixels à l'écran ; cette valeur peut varier selon le niveau de zoom du contenu.
  • Lorsque l'identifiant de fragment de document de l'URL de la page change (la partie après le caractère « # » (dièse)), un nouvel évènement hashchange est envoyé à la page. Consultez window.onhashchange pour plus d'informations. bug 385434
  • L'attribut document.readyState est désormais supporté. bug 347174
  • Gestion de l'attribut HTML5 element.classList pour permettre une gestion plus aisée de l'attribut class. bug 501257
  • localName et namespaceURI dans les documents HTML se comportent à présent comme dans les documents XHTML : localName est renvoyé en minuscules et la propriété namespaceURI pour les éléments HTML est "http://www.w3.org/1999/xhtml".
  • element.getElementsByTagNameNS son argument n'est plus en minuscules, alors en lettres majuscules ASCII dans l'argument établit des chaînes contre des éléments HTML échouent. Cela est vrai aussi pour document.getElementsByTagNameNS.
  • Ajout de la gestion des adresses dans la géolocalisation via l'interface nsIDOMGeoPositionAddress et d'un nouveau champ dans nsIDOMGeoPosition.
  • La fonction window.getComputedStyle renvoie à présent les guillemets autour des valeurs url().

XPath

Gestion de la méthode XPath choose()

La méthode choose() est à présent gérée par notre implémentation de XPath.

Pour les développeurs XUL et les développeurs d'extensions

Si vous êtes un développeur d'extensions, vous devriez commencer par lire Updating extensions for Firefox 3.6, qui offre une vue d'ensemble sur les changements qui pourraient affecter vos extensions. Les développeurs de Plug-in devraient lire Updating plug-ins for Firefox 3.6.

Nouvelles fonctionnalités

Détection de l'orientation de l'appareil

Le contenu peut maintenant détecter l'orientation de l'appareil si il possède un accéléromètre, en utilisant l'évènement MozOrientation. Firefox 3.6 supporte l'accéléromètre des ordinateurs portables Mac.

Surveillance de l'activité HTTP

Vous pouvez maintenant surveiller en temps réel les données HTTP demandées et reçues.

Intégration à la Barre des tâches de Windows

Il est maintenant possible de personnaliser l'apparence des fenêtres dans la barre des tâches sous Windows 7 ou plus récent. C'est désactivé par défaut dans Firefox 3.6.

Places

Storage

Tri des données locales avec l'API Storage

Gecko 1.9.2 ajoute plusieurs nouvelles méthodes pour offrir une collecte (tri) optimisée des résulats en utilisant les techniques de localisation.

Énumération des propriétés d'une requête

Vous pouvez maintenant utiliser for...in pour énumérer toutes les propriétés d'une déclaration.

mozIStorageStatement's getParameterIndex a changé de comportement entre Firefox 3.5 et 3.6.

Voir bug 528166 pour plus de détails.

Liaison asynchrone de plusieurs ensembles de paramètres pour exécution d'une requête.

Voir bug 490085 pour plus de détails.

Préférences

Thèmes

Voir Updating themes for Firefox 3.6 pour la liste des changements liés aux thèmes.

Thèmes légers

Firefox 3.6 supporte les thèmes légers ; ce sont des thèmes faciles à créer et qui sont simplement appliqué sur le fond de la fenêtre du navigateur, en haut (barre d'adresses et boutons) et en bas (barre d'état). Il s'agit d'une intégration de l'architecture de thèmes Personas dans Firefox.

Divers

  • Firefox n'a plus la charge des modules tiers installé dans son répertoire des modules internes. Cela contribue à assurer la stabilité en empêchant des composants tiers buggés d'être exécuté. Les développeurs qui installent des composants de cette façon doivent refaire leurs modules sous forme de paquets XPI afin qu'ils puissent être installés normalement.
  • contents.rdf n'est plus pris en charge pour l'enregistrement chrome dans les extensions. Vous devez maintenant utiliser le fichier chrome.manifest. Voir bug 492008.
  • La barre de menu peut être cachée automatiquement. Voir bug 477256.
  • Ajout du support de l'attribut container-live-role aux objets. Voir bug 391829.
  • Suppression de la liaison tabs-closebutton. Voir bug 500971.
  • Ajout du support de nsISound pour jouer des sons en fonction des évènements qui ont eu lieu. Voir bug 502799.
  • La syntaxe pour les méthodes de nsITreeView : nsITreeView.canDrop() et nsITreeView.drop(), a changé pour supporter la nouvelle API glisser & déposer introduite dans Gecko 1.9. Voir bug 455590.
  • Ajout du support pour aligner le curseur de la souris sur le bouton par défaut de la boîte de dialogue ou l'assistant de Windows, voir bug 76053. Cela est traitée automatiquement par la boîte de dialogue et l'assistant. Mais si une application XUL crée une fenêtre en utilisant l'élément window et qu'il a un bouton par défaut, il doit appeler nsIDOMChromeWindow.notifyDefaultButtonLoaded() dans le gestionnaire d'événements onload de la fenêtre.
  • Pour l'interface nsILocalFileMac, deux méthodes ont étés retirées : setFileTypeAndCreatorFromMIMEType() and setFileTypeAndCreatorFromExtension().
  • Le nouveau module de code NetUtils.jsm apporte une méthode facile à utiliser pour copier les données de manière asynchrone à partir d'un flux d'entrée vers un flux de sortie.
  • Le nouveau module de code openLocationLastURL.jsm, facilite la lecture et la modification de la valeur de l'URL gardée en mémoire de la boîte de dialogue "Ouvrir le fichier", tout en prenant bien en compte le mode de navigation privée.
  • Dans Windows, l'interface nsIScreen reporte maintenant 24 bits par pixel pour la profondeur des couleurs lorsque le pilote graphique demande 32 bits, plus précisement 24 représente le nombre réel de pixels de couleurs en utilisation.
  • Les barres de menu peuvent maintenant être cachées sous Windows, en utilisant le nouvel attribut autohide sur l'élément XUL toolbar.
  • Les méthodes loadOneTab et addTab acceptent maintenant le nouveau paramètre relatedToCurrent et, en outre, permet à des paramètres d'être définit par un nom, puisque presque tous les paramètres sont optionnels.
  • La propriété "hidden" n'est plus supportée dans les manisfestes d'installation ; il n'est plus possible d'empêcher l'utilisateur de voir des modules complémentaires dans la fenêtre du gestionnaire de module.
  • Le composant @mozilla.org/webshell;1 n'existe plus ; vous devez utilisez @mozilla.org/docshell;1 à la place.
  • Vous pouvez désormais enregistrer avec la catégorie update-timer pour programmer la synchronisation des événements sans avoir à instancier l'objet que le minuteur va éventuellement remettre, il sera plutôt instancié lorsque c'est nécessaire. Voir nsIUpdateTimerManager.registerTimer() pour plus de détails.
  • La fonction NPN_GetValue ne donne plus accès à travers XPCOM aux valeurs de variables NPNVserviceManager, NPNVDOMelement, et NPNVDOMWindow. Cela fait partie des travaux pour que les plugins s'exécutent dans des processus séparés dans une future version de Gecko.
  • Les plugins ne sont plus scriptables à travers l'interface XPCOM (IDL), NPRuntime est l'API à utiliser pour coder des plugins et NPP_GetValue() n'est plus appelé avec la valeur NPPVpluginScriptableInstance ou NPPVpluginScriptableIID. Cela fait partie des travaux pour que les plugins s'exécutent dans des processus séparés dans une future version de Gecko.

Pours les développeurs de Firefox/Gecko

Certains changements sont vraiment intéressant si vous travaillez sur le fonctionnement interne de Firefox.

Interfaces fusionnées

Les interfaces suivantes ont été fusionnées :

  • nsIPluginTagInfo2 a été fusionnée avec nsIPluginTagInfo.
  • nsIPluginInstanceInternal, nsIPPluginInstancePeer, nsIPluginInstancePeer1, nsIPluginInstancePeer2 et nsIPluginInstancePeer3 ont toutes été fusionnées avec nsIPluginInstance.
  • nsIWindowlessPlugInstPeer a été fusionnée avec nsIPluginInstance.
  • nsIPluginManager et nsIPluginManager2 ont été fusionnées avec nsIPluginHost

Interfaces supprimées

Les interfaces suivantes ont été entièrement supprimées car elles étaient inutilisées, non implémentées ou obsolètes :

  • nsIFullScreen
  • nsIDOMSVGListener
  • nsIDOMSVGZoomListener
  • nsIInternetConfigService
  • nsIDKey
  • nsIEventHandler
  • nsIJRILiveConnectPIPeer
  • nsIJRILiveConnectPlugin
  • nsIScriptablePlugin
  • nsIClassicPluginFactory
  • nsIFileUtilities

Interfaces déplacées

Les interfaces suivantes ont été déplacées de leurs précédents fichiers IDL vers leurs nouveaux :

  • nsIDOMNSCSS2Properties est maintenant située dans son propre fichier IDL (dom/interfaces/css/nsIDOMCSS2Properties.idl).
  • nsIUpdateTimerManager est maintenant située dans son propre fichier IDL.

Un grand nombre d'interfaces ont été déplacées. Voir Interfaces moved in Firefox 3.6 pour la liste complète.

Autres changements dans les interfaces

Les modifications suivantes ont été faites :

  • L'interface nsIPlugin hérite maintenant de nsISupports à la place de nsIFactory.
  • L'interface nsIPluginHost hérite maintenant de nsISupports à la place de nsIFactory.
  • L'interface nsIFrame hérite maintenant de nsQueryFrame à la place de nsISupports.
  • La méthode getPaletteInfo() de nsIDeviceContext a été supprimée, car elle n'a jamais été appliquée.
  • La méthode reportPendingException() de nsIScriptContext a été supprimée, car elle n'été plus utilisée.

Changements dans l'accessibilitée du code

  • L'évènement d'accessibilité EVENT_REORDER est maintenant envoyé quand les enfants de frames et d'iframes changent, ainsi que lors de la modification du document principal des enfants. Voir bug 420845.
  • Désormais toute sélection en cours est correctement supprimée avant de sélectionner une ligne spécifique.

Voir aussi