summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Sergey Nikolaienkov <sergeynv@google.com> 2021-11-26 13:38:55 +0100
committer Sergey Nikolaienkov <sergeynv@google.com> 2021-11-26 15:28:56 +0100
commit58c458df25768ce950812705220f91af6db81942 (patch)
tree364d1dfb51e9c40510d618613d4bb2478c14a056
parent7918a89b24c6ee711e6f3a1b6d58c8babf182034 (diff)
Clear CDM associations onPackageDataCleared
Bug: 205926405 Test: atest CtsCompanionDevicesTestCases:AssociationsCleanUpTest Change-Id: I17a5e94784136ad0406f0450ba6ef40ca99467f6
-rw-r--r--services/companion/java/com/android/server/companion/CompanionDeviceManagerService.java40
1 files changed, 25 insertions, 15 deletions
diff --git a/services/companion/java/com/android/server/companion/CompanionDeviceManagerService.java b/services/companion/java/com/android/server/companion/CompanionDeviceManagerService.java
index 316807c85547..f8be1656b3ee 100644
--- a/services/companion/java/com/android/server/companion/CompanionDeviceManagerService.java
+++ b/services/companion/java/com/android/server/companion/CompanionDeviceManagerService.java
@@ -225,26 +225,28 @@ public class CompanionDeviceManagerService extends SystemService {
new PackageMonitor() {
@Override
public void onPackageRemoved(String packageName, int uid) {
- Slog.d(LOG_TAG, "onPackageRemoved(packageName = " + packageName
- + ", uid = " + uid + ")");
- int userId = getChangingUserId();
- updateAssociations(
- set -> filterOut(set, it -> it.belongsToPackage(userId, packageName)),
- userId);
-
- mCompanionDevicePresenceController.unbindDevicePresenceListener(
- packageName, userId);
+ final int userId = getChangingUserId();
+ Slog.i(LOG_TAG, "onPackageRemoved() u" + userId + "/" + packageName);
+
+ clearAssociationForPackage(userId, packageName);
}
@Override
- public void onPackageModified(String packageName) {
- Slog.d(LOG_TAG, "onPackageModified(packageName = " + packageName + ")");
- int userId = getChangingUserId();
- forEach(getAssociations(userId, packageName), association -> {
- updateSpecialAccessPermissionForAssociatedPackage(association);
- });
+ public void onPackageDataCleared(String packageName, int uid) {
+ final int userId = getChangingUserId();
+ Slog.i(LOG_TAG, "onPackageDataCleared() u" + userId + "/" + packageName);
+
+ clearAssociationForPackage(userId, packageName);
}
+ @Override
+ public void onPackageModified(String packageName) {
+ final int userId = getChangingUserId();
+ Slog.i(LOG_TAG, "onPackageModified() u" + userId + "/" + packageName);
+
+ forEach(getAssociations(userId, packageName), association ->
+ updateSpecialAccessPermissionForAssociatedPackage(association));
+ }
}.register(getContext(), FgThread.get().getLooper(), UserHandle.ALL, true);
}
@@ -742,6 +744,14 @@ public class CompanionDeviceManagerService extends SystemService {
restartBleScan();
}
+ void clearAssociationForPackage(@UserIdInt int userId, @NonNull String packageName) {
+ if (DEBUG) Slog.d(LOG_TAG, "clearAssociationForPackage() u" + userId + "/" + packageName);
+
+ mCompanionDevicePresenceController.unbindDevicePresenceListener(packageName, userId);
+ updateAssociations(set -> filterOut(set, it -> it.belongsToPackage(userId, packageName)),
+ userId);
+ }
+
private void markIdAsPreviouslyUsedForPackage(
int associationId, @UserIdInt int userId, @NonNull String packageName) {
synchronized (mLock) {