From MozillaWiki
Jump to: navigation, search

PFS stands for the Plugin Finder Service and is used to serve up RDF files that describe plugins for a given mime-type and client.

A new feature in Firefox 3 is Plugin Blocklisting. If you're looking for the next generation of PFS, see the PFS2 page.

URL Format

The client requests the RDF at pfs.datasource.url:

An example of the Flash RDF:{ec8030f7-c20a-464f-9b0e-13a3a9e97384}&appVersion=2007032403&clientOS=Windowsxp&chromeLocale=en-US

RDF Format

The RDF format looks like this:

<?xml version="1.0"?>
<RDF:RDF xmlns:RDF="" xmlns:pfs="">

<RDF:Description about="urn:mozilla:plugin-results:application/x-shockwave-flash">
  <RDF:li resource="urn:mozilla:plugin:{4cfaef8a-a6c9-41a0-8e6f-967eb8f49143}"/>

<RDF:Description about="urn:mozilla:plugin:{4cfaef8a-a6c9-41a0-8e6f-967eb8f49143}">
  <RDF:li resource="urn:mozilla:plugin:{4cfaef8a-a6c9-41a0-8e6f-967eb8f49143}:"/>

<RDF:Description about="urn:mozilla:plugin:{4cfaef8a-a6c9-41a0-8e6f-967eb8f49143}:">
 <pfs:name>Adobe Flash Player</pfs:name>


Script Variables

In the service itself, there are variables that need to be defined in order to add a new plugin. These are:

$name = ' ';                    // Name of the plugin, used in UI.
$guid = '-1';                  // GUID to uniquely identify this plugin.
$version = ' ';                 // Version string.
$iconUrl = ' ';                 // URL of the icon for this plugin, used in UI.
$installerLocation = ' ';       // Location of the external binary installer, should be SSL or rely on installerHash.
$installerHash = ' ';           // Installer hash value, used to verify installer.
$XPILocation = ' ';             // Location of the XPI the browser should install.
$installerShowsUI = 'true';    // Does the installer show a UI?  If no, chrome is used.
$manualInstallationURL = ' ';   // URL to go to if auto-install fails.
$licenseURL = ' ';              // License information, if needed.
$needsRestart = 'false';       // Does it require a browser restart?

New Plugin Checklist

If you are thinking of listing a new add-on on PFS, you'll need the above info. Here is an easier to copy/paste list:

  • Name of the plugin (Windows Media Player 11/Vista)?
  • GUID
  • Version string
  • URL of the icon to be used for the plugin installer UI
  • Location of the XPI that the browser should install.
  • Does the installer show its own UI?
  • URL for manual installation if the auto-install fails.
  • License URL
  • Does it require a browser restart post-installation?
  • Mime types it needs to be associated with.
  • Operating systems (in UA string) that should be given WMP 11.
  • Versions of Firefox that are compatible (if not all)?

Testing PFS

if you want to test PFS, here are the steps to do so:

  1. update pfs.datasource.url to point to your instance of PFS. The default is:
Change your server to: the rest of the junk from the default)
If we're testing on preview: the rest of the junk from the default)
  1. Open a page with an embedded object with a mime-type that corresponds to the plugin you want to test.
  2. Note: you can always use LiveHTTPHeaders or TamperData to see what URL your client is actually hitting. Going to the URL directly will let you view the PFS RDF for errors.