diff options
| author | 2022-05-02 15:43:29 -0700 | |
|---|---|---|
| committer | 2022-05-02 17:59:10 -0700 | |
| commit | f90a00f4103be21c3aa3c32048c34f47cf62496f (patch) | |
| tree | 5280a9524817cb71dadb4b29c72fa9b02c17d4a5 | |
| parent | bf068a06360f677b3b4e7ff65746b5c588ef35e7 (diff) | |
Update connected devices sets when app is killed
Update the current connected devices sets when binder is dead, so that
application is able to call notifyDeviceAppeared after re-launch the application.
Bug: 230668833
Test: atest CtsCompanionDeviceManagerCoreTestCases
atest CtsCompanionDeviceManagerUiAutomationTestCases
atest CtsOsTestCases:CompanionDeviceManagerTest
Change-Id: I851a0fd0dda2a65750591685aedd1b694fc4c741
2 files changed, 19 insertions, 3 deletions
diff --git a/services/companion/java/com/android/server/companion/CompanionDeviceManagerService.java b/services/companion/java/com/android/server/companion/CompanionDeviceManagerService.java index b4c107c1a2c1..62bb9f155c34 100644 --- a/services/companion/java/com/android/server/companion/CompanionDeviceManagerService.java +++ b/services/companion/java/com/android/server/companion/CompanionDeviceManagerService.java @@ -294,6 +294,15 @@ public class CompanionDeviceManagerService extends SystemService { private boolean onCompanionApplicationBindingDiedInternal( @UserIdInt int userId, @NonNull String packageName) { + // Update the current connected devices sets when binderDied, so that application is able + // to call notifyDeviceAppeared after re-launch the application. + for (AssociationInfo ai : + mAssociationStore.getAssociationsForPackage(userId, packageName)) { + int id = ai.getId(); + Slog.i(TAG, "Removing association id: " + id + " for package: " + + packageName + " due to binderDied."); + mDevicePresenceMonitor.removeDeviceFromMonitoring(id); + } // TODO(b/218613015): implement. return false; } diff --git a/services/companion/java/com/android/server/companion/presence/CompanionDevicePresenceMonitor.java b/services/companion/java/com/android/server/companion/presence/CompanionDevicePresenceMonitor.java index 6371b25e6347..24be1b6fd701 100644 --- a/services/companion/java/com/android/server/companion/presence/CompanionDevicePresenceMonitor.java +++ b/services/companion/java/com/android/server/companion/presence/CompanionDevicePresenceMonitor.java @@ -206,6 +206,15 @@ public class CompanionDevicePresenceMonitor implements AssociationStore.OnChange } /** + * Remove the current connected devices by associationId. + */ + public void removeDeviceFromMonitoring(int associationId) { + mConnectedBtDevices.remove(associationId); + mNearbyBleDevices.remove(associationId); + mReportedSelfManagedDevices.remove(associationId); + } + + /** * Implements * {@link AssociationStore.OnChangeListener#onAssociationRemoved(AssociationInfo)} */ @@ -217,9 +226,7 @@ public class CompanionDevicePresenceMonitor implements AssociationStore.OnChange Log.d(TAG, " > association=" + association); } - mConnectedBtDevices.remove(id); - mNearbyBleDevices.remove(id); - mReportedSelfManagedDevices.remove(id); + removeDeviceFromMonitoring(id); // Do NOT call mCallback.onDeviceDisappeared()! // CompanionDeviceManagerService will know that the association is removed, and will do |