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

Commit 02baf60e authored by Vitor Carvalho's avatar Vitor Carvalho Committed by Android (Google) Code Review
Browse files

Merge "Replace usage of DPM supervision methods in...

Merge "Replace usage of DPM supervision methods in ParentalControlsUtilsInternal with calls to SupervisionManager." into main
parents 86a98174 b20a6c19
Loading
Loading
Loading
Loading
+29 −9
Original line number Diff line number Diff line
@@ -19,6 +19,7 @@ package android.hardware.biometrics;
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.app.admin.DevicePolicyManager;
import android.app.supervision.SupervisionManager;
import android.content.ComponentName;
import android.content.Context;
import android.os.Build;
@@ -55,27 +56,44 @@ public class ParentalControlsUtilsInternal {
        return null;
    }

    public static boolean parentConsentRequired(@NonNull Context context,
            @NonNull DevicePolicyManager dpm, @BiometricAuthenticator.Modality int modality,
    /** @return true if parental consent is required in order for biometric sensors to be used. */
    public static boolean parentConsentRequired(
            @NonNull Context context,
            @NonNull DevicePolicyManager dpm,
            @Nullable SupervisionManager sm,
            @BiometricAuthenticator.Modality int modality,
            @NonNull UserHandle userHandle) {
        if (getTestComponentName(context, userHandle.getIdentifier()) != null) {
            return true;
        }

        return parentConsentRequired(dpm, modality, userHandle);
        return parentConsentRequired(dpm, sm, modality, userHandle);
    }

    /**
     * @return true if parental consent is required in order for biometric sensors to be used.
     */
    public static boolean parentConsentRequired(@NonNull DevicePolicyManager dpm,
            @BiometricAuthenticator.Modality int modality, @NonNull UserHandle userHandle) {
    public static boolean parentConsentRequired(
            @NonNull DevicePolicyManager dpm,
            @Nullable SupervisionManager sm,
            @BiometricAuthenticator.Modality int modality,
            @NonNull UserHandle userHandle) {
        final int keyguardDisabledFeatures;

        if (android.app.supervision.flags.Flags.deprecateDpmSupervisionApis()) {
            if (sm != null && !sm.isSupervisionEnabledForUser(userHandle.getIdentifier())) {
                return false;
            }
            // Check for keyguard features disabled by any admin.
            keyguardDisabledFeatures = dpm.getKeyguardDisabledFeatures(/* admin= */ null);
        } else {
            final ComponentName cn = getSupervisionComponentName(dpm, userHandle);
            if (cn == null) {
                return false;
            }
            keyguardDisabledFeatures = dpm.getKeyguardDisabledFeatures(cn);
        }

        final int keyguardDisabledFeatures = dpm.getKeyguardDisabledFeatures(cn);
        final boolean dpmFpDisabled = containsFlag(keyguardDisabledFeatures,
                DevicePolicyManager.KEYGUARD_DISABLE_FINGERPRINT);
        final boolean dpmFaceDisabled = containsFlag(keyguardDisabledFeatures,
@@ -97,7 +115,9 @@ public class ParentalControlsUtilsInternal {
        return consentRequired;
    }

    /** @deprecated Use {@link SupervisionManager} to check for supervision. */
    @Nullable
    @Deprecated
    public static ComponentName getSupervisionComponentName(@NonNull DevicePolicyManager dpm,
            @NonNull UserHandle userHandle) {
        return dpm.getProfileOwnerOrDeviceOwnerSupervisionComponent(userHandle);
+5 −1
Original line number Diff line number Diff line
@@ -84,7 +84,11 @@ public final class ActionDisabledByAdminControllerFactory {
            return false;
        }
        DevicePolicyManager dpm = context.getSystemService(DevicePolicyManager.class);
        return ParentalControlsUtilsInternal.parentConsentRequired(context, dpm,
        final SupervisionManager sm =
                android.app.supervision.flags.Flags.deprecateDpmSupervisionApis()
                        ? context.getSystemService(SupervisionManager.class)
                        : null;
        return ParentalControlsUtilsInternal.parentConsentRequired(context, dpm, sm,
                BiometricAuthenticator.TYPE_ANY_BIOMETRIC, new UserHandle(UserHandle.myUserId()));
    }