diff options
| author | 2020-07-29 10:20:00 -0700 | |
|---|---|---|
| committer | 2020-07-29 11:40:50 -0700 | |
| commit | 7f31e5e8f908b4ddde97225e4687a65c770868b4 (patch) | |
| tree | 3480aa928c661c62f2b666cbb2bc28a6f5b9e6f0 | |
| parent | 3f32100e48e88058a008ce416d846746d9cffe44 (diff) | |
Get carrier-privileged app bookkeeping out of the main standby lock
Bug: 155570933
Test: atest AppStandbyTests
Change-Id: I61e36766edfdd13e91da39fb86496fa7515c9e4f
| -rw-r--r-- | apex/jobscheduler/service/java/com/android/server/usage/AppStandbyController.java | 23 |
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); } |