|  | // Copyright 2016 The Chromium Authors. All rights reserved. | 
|  | // 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 "jni/UnguessableToken_jni.h" | 
|  |  | 
|  | namespace base { | 
|  | namespace android { | 
|  |  | 
|  | ScopedJavaLocalRef<jobject> 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_create(env, high, low); | 
|  | } | 
|  |  | 
|  | base::UnguessableToken UnguessableTokenAndroid::FromJavaUnguessableToken( | 
|  | JNIEnv* env, | 
|  | const JavaRef<jobject>& token) { | 
|  | const uint64_t high = | 
|  | Java_UnguessableToken_getHighForSerialization(env, token); | 
|  | const uint64_t low = Java_UnguessableToken_getLowForSerialization(env, token); | 
|  | DCHECK(high); | 
|  | DCHECK(low); | 
|  | return base::UnguessableToken::Deserialize(high, low); | 
|  | } | 
|  |  | 
|  | ScopedJavaLocalRef<jobject> | 
|  | UnguessableTokenAndroid::ParcelAndUnparcelForTesting( | 
|  | JNIEnv* env, | 
|  | const JavaRef<jobject>& token) { | 
|  | return Java_UnguessableToken_parcelAndUnparcelForTesting(env, token); | 
|  | } | 
|  |  | 
|  | }  // namespace android | 
|  | }  // namespace base |