summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author TreeHugger Robot <treehugger-gerrit@google.com> 2020-07-29 20:27:33 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2020-07-29 20:27:33 +0000
commit77e0358c585ec5007be482dba2cc6a97fc77365a (patch)
tree87526c80b799a6d08aae5ce974a98d87dd7aa99d
parent4a21b8ec404dbc5629cb1862ff020b8fb2c4e2cc (diff)
parent7f31e5e8f908b4ddde97225e4687a65c770868b4 (diff)
Merge "Get carrier-privileged app bookkeeping out of the main standby lock"
-rw-r--r--apex/jobscheduler/service/java/com/android/server/usage/AppStandbyController.java23
1 files changed, 15 insertions, 8 deletions
diff --git a/apex/jobscheduler/service/java/com/android/server/usage/AppStandbyController.java b/apex/jobscheduler/service/java/com/android/server/usage/AppStandbyController.java
index 2f993dad51c7..6bc95bf8bc75 100644
--- a/apex/jobscheduler/service/java/com/android/server/usage/AppStandbyController.java
+++ b/apex/jobscheduler/service/java/com/android/server/usage/AppStandbyController.java
@@ -222,12 +222,19 @@ public class AppStandbyController implements AppStandbyInternal {
@GuardedBy("mPackageAccessListeners")
private final ArrayList<AppIdleStateChangeListener> mPackageAccessListeners = new ArrayList<>();
+ /**
+ * Lock specifically for bookkeeping around the carrier-privileged app set.
+ * Do not acquire any other locks while holding this one. Methods that
+ * require this lock to be held are named with a "CPL" suffix.
+ */
+ private final Object mCarrierPrivilegedLock = new Lock();
+
/** Whether we've queried the list of carrier privileged apps. */
- @GuardedBy("mAppIdleLock")
+ @GuardedBy("mCarrierPrivilegedLock")
private boolean mHaveCarrierPrivilegedApps;
/** List of carrier-privileged apps that should be excluded from standby */
- @GuardedBy("mAppIdleLock")
+ @GuardedBy("mCarrierPrivilegedLock")
private List<String> mCarrierPrivilegedApps;
@GuardedBy("mActiveAdminApps")
@@ -1594,9 +1601,9 @@ public class AppStandbyController implements AppStandbyInternal {
}
private boolean isCarrierApp(String packageName) {
- synchronized (mAppIdleLock) {
+ synchronized (mCarrierPrivilegedLock) {
if (!mHaveCarrierPrivilegedApps) {
- fetchCarrierPrivilegedAppsLocked();
+ fetchCarrierPrivilegedAppsCPL();
}
if (mCarrierPrivilegedApps != null) {
return mCarrierPrivilegedApps.contains(packageName);
@@ -1610,14 +1617,14 @@ public class AppStandbyController implements AppStandbyInternal {
if (DEBUG) {
Slog.i(TAG, "Clearing carrier privileged apps list");
}
- synchronized (mAppIdleLock) {
+ synchronized (mCarrierPrivilegedLock) {
mHaveCarrierPrivilegedApps = false;
mCarrierPrivilegedApps = null; // Need to be refetched.
}
}
- @GuardedBy("mAppIdleLock")
- private void fetchCarrierPrivilegedAppsLocked() {
+ @GuardedBy("mCarrierPrivilegedLock")
+ private void fetchCarrierPrivilegedAppsCPL() {
TelephonyManager telephonyManager =
mContext.getSystemService(TelephonyManager.class);
mCarrierPrivilegedApps =
@@ -1858,7 +1865,7 @@ public class AppStandbyController implements AppStandbyInternal {
@Override
public void dumpState(String[] args, PrintWriter pw) {
- synchronized (mAppIdleLock) {
+ synchronized (mCarrierPrivilegedLock) {
pw.println("Carrier privileged apps (have=" + mHaveCarrierPrivilegedApps
+ "): " + mCarrierPrivilegedApps);
}