1 /*
2  *  Copyright 2017 The WebRTC project authors. All Rights Reserved.
3  *
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
6  *  tree. An additional intellectual property rights grant can be found
7  *  in the file PATENTS.  All contributing project authors may
8  *  be found in the AUTHORS file in the root of the source tree.
9  */
10 
11 #include "sdk/android/src/jni/pc/media_constraints.h"
12 
13 #include <memory>
14 
15 #include "sdk/android/generated_peerconnection_jni/MediaConstraints_jni.h"
16 #include "sdk/android/native_api/jni/java_types.h"
17 #include "sdk/android/src/jni/jni_helpers.h"
18 
19 namespace webrtc {
20 namespace jni {
21 
22 namespace {
23 
24 // Helper for translating a List<Pair<String, String>> to a Constraints.
PopulateConstraintsFromJavaPairList(JNIEnv * env,const JavaRef<jobject> & j_list)25 MediaConstraints::Constraints PopulateConstraintsFromJavaPairList(
26     JNIEnv* env,
27     const JavaRef<jobject>& j_list) {
28   MediaConstraints::Constraints constraints;
29   for (const JavaRef<jobject>& entry : Iterable(env, j_list)) {
30     constraints.emplace_back(
31         JavaToStdString(env, Java_KeyValuePair_getKey(env, entry)),
32         JavaToStdString(env, Java_KeyValuePair_getValue(env, entry)));
33   }
34   return constraints;
35 }
36 
37 }  // namespace
38 
39 // Copies all needed data so Java object is no longer needed at return.
JavaToNativeMediaConstraints(JNIEnv * env,const JavaRef<jobject> & j_constraints)40 std::unique_ptr<MediaConstraints> JavaToNativeMediaConstraints(
41     JNIEnv* env,
42     const JavaRef<jobject>& j_constraints) {
43   return std::make_unique<MediaConstraints>(
44       PopulateConstraintsFromJavaPairList(
45           env, Java_MediaConstraints_getMandatory(env, j_constraints)),
46       PopulateConstraintsFromJavaPairList(
47           env, Java_MediaConstraints_getOptional(env, j_constraints)));
48 }
49 
50 }  // namespace jni
51 }  // namespace webrtc
52