diff options
author | TreeHugger Robot <treehugger-gerrit@google.com> | 2021-06-30 03:03:32 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2021-06-30 03:03:32 +0000 |
commit | 12ded20343075f80ea375abf459bc9d382e11800 (patch) | |
tree | a315a36e6a3d4372d13d04a0e8c7cd6de42c468f | |
parent | ed6a76796f4047845be3baf9c58cb1b1f12c9faf (diff) | |
parent | 20a8ef3c7f4862a2033015c2827380579bf3dec7 (diff) |
Merge "Exempt default_input_method from BG-FGS-start restriction." into sc-dev
-rw-r--r-- | apex/jobscheduler/framework/java/android/os/PowerExemptionManager.java | 5 | ||||
-rw-r--r-- | services/core/java/com/android/server/am/ActiveServices.java | 15 |
2 files changed, 20 insertions, 0 deletions
diff --git a/apex/jobscheduler/framework/java/android/os/PowerExemptionManager.java b/apex/jobscheduler/framework/java/android/os/PowerExemptionManager.java index 42e953b72a69..a1a46afcffe6 100644 --- a/apex/jobscheduler/framework/java/android/os/PowerExemptionManager.java +++ b/apex/jobscheduler/framework/java/android/os/PowerExemptionManager.java @@ -190,6 +190,8 @@ public class PowerExemptionManager { * @hide */ public static final int REASON_TEMP_ALLOWED_WHILE_IN_USE = 70; + /** @hide */ + public static final int REASON_CURRENT_INPUT_METHOD = 71; /* BG-FGS-launch is allowed by temp-allow-list or system-allow-list. Reason code for temp and system allow list starts here. @@ -381,6 +383,7 @@ public class PowerExemptionManager { REASON_ACTIVITY_VISIBILITY_GRACE_PERIOD, REASON_OP_ACTIVATE_VPN, REASON_OP_ACTIVATE_PLATFORM_VPN, + REASON_CURRENT_INPUT_METHOD, REASON_TEMP_ALLOWED_WHILE_IN_USE, // temp and system allow list reasons. REASON_GEOFENCING, @@ -649,6 +652,8 @@ public class PowerExemptionManager { return "OP_ACTIVATE_VPN"; case REASON_OP_ACTIVATE_PLATFORM_VPN: return "OP_ACTIVATE_PLATFORM_VPN"; + case REASON_CURRENT_INPUT_METHOD: + return "CURRENT_INPUT_METHOD"; case REASON_TEMP_ALLOWED_WHILE_IN_USE: return "TEMP_ALLOWED_WHILE_IN_USE"; case REASON_GEOFENCING: diff --git a/services/core/java/com/android/server/am/ActiveServices.java b/services/core/java/com/android/server/am/ActiveServices.java index 58a1ead3ed1d..875ef377f442 100644 --- a/services/core/java/com/android/server/am/ActiveServices.java +++ b/services/core/java/com/android/server/am/ActiveServices.java @@ -36,6 +36,7 @@ import static android.os.PowerExemptionManager.REASON_DENIED; import static android.os.PowerExemptionManager.REASON_DEVICE_DEMO_MODE; import static android.os.PowerExemptionManager.REASON_DEVICE_OWNER; import static android.os.PowerExemptionManager.REASON_FGS_BINDING; +import static android.os.PowerExemptionManager.REASON_CURRENT_INPUT_METHOD; import static android.os.PowerExemptionManager.REASON_INSTR_BACKGROUND_ACTIVITY_PERMISSION; import static android.os.PowerExemptionManager.REASON_INSTR_BACKGROUND_FGS_PERMISSION; import static android.os.PowerExemptionManager.REASON_OPT_OUT_REQUESTED; @@ -6162,6 +6163,20 @@ public final class ActiveServices { ret = REASON_OP_ACTIVATE_PLATFORM_VPN; } } + + if (ret == REASON_DENIED) { + final String inputMethod = + Settings.Secure.getStringForUser(mAm.mContext.getContentResolver(), + Settings.Secure.DEFAULT_INPUT_METHOD, + UserHandle.getUserId(callingUid)); + if (inputMethod != null) { + final ComponentName cn = ComponentName.unflattenFromString(inputMethod); + if (cn != null && cn.getPackageName().equals(callingPackage)) { + ret = REASON_CURRENT_INPUT_METHOD; + } + } + } + if (ret == REASON_DENIED) { if (mAm.mConstants.mFgsAllowOptOut && targetService != null |