Verified Commit 46475c73 authored by ma1's avatar ma1
Browse files

Bug 1892296 - improve webauthn experience - BP, tor-browser#42656

parent 40cae60d
Loading
Loading
Loading
Loading
+3 −0
Changes for android-components/components/feature/webauthn/src/main/java/mozilla/components/feature/webauthn/WebAuthnFeature.kt: 3 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -20,6 +20,8 @@ import mozilla.components.support.base.log.logger.Logger
class WebAuthnFeature(
    private val engine: Engine,
    private val activity: Activity,
    private val exitFullScreen: (String?) -> Unit,
    private val currentTab: () -> String?,
) : LifecycleAwareFeature, ActivityResultHandler, ActivityDelegate {
    private val logger = Logger("WebAuthnFeature")
    private var requestCodeCounter = ACTIVITY_REQUEST_CODE
@@ -53,6 +55,7 @@ class WebAuthnFeature(

    override fun startIntentSenderForResult(intent: IntentSender, onResult: (Intent?) -> Unit) {
        logger.info("Received activity delegate request with code: $requestCodeCounter")
        exitFullScreen(currentTab())
        activity.startIntentSenderForResult(intent, requestCodeCounter, null, 0, 0, 0)
        callbackRef = onResult
    }
+11 −5
Changes for android-components/components/feature/webauthn/src/test/java/mozilla/components/feature/webauthn/WebAuthnFeatureTest.kt: 11 added lines, 5 removed lines.
Original line number Diff line number Diff line
@@ -22,6 +22,8 @@ import org.mockito.Mockito.verify
class WebAuthnFeatureTest {
    private lateinit var engine: Engine
    private lateinit var activity: Activity
    private val exitFullScreen: (String?) -> Unit = { _ -> exitFullScreenUseCaseCalled = true }
    private var exitFullScreenUseCaseCalled = false

    @Before
    fun setup() {
@@ -31,7 +33,7 @@ class WebAuthnFeatureTest {

    @Test
    fun `feature registers itself on start`() {
        val feature = WebAuthnFeature(engine, activity)
        val feature = webAuthnFeature()

        feature.start()

@@ -40,7 +42,7 @@ class WebAuthnFeatureTest {

    @Test
    fun `feature unregisters itself on stop`() {
        val feature = WebAuthnFeature(engine, activity)
        val feature = webAuthnFeature()

        feature.stop()

@@ -49,7 +51,7 @@ class WebAuthnFeatureTest {

    @Test
    fun `activity delegate starts intent sender`() {
        val feature = WebAuthnFeature(engine, activity)
        val feature = webAuthnFeature()
        val callback: ((Intent?) -> Unit) = { }
        val intentSender: IntentSender = mock()

@@ -60,7 +62,7 @@ class WebAuthnFeatureTest {

    @Test
    fun `callback is invoked`() {
        val feature = WebAuthnFeature(engine, activity)
        val feature = webAuthnFeature()
        var callbackInvoked = false
        val callback: ((Intent?) -> Unit) = { callbackInvoked = true }
        val intentSender: IntentSender = mock()
@@ -77,10 +79,14 @@ class WebAuthnFeatureTest {

    @Test
    fun `feature won't process results with the wrong request code`() {
        val feature = WebAuthnFeature(engine, activity)
        val feature = webAuthnFeature()

        val result = feature.onActivityResult(ACTIVITY_REQUEST_CODE - 5, Intent(), 0)

        assertFalse(result)
    }

    private fun webAuthnFeature(): WebAuthnFeature {
        return WebAuthnFeature(engine, activity, { exitFullScreen("") }) { "" }
    }
}
+2 −0
Changes for fenix/app/src/main/java/org/mozilla/fenix/browser/BaseBrowserFragment.kt: 2 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -830,6 +830,8 @@ abstract class BaseBrowserFragment :
                feature = WebAuthnFeature(
                    engine = requireComponents.core.engine,
                    activity = requireActivity(),
                    exitFullScreen = requireComponents.useCases.sessionUseCases.exitFullscreen::invoke,
                    currentTab = { store.state.selectedTabId },
                ),
                owner = this,
                view = view,