- add sources.
[platform/framework/web/crosswalk.git] / src / remoting / webapp / client_plugin.js
1 // Copyright (c) 2012 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 /** @suppress {duplicate} */
6 var remoting = remoting || {};
7
8 /**
9  * Interface used for ClientPlugin objects.
10  * @interface
11  */
12 remoting.ClientPlugin = function() {
13 };
14
15 /** @type {number} Desktop width */
16 remoting.ClientPlugin.prototype.desktopWidth;
17 /** @type {number} Desktop height */
18 remoting.ClientPlugin.prototype.desktopHeight;
19 /** @type {number} Desktop x DPI */
20 remoting.ClientPlugin.prototype.desktopXDpi;
21 /** @type {number} Desktop y DPI */
22 remoting.ClientPlugin.prototype.desktopYDpi;
23
24 /** @type {function(string): void} Outgoing signaling message callback. */
25 remoting.ClientPlugin.prototype.onOutgoingIqHandler;
26 /** @type {function(string): void} Debug messages callback. */
27 remoting.ClientPlugin.prototype.onDebugMessageHandler;
28 /** @type {function(number, number): void} State change callback. */
29 remoting.ClientPlugin.prototype.onConnectionStatusUpdateHandler;
30 /** @type {function(boolean): void} Connection ready state callback. */
31 remoting.ClientPlugin.prototype.onConnectionReadyHandler;
32 /** @type {function(): void} Desktop size change callback. */
33 remoting.ClientPlugin.prototype.onDesktopSizeUpdateHandler;
34 /** @type {function(!Array.<string>): void} Capabilities negotiated callback. */
35 remoting.ClientPlugin.prototype.onSetCapabilitiesHandler;
36 /** @type {function(boolean): void} Request a PIN from the user. */
37 remoting.ClientPlugin.prototype.fetchPinHandler;
38
39 /**
40  * Initializes the plugin asynchronously and calls specified function
41  * when done.
42  *
43  * @param {function(boolean): void} onDone Function to be called when
44  * the plugin is initialized. Parameter is set to true when the plugin
45  * is loaded successfully.
46  */
47 remoting.ClientPlugin.prototype.initialize = function(onDone) {};
48
49 /**
50  * @return {boolean} True if the plugin and web-app versions are compatible.
51  */
52 remoting.ClientPlugin.prototype.isSupportedVersion = function() {};
53
54 /**
55  * Set of features for which hasFeature() can be used to test.
56  *
57  * @enum {string}
58  */
59 remoting.ClientPlugin.Feature = {
60   INJECT_KEY_EVENT: 'injectKeyEvent',
61   NOTIFY_CLIENT_RESOLUTION: 'notifyClientResolution',
62   ASYNC_PIN: 'asyncPin',
63   PAUSE_VIDEO: 'pauseVideo',
64   PAUSE_AUDIO: 'pauseAudio',
65   REMAP_KEY: 'remapKey',
66   SEND_CLIPBOARD_ITEM: 'sendClipboardItem',
67   THIRD_PARTY_AUTH: 'thirdPartyAuth',
68   TRAP_KEY: 'trapKey',
69   PINLESS_AUTH: 'pinlessAuth',
70   EXTENSION_MESSAGE: 'extensionMessage'
71 };
72
73 /**
74  * @param {remoting.ClientPlugin.Feature} feature The feature to test for.
75  * @return {boolean} True if the plugin supports the named feature.
76  */
77 remoting.ClientPlugin.prototype.hasFeature = function(feature) {};
78
79 /**
80  * @return {HTMLEmbedElement} HTML element that corresponds to the plugin.
81  */
82 remoting.ClientPlugin.prototype.element = function() {};
83
84 /**
85  * Deletes the plugin.
86  */
87 remoting.ClientPlugin.prototype.cleanup = function() {};
88
89 /**
90  * Must be called for each incoming stanza received from the host.
91  * @param {string} iq Incoming IQ stanza.
92  */
93 remoting.ClientPlugin.prototype.onIncomingIq = function(iq) {};
94
95 /**
96  * @param {string} hostJid The jid of the host to connect to.
97  * @param {string} hostPublicKey The base64 encoded version of the host's
98  *     public key.
99  * @param {string} localJid Local jid.
100  * @param {string} sharedSecret The access code for IT2Me or the PIN
101  *     for Me2Me.
102  * @param {string} authenticationMethods Comma-separated list of
103  *     authentication methods the client should attempt to use.
104  * @param {string} authenticationTag A host-specific tag to mix into
105  *     authentication hashes.
106  * @param {string} clientPairingId For paired Me2Me connections, the
107  *     pairing id for this client, as issued by the host.
108  * @param {string} clientPairedSecret For paired Me2Me connections, the
109  *     paired secret for this client, as issued by the host.
110  */
111 remoting.ClientPlugin.prototype.connect = function(
112     hostJid, hostPublicKey, localJid, sharedSecret,
113     authenticationMethods, authenticationTag,
114     clientPairingId, clientPairedSecret) {};
115
116 /**
117  * Release all currently pressed keys.
118  */
119 remoting.ClientPlugin.prototype.releaseAllKeys = function() {};
120
121 /**
122  * Send a key event to the host.
123  *
124  * @param {number} usbKeycode The USB-style code of the key to inject.
125  * @param {boolean} pressed True to inject a key press, False for a release.
126  */
127 remoting.ClientPlugin.prototype.injectKeyEvent =
128     function(usbKeycode, pressed) {};
129
130 /**
131  * Remap one USB keycode to another in all subsequent key events.
132  *
133  * @param {number} fromKeycode The USB-style code of the key to remap.
134  * @param {number} toKeycode The USB-style code to remap the key to.
135  */
136 remoting.ClientPlugin.prototype.remapKey =
137     function(fromKeycode, toKeycode) {};
138
139 /**
140  * Enable/disable redirection of the specified key to the web-app.
141  *
142  * @param {number} keycode The USB-style code of the key.
143  * @param {Boolean} trap True to enable trapping, False to disable.
144  */
145 remoting.ClientPlugin.prototype.trapKey = function(keycode, trap) {};
146
147 /**
148  * Returns an associative array with a set of stats for this connection.
149  *
150  * @return {remoting.ClientSession.PerfStats} The connection statistics.
151  */
152 remoting.ClientPlugin.prototype.getPerfStats = function() {};
153
154 /**
155  * Sends a clipboard item to the host.
156  *
157  * @param {string} mimeType The MIME type of the clipboard item.
158  * @param {string} item The clipboard item.
159  */
160 remoting.ClientPlugin.prototype.sendClipboardItem = function(mimeType, item) {};
161
162 /**
163  * Notifies the host that the client has the specified size and pixel density.
164  *
165  * @param {number} width The available client width in DIPs.
166  * @param {number} height The available client height in DIPs.
167  * @param {number} device_scale The number of device pixels per DIP.
168  */
169 remoting.ClientPlugin.prototype.notifyClientResolution =
170     function(width, height, device_scale) {};
171
172 /**
173  * Requests that the host pause or resume sending video updates.
174  *
175  * @param {boolean} pause True to suspend video updates, false otherwise.
176  */
177 remoting.ClientPlugin.prototype.pauseVideo =
178     function(pause) {};
179
180 /**
181  * Requests that the host pause or resume sending audio updates.
182  *
183  * @param {boolean} pause True to suspend audio updates, false otherwise.
184  */
185 remoting.ClientPlugin.prototype.pauseAudio =
186     function(pause) {};
187
188 /**
189  * Gives the client authenticator the PIN.
190  *
191  * @param {string} pin The PIN.
192  */
193 remoting.ClientPlugin.prototype.onPinFetched = function(pin) {};
194
195 /**
196  * Tells the plugin to ask for the PIN asynchronously.
197  */
198 remoting.ClientPlugin.prototype.useAsyncPinDialog = function() {};
199
200 /**
201  * Sets the third party authentication token and shared secret.
202  *
203  * @param {string} token The token received from the token URL.
204  * @param {string} sharedSecret Shared secret received from the token URL.
205  */
206 remoting.ClientPlugin.prototype.onThirdPartyTokenFetched =
207     function(token, sharedSecret) {};
208
209 /**
210  * Request pairing with the host for PIN-less authentication.
211  *
212  * @param {string} clientName The human-readable name of the client.
213  * @param {function(string, string):void} onDone, Callback to receive the
214  *     client id and shared secret when they are available.
215  */
216 remoting.ClientPlugin.prototype.requestPairing = function(
217     clientName, onDone) {};