diff options
author | Danning Chen <danningc@google.com> | 2020-03-05 16:28:11 -0800 |
---|---|---|
committer | Danning Chen <danningc@google.com> | 2020-03-05 16:38:25 -0800 |
commit | 18fecf78d38c4ba2a1e3222f3e101466aac268b6 (patch) | |
tree | 049b2d3c1f65e5d0a06c8ee6b653117fc968573e | |
parent | b7050a36afd5cfcfb6f471fa273742300b83264a (diff) |
Fix the bug that queries UsageStatsService for locked users
In addition to the bug fix, this also changes the user lifecycle callbacks People Service is using:
1) onUserUnlocking() -> onUserUnlocked()
2) onUserStopped() -> onUserStopping()
The user lifecycle callback changes are based on a recent callback API
change in ag/10396717. This change will make the service run safer: it
avoids performing queries on locked users.
Change-Id: I4d0ebdb80f2181b5eb5a636d345c53a01c7df210
Test: Manual test
Test: atest com.android.server.people.data.DataManagerTest
Bug: 150882079
3 files changed, 8 insertions, 8 deletions
diff --git a/services/people/java/com/android/server/people/PeopleService.java b/services/people/java/com/android/server/people/PeopleService.java index 983a639776f6..37bf66491882 100644 --- a/services/people/java/com/android/server/people/PeopleService.java +++ b/services/people/java/com/android/server/people/PeopleService.java @@ -72,13 +72,13 @@ public class PeopleService extends SystemService { } @Override - public void onUserUnlocking(@NonNull TargetUser targetUser) { - mDataManager.onUserUnlocked(targetUser.getUserIdentifier()); + public void onUserUnlocked(@NonNull TargetUser user) { + mDataManager.onUserUnlocked(user.getUserIdentifier()); } @Override - public void onUserStopping(@NonNull TargetUser targetUser) { - mDataManager.onUserStopped(targetUser.getUserIdentifier()); + public void onUserStopping(@NonNull TargetUser user) { + mDataManager.onUserStopping(user.getUserIdentifier()); } @VisibleForTesting diff --git a/services/people/java/com/android/server/people/data/DataManager.java b/services/people/java/com/android/server/people/data/DataManager.java index e4ce6bafff31..4e0afc525383 100644 --- a/services/people/java/com/android/server/people/data/DataManager.java +++ b/services/people/java/com/android/server/people/data/DataManager.java @@ -198,13 +198,13 @@ public class DataManager { DataMaintenanceService.scheduleJob(mContext, userId); } - /** This method is called when a user is stopped. */ - public void onUserStopped(int userId) { + /** This method is called when a user is stopping. */ + public void onUserStopping(int userId) { if (mUserDataArray.indexOfKey(userId) >= 0) { mUserDataArray.get(userId).setUserStopped(); } if (mUsageStatsQueryFutures.indexOfKey(userId) >= 0) { - mUsageStatsQueryFutures.valueAt(userId).cancel(true); + mUsageStatsQueryFutures.get(userId).cancel(true); } if (mBroadcastReceivers.indexOfKey(userId) >= 0) { mContext.unregisterReceiver(mBroadcastReceivers.get(userId)); diff --git a/services/tests/servicestests/src/com/android/server/people/data/DataManagerTest.java b/services/tests/servicestests/src/com/android/server/people/data/DataManagerTest.java index 624b67ccda85..a4d63ac8a564 100644 --- a/services/tests/servicestests/src/com/android/server/people/data/DataManagerTest.java +++ b/services/tests/servicestests/src/com/android/server/people/data/DataManagerTest.java @@ -269,7 +269,7 @@ public final class DataManagerTest { assertEquals(1, conversations.size()); assertEquals("sc_1", conversations.get(0).getShortcutId()); - mDataManager.onUserStopped(USER_ID_PRIMARY); + mDataManager.onUserStopping(USER_ID_PRIMARY); conversations = getConversationsInPrimary(); assertTrue(conversations.isEmpty()); } |