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

Commit 7669e41d authored by Martijn Coenen's avatar Martijn Coenen Committed by android-build-merger
Browse files

Merge "Remove interfaceChain from IServiceManager::add()" am: 4a75e32f

am: 7665332a

Change-Id: I9f5187d9152e151afbf3fd165e4b6f58b4ac9638
parents 2fca3afd 7665332a
Loading
Loading
Loading
Loading
+1 −3
Original line number Diff line number Diff line
@@ -43,9 +43,7 @@ public abstract class HwBinder implements IHwBinder {
            int code, HwParcel request, HwParcel reply, int flags)
        throws RemoteException;

    public native final void registerService(
            ArrayList<String> interfaceChain,
            String serviceName)
    public native final void registerService(String serviceName)
        throws RemoteException;

    public static native final IHwBinder getService(
+2 −32
Original line number Diff line number Diff line
@@ -49,12 +49,6 @@ using Return = android::hardware::Return<T>;

namespace android {

static jclass gArrayListClass;
static struct {
    jmethodID size;
    jmethodID get;
} gArrayListMethods;

static jclass gErrorClass;

static struct fields_t {
@@ -237,7 +231,6 @@ static void JHwBinder_native_transact(
static void JHwBinder_native_registerService(
        JNIEnv *env,
        jobject thiz,
        jobject interfaceChainArrayList,
        jstring serviceNameObj) {
    if (serviceNameObj == NULL) {
        jniThrowException(env, "java/lang/NullPointerException", NULL);
@@ -249,24 +242,6 @@ static void JHwBinder_native_registerService(
        return;  // XXX exception already pending?
    }

    jint numInterfaces = env->CallIntMethod(interfaceChainArrayList,
                                            gArrayListMethods.size);
    hidl_string *strings = new hidl_string[numInterfaces];

    for (jint i = 0; i < numInterfaces; i++) {
        jstring strObj = static_cast<jstring>(
            env->CallObjectMethod(interfaceChainArrayList,
                                  gArrayListMethods.get,
                                  i)
        );
        const char * str = env->GetStringUTFChars(strObj, nullptr);
        strings[i] = hidl_string(str);
        env->ReleaseStringUTFChars(strObj, str);
    }

    hidl_vec<hidl_string> interfaceChain;
    interfaceChain.setToExternal(strings, numInterfaces, true /* shouldOwn */);

    sp<hardware::IBinder> binder = JHwBinder::GetNativeContext(env, thiz);

    /* TODO(b/33440494) this is not right */
@@ -280,7 +255,7 @@ static void JHwBinder_native_registerService(
        return;
    }

    Return<bool> ret = manager->add(interfaceChain, serviceName, base);
    Return<bool> ret = manager->add(serviceName, base);

    env->ReleaseStringUTFChars(serviceNameObj, serviceName);
    serviceName = NULL;
@@ -383,7 +358,7 @@ static JNINativeMethod gMethods[] = {
        "(IL" PACKAGE_PATH "/HwParcel;L" PACKAGE_PATH "/HwParcel;I)V",
        (void *)JHwBinder_native_transact },

    { "registerService", "(Ljava/util/ArrayList;Ljava/lang/String;)V",
    { "registerService", "(Ljava/lang/String;)V",
        (void *)JHwBinder_native_registerService },

    { "getService", "(Ljava/lang/String;Ljava/lang/String;)L" PACKAGE_PATH "/IHwBinder;",
@@ -393,11 +368,6 @@ static JNINativeMethod gMethods[] = {
namespace android {

int register_android_os_HwBinder(JNIEnv *env) {
    jclass arrayListClass = FindClassOrDie(env, "java/util/ArrayList");
    gArrayListClass = MakeGlobalRefOrDie(env, arrayListClass);
    gArrayListMethods.size = GetMethodIDOrDie(env, arrayListClass, "size", "()I");
    gArrayListMethods.get = GetMethodIDOrDie(env, arrayListClass, "get", "(I)Ljava/lang/Object;");

    jclass errorClass = FindClassOrDie(env, "java/lang/Error");
    gErrorClass = MakeGlobalRefOrDie(env, errorClass);