Index: webrtc/sdk/android/src/jni/jni_helpers.h |
diff --git a/webrtc/sdk/android/src/jni/jni_helpers.h b/webrtc/sdk/android/src/jni/jni_helpers.h |
index 19b7741fb58633f1d0d288fceb024b71c7a661ad..e4c43a25bf2396ead2de0b449082df4f253b4759 100644 |
--- a/webrtc/sdk/android/src/jni/jni_helpers.h |
+++ b/webrtc/sdk/android/src/jni/jni_helpers.h |
@@ -34,6 +34,23 @@ |
#define CHECK_RELEASE(ptr) \ |
RTC_CHECK_EQ(0, (ptr)->Release()) << "Unexpected refcount." |
+// Convenience macro defining JNI-accessible methods in the org.webrtc package. |
+// Eliminates unnecessary boilerplate and line-wraps, reducing visual clutter. |
+// |
+// TODO(deadbeef): Rename this macro to something like |
+// "JNI_FUNCTION_DECLARATION", and use variable length arguments, such that you |
+// can write: |
+// |
+// JNI_FUNCTION_DECLARATION(void, nativeFoo, Type arg1, Type arg2) { ... |
+// |
+// Instead of: |
+// |
+// JNI_FUNCTION_DECLARATION(void, nativeFoo)(Type arg1, Type arg2) { ... |
+// |
+// The latter gets handled poorly by autoformatting tools. |
+#define JOW(rettype, name) \ |
+ extern "C" JNIEXPORT rettype JNICALL Java_org_webrtc_##name |
+ |
namespace webrtc_jni { |
jint InitGlobalJniVariables(JavaVM *jvm); |
@@ -97,6 +114,12 @@ std::string JavaToStdString(JNIEnv* jni, const jstring& j_string); |
jobject JavaEnumFromIndex(JNIEnv* jni, jclass state_class, |
const std::string& state_class_name, int index); |
+// Return the (singleton) Java Enum object corresponding to |index|; |
+// |state_class_fragment| is something like "MediaSource$State". |
+jobject JavaEnumFromIndexAndClassName(JNIEnv* jni, |
+ const std::string& state_class_fragment, |
+ int index); |
+ |
// Returns the name of a Java enum. |
std::string GetJavaEnumName(JNIEnv* jni, |
const std::string& className, |