OLD | NEW |
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 // TODO(ajwong): This seems like a bad idea to share the exact same object | 5 // TODO(ajwong): This seems like a bad idea to share the exact same object |
6 // with the background page. Why are we doing it like this? | 6 // with the background page. Why are we doing it like this? |
7 var remoting = chrome.extension.getBackgroundPage().remoting; | 7 var remoting = chrome.extension.getBackgroundPage().remoting; |
8 | 8 |
9 XMPP_LOGIN_NAME = 'xmpp_login'; | 9 XMPP_LOGIN_NAME = 'xmpp_login'; |
10 XMPP_TOKEN_NAME = 'xmpp_token'; | 10 XMPP_TOKEN_NAME = 'xmpp_token'; |
(...skipping 245 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
256 var host = JSON.parse(xhr.responseText); | 256 var host = JSON.parse(xhr.responseText); |
257 if (host.data && host.data.jabberId) { | 257 if (host.data && host.data.jabberId) { |
258 remoting.hostjid = host.data.jabberId; | 258 remoting.hostjid = host.data.jabberId; |
259 startSession_(); | 259 startSession_(); |
260 return; | 260 return; |
261 } | 261 } |
262 } | 262 } |
263 showConnectError_(xhr.status, xhr.responseText); | 263 showConnectError_(xhr.status, xhr.responseText); |
264 } | 264 } |
265 | 265 |
| 266 function normalizeAccessCode(accessCode) { |
| 267 // Trim whitespace from beginning and the end. |
| 268 // TODO(sergeyu): Do we need to do any other normalization here? |
| 269 return accessCode.replace(/^\s+|\s+$/, ''); |
| 270 } |
| 271 |
266 function resolveSupportId(support_id) { | 272 function resolveSupportId(support_id) { |
267 var xhr = new XMLHttpRequest(); | 273 var xhr = new XMLHttpRequest(); |
268 xhr.onreadystatechange = function() { | 274 xhr.onreadystatechange = function() { |
269 if (xhr.readyState != 4) { | 275 if (xhr.readyState != 4) { |
270 return; | 276 return; |
271 } | 277 } |
272 parseServerResponse_(xhr); | 278 parseServerResponse_(xhr); |
273 }; | 279 }; |
274 | 280 |
275 xhr.open('GET', | 281 xhr.open('GET', |
276 'https://www.googleapis.com/chromoting/v1/support-hosts/' + | 282 'https://www.googleapis.com/chromoting/v1/support-hosts/' + |
277 encodeURIComponent(support_id), | 283 encodeURIComponent(support_id), |
278 true); | 284 true); |
279 xhr.setRequestHeader('Authorization', | 285 xhr.setRequestHeader('Authorization', |
280 'OAuth ' + remoting.oauth2.getAccessToken()); | 286 'OAuth ' + remoting.oauth2.getAccessToken()); |
281 xhr.send(null); | 287 xhr.send(null); |
282 } | 288 } |
283 | 289 |
284 function tryConnect(form) { | 290 function tryConnect(form) { |
285 remoting.accessCode = form['access_code_entry'].value; | 291 remoting.accessCode = normalizeAccessCode(form['access_code_entry'].value); |
286 // TODO(jamiewalch): Since the mapping from (SupportId, HostSecret) to | 292 // TODO(jamiewalch): Since the mapping from (SupportId, HostSecret) to |
287 // AccessCode is not yet defined, assume it's hyphen-separated for now. | 293 // AccessCode is not yet defined, assume it's hyphen-separated for now. |
288 var parts = remoting.accessCode.split('-'); | 294 var parts = remoting.accessCode.split('-'); |
289 if (parts.length != 2) { | 295 if (parts.length != 2) { |
290 showConnectError_(404); | 296 showConnectError_(404); |
291 } else { | 297 } else { |
292 setClientMode('connecting'); | 298 setClientMode('connecting'); |
293 if (remoting.oauth2.needsNewAccessToken()) { | 299 if (remoting.oauth2.needsNewAccessToken()) { |
294 remoting.oauth2.refreshAccessToken(function() { | 300 remoting.oauth2.refreshAccessToken(function() { |
295 resolveSupportId(parts[0]); | 301 resolveSupportId(parts[0]); |
296 }); | 302 }); |
297 return; | 303 return; |
298 } else { | 304 } else { |
299 resolveSupportId(parts[0]); | 305 resolveSupportId(parts[0]); |
300 } | 306 } |
301 } | 307 } |
302 } | 308 } |
303 | 309 |
304 function cancelConnect() { | 310 function cancelConnect() { |
305 remoting.accessCode = ''; | 311 remoting.accessCode = ''; |
306 setClientMode('unconnected'); | 312 setClientMode('unconnected'); |
307 } | 313 } |
OLD | NEW |