From 273d0d555c7ed8575d5c7c1d3c012fbd1967d04a Mon Sep 17 00:00:00 2001 From: Fabian Henneke Date: Thu, 23 Jul 2020 13:21:14 +0200 Subject: Allow Autofill on custom views with Autofill hints (#946) --- app/src/main/java/com/zeapo/pwdstore/autofill/oreo/FormField.kt | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) (limited to 'app/src/main/java/com/zeapo') diff --git a/app/src/main/java/com/zeapo/pwdstore/autofill/oreo/FormField.kt b/app/src/main/java/com/zeapo/pwdstore/autofill/oreo/FormField.kt index 2b18bbb6..0d89624e 100644 --- a/app/src/main/java/com/zeapo/pwdstore/autofill/oreo/FormField.kt +++ b/app/src/main/java/com/zeapo/pwdstore/autofill/oreo/FormField.kt @@ -214,7 +214,8 @@ class FormField( // TODO: Revisit this decision in the future private val excludedByHints = excludedByAutofillHints - val relevantField = isTextField && hasAutofillTypeText && !excludedByHints + // Only offer to fill into custom views if they explicitly opted into Autofill. + val relevantField = hasAutofillTypeText && (isTextField || autofillHints.isNotEmpty()) && !excludedByHints // Exclude fields based on hint, resource ID or HTML name. // Note: We still report excluded fields as relevant since they count for adjacency heuristics, @@ -232,7 +233,7 @@ class FormField( if (isCertainPasswordField) CertaintyLevel.Certain else if (isLikelyPasswordField) CertaintyLevel.Likely else if (isPossiblePasswordField) CertaintyLevel.Possible else CertaintyLevel.Impossible // OTP field heuristics (based only on the current field) - private val isPossibleOtpField = notExcluded && !isPossiblePasswordField && isTextField + private val isPossibleOtpField = notExcluded && !isPossiblePasswordField private val isCertainOtpField = isPossibleOtpField && hasHintOtp private val isLikelyOtpField = isPossibleOtpField && ( isCertainOtpField || OTP_HEURISTIC_TERMS.anyMatchesFieldInfo || @@ -241,7 +242,7 @@ class FormField( if (isCertainOtpField) CertaintyLevel.Certain else if (isLikelyOtpField) CertaintyLevel.Likely else if (isPossibleOtpField) CertaintyLevel.Possible else CertaintyLevel.Impossible // Username field heuristics (based only on the current field) - private val isPossibleUsernameField = notExcluded && !isPossiblePasswordField && !isCertainOtpField && isTextField + private val isPossibleUsernameField = notExcluded && !isPossiblePasswordField && !isCertainOtpField private val isCertainUsernameField = isPossibleUsernameField && hasHintUsername private val isLikelyUsernameField = isPossibleUsernameField && (isCertainUsernameField || (USERNAME_HEURISTIC_TERMS.anyMatchesFieldInfo)) val usernameCertainty = -- cgit v1.2.3