Fix nsbeta2+ bug # 42887: allow charset specification in a search dataset. Code: nhotta R/A: me

This commit is contained in:
rjc%netscape.com 2000-06-26 05:08:23 +00:00
Родитель 3477150c86
Коммит a71e93e970
1 изменённых файлов: 21 добавлений и 6 удалений

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

@ -2491,8 +2491,15 @@ InternetSearchDataSource::GetInternetSearchURL(const char *searchEngineURI,
nsAutoString text(searchStr), encodingStr, queryEncodingStr; nsAutoString text(searchStr), encodingStr, queryEncodingStr;
GetData(dataUni, "search", 0, "queryEncoding", encodingStr); // decimal string values // first look for "search/queryCharset"... if that isn't specified,
MapEncoding(encodingStr, queryEncodingStr); // then fall back to looking for "search/queryEncoding" (a decimal)
GetData(dataUni, "search", 0, "queryCharset", queryEncodingStr);
if (queryEncodingStr.Length() < 1)
{
GetData(dataUni, "search", 0, "queryEncoding", encodingStr); // decimal string values
MapEncoding(encodingStr, queryEncodingStr);
}
if (queryEncodingStr.Length() > 0) if (queryEncodingStr.Length() > 0)
{ {
// convert from escaped-UTF_8, to unicode, and then to // convert from escaped-UTF_8, to unicode, and then to
@ -3496,7 +3503,7 @@ InternetSearchDataSource::DoSearch(nsIRDFResource *source, nsIRDFResource *engin
if (NS_FAILED(rv = GetData(dataUni, "search", 0, "method", methodStr))) return(rv); if (NS_FAILED(rv = GetData(dataUni, "search", 0, "method", methodStr))) return(rv);
} }
nsAutoString encodingStr, queryEncodingStr, resultEncodingStr; nsAutoString encodingStr, resultEncodingStr;
// first look for "interpret/charset"... if that isn't specified, // first look for "interpret/charset"... if that isn't specified,
// then fall back to looking for "interpret/resultEncoding" (a decimal) // then fall back to looking for "interpret/resultEncoding" (a decimal)
@ -3519,8 +3526,15 @@ InternetSearchDataSource::DoSearch(nsIRDFResource *source, nsIRDFResource *engin
} }
} }
GetData(dataUni, "search", 0, "queryEncoding", encodingStr); // decimal string values // first look for "search/queryCharset"... if that isn't specified,
MapEncoding(encodingStr, queryEncodingStr); // then fall back to looking for "search/queryEncoding" (a decimal)
nsAutoString queryEncodingStr;
GetData(dataUni, "search", 0, "queryCharset", queryEncodingStr);
if (queryEncodingStr.Length() < 1)
{
GetData(dataUni, "search", 0, "queryEncoding", encodingStr); // decimal string values
MapEncoding(encodingStr, queryEncodingStr);
}
if (queryEncodingStr.Length() > 0) if (queryEncodingStr.Length() > 0)
{ {
// convert from escaped-UTF_8, to unicode, and then to // convert from escaped-UTF_8, to unicode, and then to
@ -3539,7 +3553,8 @@ InternetSearchDataSource::DoSearch(nsIRDFResource *source, nsIRDFResource *engin
char *charsetData = nsnull; char *charsetData = nsnull;
nsCAutoString queryencodingstrC; nsCAutoString queryencodingstrC;
queryencodingstrC.AssignWithConversion(queryEncodingStr); queryencodingstrC.AssignWithConversion(queryEncodingStr);
if (NS_SUCCEEDED(rv = textToSubURI->ConvertAndEscape(queryencodingstrC, uni, &charsetData)) && (charsetData)) if (NS_SUCCEEDED(rv = textToSubURI->ConvertAndEscape(queryencodingstrC, uni, &charsetData))
&& (charsetData))
{ {
textTemp.AssignWithConversion(charsetData); textTemp.AssignWithConversion(charsetData);
Recycle(charsetData); Recycle(charsetData);