diff options
author | Lorry Tar Creator <lorry-tar-importer@lorry> | 2015-05-20 09:56:07 +0000 |
---|---|---|
committer | Lorry Tar Creator <lorry-tar-importer@lorry> | 2015-05-20 09:56:07 +0000 |
commit | 41386e9cb918eed93b3f13648cbef387e371e451 (patch) | |
tree | a97f9d7bd1d9d091833286085f72da9d83fd0606 /Source/JavaScriptCore/builtins/PromiseConstructor.js | |
parent | e15dd966d523731101f70ccf768bba12435a0208 (diff) | |
download | WebKitGtk-tarball-41386e9cb918eed93b3f13648cbef387e371e451.tar.gz |
webkitgtk-2.4.9webkitgtk-2.4.9
Diffstat (limited to 'Source/JavaScriptCore/builtins/PromiseConstructor.js')
-rw-r--r-- | Source/JavaScriptCore/builtins/PromiseConstructor.js | 139 |
1 files changed, 0 insertions, 139 deletions
diff --git a/Source/JavaScriptCore/builtins/PromiseConstructor.js b/Source/JavaScriptCore/builtins/PromiseConstructor.js deleted file mode 100644 index 1f83b47f7..000000000 --- a/Source/JavaScriptCore/builtins/PromiseConstructor.js +++ /dev/null @@ -1,139 +0,0 @@ -/* - * Copyright (C) 2015 Yusuke Suzuki <utatane.tea@gmail.com>. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY - * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -function all(iterable) -{ - "use strict"; - - if (!@isObject(this)) - throw new TypeError("|this| is not a object"); - - // FIXME: Fix this code when @@species well-known symbol is landed. - // https://bugs.webkit.org/show_bug.cgi?id=146624 - var constructor = this; - - var promiseCapability = @newPromiseCapability(constructor); - - var values = []; - var index = 0; - var remainingElementsCount = 1; - - function newResolveElement(index) - { - var alreadyCalled = false; - return function (argument) - { - if (alreadyCalled) - return undefined; - alreadyCalled = true; - - @putByValDirect(values, index, argument); - - --remainingElementsCount; - if (remainingElementsCount === 0) - return promiseCapability.@resolve.@call(undefined, values); - - return undefined; - } - } - - try { - for (var value of iterable) { - @putByValDirect(values, index, undefined); - var nextPromise = constructor.resolve(value); - var resolveElement = newResolveElement(index); - ++remainingElementsCount; - nextPromise.then(resolveElement, promiseCapability.@reject); - ++index; - } - - --remainingElementsCount; - if (remainingElementsCount === 0) - promiseCapability.@resolve.@call(undefined, values); - } catch (error) { - promiseCapability.@reject.@call(undefined, error); - } - - return promiseCapability.@promise; -} - -function race(iterable) -{ - "use strict"; - - if (!@isObject(this)) - throw new TypeError("|this| is not a object"); - - // FIXME: Fix this code when @@species well-known symbol is landed. - // https://bugs.webkit.org/show_bug.cgi?id=146624 - var constructor = this; - - var promiseCapability = @newPromiseCapability(constructor); - - try { - for (var value of iterable) { - var nextPromise = constructor.resolve(value); - nextPromise.then(promiseCapability.@resolve, promiseCapability.@reject); - } - } catch (error) { - promiseCapability.@reject.@call(undefined, error); - } - - return promiseCapability.@promise; -} - -function reject(reason) -{ - "use strict"; - - if (!@isObject(this)) - throw new TypeError("|this| is not a object"); - - var promiseCapability = @newPromiseCapability(this); - - promiseCapability.@reject.@call(undefined, reason); - - return promiseCapability.@promise; -} - -function resolve(value) -{ - "use strict"; - - if (!@isObject(this)) - throw new TypeError("|this| is not a object"); - - if (@isPromise(value)) { - var valueConstructor = value.constructor; - if (valueConstructor === this) - return value; - } - - var promiseCapability = @newPromiseCapability(this); - - promiseCapability.@resolve.@call(undefined, value); - - return promiseCapability.@promise; -} |