From 0c34d259a045de6ad74818bf18a636273b1c1a4a Mon Sep 17 00:00:00 2001 From: Kevin Chyn Date: Tue, 15 Jun 2021 13:34:11 -0700 Subject: [PATCH] Show biometric-specific dialog when appropriate 1) We need to pass a "restriction" string from settings to the dialog, otherwise the biometric dialog could be shown in non-biometric flows 2) Updates ActionDisabledByAdminDialogHelper to pass the restrition to be taken into consideration when creating the controller 3) Sets an optional onClickListener on the positive button. Bug: 5788943 Test: atest ParentalControlsUtilsTest Change-Id: Iedff7fef50e186b2779f061f37d3080c910d2179 --- .../settings/biometrics/ParentalControlsUtils.java | 7 +++++-- .../enterprise/ActionDisabledByAdminDialog.java | 2 +- .../enterprise/ActionDisabledByAdminDialogHelper.java | 10 ++++++++-- .../settings/biometrics/ParentalControlsUtilsTest.java | 2 ++ 4 files changed, 16 insertions(+), 5 deletions(-) diff --git a/src/com/android/settings/biometrics/ParentalControlsUtils.java b/src/com/android/settings/biometrics/ParentalControlsUtils.java index 2d3673b2de3..0959184b16f 100644 --- a/src/com/android/settings/biometrics/ParentalControlsUtils.java +++ b/src/com/android/settings/biometrics/ParentalControlsUtils.java @@ -22,6 +22,7 @@ import android.content.Context; import android.hardware.biometrics.BiometricAuthenticator; import android.hardware.biometrics.ParentalControlsUtilsInternal; import android.os.UserHandle; +import android.os.UserManager; import android.util.Log; import androidx.annotation.NonNull; @@ -49,7 +50,8 @@ public class ParentalControlsUtils { final UserHandle userHandle = new UserHandle(UserHandle.myUserId()); if (ParentalControlsUtilsInternal.isTestModeEnabled(context)) { Log.d(TAG, "Requiring consent for test flow"); - return new RestrictedLockUtils.EnforcedAdmin(null /* ComponentName */, userHandle); + return new RestrictedLockUtils.EnforcedAdmin(null /* ComponentName */, + UserManager.DISALLOW_BIOMETRIC, userHandle); } final DevicePolicyManager dpm = context.getSystemService(DevicePolicyManager.class); @@ -69,7 +71,8 @@ public class ParentalControlsUtils { userHandle)) { final ComponentName cn = ParentalControlsUtilsInternal.getSupervisionComponentName(dpm, userHandle); - return new RestrictedLockUtils.EnforcedAdmin(cn, userHandle); + return new RestrictedLockUtils.EnforcedAdmin(cn, UserManager.DISALLOW_BIOMETRIC, + userHandle); } else { return null; } diff --git a/src/com/android/settings/enterprise/ActionDisabledByAdminDialog.java b/src/com/android/settings/enterprise/ActionDisabledByAdminDialog.java index 717c5bcd757..ce7ad242056 100644 --- a/src/com/android/settings/enterprise/ActionDisabledByAdminDialog.java +++ b/src/com/android/settings/enterprise/ActionDisabledByAdminDialog.java @@ -37,7 +37,7 @@ public class ActionDisabledByAdminDialog extends Activity final RestrictedLockUtils.EnforcedAdmin enforcedAdmin = getAdminDetailsFromIntent(getIntent()); final String restriction = getRestrictionFromIntent(getIntent()); - mDialogHelper = new ActionDisabledByAdminDialogHelper(this); + mDialogHelper = new ActionDisabledByAdminDialogHelper(this, restriction); mDialogHelper.prepareDialogBuilder(restriction, enforcedAdmin) .setOnDismissListener(this) .show(); diff --git a/src/com/android/settings/enterprise/ActionDisabledByAdminDialogHelper.java b/src/com/android/settings/enterprise/ActionDisabledByAdminDialogHelper.java index 5da076736e9..e30f8900655 100644 --- a/src/com/android/settings/enterprise/ActionDisabledByAdminDialogHelper.java +++ b/src/com/android/settings/enterprise/ActionDisabledByAdminDialogHelper.java @@ -56,11 +56,16 @@ public final class ActionDisabledByAdminDialogHelper { private final Activity mActivity; public ActionDisabledByAdminDialogHelper(Activity activity) { + this(activity, null /* restriction */); + } + + public ActionDisabledByAdminDialogHelper(Activity activity, String restriction) { mActivity = activity; mDialogView = (ViewGroup) LayoutInflater.from(mActivity).inflate( R.layout.admin_support_details_dialog, null); mActionDisabledByAdminController = ActionDisabledByAdminControllerFactory - .createInstance(mActivity, new DeviceAdminStringProviderImpl(mActivity)); + .createInstance(mActivity, restriction, + new DeviceAdminStringProviderImpl(mActivity)); } private @UserIdInt int getEnforcementAdminUserId(@NonNull EnforcedAdmin admin) { @@ -74,7 +79,8 @@ public final class ActionDisabledByAdminDialogHelper { public AlertDialog.Builder prepareDialogBuilder(String restriction, EnforcedAdmin enforcedAdmin) { AlertDialog.Builder builder = new AlertDialog.Builder(mActivity) - .setPositiveButton(R.string.okay, null) + .setPositiveButton(R.string.okay, + mActionDisabledByAdminController.getPositiveButtonListener()) .setView(mDialogView); prepareDialogBuilder(builder, restriction, enforcedAdmin); return builder; diff --git a/tests/unit/src/com/android/settings/biometrics/ParentalControlsUtilsTest.java b/tests/unit/src/com/android/settings/biometrics/ParentalControlsUtilsTest.java index a820d655ceb..5128af0d410 100644 --- a/tests/unit/src/com/android/settings/biometrics/ParentalControlsUtilsTest.java +++ b/tests/unit/src/com/android/settings/biometrics/ParentalControlsUtilsTest.java @@ -35,6 +35,7 @@ import static android.hardware.biometrics.BiometricAuthenticator.TYPE_IRIS; import android.hardware.biometrics.BiometricAuthenticator; import android.os.UserHandle; +import android.os.UserManager; import androidx.annotation.Nullable; import androidx.test.ext.junit.runners.AndroidJUnit4; @@ -92,6 +93,7 @@ public class ParentalControlsUtilsTest { mSupervisionComponentName, tests[i][0] /* modality */, tests[i][1] /* keyguardDisableFlags */); assertNotNull(admin); + assertEquals(UserManager.DISALLOW_BIOMETRIC, admin.enforcedRestriction); assertEquals(mSupervisionComponentName, admin.component); } }