#include "config.h"
#include "bindings/v8/ScriptPromise.h"
+#include "RuntimeEnabledFeatures.h"
#include "bindings/v8/DOMWrapperWorld.h"
#include "bindings/v8/ScriptPromiseResolver.h"
#include "bindings/v8/ScriptValue.h"
class ScriptPromiseTest : public testing::Test {
public:
ScriptPromiseTest()
- : m_isolate(v8::Isolate::GetCurrent())
+ : m_scope(V8ExecutionScope::create(v8::Isolate::GetCurrent()))
{
- m_scope = V8ExecutionScope::create(m_isolate);
}
~ScriptPromiseTest()
{
// FIXME: We put this statement here to clear an exception from the isolate.
- createClosure(callback, v8::Undefined(m_isolate), m_isolate);
+ createClosure(callback, v8::Undefined(m_scope->isolate()), m_scope->isolate());
}
V8PromiseCustom::PromiseState state(ScriptPromise promise)
}
protected:
- v8::Isolate* m_isolate;
-
-private:
OwnPtr<V8ExecutionScope> m_scope;
};
TEST_F(ScriptPromiseTest, constructFromNonPromise)
{
v8::TryCatch trycatch;
- ScriptPromise promise(v8::Undefined(m_isolate), m_isolate);
+ ScriptPromise promise(m_scope->scriptState(), v8::Undefined(m_scope->isolate()));
ASSERT_TRUE(trycatch.HasCaught());
- ASSERT_TRUE(promise.hasNoValue());
+ ASSERT_TRUE(promise.isEmpty());
}
TEST_F(ScriptPromiseTest, castPromise)
{
- ScriptPromise promise = ScriptPromiseResolver::create(m_isolate)->promise();
- ScriptPromise newPromise = ScriptPromise::cast(ScriptValue(promise.v8Value(), m_isolate));
+ if (RuntimeEnabledFeatures::scriptPromiseOnV8PromiseEnabled())
+ return;
+ ScriptPromise promise = ScriptPromiseResolver::create(m_scope->scriptState())->promise();
+ ScriptPromise newPromise = ScriptPromise::cast(ScriptValue(m_scope->scriptState(), promise.v8Value()));
- ASSERT_FALSE(promise.hasNoValue());
+ ASSERT_FALSE(promise.isEmpty());
EXPECT_EQ(V8PromiseCustom::Pending, state(promise));
EXPECT_EQ(promise.v8Value(), newPromise.v8Value());
}
TEST_F(ScriptPromiseTest, castNonPromise)
{
- ScriptValue value = ScriptValue(v8String(m_isolate, "hello"), m_isolate);
- ScriptPromise promise1 = ScriptPromise::cast(ScriptValue(value.v8Value(), m_isolate));
- ScriptPromise promise2 = ScriptPromise::cast(ScriptValue(value.v8Value(), m_isolate));
+ if (RuntimeEnabledFeatures::scriptPromiseOnV8PromiseEnabled())
+ return;
+ ScriptValue value = ScriptValue(m_scope->scriptState(), v8String(m_scope->isolate(), "hello"));
+ ScriptPromise promise1 = ScriptPromise::cast(ScriptValue(value));
+ ScriptPromise promise2 = ScriptPromise::cast(ScriptValue(value));
- ASSERT_FALSE(promise1.hasNoValue());
- ASSERT_FALSE(promise2.hasNoValue());
+ ASSERT_FALSE(promise1.isEmpty());
+ ASSERT_FALSE(promise2.isEmpty());
- ASSERT_TRUE(V8PromiseCustom::isPromise(promise1.v8Value(), m_isolate));
- ASSERT_TRUE(V8PromiseCustom::isPromise(promise2.v8Value(), m_isolate));
+ ASSERT_TRUE(V8PromiseCustom::isPromise(promise1.v8Value(), m_scope->isolate()));
+ ASSERT_TRUE(V8PromiseCustom::isPromise(promise2.v8Value(), m_scope->isolate()));
EXPECT_EQ(V8PromiseCustom::Fulfilled, state(promise1));
EXPECT_EQ(V8PromiseCustom::Fulfilled, state(promise2));