From e681c27dc62006358102a250b46726b7a88efe06 Mon Sep 17 00:00:00 2001 From: Adrian Roos Date: Mon, 8 Sep 2014 14:03:47 +0200 Subject: [PATCH] Only unbind agents of the user that is being refreshed Follow-up to I470261f659a573400b2eb1421eeb953c87e58b66. Bug: 17416492 Change-Id: If0da5f163049540476d84d147c0e733fab1ae6d5 --- .../android/server/trust/TrustManagerService.java | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/services/core/java/com/android/server/trust/TrustManagerService.java b/services/core/java/com/android/server/trust/TrustManagerService.java index c8b5b3e54bb40..48e46db7ceb6a 100644 --- a/services/core/java/com/android/server/trust/TrustManagerService.java +++ b/services/core/java/com/android/server/trust/TrustManagerService.java @@ -159,6 +159,11 @@ public class TrustManagerService extends SystemService { void refreshAgentList(int userId) { if (DEBUG) Slog.d(TAG, "refreshAgentList()"); + if (userId != UserHandle.USER_ALL && userId < UserHandle.USER_OWNER) { + Log.e(TAG, "refreshAgentList(userId=" + userId + "): Invalid user handle," + + " must be USER_ALL or a specific user.", new Throwable("here")); + userId = UserHandle.USER_ALL; + } PackageManager pm = mContext.getPackageManager(); List userInfos; @@ -228,11 +233,13 @@ public class TrustManagerService extends SystemService { boolean trustMayHaveChanged = false; for (int i = 0; i < obsoleteAgents.size(); i++) { AgentInfo info = obsoleteAgents.valueAt(i); - if (info.agent.isManagingTrust()) { - trustMayHaveChanged = true; + if (userId == UserHandle.USER_ALL || userId == info.userId) { + if (info.agent.isManagingTrust()) { + trustMayHaveChanged = true; + } + info.agent.unbind(); + mActiveAgents.remove(info); } - info.agent.unbind(); - mActiveAgents.remove(info); } if (trustMayHaveChanged) {