Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f90a00f4 authored by Evan Chen's avatar Evan Chen
Browse files

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
parent bf068a06
Loading
Loading
Loading
Loading
+9 −0
Original line number Diff line number Diff line
@@ -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;
    }
+10 −3
Original line number Diff line number Diff line
@@ -205,6 +205,15 @@ public class CompanionDevicePresenceMonitor implements AssociationStore.OnChange
        mCallback.onDeviceDisappeared(goneDeviceAssociationId);
    }

    /**
     * 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