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

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

Issue 181173002: ScriptPromise should check the constructor paraemter. (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Created 6 years, 10 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/ScriptPromiseTest.cpp
diff --git a/Source/bindings/v8/ScriptPromiseTest.cpp b/Source/bindings/v8/ScriptPromiseTest.cpp
index 07153f1a96d0b9be2679f14438845efc2cf1dc79..8020ed6f443d9485ac731bd46f6a8ea9dc8af749 100644
--- a/Source/bindings/v8/ScriptPromiseTest.cpp
+++ b/Source/bindings/v8/ScriptPromiseTest.cpp
@@ -43,6 +43,8 @@ namespace WebCore {
namespace {
+void callback(const v8::FunctionCallbackInfo<v8::Value>& info) { }
+
class ScriptPromiseTest : public testing::Test {
public:
ScriptPromiseTest()
@@ -51,19 +53,16 @@ public:
, m_context(m_isolate, v8::Context::New(m_isolate))
, m_contextScope(m_context.newLocal(m_isolate))
{
- }
-
- void SetUp()
- {
v8::Handle<v8::Context> context(m_context.newLocal(m_isolate));
V8PerContextDataHolder::install(context, DOMWrapperWorld::current(m_isolate));
m_perContextData = V8PerContextData::create(context);
m_perContextData->init();
}
- void TearDown()
+ ~ScriptPromiseTest()
{
- m_perContextData.clear();
+ // FIXME: We put this statement here to clear an exception from the isolate.
+ createClosure(callback, v8::Undefined(m_isolate), m_isolate);
}
V8PromiseCustom::PromiseState state(ScriptPromise promise)
@@ -79,10 +78,18 @@ protected:
OwnPtr<V8PerContextData> m_perContextData;
};
+TEST_F(ScriptPromiseTest, constructFromNonPromise)
+{
+ v8::TryCatch trycatch;
+ ScriptPromise promise(v8::Undefined(m_isolate), m_isolate);
+ ASSERT_TRUE(trycatch.HasCaught());
+ ASSERT_TRUE(promise.hasNoValue());
+}
+
TEST_F(ScriptPromiseTest, castPromise)
{
ScriptPromise promise = ScriptPromise::createPending();
- ScriptPromise newPromise(ScriptValue(promise.v8Value(), m_isolate));
+ ScriptPromise newPromise = ScriptPromise::cast(ScriptValue(promise.v8Value(), m_isolate));
ASSERT_FALSE(promise.hasNoValue());
EXPECT_EQ(V8PromiseCustom::Pending, state(promise));
@@ -92,8 +99,8 @@ TEST_F(ScriptPromiseTest, castPromise)
TEST_F(ScriptPromiseTest, castNonPromise)
{
ScriptValue value = ScriptValue(v8String(m_isolate, "hello"), m_isolate);
- ScriptPromise promise1(ScriptValue(value.v8Value(), m_isolate));
- ScriptPromise promise2(ScriptValue(value.v8Value(), m_isolate));
+ ScriptPromise promise1 = ScriptPromise::cast(ScriptValue(value.v8Value(), m_isolate));
+ ScriptPromise promise2 = ScriptPromise::cast(ScriptValue(value.v8Value(), m_isolate));
ASSERT_FALSE(promise1.hasNoValue());
ASSERT_FALSE(promise2.hasNoValue());

Powered by Google App Engine
This is Rietveld 408576698