diff --git a/app/src/main/kotlin/com/x8bit/bitwarden/ui/vault/feature/importitems/ImportItemsViewModel.kt b/app/src/main/kotlin/com/x8bit/bitwarden/ui/vault/feature/importitems/ImportItemsViewModel.kt index a85422ee0a..e2bc24f22c 100644 --- a/app/src/main/kotlin/com/x8bit/bitwarden/ui/vault/feature/importitems/ImportItemsViewModel.kt +++ b/app/src/main/kotlin/com/x8bit/bitwarden/ui/vault/feature/importitems/ImportItemsViewModel.kt @@ -120,12 +120,12 @@ class ImportItemsViewModel @Inject constructor( sendEvent( ImportItemsEvent.ShowRegisteredImportSources( credentialTypes = listOf( - CredentialTypes.BASIC_AUTH, - CredentialTypes.PUBLIC_KEY, - CredentialTypes.TOTP, - CredentialTypes.CREDIT_CARD, - CredentialTypes.SSH_KEY, - CredentialTypes.ADDRESS, + CredentialTypes.CREDENTIAL_TYPE_BASIC_AUTH, + CredentialTypes.CREDENTIAL_TYPE_PUBLIC_KEY, + CredentialTypes.CREDENTIAL_TYPE_TOTP, + CredentialTypes.CREDENTIAL_TYPE_CREDIT_CARD, + CredentialTypes.CREDENTIAL_TYPE_SSH_KEY, + CredentialTypes.CREDENTIAL_TYPE_ADDRESS, ), ), ) diff --git a/app/src/test/kotlin/com/x8bit/bitwarden/ui/vault/feature/importitems/ImportItemsViewModelTest.kt b/app/src/test/kotlin/com/x8bit/bitwarden/ui/vault/feature/importitems/ImportItemsViewModelTest.kt index d147dbcd99..429d8c3bc7 100644 --- a/app/src/test/kotlin/com/x8bit/bitwarden/ui/vault/feature/importitems/ImportItemsViewModelTest.kt +++ b/app/src/test/kotlin/com/x8bit/bitwarden/ui/vault/feature/importitems/ImportItemsViewModelTest.kt @@ -61,12 +61,12 @@ class ImportItemsViewModelTest : BaseViewModelTest() { assertEquals( ImportItemsEvent.ShowRegisteredImportSources( listOf( - CredentialTypes.BASIC_AUTH, - CredentialTypes.PUBLIC_KEY, - CredentialTypes.TOTP, - CredentialTypes.CREDIT_CARD, - CredentialTypes.SSH_KEY, - CredentialTypes.ADDRESS, + CredentialTypes.CREDENTIAL_TYPE_BASIC_AUTH, + CredentialTypes.CREDENTIAL_TYPE_PUBLIC_KEY, + CredentialTypes.CREDENTIAL_TYPE_TOTP, + CredentialTypes.CREDENTIAL_TYPE_CREDIT_CARD, + CredentialTypes.CREDENTIAL_TYPE_SSH_KEY, + CredentialTypes.CREDENTIAL_TYPE_ADDRESS, ), ), awaitItem(), diff --git a/cxf/src/main/kotlin/androidx/credentials/providerevents/IntentHandler.kt b/cxf/src/main/kotlin/androidx/credentials/providerevents/IntentHandler.kt deleted file mode 100644 index d325ff2638..0000000000 --- a/cxf/src/main/kotlin/androidx/credentials/providerevents/IntentHandler.kt +++ /dev/null @@ -1,45 +0,0 @@ -package androidx.credentials.providerevents - -import android.app.Activity -import android.content.Intent -import android.net.Uri -import androidx.credentials.providerevents.exception.ImportCredentialsException -import androidx.credentials.providerevents.transfer.ImportCredentialsResponse -import androidx.credentials.providerevents.transfer.ProviderImportCredentialsRequest -import com.bitwarden.annotation.OmitFromCoverage - -/** - * A stub implementation of the Credential Provider Events IntentHandler class. - */ -@OmitFromCoverage -object IntentHandler { - - /** - * Stub implementation of the setImportCredentialsException method. - */ - fun setImportCredentialsException(intent: Intent, exception: ImportCredentialsException) { - // Stub implementation - } - - /** - * Stub implementation of the setImportCredentialsResponse method. - */ - fun setImportCredentialsResponse( - context: Activity, - uri: Uri, - response: ImportCredentialsResponse, - ) { - // Stub implementation - } - - /** - * Stub implementation of the retrieveImportCredentialsException method. - */ - @Suppress("FunctionOnlyReturningConstant") - fun retrieveProviderImportCredentialsRequest( - intent: Intent, - ): ProviderImportCredentialsRequest? { - // Stub implementation - return null - } -} diff --git a/cxf/src/main/kotlin/androidx/credentials/providerevents/ProviderEventsManager.kt b/cxf/src/main/kotlin/androidx/credentials/providerevents/ProviderEventsManager.kt deleted file mode 100644 index 81b091fd8e..0000000000 --- a/cxf/src/main/kotlin/androidx/credentials/providerevents/ProviderEventsManager.kt +++ /dev/null @@ -1,111 +0,0 @@ -package androidx.credentials.providerevents - -import android.annotation.SuppressLint -import android.content.Context -import android.content.pm.SigningInfo -import androidx.credentials.provider.CallingAppInfo -import androidx.credentials.providerevents.transfer.ImportCredentialsRequest -import androidx.credentials.providerevents.transfer.ImportCredentialsResponse -import androidx.credentials.providerevents.transfer.ProviderImportCredentialsResponse -import androidx.credentials.providerevents.transfer.RegisterExportRequest -import androidx.credentials.providerevents.transfer.RegisterExportResponse -import com.bitwarden.annotation.OmitFromCoverage - -/** - * Placeholder interface representing a provider events manager. - */ -interface ProviderEventsManager { - - /** - * Register as a credential export source. - */ - fun registerExport(request: RegisterExportRequest): RegisterExportResponse - - /** - * Begin the process of importing credentials. - */ - fun importCredentials( - context: Context, - request: ImportCredentialsRequest, - ): ProviderImportCredentialsResponse - - @OmitFromCoverage - @Suppress("UndocumentedPublicClass") - companion object { - /** - * Create a new instance of [ProviderEventsManager]. - */ - fun create(context: Context): ProviderEventsManager = StubProviderEventsManager() - } -} - -/** - * Stub implementation of [ProviderEventsManager]. - */ -@OmitFromCoverage -internal class StubProviderEventsManager : ProviderEventsManager { - override fun registerExport(request: RegisterExportRequest): RegisterExportResponse { - return RegisterExportResponse() - } - - override fun importCredentials( - context: Context, - request: ImportCredentialsRequest, - ): ProviderImportCredentialsResponse { - @SuppressLint("VisibleForTests") - return ProviderImportCredentialsResponse( - response = ImportCredentialsResponse( - responseJson = CANNED_RESPONSE, - ), - callingAppInfo = CallingAppInfo( - packageName = context.packageName, - signingInfo = SigningInfo(), - 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() diff --git a/cxf/src/main/kotlin/androidx/credentials/providerevents/exception/ImportCredentialsCancellationException.kt b/cxf/src/main/kotlin/androidx/credentials/providerevents/exception/ImportCredentialsCancellationException.kt deleted file mode 100644 index deb1c041e8..0000000000 --- a/cxf/src/main/kotlin/androidx/credentials/providerevents/exception/ImportCredentialsCancellationException.kt +++ /dev/null @@ -1,6 +0,0 @@ -package androidx.credentials.providerevents.exception - -/** - * Placeholder class representing a cancellation exception for importing credentials. - */ -class ImportCredentialsCancellationException : Exception() diff --git a/cxf/src/main/kotlin/androidx/credentials/providerevents/transfer/ExportEntry.kt b/cxf/src/main/kotlin/androidx/credentials/providerevents/transfer/ExportEntry.kt deleted file mode 100644 index 3d361876ab..0000000000 --- a/cxf/src/main/kotlin/androidx/credentials/providerevents/transfer/ExportEntry.kt +++ /dev/null @@ -1,14 +0,0 @@ -package androidx.credentials.providerevents.transfer - -import android.graphics.Bitmap - -/** - * Placeholder class representing an entry in the export request. - */ -data class ExportEntry( - val id: String, - val accountDisplayName: CharSequence?, - val userDisplayName: CharSequence, - val icon: Bitmap, - val supportedCredentialTypes: Set, -) diff --git a/cxf/src/main/kotlin/androidx/credentials/providerevents/transfer/ProviderImportCredentialsRequest.kt b/cxf/src/main/kotlin/androidx/credentials/providerevents/transfer/ProviderImportCredentialsRequest.kt deleted file mode 100644 index 27ee2c07a1..0000000000 --- a/cxf/src/main/kotlin/androidx/credentials/providerevents/transfer/ProviderImportCredentialsRequest.kt +++ /dev/null @@ -1,16 +0,0 @@ -package androidx.credentials.providerevents.transfer - -import android.net.Uri -import androidx.credentials.provider.CallingAppInfo - -/** - * Placeholder class for the request received by the provider after the query phase of the import - * flow is complete i.e. the user was presented with a list of entries, and the user has now made - * a selection from the list of [ExportEntry] presented on the selector UI. - */ -data class ProviderImportCredentialsRequest( - val request: ImportCredentialsRequest, - val callingAppInfo: CallingAppInfo, - val uri: Uri, - val credId: String, -) diff --git a/cxf/src/main/kotlin/androidx/credentials/providerevents/transfer/ProviderImportCredentialsResponse.kt b/cxf/src/main/kotlin/androidx/credentials/providerevents/transfer/ProviderImportCredentialsResponse.kt deleted file mode 100644 index b02d01296a..0000000000 --- a/cxf/src/main/kotlin/androidx/credentials/providerevents/transfer/ProviderImportCredentialsResponse.kt +++ /dev/null @@ -1,11 +0,0 @@ -package androidx.credentials.providerevents.transfer - -import androidx.credentials.provider.CallingAppInfo - -/** - * Placeholder class representing the response to an import request. - */ -data class ProviderImportCredentialsResponse( - val response: ImportCredentialsResponse, - val callingAppInfo: CallingAppInfo, -) diff --git a/cxf/src/main/kotlin/androidx/credentials/providerevents/transfer/RegisterExportRequest.kt b/cxf/src/main/kotlin/androidx/credentials/providerevents/transfer/RegisterExportRequest.kt deleted file mode 100644 index f71c928343..0000000000 --- a/cxf/src/main/kotlin/androidx/credentials/providerevents/transfer/RegisterExportRequest.kt +++ /dev/null @@ -1,8 +0,0 @@ -package androidx.credentials.providerevents.transfer - -/** - * Placeholder class representing a request to register as a credential export source. - */ -data class RegisterExportRequest( - val entries: List, -) diff --git a/cxf/src/main/kotlin/androidx/credentials/providerevents/transfer/RegisterExportResponse.kt b/cxf/src/main/kotlin/androidx/credentials/providerevents/transfer/RegisterExportResponse.kt deleted file mode 100644 index 27660a6e4b..0000000000 --- a/cxf/src/main/kotlin/androidx/credentials/providerevents/transfer/RegisterExportResponse.kt +++ /dev/null @@ -1,6 +0,0 @@ -package androidx.credentials.providerevents.transfer - -/** - * Placeholder class representing a response to registering as a credential export source. - */ -class RegisterExportResponse diff --git a/cxf/src/main/kotlin/com/bitwarden/cxf/manager/CredentialExchangeCompletionManagerImpl.kt b/cxf/src/main/kotlin/com/bitwarden/cxf/manager/CredentialExchangeCompletionManagerImpl.kt index 64a9134873..12c5144d3f 100644 --- a/cxf/src/main/kotlin/com/bitwarden/cxf/manager/CredentialExchangeCompletionManagerImpl.kt +++ b/cxf/src/main/kotlin/com/bitwarden/cxf/manager/CredentialExchangeCompletionManagerImpl.kt @@ -26,6 +26,7 @@ internal class CredentialExchangeCompletionManagerImpl( is ExportCredentialsResult.Success -> { IntentHandler.setImportCredentialsResponse( context = activity, + intent = intent, uri = exportResult.uri, response = ImportCredentialsResponse( responseJson = exportResult.payload, diff --git a/cxf/src/test/kotlin/com/bitwarden/cxf/manager/CredentialExchangeCompletionManagerTest.kt b/cxf/src/test/kotlin/com/bitwarden/cxf/manager/CredentialExchangeCompletionManagerTest.kt index 5e348175e8..70c76c6f57 100644 --- a/cxf/src/test/kotlin/com/bitwarden/cxf/manager/CredentialExchangeCompletionManagerTest.kt +++ b/cxf/src/test/kotlin/com/bitwarden/cxf/manager/CredentialExchangeCompletionManagerTest.kt @@ -28,6 +28,7 @@ class CredentialExchangeCompletionManagerTest { context = any(), uri = any(), response = any(), + intent = any(), ) } just runs @@ -54,6 +55,7 @@ class CredentialExchangeCompletionManagerTest { context = mockActivity, uri = mockUri, response = any(), + intent = any(), ) mockActivity.setResult(Activity.RESULT_OK, any()) mockActivity.finish() diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 71c21588f0..dc31b9c7f2 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -21,8 +21,8 @@ androidxBrowser = "1.9.0" androidxCamera = "1.4.2" androidxComposeBom = "2025.09.00" androidxCore = "1.17.0" -androidxCredentials = "1.5.0" -androidxCredentialsProviderEvents = "1.0.0-alpha02" +androidxCredentials = "1.6.0-beta01" +androidxCredentialsProviderEvents = "1.0.0-alpha03" androidxHiltNavigationCompose = "1.3.0" androidxLifecycle = "2.9.3" androidxNavigation = "2.9.4"