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

Commit b20a6c19 authored by Vitor Carvalho's avatar Vitor Carvalho
Browse files

Replace usage of DPM supervision methods in ParentalControlsUtilsInternal with...

Replace usage of DPM supervision methods in ParentalControlsUtilsInternal with calls to SupervisionManager.

Additional clients of this Internal class are updated in ag/31121556.

Bug: 382038943
Flag: android.app.supervision.flags.deprecate_dpm_supervision_apis
Test: atest ParentalControlsUtilsTest
Change-Id: I2ca701c0c9c6f9eba728bc41c5f997667ec4aeca
parent 8ee235ee
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()));
    }