OSCON: Supercharging Firefox with Extensions

|
Extensions are code that run in the browser just as if it was a part of Firefox. This talk is geared around "the trunk" (the upcoming Firefox 1.5). Popular examples:
  • AdBlock
  • Greasemonkey
  • BugMeNot
  • FoxyTunes
  • Many toolbars: Google, Yahoo, A9, Netcraft
Structure of an Extension
  • Install Manifest -- structure of extension, and where it should go in the Firefox system. Aids in deinstallation. No protection -- extensions can be written that don't cleanly uninstall.
  • "Chrome" (User Interface components)
  • Components (non-UI) - integrate with services, hook to other parts of system, etc.
  • Defaults (Preferences)
Packaging
  • "Zippy" files: zip file with a .xpi extension.
  • Can package traditional "heavyweight" plugins (flash, pdf reader, etc.) as Zippy files
  • Don't need GUID's anymore for directory name for extension.
  • install.rdf file needs to be in root of .xpi.
UI Development with XUL
  • Long topic; good resources for XUL development at developer.mozilla.org.
  • Supplies UI controls, drag-n-drop, menus, toolbars, etc.
  • Bound to actions through JavaScript
  • You can do overlays, over Mozilla-supplied XUL, to plugin your own UI elements for the extension. XUL overlay can add, remove, or change elements in existing XUL.
  • XUL is a document, which can be manipulated just like you would a DOM in DHTML.
  • Site: xulplanet.com
Extension bits:
  • Chrome Manifest -- where to put overlay and where to find it.
  • Install Manifest
    • RDF/XML file
    • Identifies extension
    • Compatibility extension (allows to install in Thunderbird and Firefox, for example)
    • Take existing file and modify it -- to hard to do from scratch. Or grab an RDF generator.
    • Update information -- for update checking
    • Save as install.rdf
New testing bits:
  • Can point firefox at a directory, so you don't need to repackage.
  • Still need to restart browser to have it pick up new extension. But it seems like the browser will pick up code changes dynamically?
  • If you turn off XUL cache, may not need to restart Firefox.
Creating New UI:
  • Dialogs are in separate .xul files
  • Functionality in .js files
  • Use DOM methods to manipulate UI elements within XUL
  • Use .css files to add images, set colors, change style, etc.
XPCOM Components
  • Firefox supports XPCOM components in extensions
  • This allows implementing code in JavaScript, C++ (Gecko SDK), etc. -- interacts with more of "the guts" of Firefox.
  • Automatically registered by putting these files in components/ directory.

About this Entry

This page contains a single entry by Andy Reitz published on August 3, 2005 5:09 PM.

OSCON: Introduction to XSLT was the previous entry in this blog.

OSCON Speaker and Conference evaluations is the next entry in this blog.

Find recent content on the main index or look in the archives to find all content.

Powered by Movable Type 4.01