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 |