diff options
| author | 2020-12-07 17:16:46 +0000 | |
|---|---|---|
| committer | 2020-12-07 17:16:46 +0000 | |
| commit | 7344dac2f3be2cb6c5c89ce10d54b322db8b33fd (patch) | |
| tree | f5585781fdcfc7144815c02cc424edd43a244c3a | |
| parent | 55fc541c000eadc9623340a019eec782fbb17eeb (diff) | |
| parent | f9718b4eb700e8c34d75e6066af3006bac838124 (diff) | |
Merge "Exposed some DPM members as @TestApi."
4 files changed, 37 insertions, 10 deletions
diff --git a/core/api/test-current.txt b/core/api/test-current.txt index 80a160a67fdd..a448435926d9 100644 --- a/core/api/test-current.txt +++ b/core/api/test-current.txt @@ -372,8 +372,15 @@ package android.app.admin { method public java.util.List<java.lang.String> getOwnerInstalledCaCerts(@NonNull android.os.UserHandle); method public boolean isCurrentInputMethodSetByOwner(); method public boolean isFactoryResetProtectionPolicySupported(); + method @NonNull public static String operationToString(int); + method @RequiresPermission("android.permission.MANAGE_DEVICE_ADMINS") public void setNextOperationSafety(int, boolean); field public static final String ACTION_DATA_SHARING_RESTRICTION_APPLIED = "android.app.action.DATA_SHARING_RESTRICTION_APPLIED"; + field public static final int OPERATION_CREATE_AND_MANAGE_USER = 5; // 0x5 field public static final int OPERATION_LOCK_NOW = 1; // 0x1 + field public static final int OPERATION_REMOVE_USER = 6; // 0x6 + field public static final int OPERATION_START_USER_IN_BACKGROUND = 3; // 0x3 + field public static final int OPERATION_STOP_USER = 4; // 0x4 + field public static final int OPERATION_SWITCH_USER = 2; // 0x2 } public static final class SecurityLog.SecurityEvent implements android.os.Parcelable { diff --git a/core/java/android/app/admin/DevicePolicyManager.java b/core/java/android/app/admin/DevicePolicyManager.java index da1219bdd19c..4095acc239e9 100644 --- a/core/java/android/app/admin/DevicePolicyManager.java +++ b/core/java/android/app/admin/DevicePolicyManager.java @@ -39,6 +39,7 @@ import android.annotation.WorkerThread; import android.app.Activity; import android.app.IServiceConnection; import android.app.KeyguardManager; +import android.app.admin.DevicePolicyManager.DevicePolicyOperation; import android.app.admin.SecurityLog.SecurityEvent; import android.compat.annotation.UnsupportedAppUsage; import android.content.ComponentName; @@ -2591,27 +2592,27 @@ public class DevicePolicyManager { @Retention(RetentionPolicy.SOURCE) public @interface PersonalAppsSuspensionReason {} - // TODO(b/172376923) - make all (or none) @TestApi - /** @hide */ @TestApi public static final int OPERATION_LOCK_NOW = 1; - /** @hide */ + @TestApi public static final int OPERATION_SWITCH_USER = 2; /** @hide */ + @TestApi public static final int OPERATION_START_USER_IN_BACKGROUND = 3; /** @hide */ + @TestApi public static final int OPERATION_STOP_USER = 4; /** @hide */ + @TestApi public static final int OPERATION_CREATE_AND_MANAGE_USER = 5; /** @hide */ + @TestApi public static final int OPERATION_REMOVE_USER = 6; private static final String PREFIX_OPERATION = "OPERATION_"; - - // TODO(b/172376923) - add all operations /** @hide */ @IntDef(prefix = PREFIX_OPERATION, value = { OPERATION_LOCK_NOW, @@ -2626,6 +2627,8 @@ public class DevicePolicyManager { } /** @hide */ + @TestApi + @NonNull public static String operationToString(@DevicePolicyOperation int operation) { return DebugUtils.constantToString(DevicePolicyManager.class, PREFIX_OPERATION, operation); } @@ -12534,4 +12537,21 @@ public class DevicePolicyManager { } return false; } + + /** + * Used by CTS to set the result of the next safety operation check. + * + * @hide + */ + @TestApi + @RequiresPermission(android.Manifest.permission.MANAGE_DEVICE_ADMINS) + public void setNextOperationSafety(@DevicePolicyOperation int operation, boolean safe) { + if (mService != null) { + try { + mService.setNextOperationSafety(operation, safe); + } catch (RemoteException re) { + throw re.rethrowFromSystemServer(); + } + } + } } diff --git a/core/java/android/app/admin/IDevicePolicyManager.aidl b/core/java/android/app/admin/IDevicePolicyManager.aidl index 8be3cdc1296a..e21fee2c5425 100644 --- a/core/java/android/app/admin/IDevicePolicyManager.aidl +++ b/core/java/android/app/admin/IDevicePolicyManager.aidl @@ -484,5 +484,7 @@ interface IDevicePolicyManager { long getManagedProfileMaximumTimeOff(in ComponentName admin); void setManagedProfileMaximumTimeOff(in ComponentName admin, long timeoutMs); - boolean canProfileOwnerResetPasswordWhenLocked(in int userId); + boolean canProfileOwnerResetPasswordWhenLocked(int userId); + + void setNextOperationSafety(int operation, boolean safe); } diff --git a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java index 6f22f1139ba9..edcf9e8399a8 100644 --- a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java +++ b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java @@ -1017,10 +1017,8 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { return mSafetyChecker == null || mSafetyChecker.isDevicePolicyOperationSafe(operation); } - /** - * Used by {@code cmd device_policy} to set the result of the next safety operation check. - */ - void setNextOperationSafety(@DevicePolicyOperation int operation, boolean safe) { + @Override + public void setNextOperationSafety(@DevicePolicyOperation int operation, boolean safe) { Preconditions.checkCallAuthorization( hasCallingOrSelfPermission(permission.MANAGE_DEVICE_ADMINS)); Slog.i(LOG_TAG, "setNextOperationSafety(" + DevicePolicyManager.operationToString(operation) |