summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author TreeHugger Robot <treehugger-gerrit@google.com> 2020-12-07 17:16:46 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2020-12-07 17:16:46 +0000
commit7344dac2f3be2cb6c5c89ce10d54b322db8b33fd (patch)
treef5585781fdcfc7144815c02cc424edd43a244c3a
parent55fc541c000eadc9623340a019eec782fbb17eeb (diff)
parentf9718b4eb700e8c34d75e6066af3006bac838124 (diff)
Merge "Exposed some DPM members as @TestApi."
-rw-r--r--core/api/test-current.txt7
-rw-r--r--core/java/android/app/admin/DevicePolicyManager.java30
-rw-r--r--core/java/android/app/admin/IDevicePolicyManager.aidl4
-rw-r--r--services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java6
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)