| Index: Source/bindings/scripts/code_generator_v8.pm
|
| diff --git a/Source/bindings/scripts/code_generator_v8.pm b/Source/bindings/scripts/code_generator_v8.pm
|
| index ec6302f779373588a4dedb74d686b780cc20d97c..483aaca7a00bdc5dd214f5cc11d920d031b5cb3d 100644
|
| --- a/Source/bindings/scripts/code_generator_v8.pm
|
| +++ b/Source/bindings/scripts/code_generator_v8.pm
|
| @@ -1908,7 +1908,8 @@ END
|
| $code .= " return;\n";
|
| }
|
| } else {
|
| - $code .= JSValueToNativeStatement($attribute->type, $attribute->extendedAttributes, "jsValue", "cppValue", " ", "info.GetIsolate()");
|
| + my $asSetterValue = 0;
|
| + $code .= JSValueToNativeStatement($attribute->type, $attribute->extendedAttributes, $asSetterValue, "jsValue", "cppValue", " ", "info.GetIsolate()");
|
| }
|
|
|
| if (IsEnumType($attrType)) {
|
| @@ -2503,7 +2504,7 @@ sub GenerateParametersCheck
|
| $parameterCheckString .= " bool ${parameterName}IsNull = $jsValue->IsNull();\n";
|
| $stringResourceParameterName .= "StringResource";
|
| }
|
| - $parameterCheckString .= JSValueToNativeStatement($parameter->type, $parameter->extendedAttributes, $jsValue, $stringResourceParameterName, " ", "args.GetIsolate()");
|
| + $parameterCheckString .= JSValueToNativeStatement($parameter->type, $parameter->extendedAttributes, $humanFriendlyIndex, $jsValue, $stringResourceParameterName, " ", "args.GetIsolate()");
|
| $parameterCheckString .= " String $parameterName = $stringResourceParameterName;\n" if $isNullable;
|
| if (IsEnumType($parameter->type)) {
|
| my @enumValues = ValidEnumValues($parameter->type);
|
| @@ -2539,7 +2540,7 @@ sub GenerateParametersCheck
|
| my $jsValue = $parameter->isOptional && $default eq "NullString" ? "argumentOrNull(args, $paramIndex)" : "args[$paramIndex]";
|
| my $isNullable = $parameter->isNullable && !IsRefPtrType($parameter->type);
|
| $parameterCheckString .= " bool ${parameterName}IsNull = $jsValue->IsNull();\n" if $isNullable;
|
| - $parameterCheckString .= JSValueToNativeStatement($parameter->type, $parameter->extendedAttributes, $jsValue, $parameterName, " ", "args.GetIsolate()");
|
| + $parameterCheckString .= JSValueToNativeStatement($parameter->type, $parameter->extendedAttributes, $humanFriendlyIndex, $jsValue, $parameterName, " ", "args.GetIsolate()");
|
| if ($nativeType eq 'Dictionary' or $nativeType eq 'ScriptPromise') {
|
| $parameterCheckString .= " if (!$parameterName.isUndefinedOrNull() && !$parameterName.isObject()) {\n";
|
| if ($functionName eq "Constructor") {
|
| @@ -3499,10 +3500,12 @@ sub GenerateImplementationIndexedPropertySetter
|
| my $raisesExceptions = $indexedSetterFunction->extendedAttributes->{"RaisesException"};
|
| my $treatNullAs = $indexedSetterFunction->parameters->[1]->extendedAttributes->{"TreatNullAs"};
|
| my $treatUndefinedAs = $indexedSetterFunction->parameters->[1]->extendedAttributes->{"TreatUndefinedAs"};
|
| + my $asSetterValue = 0;
|
| +
|
| my $code = "static void indexedPropertySetter(uint32_t index, v8::Local<v8::Value> jsValue, const v8::PropertyCallbackInfo<v8::Value>& info)\n";
|
| $code .= "{\n";
|
| $code .= " ${implClassName}* collection = ${v8ClassName}::toNative(info.Holder());\n";
|
| - $code .= JSValueToNativeStatement($indexedSetterFunction->parameters->[1]->type, $indexedSetterFunction->extendedAttributes, "jsValue", "propertyValue", " ", "info.GetIsolate()");
|
| + $code .= JSValueToNativeStatement($indexedSetterFunction->parameters->[1]->type, $indexedSetterFunction->extendedAttributes, $asSetterValue, "jsValue", "propertyValue", " ", "info.GetIsolate()");
|
|
|
| my $extraArguments = "";
|
| if ($raisesExceptions) {
|
| @@ -3801,6 +3804,7 @@ sub GenerateImplementationNamedPropertySetter
|
| my $raisesExceptions = $namedSetterFunction->extendedAttributes->{"RaisesException"};
|
| my $treatNullAs = $namedSetterFunction->parameters->[1]->extendedAttributes->{"TreatNullAs"};
|
| my $treatUndefinedAs = $namedSetterFunction->parameters->[1]->extendedAttributes->{"TreatUndefinedAs"};
|
| + my $asSetterValue = 0;
|
|
|
| my $code = "static void namedPropertySetter(v8::Local<v8::String> name, v8::Local<v8::Value> jsValue, const v8::PropertyCallbackInfo<v8::Value>& info)\n";
|
| $code .= "{\n";
|
| @@ -3813,8 +3817,8 @@ sub GenerateImplementationNamedPropertySetter
|
| $code .= " return;\n";
|
| }
|
| $code .= " ${implClassName}* collection = ${v8ClassName}::toNative(info.Holder());\n";
|
| - $code .= JSValueToNativeStatement($namedSetterFunction->parameters->[0]->type, $namedSetterFunction->extendedAttributes, "name", "propertyName", " ", "info.GetIsolate()");
|
| - $code .= JSValueToNativeStatement($namedSetterFunction->parameters->[1]->type, $namedSetterFunction->extendedAttributes, "jsValue", "propertyValue", " ", "info.GetIsolate()");
|
| + $code .= JSValueToNativeStatement($namedSetterFunction->parameters->[0]->type, $namedSetterFunction->extendedAttributes, $asSetterValue, "name", "propertyName", " ", "info.GetIsolate()");
|
| + $code .= JSValueToNativeStatement($namedSetterFunction->parameters->[1]->type, $namedSetterFunction->extendedAttributes, $asSetterValue, "jsValue", "propertyValue", " ", "info.GetIsolate()");
|
| my $extraArguments = "";
|
| if ($raisesExceptions) {
|
| $code .= " ExceptionState es(info.GetIsolate());\n";
|
| @@ -5246,13 +5250,14 @@ sub JSValueToNativeStatement
|
| {
|
| my $type = shift;
|
| my $extendedAttributes = shift;
|
| + my $argIndexOrZero = shift;
|
| my $jsValue = shift;
|
| my $variableName = shift;
|
| my $indent = shift;
|
| my $getIsolate = shift;
|
|
|
| my $nativeType = GetNativeType($type, $extendedAttributes, "parameter");
|
| - my $native_value = JSValueToNative($type, $extendedAttributes, $jsValue, $getIsolate);
|
| + my $native_value = JSValueToNative($type, $extendedAttributes, $argIndexOrZero, $jsValue, $getIsolate);
|
| my $code = "";
|
| if ($type eq "DOMString" || IsEnumType($type)) {
|
| die "Wrong native type passed: $nativeType" unless $nativeType =~ /^V8StringResource/;
|
| @@ -5274,6 +5279,8 @@ sub JSValueToNative
|
| {
|
| my $type = shift;
|
| my $extendedAttributes = shift;
|
| + # Argument position (1-indexed) or 0 if for a setter's value.
|
| + my $argIndexOrZero = shift;
|
| my $value = shift;
|
| my $getIsolate = shift;
|
|
|
| @@ -5352,9 +5359,9 @@ sub JSValueToNative
|
| if ($arrayOrSequenceType) {
|
| if (IsRefPtrType($arrayOrSequenceType)) {
|
| AddToImplIncludes("V8${arrayOrSequenceType}.h");
|
| - return "(toRefPtrNativeArray<${arrayOrSequenceType}, V8${arrayOrSequenceType}>($value, $getIsolate))";
|
| + return "(toRefPtrNativeArray<${arrayOrSequenceType}, V8${arrayOrSequenceType}>($value, $argIndexOrZero, $getIsolate))";
|
| }
|
| - return "toNativeArray<" . GetNativeType($arrayOrSequenceType) . ">($value, $getIsolate)";
|
| + return "toNativeArray<" . GetNativeType($arrayOrSequenceType) . ">($value, $argIndexOrZero, $getIsolate)";
|
| }
|
|
|
| AddIncludesForType($type);
|
|
|