Index: Source/bindings/tests/results/V8TestObject.cpp |
diff --git a/Source/bindings/tests/results/V8TestObject.cpp b/Source/bindings/tests/results/V8TestObject.cpp |
index 95e2eb80179a2fd6d570c71ce461f88a92ee168b..d9efedb001fe636b49c168becd1eb0f2fd02753c 100644 |
--- a/Source/bindings/tests/results/V8TestObject.cpp |
+++ b/Source/bindings/tests/results/V8TestObject.cpp |
@@ -3922,8 +3922,9 @@ static void overloadedMethod7Method(const v8::FunctionCallbackInfo<v8::Value>& a |
return; |
} |
TestObj* imp = V8TestObject::toNative(args.Holder()); |
+ bool arrayArgIsNull = args[0]->IsNull(); |
V8TRYCATCH_VOID(Vector<String>, arrayArg, toNativeArray<String>(args[0], args.GetIsolate())); |
- imp->overloadedMethod(arrayArg); |
+ imp->overloadedMethod(arrayArgIsNull ? 0 : &arrayArg); |
return; |
} |
@@ -4517,6 +4518,38 @@ static void variadicNodeMethodMethodCallback(const v8::FunctionCallbackInfo<v8:: |
TRACE_EVENT_SET_SAMPLING_STATE("V8", "Execution"); |
} |
+static void methodWithNullableArgumentsMethod(const v8::FunctionCallbackInfo<v8::Value>& args) |
+{ |
+ if (UNLIKELY(args.Length() < 3)) { |
+ throwTypeError(ExceptionMessages::failedToExecute("methodWithNullableArguments", "TestObject", ExceptionMessages::notEnoughArguments(3, args.Length())), args.GetIsolate()); |
+ return; |
+ } |
+ TestObj* imp = V8TestObject::toNative(args.Holder()); |
+ bool strIsNull = args[0]->IsNull(); |
+ V8TRYCATCH_FOR_V8STRINGRESOURCE_VOID(V8StringResource<>, strStringResource, args[0]); |
+ String str = strStringResource; |
+ bool lIsNull = args[1]->IsNull(); |
+ V8TRYCATCH_VOID(int, l, toInt32(args[1])); |
+ V8TRYCATCH_VOID(TestObj*, obj, V8TestObject::HasInstance(args[2], args.GetIsolate(), worldType(args.GetIsolate())) ? V8TestObject::toNative(v8::Handle<v8::Object>::Cast(args[2])) : 0); |
+ if (UNLIKELY(args.Length() <= 3)) { |
+ imp->methodWithNullableArguments(strIsNull ? 0 : &str, lIsNull ? 0 : &l, obj); |
+ |
+ return; |
+ } |
+ bool dIsNull = args[3]->IsNull(); |
+ V8TRYCATCH_VOID(double, d, static_cast<double>(args[3]->NumberValue())); |
+ imp->methodWithNullableArguments(strIsNull ? 0 : &str, lIsNull ? 0 : &l, obj, dIsNull ? 0 : &d); |
+ |
+ return; |
+} |
+ |
+static void methodWithNullableArgumentsMethodCallback(const v8::FunctionCallbackInfo<v8::Value>& args) |
+{ |
+ TRACE_EVENT_SET_SAMPLING_STATE("Blink", "DOMMethod"); |
+ TestObjV8Internal::methodWithNullableArgumentsMethod(args); |
+ TRACE_EVENT_SET_SAMPLING_STATE("V8", "Execution"); |
+} |
+ |
static void perWorldMethodMethod(const v8::FunctionCallbackInfo<v8::Value>& args) |
{ |
TestObj* imp = V8TestObject::toNative(args.Holder()); |
@@ -5179,6 +5212,7 @@ static const V8DOMConfiguration::MethodConfiguration V8TestObjectMethods[] = { |
{"strictFunction", TestObjV8Internal::strictFunctionMethodCallback, 0, 3}, |
{"variadicStringMethod", TestObjV8Internal::variadicStringMethodMethodCallback, 0, 2}, |
{"variadicDoubleMethod", TestObjV8Internal::variadicDoubleMethodMethodCallback, 0, 2}, |
+ {"methodWithNullableArguments", TestObjV8Internal::methodWithNullableArgumentsMethodCallback, 0, 3}, |
{"perWorldMethod", TestObjV8Internal::perWorldMethodMethodCallback, TestObjV8Internal::perWorldMethodMethodCallbackForMainWorld, 0}, |
{"overloadedPerWorldMethod", TestObjV8Internal::overloadedPerWorldMethodMethodCallback, TestObjV8Internal::overloadedPerWorldMethodMethodCallbackForMainWorld, 1}, |
{"activityLoggedMethod1", TestObjV8Internal::activityLoggedMethod1MethodCallback, 0, 1}, |