xref: /aosp_15_r20/external/cronet/base/android/token_android.h (revision 6777b5387eb2ff775bb5750e3f5d96f37fb7352b)
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