From 5467b904812bfe30651334826a0bdbfd1b868c1d Mon Sep 17 00:00:00 2001 From: Etienne Ruffieux Date: Wed, 22 Jun 2022 13:54:25 -0700 Subject: Reuse SynchronousResultReceivers instead of creating new. Bug: 217366135 Tag: #feature Test: manual Ignore-AOSP-First: to be chery-picked Change-Id: If8ae530a284151888a3f89a51d2c58f2a5cd3644 (cherry picked from commit 02dcbe72b3564559eaa9c2e2714824e4aac6f18c) Merged-In: If8ae530a284151888a3f89a51d2c58f2a5cd3644 --- .../server/bluetooth/BluetoothManagerService.java | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) (limited to 'service/java/com/android/server/bluetooth/BluetoothManagerService.java') diff --git a/service/java/com/android/server/bluetooth/BluetoothManagerService.java b/service/java/com/android/server/bluetooth/BluetoothManagerService.java index a7d9831740..211154ceab 100644 --- a/service/java/com/android/server/bluetooth/BluetoothManagerService.java +++ b/service/java/com/android/server/bluetooth/BluetoothManagerService.java @@ -794,7 +794,7 @@ public class BluetoothManagerService extends IBluetoothManager.Stub { private boolean synchronousDisable(AttributionSource attributionSource) throws RemoteException, TimeoutException { if (mBluetooth == null) return false; - final SynchronousResultReceiver recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver recv = SynchronousResultReceiver.get(); mBluetooth.disable(attributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(false); } @@ -803,7 +803,7 @@ public class BluetoothManagerService extends IBluetoothManager.Stub { private boolean synchronousEnable(boolean quietMode, AttributionSource attributionSource) throws RemoteException, TimeoutException { if (mBluetooth == null) return false; - final SynchronousResultReceiver recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver recv = SynchronousResultReceiver.get(); mBluetooth.enable(quietMode, attributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(false); } @@ -812,7 +812,7 @@ public class BluetoothManagerService extends IBluetoothManager.Stub { private String synchronousGetAddress(AttributionSource attributionSource) throws RemoteException, TimeoutException { if (mBluetooth == null) return null; - final SynchronousResultReceiver recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver recv = SynchronousResultReceiver.get(); mBluetooth.getAddressWithAttribution(attributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(null); } @@ -821,7 +821,7 @@ public class BluetoothManagerService extends IBluetoothManager.Stub { private String synchronousGetName(AttributionSource attributionSource) throws RemoteException, TimeoutException { if (mBluetooth == null) return null; - final SynchronousResultReceiver recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver recv = SynchronousResultReceiver.get(); mBluetooth.getName(attributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(null); } @@ -830,7 +830,7 @@ public class BluetoothManagerService extends IBluetoothManager.Stub { private int synchronousGetState() throws RemoteException, TimeoutException { if (mBluetooth == null) return BluetoothAdapter.STATE_OFF; - final SynchronousResultReceiver recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver recv = SynchronousResultReceiver.get(); mBluetooth.getState(recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(BluetoothAdapter.STATE_OFF); } @@ -839,7 +839,7 @@ public class BluetoothManagerService extends IBluetoothManager.Stub { private void synchronousOnBrEdrDown(AttributionSource attributionSource) throws RemoteException, TimeoutException { if (mBluetooth == null) return; - final SynchronousResultReceiver recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver recv = SynchronousResultReceiver.get(); mBluetooth.onBrEdrDown(attributionSource, recv); recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(null); } @@ -848,7 +848,7 @@ public class BluetoothManagerService extends IBluetoothManager.Stub { private void synchronousOnLeServiceUp(AttributionSource attributionSource) throws RemoteException, TimeoutException { if (mBluetooth == null) return; - final SynchronousResultReceiver recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver recv = SynchronousResultReceiver.get(); mBluetooth.onLeServiceUp(attributionSource, recv); recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(null); } @@ -857,7 +857,7 @@ public class BluetoothManagerService extends IBluetoothManager.Stub { private void synchronousRegisterCallback(IBluetoothCallback callback, AttributionSource attributionSource) throws RemoteException, TimeoutException { if (mBluetooth == null) return; - final SynchronousResultReceiver recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver recv = SynchronousResultReceiver.get(); mBluetooth.registerCallback(callback, attributionSource, recv); recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(null); } @@ -866,7 +866,7 @@ public class BluetoothManagerService extends IBluetoothManager.Stub { private void synchronousUnregisterCallback(IBluetoothCallback callback, AttributionSource attributionSource) throws RemoteException, TimeoutException { if (mBluetooth == null) return; - final SynchronousResultReceiver recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver recv = SynchronousResultReceiver.get(); mBluetooth.unregisterCallback(callback, attributionSource, recv); recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(null); } @@ -1223,7 +1223,7 @@ public class BluetoothManagerService extends IBluetoothManager.Stub { if (isBleAppPresent()) { // Need to stay at BLE ON. Disconnect all Gatt connections try { - final SynchronousResultReceiver recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver recv = SynchronousResultReceiver.get(); mBluetoothGatt.unregAll(attributionSource, recv); recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(null); } catch (RemoteException | TimeoutException e) { -- cgit v1.2.3 From dd85e91cea26c7f706af36c852e79d5b4ca1f173 Mon Sep 17 00:00:00 2001 From: Neha Jain Date: Wed, 29 Jun 2022 04:04:16 +0000 Subject: Revert "Reuse SynchronousResultReceivers instead of creating new." This reverts commit 02dcbe72b3564559eaa9c2e2714824e4aac6f18c. Reason for revert: Causing builds to fail b/237471430 Change-Id: I6165d838abf312085050359377f67a68a5f8b51a (cherry picked from commit f5dd42bbd05e68f7763ccaa9fae5642acc4ceba1) Merged-In: I6165d838abf312085050359377f67a68a5f8b51a --- .../server/bluetooth/BluetoothManagerService.java | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) (limited to 'service/java/com/android/server/bluetooth/BluetoothManagerService.java') diff --git a/service/java/com/android/server/bluetooth/BluetoothManagerService.java b/service/java/com/android/server/bluetooth/BluetoothManagerService.java index 211154ceab..a7d9831740 100644 --- a/service/java/com/android/server/bluetooth/BluetoothManagerService.java +++ b/service/java/com/android/server/bluetooth/BluetoothManagerService.java @@ -794,7 +794,7 @@ public class BluetoothManagerService extends IBluetoothManager.Stub { private boolean synchronousDisable(AttributionSource attributionSource) throws RemoteException, TimeoutException { if (mBluetooth == null) return false; - final SynchronousResultReceiver recv = SynchronousResultReceiver.get(); + final SynchronousResultReceiver recv = new SynchronousResultReceiver(); mBluetooth.disable(attributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(false); } @@ -803,7 +803,7 @@ public class BluetoothManagerService extends IBluetoothManager.Stub { private boolean synchronousEnable(boolean quietMode, AttributionSource attributionSource) throws RemoteException, TimeoutException { if (mBluetooth == null) return false; - final SynchronousResultReceiver recv = SynchronousResultReceiver.get(); + final SynchronousResultReceiver recv = new SynchronousResultReceiver(); mBluetooth.enable(quietMode, attributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(false); } @@ -812,7 +812,7 @@ public class BluetoothManagerService extends IBluetoothManager.Stub { private String synchronousGetAddress(AttributionSource attributionSource) throws RemoteException, TimeoutException { if (mBluetooth == null) return null; - final SynchronousResultReceiver recv = SynchronousResultReceiver.get(); + final SynchronousResultReceiver recv = new SynchronousResultReceiver(); mBluetooth.getAddressWithAttribution(attributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(null); } @@ -821,7 +821,7 @@ public class BluetoothManagerService extends IBluetoothManager.Stub { private String synchronousGetName(AttributionSource attributionSource) throws RemoteException, TimeoutException { if (mBluetooth == null) return null; - final SynchronousResultReceiver recv = SynchronousResultReceiver.get(); + final SynchronousResultReceiver recv = new SynchronousResultReceiver(); mBluetooth.getName(attributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(null); } @@ -830,7 +830,7 @@ public class BluetoothManagerService extends IBluetoothManager.Stub { private int synchronousGetState() throws RemoteException, TimeoutException { if (mBluetooth == null) return BluetoothAdapter.STATE_OFF; - final SynchronousResultReceiver recv = SynchronousResultReceiver.get(); + final SynchronousResultReceiver recv = new SynchronousResultReceiver(); mBluetooth.getState(recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(BluetoothAdapter.STATE_OFF); } @@ -839,7 +839,7 @@ public class BluetoothManagerService extends IBluetoothManager.Stub { private void synchronousOnBrEdrDown(AttributionSource attributionSource) throws RemoteException, TimeoutException { if (mBluetooth == null) return; - final SynchronousResultReceiver recv = SynchronousResultReceiver.get(); + final SynchronousResultReceiver recv = new SynchronousResultReceiver(); mBluetooth.onBrEdrDown(attributionSource, recv); recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(null); } @@ -848,7 +848,7 @@ public class BluetoothManagerService extends IBluetoothManager.Stub { private void synchronousOnLeServiceUp(AttributionSource attributionSource) throws RemoteException, TimeoutException { if (mBluetooth == null) return; - final SynchronousResultReceiver recv = SynchronousResultReceiver.get(); + final SynchronousResultReceiver recv = new SynchronousResultReceiver(); mBluetooth.onLeServiceUp(attributionSource, recv); recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(null); } @@ -857,7 +857,7 @@ public class BluetoothManagerService extends IBluetoothManager.Stub { private void synchronousRegisterCallback(IBluetoothCallback callback, AttributionSource attributionSource) throws RemoteException, TimeoutException { if (mBluetooth == null) return; - final SynchronousResultReceiver recv = SynchronousResultReceiver.get(); + final SynchronousResultReceiver recv = new SynchronousResultReceiver(); mBluetooth.registerCallback(callback, attributionSource, recv); recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(null); } @@ -866,7 +866,7 @@ public class BluetoothManagerService extends IBluetoothManager.Stub { private void synchronousUnregisterCallback(IBluetoothCallback callback, AttributionSource attributionSource) throws RemoteException, TimeoutException { if (mBluetooth == null) return; - final SynchronousResultReceiver recv = SynchronousResultReceiver.get(); + final SynchronousResultReceiver recv = new SynchronousResultReceiver(); mBluetooth.unregisterCallback(callback, attributionSource, recv); recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(null); } @@ -1223,7 +1223,7 @@ public class BluetoothManagerService extends IBluetoothManager.Stub { if (isBleAppPresent()) { // Need to stay at BLE ON. Disconnect all Gatt connections try { - final SynchronousResultReceiver recv = SynchronousResultReceiver.get(); + final SynchronousResultReceiver recv = new SynchronousResultReceiver(); mBluetoothGatt.unregAll(attributionSource, recv); recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(null); } catch (RemoteException | TimeoutException e) { -- cgit v1.2.3 From 856f6acf59076eb3b200b1581d178745c9f0e681 Mon Sep 17 00:00:00 2001 From: Neha Jain Date: Wed, 29 Jun 2022 23:53:57 +0000 Subject: Revert "Revert "Reuse SynchronousResultReceivers instead of creating new."" This reverts commit dd85e91cea26c7f706af36c852e79d5b4ca1f173. Bug: 217366135 Reason for revert: Need this to fix a crash bug in tm-dev Change-Id: I2a94c278edc0681c5b8af6ea0a0171b71d72c650 (cherry picked from commit dbaf406ccb0ed887d4e93057c9ec0d3457f14457) Merged-In: I2a94c278edc0681c5b8af6ea0a0171b71d72c650 --- .../server/bluetooth/BluetoothManagerService.java | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) (limited to 'service/java/com/android/server/bluetooth/BluetoothManagerService.java') diff --git a/service/java/com/android/server/bluetooth/BluetoothManagerService.java b/service/java/com/android/server/bluetooth/BluetoothManagerService.java index a7d9831740..211154ceab 100644 --- a/service/java/com/android/server/bluetooth/BluetoothManagerService.java +++ b/service/java/com/android/server/bluetooth/BluetoothManagerService.java @@ -794,7 +794,7 @@ public class BluetoothManagerService extends IBluetoothManager.Stub { private boolean synchronousDisable(AttributionSource attributionSource) throws RemoteException, TimeoutException { if (mBluetooth == null) return false; - final SynchronousResultReceiver recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver recv = SynchronousResultReceiver.get(); mBluetooth.disable(attributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(false); } @@ -803,7 +803,7 @@ public class BluetoothManagerService extends IBluetoothManager.Stub { private boolean synchronousEnable(boolean quietMode, AttributionSource attributionSource) throws RemoteException, TimeoutException { if (mBluetooth == null) return false; - final SynchronousResultReceiver recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver recv = SynchronousResultReceiver.get(); mBluetooth.enable(quietMode, attributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(false); } @@ -812,7 +812,7 @@ public class BluetoothManagerService extends IBluetoothManager.Stub { private String synchronousGetAddress(AttributionSource attributionSource) throws RemoteException, TimeoutException { if (mBluetooth == null) return null; - final SynchronousResultReceiver recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver recv = SynchronousResultReceiver.get(); mBluetooth.getAddressWithAttribution(attributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(null); } @@ -821,7 +821,7 @@ public class BluetoothManagerService extends IBluetoothManager.Stub { private String synchronousGetName(AttributionSource attributionSource) throws RemoteException, TimeoutException { if (mBluetooth == null) return null; - final SynchronousResultReceiver recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver recv = SynchronousResultReceiver.get(); mBluetooth.getName(attributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(null); } @@ -830,7 +830,7 @@ public class BluetoothManagerService extends IBluetoothManager.Stub { private int synchronousGetState() throws RemoteException, TimeoutException { if (mBluetooth == null) return BluetoothAdapter.STATE_OFF; - final SynchronousResultReceiver recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver recv = SynchronousResultReceiver.get(); mBluetooth.getState(recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(BluetoothAdapter.STATE_OFF); } @@ -839,7 +839,7 @@ public class BluetoothManagerService extends IBluetoothManager.Stub { private void synchronousOnBrEdrDown(AttributionSource attributionSource) throws RemoteException, TimeoutException { if (mBluetooth == null) return; - final SynchronousResultReceiver recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver recv = SynchronousResultReceiver.get(); mBluetooth.onBrEdrDown(attributionSource, recv); recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(null); } @@ -848,7 +848,7 @@ public class BluetoothManagerService extends IBluetoothManager.Stub { private void synchronousOnLeServiceUp(AttributionSource attributionSource) throws RemoteException, TimeoutException { if (mBluetooth == null) return; - final SynchronousResultReceiver recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver recv = SynchronousResultReceiver.get(); mBluetooth.onLeServiceUp(attributionSource, recv); recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(null); } @@ -857,7 +857,7 @@ public class BluetoothManagerService extends IBluetoothManager.Stub { private void synchronousRegisterCallback(IBluetoothCallback callback, AttributionSource attributionSource) throws RemoteException, TimeoutException { if (mBluetooth == null) return; - final SynchronousResultReceiver recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver recv = SynchronousResultReceiver.get(); mBluetooth.registerCallback(callback, attributionSource, recv); recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(null); } @@ -866,7 +866,7 @@ public class BluetoothManagerService extends IBluetoothManager.Stub { private void synchronousUnregisterCallback(IBluetoothCallback callback, AttributionSource attributionSource) throws RemoteException, TimeoutException { if (mBluetooth == null) return; - final SynchronousResultReceiver recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver recv = SynchronousResultReceiver.get(); mBluetooth.unregisterCallback(callback, attributionSource, recv); recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(null); } @@ -1223,7 +1223,7 @@ public class BluetoothManagerService extends IBluetoothManager.Stub { if (isBleAppPresent()) { // Need to stay at BLE ON. Disconnect all Gatt connections try { - final SynchronousResultReceiver recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver recv = SynchronousResultReceiver.get(); mBluetoothGatt.unregAll(attributionSource, recv); recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(null); } catch (RemoteException | TimeoutException e) { -- cgit v1.2.3 From 0ebbe9d1f66581e0136026b7a2536f4cefdb6071 Mon Sep 17 00:00:00 2001 From: Sungsoo Lim Date: Wed, 29 Jun 2022 21:04:49 +0000 Subject: Catch IAE in BluetoothManagerService Bug: 237175319 Tag: #refactor Test: build Change-Id: I7d7ef16387756a53115701c461fa735f214c3f25 (cherry picked from commit aed442ee917a0e050744ea7008a65d8043604e83) (cherry picked from commit b94bfd919269f879f181726309891992f6b2f475) Merged-In: I7d7ef16387756a53115701c461fa735f214c3f25 --- .../java/com/android/server/bluetooth/BluetoothManagerService.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'service/java/com/android/server/bluetooth/BluetoothManagerService.java') diff --git a/service/java/com/android/server/bluetooth/BluetoothManagerService.java b/service/java/com/android/server/bluetooth/BluetoothManagerService.java index 211154ceab..042a4353c5 100644 --- a/service/java/com/android/server/bluetooth/BluetoothManagerService.java +++ b/service/java/com/android/server/bluetooth/BluetoothManagerService.java @@ -2189,7 +2189,11 @@ public class BluetoothManagerService extends IBluetoothManager.Stub { break; } if (msg.arg1 > 0) { - mContext.unbindService(psc); + try { + mContext.unbindService(psc); + } catch (IllegalArgumentException e) { + Log.e(TAG, "Unable to unbind service with intent: " + psc.mIntent, e); + } psc.bindService(msg.arg1 - 1); } break; -- cgit v1.2.3