From f6c1afbf31f0435cced1d442f9846d4c72e3ecf9 Mon Sep 17 00:00:00 2001 From: Ian Baker Date: Thu, 27 Apr 2023 13:52:54 +0000 Subject: Revert "Notify/bind app after the phone is unlocked" This reverts commit 0b1ebd7cda9b062b45ba2708bd5cf9e73ebcfe00. Reason for revert: DroidMonitor: b/279841572 Change-Id: Ieab5c60d55f47fa862aba4b3a9f4f4dce759bbab --- .../companion/CompanionDeviceManagerService.java | 18 +------ ...BluetoothCompanionDeviceConnectionListener.java | 57 ++-------------------- .../presence/CompanionDevicePresenceMonitor.java | 21 ++------ 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 1d5ba630e12e..542cc2f0a0a6 100644 --- a/services/companion/java/com/android/server/companion/CompanionDeviceManagerService.java +++ b/services/companion/java/com/android/server/companion/CompanionDeviceManagerService.java @@ -53,7 +53,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; @@ -228,7 +227,7 @@ public class CompanionDeviceManagerService extends SystemService { loadAssociationsFromDisk(); mAssociationStore.registerListener(mAssociationStoreChangeListener); - mDevicePresenceMonitor = new CompanionDevicePresenceMonitor(mUserManager, + mDevicePresenceMonitor = new CompanionDevicePresenceMonitor( mAssociationStore, mDevicePresenceCallback); mAssociationRequestsProcessor = new AssociationRequestsProcessor( @@ -314,21 +313,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 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 mAllConnectedDevices = new HashMap<>(); - - @GuardedBy("mPendingReportConnectedDevices") - @NonNull - final SparseArray> 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 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 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> getPendingReportConnectedDevices() { - synchronized (mBtConnectionListener.mPendingReportConnectedDevices) { - return mBtConnectionListener.mPendingReportConnectedDevices; - } - } - private static void enforceCallerShellOrRoot() { final int callingUid = Binder.getCallingUid(); if (callingUid == SHELL_UID || callingUid == ROOT_UID) return; -- cgit v1.2.3-59-g8ed1b