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

Commit 63f7227f authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Improved logging on autofill validators."

parents 5ffb6036 3a585a8e
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);