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 BASE_ANDROID_TOKEN_ANDROID_H_ 6 #define BASE_ANDROID_TOKEN_ANDROID_H_ 7 8 #include <jni.h> 9 10 #include <optional> 11 12 #include "base/android/scoped_java_ref.h" 13 #include "base/base_export.h" 14 #include "base/containers/span.h" 15 #include "base/token.h" 16 17 namespace base { 18 namespace android { 19 20 class BASE_EXPORT TokenAndroid { 21 public: 22 // Create a Java Token with the same value as `token`. 23 static ScopedJavaLocalRef<jobject> Create(JNIEnv* env, 24 const base::Token& token); 25 26 // Creates a Token from `j_token`. 27 static base::Token FromJavaToken(JNIEnv* env, 28 const JavaRef<jobject>& j_token); 29 30 // Converts the collection of `tokens` to an array of Token objects in Java. 31 static ScopedJavaLocalRef<jobjectArray> ToJavaArrayOfTokens( 32 JNIEnv* env, 33 base::span<std::optional<base::Token>> tokens); 34 35 TokenAndroid() = delete; 36 TokenAndroid(const TokenAndroid&) = delete; 37 TokenAndroid& operator=(const TokenAndroid&) = delete; 38 }; 39 40 } // namespace android 41 } // namespace base 42 43 #endif // BASE_ANDROID_TOKEN_ANDROID_H_ 44