Merge "Should call deviceGone for all the association" into udc-dev

This commit is contained in:
TreeHugger Robot
2023-03-08 18:44:15 +00:00
committed by Android (Google) Code Review
2 changed files with 19 additions and 15 deletions

View File

@@ -346,31 +346,31 @@ public class CompanionApplicationController {
// Make sure do not schedule rebind for the case ServiceConnector still gets callback after
// app is uninstalled.
boolean stillAssociated = false;
// Make sure to clean up the state for all the associations
// that associate with this package.
boolean shouldScheduleRebind = false;
for (AssociationInfo ai :
mAssociationStore.getAssociationsForPackage(userId, packageName)) {
final int associationId = ai.getId();
stillAssociated = true;
if (ai.isSelfManaged()) {
// Do not rebind if primary one is died for selfManaged application.
if (isPrimary
&& mDevicePresenceMonitor.isDevicePresent(associationId)) {
mDevicePresenceMonitor.onSelfManagedDeviceReporterBinderDied(associationId);
return false;
shouldScheduleRebind = false;
}
// Do not rebind if both primary and secondary services are died for
// selfManaged application.
if (!isCompanionApplicationBound(userId, packageName)) {
return false;
}
shouldScheduleRebind = isCompanionApplicationBound(userId, packageName);
} else if (ai.isNotifyOnDeviceNearby()) {
// Always rebind for non-selfManaged devices.
return true;
shouldScheduleRebind = true;
}
}
return stillAssociated;
return stillAssociated && shouldScheduleRebind;
}
private class CompanionServicesRegister extends PerUser<Map<String, List<ComponentName>>> {

View File

@@ -232,11 +232,14 @@ public class CompanionDevicePresenceMonitor implements AssociationStore.OnChange
}
final boolean alreadyPresent = isDevicePresent(newDeviceAssociationId);
if (DEBUG && alreadyPresent) Log.i(TAG, "Device is already present.");
if (alreadyPresent) {
Log.i(TAG, "Device" + "id (" + newDeviceAssociationId + ") already present.");
}
final boolean added = presentDevicesForSource.add(newDeviceAssociationId);
if (DEBUG && !added) {
Log.w(TAG, "Association with id " + newDeviceAssociationId + " is ALREADY reported as "
if (!added) {
Log.w(TAG, "Association with id "
+ newDeviceAssociationId + " is ALREADY reported as "
+ "present by this source (" + sourceLoggingTag + ")");
}
@@ -256,16 +259,17 @@ public class CompanionDevicePresenceMonitor implements AssociationStore.OnChange
final boolean removed = presentDevicesForSource.remove(goneDeviceAssociationId);
if (!removed) {
if (DEBUG) {
Log.w(TAG, "Association with id " + goneDeviceAssociationId + " was NOT reported "
+ "as present by this source (" + sourceLoggingTag + ")");
}
Log.w(TAG, "Association with id " + goneDeviceAssociationId + " was NOT reported "
+ "as present by this source (" + sourceLoggingTag + ")");
return;
}
final boolean stillPresent = isDevicePresent(goneDeviceAssociationId);
if (stillPresent) {
if (DEBUG) Log.i(TAG, " Device is still present.");
if (DEBUG) {
Log.i(TAG, " Device id (" + goneDeviceAssociationId + ") is still present.");
}
return;
}