• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright 2016 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 #include "base/android/unguessable_token_android.h"
6 
7 #include "build/robolectric_buildflags.h"
8 
9 // Must come after all headers that specialize FromJniType() / ToJniType().
10 #if BUILDFLAG(IS_ROBOLECTRIC)
11 #include "base/base_robolectric_jni/TokenBase_jni.h"  // nogncheck
12 #include "base/base_robolectric_jni/UnguessableToken_jni.h"  // nogncheck
13 #else
14 #include "base/base_jni/TokenBase_jni.h"
15 #include "base/base_jni/UnguessableToken_jni.h"
16 #endif
17 
18 
19 namespace base {
20 namespace android {
21 
Create(JNIEnv * env,const base::UnguessableToken & token)22 jni_zero::ScopedJavaLocalRef<jobject> UnguessableTokenAndroid::Create(
23     JNIEnv* env,
24     const base::UnguessableToken& token) {
25   const uint64_t high = token.GetHighForSerialization();
26   const uint64_t low = token.GetLowForSerialization();
27   DCHECK(high);
28   DCHECK(low);
29   return Java_UnguessableToken_Constructor(env, static_cast<jlong>(high),
30                                            static_cast<jlong>(low));
31 }
32 
FromJavaUnguessableToken(JNIEnv * env,const jni_zero::JavaRef<jobject> & token)33 base::UnguessableToken UnguessableTokenAndroid::FromJavaUnguessableToken(
34     JNIEnv* env,
35     const jni_zero::JavaRef<jobject>& token) {
36   const uint64_t high =
37       static_cast<uint64_t>(Java_TokenBase_getHighForSerialization(env, token));
38   const uint64_t low =
39       static_cast<uint64_t>(Java_TokenBase_getLowForSerialization(env, token));
40   DCHECK(high);
41   DCHECK(low);
42   return base::UnguessableToken::Deserialize(high, low).value();
43 }
44 
45 jni_zero::ScopedJavaLocalRef<jobject>
ParcelAndUnparcelForTesting(JNIEnv * env,const jni_zero::JavaRef<jobject> & token)46 UnguessableTokenAndroid::ParcelAndUnparcelForTesting(
47     JNIEnv* env,
48     const jni_zero::JavaRef<jobject>& token) {
49   return Java_UnguessableToken_parcelAndUnparcelForTesting(env, token);
50 }
51 
52 }  // namespace android
53 }  // namespace base
54