Chromium Code Reviews| Index: Source/devtools/front_end/platform/Promise.js |
| diff --git a/Source/devtools/front_end/platform/Promise.js b/Source/devtools/front_end/platform/Promise.js |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..f854b567a09cf95dd520136a6c8f2a8c19324f01 |
| --- /dev/null |
| +++ b/Source/devtools/front_end/platform/Promise.js |
| @@ -0,0 +1,68 @@ |
| +// Copyright 2014 The Chromium Authors. All rights reserved. |
| +// Use of this source code is governed by a BSD-style license that can be |
| +// found in the LICENSE file. |
| + |
| +/** |
| + * @param {string} error |
| + * @return {!Promise.<T>} |
| + * @template T |
| + */ |
| +Promise.rejectWithError = function(error) |
| +{ |
| + return Promise.reject(new Error(error)); |
| +} |
| + |
| +/** |
| + * @param {function((T|undefined))} callback |
| + * @return {!Promise.<T>} |
| + * @template T |
| + */ |
| +Promise.prototype.thenOrCatch = function(callback) |
| +{ |
| + return this.then(callback, reject.bind(this)); |
| + |
| + /** |
| + * @param {*} e |
| + * @this {Promise} |
| + */ |
| + function reject(e) |
| + { |
| + this._reportError(e); |
| + callback(undefined); |
| + } |
| +} |
| + |
| +Promise.prototype.done = function() |
| +{ |
| + this.catchAndReport(); |
| +} |
| + |
| +/** |
| + * @return {!Promise} |
| + */ |
| +Promise.prototype.catchAndReport = function() |
| +{ |
| + return this.catch(this._reportError.bind(this)); |
| +} |
| + |
| +/** |
| + * @param {*} e |
| + */ |
| +Promise.prototype._reportError = function(e) |
| +{ |
| + if (e instanceof Error) |
| + console.error(e.stack); |
| + else |
| + console.error(e); |
| +} |
| + |
| +// FIXME: This performance optimization should be moved to blink so that all developers could enjoy it. |
| +// console is retrieved with V8Window.getAttribute method which is slow. Here we copy it to a js variable for faster access. |
| +console = console; |
|
apavlov
2014/10/31 13:26:26
This is not quite related to promises
dgozman
2014/10/31 13:56:06
Moved to utilities.
|
| +console.__originalAssert = console.assert; |
| +console.assert = function(value, message) |
| +{ |
| + if (value) |
| + return; |
| + console.__originalAssert(value, message); |
| +} |