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

Unified Diff: third_party/WebKit/Source/bindings/core/v8/ScriptPromisePropertyBase.cpp

Issue 1419313003: Track the script state a listener was created in (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase Created 5 years, 1 month 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: third_party/WebKit/Source/bindings/core/v8/ScriptPromisePropertyBase.cpp
diff --git a/third_party/WebKit/Source/bindings/core/v8/ScriptPromisePropertyBase.cpp b/third_party/WebKit/Source/bindings/core/v8/ScriptPromisePropertyBase.cpp
index b54a8b065da6480c05e7441f6349f0455d79dbf6..35b8f4822fb7a89b6a53ed402048bce69be0417d 100644
--- a/third_party/WebKit/Source/bindings/core/v8/ScriptPromisePropertyBase.cpp
+++ b/third_party/WebKit/Source/bindings/core/v8/ScriptPromisePropertyBase.cpp
@@ -46,7 +46,7 @@ ScriptPromise ScriptPromisePropertyBase::promise(DOMWrapperWorld& world)
v8::Local<v8::Object> wrapper = ensureHolderWrapper(scriptState);
ASSERT(wrapper->CreationContext() == context);
- v8::Local<v8::Value> cachedPromise = V8HiddenValue::getHiddenValue(m_isolate, wrapper, promiseName());
+ v8::Local<v8::Value> cachedPromise = V8HiddenValue::getHiddenValue(scriptState, wrapper, promiseName());
if (!cachedPromise.IsEmpty())
return ScriptPromise(scriptState, cachedPromise);
@@ -55,12 +55,12 @@ ScriptPromise ScriptPromisePropertyBase::promise(DOMWrapperWorld& world)
if (!v8::Promise::Resolver::New(context).ToLocal(&resolver))
return ScriptPromise();
v8::Local<v8::Promise> promise = resolver->GetPromise();
- V8HiddenValue::setHiddenValue(m_isolate, wrapper, promiseName(), promise);
+ V8HiddenValue::setHiddenValue(scriptState, wrapper, promiseName(), promise);
switch (m_state) {
case Pending:
// Cache the resolver too
- V8HiddenValue::setHiddenValue(m_isolate, wrapper, resolverName(), resolver);
+ V8HiddenValue::setHiddenValue(scriptState, wrapper, resolverName(), resolver);
break;
case Resolved:
case Rejected:
@@ -91,11 +91,12 @@ void ScriptPromisePropertyBase::resolveOrReject(State targetState)
continue;
}
v8::Local<v8::Object> wrapper = persistent->newLocal(m_isolate);
- ScriptState::Scope scope(ScriptState::from(wrapper->CreationContext()));
+ ScriptState* scriptState = ScriptState::from(wrapper->CreationContext());
+ ScriptState::Scope scope(scriptState);
- v8::Local<v8::Promise::Resolver> resolver = V8HiddenValue::getHiddenValue(m_isolate, wrapper, resolverName()).As<v8::Promise::Resolver>();
+ v8::Local<v8::Promise::Resolver> resolver = V8HiddenValue::getHiddenValue(scriptState, wrapper, resolverName()).As<v8::Promise::Resolver>();
- V8HiddenValue::deleteHiddenValue(m_isolate, wrapper, resolverName());
+ V8HiddenValue::deleteHiddenValue(scriptState, wrapper, resolverName());
resolveOrRejectInternal(resolver);
++i;
}
@@ -159,8 +160,9 @@ void ScriptPromisePropertyBase::clearWrappers()
for (WeakPersistentSet::iterator i = m_wrappers.begin(); i != m_wrappers.end(); ++i) {
v8::Local<v8::Object> wrapper = (*i)->newLocal(m_isolate);
if (!wrapper.IsEmpty()) {
- V8HiddenValue::deleteHiddenValue(m_isolate, wrapper, resolverName());
- V8HiddenValue::deleteHiddenValue(m_isolate, wrapper, promiseName());
+ ScriptState* scriptState = ScriptState::from(wrapper->CreationContext());
+ V8HiddenValue::deleteHiddenValue(scriptState, wrapper, resolverName());
+ V8HiddenValue::deleteHiddenValue(scriptState, wrapper, promiseName());
}
}
m_wrappers.clear();

Powered by Google App Engine
This is Rietveld 408576698