Loading services/companion/java/com/android/server/companion/CompanionApplicationController.java +7 −7 Original line number Diff line number Diff line Loading @@ -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>>> { Loading services/companion/java/com/android/server/companion/presence/CompanionDevicePresenceMonitor.java +12 −8 Original line number Diff line number Diff line Loading @@ -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 + ")"); } Loading @@ -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 + ")"); } 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; } Loading Loading
services/companion/java/com/android/server/companion/CompanionApplicationController.java +7 −7 Original line number Diff line number Diff line Loading @@ -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>>> { Loading
services/companion/java/com/android/server/companion/presence/CompanionDevicePresenceMonitor.java +12 −8 Original line number Diff line number Diff line Loading @@ -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 + ")"); } Loading @@ -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 + ")"); } 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; } Loading