| Index: blimp/client/app/android/java/src/org/chromium/blimp/BlimpRendererActivity.java
|
| diff --git a/blimp/client/app/android/java/src/org/chromium/blimp/BlimpRendererActivity.java b/blimp/client/app/android/java/src/org/chromium/blimp/BlimpRendererActivity.java
|
| index 23d52e68d5f9244885f1ffa0af225003005954c9..35f8e190693d51dd59cfdb6b2808b7c7c33ecd3b 100644
|
| --- a/blimp/client/app/android/java/src/org/chromium/blimp/BlimpRendererActivity.java
|
| +++ b/blimp/client/app/android/java/src/org/chromium/blimp/BlimpRendererActivity.java
|
| @@ -22,12 +22,16 @@ import org.chromium.ui.widget.Toast;
|
| * The {@link Activity} for rendering the main Blimp client. This loads the Blimp rendering stack
|
| * and displays it.
|
| */
|
| -public class BlimpRendererActivity extends Activity implements BlimpLibraryLoader.Callback,
|
| - TokenSource.Callback {
|
| -
|
| +public class BlimpRendererActivity extends Activity
|
| + implements BlimpLibraryLoader.Callback, TokenSource.Callback, BlimpClientSession.Callback {
|
| private static final int ACCOUNT_CHOOSER_INTENT_REQUEST_CODE = 100;
|
| private static final String TAG = "Blimp";
|
| +
|
| + /** Provides user authentication tokens that can be used to query for engine assignments. This
|
| + * can potentially query GoogleAuthUtil for an OAuth2 authentication token with userinfo.email
|
| + * privileges for a chosen Android account. */
|
| private TokenSource mTokenSource;
|
| +
|
| private BlimpView mBlimpView;
|
| private Toolbar mToolbar;
|
| private BlimpClientSession mBlimpClientSession;
|
| @@ -37,6 +41,12 @@ public class BlimpRendererActivity extends Activity implements BlimpLibraryLoade
|
| protected void onCreate(Bundle savedInstanceState) {
|
| super.onCreate(savedInstanceState);
|
|
|
| + // Build a TokenSource that will internally retry accessing the underlying TokenSourceImpl.
|
| + // This will exponentially backoff while it tries to get the access token. See
|
| + // {@link RetryingTokenSource} for more information. The underlying
|
| + // TokenSourceImpl will attempt to query GoogleAuthUtil, but might fail if there is no
|
| + // account selected, in which case it will ask this Activity to show an account chooser and
|
| + // notify it of the selection result.
|
| mTokenSource = new RetryingTokenSource(new TokenSourceImpl(this));
|
| mTokenSource.setCallback(this);
|
| mTokenSource.getToken();
|
| @@ -115,8 +125,7 @@ public class BlimpRendererActivity extends Activity implements BlimpLibraryLoade
|
|
|
| setContentView(R.layout.blimp_main);
|
|
|
| - mBlimpClientSession = new BlimpClientSession();
|
| - mBlimpClientSession.connect();
|
| + mBlimpClientSession = new BlimpClientSession(this);
|
|
|
| mBlimpView = (BlimpView) findViewById(R.id.renderer);
|
| mBlimpView.initializeRenderer(mBlimpClientSession);
|
| @@ -131,8 +140,7 @@ public class BlimpRendererActivity extends Activity implements BlimpLibraryLoade
|
| // TokenSource.Callback implementation.
|
| @Override
|
| public void onTokenReceived(String token) {
|
| - // TODO(dtrainor): Do something with the token and the assigner!
|
| - Toast.makeText(this, R.string.signin_get_token_succeeded, Toast.LENGTH_SHORT).show();
|
| + if (mBlimpClientSession != null) mBlimpClientSession.connect(token);
|
| }
|
|
|
| @Override
|
| @@ -140,11 +148,16 @@ public class BlimpRendererActivity extends Activity implements BlimpLibraryLoade
|
| // Ignore isTransient here because we're relying on the auto-retry TokenSource.
|
| // TODO(dtrainor): Show a better error dialog/message.
|
| Toast.makeText(this, R.string.signin_get_token_failed, Toast.LENGTH_LONG).show();
|
| - finish();
|
| }
|
|
|
| @Override
|
| public void onNeedsAccountToBeSelected(Intent suggestedIntent) {
|
| startActivityForResult(suggestedIntent, ACCOUNT_CHOOSER_INTENT_REQUEST_CODE);
|
| }
|
| +
|
| + // BlimpClientSession.Callback implementation.
|
| + @Override
|
| + public void onAssignmentReceived(int result, int suggestedMessageResourceId) {
|
| + Toast.makeText(this, suggestedMessageResourceId, Toast.LENGTH_LONG).show();
|
| + }
|
| }
|
|
|