Calls unlinkToDeath in binderDied to deregister

When a registered BLE App unexpectedly dies and the binderDied callback
is called, the unlinkToDeath is called to remove linkage. Also, refactor
code to use an existing function.

Test: Manual test by repeatedly killing the gms core process.
Bug: 74076974
Change-Id: If47a534ecafe7fceae14f8cf8526987cabd279cd
(cherry picked from commit 699f42e246)
This commit is contained in:
Stanley Tng
2018-03-20 16:54:27 -07:00
committed by Myles Watson
parent 2c5fd28b6e
commit 600109cb79

View File

@@ -637,29 +637,10 @@ class BluetoothManagerService extends IBluetoothManager.Stub {
IBinder token = entry.getKey();
ClientDeathRecipient deathRec = entry.getValue();
if (deathRec.equals(this)) {
mBleApps.remove(token);
updateBleAppCount(token, false, mPackageName);
break;
}
}
if (isBleAppPresent()) {
// Nothing to do, another app is here.
return;
}
if (DBG) {
Slog.d(TAG, "Disabling LE only mode after application crash");
}
try {
mBluetoothLock.readLock().lock();
if (mBluetooth != null && mBluetooth.getState() == BluetoothAdapter.STATE_BLE_ON) {
mEnable = false;
mBluetooth.onBrEdrDown();
}
} catch (RemoteException e) {
Slog.e(TAG, "Unable to call onBrEdrDown", e);
} finally {
mBluetoothLock.readLock().unlock();
}
}
public String getPackageName() {