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

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

Update ParentalControlsUtils to use a new utility that is able to retrieve the...

Update ParentalControlsUtils to use a new utility that is able to retrieve the component for the EnforcedAdmin.

Bug: 382038943
Flag: android.app.supervision.flags.deprecate_dpm_supervision_apis
Test: atest ParentalControlsUtilsTest
Change-Id: Ic2ecf644f2966bbe2e29c4a691db9e004f0d6a0e
parent 1ec32b9c
Loading
Loading
Loading
Loading
+11 −11
Original line number Diff line number Diff line
@@ -31,6 +31,7 @@ import androidx.annotation.Nullable;

import com.android.internal.annotations.VisibleForTesting;
import com.android.settingslib.RestrictedLockUtils;
import com.android.settingslib.supervision.SupervisionRestrictionsHelper;

/**
 * Utilities for things at the cross-section of biometrics and parental controls. For example,
@@ -59,12 +60,7 @@ public class ParentalControlsUtils {
                    UserManager.DISALLOW_BIOMETRIC, userHandle);
        }

        final DevicePolicyManager dpm = context.getSystemService(DevicePolicyManager.class);
        final SupervisionManager sm =
                android.app.supervision.flags.Flags.deprecateDpmSupervisionApis()
                        ? context.getSystemService(SupervisionManager.class)
                        : null;
        return parentConsentRequiredInternal(dpm, sm, modality, userHandle);
        return parentConsentRequiredInternal(context, modality, userHandle);
    }

    /**
@@ -74,18 +70,22 @@ public class ParentalControlsUtils {
    @Nullable
    @VisibleForTesting
    static RestrictedLockUtils.EnforcedAdmin parentConsentRequiredInternal(
            @NonNull DevicePolicyManager dpm,
            @Nullable SupervisionManager sm,
            @NonNull Context context,
            @BiometricAuthenticator.Modality int modality,
            @NonNull UserHandle userHandle) {
        final DevicePolicyManager dpm = context.getSystemService(DevicePolicyManager.class);
        final SupervisionManager sm =
                android.app.supervision.flags.Flags.deprecateDpmSupervisionApis()
                        ? context.getSystemService(SupervisionManager.class)
                        : null;

        if (!ParentalControlsUtilsInternal.parentConsentRequired(
                dpm, sm, modality, userHandle)) {
            return null;
        }
        if (android.app.supervision.flags.Flags.deprecateDpmSupervisionApis()) {
            // Supervision doesn't necessarily have have an admin component.
            return new RestrictedLockUtils.EnforcedAdmin(
                    /* component= */ null, UserManager.DISALLOW_BIOMETRIC, userHandle);
            return SupervisionRestrictionsHelper.createEnforcedAdmin(
                    context, UserManager.DISALLOW_BIOMETRIC, userHandle);
        } else {
            final ComponentName cn =
                    ParentalControlsUtilsInternal.getSupervisionComponentName(dpm, userHandle);
+24 −15
Original line number Diff line number Diff line
@@ -27,13 +27,12 @@ import static org.junit.Assert.assertEquals;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyInt;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.when;

import android.app.admin.DevicePolicyManager;
import android.app.supervision.SupervisionManager;
import android.content.ComponentName;
import android.content.ContentResolver;
import android.content.Context;
import android.hardware.biometrics.BiometricAuthenticator;
import android.os.UserHandle;
@@ -44,6 +43,7 @@ import android.platform.test.flag.junit.CheckFlagsRule;
import android.platform.test.flag.junit.DeviceFlagsValueProvider;

import androidx.annotation.Nullable;
import androidx.test.core.app.ApplicationProvider;
import androidx.test.ext.junit.runners.AndroidJUnit4;

import com.android.settingslib.RestrictedLockUtils;
@@ -53,22 +53,29 @@ import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.mockito.junit.MockitoJUnit;
import org.mockito.junit.MockitoRule;

@RunWith(AndroidJUnit4.class)
public class ParentalControlsUtilsTest {
    @Rule public final CheckFlagsRule checkFlags = DeviceFlagsValueProvider.createCheckFlagsRule();
    @Rule
    public final CheckFlagsRule checkFlags = DeviceFlagsValueProvider.createCheckFlagsRule();
    @Rule
    public final MockitoRule mocks = MockitoJUnit.rule();

    @Mock private Context mContext;
    @Mock private DevicePolicyManager mDpm;
    @Mock private SupervisionManager mSm;
    private Context mContext;
    @Mock
    private DevicePolicyManager mDpm;
    @Mock
    private SupervisionManager mSm;

    private ComponentName mSupervisionComponentName = new ComponentName("pkg", "cls");
    private final ComponentName mSupervisionComponent = new ComponentName("pkg", "cls");

    @Before
    public void setUp() {
        MockitoAnnotations.initMocks(this);
        when(mContext.getContentResolver()).thenReturn(mock(ContentResolver.class));
        mContext = spy(ApplicationProvider.getApplicationContext());
        when(mContext.getSystemService(DevicePolicyManager.class)).thenReturn(mDpm);
        when(mContext.getSystemService(SupervisionManager.class)).thenReturn(mSm);
    }

    /**
@@ -85,7 +92,7 @@ public class ParentalControlsUtilsTest {
                .thenReturn(keyguardDisabledFlags);

        return ParentalControlsUtils.parentConsentRequiredInternal(
                mDpm, mSm, modality, new UserHandle(UserHandle.myUserId()));
                mContext, modality, new UserHandle(UserHandle.myUserId()));
    }

    /**
@@ -97,11 +104,13 @@ public class ParentalControlsUtilsTest {
            boolean supervisionEnabled,
            @BiometricAuthenticator.Modality int modality,
            int keyguardDisabledFlags) {
        when(mSm.isSupervisionEnabledForUser(anyInt())).thenReturn(supervisionEnabled);
        when(mDpm.getKeyguardDisabledFeatures(eq(null))).thenReturn(keyguardDisabledFlags);
        when(mSm.isSupervisionEnabledForUser(anyInt())).thenReturn(supervisionEnabled);
        when(mSm.getActiveSupervisionAppPackage()).thenReturn(
                supervisionEnabled ? mSupervisionComponent.getPackageName() : null);

        return ParentalControlsUtils.parentConsentRequiredInternal(
                mDpm, mSm, modality, new UserHandle(UserHandle.myUserId()));
                mContext, modality, new UserHandle(UserHandle.myUserId()));
    }

    @Test
@@ -115,11 +124,11 @@ public class ParentalControlsUtilsTest {

        for (int i = 0; i < tests.length; i++) {
            RestrictedLockUtils.EnforcedAdmin admin = getEnforcedAdminForCombination(
                    mSupervisionComponentName, tests[i][0] /* modality */,
                    mSupervisionComponent, tests[i][0] /* modality */,
                    tests[i][1] /* keyguardDisableFlags */);
            assertNotNull(admin);
            assertEquals(UserManager.DISALLOW_BIOMETRIC, admin.enforcedRestriction);
            assertEquals(mSupervisionComponentName, admin.component);
            assertEquals(mSupervisionComponent, admin.component);
        }
    }

+1 −0
Original line number Diff line number Diff line
@@ -198,6 +198,7 @@ public class CombinedBiometricStatusUtilsTest {
    @EnableFlags(android.app.supervision.flags.Flags.FLAG_DEPRECATE_DPM_SUPERVISION_APIS)
    public void getDisabledAdmin_whenFingerprintDisabled_whenFaceDisabled_returnsRestrictions() {
        when(mSupervisionManager.isSupervisionEnabledForUser(USER_ID)).thenReturn(true);
        when(mSupervisionManager.getActiveSupervisionAppPackage()).thenReturn("supervision.pkg");
        when(mDevicePolicyManager.getKeyguardDisabledFeatures(null))
                .thenReturn(KEYGUARD_DISABLE_FACE | KEYGUARD_DISABLE_FINGERPRINT);

+1 −0
Original line number Diff line number Diff line
@@ -155,6 +155,7 @@ public class FaceStatusUtilsTest {
    @EnableFlags(android.app.supervision.flags.Flags.FLAG_DEPRECATE_DPM_SUPERVISION_APIS)
    public void getDisabledAdmin_whenFaceDisabled_returnsRestriction() {
        when(mSupervisionManager.isSupervisionEnabledForUser(USER_ID)).thenReturn(true);
        when(mSupervisionManager.getActiveSupervisionAppPackage()).thenReturn("supervision.pkg");
        when(mDevicePolicyManager.getKeyguardDisabledFeatures(null))
                .thenReturn(DevicePolicyManager.KEYGUARD_DISABLE_FACE);

+1 −0
Original line number Diff line number Diff line
@@ -161,6 +161,7 @@ public class FingerprintStatusUtilsTest {
    @EnableFlags(android.app.supervision.flags.Flags.FLAG_DEPRECATE_DPM_SUPERVISION_APIS)
    public void getDisabledAdmin_whenFingerprintDisabled_returnsRestriction() {
        when(mSupervisionManager.isSupervisionEnabledForUser(USER_ID)).thenReturn(true);
        when(mSupervisionManager.getActiveSupervisionAppPackage()).thenReturn("supervision.pkg");
        when(mDevicePolicyManager.getKeyguardDisabledFeatures(null))
                .thenReturn(DevicePolicyManager.KEYGUARD_DISABLE_FINGERPRINT);

Loading