Make CipherView.toAutofillCipherProvider public and add tests (#835)

This commit is contained in:
Brian Yencho
2024-01-28 16:56:09 -06:00
committed by Álison Fernandes
parent 5b854c17b7
commit 8d81b160f9
3 changed files with 144 additions and 37 deletions

View File

@@ -5,16 +5,14 @@ import android.content.Intent
import com.bitwarden.core.CipherView
import com.x8bit.bitwarden.data.autofill.builder.FilledDataBuilder
import com.x8bit.bitwarden.data.autofill.builder.FilledDataBuilderImpl
import com.x8bit.bitwarden.data.autofill.model.AutofillCipher
import com.x8bit.bitwarden.data.autofill.model.AutofillRequest
import com.x8bit.bitwarden.data.autofill.parser.AutofillParser
import com.x8bit.bitwarden.data.autofill.provider.AutofillCipherProvider
import com.x8bit.bitwarden.data.autofill.util.buildDataset
import com.x8bit.bitwarden.data.autofill.util.createAutofillSelectionResultIntent
import com.x8bit.bitwarden.data.autofill.util.getAutofillAssistStructureOrNull
import com.x8bit.bitwarden.data.autofill.util.toAutofillAppInfo
import com.x8bit.bitwarden.data.autofill.util.toAutofillCipherProvider
import com.x8bit.bitwarden.data.platform.manager.dispatcher.DispatcherManager
import com.x8bit.bitwarden.data.platform.util.subtitle
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.launch
@@ -87,37 +85,3 @@ private fun Activity.setResultAndFinish(resultIntent: Intent) {
this.setResult(Activity.RESULT_OK, resultIntent)
this.finish()
}
private fun CipherView.toAutofillCipherProvider(): AutofillCipherProvider =
object : AutofillCipherProvider {
override suspend fun isVaultLocked(): Boolean = true
override suspend fun getCardAutofillCiphers(): List<AutofillCipher.Card> {
val card = this@toAutofillCipherProvider.card ?: return emptyList()
return listOf(
AutofillCipher.Card(
name = name,
subtitle = subtitle.orEmpty(),
cardholderName = card.cardholderName.orEmpty(),
code = card.code.orEmpty(),
expirationMonth = card.expMonth.orEmpty(),
expirationYear = card.expYear.orEmpty(),
number = card.number.orEmpty(),
),
)
}
override suspend fun getLoginAutofillCiphers(
uri: String,
): List<AutofillCipher.Login> {
val login = this@toAutofillCipherProvider.login ?: return emptyList()
return listOf(
AutofillCipher.Login(
name = name,
password = login.password.orEmpty(),
subtitle = subtitle.orEmpty(),
username = login.username.orEmpty(),
),
)
}
}

View File

@@ -0,0 +1,43 @@
package com.x8bit.bitwarden.data.autofill.util
import com.bitwarden.core.CipherView
import com.x8bit.bitwarden.data.autofill.model.AutofillCipher
import com.x8bit.bitwarden.data.autofill.provider.AutofillCipherProvider
import com.x8bit.bitwarden.data.platform.util.subtitle
/**
* Creates a single-item [AutofillCipherProvider] based on the given [CipherView].
*/
fun CipherView.toAutofillCipherProvider(): AutofillCipherProvider =
object : AutofillCipherProvider {
override suspend fun isVaultLocked(): Boolean = false
override suspend fun getCardAutofillCiphers(): List<AutofillCipher.Card> {
val card = this@toAutofillCipherProvider.card ?: return emptyList()
return listOf(
AutofillCipher.Card(
name = name,
subtitle = subtitle.orEmpty(),
cardholderName = card.cardholderName.orEmpty(),
code = card.code.orEmpty(),
expirationMonth = card.expMonth.orEmpty(),
expirationYear = card.expYear.orEmpty(),
number = card.number.orEmpty(),
),
)
}
override suspend fun getLoginAutofillCiphers(
uri: String,
): List<AutofillCipher.Login> {
val login = this@toAutofillCipherProvider.login ?: return emptyList()
return listOf(
AutofillCipher.Login(
name = name,
password = login.password.orEmpty(),
subtitle = subtitle.orEmpty(),
username = login.username.orEmpty(),
),
)
}
}