• 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 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::android {
18 
19 class BASE_EXPORT TokenAndroid {
20  public:
21   // Create a Java Token with the same value as `token`.
22   static ScopedJavaLocalRef<jobject> Create(JNIEnv* env,
23                                             const base::Token& token);
24 
25   // Creates a Token from `j_token`.
26   static base::Token FromJavaToken(JNIEnv* env,
27                                    const JavaRef<jobject>& j_token);
28 
29   TokenAndroid() = delete;
30   TokenAndroid(const TokenAndroid&) = delete;
31   TokenAndroid& operator=(const TokenAndroid&) = delete;
32 };
33 
34 }  // namespace base::android
35 
36 namespace jni_zero {
37 template <>
38 inline base::Token FromJniType<base::Token>(JNIEnv* env,
39                                             const JavaRef<jobject>& j_object) {
40   return base::android::TokenAndroid::FromJavaToken(env, j_object);
41 }
42 template <>
43 inline ScopedJavaLocalRef<jobject> ToJniType<base::Token>(
44     JNIEnv* env,
45     const base::Token& token) {
46   return base::android::TokenAndroid::Create(env, token);
47 }
48 }  // namespace jni_zero
49 
50 #endif  // BASE_ANDROID_TOKEN_ANDROID_H_
51