/* -*- Mode: IDL; 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): Judson Valeski
 *							 : David Matiskella	
 */
 
#include "nsISupports.idl"
#include "nsIMIMEInfo.idl"
#include "nsIEnumerator.idl"
#include "nsIFile.idl"
%{C++
#define NS_XMLMIMEDATASOURCE_CID                           \
{ /* {41654483-fa5b-11d3-a12b-a7aef7a2f2fc} */         \
    0x41654483,                                      \
    0xfa5b,                                          \
    0x11d3,                                          \
    { 0xa1, 0x2b, 0xa7, 0xae, 0xf7, 0xa2, 0xf2, 0xfc } \
}
#define NS_XMLMIMEDATASOURCE_CONTRACTID \
"@mozilla.org/mime-xml-data-source;1"


#define NS_NATIVEMIMEDATASOURCE_CONTRACTID \
"@mozilla.org/mime-native-data-source;1"
%}


[scriptable, uuid(41654481-fa5b-11d3-a12b-a7aef7a2f2fc)]
interface nsIMIMEDataSource : nsISupports {
/*
	Routines for retriving nsIMIMEInfo data given either
		a mimetype, file extension, or a mac codes;
*/
	nsIMIMEInfo GetFromMIMEType( in string aType );
	nsIMIMEInfo GetFromExtension( in string aFileExt );
	nsIMIMEInfo GetFromTypeCreator( in PRUint32 aType, in PRUint32 aCreator, in string aFileExt );

/*
	Routines to Add and Remove elements and to get an enumerator on the data source
*/
	void Add( in nsIMIMEInfo aInfo );
	void Remove( in string aType );
	nsISimpleEnumerator GetEnumerator();
	void Serialize();
	void InitFromFile( in nsIFile aFile ); 
};
