1 // Copyright 2024 The Chromium Authors 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #ifndef JNI_ZERO_COMMON_APIS_H_ 6 #define JNI_ZERO_COMMON_APIS_H_ 7 8 #include <jni.h> 9 10 #include "third_party/jni_zero/java_refs.h" 11 #include "third_party/jni_zero/jni_export.h" 12 13 namespace jni_zero { 14 // Wraps Collection.toArray(). 15 JNI_ZERO_COMPONENT_BUILD_EXPORT ScopedJavaLocalRef<jobjectArray> 16 CollectionToArray(JNIEnv* env, const JavaRef<jobject>& collection); 17 // Wraps Arrays.asList(). 18 JNI_ZERO_COMPONENT_BUILD_EXPORT ScopedJavaLocalRef<jobject> ArrayToList( 19 JNIEnv* env, 20 const JavaRef<jobjectArray>& array); 21 // Serializes a Map to an array of key/values. 22 JNI_ZERO_COMPONENT_BUILD_EXPORT ScopedJavaLocalRef<jobjectArray> MapToArray( 23 JNIEnv* env, 24 const JavaRef<jobject>& map); 25 JNI_ZERO_COMPONENT_BUILD_EXPORT ScopedJavaLocalRef<jobject> ArrayToMap( 26 JNIEnv* env, 27 const JavaRef<jobjectArray>& array); 28 29 JNI_ZERO_COMPONENT_BUILD_EXPORT ScopedJavaLocalRef<jobject> 30 ListGet(JNIEnv* env, const JavaRef<jobject>& list, jint idx); 31 32 JNI_ZERO_COMPONENT_BUILD_EXPORT ScopedJavaLocalRef<jobject> ListSet( 33 JNIEnv* env, 34 const JavaRef<jobject>& list, 35 jint idx, 36 const JavaRef<jobject>& value); 37 38 JNI_ZERO_COMPONENT_BUILD_EXPORT void ListAdd(JNIEnv* env, 39 const JavaRef<jobject>& list, 40 const JavaRef<jobject>& value); 41 42 JNI_ZERO_COMPONENT_BUILD_EXPORT ScopedJavaLocalRef<jobject> 43 MapGet(JNIEnv* env, const JavaRef<jobject>& map, const JavaRef<jobject>& key); 44 45 JNI_ZERO_COMPONENT_BUILD_EXPORT ScopedJavaLocalRef<jobject> SetMapAt( 46 JNIEnv* env, 47 const JavaRef<jobject>& map, 48 const JavaRef<jobject>& key, 49 const JavaRef<jobject>& value); 50 51 JNI_ZERO_COMPONENT_BUILD_EXPORT jint 52 CollectionSize(JNIEnv* env, const JavaRef<jobject>& collection); 53 54 JNI_ZERO_COMPONENT_BUILD_EXPORT jint MapSize(JNIEnv* env, 55 const JavaRef<jobject>& map); 56 } // namespace jni_zero 57 58 #endif // JNI_ZERO_COMMON_APIS_H_ 59