Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(51)

Side by Side Diff: remoting/webapp/base/js/base.js

Issue 803653004: Update Chromoting to use /third_party/closure_compiler. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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 28 matching lines...) Expand all
39 } 39 }
40 } 40 }
41 }; 41 };
42 42
43 /** 43 /**
44 * @return {string} The callstack of the current method. 44 * @return {string} The callstack of the current method.
45 */ 45 */
46 base.debug.callstack = function() { 46 base.debug.callstack = function() {
47 try { 47 try {
48 throw new Error(); 48 throw new Error();
49 } catch (e) { 49 } catch (/** @type {*} */ e) {
50 var error = /** @type {Error} */ e; 50 var error = /** @type {Error} */ (e);
51 var callstack = error.stack 51 var callstack = error.stack
52 .replace(/^\s+(at eval )?at\s+/gm, '') // Remove 'at' and indentation. 52 .replace(/^\s+(at eval )?at\s+/gm, '') // Remove 'at' and indentation.
53 .split('\n'); 53 .split('\n');
54 callstack.splice(0,2); // Remove the stack of the current function. 54 callstack.splice(0,2); // Remove the stack of the current function.
55 } 55 }
56 return callstack.join('\n'); 56 return callstack.join('\n');
57 }; 57 };
58 58
59 /** 59 /**
60 * @interface 60 * @interface
(...skipping 23 matching lines...) Expand all
84 base.debug.assert(!dest.hasOwnProperty(prop),"Don't override properties"); 84 base.debug.assert(!dest.hasOwnProperty(prop),"Don't override properties");
85 dest[prop] = src[prop]; 85 dest[prop] = src[prop];
86 } 86 }
87 } 87 }
88 }; 88 };
89 89
90 /** 90 /**
91 * Adds a mixin to a class. 91 * Adds a mixin to a class.
92 * @param {Object} dest 92 * @param {Object} dest
93 * @param {Object} src 93 * @param {Object} src
94 * @suppress {checkTypes} 94 * @suppress {checkTypes|reportUnknownTypes}
95 */ 95 */
96 base.extend = function(dest, src) { 96 base.extend = function(dest, src) {
97 base.mix(dest.prototype, src.prototype || src); 97 base.mix(dest.prototype, src.prototype || src);
98 }; 98 };
99 99
100 base.doNothing = function() {}; 100 base.doNothing = function() {};
101 101
102 /** 102 /**
103 * Returns an array containing the values of |dict|. 103 * Returns an array containing the values of |dict|.
104 * @param {!Object} dict 104 * @param {!Object} dict
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after
188 * window.setTimeout(function() { 188 * window.setTimeout(function() {
189 * deferred.resolve(); 189 * deferred.resolve();
190 * }, 100); 190 * }, 100);
191 * return deferred.promise(); 191 * return deferred.promise();
192 * }; 192 * };
193 * 193 *
194 * @constructor 194 * @constructor
195 */ 195 */
196 base.Deferred = function() { 196 base.Deferred = function() {
197 /** 197 /**
198 * @type {?function(?=)} 198 * @type {?function(?):void}
199 * @private 199 * @private
200 */ 200 */
201 this.resolve_ = null; 201 this.resolve_ = null;
202 202
203 /** 203 /**
204 * @type {?function(?)} 204 * @type {?function(?):void}
205 * @private 205 * @private
206 */ 206 */
207 this.reject_ = null; 207 this.reject_ = null;
208 208
209 /** 209 /**
210 * @this {base.Deferred}
211 * @param {function(?):void} resolve
212 * @param {function(*):void} reject
213 */
214 var recordPromise = function(resolve, reject) {
garykac 2015/01/12 20:22:37 Hoisted here because @this doesn't seem to work fo
215 this.resolve_ = resolve;
216 this.reject_ = reject;
217 };
218
219 /**
210 * @type {Promise} 220 * @type {Promise}
211 * @private 221 * @private
212 */ 222 */
213 this.promise_ = new Promise( 223 this.promise_ = new Promise(recordPromise.bind(this));
214 /**
215 * @param {function(?=):void} resolve
216 * @param {function(?):void} reject
217 * @this {base.Deferred}
218 */
219 function(resolve, reject) {
220 this.resolve_ = resolve;
221 this.reject_ = reject;
222 }.bind(this)
223 );
224 }; 224 };
225 225
226 /** @param {*} reason */ 226 /** @param {*} reason */
227 base.Deferred.prototype.reject = function(reason) { 227 base.Deferred.prototype.reject = function(reason) {
228 this.reject_(reason); 228 this.reject_(reason);
229 }; 229 };
230 230
231 /** @param {*=} opt_value */ 231 /** @param {*=} opt_value */
232 base.Deferred.prototype.resolve = function(opt_value) { 232 base.Deferred.prototype.resolve = function(opt_value) {
233 this.resolve_(opt_value); 233 this.resolve_(opt_value);
234 }; 234 };
235 235
236 /** @return {Promise} */ 236 /** @return {Promise} */
237 base.Deferred.prototype.promise = function() { 237 base.Deferred.prototype.promise = function() {
238 return this.promise_; 238 return this.promise_;
239 }; 239 };
240 240
241 base.Promise = function() {}; 241 base.Promise = function() {};
242 242
243 /** 243 /**
244 * @param {number} delay 244 * @param {number} delay
245 * @return {Promise} a Promise that will be fulfilled after |delay| ms. 245 * @return {Promise} a Promise that will be fulfilled after |delay| ms.
246 */ 246 */
247 base.Promise.sleep = function(delay) { 247 base.Promise.sleep = function(delay) {
248 return new Promise( 248 return new Promise(
249 /** @param {function():void} fulfill */ 249 /** @param {function(*):void} fulfill */
250 function(fulfill) { 250 function(fulfill) {
251 window.setTimeout(fulfill, delay); 251 window.setTimeout(fulfill, delay);
252 }); 252 });
253 }; 253 };
254 254
255 255
256 /** 256 /**
257 * @param {Promise} promise 257 * @param {Promise} promise
258 * @return {Promise} a Promise that will be fulfilled iff the specified Promise 258 * @return {Promise} a Promise that will be fulfilled iff the specified Promise
259 * is rejected. 259 * is rejected.
(...skipping 169 matching lines...) Expand 10 before | Expand all | Expand 10 after
429 * @return {string} A URL-Safe Base64-encoded 128-bit random value. */ 429 * @return {string} A URL-Safe Base64-encoded 128-bit random value. */
430 base.generateXsrfToken = function() { 430 base.generateXsrfToken = function() {
431 var random = new Uint8Array(16); 431 var random = new Uint8Array(16);
432 window.crypto.getRandomValues(random); 432 window.crypto.getRandomValues(random);
433 var base64Token = window.btoa(String.fromCharCode.apply(null, random)); 433 var base64Token = window.btoa(String.fromCharCode.apply(null, random));
434 return base64Token.replace(/\+/g, '-').replace(/\//g, '_').replace(/=/g, ''); 434 return base64Token.replace(/\+/g, '-').replace(/\//g, '_').replace(/=/g, '');
435 }; 435 };
436 436
437 /** 437 /**
438 * @param {string} jsonString A JSON-encoded string. 438 * @param {string} jsonString A JSON-encoded string.
439 * @return {*} The decoded object, or undefined if the string cannot be parsed. 439 * @return {Object|undefined} The decoded object, or undefined if the string
440 * cannot be parsed.
440 */ 441 */
441 base.jsonParseSafe = function(jsonString) { 442 base.jsonParseSafe = function(jsonString) {
442 try { 443 try {
443 return JSON.parse(jsonString); 444 return /** @type {Object} */ (JSON.parse(jsonString));
444 } catch (err) { 445 } catch (err) {
445 return undefined; 446 return undefined;
446 } 447 }
447 } 448 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698