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

Commit e64bdca7 authored by Raphael Kim's avatar Raphael Kim Committed by Automerger Merge Worker
Browse files

Merge "Handle device presence registry when device is already active." into...

Merge "Handle device presence registry when device is already active." into tm-dev am: fb9cbc6a am: 4540a72d am: 5cc61809

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/17803746



Change-Id: Ia8a0dcb288b4189e02536152ea130c3ad73840ee
Signed-off-by: default avatarAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
parents 8e322de6 5cc61809
Loading
Loading
Loading
Loading
+23 −1
Original line number Original line Diff line number Diff line
@@ -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