diff options
5 files changed, 26 insertions, 4 deletions
diff --git a/core/java/android/service/autofill/Dataset.java b/core/java/android/service/autofill/Dataset.java index ef9598aab836..3d06d30c3dfc 100644 --- a/core/java/android/service/autofill/Dataset.java +++ b/core/java/android/service/autofill/Dataset.java @@ -201,7 +201,8 @@ public final class Dataset implements Parcelable { * Creates a new builder for a dataset where each field will be visualized independently. * * <p>When using this constructor, fields must be set through - * {@link #setValue(AutofillId, AutofillValue, RemoteViews)}. + * {@link #setValue(AutofillId, AutofillValue, RemoteViews)} or + * {@link #setValue(AutofillId, AutofillValue, Pattern, RemoteViews)}. */ public Builder() { } diff --git a/core/java/android/service/autofill/LuhnChecksumValidator.java b/core/java/android/service/autofill/LuhnChecksumValidator.java index 0b5930dfe5b7..c56ae84b4ae3 100644 --- a/core/java/android/service/autofill/LuhnChecksumValidator.java +++ b/core/java/android/service/autofill/LuhnChecksumValidator.java @@ -27,6 +27,8 @@ import android.view.autofill.AutofillId; import com.android.internal.util.Preconditions; +import java.util.Arrays; + /** * Validator that returns {@code true} if the number created by concatenating all given fields * pass a Luhn algorithm checksum. All non-digits are ignored. @@ -86,17 +88,27 @@ public final class LuhnChecksumValidator extends InternalValidator implements Va public boolean isValid(@NonNull ValueFinder finder) { if (mIds == null || mIds.length == 0) return false; - final StringBuilder number = new StringBuilder(); + final StringBuilder builder = new StringBuilder(); for (AutofillId id : mIds) { final String partialNumber = finder.findByAutofillId(id); if (partialNumber == null) { if (sDebug) Log.d(TAG, "No partial number for id " + id); return false; } - number.append(partialNumber); + builder.append(partialNumber); } - return isLuhnChecksumValid(number.toString()); + final String number = builder.toString(); + boolean valid = isLuhnChecksumValid(number); + if (sDebug) Log.d(TAG, "isValid(" + number.length() + " chars): " + valid); + return valid; + } + + @Override + public String toString() { + if (!sDebug) return super.toString(); + + return "LuhnChecksumValidator: [ids=" + Arrays.toString(mIds) + "]"; } ///////////////////////////////////// diff --git a/core/java/android/service/autofill/OptionalValidators.java b/core/java/android/service/autofill/OptionalValidators.java index f7edd6e4e8e8..7aec59f6267d 100644 --- a/core/java/android/service/autofill/OptionalValidators.java +++ b/core/java/android/service/autofill/OptionalValidators.java @@ -21,6 +21,7 @@ import static android.view.autofill.Helper.sDebug; import android.annotation.NonNull; import android.os.Parcel; import android.os.Parcelable; +import android.util.Log; import com.android.internal.util.Preconditions; @@ -34,6 +35,8 @@ import com.android.internal.util.Preconditions; */ final class OptionalValidators extends InternalValidator { + private static final String TAG = "OptionalValidators"; + @NonNull private final InternalValidator[] mValidators; OptionalValidators(@NonNull InternalValidator[] validators) { @@ -44,6 +47,7 @@ final class OptionalValidators extends InternalValidator { public boolean isValid(@NonNull ValueFinder finder) { for (InternalValidator validator : mValidators) { final boolean valid = validator.isValid(finder); + if (sDebug) Log.d(TAG, "isValid(" + validator + "): " + valid); if (valid) return true; } diff --git a/core/java/android/service/autofill/RequiredValidators.java b/core/java/android/service/autofill/RequiredValidators.java index ac85c28404f8..9e1db2bca5df 100644 --- a/core/java/android/service/autofill/RequiredValidators.java +++ b/core/java/android/service/autofill/RequiredValidators.java @@ -21,6 +21,7 @@ import static android.view.autofill.Helper.sDebug; import android.annotation.NonNull; import android.os.Parcel; import android.os.Parcelable; +import android.util.Log; import com.android.internal.util.Preconditions; @@ -34,6 +35,8 @@ import com.android.internal.util.Preconditions; */ final class RequiredValidators extends InternalValidator { + private static final String TAG = "RequiredValidators"; + @NonNull private final InternalValidator[] mValidators; RequiredValidators(@NonNull InternalValidator[] validators) { @@ -44,6 +47,7 @@ final class RequiredValidators extends InternalValidator { public boolean isValid(@NonNull ValueFinder finder) { for (InternalValidator validator : mValidators) { final boolean valid = validator.isValid(finder); + if (sDebug) Log.d(TAG, "isValid(" + validator + "): " + valid); if (!valid) return false; } return true; diff --git a/services/autofill/java/com/android/server/autofill/Session.java b/services/autofill/java/com/android/server/autofill/Session.java index 3c12d670c296..109fe0b3b9ec 100644 --- a/services/autofill/java/com/android/server/autofill/Session.java +++ b/services/autofill/java/com/android/server/autofill/Session.java @@ -970,6 +970,7 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState boolean isValid; try { isValid = validator.isValid(valueFinder); + if (sDebug) Slog.d(TAG, validator + " returned " + isValid); log.setType(isValid ? MetricsEvent.TYPE_SUCCESS : MetricsEvent.TYPE_DISMISS); |