Merge "Fix CDM device disconnected callback immediately triggering "device disappeared"" into sc-dev

This commit is contained in:
Eugene Susla
2021-03-10 20:42:31 +00:00
committed by Android (Google) Code Review

View File

@@ -766,6 +766,7 @@ public class CompanionDeviceManagerService extends SystemService implements Bind
.get(association.getPackageName());
if (serviceConnector != null) {
serviceConnector.unbind();
restartBleScan();
}
}
}
@@ -1067,11 +1068,19 @@ 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);
onDeviceDisappeared(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(
@@ -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();