Chromium Code Reviews| Index: Source/bindings/core/v8/ScriptPromisePropertyBase.cpp |
| diff --git a/Source/bindings/core/v8/ScriptPromisePropertyBase.cpp b/Source/bindings/core/v8/ScriptPromisePropertyBase.cpp |
| index c52acfedf6a76658e3747dabd4add422c427c1f9..85dd3735e064b3feff78d20b0687144884804bc8 100644 |
| --- a/Source/bindings/core/v8/ScriptPromisePropertyBase.cpp |
| +++ b/Source/bindings/core/v8/ScriptPromisePropertyBase.cpp |
| @@ -37,22 +37,24 @@ ScriptPromise ScriptPromisePropertyBase::promise(DOMWrapperWorld& world) |
| return ScriptPromise(); |
| v8::HandleScope handleScope(m_isolate); |
| - v8::Handle<v8::Context> context = toV8Context(executionContext(), world); |
| + v8::Local<v8::Context> context = toV8Context(executionContext(), world); |
| if (context.IsEmpty()) |
| return ScriptPromise(); |
| ScriptState* scriptState = ScriptState::from(context); |
| ScriptState::Scope scope(scriptState); |
| - v8::Handle<v8::Object> wrapper = ensureHolderWrapper(scriptState); |
| + v8::Local<v8::Object> wrapper = ensureHolderWrapper(scriptState); |
| ASSERT(wrapper->CreationContext() == context); |
| - v8::Handle<v8::Value> cachedPromise = V8HiddenValue::getHiddenValue(m_isolate, wrapper, promiseName()); |
| + v8::Local<v8::Value> cachedPromise = V8HiddenValue::getHiddenValue(m_isolate, wrapper, promiseName()); |
| if (!cachedPromise.IsEmpty()) |
| return ScriptPromise(scriptState, cachedPromise); |
| // Create and cache the Promise |
| - v8::Handle<v8::Promise::Resolver> resolver = v8::Promise::Resolver::New(m_isolate); |
| - v8::Handle<v8::Promise> promise = resolver->GetPromise(); |
| + v8::Local<v8::Promise::Resolver> resolver; |
| + if (!v8::Promise::Resolver::New(context).ToLocal(&resolver)) |
| + return ScriptPromise(); |
| + v8::Local<v8::Promise> promise = resolver->GetPromise(); |
| V8HiddenValue::setHiddenValue(m_isolate, wrapper, promiseName(), promise); |
| switch (m_state) { |
| @@ -107,15 +109,16 @@ void ScriptPromisePropertyBase::resetBase() |
| void ScriptPromisePropertyBase::resolveOrRejectInternal(v8::Handle<v8::Promise::Resolver> resolver) |
| { |
| + v8::Local<v8::Context> context = m_isolate->GetCurrentContext(); |
|
haraken
2015/03/25 04:29:59
Not directly related to your CL, ScriptPromiseProp
bashi
2015/03/25 04:56:00
Added a todo comment.
yhirano
2015/03/25 07:39:08
No, I don't think so. ScriptPromiseProperty is des
bashi
2015/03/25 08:01:46
Ah, I should have read the code carefully. Thanks.
haraken
2015/03/25 09:04:23
Thanks for the catch, you're right :)
|
| switch (m_state) { |
| case Pending: |
| ASSERT_NOT_REACHED(); |
| break; |
| case Resolved: |
| - resolver->Resolve(resolvedValue(m_isolate, resolver->CreationContext()->Global())); |
| + resolver->Resolve(context, resolvedValue(m_isolate, resolver->CreationContext()->Global())); |
|
yhirano
2015/03/25 07:39:08
resolver->CreationContext() can be replaced with |
bashi
2015/03/25 08:01:46
Done.
|
| break; |
| case Rejected: |
| - resolver->Reject(rejectedValue(m_isolate, resolver->CreationContext()->Global())); |
| + resolver->Reject(context, rejectedValue(m_isolate, resolver->CreationContext()->Global())); |
| break; |
| } |
| } |