mirror of
https://github.com/bitwarden/android.git
synced 2026-04-29 20:38:41 -05:00
Update registerExport to return RegisterExportResponse (#5903)
This commit is contained in:
@@ -2,11 +2,13 @@ package androidx.credentials.providerevents
|
|||||||
|
|
||||||
import android.annotation.SuppressLint
|
import android.annotation.SuppressLint
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
|
import android.content.pm.SigningInfo
|
||||||
import androidx.credentials.provider.CallingAppInfo
|
import androidx.credentials.provider.CallingAppInfo
|
||||||
import androidx.credentials.providerevents.transfer.ImportCredentialsRequest
|
import androidx.credentials.providerevents.transfer.ImportCredentialsRequest
|
||||||
import androidx.credentials.providerevents.transfer.ImportCredentialsResponse
|
import androidx.credentials.providerevents.transfer.ImportCredentialsResponse
|
||||||
import androidx.credentials.providerevents.transfer.ProviderImportCredentialsResponse
|
import androidx.credentials.providerevents.transfer.ProviderImportCredentialsResponse
|
||||||
import androidx.credentials.providerevents.transfer.RegisterExportRequest
|
import androidx.credentials.providerevents.transfer.RegisterExportRequest
|
||||||
|
import androidx.credentials.providerevents.transfer.RegisterExportResponse
|
||||||
import com.bitwarden.annotation.OmitFromCoverage
|
import com.bitwarden.annotation.OmitFromCoverage
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -17,7 +19,7 @@ interface ProviderEventsManager {
|
|||||||
/**
|
/**
|
||||||
* Register as a credential export source.
|
* Register as a credential export source.
|
||||||
*/
|
*/
|
||||||
fun registerExport(request: RegisterExportRequest): Boolean
|
fun registerExport(request: RegisterExportRequest): RegisterExportResponse
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Begin the process of importing credentials.
|
* Begin the process of importing credentials.
|
||||||
@@ -42,8 +44,8 @@ interface ProviderEventsManager {
|
|||||||
*/
|
*/
|
||||||
@OmitFromCoverage
|
@OmitFromCoverage
|
||||||
internal class StubProviderEventsManager : ProviderEventsManager {
|
internal class StubProviderEventsManager : ProviderEventsManager {
|
||||||
override fun registerExport(request: RegisterExportRequest): Boolean {
|
override fun registerExport(request: RegisterExportRequest): RegisterExportResponse {
|
||||||
return true
|
return RegisterExportResponse()
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun importCredentials(
|
override fun importCredentials(
|
||||||
@@ -53,13 +55,57 @@ internal class StubProviderEventsManager : ProviderEventsManager {
|
|||||||
@SuppressLint("VisibleForTests")
|
@SuppressLint("VisibleForTests")
|
||||||
return ProviderImportCredentialsResponse(
|
return ProviderImportCredentialsResponse(
|
||||||
response = ImportCredentialsResponse(
|
response = ImportCredentialsResponse(
|
||||||
responseJson = "",
|
responseJson = CANNED_RESPONSE,
|
||||||
),
|
),
|
||||||
callingAppInfo = CallingAppInfo(
|
callingAppInfo = CallingAppInfo(
|
||||||
packageName = "",
|
packageName = context.packageName,
|
||||||
signatures = emptyList(),
|
signingInfo = SigningInfo(),
|
||||||
origin = null,
|
origin = null,
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private val CANNED_RESPONSE = """
|
||||||
|
{
|
||||||
|
"id": "3zGV3pmoSs6mT7IEAPXfOw",
|
||||||
|
"username": "",
|
||||||
|
"email": "user@email.com",
|
||||||
|
"fullName": "Test User",
|
||||||
|
"collections": [],
|
||||||
|
"items": [
|
||||||
|
{
|
||||||
|
"id": "8cCs0RV_ViySk7KCACA",
|
||||||
|
"creationAt": 1739325421,
|
||||||
|
"modifiedAt": 1739325421,
|
||||||
|
"title": "test import credentials",
|
||||||
|
"favorite": false,
|
||||||
|
"scope": {
|
||||||
|
"urls": [
|
||||||
|
"https://www.sample-url.io/"
|
||||||
|
],
|
||||||
|
"androidApps": []
|
||||||
|
},
|
||||||
|
"credentials": [
|
||||||
|
{
|
||||||
|
"type": "basic-auth",
|
||||||
|
"username": {
|
||||||
|
"fieldType": "string",
|
||||||
|
"value": "MyUsername"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "passkey",
|
||||||
|
"credentialId": "xMA-5emp0WsQASnuNmuzQA",
|
||||||
|
"rpId": "www.sample-url.io",
|
||||||
|
"username": "user@email.com",
|
||||||
|
"userDisplayName": "user@email.com",
|
||||||
|
"userHandle": "lEn2KqNnS7SsUdVbrdoFiw",
|
||||||
|
"key": "MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgQx8Smx_KdvQ7nJXt2_62Xrn-im9ibCOtsphj_xZo_uWhRANCAARUDaIFJIUaRyUehAy_d1_a-DK63Ws_d-zkYj-uqHdrGZI0dnhazQGva4tJZQFN35iLoLzFFj_CSjqeYAEOX7Ck"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
"""
|
||||||
|
.trimIndent()
|
||||||
|
|||||||
@@ -0,0 +1,6 @@
|
|||||||
|
package androidx.credentials.providerevents.transfer
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Placeholder class representing a response to registering as a credential export source.
|
||||||
|
*/
|
||||||
|
class RegisterExportResponse
|
||||||
@@ -1,5 +1,6 @@
|
|||||||
package com.bitwarden.cxf.registry
|
package com.bitwarden.cxf.registry
|
||||||
|
|
||||||
|
import androidx.credentials.providerevents.transfer.RegisterExportResponse
|
||||||
import com.bitwarden.cxf.registry.model.RegistrationRequest
|
import com.bitwarden.cxf.registry.model.RegistrationRequest
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -18,7 +19,7 @@ interface CredentialExchangeRegistry {
|
|||||||
* does not indicate if the application was added to the registry. Use the result value to check
|
* does not indicate if the application was added to the registry. Use the result value to check
|
||||||
* if the application was added or not. [Result.isFailure] only indicates if an error occurred.
|
* if the application was added or not. [Result.isFailure] only indicates if an error occurred.
|
||||||
*/
|
*/
|
||||||
suspend fun register(registrationRequest: RegistrationRequest): Result<Boolean>
|
suspend fun register(registrationRequest: RegistrationRequest): Result<RegisterExportResponse>
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Unregister as a credential export source.
|
* Unregister as a credential export source.
|
||||||
@@ -28,5 +29,5 @@ interface CredentialExchangeRegistry {
|
|||||||
*
|
*
|
||||||
* @return True if the unregistration was successful, false otherwise.
|
* @return True if the unregistration was successful, false otherwise.
|
||||||
*/
|
*/
|
||||||
suspend fun unregister(): Boolean
|
suspend fun unregister(): RegisterExportResponse
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ import androidx.core.graphics.drawable.toBitmapOrNull
|
|||||||
import androidx.credentials.providerevents.ProviderEventsManager
|
import androidx.credentials.providerevents.ProviderEventsManager
|
||||||
import androidx.credentials.providerevents.transfer.ExportEntry
|
import androidx.credentials.providerevents.transfer.ExportEntry
|
||||||
import androidx.credentials.providerevents.transfer.RegisterExportRequest
|
import androidx.credentials.providerevents.transfer.RegisterExportRequest
|
||||||
|
import androidx.credentials.providerevents.transfer.RegisterExportResponse
|
||||||
import com.bitwarden.annotation.OmitFromCoverage
|
import com.bitwarden.annotation.OmitFromCoverage
|
||||||
import com.bitwarden.core.data.util.asFailure
|
import com.bitwarden.core.data.util.asFailure
|
||||||
import com.bitwarden.core.data.util.asSuccess
|
import com.bitwarden.core.data.util.asSuccess
|
||||||
@@ -24,7 +25,7 @@ internal class CredentialExchangeRegistryImpl(
|
|||||||
|
|
||||||
override suspend fun register(
|
override suspend fun register(
|
||||||
registrationRequest: RegistrationRequest,
|
registrationRequest: RegistrationRequest,
|
||||||
): Result<Boolean> {
|
): Result<RegisterExportResponse> {
|
||||||
val icon = ContextCompat
|
val icon = ContextCompat
|
||||||
.getDrawable(
|
.getDrawable(
|
||||||
application,
|
application,
|
||||||
@@ -50,7 +51,7 @@ internal class CredentialExchangeRegistryImpl(
|
|||||||
.asSuccess()
|
.asSuccess()
|
||||||
}
|
}
|
||||||
|
|
||||||
override suspend fun unregister(): Boolean =
|
override suspend fun unregister(): RegisterExportResponse =
|
||||||
providerEventsManager.registerExport(
|
providerEventsManager.registerExport(
|
||||||
// This is a workaround for unregistering an account since an explicit "unregister" API
|
// This is a workaround for unregistering an account since an explicit "unregister" API
|
||||||
// is not currently available.
|
// is not currently available.
|
||||||
|
|||||||
Reference in New Issue
Block a user