Loading src/com/android/settings/biometrics/ParentalControlsUtils.java +11 −11 Original line number Diff line number Diff line Loading @@ -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, Loading Loading @@ -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); } /** Loading @@ -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); Loading tests/unit/src/com/android/settings/biometrics/ParentalControlsUtilsTest.java +24 −15 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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; Loading @@ -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); } /** Loading @@ -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())); } /** Loading @@ -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 Loading @@ -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); } } Loading tests/unit/src/com/android/settings/biometrics/combination/CombinedBiometricStatusUtilsTest.java +1 −0 Original line number Diff line number Diff line Loading @@ -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); Loading tests/unit/src/com/android/settings/biometrics/face/FaceStatusUtilsTest.java +1 −0 Original line number Diff line number Diff line Loading @@ -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); Loading tests/unit/src/com/android/settings/biometrics/fingerprint/FingerprintStatusUtilsTest.java +1 −0 Original line number Diff line number Diff line Loading @@ -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 Loading
src/com/android/settings/biometrics/ParentalControlsUtils.java +11 −11 Original line number Diff line number Diff line Loading @@ -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, Loading Loading @@ -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); } /** Loading @@ -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); Loading
tests/unit/src/com/android/settings/biometrics/ParentalControlsUtilsTest.java +24 −15 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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; Loading @@ -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); } /** Loading @@ -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())); } /** Loading @@ -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 Loading @@ -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); } } Loading
tests/unit/src/com/android/settings/biometrics/combination/CombinedBiometricStatusUtilsTest.java +1 −0 Original line number Diff line number Diff line Loading @@ -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); Loading
tests/unit/src/com/android/settings/biometrics/face/FaceStatusUtilsTest.java +1 −0 Original line number Diff line number Diff line Loading @@ -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); Loading
tests/unit/src/com/android/settings/biometrics/fingerprint/FingerprintStatusUtilsTest.java +1 −0 Original line number Diff line number Diff line Loading @@ -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