• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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