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..f2234ee3994ad9b7304fb23590d0c566c142d279 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 |
+ * org.chromium.blimp.AssignmentSourceResult.java. |
nyquist
2016/02/18 01:58:40
Optional nit: Even though it's generated, if peopl
David Trainor- moved to gerrit
2016/02/18 16:01:54
Done.
|
+ * @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 login token for the account requesting access. |
nyquist
2016/02/18 01:58:40
s/login/OAuth2 access/
David Trainor- moved to gerrit
2016/02/18 16:01:54
Done.
|
*/ |
- 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) { |
nyquist
2016/02/18 01:58:40
Nit: if (mCallback == null) return;
David Trainor- moved to gerrit
2016/02/18 16:01:54
Done.
|
+ 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); |
} |