Add DPMS reset password metrics

PDD: https://eldar.corp.google.com/assessments/875507949

RESET_PASSWORD
We log this when the admin forces a new password for the
device or the managed profile.
There is no log data (only the event).

RESET_PASSWORD_WITH_TOKEN
We log this when the admin forces a new password for the
device or the managed profile. The admin can change the
password even before the device is unlocked, as long as the
password reset token was previously provisioned.
There is no log data (only the event).

Bug: 186740337
Test: atest com.android.server.devicepolicy.DevicePolicyManagerTest
      atest com.android.cts.devicepolicy.MixedDeviceOwnerTest#testResetPasswordWithToken
Change-Id: I07b66904e423bc6e1f4bdd4ae44aad0cae6d537b
This commit is contained in:
Alex Johnston
2021-05-19 14:10:09 +01:00
parent 1d2868c45b
commit e011ffe22a

View File

@@ -4929,10 +4929,16 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager {
final CallerIdentity caller = getCallerIdentity();
final int userHandle = caller.getUserId();
// As of R, only privlleged caller holding RESET_PASSWORD can call resetPassword() to
// As of R, only privileged caller holding RESET_PASSWORD can call resetPassword() to
// set password to an unsecured user.
if (hasCallingPermission(permission.RESET_PASSWORD)) {
return setPasswordPrivileged(password, flags, caller);
final boolean result = setPasswordPrivileged(password, flags, caller);
if (result) {
DevicePolicyEventLogger
.createEvent(DevicePolicyEnums.RESET_PASSWORD)
.write();
}
return result;
}
// If caller has PO (or DO) throw or fail silently depending on its target SDK level.
@@ -15226,8 +15232,15 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager {
DevicePolicyData policy = getUserData(caller.getUserId());
if (policy.mPasswordTokenHandle != 0) {
final String password = passwordOrNull != null ? passwordOrNull : "";
return resetPasswordInternal(password, policy.mPasswordTokenHandle, token,
flags, caller);
final boolean result = resetPasswordInternal(password, policy.mPasswordTokenHandle,
token, flags, caller);
if (result) {
DevicePolicyEventLogger
.createEvent(DevicePolicyEnums.RESET_PASSWORD_WITH_TOKEN)
.setAdmin(caller.getComponentName())
.write();
}
return result;
} else {
Slogf.w(LOG_TAG, "No saved token handle");
}