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

Commit fc71f20f authored by Kihong Seong's avatar Kihong Seong
Browse files

Handle null identity address in SdpManager

Change functions to use a Util method to accommodate the behavior
correction where identity address can be null

Bug: 317120534
Bug: 295907764
Test: m com.android.btservices
Change-Id: I7f22f4ee5b707629b82d3aa5a7a4529a757c4096
parent 2205741d
Loading
Loading
Loading
Loading
+12 −0
Original line number Diff line number Diff line
@@ -224,6 +224,18 @@ public final class Utils {
        return String.format("XX:XX:XX:XX:%02X:%02X", address[4], address[5]);
    }

    /**
     * Returns the correct device address to be used for connections over BR/EDR transport.
     *
     * @param address the device address for which to obtain the connection address
     * @param service the adapter service to make the identity address retrieval call
     * @return either identity address or device address in String format
     */
    public static String getBrEdrAddress(String address, AdapterService service) {
        String identity = service.getIdentityAddress(address);
        return identity != null ? identity : address;
    }

    /**
     * Returns the correct device address to be used for connections over BR/EDR transport.
     *
+14 −4
Original line number Diff line number Diff line
@@ -143,11 +143,16 @@ public class SdpManager {

        SdpSearchInstance getSearchInstance(byte[] address, byte[] uuidBytes) {
            String addressString = Utils.getAddressStringFromByte(address);
            addressString = mAdapterService.getIdentityAddress(addressString);
            addressString =
                    Flags.identityAddressNullIfUnknown()
                            ? Utils.getBrEdrAddress(addressString, mAdapterService)
                            : mAdapterService.getIdentityAddress(addressString);
            ParcelUuid uuid = Utils.byteArrayToUuid(uuidBytes)[0];
            for (SdpSearchInstance inst : mList) {
                String instAddressString =
                        mAdapterService.getIdentityAddress(inst.getDevice().getAddress());
                        Flags.identityAddressNullIfUnknown()
                                ? Utils.getBrEdrAddress(inst.getDevice(), mAdapterService)
                                : mAdapterService.getIdentityAddress(inst.getDevice().getAddress());
                if (instAddressString.equals(addressString) && inst.getUuid().equals(uuid)) {
                    return inst;
                }
@@ -156,10 +161,15 @@ public class SdpManager {
        }

        boolean isSearching(BluetoothDevice device, ParcelUuid uuid) {
            String addressString = mAdapterService.getIdentityAddress(device.getAddress());
            String addressString =
                    Flags.identityAddressNullIfUnknown()
                            ? Utils.getBrEdrAddress(device, mAdapterService)
                            : mAdapterService.getIdentityAddress(device.getAddress());
            for (SdpSearchInstance inst : mList) {
                String instAddressString =
                        mAdapterService.getIdentityAddress(inst.getDevice().getAddress());
                        Flags.identityAddressNullIfUnknown()
                                ? Utils.getBrEdrAddress(inst.getDevice(), mAdapterService)
                                : mAdapterService.getIdentityAddress(inst.getDevice().getAddress());
                if (instAddressString != null
                        && instAddressString.equals(addressString)
                        && inst.getUuid().equals(uuid)) {