nsISupports
Last changed in Gecko 1.9 (Firefox 3)You can ask the external protocol service if it has an external handler for a given protocol scheme. And you can ask it to load the url using the default handler.
boolean externalProtocolHandlerExists(in string aProtocolScheme); |
AString getApplicationDescription(in AUTF8String aScheme); |
nsIHandlerInfo getProtocolHandlerInfo(in ACString aProtocolScheme); |
nsIHandlerInfo getProtocolHandlerInfoFromOS(in ACString aProtocolScheme, out boolean aFound); |
boolean isExposedProtocol(in string aProtocolScheme); |
void loadURI(in nsIURI aURI, [optional] in nsIInterfaceRequestor aWindowContext); |
void loadUrl(in nsIURI aURL); |
void setProtocolHandlerDefaults(in nsIHandlerInfo aHandlerInfo, in boolean aOSHandlerExists); |
Check whether a handler for a specific protocol exists. Specifically, this looks to see whether there are any known possible application handlers in either the nsIHandlerService
datastore or registered with the OS.
boolean externalProtocolHandlerExists( in string aProtocolScheme );
aProtocolScheme
true
if we have a handler and false
otherwise.
Gets a human-readable description for the application responsible for handling a specific protocol.
AString getApplicationDescription( in AUTF8String aScheme );
aScheme
This code makes little sense and needs to be cleaned up. -Nickolay <pre> // first construct an nsIURI object using the ioservice var ioservice = Components.classes["@mozilla.org/network/io-service;1"].getService(Components.interfaces.nsIIOService); var uriToOpen = ioservice.newURI("http://www.example.com/", null, null); var extps = Components.classes["@mozilla.org/uriloader/external-protocol-service;1"] .getService(Components.interfaces.nsIExternalProtocolService); if (extps.externalProtocolHandlerExists("tlcxp")) { // Handler for http:// URLs exists } else { // suppress external-load warning for standard browser schemes pref("network.protocol-handler.external.tlcxp", True); pref("network.protocol-handler.app.tlcxp, "LZX"); } </pre>
Retrieve the handler for the given protocol. If neither the application nor the OS knows about a handler for the protocol, the object this method returns will represent a default handler for unknown content.
nsIHandlerInfo getProtocolHandlerInfo( in ACString aProtocolScheme );
aProtocolScheme
The handler, if any; otherwise a default handler.
Given a scheme, looks up the protocol info from the OS. This should be overridden by each OS's implementation.
nsIHandlerInfo getProtocolHandlerInfoFromOS( in ACString aProtocolScheme, out boolean aFound );
aProtocolScheme
aFound
An nsIHanderInfo
for the protocol.
Check whether a handler for a specific protocol is "exposed" as a visible feature of the current application. An exposed protocol handler is one that can be used in all contexts. A non-exposed protocol handler is one that can only be used internally by the application. For example, a non-exposed protocol would not be loaded by the application in response to a link click or a X-remote openURL command. Instead, it would be deferred to the system's external protocol handler.
boolean isExposedProtocol( in string aProtocolScheme );
aProtocolScheme
true
if the protocol is exposed, false
otherwise.
Used to load a URI via an external application. Might prompt the user for permission to load the external application.
void loadURI( in nsIURI aURI, [optional] in nsIInterfaceRequestor aWindowContext );
aURI
aWindowContext
nsIURILoader.openURI()
in the case of a web handler, and aWindowContext is null
or not present, web handlers will fail.Used to load a url via an external protocol handler (if one exists).
void loadUrl( in nsIURI aURL );
aURL
Set some sane defaults for a protocol handler object.
void setProtocolHandlerDefaults( in nsIHandlerInfo aHandlerInfo, in boolean aOSHandlerExists );
aHandlerInfo
nsIHandlerInfo
object, as returned by getProtocolHandlerInfoFromOS()
.aOSHandlerExists
getProtocolHandlerInfoFromOS()
.