mirror of
https://github.com/mollyim/webrtc.git
synced 2025-05-13 13:50:40 +01:00
Android: Generate JNI code for RTCStats
Bug: webrtc:8278 Change-Id: I183cec54ec3e97894db7f26e365eb9941a1ab458 Reviewed-on: https://webrtc-review.googlesource.com/25660 Commit-Queue: Magnus Jedvert <magjed@webrtc.org> Reviewed-by: Sami Kalliomäki <sakal@webrtc.org> Cr-Commit-Position: refs/heads/master@{#20879}
This commit is contained in:
parent
6bd39025ec
commit
c4c8876f70
6 changed files with 26 additions and 25 deletions
|
@ -282,6 +282,9 @@ generate_jni("generated_peerconnection_jni") {
|
|||
"api/org/webrtc/MediaConstraints.java",
|
||||
"api/org/webrtc/NetworkMonitor.java",
|
||||
"api/org/webrtc/NetworkMonitorAutoDetect.java",
|
||||
"api/org/webrtc/RTCStats.java",
|
||||
"api/org/webrtc/RTCStatsCollectorCallback.java",
|
||||
"api/org/webrtc/RTCStatsReport.java",
|
||||
]
|
||||
jni_package = ""
|
||||
jni_generator_include = "//sdk/android/src/jni/jni_generator_helper.h"
|
||||
|
|
|
@ -103,4 +103,11 @@ public class RTCStats {
|
|||
builder.append(value);
|
||||
}
|
||||
}
|
||||
|
||||
// TODO(bugs.webrtc.org/8557) Use ctor directly with full Map type.
|
||||
@SuppressWarnings("unchecked")
|
||||
@CalledByNative
|
||||
static RTCStats create(long timestampUs, String type, String id, Map members) {
|
||||
return new RTCStats(timestampUs, type, id, members);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -13,5 +13,5 @@ package org.webrtc;
|
|||
/** Interface for receiving stats reports (see webrtc::RTCStatsCollectorCallback). */
|
||||
public interface RTCStatsCollectorCallback {
|
||||
/** Called when the stats report is ready. */
|
||||
public void onStatsDelivered(RTCStatsReport report);
|
||||
@CalledByNative public void onStatsDelivered(RTCStatsReport report);
|
||||
}
|
||||
|
|
|
@ -52,4 +52,11 @@ public class RTCStatsReport {
|
|||
builder.append(" ] }");
|
||||
return builder.toString();
|
||||
}
|
||||
|
||||
// TODO(bugs.webrtc.org/8557) Use ctor directly with full Map type.
|
||||
@SuppressWarnings("unchecked")
|
||||
@CalledByNative
|
||||
private static RTCStatsReport create(long timestampUs, Map stats) {
|
||||
return new RTCStatsReport(timestampUs, stats);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -13,6 +13,9 @@
|
|||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
#include "sdk/android/generated_peerconnection_jni/jni/RTCStatsCollectorCallback_jni.h"
|
||||
#include "sdk/android/generated_peerconnection_jni/jni/RTCStatsReport_jni.h"
|
||||
#include "sdk/android/generated_peerconnection_jni/jni/RTCStats_jni.h"
|
||||
#include "sdk/android/src/jni/classreferenceholder.h"
|
||||
|
||||
namespace webrtc {
|
||||
|
@ -23,17 +26,6 @@ RTCStatsCollectorCallbackWrapper::RTCStatsCollectorCallbackWrapper(
|
|||
jobject j_callback)
|
||||
: j_callback_global_(jni, j_callback),
|
||||
j_callback_class_(jni, GetObjectClass(jni, j_callback)),
|
||||
j_stats_report_class_(FindClass(jni, "org/webrtc/RTCStatsReport")),
|
||||
j_stats_report_ctor_(GetMethodID(jni,
|
||||
j_stats_report_class_,
|
||||
"<init>",
|
||||
"(JLjava/util/Map;)V")),
|
||||
j_stats_class_(FindClass(jni, "org/webrtc/RTCStats")),
|
||||
j_stats_ctor_(GetMethodID(
|
||||
jni,
|
||||
j_stats_class_,
|
||||
"<init>",
|
||||
"(JLjava/lang/String;Ljava/lang/String;Ljava/util/Map;)V")),
|
||||
j_linked_hash_map_class_(FindClass(jni, "java/util/LinkedHashMap")),
|
||||
j_linked_hash_map_ctor_(
|
||||
GetMethodID(jni, j_linked_hash_map_class_, "<init>", "()V")),
|
||||
|
@ -61,10 +53,8 @@ void RTCStatsCollectorCallbackWrapper::OnStatsDelivered(
|
|||
JNIEnv* jni = AttachCurrentThreadIfNeeded();
|
||||
ScopedLocalRefFrame local_ref_frame(jni);
|
||||
jobject j_report = ReportToJava(jni, report);
|
||||
jmethodID m = GetMethodID(jni, *j_callback_class_, "onStatsDelivered",
|
||||
"(Lorg/webrtc/RTCStatsReport;)V");
|
||||
jni->CallVoidMethod(*j_callback_global_, m, j_report);
|
||||
CHECK_EXCEPTION(jni) << "error during CallVoidMethod";
|
||||
Java_RTCStatsCollectorCallback_onStatsDelivered(jni, *j_callback_global_,
|
||||
j_report);
|
||||
}
|
||||
|
||||
jobject RTCStatsCollectorCallbackWrapper::ReportToJava(
|
||||
|
@ -82,9 +72,8 @@ jobject RTCStatsCollectorCallbackWrapper::ReportToJava(
|
|||
jni->CallObjectMethod(j_stats_map, j_linked_hash_map_put_, j_id, j_stats);
|
||||
CHECK_EXCEPTION(jni) << "error during CallObjectMethod";
|
||||
}
|
||||
jobject j_report = jni->NewObject(j_stats_report_class_, j_stats_report_ctor_,
|
||||
report->timestamp_us(), j_stats_map);
|
||||
CHECK_EXCEPTION(jni) << "error during NewObject";
|
||||
jobject j_report =
|
||||
Java_RTCStatsReport_create(jni, report->timestamp_us(), j_stats_map);
|
||||
return j_report;
|
||||
}
|
||||
|
||||
|
@ -106,8 +95,7 @@ jobject RTCStatsCollectorCallbackWrapper::StatsToJava(JNIEnv* jni,
|
|||
CHECK_EXCEPTION(jni) << "error during CallObjectMethod";
|
||||
}
|
||||
jobject j_stats =
|
||||
jni->NewObject(j_stats_class_, j_stats_ctor_, stats.timestamp_us(),
|
||||
j_type, j_id, j_members);
|
||||
Java_RTCStats_create(jni, stats.timestamp_us(), j_type, j_id, j_members);
|
||||
CHECK_EXCEPTION(jni) << "error during NewObject";
|
||||
return j_stats;
|
||||
}
|
||||
|
|
|
@ -38,10 +38,6 @@ class RTCStatsCollectorCallbackWrapper : public RTCStatsCollectorCallback {
|
|||
|
||||
const ScopedGlobalRef<jobject> j_callback_global_;
|
||||
const ScopedGlobalRef<jclass> j_callback_class_;
|
||||
const jclass j_stats_report_class_;
|
||||
const jmethodID j_stats_report_ctor_;
|
||||
const jclass j_stats_class_;
|
||||
const jmethodID j_stats_ctor_;
|
||||
const jclass j_linked_hash_map_class_;
|
||||
const jmethodID j_linked_hash_map_ctor_;
|
||||
const jmethodID j_linked_hash_map_put_;
|
||||
|
|
Loading…
Reference in a new issue