| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright 2013 The WebRTC project authors. All Rights Reserved. | 2 * Copyright 2013 The WebRTC project authors. All Rights Reserved. |
| 3 * | 3 * |
| 4 * Use of this source code is governed by a BSD-style license | 4 * Use of this source code is governed by a BSD-style license |
| 5 * that can be found in the LICENSE file in the root of the source | 5 * that can be found in the LICENSE file in the root of the source |
| 6 * tree. An additional intellectual property rights grant can be found | 6 * tree. An additional intellectual property rights grant can be found |
| 7 * in the file PATENTS. All contributing project authors may | 7 * in the file PATENTS. All contributing project authors may |
| 8 * be found in the AUTHORS file in the root of the source tree. | 8 * be found in the AUTHORS file in the root of the source tree. |
| 9 */ | 9 */ |
| 10 | 10 |
| (...skipping 27 matching lines...) Expand all Loading... |
| 38 #include "webrtc/sdk/android/src/jni/classreferenceholder.h" | 38 #include "webrtc/sdk/android/src/jni/classreferenceholder.h" |
| 39 #include "webrtc/sdk/android/src/jni/jni_helpers.h" | 39 #include "webrtc/sdk/android/src/jni/jni_helpers.h" |
| 40 #include "webrtc/sdk/android/src/jni/pc/java_native_conversion.h" | 40 #include "webrtc/sdk/android/src/jni/pc/java_native_conversion.h" |
| 41 #include "webrtc/sdk/android/src/jni/pc/mediaconstraints_jni.h" | 41 #include "webrtc/sdk/android/src/jni/pc/mediaconstraints_jni.h" |
| 42 #include "webrtc/sdk/android/src/jni/pc/peerconnectionobserver_jni.h" | 42 #include "webrtc/sdk/android/src/jni/pc/peerconnectionobserver_jni.h" |
| 43 #include "webrtc/sdk/android/src/jni/pc/rtcstatscollectorcallbackwrapper.h" | 43 #include "webrtc/sdk/android/src/jni/pc/rtcstatscollectorcallbackwrapper.h" |
| 44 #include "webrtc/sdk/android/src/jni/pc/sdpobserver_jni.h" | 44 #include "webrtc/sdk/android/src/jni/pc/sdpobserver_jni.h" |
| 45 #include "webrtc/sdk/android/src/jni/pc/statsobserver_jni.h" | 45 #include "webrtc/sdk/android/src/jni/pc/statsobserver_jni.h" |
| 46 #include "webrtc/system_wrappers/include/trace.h" | 46 #include "webrtc/system_wrappers/include/trace.h" |
| 47 | 47 |
| 48 namespace webrtc_jni { | 48 namespace webrtc { |
| 49 namespace jni { |
| 49 | 50 |
| 50 static rtc::scoped_refptr<webrtc::PeerConnectionInterface> ExtractNativePC( | 51 static rtc::scoped_refptr<PeerConnectionInterface> ExtractNativePC( |
| 51 JNIEnv* jni, | 52 JNIEnv* jni, |
| 52 jobject j_pc) { | 53 jobject j_pc) { |
| 53 jfieldID native_pc_id = | 54 jfieldID native_pc_id = |
| 54 GetFieldID(jni, GetObjectClass(jni, j_pc), "nativePeerConnection", "J"); | 55 GetFieldID(jni, GetObjectClass(jni, j_pc), "nativePeerConnection", "J"); |
| 55 jlong j_p = GetLongField(jni, j_pc, native_pc_id); | 56 jlong j_p = GetLongField(jni, j_pc, native_pc_id); |
| 56 return rtc::scoped_refptr<webrtc::PeerConnectionInterface>( | 57 return rtc::scoped_refptr<PeerConnectionInterface>( |
| 57 reinterpret_cast<webrtc::PeerConnectionInterface*>(j_p)); | 58 reinterpret_cast<PeerConnectionInterface*>(j_p)); |
| 58 } | 59 } |
| 59 | 60 |
| 60 JNI_FUNCTION_DECLARATION(void, | 61 JNI_FUNCTION_DECLARATION(void, |
| 61 PeerConnection_freeObserver, | 62 PeerConnection_freeObserver, |
| 62 JNIEnv*, | 63 JNIEnv*, |
| 63 jclass, | 64 jclass, |
| 64 jlong j_p) { | 65 jlong j_p) { |
| 65 PeerConnectionObserverJni* p = | 66 PeerConnectionObserverJni* p = |
| 66 reinterpret_cast<PeerConnectionObserverJni*>(j_p); | 67 reinterpret_cast<PeerConnectionObserverJni*>(j_p); |
| 67 delete p; | 68 delete p; |
| 68 } | 69 } |
| 69 | 70 |
| 70 JNI_FUNCTION_DECLARATION(jobject, | 71 JNI_FUNCTION_DECLARATION(jobject, |
| 71 PeerConnection_getLocalDescription, | 72 PeerConnection_getLocalDescription, |
| 72 JNIEnv* jni, | 73 JNIEnv* jni, |
| 73 jobject j_pc) { | 74 jobject j_pc) { |
| 74 const webrtc::SessionDescriptionInterface* sdp = | 75 const SessionDescriptionInterface* sdp = |
| 75 ExtractNativePC(jni, j_pc)->local_description(); | 76 ExtractNativePC(jni, j_pc)->local_description(); |
| 76 return sdp ? NativeToJavaSessionDescription(jni, sdp) : NULL; | 77 return sdp ? NativeToJavaSessionDescription(jni, sdp) : NULL; |
| 77 } | 78 } |
| 78 | 79 |
| 79 JNI_FUNCTION_DECLARATION(jobject, | 80 JNI_FUNCTION_DECLARATION(jobject, |
| 80 PeerConnection_getRemoteDescription, | 81 PeerConnection_getRemoteDescription, |
| 81 JNIEnv* jni, | 82 JNIEnv* jni, |
| 82 jobject j_pc) { | 83 jobject j_pc) { |
| 83 const webrtc::SessionDescriptionInterface* sdp = | 84 const SessionDescriptionInterface* sdp = |
| 84 ExtractNativePC(jni, j_pc)->remote_description(); | 85 ExtractNativePC(jni, j_pc)->remote_description(); |
| 85 return sdp ? NativeToJavaSessionDescription(jni, sdp) : NULL; | 86 return sdp ? NativeToJavaSessionDescription(jni, sdp) : NULL; |
| 86 } | 87 } |
| 87 | 88 |
| 88 JNI_FUNCTION_DECLARATION(jobject, | 89 JNI_FUNCTION_DECLARATION(jobject, |
| 89 PeerConnection_createDataChannel, | 90 PeerConnection_createDataChannel, |
| 90 JNIEnv* jni, | 91 JNIEnv* jni, |
| 91 jobject j_pc, | 92 jobject j_pc, |
| 92 jstring j_label, | 93 jstring j_label, |
| 93 jobject j_init) { | 94 jobject j_init) { |
| 94 webrtc::DataChannelInit init = JavaToNativeDataChannelInit(jni, j_init); | 95 DataChannelInit init = JavaToNativeDataChannelInit(jni, j_init); |
| 95 rtc::scoped_refptr<webrtc::DataChannelInterface> channel( | 96 rtc::scoped_refptr<DataChannelInterface> channel( |
| 96 ExtractNativePC(jni, j_pc)->CreateDataChannel( | 97 ExtractNativePC(jni, j_pc)->CreateDataChannel( |
| 97 JavaToStdString(jni, j_label), &init)); | 98 JavaToStdString(jni, j_label), &init)); |
| 98 // Mustn't pass channel.get() directly through NewObject to avoid reading its | 99 // Mustn't pass channel.get() directly through NewObject to avoid reading its |
| 99 // vararg parameter as 64-bit and reading memory that doesn't belong to the | 100 // vararg parameter as 64-bit and reading memory that doesn't belong to the |
| 100 // 32-bit parameter. | 101 // 32-bit parameter. |
| 101 jlong nativeChannelPtr = jlongFromPointer(channel.get()); | 102 jlong nativeChannelPtr = jlongFromPointer(channel.get()); |
| 102 if (!nativeChannelPtr) { | 103 if (!nativeChannelPtr) { |
| 103 LOG(LS_ERROR) << "Failed to create DataChannel"; | 104 LOG(LS_ERROR) << "Failed to create DataChannel"; |
| 104 return nullptr; | 105 return nullptr; |
| 105 } | 106 } |
| (...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 170 JNI_FUNCTION_DECLARATION(jboolean, | 171 JNI_FUNCTION_DECLARATION(jboolean, |
| 171 PeerConnection_nativeSetConfiguration, | 172 PeerConnection_nativeSetConfiguration, |
| 172 JNIEnv* jni, | 173 JNIEnv* jni, |
| 173 jobject j_pc, | 174 jobject j_pc, |
| 174 jobject j_rtc_config, | 175 jobject j_rtc_config, |
| 175 jlong native_observer) { | 176 jlong native_observer) { |
| 176 // Need to merge constraints into RTCConfiguration again, which are stored | 177 // Need to merge constraints into RTCConfiguration again, which are stored |
| 177 // in the observer object. | 178 // in the observer object. |
| 178 PeerConnectionObserverJni* observer = | 179 PeerConnectionObserverJni* observer = |
| 179 reinterpret_cast<PeerConnectionObserverJni*>(native_observer); | 180 reinterpret_cast<PeerConnectionObserverJni*>(native_observer); |
| 180 webrtc::PeerConnectionInterface::RTCConfiguration rtc_config( | 181 PeerConnectionInterface::RTCConfiguration rtc_config( |
| 181 webrtc::PeerConnectionInterface::RTCConfigurationType::kAggressive); | 182 PeerConnectionInterface::RTCConfigurationType::kAggressive); |
| 182 JavaToNativeRTCConfiguration(jni, j_rtc_config, &rtc_config); | 183 JavaToNativeRTCConfiguration(jni, j_rtc_config, &rtc_config); |
| 183 CopyConstraintsIntoRtcConfiguration(observer->constraints(), &rtc_config); | 184 CopyConstraintsIntoRtcConfiguration(observer->constraints(), &rtc_config); |
| 184 return ExtractNativePC(jni, j_pc)->SetConfiguration(rtc_config); | 185 return ExtractNativePC(jni, j_pc)->SetConfiguration(rtc_config); |
| 185 } | 186 } |
| 186 | 187 |
| 187 JNI_FUNCTION_DECLARATION(jboolean, | 188 JNI_FUNCTION_DECLARATION(jboolean, |
| 188 PeerConnection_nativeAddIceCandidate, | 189 PeerConnection_nativeAddIceCandidate, |
| 189 JNIEnv* jni, | 190 JNIEnv* jni, |
| 190 jobject j_pc, | 191 jobject j_pc, |
| 191 jstring j_sdp_mid, | 192 jstring j_sdp_mid, |
| 192 jint j_sdp_mline_index, | 193 jint j_sdp_mline_index, |
| 193 jstring j_candidate_sdp) { | 194 jstring j_candidate_sdp) { |
| 194 std::string sdp_mid = JavaToStdString(jni, j_sdp_mid); | 195 std::string sdp_mid = JavaToStdString(jni, j_sdp_mid); |
| 195 std::string sdp = JavaToStdString(jni, j_candidate_sdp); | 196 std::string sdp = JavaToStdString(jni, j_candidate_sdp); |
| 196 std::unique_ptr<webrtc::IceCandidateInterface> candidate( | 197 std::unique_ptr<IceCandidateInterface> candidate( |
| 197 webrtc::CreateIceCandidate(sdp_mid, j_sdp_mline_index, sdp, nullptr)); | 198 CreateIceCandidate(sdp_mid, j_sdp_mline_index, sdp, nullptr)); |
| 198 return ExtractNativePC(jni, j_pc)->AddIceCandidate(candidate.get()); | 199 return ExtractNativePC(jni, j_pc)->AddIceCandidate(candidate.get()); |
| 199 } | 200 } |
| 200 | 201 |
| 201 JNI_FUNCTION_DECLARATION(jboolean, | 202 JNI_FUNCTION_DECLARATION(jboolean, |
| 202 PeerConnection_nativeRemoveIceCandidates, | 203 PeerConnection_nativeRemoveIceCandidates, |
| 203 JNIEnv* jni, | 204 JNIEnv* jni, |
| 204 jobject j_pc, | 205 jobject j_pc, |
| 205 jobjectArray j_candidates) { | 206 jobjectArray j_candidates) { |
| 206 std::vector<cricket::Candidate> candidates; | 207 std::vector<cricket::Candidate> candidates; |
| 207 size_t num_candidates = jni->GetArrayLength(j_candidates); | 208 size_t num_candidates = jni->GetArrayLength(j_candidates); |
| 208 for (size_t i = 0; i < num_candidates; ++i) { | 209 for (size_t i = 0; i < num_candidates; ++i) { |
| 209 jobject j_candidate = jni->GetObjectArrayElement(j_candidates, i); | 210 jobject j_candidate = jni->GetObjectArrayElement(j_candidates, i); |
| 210 candidates.push_back(JavaToNativeCandidate(jni, j_candidate)); | 211 candidates.push_back(JavaToNativeCandidate(jni, j_candidate)); |
| 211 } | 212 } |
| 212 return ExtractNativePC(jni, j_pc)->RemoveIceCandidates(candidates); | 213 return ExtractNativePC(jni, j_pc)->RemoveIceCandidates(candidates); |
| 213 } | 214 } |
| 214 | 215 |
| 215 JNI_FUNCTION_DECLARATION(jboolean, | 216 JNI_FUNCTION_DECLARATION(jboolean, |
| 216 PeerConnection_nativeAddLocalStream, | 217 PeerConnection_nativeAddLocalStream, |
| 217 JNIEnv* jni, | 218 JNIEnv* jni, |
| 218 jobject j_pc, | 219 jobject j_pc, |
| 219 jlong native_stream) { | 220 jlong native_stream) { |
| 220 return ExtractNativePC(jni, j_pc)->AddStream( | 221 return ExtractNativePC(jni, j_pc)->AddStream( |
| 221 reinterpret_cast<webrtc::MediaStreamInterface*>(native_stream)); | 222 reinterpret_cast<MediaStreamInterface*>(native_stream)); |
| 222 } | 223 } |
| 223 | 224 |
| 224 JNI_FUNCTION_DECLARATION(void, | 225 JNI_FUNCTION_DECLARATION(void, |
| 225 PeerConnection_nativeRemoveLocalStream, | 226 PeerConnection_nativeRemoveLocalStream, |
| 226 JNIEnv* jni, | 227 JNIEnv* jni, |
| 227 jobject j_pc, | 228 jobject j_pc, |
| 228 jlong native_stream) { | 229 jlong native_stream) { |
| 229 ExtractNativePC(jni, j_pc)->RemoveStream( | 230 ExtractNativePC(jni, j_pc)->RemoveStream( |
| 230 reinterpret_cast<webrtc::MediaStreamInterface*>(native_stream)); | 231 reinterpret_cast<MediaStreamInterface*>(native_stream)); |
| 231 } | 232 } |
| 232 | 233 |
| 233 JNI_FUNCTION_DECLARATION(jobject, | 234 JNI_FUNCTION_DECLARATION(jobject, |
| 234 PeerConnection_nativeCreateSender, | 235 PeerConnection_nativeCreateSender, |
| 235 JNIEnv* jni, | 236 JNIEnv* jni, |
| 236 jobject j_pc, | 237 jobject j_pc, |
| 237 jstring j_kind, | 238 jstring j_kind, |
| 238 jstring j_stream_id) { | 239 jstring j_stream_id) { |
| 239 jclass j_rtp_sender_class = FindClass(jni, "org/webrtc/RtpSender"); | 240 jclass j_rtp_sender_class = FindClass(jni, "org/webrtc/RtpSender"); |
| 240 jmethodID j_rtp_sender_ctor = | 241 jmethodID j_rtp_sender_ctor = |
| 241 GetMethodID(jni, j_rtp_sender_class, "<init>", "(J)V"); | 242 GetMethodID(jni, j_rtp_sender_class, "<init>", "(J)V"); |
| 242 | 243 |
| 243 std::string kind = JavaToStdString(jni, j_kind); | 244 std::string kind = JavaToStdString(jni, j_kind); |
| 244 std::string stream_id = JavaToStdString(jni, j_stream_id); | 245 std::string stream_id = JavaToStdString(jni, j_stream_id); |
| 245 rtc::scoped_refptr<webrtc::RtpSenderInterface> sender = | 246 rtc::scoped_refptr<RtpSenderInterface> sender = |
| 246 ExtractNativePC(jni, j_pc)->CreateSender(kind, stream_id); | 247 ExtractNativePC(jni, j_pc)->CreateSender(kind, stream_id); |
| 247 if (!sender.get()) { | 248 if (!sender.get()) { |
| 248 return nullptr; | 249 return nullptr; |
| 249 } | 250 } |
| 250 jlong nativeSenderPtr = jlongFromPointer(sender.get()); | 251 jlong nativeSenderPtr = jlongFromPointer(sender.get()); |
| 251 jobject j_sender = | 252 jobject j_sender = |
| 252 jni->NewObject(j_rtp_sender_class, j_rtp_sender_ctor, nativeSenderPtr); | 253 jni->NewObject(j_rtp_sender_class, j_rtp_sender_ctor, nativeSenderPtr); |
| 253 CHECK_EXCEPTION(jni) << "error during NewObject"; | 254 CHECK_EXCEPTION(jni) << "error during NewObject"; |
| 254 // Sender is now owned by the Java object, and will be freed from | 255 // Sender is now owned by the Java object, and will be freed from |
| 255 // RtpSender.dispose(), called by PeerConnection.dispose() or getSenders(). | 256 // RtpSender.dispose(), called by PeerConnection.dispose() or getSenders(). |
| (...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 320 | 321 |
| 321 JNI_FUNCTION_DECLARATION(bool, | 322 JNI_FUNCTION_DECLARATION(bool, |
| 322 PeerConnection_nativeOldGetStats, | 323 PeerConnection_nativeOldGetStats, |
| 323 JNIEnv* jni, | 324 JNIEnv* jni, |
| 324 jobject j_pc, | 325 jobject j_pc, |
| 325 jobject j_observer, | 326 jobject j_observer, |
| 326 jlong native_track) { | 327 jlong native_track) { |
| 327 rtc::scoped_refptr<StatsObserverJni> observer( | 328 rtc::scoped_refptr<StatsObserverJni> observer( |
| 328 new rtc::RefCountedObject<StatsObserverJni>(jni, j_observer)); | 329 new rtc::RefCountedObject<StatsObserverJni>(jni, j_observer)); |
| 329 return ExtractNativePC(jni, j_pc)->GetStats( | 330 return ExtractNativePC(jni, j_pc)->GetStats( |
| 330 observer, | 331 observer, reinterpret_cast<MediaStreamTrackInterface*>(native_track), |
| 331 reinterpret_cast<webrtc::MediaStreamTrackInterface*>(native_track), | 332 PeerConnectionInterface::kStatsOutputLevelStandard); |
| 332 webrtc::PeerConnectionInterface::kStatsOutputLevelStandard); | |
| 333 } | 333 } |
| 334 | 334 |
| 335 JNI_FUNCTION_DECLARATION(void, | 335 JNI_FUNCTION_DECLARATION(void, |
| 336 PeerConnection_nativeNewGetStats, | 336 PeerConnection_nativeNewGetStats, |
| 337 JNIEnv* jni, | 337 JNIEnv* jni, |
| 338 jobject j_pc, | 338 jobject j_pc, |
| 339 jobject j_callback) { | 339 jobject j_callback) { |
| 340 rtc::scoped_refptr<RTCStatsCollectorCallbackWrapper> callback( | 340 rtc::scoped_refptr<RTCStatsCollectorCallbackWrapper> callback( |
| 341 new rtc::RefCountedObject<RTCStatsCollectorCallbackWrapper>(jni, | 341 new rtc::RefCountedObject<RTCStatsCollectorCallbackWrapper>(jni, |
| 342 j_callback)); | 342 j_callback)); |
| 343 ExtractNativePC(jni, j_pc)->GetStats(callback); | 343 ExtractNativePC(jni, j_pc)->GetStats(callback); |
| 344 } | 344 } |
| 345 | 345 |
| 346 JNI_FUNCTION_DECLARATION(jboolean, | 346 JNI_FUNCTION_DECLARATION(jboolean, |
| 347 PeerConnection_setBitrate, | 347 PeerConnection_setBitrate, |
| 348 JNIEnv* jni, | 348 JNIEnv* jni, |
| 349 jobject j_pc, | 349 jobject j_pc, |
| 350 jobject j_min, | 350 jobject j_min, |
| 351 jobject j_current, | 351 jobject j_current, |
| 352 jobject j_max) { | 352 jobject j_max) { |
| 353 webrtc::PeerConnectionInterface::BitrateParameters params; | 353 PeerConnectionInterface::BitrateParameters params; |
| 354 jclass j_integer_class = jni->FindClass("java/lang/Integer"); | 354 jclass j_integer_class = jni->FindClass("java/lang/Integer"); |
| 355 jmethodID int_value_id = GetMethodID(jni, j_integer_class, "intValue", "()I"); | 355 jmethodID int_value_id = GetMethodID(jni, j_integer_class, "intValue", "()I"); |
| 356 if (!IsNull(jni, j_min)) { | 356 if (!IsNull(jni, j_min)) { |
| 357 int min_value = jni->CallIntMethod(j_min, int_value_id); | 357 int min_value = jni->CallIntMethod(j_min, int_value_id); |
| 358 params.min_bitrate_bps = rtc::Optional<int>(min_value); | 358 params.min_bitrate_bps = rtc::Optional<int>(min_value); |
| 359 } | 359 } |
| 360 if (!IsNull(jni, j_current)) { | 360 if (!IsNull(jni, j_current)) { |
| 361 int current_value = jni->CallIntMethod(j_current, int_value_id); | 361 int current_value = jni->CallIntMethod(j_current, int_value_id); |
| 362 params.current_bitrate_bps = rtc::Optional<int>(current_value); | 362 params.current_bitrate_bps = rtc::Optional<int>(current_value); |
| 363 } | 363 } |
| (...skipping 18 matching lines...) Expand all Loading... |
| 382 PeerConnection_nativeStopRtcEventLog, | 382 PeerConnection_nativeStopRtcEventLog, |
| 383 JNIEnv* jni, | 383 JNIEnv* jni, |
| 384 jobject j_pc) { | 384 jobject j_pc) { |
| 385 ExtractNativePC(jni, j_pc)->StopRtcEventLog(); | 385 ExtractNativePC(jni, j_pc)->StopRtcEventLog(); |
| 386 } | 386 } |
| 387 | 387 |
| 388 JNI_FUNCTION_DECLARATION(jobject, | 388 JNI_FUNCTION_DECLARATION(jobject, |
| 389 PeerConnection_signalingState, | 389 PeerConnection_signalingState, |
| 390 JNIEnv* jni, | 390 JNIEnv* jni, |
| 391 jobject j_pc) { | 391 jobject j_pc) { |
| 392 webrtc::PeerConnectionInterface::SignalingState state = | 392 PeerConnectionInterface::SignalingState state = |
| 393 ExtractNativePC(jni, j_pc)->signaling_state(); | 393 ExtractNativePC(jni, j_pc)->signaling_state(); |
| 394 return JavaEnumFromIndexAndClassName(jni, "PeerConnection$SignalingState", | 394 return JavaEnumFromIndexAndClassName(jni, "PeerConnection$SignalingState", |
| 395 state); | 395 state); |
| 396 } | 396 } |
| 397 | 397 |
| 398 JNI_FUNCTION_DECLARATION(jobject, | 398 JNI_FUNCTION_DECLARATION(jobject, |
| 399 PeerConnection_iceConnectionState, | 399 PeerConnection_iceConnectionState, |
| 400 JNIEnv* jni, | 400 JNIEnv* jni, |
| 401 jobject j_pc) { | 401 jobject j_pc) { |
| 402 webrtc::PeerConnectionInterface::IceConnectionState state = | 402 PeerConnectionInterface::IceConnectionState state = |
| 403 ExtractNativePC(jni, j_pc)->ice_connection_state(); | 403 ExtractNativePC(jni, j_pc)->ice_connection_state(); |
| 404 return JavaEnumFromIndexAndClassName(jni, "PeerConnection$IceConnectionState", | 404 return JavaEnumFromIndexAndClassName(jni, "PeerConnection$IceConnectionState", |
| 405 state); | 405 state); |
| 406 } | 406 } |
| 407 | 407 |
| 408 JNI_FUNCTION_DECLARATION(jobject, | 408 JNI_FUNCTION_DECLARATION(jobject, |
| 409 PeerConnection_iceGatheringState, | 409 PeerConnection_iceGatheringState, |
| 410 JNIEnv* jni, | 410 JNIEnv* jni, |
| 411 jobject j_pc) { | 411 jobject j_pc) { |
| 412 webrtc::PeerConnectionInterface::IceGatheringState state = | 412 PeerConnectionInterface::IceGatheringState state = |
| 413 ExtractNativePC(jni, j_pc)->ice_gathering_state(); | 413 ExtractNativePC(jni, j_pc)->ice_gathering_state(); |
| 414 return JavaEnumFromIndexAndClassName(jni, "PeerConnection$IceGatheringState", | 414 return JavaEnumFromIndexAndClassName(jni, "PeerConnection$IceGatheringState", |
| 415 state); | 415 state); |
| 416 } | 416 } |
| 417 | 417 |
| 418 JNI_FUNCTION_DECLARATION(void, | 418 JNI_FUNCTION_DECLARATION(void, |
| 419 PeerConnection_close, | 419 PeerConnection_close, |
| 420 JNIEnv* jni, | 420 JNIEnv* jni, |
| 421 jobject j_pc) { | 421 jobject j_pc) { |
| 422 ExtractNativePC(jni, j_pc)->Close(); | 422 ExtractNativePC(jni, j_pc)->Close(); |
| 423 return; | 423 return; |
| 424 } | 424 } |
| 425 | 425 |
| 426 } // namespace webrtc_jni | 426 } // namespace jni |
| 427 } // namespace webrtc |
| OLD | NEW |