Using content preferences
From MDC
This article covers features introduced in Firefox 3
Firefox 3 introduces the concept of content preferences. This permits code running within chrome (in other words: extensions and the browser itself, not web sites) to locally save preferences on a per-site basis. This makes it possible to write an extension that lets the user customize the appearance of specific web sites (setting the font size larger on sites that use obnoxiously small fonts, for instance).
The content preferences service, implemented by nsIContentPrefService, offers functions for setting and retrieving preferences for specific sites or in the global preference space; global preferences are used whenever a site-specific preference isn't available.
Currently, the only preferences saved on a site-by-site basis are text zoom and page zoom.
[edit] Example: Setting and retrieving preferences
This example demonstrates how to save a preference and then retrieve its value.
var ioSvc = Components.classes["@mozilla.org/network/io-service;1"]
.getService(Components.interfaces.nsIIOService);
var prefService = Components.classes["@mozilla.org/content-pref/service;1"]
.getService(Components.interfaces.nsIContentPrefService);
// Create a URI object referencing the site to save a preference for
var uri = ioSvc.newURI("http://developer.mozilla.org/", null, null);
// Set the value of the "devmo.somesetting" preference to "foo".
prefService.setPref(uri, "devmo.somesetting", "foo");
...
// Retrieve the value of the "devmo.somesetting" preference.
var value = prefService.getPref(uri, "devmo.somesetting");