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

Unified Diff: Source/bindings/scripts/code_generator_v8.pm

Issue 38063003: Improve TypeError messages from failed array conversions. (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Improve TypeError messages from failed array conversions. Created 7 years, 2 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/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);
« no previous file with comments | « LayoutTests/fast/events/init-message-event-expected.txt ('k') | Source/bindings/scripts/unstable/v8_types.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698