Added support for MIME encoded headers in mailtoURL, changed to decode MIME encoded headers for mailto URL,

bug 12851, r=ducarroz, sr=sspitzer.


git-svn-id: svn://10.0.0.236/trunk@105521 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
nhotta%netscape.com
2001-10-16 20:38:59 +00:00
parent 1eda82eb05
commit 100bed33a5

View File

@@ -44,8 +44,11 @@
#include "nsReadableUtils.h"
#include "nsXPIDLString.h"
#include "nsEscape.h"
#include "nsIMimeConverter.h"
#include "nsMsgMimeCID.h"
static NS_DEFINE_CID(kSimpleURICID, NS_SIMPLEURI_CID);
static NS_DEFINE_CID(kCMimeConverterCID, NS_MIME_CONVERTER_CID);
/////////////////////////////////////////////////////////////////////////////////////
// mailto url definition
@@ -190,19 +193,62 @@ nsresult nsMailtoUrl::ParseMailtoUrl(char * searchPart)
} // while we still have part of the url to parse...
} // if rest && *rest
// Now unescape any fields that need escaped...
nsCOMPtr<nsIMimeConverter> mimeConverter = do_GetService(kCMimeConverterCID);
nsXPIDLCString decodedString;
// Now unescape any fields that need escaped...
if (!m_toPart.IsEmpty())
{
nsUnescape(NS_CONST_CAST(char*, m_toPart.get()));
if (mimeConverter)
{
if (NS_SUCCEEDED(mimeConverter->DecodeMimeHeader(m_toPart.get(),
getter_Copies(decodedString),
"UTF-8", PR_FALSE))
&& decodedString)
m_toPart = decodedString;
}
}
if (!m_ccPart.IsEmpty())
{
nsUnescape(NS_CONST_CAST(char*, m_ccPart.get()));
if (mimeConverter)
{
if (NS_SUCCEEDED(mimeConverter->DecodeMimeHeader(m_ccPart.get(),
getter_Copies(decodedString),
"UTF-8", PR_FALSE))
&& decodedString)
m_ccPart = decodedString;
}
}
if (!m_subjectPart.IsEmpty())
nsUnescape(NS_CONST_CAST(char*, m_subjectPart.get()));
{
nsUnescape(NS_CONST_CAST(char*, m_subjectPart.get()));
if (mimeConverter)
{
if (NS_SUCCEEDED(mimeConverter->DecodeMimeHeader(m_subjectPart.get(),
getter_Copies(decodedString),
"UTF-8", PR_FALSE))
&& decodedString)
m_subjectPart = decodedString;
}
}
if (!m_newsgroupPart.IsEmpty())
nsUnescape(NS_CONST_CAST(char*, m_newsgroupPart.get()));
if (!m_referencePart.IsEmpty())
nsUnescape(NS_CONST_CAST(char*, m_referencePart.get()));
if (!m_bodyPart.IsEmpty())
{
nsUnescape(NS_CONST_CAST(char*, m_bodyPart.get()));
if (mimeConverter)
{
if (NS_SUCCEEDED(mimeConverter->DecodeMimeHeader(m_bodyPart.get(),
getter_Copies(decodedString),
"UTF-8", PR_FALSE))
&& decodedString)
m_bodyPart = decodedString;
}
}
if (!m_newsHostPart.IsEmpty())
nsUnescape(NS_CONST_CAST(char*, m_newsHostPart.get()));