diff --git a/profile/pref-migrator/src/nsPrefMigration.cpp b/profile/pref-migrator/src/nsPrefMigration.cpp index c1b275078572..258562231774 100644 --- a/profile/pref-migrator/src/nsPrefMigration.cpp +++ b/profile/pref-migrator/src/nsPrefMigration.cpp @@ -55,7 +55,7 @@ #include "prio.h" #include "prerror.h" #include "prmem.h" -#include "nsIPref.h" +#include "nsIPrefService.h" #include "plstr.h" #include "prprf.h" #include "nsXPIDLString.h" @@ -284,12 +284,12 @@ nsPrefMigration::getPrefService() // get the prefs service nsresult rv = NS_OK; - nsCOMPtr pIMyService(do_GetService(NS_PREF_CONTRACTID, &rv)); + nsCOMPtr pIMyService(do_GetService(NS_PREFSERVICE_CONTRACTID, &rv)); if(NS_FAILED(rv)) return rv; - return NS_GetProxyForObject(NS_PROXY_TO_MAIN_THREAD, NS_GET_IID(nsIPref), + return NS_GetProxyForObject(NS_PROXY_TO_MAIN_THREAD, NS_GET_IID(nsIPrefBranch), pIMyService, NS_PROXY_SYNC, - getter_AddRefs(m_prefs)); + getter_AddRefs(m_prefBranch)); } @@ -635,11 +635,13 @@ nsPrefMigration::ProcessPrefsCallback(const char* oldProfilePathStr, const char rv = m_prefsFile->AppendNative(NS_LITERAL_CSTRING(PREF_FILE_NAME_IN_4x)); if (NS_FAILED(rv)) return rv; + nsCOMPtr psvc(do_QueryInterface(m_prefBranch)); + //Clear the prefs in case a previous set was read in. - m_prefs->ResetPrefs(); + psvc->ResetPrefs(); //Now read the prefs from the prefs file in the system directory - m_prefs->ReadUserPrefs(m_prefsFile); + psvc->ReadUserPrefs(m_prefsFile); // // Start computing the sizes required for migration @@ -647,11 +649,12 @@ nsPrefMigration::ProcessPrefsCallback(const char* oldProfilePathStr, const char rv = GetSizes(oldProfileSpec, PR_FALSE, &totalProfileSize); profileDrive = newProfileSpec.GetDiskSpaceAvailable(); - rv = m_prefs->GetIntPref(PREF_MAIL_SERVER_TYPE, &serverType); + rv = m_prefBranch->GetIntPref(PREF_MAIL_SERVER_TYPE, &serverType); if (NS_FAILED(rv)) return rv; // get the migration mode for mail - rv = m_prefs->GetBoolPref(PREF_MIGRATION_MODE_FOR_MAIL, ©MailFileInMigration); + rv = m_prefBranch->GetBoolPref(PREF_MIGRATION_MODE_FOR_MAIL, + ©MailFileInMigration); if (NS_FAILED(rv)) return rv; @@ -871,11 +874,13 @@ nsPrefMigration::ProcessPrefsCallback(const char* oldProfilePathStr, const char NS_FileSpecToIFile(&newPOPMailPathSpec, getter_AddRefs(newPOPMailPathFile)); - rv = m_prefs->SetFileXPref(PREF_MAIL_DIRECTORY, newPOPMailPathFile); + rv = m_prefBranch->SetComplexValue(PREF_MAIL_DIRECTORY, + NS_GET_IID(nsILocalFile), + newPOPMailPathFile); if (NS_FAILED(rv)) return rv; } - m_prefs->CopyCharPref(PREF_NETWORK_HOSTS_POP_SERVER, &popServerName); + m_prefBranch->GetCharPref(PREF_NETWORK_HOSTS_POP_SERVER, &popServerName); nsCAutoString popServerNamewithoutPort(popServerName); PRInt32 colonPos = popServerNamewithoutPort.FindChar(':'); @@ -926,7 +931,9 @@ nsPrefMigration::ProcessPrefsCallback(const char* oldProfilePathStr, const char NS_FileSpecToIFile(&newIMAPLocalMailPathSpec, getter_AddRefs(newIMAPLocalMailPathFile)); - rv = m_prefs->SetFileXPref(PREF_MAIL_DIRECTORY, newIMAPLocalMailPathFile); + rv = m_prefBranch->SetComplexValue(PREF_MAIL_DIRECTORY, + NS_GET_IID(nsILocalFile), + newIMAPLocalMailPathFile); if (NS_FAILED(rv)) return rv; } @@ -966,7 +973,9 @@ nsPrefMigration::ProcessPrefsCallback(const char* oldProfilePathStr, const char NS_FileSpecToIFile(&newIMAPMailPathSpec, getter_AddRefs(newIMAPMailPathFile)); - rv = m_prefs->SetFileXPref(PREF_MAIL_IMAP_ROOT_DIR, newIMAPMailPathFile); + rv = m_prefBranch->SetComplexValue(PREF_MAIL_IMAP_ROOT_DIR, + NS_GET_IID(nsILocalFile), + newIMAPMailPathFile); if (NS_FAILED(rv)) return rv; } } @@ -981,7 +990,9 @@ nsPrefMigration::ProcessPrefsCallback(const char* oldProfilePathStr, const char NS_FileSpecToIFile(&oldIMAPLocalMailPathSpec, getter_AddRefs(oldIMAPLocalMailPathFile)); - rv = m_prefs->SetFileXPref(PREF_MAIL_DIRECTORY, oldIMAPLocalMailPathFile); + rv = m_prefBranch->SetComplexValue(PREF_MAIL_DIRECTORY, + NS_GET_IID(nsILocalFile), + oldIMAPLocalMailPathFile); if (NS_FAILED(rv)) return rv; } { @@ -993,7 +1004,9 @@ nsPrefMigration::ProcessPrefsCallback(const char* oldProfilePathStr, const char NS_FileSpecToIFile(&oldIMAPMailPathSpec, getter_AddRefs(oldIMAPMailPathFile)); - rv = m_prefs->SetFileXPref(PREF_MAIL_IMAP_ROOT_DIR, oldIMAPMailPathFile); + rv = m_prefBranch->SetComplexValue(PREF_MAIL_IMAP_ROOT_DIR, + NS_GET_IID(nsILocalFile), + oldIMAPMailPathFile); if (NS_FAILED(rv)) return rv; } } @@ -1028,7 +1041,9 @@ nsPrefMigration::ProcessPrefsCallback(const char* oldProfilePathStr, const char NS_FileSpecToIFile(&newMOVEMAILPathSpec, getter_AddRefs(newMOVEMAILPathFile)); - rv = m_prefs->SetFileXPref(PREF_MAIL_DIRECTORY, newMOVEMAILPathFile); + rv = m_prefBranch->SetComplexValue(PREF_MAIL_DIRECTORY, + NS_GET_IID(nsILocalFile), + newMOVEMAILPathFile); if (NS_FAILED(rv)) return rv; } @@ -1079,7 +1094,9 @@ nsPrefMigration::ProcessPrefsCallback(const char* oldProfilePathStr, const char NS_FileSpecToIFile(&newNewsPathSpec, getter_AddRefs(newNewsPathFile)); - rv = m_prefs->SetFileXPref(PREF_NEWS_DIRECTORY, newNewsPathFile); + rv = m_prefBranch->SetComplexValue(PREF_NEWS_DIRECTORY, + NS_GET_IID(nsILocalFile), + newNewsPathFile); if (NS_FAILED(rv)) return rv; } @@ -1192,7 +1209,7 @@ nsPrefMigration::ProcessPrefsCallback(const char* oldProfilePathStr, const char // Don't inherit the 4.x cache file location for mozilla! // The cache pref later gets set with a default in nsAppRunner::InitCachePrefs(). - m_prefs->ClearUserPref(PREF_BROWSER_CACHE_DIRECTORY); + m_prefBranch->ClearUserPref(PREF_BROWSER_CACHE_DIRECTORY); rv = DoSpecialUpdates(newProfilePath); if (NS_FAILED(rv)) return rv; @@ -1206,9 +1223,9 @@ nsPrefMigration::ProcessPrefsCallback(const char* oldProfilePathStr, const char rv = newPrefsFile->AppendNative(NS_LITERAL_CSTRING(PREF_FILE_NAME_IN_5x)); if (NS_FAILED(rv)) return rv; - rv=m_prefs->SavePrefFile(newPrefsFile); + rv=psvc->SavePrefFile(newPrefsFile); if (NS_FAILED(rv)) return rv; - rv=m_prefs->ResetPrefs(); + rv=psvc->ResetPrefs(); if (NS_FAILED(rv)) return rv; PRBool flagExists = PR_FALSE; @@ -1316,7 +1333,7 @@ nsPrefMigration::GetDirFromPref(nsIFileSpec * oldProfilePath, nsIFileSpec * newP nsCOMPtr oldPrefPath; nsXPIDLCString oldPrefPathStr; - rv = m_prefs->CopyCharPref(pref,getter_Copies(oldPrefPathStr)); + rv = m_prefBranch->GetCharPref(pref, getter_Copies(oldPrefPathStr)); if (NS_FAILED(rv)) return rv; // the default on the mac was "". doing GetFileXPref on that would return @@ -1327,7 +1344,8 @@ nsPrefMigration::GetDirFromPref(nsIFileSpec * oldProfilePath, nsIFileSpec * newP if (NS_FAILED(rv)) return rv; nsCOMPtr oldPrefPathFile; - rv = m_prefs->GetFileXPref(pref, getter_AddRefs(oldPrefPathFile)); + rv = m_prefBranch->GetComplexValue(pref, NS_GET_IID(nsILocalFile), + getter_AddRefs(oldPrefPathFile)); if (NS_FAILED(rv)) return rv; // convert nsILocalFile to nsIFileSpec @@ -1966,7 +1984,7 @@ nsPrefMigration::DoSpecialUpdates(nsIFileSpec * profilePath) if (NS_FAILED(rv)) return rv; /* Create the new mail directory from the setting in prefs.js or a default */ - rv = m_prefs->GetIntPref(PREF_MAIL_SERVER_TYPE, &serverType); + rv = m_prefBranch->GetIntPref(PREF_MAIL_SERVER_TYPE, &serverType); if (NS_FAILED(rv)) return rv; if (serverType == POP_4X_MAIL_TYPE) { rv = RenameAndMove4xPopFilterFile(profilePath); @@ -2020,7 +2038,7 @@ nsPrefMigration::RenameAndMove4xPopFile(nsIFileSpec * profilePath, const char *f nsFileSpec migratedPopDirectory; rv = profilePath->GetFileSpec(&migratedPopDirectory); migratedPopDirectory += NEW_MAIL_DIR_NAME; - m_prefs->CopyCharPref(PREF_NETWORK_HOSTS_POP_SERVER, &popServerName); + m_prefBranch->GetCharPref(PREF_NETWORK_HOSTS_POP_SERVER, &popServerName); migratedPopDirectory += popServerName; PR_FREEIF(popServerName); @@ -2089,7 +2107,7 @@ nsPrefMigration::RenameAndMove4xImapFilterFiles(nsIFileSpec * profilePath) nsresult rv; char *hostList=nsnull; - rv = m_prefs->CopyCharPref(PREF_4X_NETWORK_HOSTS_IMAP_SERVER, &hostList); + rv = m_prefBranch->GetCharPref(PREF_4X_NETWORK_HOSTS_IMAP_SERVER, &hostList); if (NS_FAILED(rv)) return rv; if (!hostList || !*hostList) return NS_OK; @@ -2154,7 +2172,9 @@ nsPrefMigration::GetPremigratedFilePref(const char *pref_name, nsIFileSpec **pat #ifdef DEBUG_seth printf("getting %s (into a nsFileSpec)\n", premigration_pref); #endif - rv = m_prefs->GetFilePref((const char *)premigration_pref, path); + rv = m_prefBranch->GetComplexValue((const char *)premigration_pref, + NS_GET_IID(nsIFileSpec), + (void **)path); return rv; } @@ -2192,8 +2212,9 @@ nsPrefMigration::SetPremigratedFilePref(const char *pref_name, nsIFileSpec *path NS_ASSERTION(exists, "the path does not exist. see bug #55444"); if (!exists) return NS_OK; - rv = m_prefs->SetFileXPref((const char *)premigration_pref, pathFile); - return rv; + rv = m_prefBranch->SetComplexValue((const char *)premigration_pref, + NS_GET_IID(nsILocalFile), pathFile); + return rv; } nsresult @@ -2334,7 +2355,7 @@ ConvertStringToUTF8(const char* aCharset, const char* inString, char** outString } nsresult -ConvertPrefToUTF8(const char *prefname, nsIPref *prefs, const char* charSet) +ConvertPrefToUTF8(const char *prefname, nsIPrefBranch *prefs, const char* charSet) { nsresult rv; @@ -2345,7 +2366,7 @@ ConvertPrefToUTF8(const char *prefname, nsIPref *prefs, const char* charSet) nsXPIDLCString prefval; - rv = prefs->CopyCharPref(prefname, getter_Copies(prefval)); + rv = prefs->GetCharPref(prefname, getter_Copies(prefval)); if (NS_FAILED(rv)) return rv; if (prefval.IsEmpty()) { @@ -2384,10 +2405,8 @@ static PRBool charEndsWith(const char *str, const char *endStr) } static -void fontPrefEnumerationFunction(const char *name, void *data) +void fontPrefEnumerationFunction(const char *name, nsCStringArray *arr) { - nsCStringArray *arr; - arr = (nsCStringArray *)data; #ifdef DEBUG_UTF8_CONVERSION printf("fontPrefEnumerationFunction: %s\n", name); #endif @@ -2399,10 +2418,8 @@ void fontPrefEnumerationFunction(const char *name, void *data) } static -void ldapPrefEnumerationFunction(const char *name, void *data) +void ldapPrefEnumerationFunction(const char *name, nsCStringArray *arr) { - nsCStringArray *arr; - arr = (nsCStringArray *)data; #ifdef DEBUG_UTF8_CONVERSION printf("ldapPrefEnumerationFunction: %s\n", name); #endif @@ -2415,10 +2432,8 @@ void ldapPrefEnumerationFunction(const char *name, void *data) } static -void vCardPrefEnumerationFunction(const char *name, void *data) +void vCardPrefEnumerationFunction(const char *name, nsCStringArray *arr) { - nsCStringArray *arr; - arr = (nsCStringArray *)data; #ifdef DEBUG_UTF8_CONVERSION printf("vCardPrefEnumerationFunction: %s\n", name); #endif @@ -2430,7 +2445,7 @@ void vCardPrefEnumerationFunction(const char *name, void *data) typedef struct { - nsIPref *prefs; + nsIPrefBranch *prefs; const char* charSet; } PrefEnumerationClosure; @@ -2451,7 +2466,7 @@ nsPrefConverter::ConvertPrefsToUTF8() nsCStringArray prefsToMigrate; - nsCOMPtr prefs(do_GetService(NS_PREF_CONTRACTID, &rv)); + nsCOMPtr prefs(do_GetService(NS_PREFSERVICE_CONTRACTID, &rv)); if(NS_FAILED(rv)) return rv; if (!prefs) return NS_ERROR_FAILURE; @@ -2465,9 +2480,29 @@ nsPrefConverter::ConvertPrefsToUTF8() prefsToMigrate.AppendCString(prefnameStr); } - prefs->EnumerateChildren("intl.font",fontPrefEnumerationFunction,(void *)(&prefsToMigrate)); - prefs->EnumerateChildren("ldap_2.servers",ldapPrefEnumerationFunction,(void *)(&prefsToMigrate)); - prefs->EnumerateChildren("mail.identity.vcard",vCardPrefEnumerationFunction,(void *)(&prefsToMigrate)); + PRUint32 count, i; + char **childArray; + + if (NS_SUCCEEDED(prefs->GetChildList("intl.font.", &count, &childArray))) { + for (i = 0; i < count; i++) + fontPrefEnumerationFunction(childArray[i], &prefsToMigrate); + + NS_FREE_XPCOM_ALLOCATED_POINTER_ARRAY(count, childArray); + } + + if (NS_SUCCEEDED(prefs->GetChildList("ldap_2.servers.", &count, &childArray))) { + for (i = 0; i < count; i++) + ldapPrefEnumerationFunction(childArray[i], &prefsToMigrate); + + NS_FREE_XPCOM_ALLOCATED_POINTER_ARRAY(count, childArray); + } + + if (NS_SUCCEEDED(prefs->GetChildList("mail.identity.vcard.", &count, &childArray))) { + for (i = 0; i < count; i++) + vCardPrefEnumerationFunction(childArray[i], &prefsToMigrate); + + NS_FREE_XPCOM_ALLOCATED_POINTER_ARRAY(count, childArray); + } PrefEnumerationClosure closure; @@ -2476,7 +2511,7 @@ nsPrefConverter::ConvertPrefsToUTF8() prefsToMigrate.EnumerateForwards((nsCStringArrayEnumFunc)convertPref, (void *)(&closure)); - rv = prefs->SetBoolPref("prefs.converted-to-utf8",PR_TRUE); + rv = prefs->SetBoolPref("prefs.converted-to-utf8", PR_TRUE); return NS_OK; } diff --git a/profile/pref-migrator/src/nsPrefMigration.h b/profile/pref-migrator/src/nsPrefMigration.h index e40190a06c07..fe6dbae5ef83 100644 --- a/profile/pref-migrator/src/nsPrefMigration.h +++ b/profile/pref-migrator/src/nsPrefMigration.h @@ -43,7 +43,7 @@ #include "nsIFactory.h" #include "nsISupports.h" #include "nsFileSpec.h" -#include "nsIPref.h" +#include "nsIPrefBranch.h" #include "nsIServiceManager.h" #include "nsCOMPtr.h" #include "nsIDOMWindowInternal.h" @@ -176,7 +176,7 @@ class nsPrefMigration: public nsIPrefMigration nsresult getPrefService(); - nsCOMPtr m_prefs; + nsCOMPtr m_prefBranch; nsCOMPtr m_prefsFile; nsCOMPtr m_parentWindow; nsCOMPtr mPMProgressWindow;