Android: Annotate and generate JNI code for Metrics.java
Bug: webrtc:8278 Change-Id: I54caee1acb483d7554afd6c0958f1929a78d6a56 Reviewed-on: https://webrtc-review.googlesource.com/22720 Commit-Queue: Magnus Jedvert <magjed@webrtc.org> Reviewed-by: Sami Kalliomäki <sakal@webrtc.org> Cr-Commit-Position: refs/heads/master@{#20753}
This commit is contained in:
committed by
Commit Bot
parent
741282aafc
commit
986a79cf3d
@ -11,6 +11,7 @@
|
||||
#include <map>
|
||||
#include <memory>
|
||||
|
||||
#include "sdk/android/generated_metrics_jni/jni/Metrics_jni.h"
|
||||
#include "sdk/android/src/jni/classreferenceholder.h"
|
||||
#include "sdk/android/src/jni/jni_helpers.h"
|
||||
#include "system_wrappers/include/metrics.h"
|
||||
@ -20,40 +21,30 @@
|
||||
namespace webrtc {
|
||||
namespace jni {
|
||||
|
||||
JNI_FUNCTION_DECLARATION(void, Metrics_nativeEnable, JNIEnv* jni, jclass) {
|
||||
JNI_FUNCTION_DECLARATION(void, Metrics_enableNative, JNIEnv* jni, jclass) {
|
||||
metrics::Enable();
|
||||
}
|
||||
|
||||
// Gets and clears native histograms.
|
||||
JNI_FUNCTION_DECLARATION(jobject,
|
||||
Metrics_nativeGetAndReset,
|
||||
Metrics_getAndResetNative,
|
||||
JNIEnv* jni,
|
||||
jclass) {
|
||||
jclass j_metrics_class = jni->FindClass("org/webrtc/Metrics");
|
||||
jmethodID j_add =
|
||||
GetMethodID(jni, j_metrics_class, "add",
|
||||
"(Ljava/lang/String;Lorg/webrtc/Metrics$HistogramInfo;)V");
|
||||
jclass j_info_class = jni->FindClass("org/webrtc/Metrics$HistogramInfo");
|
||||
jmethodID j_add_sample = GetMethodID(jni, j_info_class, "addSample", "(II)V");
|
||||
|
||||
// Create |Metrics|.
|
||||
jobject j_metrics = jni->NewObject(
|
||||
j_metrics_class, GetMethodID(jni, j_metrics_class, "<init>", "()V"));
|
||||
jobject j_metrics = Java_Metrics_createMetrics(jni);
|
||||
|
||||
std::map<std::string, std::unique_ptr<metrics::SampleInfo>> histograms;
|
||||
metrics::GetAndReset(&histograms);
|
||||
for (const auto& kv : histograms) {
|
||||
// Create and add samples to |HistogramInfo|.
|
||||
jobject j_info = jni->NewObject(
|
||||
j_info_class, GetMethodID(jni, j_info_class, "<init>", "(III)V"),
|
||||
kv.second->min, kv.second->max,
|
||||
jobject j_info = Java_Metrics_createHistogramInfo(
|
||||
jni, kv.second->min, kv.second->max,
|
||||
static_cast<int>(kv.second->bucket_count));
|
||||
for (const auto& sample : kv.second->samples) {
|
||||
jni->CallVoidMethod(j_info, j_add_sample, sample.first, sample.second);
|
||||
Java_HistogramInfo_addSample(jni, j_info, sample.first, sample.second);
|
||||
}
|
||||
// Add |HistogramInfo| to |Metrics|.
|
||||
jstring j_name = jni->NewStringUTF(kv.first.c_str());
|
||||
jni->CallVoidMethod(j_metrics, j_add, j_name, j_info);
|
||||
Java_Metrics_add(jni, j_metrics, j_name, j_info);
|
||||
jni->DeleteLocalRef(j_name);
|
||||
jni->DeleteLocalRef(j_info);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user