13182 [PI] Internet Config support for MIME type mapping
switch to using nsInternetConfig of nsUserInfoMac git-svn-id: svn://10.0.0.236/trunk@68022 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
parent
5cb2757c4b
commit
38135a2a1c
Binary file not shown.
@ -20,29 +20,17 @@
|
||||
* Contributor(s):
|
||||
*/
|
||||
|
||||
#include "nsUserInfoMac.h"
|
||||
|
||||
#include "nsUserInfo.h"
|
||||
#include "nsInternetConfig.h"
|
||||
#include "nsString.h"
|
||||
|
||||
#include <Processes.h>
|
||||
#include <CodeFragments.h>
|
||||
|
||||
//-----------------------------------------------------------
|
||||
nsUserInfo::nsUserInfo()
|
||||
//-----------------------------------------------------------
|
||||
: mInstance(0)
|
||||
, mInitted(PR_FALSE)
|
||||
{
|
||||
NS_INIT_REFCNT();
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------
|
||||
nsUserInfo::~nsUserInfo()
|
||||
//-----------------------------------------------------------
|
||||
{
|
||||
if (mInstance)
|
||||
::ICStop(mInstance);
|
||||
mInstance = 0;
|
||||
}
|
||||
|
||||
NS_IMPL_ISUPPORTS1(nsUserInfo,nsIUserInfo);
|
||||
@ -50,60 +38,42 @@ NS_IMPL_ISUPPORTS1(nsUserInfo,nsIUserInfo);
|
||||
NS_IMETHODIMP
|
||||
nsUserInfo::GetFullname(PRUnichar **aFullname)
|
||||
{
|
||||
*aFullname = nsnull;
|
||||
|
||||
if (NS_FAILED(EnsureInitted()))
|
||||
return NS_ERROR_FAILURE;
|
||||
|
||||
ICAttr dummyAttr;
|
||||
Str255 resultString;
|
||||
long stringLen;
|
||||
OSErr err = ::ICGetPref(mInstance, kICRealName, &dummyAttr, (Ptr)resultString, &stringLen);
|
||||
if (err != noErr) return NS_ERROR_FAILURE;
|
||||
|
||||
*aFullname = PStringToNewUCS2(resultString);
|
||||
return NS_OK;
|
||||
nsInternetConfig ic;
|
||||
char* cName;
|
||||
nsresult result = ic.GetString( kICRealName, &cName );
|
||||
if ( NS_SUCCEEDED ( result ) )
|
||||
{
|
||||
nsString fullName;
|
||||
fullName.AssignWithConversion( cName );
|
||||
*aFullname = fullName.ToNewUnicode();
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsUserInfo::GetEmailAddress(char * *aEmailAddress)
|
||||
{
|
||||
*aEmailAddress = nsnull;
|
||||
|
||||
if (NS_FAILED(EnsureInitted()))
|
||||
return NS_ERROR_FAILURE;
|
||||
|
||||
ICAttr dummyAttr;
|
||||
Str255 resultString;
|
||||
long stringLen;
|
||||
OSErr err = ::ICGetPref(mInstance, kICEmail, &dummyAttr, (Ptr)resultString, &stringLen);
|
||||
if (err != noErr) return NS_ERROR_FAILURE;
|
||||
|
||||
nsCAutoString tempString((const char*)&resultString[1], resultString[0]);
|
||||
*aEmailAddress = tempString.ToNewCString();
|
||||
return NS_OK;
|
||||
nsInternetConfig ic;
|
||||
return ic.GetString( kICEmail, aEmailAddress );
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsUserInfo::GetUsername(char * *aUsername)
|
||||
{
|
||||
*aUsername = nsnull;
|
||||
|
||||
if (NS_FAILED(EnsureInitted()))
|
||||
return NS_ERROR_FAILURE;
|
||||
nsInternetConfig ic;
|
||||
|
||||
ICAttr dummyAttr;
|
||||
Str255 resultString;
|
||||
long stringLen;
|
||||
OSErr err = ::ICGetPref(mInstance, kICMailAccount, &dummyAttr, (Ptr)resultString, &stringLen);
|
||||
if (err != noErr) return NS_ERROR_FAILURE;
|
||||
|
||||
nsCAutoString tempString((const char*)&resultString[1], resultString[0]);
|
||||
char* cString;
|
||||
nsresult rv = ic.GetString( kICEmail, &cString );
|
||||
if ( NS_FAILED( rv ) ) return rv;
|
||||
|
||||
nsCAutoString tempString(cString);
|
||||
nsAllocator::Free( cString );
|
||||
const char* atString = "@";
|
||||
PRInt32 atOffset = tempString.Find(atString);
|
||||
if (atOffset != kNotFound)
|
||||
tempString.Truncate(atOffset);
|
||||
|
||||
|
||||
*aUsername = tempString.ToNewCString();
|
||||
return NS_OK;
|
||||
}
|
||||
@ -112,17 +82,12 @@ NS_IMETHODIMP
|
||||
nsUserInfo::GetDomain(char * *aDomain)
|
||||
{
|
||||
*aDomain = nsnull;
|
||||
|
||||
if (NS_FAILED(EnsureInitted()))
|
||||
return NS_ERROR_FAILURE;
|
||||
|
||||
ICAttr dummyAttr;
|
||||
Str255 resultString;
|
||||
long stringLen;
|
||||
OSErr err = ::ICGetPref(mInstance, kICMailAccount, &dummyAttr, (Ptr)resultString, &stringLen);
|
||||
if (err != noErr) return NS_ERROR_FAILURE;
|
||||
|
||||
nsCAutoString tempString((const char*)&resultString[1], resultString[0]);
|
||||
char* cString;
|
||||
nsInternetConfig ic;
|
||||
nsresult rv = ic.GetString( kICEmail, &cString );
|
||||
if ( NS_FAILED( rv ) ) return rv;
|
||||
nsCAutoString tempString( cString);
|
||||
nsAllocator::Free( cString );
|
||||
const char* atString = "@";
|
||||
PRInt32 atOffset = tempString.Find(atString);
|
||||
if (atOffset != kNotFound)
|
||||
@ -140,54 +105,7 @@ nsUserInfo::GetDomain(char * *aDomain)
|
||||
#pragma mark -
|
||||
|
||||
|
||||
//-----------------------------------------------------------
|
||||
PRUnichar* nsUserInfo::PStringToNewUCS2(ConstStr255Param str)
|
||||
//-----------------------------------------------------------
|
||||
{
|
||||
NS_ConvertASCIItoUCS2 tempString((const char*)&str[1], str[0]);
|
||||
return tempString.ToNewUnicode();
|
||||
}
|
||||
|
||||
|
||||
//-----------------------------------------------------------
|
||||
OSType nsUserInfo::GetAppCreatorCode()
|
||||
//-----------------------------------------------------------
|
||||
{
|
||||
ProcessSerialNumber psn = { 0, kCurrentProcess } ;
|
||||
ProcessInfoRec procInfo;
|
||||
|
||||
procInfo.processInfoLength = sizeof(ProcessInfoRec);
|
||||
procInfo.processName = nsnull;
|
||||
procInfo.processAppSpec = nsnull;
|
||||
|
||||
GetProcessInformation(&psn, &procInfo);
|
||||
return procInfo.processSignature;
|
||||
}
|
||||
|
||||
|
||||
//-----------------------------------------------------------
|
||||
nsresult nsUserInfo::EnsureInitted()
|
||||
//-----------------------------------------------------------
|
||||
{
|
||||
if (mInitted)
|
||||
return (mInstance) ? NS_OK : NS_ERROR_NOT_INITIALIZED;
|
||||
|
||||
mInitted = PR_TRUE; // shows that we've tried to init
|
||||
|
||||
if ((long)ICStart == kUnresolvedCFragSymbolAddress)
|
||||
return NS_ERROR_FAILURE;
|
||||
|
||||
OSType creator = GetAppCreatorCode();
|
||||
ICError err = ::ICStart(&mInstance, creator);
|
||||
if (err != noErr) return NS_ERROR_FAILURE;
|
||||
|
||||
err = ::ICFindConfigFile(mInstance, 0, nsnull);
|
||||
if (err != noErr) {
|
||||
::ICStop(mInstance);
|
||||
mInstance = 0;
|
||||
return NS_ERROR_FAILURE;
|
||||
}
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
|
||||
@ -20,29 +20,17 @@
|
||||
* Contributor(s):
|
||||
*/
|
||||
|
||||
#include "nsUserInfoMac.h"
|
||||
|
||||
#include "nsUserInfo.h"
|
||||
#include "nsInternetConfig.h"
|
||||
#include "nsString.h"
|
||||
|
||||
#include <Processes.h>
|
||||
#include <CodeFragments.h>
|
||||
|
||||
//-----------------------------------------------------------
|
||||
nsUserInfo::nsUserInfo()
|
||||
//-----------------------------------------------------------
|
||||
: mInstance(0)
|
||||
, mInitted(PR_FALSE)
|
||||
{
|
||||
NS_INIT_REFCNT();
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------
|
||||
nsUserInfo::~nsUserInfo()
|
||||
//-----------------------------------------------------------
|
||||
{
|
||||
if (mInstance)
|
||||
::ICStop(mInstance);
|
||||
mInstance = 0;
|
||||
}
|
||||
|
||||
NS_IMPL_ISUPPORTS1(nsUserInfo,nsIUserInfo);
|
||||
@ -50,60 +38,42 @@ NS_IMPL_ISUPPORTS1(nsUserInfo,nsIUserInfo);
|
||||
NS_IMETHODIMP
|
||||
nsUserInfo::GetFullname(PRUnichar **aFullname)
|
||||
{
|
||||
*aFullname = nsnull;
|
||||
|
||||
if (NS_FAILED(EnsureInitted()))
|
||||
return NS_ERROR_FAILURE;
|
||||
|
||||
ICAttr dummyAttr;
|
||||
Str255 resultString;
|
||||
long stringLen;
|
||||
OSErr err = ::ICGetPref(mInstance, kICRealName, &dummyAttr, (Ptr)resultString, &stringLen);
|
||||
if (err != noErr) return NS_ERROR_FAILURE;
|
||||
|
||||
*aFullname = PStringToNewUCS2(resultString);
|
||||
return NS_OK;
|
||||
nsInternetConfig ic;
|
||||
char* cName;
|
||||
nsresult result = ic.GetString( kICRealName, &cName );
|
||||
if ( NS_SUCCEEDED ( result ) )
|
||||
{
|
||||
nsString fullName;
|
||||
fullName.AssignWithConversion( cName );
|
||||
*aFullname = fullName.ToNewUnicode();
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsUserInfo::GetEmailAddress(char * *aEmailAddress)
|
||||
{
|
||||
*aEmailAddress = nsnull;
|
||||
|
||||
if (NS_FAILED(EnsureInitted()))
|
||||
return NS_ERROR_FAILURE;
|
||||
|
||||
ICAttr dummyAttr;
|
||||
Str255 resultString;
|
||||
long stringLen;
|
||||
OSErr err = ::ICGetPref(mInstance, kICEmail, &dummyAttr, (Ptr)resultString, &stringLen);
|
||||
if (err != noErr) return NS_ERROR_FAILURE;
|
||||
|
||||
nsCAutoString tempString((const char*)&resultString[1], resultString[0]);
|
||||
*aEmailAddress = tempString.ToNewCString();
|
||||
return NS_OK;
|
||||
nsInternetConfig ic;
|
||||
return ic.GetString( kICEmail, aEmailAddress );
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsUserInfo::GetUsername(char * *aUsername)
|
||||
{
|
||||
*aUsername = nsnull;
|
||||
|
||||
if (NS_FAILED(EnsureInitted()))
|
||||
return NS_ERROR_FAILURE;
|
||||
nsInternetConfig ic;
|
||||
|
||||
ICAttr dummyAttr;
|
||||
Str255 resultString;
|
||||
long stringLen;
|
||||
OSErr err = ::ICGetPref(mInstance, kICMailAccount, &dummyAttr, (Ptr)resultString, &stringLen);
|
||||
if (err != noErr) return NS_ERROR_FAILURE;
|
||||
|
||||
nsCAutoString tempString((const char*)&resultString[1], resultString[0]);
|
||||
char* cString;
|
||||
nsresult rv = ic.GetString( kICEmail, &cString );
|
||||
if ( NS_FAILED( rv ) ) return rv;
|
||||
|
||||
nsCAutoString tempString(cString);
|
||||
nsAllocator::Free( cString );
|
||||
const char* atString = "@";
|
||||
PRInt32 atOffset = tempString.Find(atString);
|
||||
if (atOffset != kNotFound)
|
||||
tempString.Truncate(atOffset);
|
||||
|
||||
|
||||
*aUsername = tempString.ToNewCString();
|
||||
return NS_OK;
|
||||
}
|
||||
@ -112,17 +82,12 @@ NS_IMETHODIMP
|
||||
nsUserInfo::GetDomain(char * *aDomain)
|
||||
{
|
||||
*aDomain = nsnull;
|
||||
|
||||
if (NS_FAILED(EnsureInitted()))
|
||||
return NS_ERROR_FAILURE;
|
||||
|
||||
ICAttr dummyAttr;
|
||||
Str255 resultString;
|
||||
long stringLen;
|
||||
OSErr err = ::ICGetPref(mInstance, kICMailAccount, &dummyAttr, (Ptr)resultString, &stringLen);
|
||||
if (err != noErr) return NS_ERROR_FAILURE;
|
||||
|
||||
nsCAutoString tempString((const char*)&resultString[1], resultString[0]);
|
||||
char* cString;
|
||||
nsInternetConfig ic;
|
||||
nsresult rv = ic.GetString( kICEmail, &cString );
|
||||
if ( NS_FAILED( rv ) ) return rv;
|
||||
nsCAutoString tempString( cString);
|
||||
nsAllocator::Free( cString );
|
||||
const char* atString = "@";
|
||||
PRInt32 atOffset = tempString.Find(atString);
|
||||
if (atOffset != kNotFound)
|
||||
@ -140,54 +105,7 @@ nsUserInfo::GetDomain(char * *aDomain)
|
||||
#pragma mark -
|
||||
|
||||
|
||||
//-----------------------------------------------------------
|
||||
PRUnichar* nsUserInfo::PStringToNewUCS2(ConstStr255Param str)
|
||||
//-----------------------------------------------------------
|
||||
{
|
||||
NS_ConvertASCIItoUCS2 tempString((const char*)&str[1], str[0]);
|
||||
return tempString.ToNewUnicode();
|
||||
}
|
||||
|
||||
|
||||
//-----------------------------------------------------------
|
||||
OSType nsUserInfo::GetAppCreatorCode()
|
||||
//-----------------------------------------------------------
|
||||
{
|
||||
ProcessSerialNumber psn = { 0, kCurrentProcess } ;
|
||||
ProcessInfoRec procInfo;
|
||||
|
||||
procInfo.processInfoLength = sizeof(ProcessInfoRec);
|
||||
procInfo.processName = nsnull;
|
||||
procInfo.processAppSpec = nsnull;
|
||||
|
||||
GetProcessInformation(&psn, &procInfo);
|
||||
return procInfo.processSignature;
|
||||
}
|
||||
|
||||
|
||||
//-----------------------------------------------------------
|
||||
nsresult nsUserInfo::EnsureInitted()
|
||||
//-----------------------------------------------------------
|
||||
{
|
||||
if (mInitted)
|
||||
return (mInstance) ? NS_OK : NS_ERROR_NOT_INITIALIZED;
|
||||
|
||||
mInitted = PR_TRUE; // shows that we've tried to init
|
||||
|
||||
if ((long)ICStart == kUnresolvedCFragSymbolAddress)
|
||||
return NS_ERROR_FAILURE;
|
||||
|
||||
OSType creator = GetAppCreatorCode();
|
||||
ICError err = ::ICStart(&mInstance, creator);
|
||||
if (err != noErr) return NS_ERROR_FAILURE;
|
||||
|
||||
err = ::ICFindConfigFile(mInstance, 0, nsnull);
|
||||
if (err != noErr) {
|
||||
::ICStop(mInstance);
|
||||
mInstance = 0;
|
||||
return NS_ERROR_FAILURE;
|
||||
}
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user