diff options
3 files changed, 10 insertions, 86 deletions
diff --git a/services/companion/java/com/android/server/companion/CompanionDeviceManagerService.java b/services/companion/java/com/android/server/companion/CompanionDeviceManagerService.java index a3a067481022..d8fbd08a0e70 100644 --- a/services/companion/java/com/android/server/companion/CompanionDeviceManagerService.java +++ b/services/companion/java/com/android/server/companion/CompanionDeviceManagerService.java @@ -54,7 +54,6 @@ import android.app.ActivityManagerInternal; import android.app.AppOpsManager; import android.app.NotificationManager; import android.app.PendingIntent; -import android.bluetooth.BluetoothDevice; import android.companion.AssociationInfo; import android.companion.AssociationRequest; import android.companion.DeviceNotAssociatedException; @@ -229,7 +228,7 @@ public class CompanionDeviceManagerService extends SystemService { loadAssociationsFromDisk(); mAssociationStore.registerListener(mAssociationStoreChangeListener); - mDevicePresenceMonitor = new CompanionDevicePresenceMonitor(mUserManager, + mDevicePresenceMonitor = new CompanionDevicePresenceMonitor( mAssociationStore, mDevicePresenceCallback); mAssociationRequestsProcessor = new AssociationRequestsProcessor( @@ -315,21 +314,6 @@ public class CompanionDeviceManagerService extends SystemService { MINUTES.toMillis(10)); } - @Override - public void onUserUnlocked(@NonNull TargetUser user) { - // Notify and bind the app after the phone is unlocked. - final int userId = user.getUserIdentifier(); - final Set<BluetoothDevice> blueToothDevices = - mDevicePresenceMonitor.getPendingReportConnectedDevices().get(userId); - for (BluetoothDevice bluetoothDevice : blueToothDevices) { - for (AssociationInfo ai: - mAssociationStore.getAssociationsByAddress(bluetoothDevice.getAddress())) { - Slog.i(TAG, "onUserUnlocked, device id( " + ai.getId() + " ) is connected"); - mDevicePresenceMonitor.onBluetoothCompanionDeviceConnected(ai.getId()); - } - } - } - @NonNull AssociationInfo getAssociationWithCallerChecks( @UserIdInt int userId, @NonNull String packageName, @NonNull String macAddress) { diff --git a/services/companion/java/com/android/server/companion/presence/BluetoothCompanionDeviceConnectionListener.java b/services/companion/java/com/android/server/companion/presence/BluetoothCompanionDeviceConnectionListener.java index 82d0325cd749..f6b99b551ecb 100644 --- a/services/companion/java/com/android/server/companion/presence/BluetoothCompanionDeviceConnectionListener.java +++ b/services/companion/java/com/android/server/companion/presence/BluetoothCompanionDeviceConnectionListener.java @@ -27,23 +27,17 @@ import android.companion.AssociationInfo; import android.net.MacAddress; import android.os.Handler; import android.os.HandlerExecutor; -import android.os.UserHandle; -import android.os.UserManager; import android.util.Log; -import android.util.SparseArray; -import com.android.internal.annotations.GuardedBy; import com.android.server.companion.AssociationStore; import java.util.Arrays; import java.util.HashMap; -import java.util.HashSet; import java.util.List; import java.util.Map; -import java.util.Set; @SuppressLint("LongLogTag") -public class BluetoothCompanionDeviceConnectionListener +class BluetoothCompanionDeviceConnectionListener extends BluetoothAdapter.BluetoothConnectionCallback implements AssociationStore.OnChangeListener { private static final String TAG = "CDM_BluetoothCompanionDeviceConnectionListener"; @@ -54,23 +48,15 @@ public class BluetoothCompanionDeviceConnectionListener void onBluetoothCompanionDeviceDisconnected(int associationId); } - private final UserManager mUserManager; private final @NonNull AssociationStore mAssociationStore; private final @NonNull Callback mCallback; /** A set of ALL connected BT device (not only companion.) */ private final @NonNull Map<MacAddress, BluetoothDevice> mAllConnectedDevices = new HashMap<>(); - - @GuardedBy("mPendingReportConnectedDevices") - @NonNull - final SparseArray<Set<BluetoothDevice>> mPendingReportConnectedDevices = - new SparseArray<>(); - - BluetoothCompanionDeviceConnectionListener(UserManager userManager, - @NonNull AssociationStore associationStore, @NonNull Callback callback) { + BluetoothCompanionDeviceConnectionListener(@NonNull AssociationStore associationStore, + @NonNull Callback callback) { mAssociationStore = associationStore; mCallback = callback; - mUserManager = userManager; } public void init(@NonNull BluetoothAdapter btAdapter) { @@ -90,32 +76,12 @@ public class BluetoothCompanionDeviceConnectionListener if (DEBUG) Log.i(TAG, "onDevice_Connected() " + btDeviceToString(device)); final MacAddress macAddress = MacAddress.fromString(device.getAddress()); - final int userId = UserHandle.myUserId(); - if (mAllConnectedDevices.put(macAddress, device) != null) { if (DEBUG) Log.w(TAG, "Device " + btDeviceToString(device) + " is already connected."); return; } - // Try to bind and notify the app after the phone is unlocked. - if (!mUserManager.isUserUnlockingOrUnlocked(UserHandle.myUserId())) { - if (DEBUG) { - Log.i(TAG, "Current user is not in unlocking or unlocked stage yet. Notify " - + "the application when the phone is unlocked"); - } - synchronized (mPendingReportConnectedDevices) { - Set<BluetoothDevice> bluetoothDevices = mPendingReportConnectedDevices.get(userId); - - if (bluetoothDevices == null) { - bluetoothDevices = new HashSet<>(); - mPendingReportConnectedDevices.put(userId, bluetoothDevices); - } - - bluetoothDevices.add(device); - } - } else { - onDeviceConnectivityChanged(device, true); - } + onDeviceConnectivityChanged(device, true); } /** @@ -132,8 +98,6 @@ public class BluetoothCompanionDeviceConnectionListener } final MacAddress macAddress = MacAddress.fromString(device.getAddress()); - final int userId = UserHandle.myUserId(); - if (mAllConnectedDevices.remove(macAddress) == null) { if (DEBUG) { Log.w(TAG, "The device wasn't tracked as connected " + btDeviceToString(device)); @@ -141,19 +105,6 @@ public class BluetoothCompanionDeviceConnectionListener return; } - // Do not need to report the connectivity since the user is not unlock the phone so - // that cdm is not bind with the app yet. - if (!mUserManager.isUserUnlockingOrUnlocked(userId)) { - synchronized (mPendingReportConnectedDevices) { - Set<BluetoothDevice> bluetoothDevices = mPendingReportConnectedDevices.get(userId); - if (bluetoothDevices != null) { - bluetoothDevices.remove(device); - } - } - - return; - } - onDeviceConnectivityChanged(device, false); } diff --git a/services/companion/java/com/android/server/companion/presence/CompanionDevicePresenceMonitor.java b/services/companion/java/com/android/server/companion/presence/CompanionDevicePresenceMonitor.java index 6c565004d948..4010be922b2c 100644 --- a/services/companion/java/com/android/server/companion/presence/CompanionDevicePresenceMonitor.java +++ b/services/companion/java/com/android/server/companion/presence/CompanionDevicePresenceMonitor.java @@ -23,16 +23,13 @@ import android.annotation.NonNull; import android.annotation.SuppressLint; import android.annotation.TestApi; import android.bluetooth.BluetoothAdapter; -import android.bluetooth.BluetoothDevice; import android.companion.AssociationInfo; import android.content.Context; import android.os.Binder; import android.os.Handler; import android.os.Looper; import android.os.Message; -import android.os.UserManager; import android.util.Log; -import android.util.SparseArray; import com.android.server.companion.AssociationStore; @@ -89,12 +86,13 @@ public class CompanionDevicePresenceMonitor implements AssociationStore.OnChange private final SimulatedDevicePresenceSchedulerHelper mSchedulerHelper = new SimulatedDevicePresenceSchedulerHelper(); - public CompanionDevicePresenceMonitor(UserManager userManager, - @NonNull AssociationStore associationStore, @NonNull Callback callback) { + public CompanionDevicePresenceMonitor(@NonNull AssociationStore associationStore, + @NonNull Callback callback) { mAssociationStore = associationStore; mCallback = callback; - mBtConnectionListener = new BluetoothCompanionDeviceConnectionListener(userManager, - associationStore, /* BluetoothCompanionDeviceConnectionListener.Callback */ this); + + mBtConnectionListener = new BluetoothCompanionDeviceConnectionListener(associationStore, + /* BluetoothCompanionDeviceConnectionListener.Callback */ this); mBleScanner = new BleCompanionDeviceScanner(associationStore, /* BleCompanionDeviceScanner.Callback */ this); } @@ -300,15 +298,6 @@ public class CompanionDevicePresenceMonitor implements AssociationStore.OnChange // what's needed. } - /** - * Return a set of devices that pending to report connectivity - */ - public SparseArray<Set<BluetoothDevice>> getPendingReportConnectedDevices() { - synchronized (mBtConnectionListener.mPendingReportConnectedDevices) { - return mBtConnectionListener.mPendingReportConnectedDevices; - } - } - private static void enforceCallerShellOrRoot() { final int callingUid = Binder.getCallingUid(); if (callingUid == SHELL_UID || callingUid == ROOT_UID) return; |