diff --git a/autofill/autofill-impl/src/main/java/com/duckduckgo/autofill/impl/service/ViewNodeClassifier.kt b/autofill/autofill-impl/src/main/java/com/duckduckgo/autofill/impl/service/ViewNodeClassifier.kt index 0ee20079047b..09756dae8796 100644 --- a/autofill/autofill-impl/src/main/java/com/duckduckgo/autofill/impl/service/ViewNodeClassifier.kt +++ b/autofill/autofill-impl/src/main/java/com/duckduckgo/autofill/impl/service/ViewNodeClassifier.kt @@ -90,7 +90,11 @@ class AutofillServiceViewNodeClassifier @Inject constructor() : ViewNodeClassifi private fun isTextPasswordField(inputType: Int): Boolean { return (inputType and InputType.TYPE_MASK_CLASS) == InputType.TYPE_CLASS_TEXT && - (inputType and InputType.TYPE_MASK_VARIATION) == InputType.TYPE_TEXT_VARIATION_PASSWORD + ( + (inputType and InputType.TYPE_MASK_VARIATION) == InputType.TYPE_TEXT_VARIATION_PASSWORD || + (inputType and InputType.TYPE_MASK_VARIATION) == InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD || + (inputType and InputType.TYPE_MASK_VARIATION) == InputType.TYPE_TEXT_VARIATION_WEB_PASSWORD + ) } private fun getType(autofillHints: Array?): AutofillFieldType { diff --git a/autofill/autofill-impl/src/test/java/com/duckduckgo/autofill/impl/service/AutofillProvideMockBuilder.kt b/autofill/autofill-impl/src/test/java/com/duckduckgo/autofill/impl/service/AutofillProvideMockBuilder.kt index 6fafe0b1f8ee..8f27699b67b5 100644 --- a/autofill/autofill-impl/src/test/java/com/duckduckgo/autofill/impl/service/AutofillProvideMockBuilder.kt +++ b/autofill/autofill-impl/src/test/java/com/duckduckgo/autofill/impl/service/AutofillProvideMockBuilder.kt @@ -72,6 +72,11 @@ fun viewNode(): ViewNode { return mock() } +fun ViewNode.inputType(inputType: Int): ViewNode { + whenever(this.inputType).thenReturn(inputType) + return this +} + fun ViewNode.webDomain(domain: String): ViewNode { whenever(this.webDomain).thenReturn(domain) return this diff --git a/autofill/autofill-impl/src/test/java/com/duckduckgo/autofill/impl/service/AutofillServiceViewNodeClassifierTest.kt b/autofill/autofill-impl/src/test/java/com/duckduckgo/autofill/impl/service/AutofillServiceViewNodeClassifierTest.kt index f753d2222584..955347b4b631 100644 --- a/autofill/autofill-impl/src/test/java/com/duckduckgo/autofill/impl/service/AutofillServiceViewNodeClassifierTest.kt +++ b/autofill/autofill-impl/src/test/java/com/duckduckgo/autofill/impl/service/AutofillServiceViewNodeClassifierTest.kt @@ -16,6 +16,8 @@ package com.duckduckgo.autofill.impl.service +import android.text.InputType.TYPE_CLASS_TEXT +import android.text.InputType.TYPE_TEXT_VARIATION_PASSWORD import android.util.Pair import android.view.View import androidx.test.ext.junit.runners.AndroidJUnit4 @@ -85,7 +87,7 @@ class AutofillServiceViewNodeClassifierTest { assertEquals( "$usernameCombination failed", USERNAME, - testee.classify(viewNode().hint(usernameCombination)), + testee.classify(viewNode().inputType(TYPE_CLASS_TEXT).hint(usernameCombination)), ) } @@ -100,7 +102,7 @@ class AutofillServiceViewNodeClassifierTest { assertEquals( "$usernameCombination failed", USERNAME, - testee.classify(viewNode().idEntry(usernameCombination)), + testee.classify(viewNode().inputType(TYPE_CLASS_TEXT).idEntry(usernameCombination)), ) } @@ -116,7 +118,7 @@ class AutofillServiceViewNodeClassifierTest { assertEquals( "$passwordCombination failed", PASSWORD, - testee.classify(viewNode().hint(passwordCombination)), + testee.classify(viewNode().inputType(TYPE_CLASS_TEXT or TYPE_TEXT_VARIATION_PASSWORD).hint(passwordCombination)), ) } @@ -132,7 +134,7 @@ class AutofillServiceViewNodeClassifierTest { assertEquals( "$passwordCombination failed", PASSWORD, - testee.classify(viewNode().idEntry(passwordCombination)), + testee.classify(viewNode().inputType(TYPE_CLASS_TEXT or TYPE_TEXT_VARIATION_PASSWORD).idEntry(passwordCombination)), ) }