From c7ae9868b14d15b95a135eadfd5f4f096e8a2d5d Mon Sep 17 00:00:00 2001 From: Vladimir Komsiyski Date: Sat, 25 Nov 2023 08:51:08 +0100 Subject: Small improvment in VDM stored CDM associations. There's no need to keep the non-VDM-related CDM associations. Bug: n/a Test: presubmit Change-Id: Iba5efbafbc7fc857e6ffac3af4e3b22330e762fb --- .../virtual/VirtualDeviceManagerService.java | 32 ++++++++++------------ 1 file changed, 14 insertions(+), 18 deletions(-) diff --git a/services/companion/java/com/android/server/companion/virtual/VirtualDeviceManagerService.java b/services/companion/java/com/android/server/companion/virtual/VirtualDeviceManagerService.java index e51ef297519f..d194bb29b19b 100644 --- a/services/companion/java/com/android/server/companion/virtual/VirtualDeviceManagerService.java +++ b/services/companion/java/com/android/server/companion/virtual/VirtualDeviceManagerService.java @@ -187,9 +187,7 @@ public class VirtualDeviceManagerService extends SystemService { CompanionDeviceManager cdm = getContext().getSystemService(CompanionDeviceManager.class); if (cdm != null) { - synchronized (mVirtualDeviceManagerLock) { - mActiveAssociations = cdm.getAllAssociations(UserHandle.USER_ALL); - } + onCdmAssociationsChanged(cdm.getAllAssociations(UserHandle.USER_ALL)); cdm.addOnAssociationsChangedListener(getContext().getMainExecutor(), this::onCdmAssociationsChanged, UserHandle.USER_ALL); } else { @@ -345,19 +343,21 @@ public class VirtualDeviceManagerService extends SystemService { @RequiresPermission(android.Manifest.permission.CREATE_VIRTUAL_DEVICE) void onCdmAssociationsChanged(List associations) { + List vdmAssociations = new ArrayList<>(); + Set activeAssociationIds = new HashSet<>(); + for (int i = 0; i < associations.size(); ++i) { + AssociationInfo association = associations.get(i); + if (VIRTUAL_DEVICE_COMPANION_DEVICE_PROFILES.contains(association.getDeviceProfile())) { + vdmAssociations.add(association); + activeAssociationIds.add(association.getId()); + } + } Set virtualDevicesToRemove = new HashSet<>(); Set removedPersistentDeviceIds = new HashSet<>(); synchronized (mVirtualDeviceManagerLock) { - Set activeAssociationIds = new HashSet<>(associations.size()); - for (int i = 0; i < associations.size(); ++i) { - activeAssociationIds.add(associations.get(i).getId()); - } - for (int i = 0; i < mActiveAssociations.size(); ++i) { AssociationInfo associationInfo = mActiveAssociations.get(i); - if (!activeAssociationIds.contains(associationInfo.getId()) - && VIRTUAL_DEVICE_COMPANION_DEVICE_PROFILES.contains( - associationInfo.getDeviceProfile())) { + if (!activeAssociationIds.contains(associationInfo.getId())) { removedPersistentDeviceIds.add( VirtualDeviceImpl.createPersistentDeviceId(associationInfo.getId())); } @@ -370,7 +370,7 @@ public class VirtualDeviceManagerService extends SystemService { } } - mActiveAssociations = associations; + mActiveAssociations = vdmAssociations; } for (VirtualDeviceImpl virtualDevice : virtualDevicesToRemove) { @@ -869,12 +869,8 @@ public class VirtualDeviceManagerService extends SystemService { synchronized (mVirtualDeviceManagerLock) { for (int i = 0; i < mActiveAssociations.size(); ++i) { AssociationInfo associationInfo = mActiveAssociations.get(i); - if (VIRTUAL_DEVICE_COMPANION_DEVICE_PROFILES.contains( - associationInfo.getDeviceProfile())) { - persistentIds.add( - VirtualDeviceImpl.createPersistentDeviceId( - associationInfo.getId())); - } + persistentIds.add( + VirtualDeviceImpl.createPersistentDeviceId(associationInfo.getId())); } } return persistentIds; -- cgit v1.2.3-59-g8ed1b