Fuel

Mozilla Add-ons Workshop,
20 septembre 2008

Laurent Jouanneau

À propos de moi

Sommaire

Vous avez dit Fuel ?

Fuel, et le développement devient aisé

Exemple

Récupérer une préférence avec XPCOM :

var prefs =
  Components
    .classes["@mozilla.org/preferences-service;1"]
    .getService(Components.interfaces.nsIPrefService)
    .getBranch("browser.zoom.");
var isZoom = prefs.getBoolPref("full");
            

Exemple...

Avec FUEL :

  var isZoom = Application
              .prefs
              .getValue("browser.zoom.full", true);
            

Objets FUEL

Accéder à la console

Application.console.log("message")
Affiche un message
Application.console.open()
Ouvre la fenêtre de console

Accéder aux préférences

Application.prefs...
.has("foo.bar")
La préférence existe-t-elle ?
.getValue("foo.bar", "default")
Récupère une valeur
.setValue("foo.bar","valeur")
Change la valeur

Accéder aux préférences #2

Application.prefs...
.get("foo.bar")
Renvoi un objet Preference :
name, type, value, locked, modified, branch, events
Application.extensions
.get("extensionid").prefs.get("foo.bar")
Récupère la préference "extensions.extensionid.foo.bar"

Propriétés d'une extension

Récupèrer un objet Extension :

var ext = Application.extensions.get("extension_id")

SessionStorage

Permet de stocker des données durant le temps de vie de l'application

Application.storage...

= stockage centralisé pour toutes les fenêtres

Gérer des évènements

function onUninstall(event) {
  // code...
}
var ext = Application.extensions.get("extension_id");

ext.events.addEventListener("uninstall", onUninstall);
ext.events.removeEventListener("uninstall", onUninstall);
        

Les onglets

var win = Application.activeWindow
Récupérer la fenêtre courante
win.tabs
liste des onglets
win.activeTab
L'onglet courant
win.open(nsIURIobject)
Ouvre un nouvel onglet
win.events
events: TabOpen, TabClose, TabMove, TabSelect

Les onglets: exemple

function onTabOpen(event) {
  // faire quelque chose
}

var activeWin = Application.activeWindow;
activeWin.events.addListener("TabOpen", onTabOpen);

var browserTab = activeWin.open(url("http://mozilla.org"));

Les onglets: exemple #2

// helper  (pourquoi pas plus simple ?)
function url(spec) {
  var ios = Components
    .classes["@mozilla.org/network/io-service;1"]
    .getService(Components.interfaces.nsIIOService);
  return ios.newURI(spec, null, null);
}

Manipuler un onglet

tab.document
la page html affichée
tab.focus()
tab.close()
tab.moveBefore(otherTab)
tab.moveToEnd()

+/- redondance avec la balise tabbrowser

Manipuler les bookmarks

Manipuler les bookmarks #2

Objet BookmarkFolder
addBookmark(titre, URI), addSeparator(),
addFolder(titre), remove()
id, title, description, type
annotations
parent, children
events
event possible: "add", "addchild", "remove", "removechild", "change", "move"

Manipuler les bookmarks #3

Objet Bookmark
remove()
id, title, uri, description, keywords, type
annotations
parent
events
events possible : "remove", "change", "visit", "move"

Manipuler les bookmarks #4

var bookmark =
  Application.bookmarks.toolbar
    .addBookmark("Mozilla", url("http://www.mozilla.com"));
bookmark.keyword = "webdev";

alert(bookmark.title);
alert(bookmark.uri.spec);

bookmark.events.addListener("change",
      function(event) { alert(event.data); });
bookmark.title = "MoCo"; // should alert "title"

Le futur de Fuel

Fin

Vos questions...