| OLD | NEW |
| 1 /* Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 /* Copyright (c) 2011 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 * A class that loads a WCS IQ client and constructs remoting.wcs as a | 8 * A class that loads a WCS IQ client and constructs remoting.wcs as a |
| 9 * wrapper for it. | 9 * wrapper for it. |
| 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 (function() { | 17 /** @type {remoting.WcsLoader} */ |
| 18 remoting.wcsLoader = null; |
| 19 |
| 18 /** | 20 /** |
| 19 * @constructor | 21 * @constructor |
| 20 */ | 22 */ |
| 21 remoting.WcsLoader = function() { | 23 remoting.WcsLoader = function() { |
| 22 /** | 24 /** |
| 23 * An OAuth2 access token. | 25 * An OAuth2 access token. |
| 24 * @type {string} | 26 * @type {string} |
| 25 * @private | 27 * @private |
| 26 */ | 28 */ |
| 27 this.token_ = ''; | 29 this.token_ = ''; |
| 28 | 30 |
| 29 /** | 31 /** |
| 30 * A callback that gets an updated access token asynchronously. | 32 * A callback that gets an updated access token asynchronously. |
| 31 * @type {function(function(string): void): void} | 33 * @param {function(string): void} setToken The function to call when the |
| 34 * token is available. |
| 32 * @private | 35 * @private |
| 33 */ | 36 */ |
| 34 this.refreshToken_ = function(setToken) {}; | 37 this.refreshToken_ = function(setToken) {}; |
| 35 | 38 |
| 36 /** | 39 /** |
| 37 * The function called when WCS is ready. | 40 * The function called when WCS is ready. |
| 38 * @type {function(): void} | |
| 39 * @private | 41 * @private |
| 40 */ | 42 */ |
| 41 this.onReady_ = function() {}; | 43 this.onReady_ = function() {}; |
| 42 | 44 |
| 43 /** | 45 /** |
| 44 * @enum {string} | 46 * @enum {string} |
| 45 * @private | 47 * @private |
| 46 */ | 48 */ |
| 47 this.LoadState_ = { | 49 this.LoadState_ = { |
| 48 NOT_STARTED: 'NOT_STARTED', | 50 NOT_STARTED: 'NOT_STARTED', |
| 49 STARTED: 'STARTED', | 51 STARTED: 'STARTED', |
| 50 READY: 'READY' | 52 READY: 'READY' |
| 51 }; | 53 }; |
| 52 | 54 |
| 53 /** | 55 /** |
| 54 * The state of WCS loading. | 56 * The state of WCS loading. |
| 55 * @type {string} | 57 * @type {string} |
| 56 * @private | 58 * @private |
| 57 */ | 59 */ |
| 58 this.loadState_ = this.LoadState_.NOT_STARTED; | 60 this.loadState_ = this.LoadState_.NOT_STARTED; |
| 59 | 61 |
| 60 /** | 62 /** |
| 61 * The WCS client that will be downloaded. | 63 * The WCS client that will be downloaded. |
| 62 * @type {Object} | 64 * @type {remoting.WcsIqClient} |
| 63 */ | 65 */ |
| 64 this.wcsIqClient = null; | 66 this.wcsIqClient = null; |
| 65 }; | 67 }; |
| 66 | 68 |
| 67 /** | 69 /** |
| 68 * The URL of the GTalk gadget. | 70 * The URL of the GTalk gadget. |
| 69 * @type {string} | 71 * @type {string} |
| 70 * @private | 72 * @private |
| 71 */ | 73 */ |
| 72 remoting.WcsLoader.prototype.TALK_GADGET_URL_ = | 74 remoting.WcsLoader.prototype.TALK_GADGET_URL_ = |
| (...skipping 23 matching lines...) Expand all Loading... |
| 96 this.onReady_(); | 98 this.onReady_(); |
| 97 return; | 99 return; |
| 98 } | 100 } |
| 99 if (this.loadState_ == this.LoadState_.STARTED) { | 101 if (this.loadState_ == this.LoadState_.STARTED) { |
| 100 return; | 102 return; |
| 101 } | 103 } |
| 102 this.loadState_ = this.LoadState_.STARTED; | 104 this.loadState_ = this.LoadState_.STARTED; |
| 103 var node = document.createElement('script'); | 105 var node = document.createElement('script'); |
| 104 node.src = this.TALK_GADGET_URL_ + 'iq?access_token=' + this.token_; | 106 node.src = this.TALK_GADGET_URL_ + 'iq?access_token=' + this.token_; |
| 105 node.type = 'text/javascript'; | 107 node.type = 'text/javascript'; |
| 108 /** @type {remoting.WcsLoader} */ |
| 106 var that = this; | 109 var that = this; |
| 107 node.onload = function() { that.constructWcs_(); }; | 110 node.onload = function() { that.constructWcs_(); }; |
| 108 document.body.insertBefore(node, document.body.firstChild); | 111 document.body.insertBefore(node, document.body.firstChild); |
| 109 return; | 112 return; |
| 110 }; | 113 }; |
| 111 | 114 |
| 112 /** | 115 /** |
| 113 * Constructs the remoting.wcs object. | 116 * Constructs the remoting.wcs object. |
| 114 * | 117 * |
| 115 * @return {void} Nothing. | 118 * @return {void} Nothing. |
| 116 * @private | 119 * @private |
| 117 */ | 120 */ |
| 118 remoting.WcsLoader.prototype.constructWcs_ = function() { | 121 remoting.WcsLoader.prototype.constructWcs_ = function() { |
| 122 /** @type {remoting.WcsLoader} */ |
| 119 var that = this; | 123 var that = this; |
| 124 /** @param {function(string): void} setToken The function to call when the |
| 125 token is available. */ |
| 126 var refreshToken = function(setToken) { that.refreshToken_(setToken); }; |
| 120 remoting.wcs = new remoting.Wcs( | 127 remoting.wcs = new remoting.Wcs( |
| 121 remoting.wcsLoader.wcsIqClient, | 128 remoting.wcsLoader.wcsIqClient, |
| 122 this.token_, | 129 this.token_, |
| 123 function() { that.onWcsReady_(); }, | 130 function() { that.onWcsReady_(); }, |
| 124 function(setToken) { that.refreshToken_(setToken); }); | 131 refreshToken); |
| 125 }; | 132 }; |
| 126 | 133 |
| 127 /** | 134 /** |
| 128 * Notifies this object that WCS is ready. | 135 * Notifies this object that WCS is ready. |
| 129 * | 136 * |
| 130 * @return {void} Nothing. | 137 * @return {void} Nothing. |
| 131 * @private | 138 * @private |
| 132 */ | 139 */ |
| 133 remoting.WcsLoader.prototype.onWcsReady_ = function() { | 140 remoting.WcsLoader.prototype.onWcsReady_ = function() { |
| 134 this.loadState_ = this.LoadState_.READY; | 141 this.loadState_ = this.LoadState_.READY; |
| 135 this.onReady_(); | 142 this.onReady_(); |
| 136 this.onReady_ = function() {}; | 143 this.onReady_ = function() {}; |
| 137 }; | 144 }; |
| 138 | |
| 139 }()); | |
| OLD | NEW |