back out 1.32 to fix 17811. This will break 14914

git-svn-id: svn://10.0.0.236/trunk@52685 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
ftang%netscape.com 1999-11-03 05:47:25 +00:00
parent 6d4e070e6b
commit 74098be2bc

View File

@ -130,6 +130,11 @@ private:
nsICharsetConverterInfo * GetICharsetConverterInfo(ConverterInfo * ci,
PRInt32 aIndex, PRInt32 * aSize);
/**
* General method for finding and instantiating a Converter.
*/
nsresult GetCharsetConverter(const nsString * aSrc, void ** aResult,
const nsCID * aCID, const ConverterInfo * aArray, PRInt32 aSize);
public:
@ -373,6 +378,31 @@ reduceArray:
return NULL;
}
nsresult nsCharsetConverterManager::GetCharsetConverter(
const nsString * aSrc,
void ** aResult,
const nsCID * aCID,
const ConverterInfo * aArray,
PRInt32 aSize)
{
nsresult res = NS_ERROR_UCONV_NOCONV;
nsString * str;
GetCharsetName(aSrc, &str);
*aResult = NULL;
for (PRInt32 i=0; i<aSize; i++) if (str->EqualsIgnoreCase(*(aArray[i].mCharset))) {
res = nsComponentManager::CreateInstance(*(aArray[i].mCID),NULL,*aCID,aResult);
break;
}
delete str;
// well, we didn't found any converter. Damn, life sucks!
if ((*aResult == NULL) && (NS_SUCCEEDED(res)))
res = NS_ERROR_UCONV_NOCONV;
return res;
}
//----------------------------------------------------------------------
// Interface nsICharsetConverterManager [implementation]
@ -381,42 +411,28 @@ NS_IMETHODIMP nsCharsetConverterManager::GetUnicodeEncoder(
const nsString * aDest,
nsIUnicodeEncoder ** aResult)
{
*aResult= nsnull;
nsIComponentManager* comMgr;
nsresult res;
res = NS_GetGlobalComponentManager(&comMgr);
if(NS_FAILED(res))
return res;
PRInt32 baselen = nsCRT::strlen(NS_UNICODEENCODER_PROGID_BASE);
char progid[256];
PL_strncpy(progid, NS_UNICODEENCODER_PROGID_BASE, 256);
aDest->ToCString(progid + baselen, 256 - baselen);
res = comMgr->CreateInstanceByProgID(progid,NULL,
kIUnicodeEncoderIID ,(void**)aResult);
if(NS_FAILED(res))
res = NS_ERROR_UCONV_NOCONV;
return res;
if (!mMappingDone) {
res = CreateMapping();
if NS_FAILED(res) return res;
}
return GetCharsetConverter(aDest, (void **) aResult, &kIUnicodeEncoderIID,
mEncArray, mEncSize);
}
NS_IMETHODIMP nsCharsetConverterManager::GetUnicodeDecoder(
const nsString * aSrc,
nsIUnicodeDecoder ** aResult)
{
*aResult= nsnull;
nsIComponentManager* comMgr;
nsresult res;
res = NS_GetGlobalComponentManager(&comMgr);
if(NS_FAILED(res))
return res;
PRInt32 baselen = nsCRT::strlen(NS_UNICODEDECODER_PROGID_BASE);
char progid[256];
PL_strncpy(progid, NS_UNICODEDECODER_PROGID_BASE, 256);
aSrc->ToCString(progid + baselen, 256 - baselen);
res = comMgr->CreateInstanceByProgID(progid,NULL,
kIUnicodeDecoderIID,(void**)aResult);
if(NS_FAILED(res))
res = NS_ERROR_UCONV_NOCONV;
return res;
if (!mMappingDone) {
res = CreateMapping();
if NS_FAILED(res) return res;
}
return GetCharsetConverter(aSrc, (void **) aResult, &kIUnicodeDecoderIID,
mDecArray, mDecSize);
}
NS_IMETHODIMP nsCharsetConverterManager::GetEncodableCharsets(