Index: Source/bindings/v8/custom/V8PromiseCustom.cpp |
diff --git a/Source/bindings/v8/custom/V8PromiseCustom.cpp b/Source/bindings/v8/custom/V8PromiseCustom.cpp |
index 66e366818b480da0a7bda3739656916d8076b59c..54fcba9a40820992e827a3a3de5d0ddf4a91e110 100644 |
--- a/Source/bindings/v8/custom/V8PromiseCustom.cpp |
+++ b/Source/bindings/v8/custom/V8PromiseCustom.cpp |
@@ -390,6 +390,7 @@ void PromisePropagator::setValue(v8::Handle<v8::Object> promise, v8::Handle<v8:: |
v8::Local<v8::Object> internal = V8PromiseCustom::getInternal(promise); |
ASSERT(V8PromiseCustom::getState(internal) != V8PromiseCustom::Fulfilled && V8PromiseCustom::getState(internal) != V8PromiseCustom::Rejected); |
V8PromiseCustom::setState(internal, V8PromiseCustom::Fulfilled, value, isolate); |
+ InspectorInstrumentation::updatePromiseState(currentExecutionContext(isolate), promise, V8PromiseCustom::Fulfilled); |
aandrey
2014/02/25 12:36:07
move inside V8PromiseCustom::setState
Alexandra Mikhaylova
2014/02/26 14:08:41
It seems that we can't move the instrumentation in
aandrey
2014/02/26 16:17:42
make V8PromiseCustom::setState accept a promise
Alexandra Mikhaylova
2014/02/28 13:52:05
Done.
|
propagateToDerived(promise, isolate); |
} |
@@ -398,6 +399,7 @@ void PromisePropagator::setReason(v8::Handle<v8::Object> promise, v8::Handle<v8: |
v8::Local<v8::Object> internal = V8PromiseCustom::getInternal(promise); |
ASSERT(V8PromiseCustom::getState(internal) != V8PromiseCustom::Fulfilled && V8PromiseCustom::getState(internal) != V8PromiseCustom::Rejected); |
V8PromiseCustom::setState(internal, V8PromiseCustom::Rejected, reason, isolate); |
+ InspectorInstrumentation::updatePromiseState(currentExecutionContext(isolate), promise, V8PromiseCustom::Rejected); |
aandrey
2014/02/25 12:36:07
ditto
Alexandra Mikhaylova
2014/02/26 14:08:41
see above
|
propagateToDerived(promise, isolate); |
} |
@@ -638,6 +640,12 @@ v8::Local<v8::Object> V8PromiseCustom::createPromise(v8::Handle<v8::Object> crea |
setState(internal, Pending, v8::Undefined(isolate), isolate); |
promise->SetInternalField(v8DOMWrapperObjectIndex, internal); |
+ |
+ InspectorInstrumentation::addPromise(currentExecutionContext(isolate), |
aandrey
2014/02/25 12:36:07
one line
Alexandra Mikhaylova
2014/02/26 14:08:41
Done.
|
+ promise, |
+ v8::Handle<v8::Object>::Cast(v8::Null(isolate)), |
aandrey
2014/02/25 12:36:07
v8::Handle<v8::Object>()
Alexandra Mikhaylova
2014/02/26 14:08:41
Done.
|
+ Pending); |
aandrey
2014/02/25 12:36:07
remove Pending, move up before setState()
Alexandra Mikhaylova
2014/02/26 14:08:41
Done.
|
+ |
return promise; |
} |
@@ -707,7 +715,7 @@ void V8PromiseCustom::resolve(v8::Handle<v8::Object> promise, v8::Handle<v8::Val |
setReason(promise, valueInternal->GetInternalField(InternalResultIndex), isolate); |
} else { |
ASSERT(valueState == Pending); |
- setState(internal, Following, valuePromise, isolate); |
+ setState(internal, Following, valuePromise, isolate); // TODO: how can we track the Following state? |
aandrey
2014/02/25 12:36:07
remove todo
Alexandra Mikhaylova
2014/02/26 14:08:41
Done.
|
addToDerived(valueInternal, promise, v8::Handle<v8::Function>(), v8::Handle<v8::Function>(), isolate); |
} |
} else { |
@@ -735,6 +743,7 @@ v8::Local<v8::Object> V8PromiseCustom::then(v8::Handle<v8::Object> promise, v8:: |
// the creation of the promise objects only from the Blink Promise |
// constructor. |
v8::Local<v8::Object> derivedPromise = createPromise(v8::Handle<v8::Object>(), isolate); |
+ InspectorInstrumentation::updatePromiseParent(currentExecutionContext(isolate), derivedPromise, promise); |
aandrey
2014/02/25 12:36:07
move inside updateDerivedFromPromise()
Alexandra Mikhaylova
2014/02/26 14:08:41
Done.
|
updateDerivedFromPromise(derivedPromise, onFulfilled, onRejected, promise, isolate); |
return derivedPromise; |
} |