From bc2fadd080d1f190a51184a538f4a0990c1c1cce Mon Sep 17 00:00:00 2001 From: Sudheer Shanka Date: Tue, 27 Sep 2016 17:36:39 -0700 Subject: [PATCH] Update AppOpsService to remove user state after the user is removed. Change-Id: I5de3ec680b0ba1a6cb8dd0557fe10a3e06ecb285 Fixes: 31779315 Test: manual --- .../java/com/android/server/AppOpsService.java | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/services/core/java/com/android/server/AppOpsService.java b/services/core/java/com/android/server/AppOpsService.java index 4caeba84b2020..238bf927c43eb 100644 --- a/services/core/java/com/android/server/AppOpsService.java +++ b/services/core/java/com/android/server/AppOpsService.java @@ -2277,6 +2277,16 @@ public class AppOpsService extends IAppOpsService.Stub { ClientRestrictionState opRestrictions = mOpUserRestrictions.valueAt(i); opRestrictions.removeUser(userHandle); } + removeUidsForUserLocked(userHandle); + } + } + + private void removeUidsForUserLocked(int userHandle) { + for (int i = mUidStates.size() - 1; i >= 0; --i) { + final int uid = mUidStates.keyAt(i); + if (UserHandle.getUserId(uid) == userHandle) { + mUidStates.removeAt(i); + } } } @@ -2396,6 +2406,12 @@ public class AppOpsService extends IAppOpsService.Stub { perUserExcludedPackages = null; } } + if (perUserRestrictions != null) { + perUserRestrictions.remove(userId); + if (perUserRestrictions.size() <= 0) { + perUserRestrictions = null; + } + } } public boolean isDefault() {