From 8f1b2a6acccdd060893f7e8d8574575f383eb738 Mon Sep 17 00:00:00 2001 From: Ilyas Sung Date: Thu, 9 Feb 2023 16:59:40 +0000 Subject: [PATCH] Add DPM constant - Hibernation Exemption AppOp Bug: 246330879 Test: atest ApplicationExemptionsTest Change-Id: Iaf359e5d4e478d993bb4fcae5f893cf569bf24ca --- core/api/system-current.txt | 1 + core/java/android/app/admin/DevicePolicyManager.java | 11 ++++++++++- .../devicepolicy/DevicePolicyManagerService.java | 4 ++++ 3 files changed, 15 insertions(+), 1 deletion(-) diff --git a/core/api/system-current.txt b/core/api/system-current.txt index 22b73cc15e2e0..2d659b82d4ac0 100644 --- a/core/api/system-current.txt +++ b/core/api/system-current.txt @@ -1287,6 +1287,7 @@ package android.app.admin { field public static final int EXEMPT_FROM_ACTIVITY_BG_START_RESTRICTION = 2; // 0x2 field public static final int EXEMPT_FROM_APP_STANDBY = 0; // 0x0 field public static final int EXEMPT_FROM_DISMISSIBLE_NOTIFICATIONS = 1; // 0x1 + field public static final int EXEMPT_FROM_HIBERNATION = 3; // 0x3 field public static final String EXTRA_FORCE_UPDATE_ROLE_HOLDER = "android.app.extra.FORCE_UPDATE_ROLE_HOLDER"; field public static final String EXTRA_LOST_MODE_LOCATION = "android.app.extra.LOST_MODE_LOCATION"; field public static final String EXTRA_PROFILE_OWNER_NAME = "android.app.extra.PROFILE_OWNER_NAME"; diff --git a/core/java/android/app/admin/DevicePolicyManager.java b/core/java/android/app/admin/DevicePolicyManager.java index e7f6990fb4953..31b563229443e 100644 --- a/core/java/android/app/admin/DevicePolicyManager.java +++ b/core/java/android/app/admin/DevicePolicyManager.java @@ -3895,6 +3895,14 @@ public class DevicePolicyManager { @SystemApi public static final int EXEMPT_FROM_ACTIVITY_BG_START_RESTRICTION = 2; + /** + * Prevent an app from entering hibernation. + * + * @hide + */ + @SystemApi + public static final int EXEMPT_FROM_HIBERNATION = 3; + /** * Exemptions to platform restrictions, given to an application through * {@link #setApplicationExemptions(String, Set)}. @@ -3904,7 +3912,8 @@ public class DevicePolicyManager { @IntDef(prefix = { "EXEMPT_FROM_"}, value = { EXEMPT_FROM_APP_STANDBY, EXEMPT_FROM_DISMISSIBLE_NOTIFICATIONS, - EXEMPT_FROM_ACTIVITY_BG_START_RESTRICTION + EXEMPT_FROM_ACTIVITY_BG_START_RESTRICTION, + EXEMPT_FROM_HIBERNATION }) @Retention(RetentionPolicy.SOURCE) public @interface ApplicationExemptionConstants {} diff --git a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java index 22bd1071d8090..576b3a89c971a 100644 --- a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java +++ b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java @@ -33,6 +33,7 @@ import static android.app.AppOpsManager.MODE_DEFAULT; import static android.app.AppOpsManager.OPSTR_SYSTEM_EXEMPT_FROM_ACTIVITY_BG_START_RESTRICTION; import static android.app.AppOpsManager.OPSTR_SYSTEM_EXEMPT_FROM_APP_STANDBY; import static android.app.AppOpsManager.OPSTR_SYSTEM_EXEMPT_FROM_DISMISSIBLE_NOTIFICATIONS; +import static android.app.AppOpsManager.OPSTR_SYSTEM_EXEMPT_FROM_HIBERNATION; import static android.app.admin.DeviceAdminInfo.HEADLESS_DEVICE_OWNER_MODE_AFFILIATED; import static android.app.admin.DeviceAdminReceiver.ACTION_COMPLIANCE_ACKNOWLEDGEMENT_REQUIRED; import static android.app.admin.DeviceAdminReceiver.EXTRA_TRANSFER_OWNERSHIP_ADMIN_EXTRAS_BUNDLE; @@ -61,6 +62,7 @@ import static android.app.admin.DevicePolicyManager.ENCRYPTION_STATUS_ACTIVE_PER import static android.app.admin.DevicePolicyManager.EXEMPT_FROM_ACTIVITY_BG_START_RESTRICTION; import static android.app.admin.DevicePolicyManager.EXEMPT_FROM_APP_STANDBY; import static android.app.admin.DevicePolicyManager.EXEMPT_FROM_DISMISSIBLE_NOTIFICATIONS; +import static android.app.admin.DevicePolicyManager.EXEMPT_FROM_HIBERNATION; import static android.app.admin.DevicePolicyManager.EXTRA_PROVISIONING_ACCOUNT_TO_MIGRATE; import static android.app.admin.DevicePolicyManager.EXTRA_RESOURCE_IDS; import static android.app.admin.DevicePolicyManager.EXTRA_RESOURCE_TYPE; @@ -726,6 +728,8 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub { APPLICATION_EXEMPTION_CONSTANTS_TO_APP_OPS.put( EXEMPT_FROM_ACTIVITY_BG_START_RESTRICTION, OPSTR_SYSTEM_EXEMPT_FROM_ACTIVITY_BG_START_RESTRICTION); + APPLICATION_EXEMPTION_CONSTANTS_TO_APP_OPS.put( + EXEMPT_FROM_HIBERNATION, OPSTR_SYSTEM_EXEMPT_FROM_HIBERNATION); } /**