diff options
| author | 2021-11-26 13:38:55 +0100 | |
|---|---|---|
| committer | 2021-11-26 15:28:56 +0100 | |
| commit | 58c458df25768ce950812705220f91af6db81942 (patch) | |
| tree | 364d1dfb51e9c40510d618613d4bb2478c14a056 | |
| parent | 7918a89b24c6ee711e6f3a1b6d58c8babf182034 (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.java | 40 |
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) { |