Move Java PeerConnectionFactory.fieldTrialsFindFullName to different file.

Currently, Java equivalent of webrtc::field_trial::FindFullName is in
PeeerConnectionFactory, which belongs to peerconnection_java GN target.

Move that method into a separate file and GN target to make it easier
to use the fieldTrialsFindFullName method in other code.

Bug: webrtc:13973
Change-Id: I4d7d30339883af76c1d066f72270c6caf9c64c49
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/261500
Reviewed-by: Xavier Lepaul‎ <xalep@webrtc.org>
Commit-Queue: Xavier Lepaul‎ <xalep@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#37233}
This commit is contained in:
Byoungchan Lee
2022-06-16 07:01:45 +09:00
committed by WebRTC LUCI CQ
parent 50674f7f69
commit d609473b9c
5 changed files with 98 additions and 20 deletions

View File

@ -117,6 +117,7 @@ if (is_android) {
":base_jni", ":base_jni",
":builtin_audio_codecs_jni", ":builtin_audio_codecs_jni",
":default_video_codec_factory_jni", ":default_video_codec_factory_jni",
":field_trial_jni",
":java_audio_device_module_jni", ":java_audio_device_module_jni",
":peerconnection_jni", ":peerconnection_jni",
":video_jni", ":video_jni",
@ -269,7 +270,6 @@ if (is_android) {
"api/org/webrtc/MediaSource.java", "api/org/webrtc/MediaSource.java",
"api/org/webrtc/MediaStream.java", "api/org/webrtc/MediaStream.java",
"api/org/webrtc/MediaStreamTrack.java", "api/org/webrtc/MediaStreamTrack.java",
"api/org/webrtc/NativeLibraryLoader.java",
"api/org/webrtc/NativePeerConnectionFactory.java", "api/org/webrtc/NativePeerConnectionFactory.java",
"api/org/webrtc/NetEqFactoryFactory.java", "api/org/webrtc/NetEqFactoryFactory.java",
"api/org/webrtc/NetworkChangeDetector.java", "api/org/webrtc/NetworkChangeDetector.java",
@ -302,7 +302,6 @@ if (is_android) {
"api/org/webrtc/VideoTrack.java", "api/org/webrtc/VideoTrack.java",
"src/java/org/webrtc/NativeAndroidVideoTrackSource.java", "src/java/org/webrtc/NativeAndroidVideoTrackSource.java",
"src/java/org/webrtc/NativeCapturerObserver.java", "src/java/org/webrtc/NativeCapturerObserver.java",
"src/java/org/webrtc/NativeLibrary.java",
] ]
deps = [ deps = [
@ -310,10 +309,12 @@ if (is_android) {
":base_java", ":base_java",
":builtin_audio_codecs_java", ":builtin_audio_codecs_java",
":default_video_codec_factory_java", ":default_video_codec_factory_java",
":field_trial_java",
#TODO(bugs.webrtc.org/7452): Make injection mandatory and remove this dep. #TODO(bugs.webrtc.org/7452): Make injection mandatory and remove this dep.
":java_audio_device_module_java", ":java_audio_device_module_java",
":logging_java", ":logging_java",
":native_library_java",
":swcodecs_java", ":swcodecs_java",
":video_api_java", ":video_api_java",
":video_java", ":video_java",
@ -327,6 +328,24 @@ if (is_android) {
] ]
} }
rtc_android_library("native_library_java") {
sources = [
"api/org/webrtc/NativeLibraryLoader.java",
"src/java/org/webrtc/NativeLibrary.java",
]
deps = [
":logging_java",
"//rtc_base:base_java",
]
}
rtc_android_library("field_trial_java") {
sources = [ "api/org/webrtc/FieldTrial.java" ]
deps = [ ":native_library_java" ]
}
# Modules, in alphabetical order. # Modules, in alphabetical order.
rtc_android_library("camera_java") { rtc_android_library("camera_java") {
@ -814,6 +833,16 @@ if (current_os == "linux" || is_android) {
] ]
} }
rtc_library("field_trial_jni") {
visibility = [ "*" ]
sources = [ "src/jni/field_trial.cc" ]
deps = [
":base_jni",
":generated_field_trial_jni",
"../../system_wrappers:field_trial",
]
}
# JNI target for java_audio_device_module_java # JNI target for java_audio_device_module_java
rtc_library("java_audio_device_module_jni") { rtc_library("java_audio_device_module_jni") {
visibility = [ "*" ] visibility = [ "*" ]
@ -1420,6 +1449,12 @@ if (current_os == "linux" || is_android) {
jni_generator_include = "//sdk/android/src/jni/jni_generator_helper.h" jni_generator_include = "//sdk/android/src/jni/jni_generator_helper.h"
} }
generate_jni("generated_field_trial_jni") {
sources = [ "api/org/webrtc/FieldTrial.java" ]
namespace = "webrtc::jni"
jni_generator_include = "//sdk/android/src/jni/jni_generator_helper.h"
}
generate_jni("generated_java_audio_jni") { generate_jni("generated_java_audio_jni") {
sources = [ "api/org/webrtc/audio/JavaAudioDeviceModule.java" ] sources = [ "api/org/webrtc/audio/JavaAudioDeviceModule.java" ]
namespace = "webrtc::jni" namespace = "webrtc::jni"
@ -1525,6 +1560,7 @@ if (is_android) {
":hwcodecs_java", ":hwcodecs_java",
":libjingle_peerconnection_java", ":libjingle_peerconnection_java",
":libjingle_peerconnection_metrics_default_java", ":libjingle_peerconnection_metrics_default_java",
":native_library_java",
":peerconnection_java", ":peerconnection_java",
":surfaceviewrenderer_java", ":surfaceviewrenderer_java",
":swcodecs_java", ":swcodecs_java",
@ -1633,7 +1669,6 @@ if (is_android) {
":native_test_jni_onload", ":native_test_jni_onload",
":opensles_audio_device_module", ":opensles_audio_device_module",
":video_jni", ":video_jni",
"../../api:field_trials_view",
"../../api:scoped_refptr", "../../api:scoped_refptr",
"../../api/rtc_event_log:rtc_event_log_factory", "../../api/rtc_event_log:rtc_event_log_factory",
"../../api/task_queue:default_task_queue_factory", "../../api/task_queue:default_task_queue_factory",
@ -1688,6 +1723,7 @@ if (is_android) {
deps = [ deps = [
":base_java", ":base_java",
":java_audio_device_module_java", ":java_audio_device_module_java",
":native_library_java",
":peerconnection_java", ":peerconnection_java",
":video_api_java", ":video_api_java",
":video_java", ":video_java",

View File

@ -0,0 +1,26 @@
/*
* Copyright (c) 2022 The WebRTC project authors. All Rights Reserved.
*
* Use of this source code is governed by a BSD-style license
* that can be found in the LICENSE file in the root of the source
* tree. An additional intellectual property rights grant can be found
* in the file PATENTS. All contributing project authors may
* be found in the AUTHORS file in the root of the source tree.
*/
package org.webrtc;
public class FieldTrial {
// Wrapper of webrtc::field_trial::FindFullName. Develop the feature with default behaviour off.
// Example usage:
// if (FieldTrial.fieldTrialsFindFullName("WebRTCExperiment").equals("Enabled")) {
// method1();
// } else {
// method2();
// }
public static String fieldTrialsFindFullName(String name) {
return NativeLibrary.isLoaded() ? nativeFindFieldTrialsFullName(name) : "";
}
private static native String nativeFindFieldTrialsFullName(String name);
}

View File

@ -14,6 +14,7 @@ import android.content.Context;
import android.os.Process; import android.os.Process;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
import java.util.List; import java.util.List;
import org.webrtc.FieldTrial;
import org.webrtc.Logging.Severity; import org.webrtc.Logging.Severity;
import org.webrtc.PeerConnection; import org.webrtc.PeerConnection;
import org.webrtc.audio.AudioDeviceModule; import org.webrtc.audio.AudioDeviceModule;
@ -335,15 +336,12 @@ public class PeerConnectionFactory {
nativeInitializeFieldTrials(fieldTrialsInitString); nativeInitializeFieldTrials(fieldTrialsInitString);
} }
// Wrapper of webrtc::field_trial::FindFullName. Develop the feature with default behaviour off. /**
// Example usage: * @deprecated Use {@link org.webrtc.FieldTrial#fieldTrialsFindFullName(String) } instead.
// if (PeerConnectionFactory.fieldTrialsFindFullName("WebRTCExperiment").equals("Enabled")) { */
// method1(); @Deprecated
// } else {
// method2();
// }
public static String fieldTrialsFindFullName(String name) { public static String fieldTrialsFindFullName(String name) {
return NativeLibrary.isLoaded() ? nativeFindFieldTrialsFullName(name) : ""; return FieldTrial.fieldTrialsFindFullName(name);
} }
// Start/stop internal capturing of internal tracing. // Start/stop internal capturing of internal tracing.
public static boolean startInternalTracingCapture(String tracingFilename) { public static boolean startInternalTracingCapture(String tracingFilename) {
@ -582,7 +580,6 @@ public class PeerConnectionFactory {
// (for example, at application startup time). // (for example, at application startup time).
private static native void nativeInitializeAndroidGlobals(); private static native void nativeInitializeAndroidGlobals();
private static native void nativeInitializeFieldTrials(String fieldTrialsInitString); private static native void nativeInitializeFieldTrials(String fieldTrialsInitString);
private static native String nativeFindFieldTrialsFullName(String name);
private static native void nativeInitializeInternalTracer(); private static native void nativeInitializeInternalTracer();
// Internal tracing shutdown, called to prevent resource leaks. Must be called after // Internal tracing shutdown, called to prevent resource leaks. Must be called after
// PeerConnectionFactory is gone to prevent races with code performing tracing. // PeerConnectionFactory is gone to prevent races with code performing tracing.

View File

@ -0,0 +1,27 @@
/*
* Copyright (c) 2022 The WebRTC project authors. All Rights Reserved.
*
* Use of this source code is governed by a BSD-style license
* that can be found in the LICENSE file in the root of the source
* tree. An additional intellectual property rights grant can be found
* in the file PATENTS. All contributing project authors may
* be found in the AUTHORS file in the root of the source tree.
*/
#include "system_wrappers/include/field_trial.h"
#include "sdk/android/generated_field_trial_jni/FieldTrial_jni.h"
#include "sdk/android/src/jni/jni_helpers.h"
namespace webrtc {
namespace jni {
static ScopedJavaLocalRef<jstring> JNI_FieldTrial_FindFieldTrialsFullName(
JNIEnv* jni,
const JavaParamRef<jstring>& j_name) {
return NativeToJavaString(
jni, field_trial::FindFullName(JavaToStdString(jni, j_name)));
}
} // namespace jni
} // namespace webrtc

View File

@ -213,14 +213,6 @@ static void JNI_PeerConnectionFactory_InitializeInternalTracer(JNIEnv* jni) {
rtc::tracing::SetupInternalTracer(); rtc::tracing::SetupInternalTracer();
} }
static ScopedJavaLocalRef<jstring>
JNI_PeerConnectionFactory_FindFieldTrialsFullName(
JNIEnv* jni,
const JavaParamRef<jstring>& j_name) {
return NativeToJavaString(
jni, field_trial::FindFullName(JavaToStdString(jni, j_name)));
}
static jboolean JNI_PeerConnectionFactory_StartInternalTracingCapture( static jboolean JNI_PeerConnectionFactory_StartInternalTracingCapture(
JNIEnv* jni, JNIEnv* jni,
const JavaParamRef<jstring>& j_event_tracing_filename) { const JavaParamRef<jstring>& j_event_tracing_filename) {