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

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

Issue 273683006: ScriptPromise should understand the ScriptState from which the ScriptPromise is generated (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 6 years, 7 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.cpp
diff --git a/Source/bindings/v8/ScriptPromiseResolver.cpp b/Source/bindings/v8/ScriptPromiseResolver.cpp
index 7ace64cd0fae27c1e8fb6549c087091cf7611494..c557d04d41269d93d33be5a738b6c3c9c257c9c3 100644
--- a/Source/bindings/v8/ScriptPromiseResolver.cpp
+++ b/Source/bindings/v8/ScriptPromiseResolver.cpp
@@ -41,29 +41,15 @@
namespace WebCore {
-ScriptPromiseResolver::ScriptPromiseResolver(ExecutionContext* context)
- : m_isolate(toIsolate(context))
+ScriptPromiseResolver::ScriptPromiseResolver(ScriptState* scriptState)
+ : m_scriptState(scriptState)
{
- ASSERT(context);
- v8::Isolate* isolate = toIsolate(context);
- ASSERT(isolate->InContext());
+ v8::Isolate* isolate = m_scriptState->isolate();
+ ASSERT(!m_scriptState->contextIsEmpty());
yhirano 2014/05/09 06:24:57 Please keep the InContext assertion.
haraken 2014/05/09 07:37:25 Done.
if (RuntimeEnabledFeatures::scriptPromiseOnV8PromiseEnabled()) {
- m_resolver = ScriptValue(v8::Promise::Resolver::New(isolate), isolate);
+ m_resolver = ScriptValue(scriptState, v8::Promise::Resolver::New(isolate));
} else {
- v8::Handle<v8::Context> v8Context = toV8Context(context, DOMWrapperWorld::current(isolate));
- v8::Handle<v8::Object> creationContext = v8Context.IsEmpty() ? v8::Object::New(isolate) : v8Context->Global();
- m_promise = ScriptPromise(V8PromiseCustom::createPromise(creationContext, isolate), isolate);
- }
-}
-
-ScriptPromiseResolver::ScriptPromiseResolver(v8::Isolate* isolate)
- : m_isolate(isolate)
-{
- ASSERT(isolate->InContext());
- if (RuntimeEnabledFeatures::scriptPromiseOnV8PromiseEnabled()) {
- m_resolver = ScriptValue(v8::Promise::Resolver::New(isolate), isolate);
- } else {
- m_promise = ScriptPromise(V8PromiseCustom::createPromise(v8::Object::New(isolate), isolate), isolate);
+ m_promise = ScriptPromise(scriptState, V8PromiseCustom::createPromise(m_scriptState->context()->Global(), isolate));
}
}
@@ -78,36 +64,29 @@ ScriptPromiseResolver::~ScriptPromiseResolver()
ScriptPromise ScriptPromiseResolver::promise()
{
- ASSERT(m_isolate->InContext());
+ ASSERT(!m_scriptState->contextIsEmpty());
yhirano 2014/05/09 06:24:57 ditto
haraken 2014/05/09 07:37:25 Done.
haraken 2014/05/09 07:37:25 Done.
if (!m_resolver.isEmpty()) {
v8::Local<v8::Promise::Resolver> v8Resolver = m_resolver.v8Value().As<v8::Promise::Resolver>();
- return ScriptPromise(v8Resolver->GetPromise(), m_isolate);
+ return ScriptPromise(m_scriptState.get(), v8Resolver->GetPromise());
}
return m_promise;
}
-PassRefPtr<ScriptPromiseResolver> ScriptPromiseResolver::create(ExecutionContext* context)
-{
- ASSERT(context);
- ASSERT(toIsolate(context)->InContext());
- return adoptRef(new ScriptPromiseResolver(context));
-}
-
-PassRefPtr<ScriptPromiseResolver> ScriptPromiseResolver::create(v8::Isolate* isolate)
+PassRefPtr<ScriptPromiseResolver> ScriptPromiseResolver::create(ScriptState* scriptState)
{
- ASSERT(isolate->InContext());
- return adoptRef(new ScriptPromiseResolver(isolate));
+ ASSERT(scriptState->isolate()->InContext());
+ return adoptRef(new ScriptPromiseResolver(scriptState));
}
void ScriptPromiseResolver::resolve(v8::Handle<v8::Value> value)
{
- ASSERT(m_isolate->InContext());
+ ASSERT(m_scriptState->isolate()->InContext());
if (!m_resolver.isEmpty()) {
m_resolver.v8Value().As<v8::Promise::Resolver>()->Resolve(value);
} else if (!m_promise.isEmpty()) {
v8::Local<v8::Object> promise = m_promise.v8Value().As<v8::Object>();
- ASSERT(V8PromiseCustom::isPromise(promise, m_isolate));
- V8PromiseCustom::resolve(promise, value, m_isolate);
+ ASSERT(V8PromiseCustom::isPromise(promise, m_scriptState->isolate()));
+ V8PromiseCustom::resolve(promise, value, m_scriptState->isolate());
}
m_promise.clear();
m_resolver.clear();
@@ -115,13 +94,13 @@ void ScriptPromiseResolver::resolve(v8::Handle<v8::Value> value)
void ScriptPromiseResolver::reject(v8::Handle<v8::Value> value)
{
- ASSERT(m_isolate->InContext());
+ ASSERT(m_scriptState->isolate()->InContext());
if (!m_resolver.isEmpty()) {
m_resolver.v8Value().As<v8::Promise::Resolver>()->Reject(value);
} else if (!m_promise.isEmpty()) {
v8::Local<v8::Object> promise = m_promise.v8Value().As<v8::Object>();
- ASSERT(V8PromiseCustom::isPromise(promise, m_isolate));
- V8PromiseCustom::reject(promise, value, m_isolate);
+ ASSERT(V8PromiseCustom::isPromise(promise, m_scriptState->isolate()));
+ V8PromiseCustom::reject(promise, value, m_scriptState->isolate());
}
m_promise.clear();
m_resolver.clear();

Powered by Google App Engine
This is Rietveld 408576698