Merge "Register the service-to-app callback whenever the service comes up for BluetoothConnectionCallback. This ensures that if the bluetooth process dies, the callbacks will be re-established once it comes back up." am: 0aa6ab7887 am: 7d10fee593 am: 5e50fd7970

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

MUST ONLY BE SUBMITTED BY AUTOMERGER

Change-Id: Ie2489c4307aa21cf42cfae55ed7024ef9109bf1a
This commit is contained in:
Treehugger Robot
2020-12-22 07:04:59 +00:00
committed by Automerger Merge Worker

View File

@@ -2967,6 +2967,16 @@ public final class BluetoothAdapter {
}
});
}
synchronized (mBluetoothConnectionCallbackExecutorMap) {
if (!mBluetoothConnectionCallbackExecutorMap.isEmpty()) {
try {
mService.registerBluetoothConnectionCallback(mConnectionCallback);
} catch (RemoteException e) {
Log.e(TAG, "onBluetoothServiceUp: Failed to register bluetooth"
+ "connection callback", e);
}
}
}
}
public void onBluetoothServiceDown() {
@@ -3616,25 +3626,25 @@ public final class BluetoothAdapter {
return false;
}
// If the callback map is empty, we register the service-to-app callback
if (mBluetoothConnectionCallbackExecutorMap.isEmpty()) {
try {
mServiceLock.readLock().lock();
if (mService != null) {
if (!mService.registerBluetoothConnectionCallback(mConnectionCallback)) {
return false;
}
}
} catch (RemoteException e) {
Log.e(TAG, "", e);
mBluetoothConnectionCallbackExecutorMap.remove(callback);
} finally {
mServiceLock.readLock().unlock();
}
}
// Adds the passed in callback to our map of callbacks to executors
synchronized (mBluetoothConnectionCallbackExecutorMap) {
// If the callback map is empty, we register the service-to-app callback
if (mBluetoothConnectionCallbackExecutorMap.isEmpty()) {
try {
mServiceLock.readLock().lock();
if (mService != null) {
if (!mService.registerBluetoothConnectionCallback(mConnectionCallback)) {
return false;
}
}
} catch (RemoteException e) {
Log.e(TAG, "", e);
mBluetoothConnectionCallbackExecutorMap.remove(callback);
} finally {
mServiceLock.readLock().unlock();
}
}
// Adds the passed in callback to our map of callbacks to executors
if (mBluetoothConnectionCallbackExecutorMap.containsKey(callback)) {
throw new IllegalArgumentException("This callback has already been registered");
}