Chromium Code Reviews| 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]); |
| + } |
| } |
| } |