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

Commit 019b10c9 authored by Hyundo Moon's avatar Hyundo Moon Committed by Gerrit Code Review
Browse files

Merge changes Ic32034c5,Ie6f5bb31 into main

* changes:
  Add GattServer connection tests
  BluetoothGattServer: Pass address type to native
parents 0666af01 e90d394b
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -153,7 +153,7 @@ interface IBluetoothGatt {
    @JavaPassthrough(annotation="@android.annotation.RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT)")
    void unregisterServer(in int serverIf, in AttributionSource attributionSource);
    @JavaPassthrough(annotation="@android.annotation.RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT)")
    void serverConnect(in int serverIf, in String address, in boolean isDirect, in int transport, in AttributionSource attributionSource);
    void serverConnect(in int serverIf, in String address, in int addressType, in boolean isDirect, in int transport, in AttributionSource attributionSource);
    @JavaPassthrough(annotation="@android.annotation.RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT)")
    void serverDisconnect(in int serverIf, in String address, in AttributionSource attributionSource);
    @JavaPassthrough(annotation="@android.annotation.RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT)")
+4 −3
Original line number Diff line number Diff line
@@ -1935,11 +1935,12 @@ static void gattServerUnregisterAppNative(JNIEnv* /* env */,

static void gattServerConnectNative(JNIEnv* env, jobject /* object */,
                                    jint server_if, jstring address,
                                    jboolean is_direct, jint transport) {
                                    jint addr_type, jboolean is_direct,
                                    jint transport) {
  if (!sGattIf) return;

  RawAddress bd_addr = str2addr(env, address);
  sGattIf->server->connect(server_if, bd_addr, is_direct, transport);
  sGattIf->server->connect(server_if, bd_addr, addr_type, is_direct, transport);
}

static void gattServerDisconnectNative(JNIEnv* env, jobject /* object */,
@@ -2823,7 +2824,7 @@ static int register_com_android_bluetooth_gatt_(JNIEnv* env) {
       (void*)gattServerRegisterAppNative},
      {"gattServerUnregisterAppNative", "(I)V",
       (void*)gattServerUnregisterAppNative},
      {"gattServerConnectNative", "(ILjava/lang/String;ZI)V",
      {"gattServerConnectNative", "(ILjava/lang/String;IZI)V",
       (void*)gattServerConnectNative},
      {"gattServerDisconnectNative", "(ILjava/lang/String;I)V",
       (void*)gattServerDisconnectNative},
+8 −8
Original line number Diff line number Diff line
@@ -304,8 +304,10 @@ public class GattNativeInterface {
    private native void gattServerRegisterAppNative(long appUuidLsb, long appUuidMsb,
            boolean eattSupport);
    private native void gattServerUnregisterAppNative(int serverIf);
    private native void gattServerConnectNative(int serverIf, String address, boolean isDirect,
            int transport);

    private native void gattServerConnectNative(
            int serverIf, String address, int addressType, boolean isDirect, int transport);

    private native void gattServerDisconnectNative(int serverIf, String address, int connId);
    private native void gattServerSetPreferredPhyNative(int clientIf, String address, int txPhy,
            int rxPhy, int phyOptions);
@@ -533,12 +535,10 @@ public class GattNativeInterface {
        gattServerUnregisterAppNative(serverIf);
    }

    /**
     * Connect to a remote device as a GATT server role
     */
    public void gattServerConnect(int serverIf, String address, boolean isDirect,
            int transport) {
        gattServerConnectNative(serverIf, address, isDirect, transport);
    /** Connect to a remote device as a GATT server role */
    public void gattServerConnect(
            int serverIf, String address, int addressType, boolean isDirect, int transport) {
        gattServerConnectNative(serverIf, address, addressType, isDirect, transport);
    }

    /**
+15 −4
Original line number Diff line number Diff line
@@ -786,13 +786,19 @@ public class GattService extends ProfileService {
        }

        @Override
        public void serverConnect(int serverIf, String address, boolean isDirect, int transport,
        public void serverConnect(
                int serverIf,
                String address,
                int addressType,
                boolean isDirect,
                int transport,
                AttributionSource attributionSource) {
            GattService service = getService();
            if (service == null) {
                return;
            }
            service.serverConnect(serverIf, address, isDirect, transport, attributionSource);
            service.serverConnect(
                    serverIf, address, addressType, isDirect, transport, attributionSource);
        }

        @Override
@@ -2676,7 +2682,12 @@ public class GattService extends ProfileService {
    }

    @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT)
    void serverConnect(int serverIf, String address, boolean isDirect, int transport,
    void serverConnect(
            int serverIf,
            String address,
            int addressType,
            boolean isDirect,
            int transport,
            AttributionSource attributionSource) {
        if (!Utils.checkConnectPermissionForDataDelivery(
                this, attributionSource, "GattService serverConnect")) {
@@ -2687,7 +2698,7 @@ public class GattService extends ProfileService {

        logServerForegroundInfo(attributionSource.getUid(), isDirect);

        mNativeInterface.gattServerConnect(serverIf, address, isDirect, transport);
        mNativeInterface.gattServerConnect(serverIf, address, addressType, isDirect, transport);
    }

    @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT)
+6 −2
Original line number Diff line number Diff line
@@ -473,12 +473,16 @@ public class GattServiceBinderTest {
    public void serverConnect() {
        int serverIf = 1;
        String address = REMOTE_DEVICE_ADDRESS;
        int addressType = BluetoothDevice.ADDRESS_TYPE_RANDOM;
        boolean isDirect = true;
        int transport = 2;

        mBinder.serverConnect(serverIf, address, isDirect, transport, mAttributionSource);
        mBinder.serverConnect(
                serverIf, address, addressType, isDirect, transport, mAttributionSource);

        verify(mService).serverConnect(serverIf, address, isDirect, transport, mAttributionSource);
        verify(mService)
                .serverConnect(
                        serverIf, address, addressType, isDirect, transport, mAttributionSource);
    }

    @Test
Loading