BIT-1293: add autofill service shell (#468)

This commit is contained in:
Lucas Kivi 2024-01-02 13:39:50 -06:00 committed by Álison Fernandes
parent 7a8da67944
commit 738cd76c7d
3 changed files with 95 additions and 0 deletions

View file

@ -40,6 +40,16 @@
android:scheme="bitwarden" />
</intent-filter>
</activity>
<service
android:name=".autofill.BitwardenAutofillService"
android:label="Bitwarden"
android:permission="android.permission.BIND_AUTOFILL_SERVICE"
android:exported="true">
<intent-filter>
<action android:name="android.service.autofill.AutofillService" />
</intent-filter>
</service>
</application>
</manifest>

View file

@ -0,0 +1,31 @@
package com.x8bit.bitwarden.autofill
import android.os.CancellationSignal
import android.service.autofill.AutofillService
import android.service.autofill.FillCallback
import android.service.autofill.FillRequest
import android.service.autofill.SaveCallback
import android.service.autofill.SaveRequest
import dagger.hilt.android.AndroidEntryPoint
/**
* The [AutofillService] implementation for the app. This fulfills autofill requests from other
* applications.
*/
@AndroidEntryPoint
class BitwardenAutofillService : AutofillService() {
override fun onFillRequest(
request: FillRequest,
cancellationSignal: CancellationSignal,
fillCallback: FillCallback,
) {
// TODO: parse request and perform dummy autofill (BIT-1314)
}
override fun onSaveRequest(
saverRequest: SaveRequest,
saveCallback: SaveCallback,
) {
// TODO: add save request behavior (BIT-1299)
}
}

View file

@ -0,0 +1,54 @@
package com.x8bit.bitwarden.autofill
import android.os.CancellationSignal
import android.service.autofill.FillCallback
import android.service.autofill.FillRequest
import android.service.autofill.SaveCallback
import android.service.autofill.SaveRequest
import io.mockk.mockk
import org.junit.jupiter.api.BeforeEach
import org.junit.jupiter.api.Nested
import org.junit.jupiter.api.Test
class BitwardenAutofillServiceTests {
private lateinit var bitwardenAutofillService: BitwardenAutofillService
@BeforeEach
fun setup() {
bitwardenAutofillService = BitwardenAutofillService()
}
@Nested
inner class OnFillRequest {
@Test
fun `nothing happens`() {
// Setup
val cancellationSignal: CancellationSignal = mockk()
val fillCallback: FillCallback = mockk()
val fillRequest: FillRequest = mockk()
// Test
bitwardenAutofillService.onFillRequest(
cancellationSignal = cancellationSignal,
fillCallback = fillCallback,
request = fillRequest,
)
}
}
@Nested
inner class OnSaveRequest {
@Test
fun `nothing happens`() {
// Setup
val saverRequest: SaveRequest = mockk()
val saveCallback: SaveCallback = mockk()
// Test
bitwardenAutofillService.onSaveRequest(
saveCallback = saveCallback,
saverRequest = saverRequest,
)
}
}
}