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

Commit 2a31c9c5 authored by Łukasz Rymanowski's avatar Łukasz Rymanowski Committed by Gerrit Code Review
Browse files

Merge changes I7f05fea4,I7519b7e5,Ib72decac into main

* changes:
  LeAudioService: Fix race on bluetooth turning off
  HapClientService: Fix race on bluetooth turning off
  CsipSetCoordinatorService: Fix race on bluetooth turning off
parents 72e77c79 c09aea8f
Loading
Loading
Loading
Loading
+59 −80
Original line number Diff line number Diff line
@@ -1070,15 +1070,13 @@ public class CsipSetCoordinatorService extends ProfileService {
                Objects.requireNonNull(source, "source cannot be null");
                Objects.requireNonNull(receiver, "receiver cannot be null");

                boolean defaultValue = false;
                CsipSetCoordinatorService service = getService();
                if (service == null) {
                    throw new IllegalStateException("service is null");
                }

                if (service != null) {
                    enforceBluetoothPrivilegedPermission(service);

                boolean result = service.connect(device);
                receiver.send(result);
                    defaultValue = service.connect(device);
                }
                receiver.send(defaultValue);
            } catch (RuntimeException e) {
                receiver.propagateException(e);
            }
@@ -1092,15 +1090,13 @@ public class CsipSetCoordinatorService extends ProfileService {
                Objects.requireNonNull(source, "source cannot be null");
                Objects.requireNonNull(receiver, "receiver cannot be null");

                boolean defaultValue = false;
                CsipSetCoordinatorService service = getService();
                if (service == null) {
                    throw new IllegalStateException("service is null");
                }

                if (service != null) {
                    enforceBluetoothPrivilegedPermission(service);

                boolean result = service.disconnect(device);
                receiver.send(result);
                    defaultValue = service.disconnect(device);
                }
                receiver.send(defaultValue);
            } catch (RuntimeException e) {
                receiver.propagateException(e);
            }
@@ -1113,15 +1109,13 @@ public class CsipSetCoordinatorService extends ProfileService {
                Objects.requireNonNull(source, "source cannot be null");
                Objects.requireNonNull(receiver, "receiver cannot be null");

                List<BluetoothDevice> defaultValue = new ArrayList<>();
                CsipSetCoordinatorService service = getService();
                if (service == null) {
                    throw new IllegalStateException("service is null");
                }

                if (service != null) {
                    enforceBluetoothPrivilegedPermission(service);

                List<BluetoothDevice> result = service.getConnectedDevices();
                receiver.send(result);
                    defaultValue = service.getConnectedDevices();
                }
                receiver.send(defaultValue);
            } catch (RuntimeException e) {
                receiver.propagateException(e);
            }
@@ -1134,15 +1128,13 @@ public class CsipSetCoordinatorService extends ProfileService {
                Objects.requireNonNull(source, "source cannot be null");
                Objects.requireNonNull(receiver, "receiver cannot be null");

                List<BluetoothDevice> defaultValue = new ArrayList<>();
                CsipSetCoordinatorService service = getService();
                if (service == null) {
                    throw new IllegalStateException("service is null");
                }

                if (service != null) {
                    enforceBluetoothPrivilegedPermission(service);

                List<BluetoothDevice> result = service.getDevicesMatchingConnectionStates(states);
                receiver.send(result);
                    defaultValue = service.getDevicesMatchingConnectionStates(states);
                }
                receiver.send(defaultValue);
            } catch (RuntimeException e) {
                receiver.propagateException(e);
            }
@@ -1156,14 +1148,13 @@ public class CsipSetCoordinatorService extends ProfileService {
                Objects.requireNonNull(source, "source cannot be null");
                Objects.requireNonNull(receiver, "receiver cannot be null");

                int defaultValue = BluetoothProfile.STATE_DISCONNECTED;
                CsipSetCoordinatorService service = getService();
                if (service == null) {
                    throw new IllegalStateException("service is null");
                }

                if (service != null) {
                    enforceBluetoothPrivilegedPermission(service);
                int result = service.getConnectionState(device);
                receiver.send(result);
                    defaultValue = service.getConnectionState(device);
                }
                receiver.send(defaultValue);
            } catch (RuntimeException e) {
                receiver.propagateException(e);
            }
@@ -1177,15 +1168,13 @@ public class CsipSetCoordinatorService extends ProfileService {
                Objects.requireNonNull(source, "source cannot be null");
                Objects.requireNonNull(receiver, "receiver cannot be null");

                boolean defaultValue = false;
                CsipSetCoordinatorService service = getService();
                if (service == null) {
                    throw new IllegalStateException("service is null");
                }

                if (service != null) {
                    enforceBluetoothPrivilegedPermission(service);

                boolean result = service.setConnectionPolicy(device, connectionPolicy);
                receiver.send(result);
                    defaultValue = service.setConnectionPolicy(device, connectionPolicy);
                }
                receiver.send(defaultValue);
            } catch (RuntimeException e) {
                receiver.propagateException(e);
            }
@@ -1199,15 +1188,13 @@ public class CsipSetCoordinatorService extends ProfileService {
                Objects.requireNonNull(source, "source cannot be null");
                Objects.requireNonNull(receiver, "receiver cannot be null");

                int defaultValue = BluetoothProfile.CONNECTION_POLICY_UNKNOWN;
                CsipSetCoordinatorService service = getService();
                if (service == null) {
                    throw new IllegalStateException("service is null");
                }

                if (service != null) {
                    enforceBluetoothPrivilegedPermission(service);

                int result = service.getConnectionPolicy(device);
                receiver.send(result);
                    defaultValue = service.getConnectionPolicy(device);
                }
                receiver.send(defaultValue);
            } catch (RuntimeException e) {
                receiver.propagateException(e);
            }
@@ -1222,16 +1209,14 @@ public class CsipSetCoordinatorService extends ProfileService {
                Objects.requireNonNull(source, "source cannot be null");
                Objects.requireNonNull(receiver, "receiver cannot be null");

                ParcelUuid defaultValue = null;
                CsipSetCoordinatorService service = getService();
                if (service == null) {
                    throw new IllegalStateException("service is null");
                }

                if (service != null) {
                    enforceBluetoothPrivilegedPermission(service);

                    UUID lockUuid = service.lockGroup(groupId, callback);
                ParcelUuid result = lockUuid == null ? null : new ParcelUuid(lockUuid);
                receiver.send(result);
                    defaultValue = lockUuid == null ? null : new ParcelUuid(lockUuid);
                }
                receiver.send(defaultValue);
            } catch (RuntimeException e) {
                receiver.propagateException(e);
            }
@@ -1246,13 +1231,11 @@ public class CsipSetCoordinatorService extends ProfileService {
                Objects.requireNonNull(receiver, "receiver cannot be null");

                CsipSetCoordinatorService service = getService();
                if (service == null) {
                    throw new IllegalStateException("service is null");
                }

                if (service != null) {
                    enforceBluetoothPrivilegedPermission(service);

                    service.unlockGroup(lockUuid.getUuid());
                }

                receiver.send(null);
            } catch (RuntimeException e) {
                receiver.propagateException(e);
@@ -1267,13 +1250,13 @@ public class CsipSetCoordinatorService extends ProfileService {
                Objects.requireNonNull(source, "source cannot be null");
                Objects.requireNonNull(receiver, "receiver cannot be null");

                List<Integer> defaultValue = new ArrayList<Integer>();
                CsipSetCoordinatorService service = getService();
                if (service == null) {
                    throw new IllegalStateException("service is null");
                }
                if (service != null) {
                    enforceBluetoothPrivilegedPermission(service);
                List<Integer> result = service.getAllGroupIds(uuid);
                receiver.send(result);
                    defaultValue = service.getAllGroupIds(uuid);
                }
                receiver.send(defaultValue);
            } catch (RuntimeException e) {
                receiver.propagateException(e);
            }
@@ -1283,15 +1266,13 @@ public class CsipSetCoordinatorService extends ProfileService {
        public void getGroupUuidMapByDevice(BluetoothDevice device,
                AttributionSource source, SynchronousResultReceiver receiver) {
            try {
                Map<Integer, ParcelUuid> defaultValue = null;
                CsipSetCoordinatorService service = getService();
                if (service == null) {
                    throw new IllegalStateException("service is null");
                }

                if (service != null) {
                    enforceBluetoothPrivilegedPermission(service);

                Map<Integer, ParcelUuid> result = service.getGroupUuidMapByDevice(device);
                receiver.send(result);
                    defaultValue = service.getGroupUuidMapByDevice(device);
                }
                receiver.send(defaultValue);
            } catch (RuntimeException e) {
                receiver.propagateException(e);
            }
@@ -1301,15 +1282,13 @@ public class CsipSetCoordinatorService extends ProfileService {
        public void getDesiredGroupSize(int groupId, AttributionSource source,
                SynchronousResultReceiver receiver) {
            try {
                int defaultValue = IBluetoothCsipSetCoordinator.CSIS_GROUP_SIZE_UNKNOWN;
                CsipSetCoordinatorService service = getService();
                if (service == null) {
                    throw new IllegalStateException("service is null");
                }

                if (service != null) {
                    enforceBluetoothPrivilegedPermission(service);

                int result = service.getDesiredGroupSize(groupId);
                receiver.send(result);
                    defaultValue = service.getDesiredGroupSize(groupId);
                }
                receiver.send(defaultValue);
            } catch (RuntimeException e) {
                receiver.propagateException(e);
            }
+55 −55
Original line number Diff line number Diff line
@@ -1231,13 +1231,13 @@ public class HapClientService extends ProfileService {
                Objects.requireNonNull(source, "source cannot be null");
                Objects.requireNonNull(receiver, "receiver cannot be null");

                List<BluetoothDevice> defaultValue = new ArrayList<>();
                HapClientService service = getService(source);
                if (service == null) {
                    throw new IllegalStateException("service is null");
                }
                if (service != null) {
                    enforceBluetoothPrivilegedPermission(service);
                List<BluetoothDevice> result = service.getConnectedDevices();
                receiver.send(result);
                    defaultValue = service.getConnectedDevices();
                }
                receiver.send(defaultValue);
            } catch (RuntimeException e) {
                receiver.propagateException(e);
            }
@@ -1250,13 +1250,13 @@ public class HapClientService extends ProfileService {
                Objects.requireNonNull(source, "source cannot be null");
                Objects.requireNonNull(receiver, "receiver cannot be null");

                List<BluetoothDevice> defaultValue = new ArrayList<>();
                HapClientService service = getService(source);
                if (service == null) {
                    throw new IllegalStateException("service is null");
                }
                if (service != null) {
                    enforceBluetoothPrivilegedPermission(service);
                List<BluetoothDevice> result = service.getDevicesMatchingConnectionStates(states);
                receiver.send(result);
                    defaultValue = service.getDevicesMatchingConnectionStates(states);
                }
                receiver.send(defaultValue);
            } catch (RuntimeException e) {
                receiver.propagateException(e);
            }
@@ -1270,13 +1270,13 @@ public class HapClientService extends ProfileService {
                Objects.requireNonNull(source, "source cannot be null");
                Objects.requireNonNull(receiver, "receiver cannot be null");

                int defaultValue = BluetoothProfile.STATE_DISCONNECTED;
                HapClientService service = getService(source);
                if (service == null) {
                    throw new IllegalStateException("service is null");
                }
                if (service != null) {
                    enforceBluetoothPrivilegedPermission(service);
                int result = service.getConnectionState(device);
                receiver.send(result);
                    defaultValue = service.getConnectionState(device);
                }
                receiver.send(defaultValue);
            } catch (RuntimeException e) {
                receiver.propagateException(e);
            }
@@ -1290,13 +1290,13 @@ public class HapClientService extends ProfileService {
                Objects.requireNonNull(source, "source cannot be null");
                Objects.requireNonNull(receiver, "receiver cannot be null");

                boolean defaultValue = false;
                HapClientService service = getService(source);
                if (service == null) {
                    throw new IllegalStateException("service is null");
                }
                if (service != null) {
                    enforceBluetoothPrivilegedPermission(service);
                boolean result = service.setConnectionPolicy(device, connectionPolicy);
                receiver.send(result);
                    defaultValue = service.setConnectionPolicy(device, connectionPolicy);
                }
                receiver.send(defaultValue);
            } catch (RuntimeException e) {
                receiver.propagateException(e);
            }
@@ -1310,13 +1310,13 @@ public class HapClientService extends ProfileService {
                Objects.requireNonNull(source, "source cannot be null");
                Objects.requireNonNull(receiver, "receiver cannot be null");

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

                int defaultValue = BluetoothHapClient.PRESET_INDEX_UNAVAILABLE;
                HapClientService service = getService(source);
                if (service == null) {
                    throw new IllegalStateException("service is null");
                }
                if (service != null) {
                    enforceBluetoothPrivilegedPermission(service);
                int result = service.getActivePresetIndex(device);
                receiver.send(result);
                    defaultValue = service.getActivePresetIndex(device);
                }
                receiver.send(defaultValue);
            } catch (RuntimeException e) {
                receiver.propagateException(e);
            }
@@ -1350,13 +1350,13 @@ public class HapClientService extends ProfileService {
                Objects.requireNonNull(source, "source cannot be null");
                Objects.requireNonNull(receiver, "receiver cannot be null");

                BluetoothHapPresetInfo defaultValue = null;
                HapClientService service = getService(source);
                if (service == null) {
                    throw new IllegalStateException("service is null");
                }
                if (service != null) {
                    enforceBluetoothPrivilegedPermission(service);
                BluetoothHapPresetInfo result = service.getActivePresetInfo(device);
                receiver.send(result);
                    defaultValue = service.getActivePresetInfo(device);
                }
                receiver.send(defaultValue);
            } catch (RuntimeException e) {
                receiver.propagateException(e);
            }
@@ -1370,13 +1370,13 @@ public class HapClientService extends ProfileService {
                Objects.requireNonNull(source, "source cannot be null");
                Objects.requireNonNull(receiver, "receiver cannot be null");

                int defaultValue = BluetoothCsipSetCoordinator.GROUP_ID_INVALID;
                HapClientService service = getService(source);
                if (service == null) {
                    throw new IllegalStateException("service is null");
                }
                if (service != null) {
                    enforceBluetoothPrivilegedPermission(service);
                int result = service.getHapGroup(device);
                receiver.send(result);
                    defaultValue = service.getHapGroup(device);
                }
                receiver.send(defaultValue);
            } catch (RuntimeException e) {
                receiver.propagateException(e);
            }
@@ -1488,13 +1488,13 @@ public class HapClientService extends ProfileService {
                Objects.requireNonNull(source, "source cannot be null");
                Objects.requireNonNull(receiver, "receiver cannot be null");

                BluetoothHapPresetInfo defaultValue = null;
                HapClientService service = getService(source);
                if (service == null) {
                    throw new IllegalStateException("service is null");
                }
                if (service != null) {
                    enforceBluetoothPrivilegedPermission(service);
                BluetoothHapPresetInfo result = service.getPresetInfo(device, presetIndex);
                receiver.send(result);
                    defaultValue = service.getPresetInfo(device, presetIndex);
                }
                receiver.send(defaultValue);
            } catch (RuntimeException e) {
                receiver.propagateException(e);
            }
@@ -1508,13 +1508,13 @@ public class HapClientService extends ProfileService {
                Objects.requireNonNull(source, "source cannot be null");
                Objects.requireNonNull(receiver, "receiver cannot be null");

                List<BluetoothHapPresetInfo> defaultValue = new ArrayList<>();
                HapClientService service = getService(source);
                if (service == null) {
                    throw new IllegalStateException("service is null");
                }
                if (service != null) {
                    enforceBluetoothPrivilegedPermission(service);
                List<BluetoothHapPresetInfo> result = service.getAllPresetInfo(device);
                receiver.send(result);
                    defaultValue = service.getAllPresetInfo(device);
                }
                receiver.send(defaultValue);
            } catch (RuntimeException e) {
                receiver.propagateException(e);
            }
@@ -1528,13 +1528,13 @@ public class HapClientService extends ProfileService {
                Objects.requireNonNull(source, "source cannot be null");
                Objects.requireNonNull(receiver, "receiver cannot be null");

                int defaultValue = 0x00;
                HapClientService service = getService(source);
                if (service == null) {
                    throw new IllegalStateException("service is null");
                }
                if (service != null) {
                    enforceBluetoothPrivilegedPermission(service);
                int result = service.getFeatures(device);
                receiver.send(result);
                    defaultValue = service.getFeatures(device);
                }
                receiver.send(defaultValue);
            } catch (RuntimeException e) {
                receiver.propagateException(e);
            }
+26 −28
Original line number Diff line number Diff line
@@ -4599,12 +4599,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);
@@ -4621,11 +4621,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);
@@ -4640,11 +4639,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);
@@ -4659,12 +4658,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);
@@ -4679,11 +4678,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);
@@ -4699,11 +4697,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);
@@ -4718,12 +4715,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);
@@ -4739,7 +4736,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);