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

Unified Diff: Source/bindings/v8/ScriptPromiseResolver.h

Issue 197213007: ScriptPromise implementation for V8 Promises (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Created 6 years, 9 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
Index: Source/bindings/v8/ScriptPromiseResolver.h
diff --git a/Source/bindings/v8/ScriptPromiseResolver.h b/Source/bindings/v8/ScriptPromiseResolver.h
index 200638e468e85b564677987c725f15e79764ff16..5137eaac092d0cd37e4c25077a3111bc5a7bdce8 100644
--- a/Source/bindings/v8/ScriptPromiseResolver.h
+++ b/Source/bindings/v8/ScriptPromiseResolver.h
@@ -51,7 +51,7 @@ class ExecutionContext;
// ScriptPromiseResolver holds a PromiseResolver.
// Here is a typical usage:
// 1. Create a ScriptPromiseResolver.
-// 2. Pass the promise object of the holder to a JavaScript program
+// 2. Pass the associated promise object to a JavaScript program
// (such as XMLHttpRequest return value).
// 3. Call resolve or reject when the operation completes or
// the operation fails respectively.
@@ -63,7 +63,10 @@ class ExecutionContext;
// To prevent memory leaks, you should release the reference manually
// by calling resolve or reject.
// Destroying the object will also release the reference.
-//
+// Note that ScriptPromiseResolver::promise returns an empty value when the
+// resolver is already resolved or rejected. If you want to resolve a resolver
+// immediately and return the associated promise, you should get the promise
+// before resolving.
class ScriptPromiseResolver : public RefCounted<ScriptPromiseResolver> {
WTF_MAKE_NONCOPYABLE(ScriptPromiseResolver);
public:
@@ -76,14 +79,10 @@ public:
// entering a v8 context.
~ScriptPromiseResolver();
- // Return true if the promise object is in pending state.
- bool isPending() const;
-
- ScriptPromise promise()
- {
- ASSERT(m_promise.isolate()->InContext());
- return m_promise;
- }
+ // Returns the underlying Promise.
+ // Note that the underlying Promise is cleared when |resolve| or |reject|
+ // is called.
+ ScriptPromise promise();
// To use following template methods, T must be a DOM class.
@@ -141,7 +140,10 @@ private:
void reject(v8::Handle<v8::Value>);
v8::Isolate* m_isolate;
+ // Used when scriptPromiseOnV8Promise is disabled.
ScriptPromise m_promise;
+ // Used when scriptPromiseOnV8Promise is enabled.
+ ScriptValue m_resolver;
};
template<typename T>

Powered by Google App Engine
This is Rietveld 408576698