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

Commit 1c67d7ba authored by Fabien Sanglard's avatar Fabien Sanglard
Browse files

Refactor and simplify native_pairing_wait

Returning a jstring instead of a jboolean allows for safer and simpler
code.

Test: NA
Bug: NA
Flag: EXEMPT(refactor)
Change-Id: I5fc79feb5ef3d906c4c0eeef806b1d226bfa21f7
parent b1880670
Loading
Loading
Loading
Loading
+6 −8
Original line number Diff line number Diff line
@@ -42,7 +42,6 @@ import android.debug.AdbManager;
import android.debug.AdbNotifications;
import android.debug.AdbProtoEnums;
import android.debug.AdbTransportType;
import android.debug.IAdbTransport;
import android.debug.PairDevice;
import android.net.ConnectivityManager;
import android.net.LocalSocket;
@@ -74,7 +73,6 @@ import android.util.Slog;
import android.util.Xml;

import com.android.internal.R;
import com.android.internal.annotations.Keep;
import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.messages.nano.SystemMessageProto.SystemMessage;
import com.android.internal.util.FrameworkStatsLog;
@@ -234,7 +232,6 @@ public class AdbDebuggingManager {

    class PairingThread extends Thread implements NsdManager.RegistrationListener {
        private NsdManager mNsdManager;
        @Keep private String mPublicKey;
        private String mPairingCode;
        private String mGuid;
        private String mServiceName;
@@ -250,7 +247,8 @@ public class AdbDebuggingManager {

        private native int native_pairing_start(String guid, String password);
        private native void native_pairing_cancel();
        private native boolean native_pairing_wait();

        private native String native_pairing_wait();

        PairingThread(String pairingCode, String serviceName) {
            super(TAG);
@@ -279,9 +277,9 @@ public class AdbDebuggingManager {
            msg.obj = mPort;
            mHandler.sendMessage(msg);

            boolean paired = native_pairing_wait();
            if (mPublicKey != null) {
                Slog.i(TAG, "Pairing succeeded key=" + mPublicKey);
            String publicKey = native_pairing_wait();
            if (publicKey != null) {
                Slog.i(TAG, "Pairing succeeded key=" + publicKey);
            } else {
                Slog.i(TAG, "Pairing failed");
            }
@@ -289,7 +287,7 @@ public class AdbDebuggingManager {
            mNsdManager.unregisterService(this);

            Bundle bundle = new Bundle();
            bundle.putString("publicKey", paired ? mPublicKey : null);
            bundle.putString("publicKey", publicKey);
            Message message = Message.obtain(mHandler,
                                             AdbDebuggingHandler.MSG_RESPONSE_PAIRING_RESULT,
                                             bundle);
+4 −14
Original line number Diff line number Diff line
@@ -91,28 +91,18 @@ static void native_pairing_cancel(JNIEnv* /* env */, jclass /* clazz */) {
    }
}

static jboolean native_pairing_wait(JNIEnv* env, jobject thiz) {
static jstring native_pairing_wait(JNIEnv* env, jobject thiz) {
    ALOGI("Waiting for pairing server to complete");
    std::unique_lock<std::mutex> lock(sWaiter->mutex_);
    if (!sWaiter->is_valid_.has_value()) {
        sWaiter->cv_.wait(lock, [&]() { return sWaiter->is_valid_.has_value(); });
    }
    if (!*(sWaiter->is_valid_)) {
        return JNI_FALSE;
        return nullptr;
    }

    // Create a Java string for the public key.
    char* peer_public_key = reinterpret_cast<char*>(sWaiter->peer_info_.data);
    jstring jpublickey = env->NewStringUTF(peer_public_key);
    if (jpublickey == nullptr) {
      return JNI_FALSE;
    }

    // Write to PairingThread.mPublicKey.
    jclass clazz = env->GetObjectClass(thiz);
    jfieldID mPublicKey = env->GetFieldID(clazz, "mPublicKey", "Ljava/lang/String;");
    env->SetObjectField(thiz, mPublicKey, jpublickey);
    return JNI_TRUE;
    return env->NewStringUTF(peer_public_key);
}

// ----------------------------------------------------------------------------
@@ -122,7 +112,7 @@ static const JNINativeMethod gPairingThreadMethods[] = {
        {"native_pairing_start", "(Ljava/lang/String;Ljava/lang/String;)I",
         (void*)native_pairing_start},
        {"native_pairing_cancel", "()V", (void*)native_pairing_cancel},
        {"native_pairing_wait", "()Z", (void*)native_pairing_wait},
        {"native_pairing_wait", "()Ljava/lang/String;", (void*)native_pairing_wait},
};

int register_android_server_AdbDebuggingManager(JNIEnv* env) {