OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 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 | 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 * @fileoverview | 6 * @fileoverview |
7 * A module that contains basic utility components and methods for the | 7 * A module that contains basic utility components and methods for the |
8 * chromoting project | 8 * chromoting project |
9 * | 9 * |
10 */ | 10 */ |
(...skipping 219 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
230 * Sample Usage: | 230 * Sample Usage: |
231 * function myAsyncAPI() { | 231 * function myAsyncAPI() { |
232 * var deferred = new base.Deferred(); | 232 * var deferred = new base.Deferred(); |
233 * window.setTimeout(function() { | 233 * window.setTimeout(function() { |
234 * deferred.resolve(); | 234 * deferred.resolve(); |
235 * }, 100); | 235 * }, 100); |
236 * return deferred.promise(); | 236 * return deferred.promise(); |
237 * }; | 237 * }; |
238 * | 238 * |
239 * @constructor | 239 * @constructor |
| 240 * @template T |
240 */ | 241 */ |
241 base.Deferred = function() { | 242 base.Deferred = function() { |
242 /** | 243 /** |
243 * @type {?function(?):void} | 244 * @private {?function(?):void} |
244 * @private | |
245 */ | 245 */ |
246 this.resolve_ = null; | 246 this.resolve_ = null; |
247 | 247 |
248 /** | 248 /** |
249 * @type {?function(?):void} | 249 * @private {?function(?):void} |
250 * @private | |
251 */ | 250 */ |
252 this.reject_ = null; | 251 this.reject_ = null; |
253 | 252 |
254 /** | 253 /** |
255 * @this {base.Deferred} | 254 * @this {base.Deferred} |
256 * @param {function(?):void} resolve | 255 * @param {function(?):void} resolve |
257 * @param {function(*):void} reject | 256 * @param {function(*):void} reject |
258 */ | 257 */ |
259 var initPromise = function(resolve, reject) { | 258 var initPromise = function(resolve, reject) { |
260 this.resolve_ = resolve; | 259 this.resolve_ = resolve; |
261 this.reject_ = reject; | 260 this.reject_ = reject; |
262 }; | 261 }; |
263 | 262 |
264 /** | 263 /** |
265 * @type {Promise} | 264 * @private {!Promise<T>} |
266 * @private | |
267 */ | 265 */ |
268 this.promise_ = new Promise(initPromise.bind(this)); | 266 this.promise_ = new Promise(initPromise.bind(this)); |
269 }; | 267 }; |
270 | 268 |
271 /** @param {*} reason */ | 269 /** @param {*} reason */ |
272 base.Deferred.prototype.reject = function(reason) { | 270 base.Deferred.prototype.reject = function(reason) { |
273 this.reject_(reason); | 271 this.reject_(reason); |
274 }; | 272 }; |
275 | 273 |
276 /** @param {*=} opt_value */ | 274 /** @param {*=} opt_value */ |
277 base.Deferred.prototype.resolve = function(opt_value) { | 275 base.Deferred.prototype.resolve = function(opt_value) { |
278 this.resolve_(opt_value); | 276 this.resolve_(opt_value); |
279 }; | 277 }; |
280 | 278 |
281 /** @return {Promise} */ | 279 /** @return {!Promise<T>} */ |
282 base.Deferred.prototype.promise = function() { | 280 base.Deferred.prototype.promise = function() { |
283 return this.promise_; | 281 return this.promise_; |
284 }; | 282 }; |
285 | 283 |
286 base.Promise = function() {}; | 284 base.Promise = function() {}; |
287 | 285 |
288 /** | 286 /** |
289 * @param {number} delay | 287 * @param {number} delay |
290 * @return {Promise} a Promise that will be fulfilled after |delay| ms. | 288 * @return {Promise} a Promise that will be fulfilled after |delay| ms. |
291 */ | 289 */ |
(...skipping 329 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
621 */ | 619 */ |
622 base.resizeWindowToContent = function() { | 620 base.resizeWindowToContent = function() { |
623 var appWindow = chrome.app.window.current(); | 621 var appWindow = chrome.app.window.current(); |
624 var outerBounds = appWindow.outerBounds; | 622 var outerBounds = appWindow.outerBounds; |
625 var borderY = outerBounds.height - appWindow.innerBounds.height; | 623 var borderY = outerBounds.height - appWindow.innerBounds.height; |
626 appWindow.resizeTo(outerBounds.width, document.body.clientHeight + borderY); | 624 appWindow.resizeTo(outerBounds.width, document.body.clientHeight + borderY); |
627 // Sometimes, resizing the window causes its position to be reset to (0, 0), | 625 // Sometimes, resizing the window causes its position to be reset to (0, 0), |
628 // so restore it explicitly. | 626 // so restore it explicitly. |
629 appWindow.moveTo(outerBounds.left, outerBounds.top); | 627 appWindow.moveTo(outerBounds.left, outerBounds.top); |
630 }; | 628 }; |
OLD | NEW |