Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c09aea8f authored by Łukasz Rymanowski's avatar Łukasz Rymanowski
Browse files

LeAudioService: Fix race on bluetooth turning off

When stressing BT ON/OFF it might happen that service is not available
when LeAudioService is trying to get it.
In such case, let's be nice and do not throw exception

Bug: 324533075
Test: atest BluetoothLeAudioTest
Flags: Exempt, trivial fix.
Change-Id: I7f05fea4f555439f4b2df55d26d6d7b8f8e1bbe4
parent 1cc0111c
Loading
Loading
Loading
Loading
+26 −28
Original line number Diff line number Diff line
@@ -4603,12 +4603,12 @@ public class LeAudioService extends ProfileService {
                Objects.requireNonNull(source, "source cannot be null");
                Objects.requireNonNull(receiver, "receiver cannot be null");

                int result = BluetoothProfile.CONNECTION_POLICY_UNKNOWN;
                LeAudioService service = getService(source);
                if (service == null) {
                    throw new IllegalStateException("service is null");
                }
                if (service != null) {
                    enforceBluetoothPrivilegedPermission(service);
                int result = service.getConnectionPolicy(device);
                    result = service.getConnectionPolicy(device);
                }
                receiver.send(result);
            } catch (RuntimeException e) {
                receiver.propagateException(e);
@@ -4625,11 +4625,10 @@ public class LeAudioService extends ProfileService {
                Objects.requireNonNull(receiver, "receiver cannot be null");

                LeAudioService service = getService(source);
                if (service == null) {
                    throw new IllegalStateException("service is null");
                }
                if (service != null) {
                    enforceBluetoothPrivilegedPermission(service);
                    service.setCcidInformation(userUuid, ccid, contextType);
                }
                receiver.send(null);
            } catch (RuntimeException e) {
                receiver.propagateException(e);
@@ -4644,11 +4643,11 @@ public class LeAudioService extends ProfileService {
                Objects.requireNonNull(source, "source cannot be null");
                Objects.requireNonNull(receiver, "receiver cannot be null");

                int result = LE_AUDIO_GROUP_ID_INVALID;
                LeAudioService service = getService(source);
                if (service == null) {
                    throw new IllegalStateException("service is null");
                if (service != null) {
                    result = service.getGroupId(device);
                }
                int result = service.getGroupId(device);
                receiver.send(result);
            } catch (RuntimeException e) {
                receiver.propagateException(e);
@@ -4663,12 +4662,12 @@ public class LeAudioService extends ProfileService {
                Objects.requireNonNull(source, "source cannot be null");
                Objects.requireNonNull(receiver, "receiver cannot be null");

                boolean result = false;
                LeAudioService service = getService(source);
                if (service == null) {
                    throw new IllegalStateException("service is null");
                }
                if (service != null) {
                    enforceBluetoothPrivilegedPermission(service);
                boolean result = service.groupAddNode(group_id, device);
                    result = service.groupAddNode(group_id, device);
                }
                receiver.send(result);
            } catch (RuntimeException e) {
                receiver.propagateException(e);
@@ -4683,11 +4682,10 @@ public class LeAudioService extends ProfileService {
                Objects.requireNonNull(receiver, "receiver cannot be null");

                LeAudioService service = getService(source);
                if (service == null) {
                    throw new IllegalStateException("service is null");
                }
                if (service != null) {
                    enforceBluetoothPrivilegedPermission(service);
                    service.setInCall(inCall);
                }
                receiver.send(null);
            } catch (RuntimeException e) {
                receiver.propagateException(e);
@@ -4703,11 +4701,10 @@ public class LeAudioService extends ProfileService {
                Objects.requireNonNull(receiver, "receiver cannot be null");

                LeAudioService service = getService(source);
                if (service == null) {
                    throw new IllegalStateException("service is null");
                }
                if (service != null) {
                    enforceBluetoothPrivilegedPermission(service);
                    service.setInactiveForHfpHandover(hfpHandoverDevice);
                }
                receiver.send(null);
            } catch (RuntimeException e) {
                receiver.propagateException(e);
@@ -4722,12 +4719,12 @@ public class LeAudioService extends ProfileService {
                Objects.requireNonNull(source, "source cannot be null");
                Objects.requireNonNull(receiver, "receiver cannot be null");

                boolean result = false;
                LeAudioService service = getService(source);
                if (service == null) {
                    throw new IllegalStateException("service is null");
                }
                if (service != null) {
                    enforceBluetoothPrivilegedPermission(service);
                boolean result = service.groupRemoveNode(groupId, device);
                    result = service.groupRemoveNode(groupId, device);
                }
                receiver.send(result);
            } catch (RuntimeException e) {
                receiver.propagateException(e);
@@ -4743,7 +4740,8 @@ public class LeAudioService extends ProfileService {

                LeAudioService service = getService(source);
                if (service == null) {
                    throw new IllegalStateException("service is null");
                    receiver.send(null);
                    return;
                }
                enforceBluetoothPrivilegedPermission(service);
                receiver.send(null);