Android: Use JavaToNativeString in PeerConnectionFactory_InitializeFieldTrials

Bug: b/109736242
Change-Id: I56a404c2e6c8c842b23465249f72897cee0878b5
Reviewed-on: https://webrtc-review.googlesource.com/81742
Reviewed-by: Sami Kalliomäki <sakal@webrtc.org>
Commit-Queue: Magnus Jedvert <magjed@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#23558}
This commit is contained in:
Magnus Jedvert
2018-06-07 13:39:38 +02:00
committed by Commit Bot
parent b7beba4c93
commit fe89271bee

View File

@ -75,7 +75,7 @@ JavaToNativePeerConnectionFactoryOptions(JNIEnv* jni,
// dependencies. // dependencies.
// Field trials initialization string // Field trials initialization string
static char* field_trials_init_string = nullptr; static std::unique_ptr<std::string> field_trials_init_string;
// Set in PeerConnectionFactory_initializeAndroidGlobals(). // Set in PeerConnectionFactory_initializeAndroidGlobals().
static bool factory_static_initialized = false; static bool factory_static_initialized = false;
@ -133,18 +133,15 @@ static void JNI_PeerConnectionFactory_InitializeFieldTrials(
JNIEnv* jni, JNIEnv* jni,
const JavaParamRef<jclass>&, const JavaParamRef<jclass>&,
const JavaParamRef<jstring>& j_trials_init_string) { const JavaParamRef<jstring>& j_trials_init_string) {
field_trials_init_string = NULL; if (j_trials_init_string.is_null()) {
if (!j_trials_init_string.is_null()) { field_trials_init_string = nullptr;
const char* init_string = field_trial::InitFieldTrialsFromString(nullptr);
jni->GetStringUTFChars(j_trials_init_string.obj(), NULL); return;
int init_string_length =
jni->GetStringUTFLength(j_trials_init_string.obj());
field_trials_init_string = new char[init_string_length + 1];
rtc::strcpyn(field_trials_init_string, init_string_length + 1, init_string);
jni->ReleaseStringUTFChars(j_trials_init_string.obj(), init_string);
RTC_LOG(LS_INFO) << "initializeFieldTrials: " << field_trials_init_string;
} }
field_trial::InitFieldTrialsFromString(field_trials_init_string); field_trials_init_string = rtc::MakeUnique<std::string>(
JavaToNativeString(jni, j_trials_init_string));
RTC_LOG(LS_INFO) << "initializeFieldTrials: " << *field_trials_init_string;
field_trial::InitFieldTrialsFromString(field_trials_init_string->c_str());
} }
static void JNI_PeerConnectionFactory_InitializeInternalTracer( static void JNI_PeerConnectionFactory_InitializeInternalTracer(
@ -335,11 +332,8 @@ static void JNI_PeerConnectionFactory_FreeFactory(JNIEnv*,
const JavaParamRef<jclass>&, const JavaParamRef<jclass>&,
jlong j_p) { jlong j_p) {
delete reinterpret_cast<OwnedFactoryAndThreads*>(j_p); delete reinterpret_cast<OwnedFactoryAndThreads*>(j_p);
if (field_trials_init_string) { field_trial::InitFieldTrialsFromString(nullptr);
field_trial::InitFieldTrialsFromString(NULL); field_trials_init_string = nullptr;
delete field_trials_init_string;
field_trials_init_string = NULL;
}
} }
static void JNI_PeerConnectionFactory_InvokeThreadsCallbacks( static void JNI_PeerConnectionFactory_InvokeThreadsCallbacks(