| OLD | NEW |
| (Empty) |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | |
| 2 // Use of this source code is governed by a BSD-style license that can be | |
| 3 // found in the LICENSE file. | |
| 4 | |
| 5 'use strict'; | |
| 6 | |
| 7 /** @suppress {duplicate} */ | |
| 8 var remoting = remoting || {}; | |
| 9 | |
| 10 /** | |
| 11 * Abstract interface for various signaling mechanisms. | |
| 12 * | |
| 13 * @interface | |
| 14 * @extends {base.Disposable} | |
| 15 */ | |
| 16 remoting.SignalStrategy = function() {}; | |
| 17 | |
| 18 /** | |
| 19 * @enum {number} SignalStrategy states. Possible state transitions: | |
| 20 * NOT_CONNECTED -> CONNECTING (connect() called). | |
| 21 * CONNECTING -> HANDSHAKE (connected successfully). | |
| 22 * HANDSHAKE -> CONNECTED (authenticated successfully). | |
| 23 * CONNECTING -> FAILED (connection failed). | |
| 24 * HANDSHAKE -> FAILED (authentication failed). | |
| 25 * CONNECTED -> FAILED (connection was terminated). | |
| 26 * * -> CLOSED (dispose() called). | |
| 27 * | |
| 28 * Do not re-order these values without updating fallback_signal_strategy.js. | |
| 29 */ | |
| 30 remoting.SignalStrategy.State = { | |
| 31 NOT_CONNECTED: 0, | |
| 32 CONNECTING: 1, | |
| 33 HANDSHAKE: 2, | |
| 34 CONNECTED: 3, | |
| 35 FAILED: 4, | |
| 36 CLOSED: 5 | |
| 37 }; | |
| 38 | |
| 39 /** | |
| 40 * @enum {string} SignalStrategy types. Do not add to these values without | |
| 41 * updating the corresponding enum in chromoting_extensions.proto. | |
| 42 */ | |
| 43 remoting.SignalStrategy.Type = { | |
| 44 XMPP: 'xmpp', | |
| 45 WCS: 'wcs' | |
| 46 }; | |
| 47 | |
| 48 remoting.SignalStrategy.prototype.dispose = function() {}; | |
| 49 | |
| 50 /** | |
| 51 * @param {function(remoting.SignalStrategy.State):void} onStateChangedCallback | |
| 52 * Callback to call on state change. | |
| 53 */ | |
| 54 remoting.SignalStrategy.prototype.setStateChangedCallback = | |
| 55 function(onStateChangedCallback) {}; | |
| 56 | |
| 57 /** | |
| 58 * @param {?function(Element):void} onIncomingStanzaCallback Callback to call on | |
| 59 * incoming messages. | |
| 60 */ | |
| 61 remoting.SignalStrategy.prototype.setIncomingStanzaCallback = | |
| 62 function(onIncomingStanzaCallback) {}; | |
| 63 | |
| 64 /** | |
| 65 * @param {string} server | |
| 66 * @param {string} username | |
| 67 * @param {string} authToken | |
| 68 */ | |
| 69 remoting.SignalStrategy.prototype.connect = | |
| 70 function(server, username, authToken) { | |
| 71 }; | |
| 72 | |
| 73 /** | |
| 74 * Sends a message. Can be called only in CONNECTED state. | |
| 75 * @param {string} message | |
| 76 */ | |
| 77 remoting.SignalStrategy.prototype.sendMessage = function(message) {}; | |
| 78 | |
| 79 /** | |
| 80 * Send any messages accumulated during connection set-up. | |
| 81 * | |
| 82 * @param {remoting.LogToServer} logToServer The LogToServer instance for the | |
| 83 * connection. | |
| 84 */ | |
| 85 remoting.SignalStrategy.prototype.sendConnectionSetupResults = | |
| 86 function(logToServer) { | |
| 87 }; | |
| 88 | |
| 89 /** @return {remoting.SignalStrategy.State} Current state */ | |
| 90 remoting.SignalStrategy.prototype.getState = function() {}; | |
| 91 | |
| 92 /** @return {!remoting.Error} Error when in FAILED state. */ | |
| 93 remoting.SignalStrategy.prototype.getError = function() {}; | |
| 94 | |
| 95 /** @return {string} Current JID when in CONNECTED state. */ | |
| 96 remoting.SignalStrategy.prototype.getJid = function() {}; | |
| 97 | |
| 98 /** @return {remoting.SignalStrategy.Type} The signal strategy type. */ | |
| 99 remoting.SignalStrategy.prototype.getType = function() {}; | |
| 100 | |
| 101 /** | |
| 102 * Creates the appropriate signal strategy for the current environment. | |
| 103 * @return {remoting.SignalStrategy} New signal strategy object. | |
| 104 */ | |
| 105 remoting.SignalStrategy.create = function() { | |
| 106 // Only use XMPP when TCP API is available and TLS support is enabled. That's | |
| 107 // not the case for V1 app (socket API is available only to platform apps) | |
| 108 // and for Chrome releases before 38. | |
| 109 if (chrome.socket && chrome.socket.secure) { | |
| 110 /** | |
| 111 * @param {remoting.FallbackSignalStrategy.Progress} progress | |
| 112 */ | |
| 113 var progressCallback = function(progress) { | |
| 114 console.log('FallbackSignalStrategy progress: ' + progress); | |
| 115 }; | |
| 116 | |
| 117 return new remoting.FallbackSignalStrategy( | |
| 118 new remoting.DnsBlackholeChecker(new remoting.XmppConnection()), | |
| 119 new remoting.WcsAdapter()); | |
| 120 } else { | |
| 121 return new remoting.WcsAdapter(); | |
| 122 } | |
| 123 }; | |
| OLD | NEW |