summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Kevin Han <kevhan@google.com> 2021-02-17 18:13:56 -0800
committer Kevin Han <kevhan@google.com> 2021-02-17 18:13:56 -0800
commitf05208818a07e1d80665a4a391b5b04d57e7a710 (patch)
tree109b339ba515892111a5c31de31cbdcdf818d19e
parentc2d6240642852362dc6e255d6396b9065e79762c (diff)
Check user states exist before package add/removal
It's possible for packages to be added/removed for a user even if they are not yet unlocked. This could cause a NPE, so we check beforehand and ignore if the the user states have not been initialized. This is fine because on user unlock, we get the most up to date package data anyway. Bug: 175829330 Test: atest AppHibernationService Change-Id: Ia29359d38325be5a40d84237fd7fc1b5ba356c5d
-rw-r--r--services/core/java/com/android/server/apphibernation/AppHibernationService.java6
1 files changed, 6 insertions, 0 deletions
diff --git a/services/core/java/com/android/server/apphibernation/AppHibernationService.java b/services/core/java/com/android/server/apphibernation/AppHibernationService.java
index e97f0b47380a..d98057dc87cc 100644
--- a/services/core/java/com/android/server/apphibernation/AppHibernationService.java
+++ b/services/core/java/com/android/server/apphibernation/AppHibernationService.java
@@ -421,6 +421,9 @@ public final class AppHibernationService extends SystemService {
private void onPackageAdded(@NonNull String packageName, int userId) {
synchronized (mLock) {
+ if (!mUserStates.contains(userId)) {
+ return;
+ }
UserLevelState userState = new UserLevelState();
userState.packageName = packageName;
mUserStates.get(userId).put(packageName, userState);
@@ -434,6 +437,9 @@ public final class AppHibernationService extends SystemService {
private void onPackageRemoved(@NonNull String packageName, int userId) {
synchronized (mLock) {
+ if (!mUserStates.contains(userId)) {
+ return;
+ }
mUserStates.get(userId).remove(packageName);
}
}