[Settings] Add a verification flow for exiting repair mode
Handles the ACTION_CONFIRM_REPAIR_MODE_DEVICE_CREDENTIAL
intent to launch the confirm device credential activity for
users to exiting repair mode. The activity passes a special
user id USER_REPAIR_MODE to the framework and verify credentials
that the user enrolled in normal mode.
Bug: 277561275
Test: am start -a android.app.action.PREPARE_REPAIR_MODE_DEVICE_CREDENTIAL
settings put global repair_mode_active 1
am start -a android.app.action.CONFIRM_REPAIR_MODE_DEVICE_CREDENTIAL
The credential is verified successfully.
Change-Id: I9ffe32f9925ee2b990c49d5674d27196a4c9edf7
This commit is contained in:
@@ -708,9 +708,13 @@ public final class Utils extends com.android.settingslib.Utils {
|
||||
final int userId = bundle.getInt(Intent.EXTRA_USER_ID, UserHandle.myUserId());
|
||||
if (userId == LockPatternUtils.USER_FRP) {
|
||||
return allowAnyUser ? userId : checkUserOwnsFrpCredential(context, userId);
|
||||
} else {
|
||||
return allowAnyUser ? userId : enforceSameOwner(context, userId);
|
||||
}
|
||||
if (userId == LockPatternUtils.USER_REPAIR_MODE) {
|
||||
enforceRepairModeActive(context);
|
||||
// any users can exit repair mode
|
||||
return userId;
|
||||
}
|
||||
return allowAnyUser ? userId : enforceSameOwner(context, userId);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -729,6 +733,16 @@ public final class Utils extends com.android.settingslib.Utils {
|
||||
+ " does not own frp credential.");
|
||||
}
|
||||
|
||||
/**
|
||||
* Throws {@link SecurityException} if repair mode is not active on the device.
|
||||
*/
|
||||
private static void enforceRepairModeActive(Context context) {
|
||||
if (LockPatternUtils.isRepairModeActive(context)) {
|
||||
return;
|
||||
}
|
||||
throw new SecurityException("Repair mode is not active on the device.");
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the given user id if it belongs to the current user.
|
||||
*
|
||||
|
||||
Reference in New Issue
Block a user