| Index: Source/bindings/v8/custom/V8PromiseCustom.h
|
| diff --git a/Source/bindings/v8/custom/V8PromiseCustom.h b/Source/bindings/v8/custom/V8PromiseCustom.h
|
| index a4b1334a507fb30c6c0e8f300a9a62e71f1ef7e0..1751c1e4ae32e4f1bada6223a68165607864d3f9 100644
|
| --- a/Source/bindings/v8/custom/V8PromiseCustom.h
|
| +++ b/Source/bindings/v8/custom/V8PromiseCustom.h
|
| @@ -38,15 +38,10 @@ public:
|
| InternalResultIndex,
|
| InternalFulfillCallbackIndex,
|
| InternalRejectCallbackIndex,
|
| + InternalDerivedPromiseIndex,
|
| InternalFieldCount, // This entry must always be at the bottom.
|
| };
|
|
|
| - enum WrapperCallbackEnvironmentFieldIndex {
|
| - WrapperCallbackEnvironmentPromiseIndex,
|
| - WrapperCallbackEnvironmentCallbackIndex,
|
| - WrapperCallbackEnvironmentFieldCount, // This entry must always be at the bottom.
|
| - };
|
| -
|
| enum PromiseAllEnvironmentFieldIndex {
|
| PromiseAllEnvironmentPromiseIndex,
|
| PromiseAllEnvironmentCountdownIndex,
|
| @@ -67,46 +62,73 @@ public:
|
| Following,
|
| };
|
|
|
| - enum SynchronousMode {
|
| - Synchronous,
|
| - Asynchronous,
|
| - };
|
| -
|
| static v8::Local<v8::Object> createPromise(v8::Handle<v8::Object> creationContext, v8::Isolate*);
|
|
|
| // |promise| must be a Promise instance.
|
| - static void fulfill(v8::Handle<v8::Object> promise, v8::Handle<v8::Value> result, SynchronousMode, v8::Isolate*);
|
| + static v8::Local<v8::Object> getInternal(v8::Handle<v8::Object> promise);
|
| +
|
| + // |internal| must be a Promise internal object.
|
| + static PromiseState getState(v8::Handle<v8::Object> internal);
|
| +
|
| + // |internal| must be a Promise internal object.
|
| + // Set a |promise|'s state and result that correspond to the state.
|
| + static void setState(v8::Handle<v8::Object> internal, PromiseState, v8::Handle<v8::Value>, v8::Isolate*);
|
| +
|
| + // Return true if |maybePromise| is a Promise instance.
|
| + static bool isPromise(v8::Handle<v8::Value> maybePromise, v8::Isolate*);
|
| +
|
| + // Coerces |maybePromise| to a Promise instance.
|
| + static v8::Local<v8::Object> toPromise(v8::Handle<v8::Value> maybePromise, v8::Isolate*);
|
| +
|
| // |promise| must be a Promise instance.
|
| - static void resolve(v8::Handle<v8::Object> promise, v8::Handle<v8::Value> result, SynchronousMode, v8::Isolate*);
|
| + static void resolve(v8::Handle<v8::Object> promise, v8::Handle<v8::Value> result, v8::Isolate*);
|
| +
|
| // |promise| must be a Promise instance.
|
| - static void reject(v8::Handle<v8::Object> promise, v8::Handle<v8::Value> result, SynchronousMode, v8::Isolate*);
|
| + static void reject(v8::Handle<v8::Object> promise, v8::Handle<v8::Value> result, v8::Isolate*);
|
|
|
| // |promise| must be a Promise instance.
|
| - // |fulfillCallback| and |rejectCallback| can be an empty function respectively.
|
| - static void append(v8::Handle<v8::Object> promise, v8::Handle<v8::Function> fulfillCallback, v8::Handle<v8::Function> rejectCallback, v8::Isolate*);
|
| + // |onFulfilled| and |onRejected| can be an empty value respectively.
|
| + // Appends |onFulfilled| and/or |onRejected| handlers to |promise|.
|
| + static v8::Local<v8::Object> then(v8::Handle<v8::Object> promise, v8::Handle<v8::Function> onFulfilled, v8::Handle<v8::Function> onRejected, v8::Isolate*);
|
|
|
| // |promise| must be a Promise instance.
|
| - static v8::Local<v8::Object> getInternal(v8::Handle<v8::Object> promise);
|
| + // Set a |promise|'s value and propagate it to derived promises.
|
| + static void setValue(v8::Handle<v8::Object> promise, v8::Handle<v8::Value>, v8::Isolate*);
|
|
|
| - // |internal| must be a Promise internal object.
|
| - // Clear the Promise internal object with the given state and result.
|
| - // This function clears callbacks in the object.
|
| - static void clearInternal(v8::Handle<v8::Object> internal, PromiseState, v8::Handle<v8::Value> result, v8::Isolate*);
|
| + // |promise| must be a Promise instance.
|
| + // Set a |promise|'s failure reason and propagate it to derived promises.
|
| + static void setReason(v8::Handle<v8::Object> promise, v8::Handle<v8::Value>, v8::Isolate*);
|
|
|
| - // |internal| must be a Promise internal object.
|
| - static PromiseState getState(v8::Handle<v8::Object> internal);
|
| - // |internal| must be a Promise internal object.
|
| - static void setState(v8::Handle<v8::Object> internal, PromiseState, v8::Isolate*);
|
| + // |promise| must be a Promise instance.
|
| + // Propagate a |promise|'s value or reason to all of its derived promies.
|
| + static void propagateToDerived(v8::Handle<v8::Object> promise, v8::Isolate*);
|
|
|
| - // Call |function| synchronously or asynchronously, depending on |mode|.
|
| - // If |function| throws an exception, this function catches it and does not rethrow.
|
| - static void call(v8::Handle<v8::Function> /* function */, v8::Handle<v8::Object> receiver, v8::Handle<v8::Value> result, SynchronousMode /* mode */, v8::Isolate*);
|
| + // |derivedPromise| and |originator| must be a Promise instance.
|
| + // |onFulfilled| and |onRejected| can be an empty value respectively.
|
| + // Propagate |originator|'s state to |derivedPromise|.
|
| + static void updateDerived(v8::Handle<v8::Object> derivedPromise, v8::Handle<v8::Function> onFulfilled, v8::Handle<v8::Function> onRejected, v8::Handle<v8::Object> originator, v8::Isolate*);
|
|
|
| - // Return true if |maybePromise| is a Promise object.
|
| - static bool isPromise(v8::Handle<v8::Value> maybePromise, v8::Isolate*);
|
| + // |derivedPromise| must be a Promise instance.
|
| + // Propagate a value to |derivedPromise|.
|
| + static void updateDerivedFromValue(v8::Handle<v8::Object> derivedPromise, v8::Handle<v8::Function> onFulfilled, v8::Handle<v8::Value>, v8::Isolate*);
|
|
|
| - // Coerces |maybePromise| to a Promise object.
|
| - static v8::Local<v8::Object> toPromise(v8::Handle<v8::Value> maybePromise, v8::Isolate*);
|
| + // |derivedPromise| must be a Promise instance.
|
| + // Propagate a failure reason to |derivedPromise|.
|
| + static void updateDerivedFromReason(v8::Handle<v8::Object> derivedPromise, v8::Handle<v8::Function> onRejected, v8::Handle<v8::Value>, v8::Isolate*);
|
| +
|
| + // |derivedPromise| and |promise| must be a Promise instance.
|
| + // |onFulfilled| and |onRejected| can be an empty value respectively.
|
| + // Propagate |promise|'s state to |derivedPromise|.
|
| + static void updateDerivedFromPromise(v8::Handle<v8::Object> derivedPromise, v8::Handle<v8::Function> onFulfilled, v8::Handle<v8::Function> onRejected, v8::Handle<v8::Object> promise, v8::Isolate*);
|
| +
|
| + // Returns a Promise instance that will be fulfilled or rejected by
|
| + // |thenable|'s result.
|
| + static v8::Local<v8::Object> coerceThenable(v8::Handle<v8::Object> thenable, v8::Handle<v8::Function> then, v8::Isolate*);
|
| +
|
| + // |promise| must be a Promise instance.
|
| + // Applies a transformation to an argument and use it to update derived
|
| + // promies.
|
| + static void callHandler(v8::Handle<v8::Object> promise, v8::Handle<v8::Function> handler, v8::Handle<v8::Value> argument, v8::Isolate*);
|
| };
|
|
|
| } // namespace WebCore
|
|
|