bug 391150: expose an API for getting an nsIHandlerInfo object for a protocol; r=biesi, sr=dmose

This commit is contained in:
myk@mozilla.org 2007-08-13 12:00:34 -07:00
parent cdceeab522
commit c02e2669a6
3 changed files with 25 additions and 11 deletions

View File

@ -25,6 +25,7 @@
* Bill Law <law@netscape.com>
* Christian Biesinger <cbiesinger@web.de>
* Dan Mosedale <dmose@mozilla.org>
* Myk Melez <myk@mozilla.org>
*
* Alternatively, the contents of this file may be used under the terms of
* either of the GNU General Public License Version 2 or later (the "GPL"),
@ -1326,12 +1327,12 @@ nsresult nsExternalHelperAppService::ExpungeTemporaryFiles()
return NS_OK;
}
nsresult
NS_IMETHODIMP
nsExternalHelperAppService::GetProtocolHandlerInfo(const nsACString &aScheme,
nsIHandlerInfo **aHandlerInfo)
{
// XXX before we expose this to the UI, we need sort out our strategy re
// the "warning" and "exposed" prefs
// XXX Now that we've exposed this to the UI (bug 391150), is there anything
// we need to do to make it compatible with the "warning" and "exposed" prefs?
// XXX enterprise customers should be able to turn this support off with a
// single master pref (maybe use one of the "exposed" prefs here?)

View File

@ -23,6 +23,7 @@
* Scott MacGregor <mscott@netscape.com>
* Christian Biesinger <cbiesinger@web.de>
* Dan Mosedale <dmose@mozilla.org>
* Myk Melez <myk@mozilla.org>
*
* Alternatively, the contents of this file may be used under the terms of
* either of the GNU General Public License Version 2 or later (the "GPL"),
@ -230,13 +231,6 @@ public:
*/
NS_HIDDEN_(PRBool) MIMETypeIsInDataSource(const char * aContentType);
/**
* Return the URI template for any configured web handler. This will
* probably be replaced by something on nsIWebContentConverterService soon.
*/
NS_HIDDEN_(nsresult) GetProtocolHandlerInfo(const nsACString &aScheme,
nsIHandlerInfo **aHandlerInfo);
virtual NS_HIDDEN_(nsresult) OSProtocolHandlerExists(const char *aScheme,
PRBool *aExists) = 0;

View File

@ -22,6 +22,7 @@
*
* Contributor(s):
* Scott MacGregor <mscott@netscape.com>
* Myk Melez <myk@mozilla.org>
*
* Alternatively, the contents of this file may be used under the terms of
* either of the GNU General Public License Version 2 or later (the "GPL"),
@ -42,6 +43,7 @@
interface nsIURI;
interface nsIFile;
interface nsIInterfaceRequestor;
interface nsIHandlerInfo;
/**
* The external protocol service is used for finding and launching
@ -52,13 +54,14 @@ interface nsIInterfaceRequestor;
* handler for a given protocol scheme. And you can ask it to load
* the url using the default handler.
*/
[scriptable, uuid(01e9ce6e-1c81-4f1a-b128-2f2526ec40e3)]
[scriptable, uuid(7968ffa9-bb51-4b2d-aad2-8ea46c15d27f)]
interface nsIExternalProtocolService : nsISupports
{
/**
* Check whether a handler for a specific protocol exists.
* @param aProtocolScheme The scheme from a url: http, ftp, mailto, etc.
* @return true if we have a handler and false otherwise.
* XXX shouldn't aProtocolScheme be an ACString like nsIURI::scheme?
*/
boolean externalProtocolHandlerExists(in string aProtocolScheme);
@ -71,9 +74,25 @@ interface nsIExternalProtocolService : nsISupports
* 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.
* XXX shouldn't aProtocolScheme be an ACString like nsIURI::scheme?
*/
boolean isExposedProtocol(in string aProtocolScheme);
/**
* 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.
*
* @param aProtocolScheme the scheme from a URL: http, ftp, mailto, etc.
*
* Note: aProtocolScheme should not include a trailing colon, which is part
* of the URI syntax, not part of the scheme itself (i.e. pass "mailto" not
* "mailto:").
*
* @return the handler, if any; otherwise a default handler
*/
nsIHandlerInfo getProtocolHandlerInfo(in ACString aProtocolScheme);
/**
* Used to load a url via an external protocol handler (if one exists)
*