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 /** | 6 /** |
7 * @fileoverview | 7 * @fileoverview |
8 * The application side of the application/sandbox WCS interface, used by the | 8 * The application side of the application/sandbox WCS interface, used by the |
9 * application to exchange messages with the sandbox. | 9 * application to exchange messages with the sandbox. |
10 */ | 10 */ |
11 | 11 |
12 'use strict'; | 12 'use strict'; |
13 | 13 |
14 /** @suppress {duplicate} */ | 14 /** @suppress {duplicate} */ |
15 var remoting = remoting || {}; | 15 var remoting = remoting || {}; |
16 | 16 |
17 /** | 17 /** |
18 * @param {Window} sandbox The Javascript Window object representing the | 18 * @param {Window} sandbox The Javascript Window object representing the |
19 * sandboxed WCS driver. | 19 * sandboxed WCS driver. |
20 * @constructor | 20 * @constructor |
21 */ | 21 */ |
22 remoting.WcsSandboxContainer = function(sandbox) { | 22 remoting.WcsSandboxContainer = function(sandbox) { |
23 /** @private */ | 23 /** @private */ |
24 this.sandbox_ = sandbox; | 24 this.sandbox_ = sandbox; |
25 /** @type {?function(string):void} | 25 /** @type {?function(string):void} |
26 * @private */ | 26 * @private */ |
27 this.onConnected_ = null; | 27 this.onConnected_ = null; |
28 /** @type {function(remoting.Error):void} | 28 /** @type {function(!remoting.Error):void} |
29 * @private */ | 29 * @private */ |
30 this.onError_ = function(error) {}; | 30 this.onError_ = function(error) {}; |
31 /** @type {?function(string):void} | 31 /** @type {?function(string):void} |
32 * @private */ | 32 * @private */ |
33 this.onIq_ = null; | 33 this.onIq_ = null; |
34 /** @type {Object<number, XMLHttpRequest>} | 34 /** @type {Object<number, XMLHttpRequest>} |
35 * @private */ | 35 * @private */ |
36 this.pendingXhrs_ = {}; | 36 this.pendingXhrs_ = {}; |
37 /** @private */ | 37 /** @private */ |
38 this.localJid_ = ''; | 38 this.localJid_ = ''; |
39 | 39 |
40 /** @private */ | 40 /** @private */ |
41 this.accessTokenRefreshTimerStarted_ = false; | 41 this.accessTokenRefreshTimerStarted_ = false; |
42 | 42 |
43 window.addEventListener('message', this.onMessage_.bind(this), false); | 43 window.addEventListener('message', this.onMessage_.bind(this), false); |
44 | 44 |
45 if (base.isAppsV2()) { | 45 if (base.isAppsV2()) { |
46 var message = { | 46 var message = { |
47 'command': 'proxyXhrs' | 47 'command': 'proxyXhrs' |
48 }; | 48 }; |
49 this.sandbox_.postMessage(message, '*'); | 49 this.sandbox_.postMessage(message, '*'); |
50 } | 50 } |
51 }; | 51 }; |
52 | 52 |
53 /** | 53 /** |
54 * @param {function(string):void} onConnected Callback to be called when WCS is | 54 * @param {function(string):void} onConnected Callback to be called when WCS is |
55 * connected. May be called synchronously if WCS is already connected. | 55 * connected. May be called synchronously if WCS is already connected. |
56 * @param {function(remoting.Error):void} onError called in case of an error. | 56 * @param {function(!remoting.Error):void} onError called in case of an error. |
57 * @return {void} Nothing. | 57 * @return {void} Nothing. |
58 */ | 58 */ |
59 remoting.WcsSandboxContainer.prototype.connect = function( | 59 remoting.WcsSandboxContainer.prototype.connect = function( |
60 onConnected, onError) { | 60 onConnected, onError) { |
61 this.onError_ = onError; | 61 this.onError_ = onError; |
62 this.ensureAccessTokenRefreshTimer_(); | 62 this.ensureAccessTokenRefreshTimer_(); |
63 if (this.localJid_) { | 63 if (this.localJid_) { |
64 onConnected(this.localJid_); | 64 onConnected(this.localJid_); |
65 } else { | 65 } else { |
66 this.onConnected_ = onConnected; | 66 this.onConnected_ = onConnected; |
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
144 } | 144 } |
145 this.localJid_ = localJid; | 145 this.localJid_ = localJid; |
146 if (this.onConnected_) { | 146 if (this.onConnected_) { |
147 var callback = this.onConnected_; | 147 var callback = this.onConnected_; |
148 this.onConnected_ = null; | 148 this.onConnected_ = null; |
149 callback(localJid); | 149 callback(localJid); |
150 } | 150 } |
151 break; | 151 break; |
152 | 152 |
153 case 'onError': | 153 case 'onError': |
154 /** @type {remoting.Error} */ | 154 /** @type {!remoting.Error} */ |
155 var error = event.data['error']; | 155 var error = event.data['error']; |
156 if (error === undefined) { | 156 if (error === undefined) { |
157 console.error('onError: missing error code'); | 157 console.error('onError: missing error code'); |
158 break; | 158 break; |
159 } | 159 } |
160 this.onError_(error); | 160 this.onError_(error); |
161 break; | 161 break; |
162 | 162 |
163 case 'onIq': | 163 case 'onIq': |
164 /** @type {string} */ | 164 /** @type {string} */ |
(...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
281 'xhr': sanitizeXhr_(xhr) | 281 'xhr': sanitizeXhr_(xhr) |
282 }; | 282 }; |
283 this.sandbox_.postMessage(message, '*'); | 283 this.sandbox_.postMessage(message, '*'); |
284 if (xhr.readyState == 4) { | 284 if (xhr.readyState == 4) { |
285 delete this.pendingXhrs_[id]; | 285 delete this.pendingXhrs_[id]; |
286 } | 286 } |
287 } | 287 } |
288 | 288 |
289 /** @type {remoting.WcsSandboxContainer} */ | 289 /** @type {remoting.WcsSandboxContainer} */ |
290 remoting.wcsSandbox = null; | 290 remoting.wcsSandbox = null; |
OLD | NEW |