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

Unified Diff: Source/bindings/core/v8/ScriptPromise.cpp

Issue 1035623002: bindings: Use Maybe APIs in ScriptPromise (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Created 5 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/core/v8/ScriptPromise.cpp
diff --git a/Source/bindings/core/v8/ScriptPromise.cpp b/Source/bindings/core/v8/ScriptPromise.cpp
index e059e6a77069576bf0db05fa8a737c63f6f68630..b1c17c4ab8f561dd2203fa3e43cb4d60c108b943 100644
--- a/Source/bindings/core/v8/ScriptPromise.cpp
+++ b/Source/bindings/core/v8/ScriptPromise.cpp
@@ -53,7 +53,7 @@ struct WithScriptState {
} // namespace
ScriptPromise::InternalResolver::InternalResolver(ScriptState* scriptState)
- : m_resolver(scriptState, v8::Promise::Resolver::New(scriptState->isolate())) { }
+ : m_resolver(scriptState, v8::Promise::Resolver::New(scriptState->context())) { }
v8::Local<v8::Promise> ScriptPromise::InternalResolver::v8Promise() const
{
@@ -73,7 +73,7 @@ void ScriptPromise::InternalResolver::resolve(v8::Local<v8::Value> value)
{
if (m_resolver.isEmpty())
return;
- m_resolver.v8Value().As<v8::Promise::Resolver>()->Resolve(value);
+ m_resolver.v8Value().As<v8::Promise::Resolver>()->Resolve(m_resolver.context(), value);
clear();
}
@@ -81,7 +81,7 @@ void ScriptPromise::InternalResolver::reject(v8::Local<v8::Value> value)
{
if (m_resolver.isEmpty())
return;
- m_resolver.v8Value().As<v8::Promise::Resolver>()->Reject(value);
+ m_resolver.v8Value().As<v8::Promise::Resolver>()->Reject(m_resolver.context(), value);
clear();
}
@@ -112,15 +112,13 @@ ScriptPromise ScriptPromise::then(v8::Handle<v8::Function> onFulfilled, v8::Hand
// but that is not a problem in this case.
v8::Local<v8::Promise> resultPromise = promise.As<v8::Promise>();
if (!onFulfilled.IsEmpty()) {
- resultPromise = resultPromise->Then(onFulfilled);
- if (resultPromise.IsEmpty()) {
- // v8::Promise::Then may return an empty value, for example when
bashi 2015/03/25 03:52:29 Removed this comment as this can be said on all ot
- // the stack is exhausted.
+ if (!resultPromise->Then(m_scriptState->context(), onFulfilled).ToLocal(&resultPromise))
+ return ScriptPromise();
+ }
+ if (!onRejected.IsEmpty()) {
+ if (!resultPromise->Catch(m_scriptState->context(), onRejected).ToLocal(&resultPromise))
return ScriptPromise();
- }
}
- if (!onRejected.IsEmpty())
- resultPromise = resultPromise->Catch(onRejected);
return ScriptPromise(m_scriptState.get(), resultPromise);
}
@@ -168,9 +166,11 @@ v8::Local<v8::Promise> ScriptPromise::rejectRaw(v8::Isolate* isolate, v8::Handle
{
if (value.IsEmpty())
return v8::Local<v8::Promise>();
- v8::Local<v8::Promise::Resolver> resolver = v8::Promise::Resolver::New(isolate);
+ v8::Local<v8::Promise::Resolver> resolver;
+ if (!v8::Promise::Resolver::New(isolate->GetCurrentContext()).ToLocal(&resolver))
haraken 2015/03/25 04:29:59 It seems better to pass ScriptState* to rejectWith
bashi 2015/03/25 04:56:00 Done.
+ return v8::Local<v8::Promise>();
v8::Local<v8::Promise> promise = resolver->GetPromise();
- resolver->Reject(value);
+ resolver->Reject(isolate->GetCurrentContext(), value);
return promise;
}

Powered by Google App Engine
This is Rietveld 408576698