mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-09 19:35:51 +00:00
bug 195093 : modernize |GetDefaultCharsetForLocale| (use nsACString). r=darin, sr=bz
This commit is contained in:
parent
d16b07ec3e
commit
c1c03f8f14
@ -184,11 +184,10 @@ nsresult nsCollationMac::Initialize(nsILocale* locale)
|
||||
|
||||
nsCOMPtr <nsIPlatformCharset> platformCharset = do_GetService(NS_PLATFORMCHARSET_CONTRACTID, &res);
|
||||
if (NS_SUCCEEDED(res)) {
|
||||
PRUnichar* mappedCharset = NULL;
|
||||
res = platformCharset->GetDefaultCharsetForLocale(aLocale.get(), &mappedCharset);
|
||||
if (NS_SUCCEEDED(res) && mappedCharset) {
|
||||
res = mCollation->SetCharset(NS_LossyConvertUCS2toASCII(mappedCharset).get());
|
||||
nsMemory::Free(mappedCharset);
|
||||
nsCAutoString mappedCharset;
|
||||
res = platformCharset->GetDefaultCharsetForLocale(aLocale.get(), mappedCharset);
|
||||
if (NS_SUCCEEDED(res)) {
|
||||
res = mCollation->SetCharset(mappedCharset.get());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -302,11 +302,10 @@ nsresult nsDateTimeFormatMac::Initialize(nsILocale* locale)
|
||||
|
||||
nsCOMPtr <nsIPlatformCharset> platformCharset = do_GetService(NS_PLATFORMCHARSET_CONTRACTID, &res);
|
||||
if (NS_SUCCEEDED(res)) {
|
||||
PRUnichar* mappedCharset = NULL;
|
||||
res = platformCharset->GetDefaultCharsetForLocale(mLocale.get(), &mappedCharset);
|
||||
if (NS_SUCCEEDED(res) && mappedCharset) {
|
||||
mCharset.AssignWithConversion(mappedCharset);
|
||||
nsMemory::Free(mappedCharset);
|
||||
nsCAutoString mappedCharset;
|
||||
res = platformCharset->GetDefaultCharsetForLocale(mLocale.get(), mappedCharset);
|
||||
if (NS_SUCCEEDED(res)) {
|
||||
mCharset = mappedCharset;
|
||||
}
|
||||
|
||||
// get a system charset (used when getting date/time strings as default)
|
||||
|
@ -158,11 +158,10 @@ nsresult nsCollationUnix::Initialize(nsILocale* locale)
|
||||
|
||||
nsCOMPtr <nsIPlatformCharset> platformCharset = do_GetService(NS_PLATFORMCHARSET_CONTRACTID, &res);
|
||||
if (NS_SUCCEEDED(res)) {
|
||||
PRUnichar* mappedCharset = NULL;
|
||||
res = platformCharset->GetDefaultCharsetForLocale(aLocale.get(), &mappedCharset);
|
||||
if (NS_SUCCEEDED(res) && mappedCharset) {
|
||||
mCollation->SetCharset(NS_LossyConvertUCS2toASCII(mappedCharset).get());
|
||||
nsMemory::Free(mappedCharset);
|
||||
nsCAutoString mappedCharset;
|
||||
res = platformCharset->GetDefaultCharsetForLocale(aLocale.get(), mappedCharset);
|
||||
if (NS_SUCCEEDED(res)) {
|
||||
mCollation->SetCharset(mappedCharset.get());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -116,13 +116,10 @@ nsresult nsDateTimeFormatUnix::Initialize(nsILocale* locale)
|
||||
|
||||
nsCOMPtr <nsIPlatformCharset> platformCharset = do_GetService(NS_PLATFORMCHARSET_CONTRACTID, &res);
|
||||
if (NS_SUCCEEDED(res)) {
|
||||
PRUnichar* mappedCharset = NULL;
|
||||
res = platformCharset->GetDefaultCharsetForLocale(mLocale.get(), &mappedCharset);
|
||||
if (NS_SUCCEEDED(res) && mappedCharset) {
|
||||
// XXX hacky, nsIPlatformCharset::GetDefaultCharsetForLocale
|
||||
// should return a nsACString&
|
||||
CopyUCS2toASCII(nsDependentString(mappedCharset), mCharset);
|
||||
nsMemory::Free(mappedCharset);
|
||||
nsCAutoString mappedCharset;
|
||||
res = platformCharset->GetDefaultCharsetForLocale(mLocale.get(), mappedCharset);
|
||||
if (NS_SUCCEEDED(res)) {
|
||||
mCharset = mappedCharset;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -129,11 +129,10 @@ nsresult nsCollationWin::Initialize(nsILocale* locale)
|
||||
|
||||
nsCOMPtr <nsIPlatformCharset> platformCharset = do_GetService(NS_PLATFORMCHARSET_CONTRACTID, &res);
|
||||
if (NS_SUCCEEDED(res)) {
|
||||
PRUnichar* mappedCharset = NULL;
|
||||
res = platformCharset->GetDefaultCharsetForLocale(aLocale.get(), &mappedCharset);
|
||||
if (NS_SUCCEEDED(res) && mappedCharset) {
|
||||
mCollation->SetCharset(NS_LossyConvertUCS2toASCII(mappedCharset).get());
|
||||
nsMemory::Free(mappedCharset);
|
||||
nsCAutoString mappedCharset;
|
||||
res = platformCharset->GetDefaultCharsetForLocale(aLocale.get(), mappedCharset);
|
||||
if (NS_SUCCEEDED(res)) {
|
||||
mCollation->SetCharset(mappedCharset.get());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -74,7 +74,7 @@ public:
|
||||
|
||||
NS_IMETHOD GetCharset(nsPlatformCharsetSel selector, nsACString& oResult) = 0;
|
||||
|
||||
NS_IMETHOD GetDefaultCharsetForLocale(const PRUnichar* localeName, PRUnichar** _retValue) = 0;
|
||||
NS_IMETHOD GetDefaultCharsetForLocale(const PRUnichar* localeName, nsACString& oResult) = 0;
|
||||
|
||||
};
|
||||
|
||||
|
@ -59,9 +59,9 @@ nsPlatformCharset::GetCharset(nsPlatformCharsetSel selector, nsACString& aResult
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsPlatformCharset::GetDefaultCharsetForLocale(const PRUnichar* localeName, PRUnichar** _retValue)
|
||||
nsPlatformCharset::GetDefaultCharsetForLocale(const PRUnichar* localeName, nsACString& aResult)
|
||||
{
|
||||
*_retValue = ToNewUnicode(mCharset);
|
||||
aResult = mCharset;
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
|
@ -153,25 +153,25 @@ nsPlatformCharset::GetCharset(nsPlatformCharsetSel selector, nsACString& oResult
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsPlatformCharset::GetDefaultCharsetForLocale(const PRUnichar* localeName, PRUnichar** _retValue)
|
||||
nsPlatformCharset::GetDefaultCharsetForLocale(const PRUnichar* localeName, nsACString &oResult)
|
||||
{
|
||||
nsCOMPtr<nsIMacLocale> pMacLocale;
|
||||
nsAutoString localeAsString(localeName);
|
||||
nsCAutoString charset(NS_LITERAL_CSTRING("x-mac-roman"));
|
||||
short script, language, region;
|
||||
|
||||
nsresult rv;
|
||||
nsCOMPtr<nsIMacLocale> pMacLocale;
|
||||
pMacLocale = do_CreateInstance(NS_MACLOCALE_CONTRACTID, &rv);
|
||||
if (NS_SUCCEEDED(rv)) {
|
||||
nsAutoString localeAsString(localeName);
|
||||
short script, language, region;
|
||||
rv = pMacLocale->GetPlatformLocale(&localeAsString, &script, &language, ®ion);
|
||||
if (NS_SUCCEEDED(rv)) {
|
||||
rv = MapToCharset(script, region, charset);
|
||||
if (NS_SUCCEEDED(MapToCharset(script, region, oResult))) {
|
||||
return NS_OK;
|
||||
}
|
||||
}
|
||||
}
|
||||
*_retValue = ToNewUnicode(charset);
|
||||
NS_ENSURE_TRUE(*_retValue, NS_ERROR_OUT_OF_MEMORY);
|
||||
|
||||
return rv;
|
||||
|
||||
// fallback
|
||||
oResult.Assign(NS_LITERAL_CSTRING("x-mac-roman"));
|
||||
retrun NS_SUCCESS_USING_FALLBACK_LOCALE;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
|
@ -134,8 +134,9 @@ nsPlatformCharset::GetCharset(nsPlatformCharsetSel selector,
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsPlatformCharset::GetDefaultCharsetForLocale(const PRUnichar* localeName, PRUnichar** _retValue)
|
||||
nsPlatformCharset::GetDefaultCharsetForLocale(const PRUnichar* localeName, nsACString &oResult)
|
||||
{
|
||||
oResult.Truncate();
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
|
@ -51,7 +51,7 @@ public:
|
||||
|
||||
NS_IMETHOD Init();
|
||||
NS_IMETHOD GetCharset(nsPlatformCharsetSel selector, nsACString& oResult);
|
||||
NS_IMETHOD GetDefaultCharsetForLocale(const PRUnichar* localeName, PRUnichar** _retValue);
|
||||
NS_IMETHOD GetDefaultCharsetForLocale(const PRUnichar* localeName, nsACString& oResult);
|
||||
|
||||
private:
|
||||
nsCString mCharset;
|
||||
|
@ -124,6 +124,7 @@ nsPlatformCharset::ConvertLocaleToCharsetUsingDeprecatedConfig(nsAutoString& loc
|
||||
}
|
||||
NS_ASSERTION(0, "unable to convert locale to charset using deprecated config");
|
||||
mCharset.Assign(NS_LITERAL_CSTRING("ISO-8859-1"));
|
||||
oResult.Assign(NS_LITERAL_STRING("ISO-8859-1"));
|
||||
return NS_SUCCESS_USING_FALLBACK_LOCALE;
|
||||
}
|
||||
|
||||
@ -152,7 +153,7 @@ nsPlatformCharset::GetCharset(nsPlatformCharsetSel selector, nsACString& oResult
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsPlatformCharset::GetDefaultCharsetForLocale(const PRUnichar* localeName, PRUnichar** _retValue)
|
||||
nsPlatformCharset::GetDefaultCharsetForLocale(const PRUnichar* localeName, nsACString &oResult)
|
||||
{
|
||||
nsAutoString localeNameAsString(localeName);
|
||||
|
||||
@ -163,7 +164,7 @@ nsPlatformCharset::GetDefaultCharsetForLocale(const PRUnichar* localeName, PRUni
|
||||
if (mLocale.Equals(localeNameAsString) ||
|
||||
// support the 4.x behavior
|
||||
(mLocale.EqualsIgnoreCase("en_US") && localeNameAsString.EqualsIgnoreCase("C"))) {
|
||||
*_retValue = ToNewUnicode(mCharset);
|
||||
oResult = mCharset;
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
@ -176,8 +177,12 @@ nsPlatformCharset::GetDefaultCharsetForLocale(const PRUnichar* localeName, PRUni
|
||||
// http://oss.software.ibm.com/icu/
|
||||
//
|
||||
NS_ASSERTION(0, "GetDefaultCharsetForLocale: need to add multi locale support");
|
||||
#ifdef DEBUG_jungshik
|
||||
printf("localeName=%s mCharset=%s\n", NS_ConvertUCS2toUTF8(localeName).get(),
|
||||
mCharset.get());
|
||||
#endif
|
||||
// until we add multi locale support: use the the charset of the user's locale
|
||||
*_retValue = ToNewUnicode(mCharset);
|
||||
oResult = mCharset;
|
||||
return NS_SUCCESS_USING_FALLBACK_LOCALE;
|
||||
#endif
|
||||
|
||||
@ -186,16 +191,15 @@ nsPlatformCharset::GetDefaultCharsetForLocale(const PRUnichar* localeName, PRUni
|
||||
// using the deprecated locale to charset mapping
|
||||
//
|
||||
nsAutoString localeStr(localeName);
|
||||
nsString charset;
|
||||
nsAutoString charset;
|
||||
nsresult res = ConvertLocaleToCharsetUsingDeprecatedConfig(localeStr, charset);
|
||||
if (NS_SUCCEEDED(res)) {
|
||||
*_retValue = ToNewUnicode(charset);
|
||||
LossyCopyUTF16toASCII(charset, oResult); // charset name is always ASCII.
|
||||
return res; // succeeded
|
||||
}
|
||||
|
||||
NS_ASSERTION(0, "unable to convert locale to charset using deprecated config");
|
||||
charset.Assign(NS_LITERAL_STRING("ISO-8859-1"));
|
||||
*_retValue = ToNewUnicode(charset);
|
||||
oResult.Assign(NS_LITERAL_CSTRING("ISO-8859-1"));
|
||||
return NS_SUCCESS_USING_FALLBACK_LOCALE;
|
||||
}
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
||||
|
||||
/* ***** BEGIN LICENSE BLOCK *****
|
||||
* Version: NPL 1.1/GPL 2.0/LGPL 2.1
|
||||
*
|
||||
@ -132,34 +132,32 @@ nsPlatformCharset::GetCharset(nsPlatformCharsetSel selector,
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsPlatformCharset::GetDefaultCharsetForLocale(const PRUnichar* localeName, PRUnichar** _retValue)
|
||||
nsPlatformCharset::GetDefaultCharsetForLocale(const PRUnichar* localeName, nsACString& oResult)
|
||||
{
|
||||
nsCOMPtr<nsIWin32Locale> winLocale;
|
||||
LCID localeAsLCID;
|
||||
char acp_name[6];
|
||||
nsCAutoString charset;
|
||||
nsAutoString localeAsNSString(localeName);
|
||||
|
||||
//
|
||||
// convert locale name to a code page (through the LCID)
|
||||
//
|
||||
nsresult result;
|
||||
winLocale = do_CreateInstance(NS_WIN32LOCALE_CONTRACTID, &result);
|
||||
result = winLocale->GetPlatformLocale(&localeAsNSString,&localeAsLCID);
|
||||
nsresult rv;
|
||||
oResult.Truncate();
|
||||
|
||||
if (NS_FAILED(result)) { *_retValue = ToNewUnicode(charset); return result; }
|
||||
winLocale = do_CreateInstance(NS_WIN32LOCALE_CONTRACTID, &rv);
|
||||
if (NS_FAILED(rv)) { return rv; }
|
||||
|
||||
if (GetLocaleInfo(localeAsLCID,LOCALE_IDEFAULTANSICODEPAGE,acp_name,sizeof(acp_name))==0) {
|
||||
*_retValue = ToNewUnicode(charset);
|
||||
rv = winLocale->GetPlatformLocale(&localeAsNSString, &localeAsLCID);
|
||||
if (NS_FAILED(rv)) { return rv; }
|
||||
|
||||
if (GetLocaleInfo(localeAsLCID, LOCALE_IDEFAULTANSICODEPAGE, acp_name, sizeof(acp_name))==0) {
|
||||
return NS_ERROR_FAILURE;
|
||||
}
|
||||
nsAutoString acp_key; acp_key.Assign(NS_LITERAL_STRING("acp."));
|
||||
acp_key.AppendWithConversion(acp_name);
|
||||
|
||||
result = MapToCharset(acp_key,charset);
|
||||
|
||||
*_retValue = ToNewUnicode(charset);
|
||||
return result;
|
||||
return MapToCharset(acp_key, oResult);
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
||||
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
|
||||
/* ***** BEGIN LICENSE BLOCK *****
|
||||
* Version: NPL 1.1/GPL 2.0/LGPL 2.1
|
||||
*
|
||||
@ -50,36 +50,35 @@ NS_DEFINE_IID(kPlatformCharsetIID,NS_IPLATFORMCHARSET_IID);
|
||||
int
|
||||
main(int argc, const char** argv)
|
||||
{
|
||||
nsCOMPtr<nsILocaleService> locale_service;
|
||||
nsCOMPtr<nsILocale> locale;
|
||||
nsCOMPtr<nsIPlatformCharset> platform_charset;
|
||||
nsString locale_category(NS_LITERAL_STRING("NSILOCALE_MESSAGES"));
|
||||
PRUnichar* category_value, *charset;
|
||||
nsString categoryAsNSString, charsetAsNSString;
|
||||
nsCOMPtr<nsILocaleService> locale_service;
|
||||
nsCOMPtr<nsILocale> locale;
|
||||
nsCOMPtr<nsIPlatformCharset> platform_charset;
|
||||
nsString locale_category(NS_LITERAL_STRING("NSILOCALE_MESSAGES"));
|
||||
PRUnichar* category_value;
|
||||
nsCAutoString charset;
|
||||
nsString categoryAsNSString;
|
||||
|
||||
nsresult rv = nsComponentManager::CreateInstance(NS_PLATFORMCHARSET_CONTRACTID,NULL,kPlatformCharsetIID,getter_AddRefs(platform_charset));
|
||||
rv = nsComponentManager::CreateInstance(kLocaleServiceCID,NULL,kLocaleServiceIID,getter_AddRefs(locale_service));
|
||||
if (NS_FAILED(rv)) return -1;
|
||||
nsresult rv = nsComponentManager::CreateInstance(NS_PLATFORMCHARSET_CONTRACTID, NULL, kPlatformCharsetIID, getter_AddRefs(platform_charset));
|
||||
rv = nsComponentManager::CreateInstance(kLocaleServiceCID, NULL, kLocaleServiceIID, getter_AddRefs(locale_service));
|
||||
if (NS_FAILED(rv)) return -1;
|
||||
|
||||
rv = locale_service->GetSystemLocale(getter_AddRefs(locale));
|
||||
if (NS_FAILED(rv)) return -1;
|
||||
rv = locale_service->GetSystemLocale(getter_AddRefs(locale));
|
||||
if (NS_FAILED(rv)) return -1;
|
||||
|
||||
rv = locale->GetCategory(locale_category.get(),&category_value);
|
||||
if (NS_FAILED(rv)) return -1;
|
||||
rv = locale->GetCategory(locale_category.get(), &category_value);
|
||||
if (NS_FAILED(rv)) return -1;
|
||||
|
||||
rv = platform_charset->GetDefaultCharsetForLocale(category_value,&charset);
|
||||
if (NS_FAILED(rv)) return -1;
|
||||
rv = platform_charset->GetDefaultCharsetForLocale(category_value, charset);
|
||||
if (NS_FAILED(rv)) return -1;
|
||||
|
||||
charsetAsNSString = charset;
|
||||
categoryAsNSString = category_value;
|
||||
printf("DefaultCharset for %s is %s\n", NS_LossyConvertUCS2toASCII(categoryAsNSString).get(), NS_LossyConvertUCS2toASCII(charsetAsNSString).get());
|
||||
categoryAsNSString = category_value;
|
||||
printf("DefaultCharset for %s is %s\n", NS_LossyConvertUTF16toASCII(categoryAsNSString).get(), charset.get());
|
||||
|
||||
categoryAsNSString.Assign(NS_LITERAL_STRING("en-US"));
|
||||
rv = platform_charset->GetDefaultCharsetForLocale(categoryAsNSString.get(),&charset);
|
||||
if (NS_FAILED(rv)) return -1;
|
||||
categoryAsNSString.Assign(NS_LITERAL_STRING("en-US"));
|
||||
rv = platform_charset->GetDefaultCharsetForLocale(categoryAsNSString.get(), charset);
|
||||
if (NS_FAILED(rv)) return -1;
|
||||
|
||||
charsetAsNSString = charset;
|
||||
printf("DefaultCharset for %s is %s\n", NS_LossyConvertUCS2toASCII(categoryAsNSString).get(), NS_LossyConvertUCS2toASCII(charsetAsNSString).get());
|
||||
printf("DefaultCharset for %s is %s\n", NS_LossyConvertUTF16toASCII(categoryAsNSString).get(), charset.get());
|
||||
|
||||
return 0;
|
||||
return 0;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user