Upstream version 11.39.250.0
[platform/framework/web/crosswalk.git] / src / remoting / webapp / signal_strategy.js
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  *    * -> CLOSED (dispose() called).
26  */
27 remoting.SignalStrategy.State = {
28   NOT_CONNECTED: 0,
29   CONNECTING: 1,
30   HANDSHAKE: 2,
31   CONNECTED: 3,
32   FAILED: 4,
33   CLOSED: 5
34 };
35
36 remoting.SignalStrategy.prototype.dispose = function() {};
37
38 /**
39  * @param {?function(Element):void} onIncomingStanzaCallback Callback to call on
40  *     incoming messages.
41  */
42 remoting.SignalStrategy.prototype.setIncomingStanzaCallback =
43     function(onIncomingStanzaCallback) {};
44
45 /**
46  * @param {string} server
47  * @param {string} username
48  * @param {string} authToken
49  */
50 remoting.SignalStrategy.prototype.connect =
51     function(server, username, authToken) {
52 };
53
54 /**
55  * Sends a message. Can be called only in CONNECTED state.
56  * @param {string} message
57  */
58 remoting.SignalStrategy.prototype.sendMessage = function(message) {};
59
60 /** @return {remoting.SignalStrategy.State} Current state */
61 remoting.SignalStrategy.prototype.getState = function() {};
62
63 /** @return {remoting.Error} Error when in FAILED state. */
64 remoting.SignalStrategy.prototype.getError = function() {};
65
66 /** @return {string} Current JID when in CONNECTED state. */
67 remoting.SignalStrategy.prototype.getJid = function() {};
68
69 /**
70  * Creates the appropriate signal strategy for the current environment.
71  * @param {function(remoting.SignalStrategy.State): void} onStateChangedCallback
72  * @return {remoting.SignalStrategy} New signal strategy object.
73  */
74 remoting.SignalStrategy.create = function(onStateChangedCallback) {
75   // Only use XMPP when TCP API is available and TLS support is enabled. That's
76   // not the case for V1 app (socket API is available only to platform apps)
77   // and for Chrome releases before 38.
78   if (chrome.socket && chrome.socket.secure) {
79     return new remoting.XmppConnection(onStateChangedCallback);
80   } else {
81     return new remoting.WcsAdapter(onStateChangedCallback);
82   }
83 };