Fix for bugscape bug # 15236. The registry settings for simple MAPI needs to be set same as the installer

r=rdayal, sr=mscott
This commit is contained in:
srilatha%netscape.com 2002-06-12 22:07:24 +00:00
parent 8665fce309
commit a2cc2d81a4
2 changed files with 54 additions and 35 deletions

View File

@ -79,30 +79,39 @@ const char * nsMapiRegistryUtils::thisApplication()
return m_thisApp.get() ;
}
const PRUnichar * nsMapiRegistryUtils::brandName()
void nsMapiRegistryUtils::getVarValue(const PRUnichar * varName, nsAutoString & result)
{
nsresult rv;
if (m_brand.IsEmpty()) {
nsCOMPtr<nsIStringBundleService> bundleService(do_GetService(
nsCOMPtr<nsIStringBundleService> bundleService(do_GetService(
kStringBundleServiceCID, &rv));
if (NS_SUCCEEDED(rv) && bundleService) {
nsCOMPtr<nsIStringBundle> brandBundle;
rv = bundleService->CreateBundle(
"chrome://global/locale/brand.properties",
getter_AddRefs(brandBundle));
if (NS_SUCCEEDED(rv)) {
nsXPIDLString brandName;
rv = brandBundle->GetStringFromName(
NS_LITERAL_STRING("brandShortName").get(),
getter_Copies(brandName));
if (NS_SUCCEEDED(rv)) {
m_brand = brandName ;
}
}
if (NS_SUCCEEDED(rv) && bundleService) {
nsCOMPtr<nsIStringBundle> brandBundle;
rv = bundleService->CreateBundle(
"chrome://global/locale/brand.properties",
getter_AddRefs(brandBundle));
if (NS_SUCCEEDED(rv)) {
nsXPIDLString value;
rv = brandBundle->GetStringFromName(
varName,
getter_Copies(value));
if (NS_SUCCEEDED(rv))
result = value;
}
}
}
return m_brand.get() ;
const PRUnichar * nsMapiRegistryUtils::brandName()
{
if (m_brand.IsEmpty())
getVarValue(NS_LITERAL_STRING("brandShortName").get(), m_brand);
return m_brand.get();
}
const PRUnichar * nsMapiRegistryUtils::vendorName()
{
if (m_vendor.IsEmpty())
getVarValue(NS_LITERAL_STRING("vendorShortName").get(), m_vendor);
return m_vendor.get();
}
const PRUnichar * nsMapiRegistryUtils::versionNo()
@ -473,25 +482,27 @@ nsresult nsMapiRegistryUtils::setDefaultMailClient()
NS_FAILED(rv)) return NS_ERROR_FAILURE;
nsCAutoString keyName("Software\\Clients\\Mail\\");
nsCAutoString appName (NS_ConvertUCS2toUTF8(brandName()).get());
nsCAutoString appName (NS_ConvertUCS2toUTF8(vendorName()).get());
if (!appName.IsEmpty()) {
keyName.Append(appName.get());
nsCOMPtr<nsIStringBundle> bundle;
rv = MakeMapiStringBundle (getter_AddRefs (bundle)) ;
if (NS_FAILED(rv)) return NS_ERROR_FAILURE;
nsCOMPtr<nsIStringBundle> bundle;
rv = MakeMapiStringBundle (getter_AddRefs (bundle)) ;
if (NS_FAILED(rv)) return NS_ERROR_FAILURE;
nsXPIDLString defaultMailTitle;
const PRUnichar *keyValuePrefixStr[] = { brandName(), versionNo() };
NS_NAMED_LITERAL_STRING(defaultMailTitleTag, "defaultMailDisplayTitle");
rv = bundle->FormatStringFromName(defaultMailTitleTag.get(),
keyValuePrefixStr, 2,
getter_Copies(defaultMailTitle));
if (NS_FAILED(rv)) return NS_ERROR_FAILURE;
nsXPIDLString defaultMailTitle;
// Use vendorName instead of brandname since brandName is product name
// and has more than just the name of the application
const PRUnichar *keyValuePrefixStr[] = { vendorName(), versionNo() };
NS_NAMED_LITERAL_STRING(defaultMailTitleTag, "defaultMailDisplayTitle");
rv = bundle->FormatStringFromName(defaultMailTitleTag.get(),
keyValuePrefixStr, 2,
getter_Copies(defaultMailTitle));
if (NS_FAILED(rv)) return NS_ERROR_FAILURE;
rv = SetRegistryKey(HKEY_LOCAL_MACHINE,
keyName.get(),
"", NS_CONST_CAST(char *, NS_ConvertUCS2toUTF8(defaultMailTitle).get()) ) ;
keyName.get(),
"", NS_CONST_CAST(char *, NS_ConvertUCS2toUTF8(defaultMailTitle).get()) ) ;
}
else
rv = NS_ERROR_FAILURE;
@ -578,7 +589,9 @@ nsresult nsMapiRegistryUtils::unsetDefaultMailClient() {
nsCAutoString name ;
GetRegistryKey(HKEY_LOCAL_MACHINE, "Software\\Mozilla\\Desktop",
"HKEY_LOCAL_MACHINE\\Software\\Clients\\Mail", name);
nsCAutoString appName (NS_ConvertUCS2toUTF8(brandName()).get());
// Use vendorName instead of brandname since brandName is product name
// and has more than just the name of the application
nsCAutoString appName (NS_ConvertUCS2toUTF8(vendorName()).get());
if (!name.IsEmpty() && !appName.IsEmpty() && name.Equals(appName)) {
nsCAutoString keyName("HKEY_LOCAL_MACHINE\\Software\\Clients\\Mail\\");

View File

@ -51,9 +51,13 @@ class nsMapiRegistryUtils
private :
nsCAutoString m_thisApp ;
nsAutoString m_brand ;
nsAutoString m_versionNo ;
nsAutoString m_vendor ;
nsAutoString m_versionNo ;
nsCOMPtr<nsIStringBundle> m_mapiStringBundle ;
// sets result to the value of varName (as defined in brand.properties)
void getVarValue(const PRUnichar * varName, nsAutoString & result);
public :
nsMapiRegistryUtils() ;
@ -66,8 +70,10 @@ public :
const char * thisApplication() ;
// This returns the brand name for this application
const PRUnichar * brandName() ;
// This returns the version no for this application
const PRUnichar * versionNo() ;
// This returns the vendor name of this application
const PRUnichar * vendorName();
// This returns the version no for this application
const PRUnichar * versionNo() ;
// verifyRestrictedAccess - Returns PR_TRUE if this user only has restricted access
// to the registry keys we need to modify.
PRBool verifyRestrictedAccess() ;