зеркало из https://github.com/mozilla/gecko-dev.git
Changes for new XP-COM interface.
This commit is contained in:
Родитель
3fa539258e
Коммит
4a1a3b7ef7
|
@ -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....*/
|
||||
|
|
Загрузка…
Ссылка в новой задаче