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

Commit cc0b4794 authored by Tomasz Wasilczyk's avatar Tomasz Wasilczyk
Browse files

Remove EnvWrapper template.

Bug: b/36863239
Test: instrumentation
Change-Id: I21e3d86942fba37f6e0d6608b73a8a6863d8b27a
parent c23243a0
Loading
Loading
Loading
Loading
+0 −8
Original line number Original line Diff line number Diff line
@@ -14,13 +14,9 @@
 * limitations under the License.
 * limitations under the License.
 */
 */


#define LOG_TAG "JavaRef"
//#define LOG_NDEBUG 0

#include "JavaRef.h"
#include "JavaRef.h"


#include <string>
#include <string>
#include <utils/Log.h>


namespace android {
namespace android {


@@ -28,8 +24,4 @@ JavaRef<jstring> make_javastr(JNIEnv *env, const std::string &str) {
    return make_javaref(env, env->NewStringUTF(str.c_str()));
    return make_javaref(env, env->NewStringUTF(str.c_str()));
}
}


EnvWrapper::EnvWrapper(JNIEnv *env) : mEnv(env) {
    ALOGE_IF(env == nullptr, "Environment is a nullptr");
}

} // namespace android
} // namespace android
+0 −15
Original line number Original line Diff line number Diff line
@@ -39,21 +39,6 @@ JavaRef<T> make_javaref(JNIEnv *env, T ref) {


JavaRef<jstring> make_javastr(JNIEnv *env, const std::string &str);
JavaRef<jstring> make_javastr(JNIEnv *env, const std::string &str);


class EnvWrapper {
public:
    EnvWrapper(JNIEnv *env);

    template <typename T>
    JavaRef<T> operator() (T ref) const {
        return make_javaref(mEnv, ref);
    }

private:
    JNIEnv *mEnv;

    DISALLOW_COPY_AND_ASSIGN(EnvWrapper);
};

} // namespace android
} // namespace android


#endif // _ANDROID_JAVA_REF_H
#endif // _ANDROID_JAVA_REF_H
+1 −2
Original line number Original line Diff line number Diff line
@@ -185,7 +185,6 @@ static jobject nativeOpenTuner(JNIEnv *env, jobject obj, long nativeContext, jin
    ALOGV("nativeOpenTuner()");
    ALOGV("nativeOpenTuner()");
    AutoMutex _l(gContextMutex);
    AutoMutex _l(gContextMutex);
    auto& ctx = getNativeContext(nativeContext);
    auto& ctx = getNativeContext(nativeContext);
    EnvWrapper wrap(env);


    if (callback == nullptr) {
    if (callback == nullptr) {
        ALOGE("Callback is empty");
        ALOGE("Callback is empty");
@@ -210,7 +209,7 @@ static jobject nativeOpenTuner(JNIEnv *env, jobject obj, long nativeContext, jin
    Region region;
    Region region;
    BandConfig bandConfigHal = convert::BandConfigToHal(env, bandConfig, region);
    BandConfig bandConfigHal = convert::BandConfigToHal(env, bandConfig, region);


    auto tuner = wrap(env->NewObject(gjni.Tuner.clazz, gjni.Tuner.cstor,
    auto tuner = make_javaref(env, env->NewObject(gjni.Tuner.clazz, gjni.Tuner.cstor,
            callback, halRev, region, withAudio));
            callback, halRev, region, withAudio));
    if (tuner == nullptr) {
    if (tuner == nullptr) {
        ALOGE("Unable to create new tuner object.");
        ALOGE("Unable to create new tuner object.");
+1 −2
Original line number Original line Diff line number Diff line
@@ -258,7 +258,6 @@ static bool nativeStartBackgroundScan(JNIEnv *env, jobject obj, jlong nativeCont


static jobject nativeGetProgramList(JNIEnv *env, jobject obj, jlong nativeContext, jstring jFilter) {
static jobject nativeGetProgramList(JNIEnv *env, jobject obj, jlong nativeContext, jstring jFilter) {
    ALOGV("nativeGetProgramList()");
    ALOGV("nativeGetProgramList()");
    EnvWrapper wrap(env);
    auto halTuner = getHalTuner11(nativeContext);
    auto halTuner = getHalTuner11(nativeContext);
    if (halTuner == nullptr) {
    if (halTuner == nullptr) {
        ALOGI("Program list is not supported with HAL < 1.1");
        ALOGI("Program list is not supported with HAL < 1.1");
@@ -273,7 +272,7 @@ static jobject nativeGetProgramList(JNIEnv *env, jobject obj, jlong nativeContex
        halResult = result;
        halResult = result;
        if (halResult != ProgramListResult::OK) return;
        if (halResult != ProgramListResult::OK) return;


        jList = wrap(env->NewObject(gjni.ArrayList.clazz, gjni.ArrayList.cstor));
        jList = make_javaref(env, env->NewObject(gjni.ArrayList.clazz, gjni.ArrayList.cstor));
        for (auto& program : programList) {
        for (auto& program : programList) {
            auto jProgram = convert::ProgramInfoFromHal(env, program);
            auto jProgram = convert::ProgramInfoFromHal(env, program);
            env->CallBooleanMethod(jList.get(), gjni.ArrayList.add, jProgram.get());
            env->CallBooleanMethod(jList.get(), gjni.ArrayList.add, jProgram.get());
+12 −16
Original line number Original line Diff line number Diff line
@@ -156,12 +156,10 @@ bool __ThrowIfFailed(JNIEnv *env, const ProgramListResult halResult) {
}
}


void ThrowParcelableRuntimeException(JNIEnv *env, const std::string& msg) {
void ThrowParcelableRuntimeException(JNIEnv *env, const std::string& msg) {
    EnvWrapper wrap(env);
    auto jMsg = make_javastr(env, msg);

    auto runtimeExc = make_javaref(env, env->NewObject(gjni.RuntimeException.clazz,
    auto jMsg = wrap(env->NewStringUTF(msg.c_str()));
    auto runtimeExc = wrap(env->NewObject(gjni.RuntimeException.clazz,
            gjni.RuntimeException.cstor, jMsg.get()));
            gjni.RuntimeException.cstor, jMsg.get()));
    auto parcelableExc = wrap(env->NewObject(gjni.ParcelableException.clazz,
    auto parcelableExc = make_javaref(env, env->NewObject(gjni.ParcelableException.clazz,
            gjni.ParcelableException.cstor, runtimeExc.get()));
            gjni.ParcelableException.cstor, runtimeExc.get()));


    auto res = env->Throw(static_cast<jthrowable>(parcelableExc.get()));
    auto res = env->Throw(static_cast<jthrowable>(parcelableExc.get()));
@@ -334,11 +332,10 @@ Direction DirectionToHal(bool directionDown) {


JavaRef<jobject> MetadataFromHal(JNIEnv *env, const hidl_vec<V1_0::MetaData> &metadata) {
JavaRef<jobject> MetadataFromHal(JNIEnv *env, const hidl_vec<V1_0::MetaData> &metadata) {
    ALOGV("MetadataFromHal()");
    ALOGV("MetadataFromHal()");
    EnvWrapper wrap(env);

    if (metadata.size() == 0) return nullptr;
    if (metadata.size() == 0) return nullptr;


    auto jMetadata = wrap(env->NewObject(gjni.RadioMetadata.clazz, gjni.RadioMetadata.cstor));
    auto jMetadata = make_javaref(env, env->NewObject(
            gjni.RadioMetadata.clazz, gjni.RadioMetadata.cstor));


    for (auto& item : metadata) {
    for (auto& item : metadata) {
        jint key = static_cast<jint>(item.key);
        jint key = static_cast<jint>(item.key);
@@ -351,7 +348,7 @@ JavaRef<jobject> MetadataFromHal(JNIEnv *env, const hidl_vec<V1_0::MetaData> &me
                break;
                break;
            case MetadataType::TEXT: {
            case MetadataType::TEXT: {
                ALOGV("metadata TEXT %d", key);
                ALOGV("metadata TEXT %d", key);
                auto value = wrap(env->NewStringUTF(item.stringValue.c_str()));
                auto value = make_javastr(env, item.stringValue);
                status = env->CallIntMethod(jMetadata.get(), gjni.RadioMetadata.putStringFromNative,
                status = env->CallIntMethod(jMetadata.get(), gjni.RadioMetadata.putStringFromNative,
                        key, value.get());
                        key, value.get());
                break;
                break;
@@ -360,7 +357,7 @@ JavaRef<jobject> MetadataFromHal(JNIEnv *env, const hidl_vec<V1_0::MetaData> &me
                ALOGV("metadata RAW %d", key);
                ALOGV("metadata RAW %d", key);
                auto len = item.rawValue.size();
                auto len = item.rawValue.size();
                if (len == 0) break;
                if (len == 0) break;
                auto value = wrap(env->NewByteArray(len));
                auto value = make_javaref(env, env->NewByteArray(len));
                if (value == nullptr) {
                if (value == nullptr) {
                    ALOGE("Failed to allocate byte array of len %zu", len);
                    ALOGE("Failed to allocate byte array of len %zu", len);
                    break;
                    break;
@@ -389,15 +386,14 @@ JavaRef<jobject> MetadataFromHal(JNIEnv *env, const hidl_vec<V1_0::MetaData> &me
static JavaRef<jobject> ProgramInfoFromHal(JNIEnv *env, const V1_0::ProgramInfo &info10,
static JavaRef<jobject> ProgramInfoFromHal(JNIEnv *env, const V1_0::ProgramInfo &info10,
        const V1_1::ProgramInfo *info11) {
        const V1_1::ProgramInfo *info11) {
    ALOGV("ProgramInfoFromHal()");
    ALOGV("ProgramInfoFromHal()");
    EnvWrapper wrap(env);


    auto jMetadata = MetadataFromHal(env, info10.metadata);
    auto jMetadata = MetadataFromHal(env, info10.metadata);
    auto jVendorExtension = info11 ?
    auto jVendorExtension = info11 ? make_javastr(env, info11->vendorExension) : nullptr;
            wrap(env->NewStringUTF(info11->vendorExension.c_str())) : nullptr;


    return wrap(env->NewObject(gjni.ProgramInfo.clazz, gjni.ProgramInfo.cstor, info10.channel,
    return make_javaref(env, env->NewObject(gjni.ProgramInfo.clazz, gjni.ProgramInfo.cstor,
            info10.subChannel, info10.tuned, info10.stereo, info10.digital, info10.signalStrength,
            info10.channel, info10.subChannel, info10.tuned, info10.stereo, info10.digital,
            jMetadata.get(), info11 ? info11->flags : 0, jVendorExtension.get()));
            info10.signalStrength, jMetadata.get(), info11 ? info11->flags : 0,
            jVendorExtension.get()));
}
}


JavaRef<jobject> ProgramInfoFromHal(JNIEnv *env, const V1_0::ProgramInfo &info) {
JavaRef<jobject> ProgramInfoFromHal(JNIEnv *env, const V1_0::ProgramInfo &info) {