Index: remoting/webapp/me2mom/remoting.js |
diff --git a/remoting/webapp/me2mom/remoting.js b/remoting/webapp/me2mom/remoting.js |
index 2f364c11514bc9cdf509a4438a854a45bdf54dd3..79be533a54365dc5e82aec5905405195eda0a064 100644 |
--- a/remoting/webapp/me2mom/remoting.js |
+++ b/remoting/webapp/me2mom/remoting.js |
@@ -2,20 +2,27 @@ |
// Use of this source code is governed by a BSD-style license that can be |
// found in the LICENSE file. |
+// TODO(ajwong): This seems like a bad idea. Why are we doing it like this? |
var remoting = chrome.extension.getBackgroundPage().remoting; |
+ |
XMPP_LOGIN_NAME = 'xmpp_login'; |
XMPP_TOKEN_NAME = 'xmpp_token'; |
-OAUTH2_TOKEN_NAME = 'oauth2_token'; |
HOST_PLUGIN_ID = 'host_plugin_id'; |
function updateAuthStatus_() { |
- var oauth1_status = document.getElementById('oauth1_status'); |
- if (remoting.oauth.hasToken()) { |
- oauth1_status.innerText = 'OK'; |
- oauth1_status.style.color = 'green'; |
+ var oauth2_status = document.getElementById('oauth2_status'); |
+ if (remoting.oauth2.isAuthenticated()) { |
+ oauth2_status.innerText = 'OK'; |
+ oauth2_status.style.color = 'green'; |
+ document.getElementById('oauth2_code_button').style.display = 'none'; |
+ document.getElementById('oauth2_clear_button').style.display = 'inline'; |
+ document.getElementById('oauth2_form').style.display = 'none'; |
} else { |
- oauth1_status.innerText = 'Unauthorized'; |
- oauth1_status.style.color = 'red'; |
+ oauth2_status.innerText = 'Unauthorized'; |
+ oauth2_status.style.color = 'red'; |
+ document.getElementById('oauth2_code_button').style.display = 'inline'; |
+ document.getElementById('oauth2_clear_button').style.display = 'none'; |
+ document.getElementById('oauth2_form').style.display = 'inline'; |
} |
var xmpp_status = document.getElementById('xmpp_status'); |
if (remoting.getItem(XMPP_TOKEN_NAME) && remoting.getItem(XMPP_LOGIN_NAME)) { |
@@ -78,7 +85,7 @@ function initBackgroundFuncs_() { |
remoting.getItem = chrome.extension.getBackgroundPage().getItem; |
remoting.setItem = chrome.extension.getBackgroundPage().setItem; |
remoting.removeItem = chrome.extension.getBackgroundPage().removeItem; |
- remoting.oauth = chrome.extension.getBackgroundPage().oauth; |
+ remoting.oauth2 = chrome.extension.getBackgroundPage().oauth2; |
} |
function authorizeXmpp(form) { |
@@ -131,12 +138,12 @@ function authorizeXmpp(form) { |
xhr.send(post_data); |
} |
-function authorizeOAuth1() { |
- remoting.oauth.authorize(updateAuthStatus_); |
+function authorizeOAuth2(code) { |
+ remoting.oauth2.exchangeCodeForToken(code, updateAuthStatus_); |
} |
-function clearOAuth1() { |
- remoting.oauth.clearTokens(); |
+function clearOAuth2() { |
+ remoting.oauth2.clear(); |
updateAuthStatus_(); |
} |
@@ -243,7 +250,7 @@ function showConnectError_(responseCode, responseString) { |
setClientMode('connect_failed'); |
} |
-function parseServerResponse_(reply, xhr) { |
+function parseServerResponse_(xhr) { |
if (xhr.status == 200) { |
var host = JSON.parse(xhr.responseText); |
if (host.data && host.data.jabberId) { |
@@ -255,6 +262,24 @@ function parseServerResponse_(reply, xhr) { |
showConnectError_(xhr.status, xhr.responseText); |
} |
+function resolveSupportId(support_id) { |
+ var xhr = new XMLHttpRequest(); |
+ xhr.onreadystatechange = function() { |
+ if (xhr.readyState != 4) { |
+ return; |
+ } |
+ parseServerResponse_(xhr); |
+ }; |
+ |
+ xhr.open('GET', |
+ 'https://www.googleapis.com/chromoting/v1/support-hosts/' + |
+ encodeURIComponent(support_id), |
+ true); |
+ xhr.setRequestHeader('Authorization', |
+ 'OAuth ' + remoting.oauth2.getAccessToken()); |
+ xhr.send(null); |
+} |
+ |
function tryConnect(form) { |
remoting.accessCode = form['access_code_entry'].value; |
// TODO(jamiewalch): Since the mapping from (SupportId, HostSecret) to |
@@ -264,10 +289,14 @@ function tryConnect(form) { |
showConnectError_(404); |
} else { |
setClientMode('connecting'); |
- var urlBase = 'https://www.googleapis.com/chromoting/v1/support-hosts/'; |
- remoting.oauth.sendSignedRequest( |
- urlBase + '' + encodeURIComponent(parts[0]) + '', |
- parseServerResponse_); |
+ if (remoting.oauth2.needsNewAccessToken()) { |
Jamie
2011/05/19 21:01:04
Should needsNewAccessToken take RTT into account,
awong
2011/05/19 21:33:06
I timeshifted it on the setting of hte expiration.
|
+ remoting.oauth2.refreshAccessToken(function() { |
+ resolveSupportId(parts[0]); |
+ }); |
+ return; |
+ } else { |
+ resolveSupportId(parts[0]); |
+ } |
} |
} |