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 Original line Diff line number Diff line
@@ -19,6 +19,7 @@ package android.hardware.biometrics;
import android.annotation.NonNull;
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.annotation.Nullable;
import android.app.admin.DevicePolicyManager;
import android.app.admin.DevicePolicyManager;
import android.app.supervision.SupervisionManager;
import android.content.ComponentName;
import android.content.ComponentName;
import android.content.Context;
import android.content.Context;
import android.os.Build;
import android.os.Build;
@@ -55,27 +56,44 @@ public class ParentalControlsUtilsInternal {
        return null;
        return null;
    }
    }


    public static boolean parentConsentRequired(@NonNull Context context,
    /** @return true if parental consent is required in order for biometric sensors to be used. */
            @NonNull DevicePolicyManager dpm, @BiometricAuthenticator.Modality int modality,
    public static boolean parentConsentRequired(
            @NonNull Context context,
            @NonNull DevicePolicyManager dpm,
            @Nullable SupervisionManager sm,
            @BiometricAuthenticator.Modality int modality,
            @NonNull UserHandle userHandle) {
            @NonNull UserHandle userHandle) {
        if (getTestComponentName(context, userHandle.getIdentifier()) != null) {
        if (getTestComponentName(context, userHandle.getIdentifier()) != null) {
            return true;
            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.
     * @return true if parental consent is required in order for biometric sensors to be used.
     */
     */
    public static boolean parentConsentRequired(@NonNull DevicePolicyManager dpm,
    public static boolean parentConsentRequired(
            @BiometricAuthenticator.Modality int modality, @NonNull UserHandle userHandle) {
            @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);
            final ComponentName cn = getSupervisionComponentName(dpm, userHandle);
            if (cn == null) {
            if (cn == null) {
                return false;
                return false;
            }
            }
            keyguardDisabledFeatures = dpm.getKeyguardDisabledFeatures(cn);
        }


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


    /** @deprecated Use {@link SupervisionManager} to check for supervision. */
    @Nullable
    @Nullable
    @Deprecated
    public static ComponentName getSupervisionComponentName(@NonNull DevicePolicyManager dpm,
    public static ComponentName getSupervisionComponentName(@NonNull DevicePolicyManager dpm,
            @NonNull UserHandle userHandle) {
            @NonNull UserHandle userHandle) {
        return dpm.getProfileOwnerOrDeviceOwnerSupervisionComponent(userHandle);
        return dpm.getProfileOwnerOrDeviceOwnerSupervisionComponent(userHandle);
+5 −1
Original line number Original line Diff line number Diff line
@@ -84,7 +84,11 @@ public final class ActionDisabledByAdminControllerFactory {
            return false;
            return false;
        }
        }
        DevicePolicyManager dpm = context.getSystemService(DevicePolicyManager.class);
        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()));
                BiometricAuthenticator.TYPE_ANY_BIOMETRIC, new UserHandle(UserHandle.myUserId()));
    }
    }