Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(262)

Side by Side Diff: base/android/java/src/org/chromium/base/UnguessableToken.java

Issue 2468353002: Added UnguessableToken.java . (Closed)
Patch Set: renamed unit test, comments. Created 4 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « base/BUILD.gn ('k') | base/android/unguessable_token_android.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 package org.chromium.base;
6
7 import android.os.Parcel;
8 import android.os.Parcelable;
9
10 import org.chromium.base.annotations.CalledByNative;
11
12 /**
13 * This class mirrors unguessable_token.h . Since tokens are passed by value,
14 * we don't bother to maintain a native token. This implements Parcelable so
15 * that it may be sent via binder.
16 *
17 * To get one of these from native, one must start with a
18 * base::UnguessableToken, then create a Java object from it. See
19 * jni_unguessable_token.h for information.
20 */
21 public class UnguessableToken implements Parcelable {
22 private final long mHigh;
23 private final long mLow;
24
25 private UnguessableToken(long high, long low) {
26 mHigh = high;
27 mLow = low;
28 }
29
30 @CalledByNative
31 private static UnguessableToken create(long high, long low) {
32 return new UnguessableToken(high, low);
33 }
34
35 @CalledByNative
36 private long getHighForSerialization() {
37 return mHigh;
38 }
39
40 @CalledByNative
41 private long getLowForSerialization() {
42 return mLow;
43 }
44
45 @Override
46 public int describeContents() {
47 return 0;
48 }
49
50 @Override
51 public void writeToParcel(Parcel dest, int flags) {
52 dest.writeLong(mHigh);
53 dest.writeLong(mLow);
54 }
55
56 public static final Parcelable.Creator<UnguessableToken> CREATOR =
57 new Parcelable.Creator<UnguessableToken>() {
58 @Override
59 public UnguessableToken createFromParcel(Parcel source) {
60 long high = source.readLong();
61 long low = source.readLong();
62 if (high == 0 || low == 0) {
63 // Refuse to create an empty UnguessableToken.
64 return null;
65 }
66 return new UnguessableToken(high, low);
67 }
68
69 @Override
70 public UnguessableToken[] newArray(int size) {
71 return new UnguessableToken[size];
72 }
73 };
74
75 // To avoid unwieldy calls in JNI for tests, parcel and unparcel.
76 // TODO(liberato): It would be nice if we could include this only with a
77 // java driver that's linked only with unit tests, but i don't see a way
78 // to do that.
79 @CalledByNative
80 private UnguessableToken parcelAndUnparcelForTesting() {
81 Parcel parcel = Parcel.obtain();
82 writeToParcel(parcel, 0);
83
84 // Rewind the parcel and un-parcel.
85 parcel.setDataPosition(0);
86 UnguessableToken token = CREATOR.createFromParcel(parcel);
87 parcel.recycle();
88
89 return token;
90 }
91 };
OLDNEW
« no previous file with comments | « base/BUILD.gn ('k') | base/android/unguessable_token_android.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698