| Index: blimp/client/app/android/java/src/org/chromium/blimp/session/BlimpClientSession.java
|
| diff --git a/blimp/client/app/android/java/src/org/chromium/blimp/session/BlimpClientSession.java b/blimp/client/app/android/java/src/org/chromium/blimp/session/BlimpClientSession.java
|
| index b3012d8214e75aef716b94714df0591dd8e0e922..567c623ede69abebec7b0b5cf3b4c976648589a1 100644
|
| --- a/blimp/client/app/android/java/src/org/chromium/blimp/session/BlimpClientSession.java
|
| +++ b/blimp/client/app/android/java/src/org/chromium/blimp/session/BlimpClientSession.java
|
| @@ -6,6 +6,8 @@ package org.chromium.blimp.session;
|
|
|
| import org.chromium.base.annotations.CalledByNative;
|
| import org.chromium.base.annotations.JNINamespace;
|
| +import org.chromium.blimp.R;
|
| +import org.chromium.blimp.assignment.Result;
|
|
|
| /**
|
| * The Java representation of a native BlimpClientSession. This is primarily used to provide access
|
| @@ -14,17 +16,35 @@ import org.chromium.base.annotations.JNINamespace;
|
| */
|
| @JNINamespace("blimp::client")
|
| public class BlimpClientSession {
|
| + /**
|
| + * A callback for when the session needs to notify the UI about the state of the Blimp session.
|
| + */
|
| + public interface Callback {
|
| + /**
|
| + * Called when an engine assignment has been successful or failed.
|
| + * @param result The result code of the assignment. See
|
| + * assignment_source.h for details. Maps to a value in
|
| + * {@link Result}.
|
| + * @param suggestedMessageResourceId A suggested resource id for a string to display to the
|
| + * user if necessary.
|
| + */
|
| + void onAssignmentReceived(int result, int suggestedMessageResourceId);
|
| + }
|
| +
|
| + private final Callback mCallback;
|
| private long mNativeBlimpClientSessionAndroidPtr;
|
|
|
| - public BlimpClientSession() {
|
| + public BlimpClientSession(Callback callback) {
|
| + mCallback = callback;
|
| mNativeBlimpClientSessionAndroidPtr = nativeInit();
|
| }
|
|
|
| /**
|
| * Retrieves an assignment and uses it to connect to the engine.
|
| + * @param token A OAuth2 access token for the account requesting access.
|
| */
|
| - public void connect() {
|
| - nativeConnect(mNativeBlimpClientSessionAndroidPtr);
|
| + public void connect(String token) {
|
| + nativeConnect(mNativeBlimpClientSessionAndroidPtr, token);
|
| }
|
|
|
| /**
|
| @@ -39,12 +59,56 @@ public class BlimpClientSession {
|
|
|
| // Methods that are called by native via JNI.
|
| @CalledByNative
|
| + private void onAssignmentReceived(int result) {
|
| + if (mCallback == null) return;
|
| +
|
| + int resultMessageResourceId = R.string.assignment_failure_unknown;
|
| + switch (result) {
|
| + case Result.OK:
|
| + resultMessageResourceId = R.string.assignment_success;
|
| + break;
|
| + case Result.BAD_REQUEST:
|
| + resultMessageResourceId = R.string.assignment_failure_bad_request;
|
| + break;
|
| + case Result.BAD_RESPONSE:
|
| + resultMessageResourceId = R.string.assignment_failure_bad_response;
|
| + break;
|
| + case Result.INVALID_PROTOCOL_VERSION:
|
| + resultMessageResourceId = R.string.assignment_failure_bad_version;
|
| + break;
|
| + case Result.EXPIRED_ACCESS_TOKEN:
|
| + resultMessageResourceId = R.string.assignment_failure_expired_token;
|
| + break;
|
| + case Result.USER_INVALID:
|
| + resultMessageResourceId = R.string.assignment_failure_user_invalid;
|
| + break;
|
| + case Result.OUT_OF_VMS:
|
| + resultMessageResourceId = R.string.assignment_failure_out_of_vms;
|
| + break;
|
| + case Result.SERVER_ERROR:
|
| + resultMessageResourceId = R.string.assignment_failure_server_error;
|
| + break;
|
| + case Result.SERVER_INTERRUPTED:
|
| + resultMessageResourceId = R.string.assignment_failure_server_interrupted;
|
| + break;
|
| + case Result.NETWORK_FAILURE:
|
| + resultMessageResourceId = R.string.assignment_failure_network;
|
| + break;
|
| + case Result.UNKNOWN:
|
| + default:
|
| + resultMessageResourceId = R.string.assignment_failure_unknown;
|
| + break;
|
| + }
|
| + mCallback.onAssignmentReceived(result, resultMessageResourceId);
|
| + }
|
| +
|
| + @CalledByNative
|
| private long getNativePtr() {
|
| assert mNativeBlimpClientSessionAndroidPtr != 0;
|
| return mNativeBlimpClientSessionAndroidPtr;
|
| }
|
|
|
| private native long nativeInit();
|
| - private native void nativeConnect(long nativeBlimpClientSessionAndroid);
|
| + private native void nativeConnect(long nativeBlimpClientSessionAndroid, String token);
|
| private native void nativeDestroy(long nativeBlimpClientSessionAndroid);
|
| }
|
|
|