// Copyright 2016 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #include "base/android/unguessable_token_android.h" #include "build/robolectric_buildflags.h" // Must come after all headers that specialize FromJniType() / ToJniType(). #if BUILDFLAG(IS_ROBOLECTRIC) #include "base/base_robolectric_jni/TokenBase_jni.h" // nogncheck #include "base/base_robolectric_jni/UnguessableToken_jni.h" // nogncheck #else #include "base/base_jni/TokenBase_jni.h" #include "base/base_jni/UnguessableToken_jni.h" #endif namespace base { namespace android { jni_zero::ScopedJavaLocalRef UnguessableTokenAndroid::Create( JNIEnv* env, const base::UnguessableToken& token) { const uint64_t high = token.GetHighForSerialization(); const uint64_t low = token.GetLowForSerialization(); DCHECK(high); DCHECK(low); return Java_UnguessableToken_Constructor(env, static_cast(high), static_cast(low)); } base::UnguessableToken UnguessableTokenAndroid::FromJavaUnguessableToken( JNIEnv* env, const jni_zero::JavaRef& token) { const uint64_t high = static_cast(Java_TokenBase_getHighForSerialization(env, token)); const uint64_t low = static_cast(Java_TokenBase_getLowForSerialization(env, token)); DCHECK(high); DCHECK(low); return base::UnguessableToken::Deserialize(high, low).value(); } jni_zero::ScopedJavaLocalRef UnguessableTokenAndroid::ParcelAndUnparcelForTesting( JNIEnv* env, const jni_zero::JavaRef& token) { return Java_UnguessableToken_parcelAndUnparcelForTesting(env, token); } } // namespace android } // namespace base