Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 3a585a8e authored by Felipe Leme's avatar Felipe Leme
Browse files

Improved logging on autofill validators.

Also minor-fixed a javadoc comment.

Test: manual verification
Bug: 67955334

Change-Id: Ieb2265049b0416b3427f63e14e33fb9fa50a16e7
parent 0b57d2f5
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -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() {
        }
+15 −3
Original line number Diff line number Diff line
@@ -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);
        }

        final String number = builder.toString();
        boolean valid = isLuhnChecksumValid(number);
        if (sDebug) Log.d(TAG, "isValid(" + number.length() + " chars): " + valid);
        return valid;
    }

        return isLuhnChecksumValid(number.toString());
    @Override
    public String toString() {
        if (!sDebug) return super.toString();

        return "LuhnChecksumValidator: [ids=" + Arrays.toString(mIds) + "]";
    }

    /////////////////////////////////////
+4 −0
Original line number Diff line number Diff line
@@ -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;
        }

+4 −0
Original line number Diff line number Diff line
@@ -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;
+1 −0
Original line number Diff line number Diff line
@@ -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);