| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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 /** | 5 /** |
| 6 * @fileoverview | 6 * @fileoverview |
| 7 * Connect set-up state machine for Me2Me and IT2Me | 7 * Connect set-up state machine for Me2Me and IT2Me |
| 8 */ | 8 */ |
| 9 | 9 |
| 10 'use strict'; | 10 'use strict'; |
| 11 | 11 |
| 12 /** @suppress {duplicate} */ | 12 /** @suppress {duplicate} */ |
| 13 var remoting = remoting || {}; | 13 var remoting = remoting || {}; |
| 14 | 14 |
| 15 /** | 15 /** |
| 16 * @param {HTMLElement} clientContainer Container element for the client view. | 16 * @param {HTMLElement} clientContainer Container element for the client view. |
| 17 * @param {function(remoting.ClientSession):void} onConnected Callback on | 17 * @param {function(remoting.ClientSession):void} onConnected Callback on |
| 18 * success. | 18 * success. |
| 19 * @param {function(remoting.Error):void} onError Callback on error. | 19 * @param {function(remoting.Error):void} onError Callback on error. |
| 20 * @param {function(string, string):boolean} onExtensionMessage The handler for | 20 * @param {function(string, string):boolean} onExtensionMessage The handler for |
| 21 * protocol extension messages. Returns true if a message is recognized; | 21 * protocol extension messages. Returns true if a message is recognized; |
| 22 * false otherwise. | 22 * false otherwise. |
| 23 * @constructor | 23 * @constructor |
| 24 * @implements {remoting.SessionConnectorInterface} |
| 24 */ | 25 */ |
| 25 remoting.SessionConnector = function(clientContainer, onConnected, onError, | 26 remoting.SessionConnector = function(clientContainer, onConnected, onError, |
| 26 onExtensionMessage) { | 27 onExtensionMessage) { |
| 27 /** | 28 /** |
| 28 * @type {HTMLElement} | 29 * @type {HTMLElement} |
| 29 * @private | 30 * @private |
| 30 */ | 31 */ |
| 31 this.clientContainer_ = clientContainer; | 32 this.clientContainer_ = clientContainer; |
| 32 | 33 |
| 33 /** | 34 /** |
| (...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 82 // Initialize/declare per-connection state. | 83 // Initialize/declare per-connection state. |
| 83 this.reset(); | 84 this.reset(); |
| 84 }; | 85 }; |
| 85 | 86 |
| 86 /** | 87 /** |
| 87 * Reset the per-connection state so that the object can be re-used for a | 88 * Reset the per-connection state so that the object can be re-used for a |
| 88 * second connection. Note the none of the shared WCS state is reset. | 89 * second connection. Note the none of the shared WCS state is reset. |
| 89 */ | 90 */ |
| 90 remoting.SessionConnector.prototype.reset = function() { | 91 remoting.SessionConnector.prototype.reset = function() { |
| 91 /** | 92 /** |
| 92 * Set to true to indicate that the user requested pairing when entering | |
| 93 * their PIN for a Me2Me connection. | |
| 94 * | |
| 95 * @type {boolean} | |
| 96 */ | |
| 97 this.pairingRequested = false; | |
| 98 | |
| 99 /** | |
| 100 * String used to identify the host to which to connect. For IT2Me, this is | 93 * String used to identify the host to which to connect. For IT2Me, this is |
| 101 * the first 7 digits of the access code; for Me2Me it is the host identifier. | 94 * the first 7 digits of the access code; for Me2Me it is the host identifier. |
| 102 * | 95 * |
| 103 * @type {string} | 96 * @type {string} |
| 104 * @private | 97 * @private |
| 105 */ | 98 */ |
| 106 this.hostId_ = ''; | 99 this.hostId_ = ''; |
| 107 | 100 |
| 108 /** | 101 /** |
| 109 * For paired connections, the client id of this device, issued by the host. | 102 * For paired connections, the client id of this device, issued by the host. |
| (...skipping 323 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 433 if (host && host.data && host.data.jabberId && host.data.publicKey) { | 426 if (host && host.data && host.data.jabberId && host.data.publicKey) { |
| 434 this.hostJid_ = host.data.jabberId; | 427 this.hostJid_ = host.data.jabberId; |
| 435 this.hostPublicKey_ = host.data.publicKey; | 428 this.hostPublicKey_ = host.data.publicKey; |
| 436 this.hostDisplayName_ = this.hostJid_.split('/')[0]; | 429 this.hostDisplayName_ = this.hostJid_.split('/')[0]; |
| 437 this.createSession_(); | 430 this.createSession_(); |
| 438 return; | 431 return; |
| 439 } else { | 432 } else { |
| 440 console.error('Invalid "support-hosts" response from server.'); | 433 console.error('Invalid "support-hosts" response from server.'); |
| 441 } | 434 } |
| 442 } else { | 435 } else { |
| 443 this.onError_(this.translateSupportHostsError(xhr.status)); | 436 this.onError_(this.translateSupportHostsError_(xhr.status)); |
| 444 } | 437 } |
| 445 }; | 438 }; |
| 446 | 439 |
| 447 /** | 440 /** |
| 448 * Creates ClientSession object. | 441 * Creates ClientSession object. |
| 449 */ | 442 */ |
| 450 remoting.SessionConnector.prototype.createSession_ = function() { | 443 remoting.SessionConnector.prototype.createSession_ = function() { |
| 451 // In some circumstances, the WCS <iframe> can get reloaded, which results | 444 // In some circumstances, the WCS <iframe> can get reloaded, which results |
| 452 // in a new clientJid and a new callback. In this case, remove the old | 445 // in a new clientJid and a new callback. In this case, remove the old |
| 453 // client plugin before instantiating a new one. | 446 // client plugin before instantiating a new one. |
| (...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 563 } | 556 } |
| 564 this.onError_(remoting.Error.HOST_IS_OFFLINE); | 557 this.onError_(remoting.Error.HOST_IS_OFFLINE); |
| 565 }; | 558 }; |
| 566 | 559 |
| 567 /** | 560 /** |
| 568 * @param {number} error An HTTP error code returned by the support-hosts | 561 * @param {number} error An HTTP error code returned by the support-hosts |
| 569 * endpoint. | 562 * endpoint. |
| 570 * @return {remoting.Error} The equivalent remoting.Error code. | 563 * @return {remoting.Error} The equivalent remoting.Error code. |
| 571 * @private | 564 * @private |
| 572 */ | 565 */ |
| 573 remoting.SessionConnector.prototype.translateSupportHostsError = | 566 remoting.SessionConnector.prototype.translateSupportHostsError_ = |
| 574 function(error) { | 567 function(error) { |
| 575 switch (error) { | 568 switch (error) { |
| 576 case 0: return remoting.Error.NETWORK_FAILURE; | 569 case 0: return remoting.Error.NETWORK_FAILURE; |
| 577 case 404: return remoting.Error.INVALID_ACCESS_CODE; | 570 case 404: return remoting.Error.INVALID_ACCESS_CODE; |
| 578 case 502: // No break | 571 case 502: // No break |
| 579 case 503: return remoting.Error.SERVICE_UNAVAILABLE; | 572 case 503: return remoting.Error.SERVICE_UNAVAILABLE; |
| 580 default: return remoting.Error.UNEXPECTED; | 573 default: return remoting.Error.UNEXPECTED; |
| 581 } | 574 } |
| 582 }; | 575 }; |
| 583 | 576 |
| 584 /** | 577 /** |
| 585 * Normalize the access code entered by the user. | 578 * Normalize the access code entered by the user. |
| 586 * | 579 * |
| 587 * @param {string} accessCode The access code, as entered by the user. | 580 * @param {string} accessCode The access code, as entered by the user. |
| 588 * @return {string} The normalized form of the code (whitespace removed). | 581 * @return {string} The normalized form of the code (whitespace removed). |
| 582 * @private |
| 589 */ | 583 */ |
| 590 remoting.SessionConnector.prototype.normalizeAccessCode_ = | 584 remoting.SessionConnector.prototype.normalizeAccessCode_ = |
| 591 function(accessCode) { | 585 function(accessCode) { |
| 592 // Trim whitespace. | 586 // Trim whitespace. |
| 593 return accessCode.replace(/\s/g, ''); | 587 return accessCode.replace(/\s/g, ''); |
| 594 }; | 588 }; |
| 589 |
| 590 |
| 591 /** |
| 592 * @constructor |
| 593 * @implements {remoting.SessionConnectorFactory} |
| 594 */ |
| 595 remoting.DefaultSessionConnectorFactory = function() { |
| 596 }; |
| 597 |
| 598 /** |
| 599 * @param {HTMLElement} clientContainer Container element for the client view. |
| 600 * @param {function(remoting.ClientSession):void} onConnected Callback on |
| 601 * success. |
| 602 * @param {function(remoting.Error):void} onError Callback on error. |
| 603 * @param {function(string, string):boolean} onExtensionMessage The handler for |
| 604 * protocol extension messages. Returns true if a message is recognized; |
| 605 * false otherwise. |
| 606 */ |
| 607 remoting.DefaultSessionConnectorFactory.prototype.createConnector = |
| 608 function(clientContainer, onConnected, onError, onExtensionMessage) { |
| 609 return new remoting.SessionConnector( |
| 610 clientContainer, onConnected, onError, onExtensionMessage); |
| 611 }; |
| 612 |
| 613 /** |
| 614 * @type {remoting.SessionConnectorFactory} |
| 615 */ |
| 616 remoting.SessionConnector.factory = |
| 617 new remoting.DefaultSessionConnectorFactory(); |
| OLD | NEW |