Loading services/core/jni/JavaRef.cpp +0 −8 Original line number Original line Diff line number Diff line Loading @@ -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 { Loading @@ -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 services/core/jni/JavaRef.h +0 −15 Original line number Original line Diff line number Diff line Loading @@ -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 services/core/jni/com_android_server_radio_RadioService.cpp +1 −2 Original line number Original line Diff line number Diff line Loading @@ -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"); Loading @@ -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."); Loading services/core/jni/com_android_server_radio_Tuner.cpp +1 −2 Original line number Original line Diff line number Diff line Loading @@ -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"); Loading @@ -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()); Loading services/core/jni/com_android_server_radio_convert.cpp +12 −16 Original line number Original line Diff line number Diff line Loading @@ -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())); Loading Loading @@ -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); Loading @@ -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; Loading @@ -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; Loading Loading @@ -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) { Loading Loading
services/core/jni/JavaRef.cpp +0 −8 Original line number Original line Diff line number Diff line Loading @@ -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 { Loading @@ -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
services/core/jni/JavaRef.h +0 −15 Original line number Original line Diff line number Diff line Loading @@ -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
services/core/jni/com_android_server_radio_RadioService.cpp +1 −2 Original line number Original line Diff line number Diff line Loading @@ -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"); Loading @@ -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."); Loading
services/core/jni/com_android_server_radio_Tuner.cpp +1 −2 Original line number Original line Diff line number Diff line Loading @@ -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"); Loading @@ -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()); Loading
services/core/jni/com_android_server_radio_convert.cpp +12 −16 Original line number Original line Diff line number Diff line Loading @@ -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())); Loading Loading @@ -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); Loading @@ -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; Loading @@ -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; Loading Loading @@ -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) { Loading