NS_IMETHODIMP nsSeamonkeyProfileMigrator::GetMigrateData(const PRUnichar* aProfile, PRBool aReplace, PRUint16* aResult) { *aResult = 0; if (!mSourceProfile) { GetSourceProfile(aProfile); if (!mSourceProfile) return NS_ERROR_FILE_NOT_FOUND; } MigrationData data[] = { { ToNewUnicode(FILE_NAME_PREFS), nsIBrowserProfileMigrator::SETTINGS, PR_TRUE }, { ToNewUnicode(FILE_NAME_USER_PREFS), nsIBrowserProfileMigrator::SETTINGS, PR_TRUE }, { ToNewUnicode(FILE_NAME_COOKIES), nsIBrowserProfileMigrator::COOKIES, PR_FALSE }, { ToNewUnicode(FILE_NAME_HISTORY), nsIBrowserProfileMigrator::HISTORY, PR_TRUE }, { ToNewUnicode(FILE_NAME_BOOKMARKS), nsIBrowserProfileMigrator::BOOKMARKS, PR_FALSE }, { ToNewUnicode(FILE_NAME_DOWNLOADS), nsIBrowserProfileMigrator::OTHERDATA, PR_TRUE }, { ToNewUnicode(FILE_NAME_MIMETYPES), nsIBrowserProfileMigrator::OTHERDATA, PR_TRUE } }; // Frees file name strings allocated above. GetMigrateDataFromArray(data, sizeof(data)/sizeof(MigrationData), aReplace, mSourceProfile, aResult); // Now locate passwords nsCString signonsFileName; GetSignonFileName(aReplace, getter_Copies(signonsFileName)); if (!signonsFileName.IsEmpty()) { NS_ConvertASCIItoUTF16 fileName(signonsFileName); nsCOMPtr<nsIFile> sourcePasswordsFile; mSourceProfile->Clone(getter_AddRefs(sourcePasswordsFile)); sourcePasswordsFile->Append(fileName); PRBool exists; sourcePasswordsFile->Exists(&exists); if (exists) *aResult |= nsIBrowserProfileMigrator::PASSWORDS; } return NS_OK; }
nsresult nsSeamonkeyProfileMigrator::CopyPasswords(PRBool aReplace) { nsresult rv; nsCString signonsFileName; GetSignonFileName(aReplace, getter_Copies(signonsFileName)); if (signonsFileName.IsEmpty()) return NS_ERROR_FILE_NOT_FOUND; NS_ConvertASCIItoUTF16 fileName(signonsFileName); if (aReplace) rv = CopyFile(fileName, fileName); else { // Get the password manager, which is the destination for the passwords // being migrated. Also create a new instance of the legacy password // storage component, which we'll use to slurp in the signons from // Seamonkey's signons.txt. nsCOMPtr<nsILoginManager> pwmgr( do_GetService("@mozilla.org/login-manager;1")); nsCOMPtr<nsILoginManagerStorage> importer( do_CreateInstance("@mozilla.org/login-manager/storage/legacy;1")); nsCOMPtr<nsIFile> signonsFile; mSourceProfile->Clone(getter_AddRefs(signonsFile)); signonsFile->Append(fileName); importer->InitWithFile(signonsFile, nsnull); PRUint32 count; nsILoginInfo **logins; rv = importer->GetAllLogins(&count, &logins); NS_ENSURE_SUCCESS(rv, rv); for (PRUint32 i = 0; i < count; i++) { pwmgr->AddLogin(logins[i]); } NS_FREE_XPCOM_ISUPPORTS_POINTER_ARRAY(count, logins); PRUnichar **hostnames; rv = importer->GetAllDisabledHosts(&count, &hostnames); NS_ENSURE_SUCCESS(rv, rv); for (PRUint32 i = 0; i < count; i++) { pwmgr->SetLoginSavingEnabled(nsDependentString(hostnames[i]), PR_FALSE); } NS_FREE_XPCOM_ALLOCATED_POINTER_ARRAY(count, hostnames); } return rv; }
nsresult nsSeamonkeyProfileMigrator::CopyPasswords(PRBool aReplace) { nsresult rv; nsXPIDLCString signonsFileName; GetSignonFileName(aReplace, getter_Copies(signonsFileName)); if (signonsFileName.IsEmpty()) return NS_ERROR_FILE_NOT_FOUND; nsAutoString fileName; fileName.AssignWithConversion(signonsFileName); if (aReplace) rv = CopyFile(fileName, fileName); else { nsCOMPtr<nsIFile> seamonkeyPasswordsFile; mSourceProfile->Clone(getter_AddRefs(seamonkeyPasswordsFile)); seamonkeyPasswordsFile->Append(fileName); nsCOMPtr<nsIPasswordManagerInternal> pmi(do_GetService("@mozilla.org/passwordmanager;1")); rv = pmi->ReadPasswords(seamonkeyPasswordsFile); } return rv; }
NS_IMETHODIMP nsThunderbirdProfileMigrator::GetMigrateData(const PRUnichar* aProfile, bool aReplace, uint16_t* aResult) { *aResult = 0; if (!mSourceProfile) { GetSourceProfile(aProfile); if (!mSourceProfile) return NS_ERROR_FILE_NOT_FOUND; } // migration fields for things we always migrate *aResult = nsISuiteProfileMigrator::ACCOUNT_SETTINGS | nsISuiteProfileMigrator::MAILDATA | nsISuiteProfileMigrator::NEWSDATA | nsISuiteProfileMigrator::ADDRESSBOOK_DATA; MigrationData data[] = { { FILE_NAME_PREFS, nsISuiteProfileMigrator::SETTINGS, true }, { FILE_NAME_USER_PREFS, nsISuiteProfileMigrator::SETTINGS, true }, { FILE_NAME_COOKIES, nsISuiteProfileMigrator::COOKIES, false }, { FILE_NAME_HISTORY, nsISuiteProfileMigrator::HISTORY, true }, { FILE_NAME_DOWNLOADS, nsISuiteProfileMigrator::OTHERDATA, true }, { FILE_NAME_MIMETYPES, nsISuiteProfileMigrator::OTHERDATA, true }, { FILE_NAME_JUNKTRAINING, nsISuiteProfileMigrator::JUNKTRAINING, true } }; GetMigrateDataFromArray(data, sizeof(data)/sizeof(MigrationData), aReplace, mSourceProfile, aResult); // Now locate passwords nsCString signonsFileName; GetSignonFileName(aReplace, getter_Copies(signonsFileName)); if (!signonsFileName.IsEmpty()) { nsAutoString fileName; fileName.Assign(NS_ConvertUTF8toUTF16(signonsFileName)); nsCOMPtr<nsIFile> sourcePasswordsFile; mSourceProfile->Clone(getter_AddRefs(sourcePasswordsFile)); sourcePasswordsFile->Append(fileName); bool exists; sourcePasswordsFile->Exists(&exists); if (exists) *aResult |= nsISuiteProfileMigrator::PASSWORDS; } return NS_OK; }
NS_IMETHODIMP nsSeamonkeyProfileMigrator::GetMigrateData(const PRUnichar* aProfile, bool aReplace, PRUint16* aResult) { *aResult = 0; if (!mSourceProfile) { GetSourceProfile(aProfile); if (!mSourceProfile) return NS_ERROR_FILE_NOT_FOUND; } // migration fields for things we always migrate *aResult = nsISuiteProfileMigrator::ACCOUNT_SETTINGS | nsISuiteProfileMigrator::MAILDATA | nsISuiteProfileMigrator::NEWSDATA | nsISuiteProfileMigrator::ADDRESSBOOK_DATA; MigrationData data[] = { { FILE_NAME_PREFS, nsISuiteProfileMigrator::SETTINGS, PR_TRUE }, { FILE_NAME_USER_PREFS, nsISuiteProfileMigrator::SETTINGS, PR_TRUE }, { FILE_NAME_COOKIES, nsISuiteProfileMigrator::COOKIES, PR_FALSE }, { FILE_NAME_HISTORY, nsISuiteProfileMigrator::HISTORY, PR_TRUE }, { FILE_NAME_BOOKMARKS, nsISuiteProfileMigrator::BOOKMARKS, PR_FALSE }, { FILE_NAME_DOWNLOADS, nsISuiteProfileMigrator::OTHERDATA, PR_TRUE }, { FILE_NAME_MIMETYPES, nsISuiteProfileMigrator::OTHERDATA, PR_TRUE }, { FILE_NAME_JUNKTRAINING, nsISuiteProfileMigrator::JUNKTRAINING, PR_TRUE } }; GetMigrateDataFromArray(data, sizeof(data)/sizeof(MigrationData), aReplace, mSourceProfile, aResult); // Now locate passwords nsCString signonsFileName; GetSignonFileName(aReplace, getter_Copies(signonsFileName)); if (!signonsFileName.IsEmpty()) { nsCOMPtr<nsIFile> sourcePasswordsFile; mSourceProfile->Clone(getter_AddRefs(sourcePasswordsFile)); sourcePasswordsFile->AppendNative(signonsFileName); bool exists; sourcePasswordsFile->Exists(&exists); if (exists) *aResult |= nsISuiteProfileMigrator::PASSWORDS; } // Now see if the homepages have anything to migrate. if (GetSourceHasHomePageURL()) *aResult |= nsISuiteProfileMigrator::HOMEPAGEDATA; return NS_OK; }