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

Commit 287a66e5 authored by Evan Chen's avatar Evan Chen
Browse files

Only update the current connected set for selfManaged only

Bug: 230668833
Test: Manually tested the behavior on test app
Change-Id: I1565a42f3397d706f06a3cfd613226f2f1c30c08
parent f19925af
Loading
Loading
Loading
Loading
+5 −6
Original line number Diff line number Diff line
@@ -292,14 +292,13 @@ 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);
            final int associationId = ai.getId();
            if (ai.isSelfManaged()
                    && mDevicePresenceMonitor.isDevicePresent(associationId)) {
                mDevicePresenceMonitor.onSelfManagedDeviceReporterBinderDied(associationId);
            }
        }
        // TODO(b/218613015): implement.
        return false;
+10 −11
Original line number Diff line number Diff line
@@ -149,6 +149,13 @@ public class CompanionDevicePresenceMonitor implements AssociationStore.OnChange
        onDeviceGone(mReportedSelfManagedDevices, associationId, "application-reported");
    }

    /**
     * Marks a "self-managed" device as disconnected when binderDied.
     */
    public void onSelfManagedDeviceReporterBinderDied(int associationId) {
        onDeviceGone(mReportedSelfManagedDevices, associationId, "application-reported");
    }

    @Override
    public void onBluetoothCompanionDeviceConnected(int associationId) {
        onDevicePresent(mConnectedBtDevices, associationId, /* sourceLoggingTag */ "bt");
@@ -258,16 +265,6 @@ 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);
        mSimulated.remove(associationId);
    }

    /**
     * Implements
     * {@link AssociationStore.OnChangeListener#onAssociationRemoved(AssociationInfo)}
@@ -280,7 +277,9 @@ public class CompanionDevicePresenceMonitor implements AssociationStore.OnChange
            Log.d(TAG, "  > association=" + association);
        }

        removeDeviceFromMonitoring(id);
        mConnectedBtDevices.remove(id);
        mNearbyBleDevices.remove(id);
        mReportedSelfManagedDevices.remove(id);

        // Do NOT call mCallback.onDeviceDisappeared()!
        // CompanionDeviceManagerService will know that the association is removed, and will do