Merge "Handle device presence registry when device is already active." into tm-dev am: fb9cbc6a26
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/17803746 Change-Id: I1f5c5ea0fcbcf52fea5900cd0ee627bfa1684726 Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
@@ -649,6 +649,12 @@ public class CompanionDeviceManagerService extends SystemService {
|
|||||||
|
|
||||||
private void registerDevicePresenceListenerActive(String packageName, String deviceAddress,
|
private void registerDevicePresenceListenerActive(String packageName, String deviceAddress,
|
||||||
boolean active) throws RemoteException {
|
boolean active) throws RemoteException {
|
||||||
|
if (DEBUG) {
|
||||||
|
Log.i(TAG, "registerDevicePresenceListenerActive()"
|
||||||
|
+ " active=" + active
|
||||||
|
+ " deviceAddress=" + deviceAddress);
|
||||||
|
}
|
||||||
|
|
||||||
getContext().enforceCallingOrSelfPermission(
|
getContext().enforceCallingOrSelfPermission(
|
||||||
android.Manifest.permission.REQUEST_OBSERVE_COMPANION_DEVICE_PRESENCE,
|
android.Manifest.permission.REQUEST_OBSERVE_COMPANION_DEVICE_PRESENCE,
|
||||||
"[un]registerDevicePresenceListenerService");
|
"[un]registerDevicePresenceListenerService");
|
||||||
@@ -664,6 +670,12 @@ public class CompanionDeviceManagerService extends SystemService {
|
|||||||
+ " for user " + userId));
|
+ " for user " + userId));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// If already at specified state, then no-op.
|
||||||
|
if (active == association.isNotifyOnDeviceNearby()) {
|
||||||
|
if (DEBUG) Log.d(TAG, "Device presence listener is already at desired state.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
// AssociationInfo class is immutable: create a new AssociationInfo object with updated
|
// AssociationInfo class is immutable: create a new AssociationInfo object with updated
|
||||||
// flag.
|
// flag.
|
||||||
association = AssociationInfo.builder(association)
|
association = AssociationInfo.builder(association)
|
||||||
@@ -674,7 +686,17 @@ public class CompanionDeviceManagerService extends SystemService {
|
|||||||
// an application sets/unsets the mNotifyOnDeviceNearby flag.
|
// an application sets/unsets the mNotifyOnDeviceNearby flag.
|
||||||
mAssociationStore.updateAssociation(association);
|
mAssociationStore.updateAssociation(association);
|
||||||
|
|
||||||
// TODO(b/218615198): correctly handle the case when the device is currently present.
|
// If device is already present, then trigger callback.
|
||||||
|
if (active && mDevicePresenceMonitor.isDevicePresent(association.getId())) {
|
||||||
|
if (DEBUG) Log.d(TAG, "Device is already present. Triggering callback.");
|
||||||
|
onDeviceAppearedInternal(association.getId());
|
||||||
|
}
|
||||||
|
|
||||||
|
// If last listener is unregistered, then unbind application.
|
||||||
|
if (!active && !shouldBindPackage(userId, packageName)) {
|
||||||
|
if (DEBUG) Log.d(TAG, "Last listener unregistered. Unbinding application.");
|
||||||
|
mCompanionAppController.unbindCompanionApplication(userId, packageName);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
Reference in New Issue
Block a user