Protocol handlers are configured with set_protocol_handler. You can configure a protocol to be handled internally, externally, or to prompt for an external handler. The call form looks like this:

set_protocol_handler(protocol, handler);

1. protocol

The protocol being configured. In other words, the scheme portion of the url, with no colon.

2. handler

Handle the protocol internally. That is, have Gecko try to handle it.
Prompt for a handler when attempting to open a link of this protocol.
an nsIFile

Use the executable indicated by the nsIFile as a handler. You can get an nsIFile from make_file or find_file_in_path.

a string
The string is a template url for a web service for handling this protocol. The sequence "%s" in the string will be replaced by the url-encoded url of the resource.