Remove deprecated jni_zero constructor usage in sdk/android Some jni_zero constructors have been deprecated and restricted to protected, except for WebRTC Android, which defines the JNI_ZERO_ENABLE_COMPAT_API macro. This change removes deprecated jni_zero usage in sdk/android, preparing the codebase for the eventual removal of the JNI_ZERO_ENABLE_COMPAT_API macro. Bug: chromium:40173007 Change-Id: Ib454538bec298911cdc617572b3e6c9f0ef30b10 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/409500 Reviewed-by: Erik Språng <sprang@webrtc.org> Reviewed-by: Zoé Lepaul <zlep@webrtc.org> Commit-Queue: Erik Språng <sprang@webrtc.org> Auto-Submit: Daniel.L (Byoungchan) Lee <daniel.l@hpcnt.com> Cr-Commit-Position: refs/heads/main@{#45695}
diff --git a/modules/video_coding/codecs/test/android_codec_factory_helper.cc b/modules/video_coding/codecs/test/android_codec_factory_helper.cc index 8f53e8f..f6a5046 100644 --- a/modules/video_coding/codecs/test/android_codec_factory_helper.cc +++ b/modules/video_coding/codecs/test/android_codec_factory_helper.cc
@@ -57,11 +57,12 @@ GetClass(env, "org/webrtc/HardwareVideoEncoderFactory"); jmethodID factory_constructor = env->GetMethodID( factory_class.obj(), "<init>", "(Lorg/webrtc/EglBase$Context;ZZ)V"); - ScopedJavaLocalRef<jobject> factory_object( - env, env->NewObject(factory_class.obj(), factory_constructor, - nullptr /* shared_context */, - false /* enable_intel_vp8_encoder */, - true /* enable_h264_high_profile */)); + ScopedJavaLocalRef<jobject> factory_object = + ScopedJavaLocalRef<jobject>::Adopt( + env, env->NewObject(factory_class.obj(), factory_constructor, + nullptr /* shared_context */, + false /* enable_intel_vp8_encoder */, + true /* enable_h264_high_profile */)); return JavaToNativeVideoEncoderFactory(env, factory_object.obj()); } @@ -71,9 +72,10 @@ GetClass(env, "org/webrtc/HardwareVideoDecoderFactory"); jmethodID factory_constructor = env->GetMethodID( factory_class.obj(), "<init>", "(Lorg/webrtc/EglBase$Context;)V"); - ScopedJavaLocalRef<jobject> factory_object( - env, env->NewObject(factory_class.obj(), factory_constructor, - nullptr /* shared_context */)); + ScopedJavaLocalRef<jobject> factory_object = + ScopedJavaLocalRef<jobject>::Adopt( + env, env->NewObject(factory_class.obj(), factory_constructor, + nullptr /* shared_context */)); return JavaToNativeVideoDecoderFactory(env, factory_object.obj()); }
diff --git a/sdk/android/instrumentationtests/loggable_test.cc b/sdk/android/instrumentationtests/loggable_test.cc index 9b038a6..f2c34b1 100644 --- a/sdk/android/instrumentationtests/loggable_test.cc +++ b/sdk/android/instrumentationtests/loggable_test.cc
@@ -25,8 +25,8 @@ JNIEnv* jni, jclass, jstring j_message) { - std::string message = - JavaToNativeString(jni, jni_zero::JavaParamRef<jstring>(jni, j_message)); + std::string message = JavaToNativeString( + jni, jni_zero::JavaRef<jstring>::CreateLeaky(jni, j_message)); RTC_LOG(LS_INFO) << message; }
diff --git a/sdk/android/instrumentationtests/video_frame_buffer_test.cc b/sdk/android/instrumentationtests/video_frame_buffer_test.cc index 1e99453..31cdef4 100644 --- a/sdk/android/instrumentationtests/video_frame_buffer_test.cc +++ b/sdk/android/instrumentationtests/video_frame_buffer_test.cc
@@ -28,8 +28,8 @@ JNIEnv* jni, jclass, jobject video_frame_buffer) { - const jni_zero::JavaParamRef<jobject> j_video_frame_buffer( - jni, video_frame_buffer); + const jni_zero::JavaRef<jobject> j_video_frame_buffer = + jni_zero::JavaRef<jobject>::CreateLeaky(jni, video_frame_buffer); webrtc::scoped_refptr<VideoFrameBuffer> buffer = JavaToNativeFrameBuffer(jni, j_video_frame_buffer); return static_cast<jint>(buffer->type()); @@ -40,7 +40,8 @@ JNIEnv* jni, jclass, jobject i420_buffer) { - const jni_zero::JavaParamRef<jobject> j_i420_buffer(jni, i420_buffer); + const jni_zero::JavaRef<jobject> j_i420_buffer = + jni_zero::JavaRef<jobject>::CreateLeaky(jni, i420_buffer); webrtc::scoped_refptr<VideoFrameBuffer> buffer = JavaToNativeFrameBuffer(jni, j_i420_buffer); const I420BufferInterface* inputBuffer = buffer->GetI420();
diff --git a/sdk/android/native_api/audio_device_module/audio_device_android.cc b/sdk/android/native_api/audio_device_module/audio_device_android.cc index 512d28a..31b414c 100644 --- a/sdk/android/native_api/audio_device_module/audio_device_android.cc +++ b/sdk/android/native_api/audio_device_module/audio_device_android.cc
@@ -45,7 +45,8 @@ jobject application_context, AudioParameters* input_parameters, AudioParameters* output_parameters) { - const jni_zero::JavaParamRef<jobject> j_context(env, application_context); + const auto j_context = + jni_zero::JavaParamRef<jobject>::CreateLeaky(env, application_context); const jni_zero::ScopedJavaLocalRef<jobject> j_audio_manager = jni::GetAudioManager(env, j_context); const int input_sample_rate = jni::GetDefaultSampleRate(env, j_audio_manager); @@ -86,7 +87,8 @@ jobject application_context) { RTC_DLOG(LS_INFO) << __FUNCTION__; // Get default audio input/output parameters. - const jni_zero::JavaParamRef<jobject> j_context(env, application_context); + const auto j_context = + jni_zero::JavaParamRef<jobject>::CreateLeaky(env, application_context); const jni_zero::ScopedJavaLocalRef<jobject> j_audio_manager = jni::GetAudioManager(env, j_context); AudioParameters input_parameters; @@ -114,7 +116,8 @@ jobject application_context) { RTC_DLOG(LS_INFO) << __FUNCTION__; // Get default audio input/output parameters. - const jni_zero::JavaParamRef<jobject> j_context(env, application_context); + const auto j_context = + jni_zero::JavaParamRef<jobject>::CreateLeaky(env, application_context); const jni_zero::ScopedJavaLocalRef<jobject> j_audio_manager = jni::GetAudioManager(env, j_context); AudioParameters input_parameters; @@ -169,7 +172,8 @@ jobject application_context) { RTC_DLOG(LS_INFO) << __FUNCTION__; // Get default audio input/output parameters. - const jni_zero::JavaParamRef<jobject> j_context(env, application_context); + const auto j_context = + jni_zero::JavaParamRef<jobject>::CreateLeaky(env, application_context); const jni_zero::ScopedJavaLocalRef<jobject> j_audio_manager = jni::GetAudioManager(env, j_context); AudioParameters input_parameters;
diff --git a/sdk/android/native_api/codecs/wrapper.cc b/sdk/android/native_api/codecs/wrapper.cc index 1e707f8..da54920 100644 --- a/sdk/android/native_api/codecs/wrapper.cc +++ b/sdk/android/native_api/codecs/wrapper.cc
@@ -29,28 +29,29 @@ SdpVideoFormat JavaToNativeVideoCodecInfo(JNIEnv* jni, jobject codec_info) { return jni::VideoCodecInfoToSdpVideoFormat( - jni, jni_zero::JavaParamRef<jobject>(jni, codec_info)); + jni, jni_zero::JavaRef<jobject>::CreateLeaky(jni, codec_info)); } std::unique_ptr<VideoDecoderFactory> JavaToNativeVideoDecoderFactory( JNIEnv* jni, jobject decoder_factory) { return std::make_unique<jni::VideoDecoderFactoryWrapper>( - jni, jni_zero::JavaParamRef<jobject>(jni, decoder_factory)); + jni, jni_zero::JavaRef<jobject>::CreateLeaky(jni, decoder_factory)); } std::unique_ptr<VideoEncoderFactory> JavaToNativeVideoEncoderFactory( JNIEnv* jni, jobject encoder_factory) { return std::make_unique<jni::VideoEncoderFactoryWrapper>( - jni, jni_zero::JavaParamRef<jobject>(jni, encoder_factory)); + jni, jni_zero::JavaRef<jobject>::CreateLeaky(jni, encoder_factory)); } std::vector<VideoEncoder::ResolutionBitrateLimits> JavaToNativeResolutionBitrateLimits(JNIEnv* jni, const jobjectArray j_bitrate_limits_array) { return jni::JavaToNativeResolutionBitrateLimits( - jni, jni_zero::JavaParamRef<jobjectArray>(jni, j_bitrate_limits_array)); + jni, jni_zero::JavaRef<jobjectArray>::CreateLeaky( + jni, j_bitrate_limits_array)); } } // namespace webrtc
diff --git a/sdk/android/native_api/jni/class_loader.cc b/sdk/android/native_api/jni/class_loader.cc index 76ccba7..0b0aed5 100644 --- a/sdk/android/native_api/jni/class_loader.cc +++ b/sdk/android/native_api/jni/class_loader.cc
@@ -54,7 +54,7 @@ const jclass clazz = static_cast<jclass>(env->CallObjectMethod( class_loader_.obj(), load_class_method_, j_name.obj())); CHECK_EXCEPTION(env); - return ScopedJavaLocalRef<jclass>(env, clazz); + return ScopedJavaLocalRef<jclass>::Adopt(env, clazz); } private: @@ -92,7 +92,7 @@ std::string name(c_name); std::replace(name.begin(), name.end(), '.', '/'); - return ScopedJavaLocalRef<jclass>(env, env->FindClass(name.c_str())); + return ScopedJavaLocalRef<jclass>::Adopt(env, env->FindClass(name.c_str())); } } // namespace webrtc
diff --git a/sdk/android/native_api/jni/java_types.cc b/sdk/android/native_api/jni/java_types.cc index c16aee2..a29f139 100644 --- a/sdk/android/native_api/jni/java_types.cc +++ b/sdk/android/native_api/jni/java_types.cc
@@ -215,7 +215,7 @@ ScopedJavaLocalRef<jstring> NativeToJavaString(JNIEnv* env, const char* str) { jstring j_str = env->NewStringUTF(str); CHECK_EXCEPTION(env) << "error during NewStringUTF"; - return jni_zero::ScopedJavaLocalRef<jstring>(env, j_str); + return jni_zero::ScopedJavaLocalRef<jstring>::Adopt(env, j_str); } ScopedJavaLocalRef<jstring> NativeToJavaString(JNIEnv* jni, @@ -249,8 +249,9 @@ ScopedJavaLocalRef<jbyteArray> NativeToJavaByteArray( JNIEnv* env, ArrayView<int8_t> container) { - jni_zero::ScopedJavaLocalRef<jbyteArray> jarray( - env, env->NewByteArray(container.size())); + jni_zero::ScopedJavaLocalRef<jbyteArray> jarray = + jni_zero::ScopedJavaLocalRef<jbyteArray>::Adopt( + env, env->NewByteArray(container.size())); int8_t* array_ptr = env->GetByteArrayElements(jarray.obj(), /*isCopy=*/nullptr); memcpy(array_ptr, container.data(), container.size() * sizeof(int8_t)); @@ -261,8 +262,9 @@ ScopedJavaLocalRef<jintArray> NativeToJavaIntArray( JNIEnv* env, ArrayView<int32_t> container) { - jni_zero::ScopedJavaLocalRef<jintArray> jarray( - env, env->NewIntArray(container.size())); + jni_zero::ScopedJavaLocalRef<jintArray> jarray = + jni_zero::ScopedJavaLocalRef<jintArray>::Adopt( + env, env->NewIntArray(container.size())); int32_t* array_ptr = env->GetIntArrayElements(jarray.obj(), /*isCopy=*/nullptr); memcpy(array_ptr, container.data(), container.size() * sizeof(int32_t)); @@ -390,7 +392,7 @@ if (!list.is_null()) { for (const jni_zero::JavaRef<jobject>& str : Iterable(jni, list)) { converted_list.push_back( - JavaToStdString(jni, jni_zero::JavaParamRef<jstring>( + JavaToStdString(jni, jni_zero::JavaParamRef<jstring>::CreateLeaky( jni, static_cast<jstring>(str.obj())))); } }
diff --git a/sdk/android/native_api/jni/java_types.h b/sdk/android/native_api/jni/java_types.h index cf54ef9..d6ab54f 100644 --- a/sdk/android/native_api/jni/java_types.h +++ b/sdk/android/native_api/jni/java_types.h
@@ -161,7 +161,7 @@ container.reserve(size); for (size_t i = 0; i < size; ++i) { container.emplace_back(convert( - env, jni_zero::ScopedJavaLocalRef<jobject>( + env, jni_zero::ScopedJavaLocalRef<jobject>::Adopt( env, env->GetObjectArrayElement(j_container.obj(), i)))); } CHECK_EXCEPTION(env) << "Error during JavaToNativeVector"; @@ -231,8 +231,9 @@ const std::vector<T>& container, jclass clazz, Convert convert) { - jni_zero::ScopedJavaLocalRef<jobjectArray> j_container( - env, env->NewObjectArray(container.size(), clazz, nullptr)); + jni_zero::ScopedJavaLocalRef<jobjectArray> j_container = + jni_zero::ScopedJavaLocalRef<jobjectArray>::Adopt( + env, env->NewObjectArray(container.size(), clazz, nullptr)); int i = 0; for (const T& element : container) { env->SetObjectArrayElement(j_container.obj(), i, @@ -355,7 +356,8 @@ // Deprecated. Use scoped jobjects instead. inline std::string JavaToStdString(JNIEnv* jni, jstring j_string) { - return JavaToStdString(jni, jni_zero::JavaParamRef<jstring>(jni, j_string)); + return JavaToStdString( + jni, jni_zero::JavaParamRef<jstring>::CreateLeaky(jni, j_string)); } // Deprecated. Use JavaListToNativeVector<std::string, jstring> instead. @@ -376,7 +378,8 @@ // Deprecated. Use scoped jobjects instead. inline std::map<std::string, std::string> JavaToStdMapStrings(JNIEnv* jni, jobject j_map) { - return JavaToStdMapStrings(jni, jni_zero::JavaParamRef<jobject>(jni, j_map)); + return JavaToStdMapStrings( + jni, jni_zero::JavaParamRef<jobject>::CreateLeaky(jni, j_map)); } } // namespace webrtc
diff --git a/sdk/android/native_api/jni/scoped_java_ref.h b/sdk/android/native_api/jni/scoped_java_ref.h index 09b8572..27baa50 100644 --- a/sdk/android/native_api/jni/scoped_java_ref.h +++ b/sdk/android/native_api/jni/scoped_java_ref.h
@@ -28,9 +28,10 @@ inline jni_zero::ScopedJavaLocalRef<T> static_java_ref_cast( JNIEnv* env, jni_zero::JavaRef<jobject> const& ref) { - jni_zero::ScopedJavaLocalRef<jobject> owned_ref(env, ref); - return jni_zero::ScopedJavaLocalRef<T>(env, - static_cast<T>(owned_ref.Release())); + jni_zero::ScopedJavaLocalRef<jobject> owned_ref = + jni_zero::ScopedJavaLocalRef<jobject>(ref); + return jni_zero::ScopedJavaLocalRef<T>::Adopt( + env, static_cast<T>(owned_ref.Release())); } } // namespace webrtc
diff --git a/sdk/android/native_api/network_monitor/network_monitor.cc b/sdk/android/native_api/network_monitor/network_monitor.cc index bbf31e7..dadc6b5 100644 --- a/sdk/android/native_api/network_monitor/network_monitor.cc +++ b/sdk/android/native_api/network_monitor/network_monitor.cc
@@ -24,7 +24,7 @@ JNIEnv* env, jobject application_context) { return std::make_unique<jni::AndroidNetworkMonitorFactory>( - env, jni_zero::JavaParamRef<jobject>(env, application_context)); + env, jni_zero::JavaRef<jobject>::CreateLeaky(env, application_context)); } std::unique_ptr<NetworkMonitorFactory> CreateAndroidNetworkMonitorFactory() {
diff --git a/sdk/android/native_api/video/wrapper.cc b/sdk/android/native_api/video/wrapper.cc index 5514083..e6cddf9 100644 --- a/sdk/android/native_api/video/wrapper.cc +++ b/sdk/android/native_api/video/wrapper.cc
@@ -27,7 +27,7 @@ JNIEnv* jni, jobject video_sink) { return std::make_unique<jni::VideoSinkWrapper>( - jni, jni_zero::JavaParamRef<jobject>(jni, video_sink)); + jni, jni_zero::JavaRef<jobject>::CreateLeaky(jni, video_sink)); } ScopedJavaLocalRef<jobject> NativeToJavaVideoFrame(JNIEnv* jni,
diff --git a/sdk/android/src/jni/jni_helpers.cc b/sdk/android/src/jni/jni_helpers.cc index 46d6e5c..f892bf6 100644 --- a/sdk/android/src/jni/jni_helpers.cc +++ b/sdk/android/src/jni/jni_helpers.cc
@@ -21,7 +21,7 @@ ScopedJavaLocalRef<jobject> NewDirectByteBuffer(JNIEnv* env, void* address, jlong capacity) { - ScopedJavaLocalRef<jobject> buffer( + ScopedJavaLocalRef<jobject> buffer = ScopedJavaLocalRef<jobject>::Adopt( env, env->NewDirectByteBuffer(address, capacity)); CHECK_EXCEPTION(env) << "error NewDirectByteBuffer"; return buffer;
diff --git a/sdk/android/src/jni/pc/call_session_file_rotating_log_sink.cc b/sdk/android/src/jni/pc/call_session_file_rotating_log_sink.cc index 332aac6..17ba0e6 100644 --- a/sdk/android/src/jni/pc/call_session_file_rotating_log_sink.cc +++ b/sdk/android/src/jni/pc/call_session_file_rotating_log_sink.cc
@@ -63,7 +63,8 @@ if (log_size == 0) { RTC_LOG_V(LoggingSeverity::LS_WARNING) << "CallSessionFileRotatingStream returns 0 size for path " << dir_path; - return jni_zero::ScopedJavaLocalRef<jbyteArray>(jni, jni->NewByteArray(0)); + return jni_zero::ScopedJavaLocalRef<jbyteArray>::Adopt( + jni, jni->NewByteArray(0)); } // TODO(nisse, sakal): To avoid copying, change api to use ByteBuffer. @@ -71,7 +72,8 @@ size_t read = file_reader.ReadAll(buffer.get(), log_size); jni_zero::ScopedJavaLocalRef<jbyteArray> result = - jni_zero::ScopedJavaLocalRef<jbyteArray>(jni, jni->NewByteArray(read)); + jni_zero::ScopedJavaLocalRef<jbyteArray>::Adopt(jni, + jni->NewByteArray(read)); jni->SetByteArrayRegion(result.obj(), 0, read, buffer.get()); return result;
diff --git a/sdk/android/src/jni/pc/logging.cc b/sdk/android/src/jni/pc/logging.cc index 9230d48..a076fd9 100644 --- a/sdk/android/src/jni/pc/logging.cc +++ b/sdk/android/src/jni/pc/logging.cc
@@ -52,10 +52,10 @@ jint j_severity, jstring j_tag, jstring j_message) { - std::string message = - JavaToStdString(jni, jni_zero::JavaParamRef<jstring>(jni, j_message)); - std::string tag = - JavaToStdString(jni, jni_zero::JavaParamRef<jstring>(jni, j_tag)); + std::string message = JavaToNativeString( + jni, jni_zero::JavaRef<jstring>::CreateLeaky(jni, j_message)); + std::string tag = JavaToNativeString( + jni, jni_zero::JavaRef<jstring>::CreateLeaky(jni, j_tag)); RTC_LOG_TAG(static_cast<LoggingSeverity>(j_severity), tag.c_str()) << message; }
diff --git a/sdk/android/src/jni/pc/ssl_certificate_verifier_wrapper.cc b/sdk/android/src/jni/pc/ssl_certificate_verifier_wrapper.cc index ce61720..48f23c9 100644 --- a/sdk/android/src/jni/pc/ssl_certificate_verifier_wrapper.cc +++ b/sdk/android/src/jni/pc/ssl_certificate_verifier_wrapper.cc
@@ -34,8 +34,9 @@ // Serialize the der encoding of the cert into a jbyteArray Buffer cert_der_buffer; certificate.ToDER(&cert_der_buffer); - ScopedJavaLocalRef<jbyteArray> jni_buffer( - jni, jni->NewByteArray(cert_der_buffer.size())); + ScopedJavaLocalRef<jbyteArray> jni_buffer = + ScopedJavaLocalRef<jbyteArray>::Adopt( + jni, jni->NewByteArray(cert_der_buffer.size())); jni->SetByteArrayRegion( jni_buffer.obj(), 0, cert_der_buffer.size(), reinterpret_cast<const jbyte*>(cert_der_buffer.data()));
diff --git a/sdk/android/src/jni/video_encoder_wrapper.cc b/sdk/android/src/jni/video_encoder_wrapper.cc index aaeda72..f7e2817 100644 --- a/sdk/android/src/jni/video_encoder_wrapper.cc +++ b/sdk/android/src/jni/video_encoder_wrapper.cc
@@ -452,9 +452,10 @@ ScopedJavaLocalRef<jobject> VideoEncoderWrapper::ToJavaBitrateAllocation( JNIEnv* jni, const VideoBitrateAllocation& allocation) { - ScopedJavaLocalRef<jobjectArray> j_allocation_array( - jni, jni->NewObjectArray(kMaxSpatialLayers, int_array_class_.obj(), - nullptr /* initial */)); + ScopedJavaLocalRef<jobjectArray> j_allocation_array = + ScopedJavaLocalRef<jobjectArray>::Adopt( + jni, jni->NewObjectArray(kMaxSpatialLayers, int_array_class_.obj(), + nullptr /* initial */)); for (int spatial_i = 0; spatial_i < kMaxSpatialLayers; ++spatial_i) { std::array<int32_t, kMaxTemporalStreams> spatial_layer; for (int temporal_i = 0; temporal_i < kMaxTemporalStreams; ++temporal_i) { @@ -500,8 +501,9 @@ const jsize array_length = jni->GetArrayLength(j_bitrate_limits_array.obj()); for (int i = 0; i < array_length; ++i) { - ScopedJavaLocalRef<jobject> j_bitrate_limits = ScopedJavaLocalRef<jobject>( - jni, jni->GetObjectArrayElement(j_bitrate_limits_array.obj(), i)); + ScopedJavaLocalRef<jobject> j_bitrate_limits = + ScopedJavaLocalRef<jobject>::Adopt( + jni, jni->GetObjectArrayElement(j_bitrate_limits_array.obj(), i)); jint frame_size_pixels = Java_ResolutionBitrateLimits_getFrameSizePixels(jni, j_bitrate_limits);