/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
 *
 * The contents of this file are subject to the Netscape Public
 * License Version 1.1 (the "License"); you may not use this file
 * except in compliance with the License. You may obtain a copy of
 * the License at http://www.mozilla.org/NPL/
 *
 * Software distributed under the License is distributed on an "AS
 * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
 * implied. See the License for the specific language governing
 * rights and limitations under the License.
 *
 * The Original Code is mozilla.org code.
 *
 * The Initial Developer of the Original Code is Netscape
 * Communications Corporation.  Portions created by Netscape are
 * Copyright (C) 1998 Netscape Communications Corporation. All
 * Rights Reserved.
 *
 * Contributor(s): 
 */

/*

  The import service.  

 */

#include "nsISupports.idl"
#include "nsIProtocolHandler.idl"
interface nsIURI;

/*
	Unlike most protocol handlers, an external protocol
	handler is capable of handling ANY scheme.  Of course, it may
	not always successfully launch every URI but it has the ability
	to try.  Consequently, we can either have a single handler that
	is "special" or just create a bunch of them and install them
	as appropriate.  The current implementation provides a bunch
	of CLSID's for common protocol handlers that may want to use
	an external handler.
*/

[scriptable, uuid(4ed3a580-0dfc-11d4-9ad2-00601df05068)]
interface nsIExternalProtocol : nsIProtocolHandler
{
	void	setScheme( in string scheme);
};

%{C++
#define NS_EXTERNALMAILTO_CID								\
{ /* 364d6c20-0e16-11d4-9ad2-00601df05068 */			\
	0x364d6c20, 0x0e16, 0x11d4,							\
	{ 0x9a, 0xd2, 0x0, 0x60, 0x1d, 0xf0, 0x50, 0x68 }	\
}
#define NS_EXTERNALMAILTO_PROGID \
	"component://mozilla/externalprotocol/mailto"


#define NS_ERROR_EXTERNAL_LAUNCH    NS_ERROR_GENERATE_FAILURE(NS_ERROR_MODULE_NETWORK, 100)

%}
