Index: remoting/android/java/src/org/chromium/chromoting/Chromoting.java |
diff --git a/remoting/android/java/src/org/chromium/chromoting/Chromoting.java b/remoting/android/java/src/org/chromium/chromoting/Chromoting.java |
index 29aec73ad2138033e74434c650e7ad4d44400a1f..156e908033971d37048e489dec13a1c4c5e1d213 100644 |
--- a/remoting/android/java/src/org/chromium/chromoting/Chromoting.java |
+++ b/remoting/android/java/src/org/chromium/chromoting/Chromoting.java |
@@ -86,6 +86,9 @@ public class Chromoting extends Activity implements JniInterface.ConnectionListe |
/** Dialog for reporting connection progress. */ |
private ProgressDialog mProgressIndicator; |
+ /** Object for fetching OAuth2 access tokens from third party authorization servers. */ |
+ private ThirdPartyTokenFetcher mTokenFetcher; |
+ |
/** |
* This is set when receiving an authentication error from the HostListLoader. If that occurs, |
* this flag is set and a fresh authentication token is fetched from the AccountsService, and |
@@ -162,6 +165,15 @@ public class Chromoting extends Activity implements JniInterface.ConnectionListe |
JniInterface.loadLibrary(this); |
} |
+ @Override |
+ protected void onNewIntent(Intent intent) { |
+ super.onNewIntent(intent); |
+ if (mTokenFetcher != null) { |
+ if (mTokenFetcher.handleTokenFetched(intent)) { |
+ mTokenFetcher = null; |
+ } |
+ } |
+ } |
/** |
* Called when the activity becomes visible. This happens on initial launch and whenever the |
* user switches to the activity, for example, by using the window-switcher or when coming from |
@@ -446,4 +458,27 @@ public class Chromoting extends Activity implements JniInterface.ConnectionListe |
mProgressIndicator = null; |
} |
} |
+ |
+ public void fetchThirdPartyToken(String tokenUrl, String clientId, String scope) { |
+ assert mTokenFetcher == null; |
+ |
+ ThirdPartyTokenFetcher.Callback callback = new ThirdPartyTokenFetcher.Callback() { |
+ public void onTokenFetched(String code, String accessToken) { |
+ // The native client sends the OAuth authorization code to the host as the token so |
+ // that the host can obtains the shared secret from the third party authorization |
+ // server. |
+ String token = code; |
+ // The native client uses the OAuth access token as the shared secret to |
+ // authenticate itself with the host using spake. |
+ String sharedSecret = accessToken; |
+ |
+ JniInterface.nativeOnThirdPartyTokenFetched(token, sharedSecret); |
+ } |
+ }; |
+ |
+ mTokenFetcher = new ThirdPartyTokenFetcher(this, tokenUrl, clientId, scope, callback); |
+ mTokenFetcher.fetchToken(); |
+ } |
+ |
+ |
} |