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

Commit 4fd08954 authored by Eugene Susla's avatar Eugene Susla Committed by Android (Google) Code Review
Browse files

Merge "Fix CDM device disconnected callback immediately triggering "device...

Merge "Fix CDM device disconnected callback immediately triggering "device disappeared"" into sc-dev
parents b19e9f88 c140dee3
Loading
Loading
Loading
Loading
+12 −4
Original line number Diff line number Diff line
@@ -766,6 +766,7 @@ public class CompanionDeviceManagerService extends SystemService implements Bind
                            .get(association.getPackageName());
            if (serviceConnector != null) {
                serviceConnector.unbind();
                restartBleScan();
            }
        }
    }
@@ -1067,12 +1068,20 @@ public class CompanionDeviceManagerService extends SystemService implements Bind
    }

    void onDeviceDisconnected(String address) {
        Slog.d(LOG_TAG, "onDeviceConnected(address = " + address + ")");
        Slog.d(LOG_TAG, "onDeviceDisconnected(address = " + address + ")");

        mCurrentlyConnectedDevices.remove(address);

        Date lastSeen = mDevicesLastNearby.get(address);
        if (isDeviceDisappeared(lastSeen)) {
            onDeviceDisappeared(address);
        }
    }

    private boolean isDeviceDisappeared(Date lastSeen) {
        return lastSeen == null || System.currentTimeMillis() - lastSeen.getTime()
                >= DEVICE_DISAPPEARED_UNBIND_TIMEOUT_MS;
    }

    private ServiceConnector<ICompanionDeviceService> getDeviceListenerServiceConnector(
            Association a) {
@@ -1172,8 +1181,7 @@ public class CompanionDeviceManagerService extends SystemService implements Bind
                String address = mDevicesLastNearby.keyAt(i);
                Date lastNearby = mDevicesLastNearby.valueAt(i);

                if (System.currentTimeMillis() - lastNearby.getTime()
                        >= DEVICE_DISAPPEARED_UNBIND_TIMEOUT_MS) {
                if (isDeviceDisappeared(lastNearby)) {
                    for (Association association : getAllAssociations(address)) {
                        if (association.isNotifyOnDeviceNearby()) {
                            getDeviceListenerServiceConnector(association).unbind();