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

Unified Diff: Source/bindings/v8/custom/V8PromiseCustom.h

Issue 24980002: Implement AP2 Promises (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Created 7 years, 2 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « Source/bindings/v8/V8HiddenPropertyName.h ('k') | Source/bindings/v8/custom/V8PromiseCustom.cpp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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
« no previous file with comments | « Source/bindings/v8/V8HiddenPropertyName.h ('k') | Source/bindings/v8/custom/V8PromiseCustom.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698