From c6a003c192d0090b272e238863335876db844edb Mon Sep 17 00:00:00 2001 From: Magnus Jedvert Date: Mon, 20 Nov 2017 13:53:42 +0100 Subject: [PATCH] Android: Simplify GetJavaEnumName MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit We can call name() on the base class java.lang.Enum instead of the specific enum subclass. Bug: webrtc:8278 Change-Id: I12f8354d99e48b4a5e3d3eaff74a85ac417df0b3 Reviewed-on: https://webrtc-review.googlesource.com/24440 Commit-Queue: Magnus Jedvert Reviewed-by: Sami Kalliomäki Cr-Commit-Position: refs/heads/master@{#20790} --- sdk/android/src/jni/jni_helpers.cc | 11 +++---- sdk/android/src/jni/jni_helpers.h | 4 +-- .../src/jni/pc/androidnetworkmonitor_jni.cc | 4 +-- .../src/jni/pc/java_native_conversion.cc | 29 +++++-------------- 4 files changed, 14 insertions(+), 34 deletions(-) diff --git a/sdk/android/src/jni/jni_helpers.cc b/sdk/android/src/jni/jni_helpers.cc index 6331a646b3..201520c089 100644 --- a/sdk/android/src/jni/jni_helpers.cc +++ b/sdk/android/src/jni/jni_helpers.cc @@ -311,16 +311,13 @@ jobject JavaEnumFromIndexAndClassName(JNIEnv* jni, state_class, index); } -std::string GetJavaEnumName(JNIEnv* jni, - const std::string& className, - jobject j_enum) { - jclass enumClass = FindClass(jni, className.c_str()); +std::string GetJavaEnumName(JNIEnv* jni, jobject j_enum) { + jclass enum_class = GetClass(jni, "java/lang/Enum"); jmethodID nameMethod = - GetMethodID(jni, enumClass, "name", "()Ljava/lang/String;"); + GetMethodID(jni, enum_class, "name", "()Ljava/lang/String;"); jstring name = reinterpret_cast(jni->CallObjectMethod(j_enum, nameMethod)); - CHECK_EXCEPTION(jni) << "error during CallObjectMethod for " << className - << ".name"; + CHECK_EXCEPTION(jni); return JavaToStdString(jni, name); } diff --git a/sdk/android/src/jni/jni_helpers.h b/sdk/android/src/jni/jni_helpers.h index e08e4b222e..e18edc2d40 100644 --- a/sdk/android/src/jni/jni_helpers.h +++ b/sdk/android/src/jni/jni_helpers.h @@ -130,9 +130,7 @@ std::map JavaToStdMapStrings(JNIEnv* jni, jobject j_map); // Returns the name of a Java enum. -std::string GetJavaEnumName(JNIEnv* jni, - const std::string& className, - jobject j_enum); +std::string GetJavaEnumName(JNIEnv* jni, jobject j_enum); jobject NewGlobalRef(JNIEnv* jni, jobject o); diff --git a/sdk/android/src/jni/pc/androidnetworkmonitor_jni.cc b/sdk/android/src/jni/pc/androidnetworkmonitor_jni.cc index 6494e7228a..ff1f4f66ee 100644 --- a/sdk/android/src/jni/pc/androidnetworkmonitor_jni.cc +++ b/sdk/android/src/jni/pc/androidnetworkmonitor_jni.cc @@ -31,9 +31,7 @@ enum AndroidSdkVersion { int AndroidNetworkMonitor::android_sdk_int_ = 0; static NetworkType GetNetworkTypeFromJava(JNIEnv* jni, jobject j_network_type) { - std::string enum_name = - GetJavaEnumName(jni, "org/webrtc/NetworkMonitorAutoDetect$ConnectionType", - j_network_type); + std::string enum_name = GetJavaEnumName(jni, j_network_type); if (enum_name == "CONNECTION_UNKNOWN") { return NetworkType::NETWORK_UNKNOWN; } diff --git a/sdk/android/src/jni/pc/java_native_conversion.cc b/sdk/android/src/jni/pc/java_native_conversion.cc index 1eadfa33e6..31668e95be 100644 --- a/sdk/android/src/jni/pc/java_native_conversion.cc +++ b/sdk/android/src/jni/pc/java_native_conversion.cc @@ -208,9 +208,7 @@ JavaToNativePeerConnectionFactoryOptions(JNIEnv* jni, jobject options) { PeerConnectionInterface::IceTransportsType JavaToNativeIceTransportsType( JNIEnv* jni, jobject j_ice_transports_type) { - std::string enum_name = - GetJavaEnumName(jni, "org/webrtc/PeerConnection$IceTransportsType", - j_ice_transports_type); + std::string enum_name = GetJavaEnumName(jni, j_ice_transports_type); if (enum_name == "ALL") return PeerConnectionInterface::kAll; @@ -231,8 +229,7 @@ PeerConnectionInterface::IceTransportsType JavaToNativeIceTransportsType( PeerConnectionInterface::BundlePolicy JavaToNativeBundlePolicy( JNIEnv* jni, jobject j_bundle_policy) { - std::string enum_name = GetJavaEnumName( - jni, "org/webrtc/PeerConnection$BundlePolicy", j_bundle_policy); + std::string enum_name = GetJavaEnumName(jni, j_bundle_policy); if (enum_name == "BALANCED") return PeerConnectionInterface::kBundlePolicyBalanced; @@ -250,8 +247,7 @@ PeerConnectionInterface::BundlePolicy JavaToNativeBundlePolicy( PeerConnectionInterface::RtcpMuxPolicy JavaToNativeRtcpMuxPolicy( JNIEnv* jni, jobject j_rtcp_mux_policy) { - std::string enum_name = GetJavaEnumName( - jni, "org/webrtc/PeerConnection$RtcpMuxPolicy", j_rtcp_mux_policy); + std::string enum_name = GetJavaEnumName(jni, j_rtcp_mux_policy); if (enum_name == "NEGOTIATE") return PeerConnectionInterface::kRtcpMuxPolicyNegotiate; @@ -266,9 +262,7 @@ PeerConnectionInterface::RtcpMuxPolicy JavaToNativeRtcpMuxPolicy( PeerConnectionInterface::TcpCandidatePolicy JavaToNativeTcpCandidatePolicy( JNIEnv* jni, jobject j_tcp_candidate_policy) { - std::string enum_name = - GetJavaEnumName(jni, "org/webrtc/PeerConnection$TcpCandidatePolicy", - j_tcp_candidate_policy); + std::string enum_name = GetJavaEnumName(jni, j_tcp_candidate_policy); if (enum_name == "ENABLED") return PeerConnectionInterface::kTcpCandidatePolicyEnabled; @@ -283,9 +277,7 @@ PeerConnectionInterface::TcpCandidatePolicy JavaToNativeTcpCandidatePolicy( PeerConnectionInterface::CandidateNetworkPolicy JavaToNativeCandidateNetworkPolicy(JNIEnv* jni, jobject j_candidate_network_policy) { - std::string enum_name = - GetJavaEnumName(jni, "org/webrtc/PeerConnection$CandidateNetworkPolicy", - j_candidate_network_policy); + std::string enum_name = GetJavaEnumName(jni, j_candidate_network_policy); if (enum_name == "ALL") return PeerConnectionInterface::kCandidateNetworkPolicyAll; @@ -299,8 +291,7 @@ JavaToNativeCandidateNetworkPolicy(JNIEnv* jni, } rtc::KeyType JavaToNativeKeyType(JNIEnv* jni, jobject j_key_type) { - std::string enum_name = - GetJavaEnumName(jni, "org/webrtc/PeerConnection$KeyType", j_key_type); + std::string enum_name = GetJavaEnumName(jni, j_key_type); if (enum_name == "RSA") return rtc::KT_RSA; @@ -313,9 +304,7 @@ rtc::KeyType JavaToNativeKeyType(JNIEnv* jni, jobject j_key_type) { PeerConnectionInterface::ContinualGatheringPolicy JavaToNativeContinualGatheringPolicy(JNIEnv* jni, jobject j_gathering_policy) { - std::string enum_name = - GetJavaEnumName(jni, "org/webrtc/PeerConnection$ContinualGatheringPolicy", - j_gathering_policy); + std::string enum_name = GetJavaEnumName(jni, j_gathering_policy); if (enum_name == "GATHER_ONCE") return PeerConnectionInterface::GATHER_ONCE; @@ -330,9 +319,7 @@ JavaToNativeContinualGatheringPolicy(JNIEnv* jni, jobject j_gathering_policy) { PeerConnectionInterface::TlsCertPolicy JavaToNativeTlsCertPolicy( JNIEnv* jni, jobject j_ice_server_tls_cert_policy) { - std::string enum_name = - GetJavaEnumName(jni, "org/webrtc/PeerConnection$TlsCertPolicy", - j_ice_server_tls_cert_policy); + std::string enum_name = GetJavaEnumName(jni, j_ice_server_tls_cert_policy); if (enum_name == "TLS_CERT_POLICY_SECURE") return PeerConnectionInterface::kTlsCertPolicySecure;