Changes for new XP-COM interface.

This commit is contained in:
rhp%netscape.com 1999-03-02 17:06:48 +00:00
Родитель 3fa539258e
Коммит 4a1a3b7ef7
4 изменённых файлов: 49 добавлений и 67 удалений

Просмотреть файл

@ -64,11 +64,12 @@ DEFINES= -DEBUG_rhp -DHAVE_MIME_DATA_SLOT -D_IMPL_NS_HTML
#//------------------------------------------------------------------------
OBJS= \
#
# Code for XP-COM Factory creation...
# Code for XP-COM Factory creation and interfaces...
#
.\$(OBJDIR)\nsMimeFactory.obj \
.\$(OBJDIR)\nsRFC822toHTMLStreamConverter.obj \
.\$(OBJDIR)\nsMimeObjectClassAccess.obj \
.\$(OBJDIR)\nsMimeObjectClassAccess.obj \
.\$(OBJDIR)\nsMimeHeaderConverter.obj \
# MIME parsing code
.\$(OBJDIR)\mimecont.obj \
.\$(OBJDIR)\mimeebod.obj \

Просмотреть файл

@ -31,6 +31,9 @@ static NS_DEFINE_CID(kCMimeRFC822HTMLConverterCID, NS_RFC822_HTML_STREAM_CONVE
#include "nsMimeObjectClassAccess.h"
static NS_DEFINE_CID(kCMimeMimeObjectClassAccessCID, NS_MIME_OBJECT_CLASS_ACCESS_CID);
#include "nsMimeHeaderConverter.h"
static NS_DEFINE_CID(kCMimeHeaderConverterCID, NS_MIME_HEADER_CONVERTER_CID);
////////////////////////////////////////////////////////////
//
////////////////////////////////////////////////////////////
@ -119,6 +122,12 @@ nsresult nsMimeFactory::CreateInstance(nsISupports *aOuter, const nsIID &aIID, v
if (res != NS_OK) // was there a problem creating the object ?
return res;
}
else if (mClassID.Equals(kCMimeHeaderConverterCID))
{
res = NS_NewMimeHeaderConverter((nsIMimeHeaderConverter **) &inst);
if (res != NS_OK) // was there a problem creating the object ?
return res;
}
// End of checking the interface ID code....
if (inst)
@ -188,14 +197,8 @@ extern "C" NS_EXPORT nsresult NSRegisterSelf(nsISupports* serviceMgr, const char
PR_TRUE, PR_TRUE);
nsRepository::RegisterComponent(kCMimeRFC822HTMLConverterCID, NULL, NULL, path,
PR_TRUE, PR_TRUE);
/*
* For now, do the old netlib call so we don't have to dork around
* with hacking every viewer in the world.
*/
NET_RegisterContentTypeConverter(MESSAGE_RFC822, FO_NGLAYOUT, NULL, MIME_MessageConverter);
NET_RegisterContentTypeConverter(MESSAGE_RFC822, FO_CACHE_AND_NGLAYOUT, NULL, MIME_MessageConverter);
nsRepository::RegisterComponent(kCMimeHeaderConverterCID, NULL, NULL, path,
PR_TRUE, PR_TRUE);
return NS_OK;
}
@ -204,6 +207,7 @@ extern "C" NS_EXPORT nsresult NSUnregisterSelf(nsISupports* serviceMgr, const ch
printf("*** Mime being unregistered\n");
nsRepository::UnregisterComponent(kCMimeMimeObjectClassAccessCID, path);
nsRepository::UnregisterComponent(kCMimeRFC822HTMLConverterCID, path);
nsRepository::UnregisterComponent(kCMimeHeaderConverterCID, path);
return NS_OK;
}

Просмотреть файл

@ -21,6 +21,7 @@
#include "nsIFactory.h"
#include "nsISupports.h"
#include "nsMimeHeaderConverter.h"
#include "comi18n.h"
/*
* This function will be used by the factory to generate an
@ -34,9 +35,9 @@ nsresult NS_NewMimeHeaderConverter(nsIMimeHeaderConverter ** aInstancePtrResult)
NS_PRECONDITION(nsnull != aInstancePtrResult, "nsnull ptr");
if (nsnull != aInstancePtrResult)
{
nsMimeObjectClassAccess *obj = new nsMimeObjectClassAccess();
nsMimeHeaderConverter *obj = new nsMimeHeaderConverter();
if (obj)
return obj->QueryInterface(nsIMimeObjectClassAccess::IID(), (void**) aInstancePtrResult);
return obj->QueryInterface(nsIMimeHeaderConverter::IID(), (void**) aInstancePtrResult);
else
return NS_ERROR_OUT_OF_MEMORY; /* we couldn't allocate the object */
}
@ -48,78 +49,54 @@ nsresult NS_NewMimeHeaderConverter(nsIMimeHeaderConverter ** aInstancePtrResult)
* The following macros actually implement addref, release and
* query interface for our component.
*/
NS_IMPL_ADDREF(nsMimeObjectClassAccess)
NS_IMPL_RELEASE(nsMimeObjectClassAccess)
NS_IMPL_QUERY_INTERFACE(nsMimeObjectClassAccess, nsIMimeObjectClassAccess::IID()); /* we need to pass in the interface ID of this interface */
NS_IMPL_ADDREF(nsMimeHeaderConverter)
NS_IMPL_RELEASE(nsMimeHeaderConverter)
NS_IMPL_QUERY_INTERFACE(nsMimeHeaderConverter, nsIMimeHeaderConverter::IID()); /* we need to pass in the interface ID of this interface */
/*
* nsMimeObjectClassAccess definitions....
* nsMimeHeaderConverter definitions....
*/
/*
* Inherited methods for nsMimeObjectClassAccess
* Inherited methods for nsMimeHeaderConverter
*/
nsMimeObjectClassAccess::nsMimeObjectClassAccess()
nsMimeHeaderConverter::nsMimeHeaderConverter()
{
/* the following macro is used to initialize the ref counting data */
NS_INIT_REFCNT();
}
nsMimeObjectClassAccess::~nsMimeObjectClassAccess()
nsMimeHeaderConverter::~nsMimeHeaderConverter()
{
}
nsresult
nsMimeObjectClassAccess::MimeObjectWrite(void *mimeObject,
char *data,
PRInt32 length,
PRBool user_visible_p)
nsMimeHeaderConverter::DecodeMimePartIIStr(const char *header,
char *charset,
char **decodedString)
{
int rc = XPCOM_MimeObject_write(mimeObject, data, length, user_visible_p);
if (rc < 0)
char *retString = MIME_DecodeMimePartIIStr(header, charset);
if (retString == NULL)
return NS_ERROR_FAILURE;
else
{
*decodedString = retString;
return NS_OK;
}
}
nsresult
nsMimeObjectClassAccess::GetmimeInlineTextClass(void **ptr)
nsresult
nsMimeHeaderConverter::EncodeMimePartIIStr(const char *header,
const char *mailCharset,
PRInt32 encodedWordSize,
char **encodedString)
{
*ptr = XPCOM_GetmimeInlineTextClass();
return NS_OK;
}
nsresult
nsMimeObjectClassAccess::GetmimeLeafClass(void **ptr)
{
*ptr = XPCOM_GetmimeLeafClass();
return NS_OK;
}
nsresult
nsMimeObjectClassAccess::GetmimeObjectClass(void **ptr)
{
*ptr = XPCOM_GetmimeObjectClass();
return NS_OK;
}
nsresult
nsMimeObjectClassAccess::GetmimeContainerClass(void **ptr)
{
*ptr = XPCOM_GetmimeContainerClass();
return NS_OK;
}
nsresult
nsMimeObjectClassAccess::GetmimeMultipartClass(void **ptr)
{
*ptr = XPCOM_GetmimeMultipartClass();
return NS_OK;
}
nsresult
nsMimeObjectClassAccess::GetmimeMultipartSignedClass(void **ptr)
{
*ptr = XPCOM_GetmimeMultipartSignedClass();
return NS_OK;
char *retString = MIME_EncodeMimePartIIStr(header, mailCharset, encodedWordSize);
if (retString == NULL)
return NS_ERROR_FAILURE;
else
{
*encodedString = retString;
return NS_OK;
}
}

Просмотреть файл

@ -46,13 +46,13 @@ public:
// Decode routine
NS_IMETHOD DecodeMimePartIIStr(const char *header,
const char *charset,
char *decodedString);
char *charset,
char **decodedString);
// Encode routine
NS_IMETHOD EncodeMimePartIIStr(const char *header,
const char *mailCharset,
PRInt32 encodedWordSize,
char *encodedString);
char **encodedString);
};
/* this function will be used by the factory to generate an class access object....*/