0
0
mirror of https://github.com/thunderbird/thunderbird-android.git synced 2024-09-20 04:02:14 +02:00

Add parameter to allow exporting passwords

This commit is contained in:
cketti 2024-09-02 16:38:11 +02:00
parent ce1943e8cd
commit 5f8a8fbcc9
2 changed files with 23 additions and 9 deletions

View File

@ -32,7 +32,7 @@ class SettingsExporter(
fun exportToUri(includeGlobals: Boolean, accountUuids: Set<String>, uri: Uri) {
try {
contentResolver.openOutputStream(uri, "wt")!!.use { outputStream ->
exportPreferences(outputStream, includeGlobals, accountUuids)
exportPreferences(outputStream, includeGlobals, accountUuids, includePasswords = false)
}
} catch (e: Exception) {
throw SettingsImportExportException(e)
@ -40,7 +40,12 @@ class SettingsExporter(
}
@Throws(SettingsImportExportException::class)
fun exportPreferences(outputStream: OutputStream, includeGlobals: Boolean, accountUuids: Set<String>) {
fun exportPreferences(
outputStream: OutputStream,
includeGlobals: Boolean,
accountUuids: Set<String>,
includePasswords: Boolean,
) {
updateNotificationSettings(accountUuids)
try {
@ -70,7 +75,7 @@ class SettingsExporter(
serializer.startTag(null, ACCOUNTS_ELEMENT)
for (accountUuid in accountUuids) {
preferences.getAccount(accountUuid)?.let { account ->
writeAccount(serializer, account, prefs)
writeAccount(serializer, account, prefs, includePasswords)
}
}
serializer.endTag(null, ACCOUNTS_ELEMENT)
@ -116,7 +121,12 @@ class SettingsExporter(
}
}
private fun writeAccount(serializer: XmlSerializer, account: Account, prefs: Map<String, Any>) {
private fun writeAccount(
serializer: XmlSerializer,
account: Account,
prefs: Map<String, Any>,
includePasswords: Boolean,
) {
val identities = mutableSetOf<Int>()
val accountUuid = account.uuid
@ -143,8 +153,10 @@ class SettingsExporter(
writeElement(serializer, AUTHENTICATION_TYPE_ELEMENT, incoming.authenticationType.name)
writeElement(serializer, USERNAME_ELEMENT, incoming.username)
writeElement(serializer, CLIENT_CERTIFICATE_ALIAS_ELEMENT, incoming.clientCertificateAlias)
// XXX For now we don't export the password
// writeElement(serializer, PASSWORD_ELEMENT, incoming.password);
if (includePasswords && !incoming.password.isNullOrEmpty()) {
writeElement(serializer, PASSWORD_ELEMENT, incoming.password)
}
var extras = incoming.extra
if (!extras.isNullOrEmpty()) {
@ -169,8 +181,10 @@ class SettingsExporter(
writeElement(serializer, AUTHENTICATION_TYPE_ELEMENT, outgoing.authenticationType.name)
writeElement(serializer, USERNAME_ELEMENT, outgoing.username)
writeElement(serializer, CLIENT_CERTIFICATE_ALIAS_ELEMENT, outgoing.clientCertificateAlias)
// XXX For now we don't export the password
// writeElement(serializer, PASSWORD_ELEMENT, outgoing.password);
if (includePasswords && !outgoing.password.isNullOrEmpty()) {
writeElement(serializer, PASSWORD_ELEMENT, outgoing.password)
}
extras = outgoing.extra
if (!extras.isNullOrEmpty()) {

View File

@ -65,7 +65,7 @@ class SettingsExporterTest : K9RobolectricTest() {
private fun exportPreferences(globalSettings: Boolean, accounts: Set<String>): Document {
return ByteArrayOutputStream().use { outputStream ->
settingsExporter.exportPreferences(outputStream, globalSettings, accounts)
settingsExporter.exportPreferences(outputStream, globalSettings, accounts, includePasswords = false)
parseXml(outputStream.toByteArray())
}
}