Diff
Modified: trunk/Source/WebCore/ChangeLog (200298 => 200299)
--- trunk/Source/WebCore/ChangeLog 2016-04-30 22:06:21 UTC (rev 200298)
+++ trunk/Source/WebCore/ChangeLog 2016-05-01 04:17:54 UTC (rev 200299)
@@ -1,3 +1,70 @@
+2016-04-30 Darin Adler <[email protected]>
+
+ Streamline and remove unused bindings generation code
+ https://bugs.webkit.org/show_bug.cgi?id=157237
+
+ Reviewed by Chris Dumez.
+
+ * Modules/notifications/NotificationCenter.idl: Replace non-standard "int"
+ with standard "long", which means the same thing.
+
+ * bindings/scripts/CodeGenerator.pm:
+ (UpdateFile): Use a better perl idiom for open.
+ (IsTypedArrayType): Use a hash instead of a list of checks in the code.
+ (IsRefPtrType): Use GetArrayOrSequenceType. Add handling for "any", which
+ is not a "RefPtr" type.
+ (IsWrapperType): Build on top of IsRefPtr type so we don't have to repeat
+ the list.
+ (getInterfaceExtendedAttributesFromName): Added a FIXME about why this is no good.
+ (ComputeIsCallbackInterface): Renamed.
+ (IsCallbackInterface): Added a cache so we don't keep reading the same file
+ over and over again. Added a FIXME about why this is no good.
+ (ComputeIsFunctionOnlyCallbackInterface): Ditto.
+ (IsFunctionOnlyCallbackInterface): Ditto.
+
+ * bindings/scripts/CodeGeneratorJS.pm:
+ (AddIncludesForType): Use GetArrayOrSequenceType.
+ (IsScriptProfileType): Deleted.
+ (AddTypedefForScriptProfileType): Deleted.
+ (AddClassForwardIfNeeded): Streamlined the code and made the ScriptProfileNode
+ special case easier to read.
+ (GenerateParametersCheckExpression): Use GetArrayOrSequenceType.
+ (GetFunctionLength): Tweaked formatting and argument names.
+ (GenerateImplementation): Merged a couple checks into a single if statement.
+ (WillConvertUndefinedToDefaultParameterValue): Streamlined the function by
+ using a hash instead of a sequence of if statements for most cases.
+ (GetNativeType): Use GetArrayOrSequenceType.
+ (JSValueToNative): Do the integer conversion based on a hash rather than
+ with lots of separate lines of code. Moved more of the simple names down to
+ the bottom of the function and streamlined the logic. Removed unnecessary
+ includes of the DOM headers directly, since our header file includes those.
+ (NativeToJSValue): Factored out the global object handling so it works across
+ more cases. Simplified the logic for dates. Use IsNumericType instead of
+ IsPrimitiveType to guard code that is right only for the numeric types.
+ Removed code to handle "Symbol" since we don't ever use that.
+
+ * bindings/scripts/test/JS/JSTestCallback.cpp:
+ * bindings/scripts/test/JS/JSTestCallbackFunction.cpp:
+ * bindings/scripts/test/JS/JSTestInterface.cpp:
+ * bindings/scripts/test/JS/JSTestObj.cpp:
+ * bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.cpp:
+ Regenerated.
+
+ * bindings/scripts/test/TestObj.idl: Removed test coverage for Symbol, which
+ we never use anywhere.
+
+ * html/canvas/EXTBlendMinMax.idl: Replace non-standard "int" with standard
+ "long", which means the same thing.
+ * html/canvas/EXTTextureFilterAnisotropic.idl: Ditto.
+ * html/canvas/EXTsRGB.idl: Ditto.
+ * html/canvas/OESStandardDerivatives.idl: Ditto.
+ * html/canvas/OESVertexArrayObject.idl: Ditto.
+ * html/canvas/WebGLCompressedTextureATC.idl: Ditto.
+ * html/canvas/WebGLCompressedTexturePVRTC.idl: Ditto.
+ * html/canvas/WebGLCompressedTextureS3TC.idl: Ditto.
+ * html/canvas/WebGLDebugRendererInfo.idl: Ditto.
+ * html/canvas/WebGLDepthTexture.idl: Ditto.
+
2016-04-30 Chris Dumez <[email protected]>
[Web IDL] Pass even more types by reference
Modified: trunk/Source/WebCore/Modules/notifications/NotificationCenter.idl (200298 => 200299)
--- trunk/Source/WebCore/Modules/notifications/NotificationCenter.idl 2016-04-30 22:06:21 UTC (rev 200298)
+++ trunk/Source/WebCore/Modules/notifications/NotificationCenter.idl 2016-05-01 04:17:54 UTC (rev 200299)
@@ -30,13 +30,12 @@
*/
[
- NoInterfaceObject,
- Conditional=LEGACY_NOTIFICATIONS,
ActiveDOMObject,
+ Conditional=LEGACY_NOTIFICATIONS,
+ NoInterfaceObject,
] interface NotificationCenter {
[RaisesException] Notification createNotification(DOMString iconUrl, DOMString title, DOMString body);
- int checkPermission();
+ long checkPermission();
void requestPermission(optional VoidCallback? callback);
};
-
Modified: trunk/Source/WebCore/bindings/scripts/CodeGenerator.pm (200298 => 200299)
--- trunk/Source/WebCore/bindings/scripts/CodeGenerator.pm 2016-04-30 22:06:21 UTC (rev 200298)
+++ trunk/Source/WebCore/bindings/scripts/CodeGenerator.pm 2016-05-01 04:17:54 UTC (rev 200299)
@@ -71,6 +71,21 @@
my %enumTypeHash = ();
+my %typedArrayTypes = (
+ "ArrayBuffer" => 1,
+ "ArrayBufferView" => 1,
+ "DataView" => 1,
+ "Float32Array" => 1,
+ "Float64Array" => 1,
+ "Int16Array" => 1,
+ "Int32Array" => 1,
+ "Int8Array" => 1,
+ "Uint16Array" => 1,
+ "Uint32Array" => 1,
+ "Uint8Array" => 1,
+ "Uint8ClampedArray" => 1,
+);
+
my %nonPointerTypeHash = ( "DOMTimeStamp" => 1 );
my %svgAttributesInHTMLHash = (
@@ -204,7 +219,7 @@
my $fileName = shift;
my $contents = shift;
- open FH, "> $fileName" or die "Couldn't open $fileName: $!\n";
+ open FH, ">", $fileName or die "Couldn't open $fileName: $!\n";
print FH $contents;
close FH;
}
@@ -434,10 +449,8 @@
{
my $object = shift;
my $type = shift;
- return 1 if (($type eq "ArrayBuffer") or ($type eq "ArrayBufferView"));
- return 1 if (($type eq "Uint8Array") or ($type eq "Uint8ClampedArray") or ($type eq "Uint16Array") or ($type eq "Uint32Array"));
- return 1 if (($type eq "Int8Array") or ($type eq "Int16Array") or ($type eq "Int32Array"));
- return 1 if (($type eq "Float32Array") or ($type eq "Float64Array") or ($type eq "DataView"));
+
+ return 1 if $typedArrayTypes{$type};
return 0;
}
@@ -447,10 +460,10 @@
my $type = shift;
return 0 if $object->IsPrimitiveType($type);
- return 0 if $object->GetArrayType($type);
- return 0 if $object->GetSequenceType($type);
+ return 0 if $object->GetArrayOrSequenceType($type);
+ return 0 if $object->IsEnumType($type);
return 0 if $type eq "DOMString";
- return 0 if $object->IsEnumType($type);
+ return 0 if $type eq "any";
return 1;
}
@@ -696,27 +709,24 @@
my $object = shift;
my $type = shift;
- return 0 if $object->IsPrimitiveType($type);
- return 0 if $object->GetArrayType($type);
- return 0 if $object->GetSequenceType($type);
- return 0 if $object->IsEnumType($type);
- return 0 if $object->IsStringType($type);
+ return 0 if !$object->IsRefPtrType($type);
return 0 if $object->IsTypedArrayType($type);
return 0 if $webCoreTypeHash{$type};
- return 0 if $type eq "any";
return 1;
}
sub getInterfaceExtendedAttributesFromName
{
+ # FIXME: It's bad to have a function like this that opens another IDL file to answer a question.
+ # Overusing this kind of function can make things really slow. Lets avoid these if we can.
+
my $object = shift;
my $interfaceName = shift;
- my $idlFile = $object->IDLFileForInterface($interfaceName)
- or die("Could NOT find IDL file for interface \"$interfaceName\"!\n");
+ my $idlFile = $object->IDLFileForInterface($interfaceName) or die("Could NOT find IDL file for interface \"$interfaceName\"!\n");
- open FILE, "<", $idlFile;
+ open FILE, "<", $idlFile or die;
my @lines = <FILE>;
close FILE;
@@ -739,17 +749,16 @@
return $extendedAttributes;
}
-sub IsCallbackInterface
+sub ComputeIsCallbackInterface
{
my $object = shift;
my $type = shift;
return 0 unless $object->IsWrapperType($type);
- my $idlFile = $object->IDLFileForInterface($type)
- or die("Could NOT find IDL file for interface \"$type\"!\n");
+ my $idlFile = $object->IDLFileForInterface($type) or die("Could NOT find IDL file for interface \"$type\"!\n");
- open FILE, "<", $idlFile;
+ open FILE, "<", $idlFile or die;
my @lines = <FILE>;
close FILE;
@@ -757,20 +766,35 @@
return ($fileContents =~ /callback\s+interface\s+(\w+)/gs);
}
+my %isCallbackInterface = ();
+
+sub IsCallbackInterface
+{
+ # FIXME: It's bad to have a function like this that opens another IDL file to answer a question.
+ # Overusing this kind of function can make things really slow. Lets avoid these if we can.
+ # To mitigate that, lets cache what we learn in a hash so we don't open the same file over and over.
+
+ my ($object, $type) = @_;
+
+ return $isCallbackInterface{$type} if exists $isCallbackInterface{$type};
+ my $result = ComputeIsCallbackInterface($object, $type);
+ $isCallbackInterface{$type} = $result;
+ return $result;
+}
+
# Callback interface with [Callback=FunctionOnly].
# FIXME: This should be a callback function:
# https://heycam.github.io/webidl/#idl-callback-functions
-sub IsFunctionOnlyCallbackInterface
+sub ComputeIsFunctionOnlyCallbackInterface
{
my $object = shift;
my $type = shift;
return 0 unless $object->IsCallbackInterface($type);
- my $idlFile = $object->IDLFileForInterface($type)
- or die("Could NOT find IDL file for interface \"$type\"!\n");
+ my $idlFile = $object->IDLFileForInterface($type) or die("Could NOT find IDL file for interface \"$type\"!\n");
- open FILE, "<", $idlFile;
+ open FILE, "<", $idlFile or die;
my @lines = <FILE>;
close FILE;
@@ -791,6 +815,22 @@
return 0;
}
+my %isFunctionOnlyCallbackInterface = ();
+
+sub IsFunctionOnlyCallbackInterface
+{
+ # FIXME: It's bad to have a function like this that opens another IDL file to answer a question.
+ # Overusing this kind of function can make things really slow. Lets avoid these if we can.
+ # To mitigate that, lets cache what we learn in a hash so we don't open the same file over and over.
+
+ my ($object, $type) = @_;
+
+ return $isFunctionOnlyCallbackInterface{$type} if exists $isFunctionOnlyCallbackInterface{$type};
+ my $result = ComputeIsFunctionOnlyCallbackInterface($object, $type);
+ $isFunctionOnlyCallbackInterface{$type} = $result;
+ return $result;
+}
+
sub GenerateConditionalString
{
my $generator = shift;
@@ -933,6 +973,7 @@
return 0 if $parameter->isNullable;
return 0 if !$object->IsWrapperType($parameter->type) && !$object->IsTypedArrayType($parameter->type);
return 0 if $object->IsSVGTypeNeedingTearOff($parameter->type);
+
return 1;
}
Modified: trunk/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm (200298 => 200299)
--- trunk/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm 2016-04-30 22:06:21 UTC (rev 200298)
+++ trunk/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm 2016-05-01 04:17:54 UTC (rev 200299)
@@ -239,18 +239,15 @@
return if SkipIncludeHeader($type);
- # When we're finished with the one-file-per-class
- # reorganization, we won't need these special cases.
+ # When we're finished with the one-file-per-class reorganization, we won't need these special cases.
if ($type eq "XPathNSResolver") {
$includesRef->{"JSXPathNSResolver.h"} = 1;
$includesRef->{"JSCustomXPathNSResolver.h"} = 1;
} elsif ($isCallback && $codeGenerator->IsWrapperType($type)) {
$includesRef->{"JS${type}.h"} = 1;
- } elsif ($codeGenerator->GetSequenceType($type) or $codeGenerator->GetArrayType($type)) {
+ } elsif ($codeGenerator->GetArrayOrSequenceType($type)) {
my $arrayType = $codeGenerator->GetArrayType($type);
- my $sequenceType = $codeGenerator->GetSequenceType($type);
- my $arrayOrSequenceType = $arrayType || $sequenceType;
-
+ my $arrayOrSequenceType = $arrayType || $codeGenerator->GetSequenceType($type);
if ($arrayType eq "DOMString") {
$includesRef->{"JSDOMStringList.h"} = 1;
$includesRef->{"DOMStringList.h"} = 1;
@@ -280,39 +277,28 @@
}
}
-sub IsScriptProfileType
-{
- my $type = shift;
- return 1 if ($type eq "ScriptProfileNode");
- return 0;
-}
-
sub IsReadonly
{
my $attribute = shift;
return $attribute->isReadOnly && !$attribute->signature->extendedAttributes->{"Replaceable"} && !$attribute->signature->extendedAttributes->{"PutForwards"};
}
-sub AddTypedefForScriptProfileType
-{
- my $type = shift;
- (my $jscType = $type) =~ s/Script//;
-
- push(@headerContent, "typedef JSC::$jscType $type;\n\n");
-}
-
sub AddClassForwardIfNeeded
{
my $interfaceName = shift;
- # SVGAnimatedLength/Number/etc. are typedefs to SVGAnimatedTemplate, so don't use class forwards for them!
- unless ($codeGenerator->IsSVGAnimatedType($interfaceName) or IsScriptProfileType($interfaceName) or $codeGenerator->IsTypedArrayType($interfaceName)) {
- push(@headerContent, "class $interfaceName;\n\n");
- # ScriptProfile and ScriptProfileNode are typedefs to JSC::Profile and JSC::ProfileNode.
- } elsif (IsScriptProfileType($interfaceName)) {
+ if ($interfaceName eq "ScriptProfileNode") {
$headerIncludes{"<profiler/ProfileNode.h>"} = 1;
- AddTypedefForScriptProfileType($interfaceName);
+ push(@headerContent, "typedef JSC::ProfileNode ScriptProfileNode;\n\n");
+ return;
}
+
+ # SVGAnimatedLength/Number/etc. are typedefs and should not be forward-declared as classes.
+ return if $codeGenerator->IsSVGAnimatedType($interfaceName);
+
+ return if $codeGenerator->IsTypedArrayType($interfaceName);
+
+ push(@headerContent, "class $interfaceName;\n\n");
}
sub GetGenerateIsReachable
@@ -472,7 +458,7 @@
{
my ($interface) = @_;
- return 0 if ($interface->extendedAttributes->{"JSBuiltin"});
+ return 0 if $interface->extendedAttributes->{"JSBuiltin"};
return 1;
}
@@ -679,8 +665,7 @@
# FIXME: The bindings generator does not support putting runtime-enabled operations on the instance yet (except for global objects).
return 0 if $function->signature->extendedAttributes->{"EnabledAtRuntime"};
- # [Unforgeable] operations should be on the instance.
- # https://heycam.github.io/webidl/#Unforgeable
+ # [Unforgeable] operations should be on the instance. https://heycam.github.io/webidl/#Unforgeable
return 1 if IsUnforgeable($interface, $function);
return 0;
@@ -781,7 +766,6 @@
|| $hasNamedGetter;
return $numInstanceProperties > 0 || $hasComplexGetter;
-
}
sub PrototypeOverridesGetOwnPropertySlot
@@ -829,12 +813,14 @@
return $name;
}
-sub GetEnumerationClassName {
+sub GetEnumerationClassName
+{
my ($name) = @_;
return $codeGenerator->WK_ucfirst($name);
};
-sub GetEnumerationValueName {
+sub GetEnumerationValueName
+{
my ($name) = @_;
return "EmptyString" if $name eq "";
$name = join("", map { $codeGenerator->WK_ucfirst($_) } split("-", $name));
@@ -1577,7 +1563,7 @@
# http://heycam.github.io/webidl/#es-nullable-type
$condition .= "${value}.isNull() || " if $parameter->isNullable;
- if ($codeGenerator->GetArrayType($type) || $codeGenerator->GetSequenceType($type)) {
+ if ($codeGenerator->GetArrayOrSequenceType($type)) {
# FIXME: Add proper support for T[], T[]?, sequence<T>.
$condition .= "(${value}.isObject() && isJSArray(${value}))";
} else {
@@ -1593,20 +1579,19 @@
return ($res, sort {$a <=> $b} (keys %usedArguments));
}
-# As per Web IDL specification, the length of a function Object is
-# its number of mandatory parameters.
+# As per Web IDL specification, the length of a function Object is its number of mandatory parameters.
sub GetFunctionLength
{
- my $function = shift;
+ my $function = shift;
- my $numMandatoryParams = 0;
- foreach my $parameter (@{$function->parameters}) {
- # Abort as soon as we find the first optional parameter as no mandatory
- # parameter can follow an optional one.
- last if $parameter->isOptional || $parameter->isVariadic;
- $numMandatoryParams++;
- }
- return $numMandatoryParams;
+ my $length = 0;
+ foreach my $parameter (@{$function->parameters}) {
+ # Abort as soon as we find the first optional parameter as no mandatory
+ # parameter can follow an optional one.
+ last if $parameter->isOptional || $parameter->isVariadic;
+ $length++;
+ }
+ return $length;
}
sub GenerateFunctionParametersCheck
@@ -2844,15 +2829,12 @@
# is thrown rather than silently passing NULL to the C++ code.
# Per the Web IDL and ECMAScript specifications, incoming values can always be converted to
# both strings and numbers, so do not throw TypeError if the attribute is of these types.
- if ($attribute->signature->extendedAttributes->{"StrictTypeChecking"}) {
+ if ($codeGenerator->IsWrapperType($type) && $attribute->signature->extendedAttributes->{"StrictTypeChecking"}) {
$implIncludes{"<runtime/Error.h>"} = 1;
-
- if ($codeGenerator->IsWrapperType($type)) {
- push(@implContent, " if (UNLIKELY(!value.isUndefinedOrNull() && !value.inherits(JS${type}::info()))) {\n");
- push(@implContent, " throwAttributeTypeError(*state, \"$interfaceName\", \"$name\", \"$type\");\n");
- push(@implContent, " return false;\n");
- push(@implContent, " };\n");
- }
+ push(@implContent, " if (UNLIKELY(!value.isUndefinedOrNull() && !value.inherits(JS${type}::info()))) {\n");
+ push(@implContent, " throwAttributeTypeError(*state, \"$interfaceName\", \"$name\", \"$type\");\n");
+ push(@implContent, " return false;\n");
+ push(@implContent, " };\n");
}
push(@implContent, " " . GetNativeTypeFromSignature($attribute->signature) . " nativeValue = " . JSValueToNative($attribute->signature, "value", $attribute->signature->extendedAttributes->{"Conditional"}) . ";\n");
@@ -3475,43 +3457,49 @@
return 1;
}
-sub WillConvertUndefinedToDefaultParameterValue
-{
- my $parameterType = shift;
- my $defaultValue = shift;
+my %automaticallyGeneratedDefaultValues = (
+ "any" => "undefined",
- if ($defaultValue eq "[]") {
- # Dictionary(state, undefined) will construct an empty Dictionary.
- return 1 if $parameterType eq "Dictionary";
-
- # toRefPtrNativeArray() will convert undefined to an empty Vector.
- return 1 if $codeGenerator->GetArrayType($parameterType) or $codeGenerator->GetSequenceType($parameterType);
- }
-
# toString() will convert undefined to the string "undefined";
- return 1 if $parameterType eq "DOMString" and $defaultValue eq "\"undefined\"";
+ # (note that this optimizes a behavior that is almost never useful)
+ "DOMString" => "\"undefined\"",
- return 1 if $parameterType eq "any" and $defaultValue eq "undefined";
+ # Dictionary(state, undefined) will construct an empty Dictionary.
+ "Dictionary" => "[]",
# JSValue::toBoolean() will convert undefined to false.
- return 1 if $parameterType eq "boolean" and $defaultValue eq "false";
+ "boolean" => "false",
# JSValue::toInt*() / JSValue::toUint*() will convert undefined to 0.
- if ($defaultValue eq "0") {
- return 1 if $parameterType eq "byte" or $parameterType eq "octet";
- return 1 if $parameterType eq "short" or $parameterType eq "unsigned short";
- return 1 if $parameterType eq "long" or $parameterType eq "unsigned long";
- return 1 if $parameterType eq "long long" or $parameterType eq "unsigned long long";
- }
+ "byte" => "0",
+ "long long" => "0",
+ "long" => "0",
+ "octet" => "0",
+ "short" => "0",
+ "unsigned long long" => "0",
+ "unsigned long" => "0",
+ "unsigned short" => "0",
- if ($defaultValue eq "NaN") {
- # toNumber() / toFloat() convert undefined to NaN.
- return 1 if $parameterType eq "double" or $parameterType eq "unrestricted double";
- return 1 if $parameterType eq "float" or $parameterType eq "unrestricted float";
- }
+ # toNumber() / toFloat() convert undefined to NaN.
+ "double" => "NaN",
+ "float" => "NaN",
+ "unrestricted double" => "NaN",
+ "unrestricted float" => "NaN",
+);
- return 1 if $codeGenerator->IsWrapperType($parameterType) and $defaultValue eq "null";
+sub WillConvertUndefinedToDefaultParameterValue
+{
+ my $parameterType = shift;
+ my $defaultValue = shift;
+ my $automaticallyGeneratedDefaultValue = $automaticallyGeneratedDefaultValues{$parameterType};
+ return 1 if defined $automaticallyGeneratedDefaultValue && $automaticallyGeneratedDefaultValue eq $defaultValue;
+
+ # toRefPtrNativeArray() will convert undefined to an empty Vector.
+ return 1 if $defaultValue eq "[]" && $codeGenerator->GetArrayOrSequenceType($parameterType);
+
+ return 1 if $defaultValue eq "null" && $codeGenerator->IsWrapperType($parameterType);
+
return 0;
}
@@ -4265,26 +4253,25 @@
my %nativeType = (
"DOMString" => "String",
- "NodeFilter" => "RefPtr<NodeFilter>",
- "SerializedScriptValue" => "RefPtr<SerializedScriptValue>",
+ "DOMTimeStamp" => "DOMTimeStamp",
"Date" => "double",
"Dictionary" => "Dictionary",
+ "NodeFilter" => "RefPtr<NodeFilter>",
+ "SerializedScriptValue" => "RefPtr<SerializedScriptValue>",
"any" => "JSC::JSValue",
"boolean" => "bool",
+ "byte" => "int8_t",
"double" => "double",
"float" => "float",
+ "long long" => "long long",
+ "long" => "int",
+ "octet" => "uint8_t",
+ "short" => "int16_t",
"unrestricted double" => "double",
"unrestricted float" => "float",
- "short" => "int16_t",
- "long" => "int",
+ "unsigned long long" => "unsigned long long",
"unsigned long" => "unsigned",
"unsigned short" => "uint16_t",
- "long long" => "long long",
- "unsigned long long" => "unsigned long long",
- "byte" => "int8_t",
- "octet" => "uint8_t",
- "DOMTimeStamp" => "DOMTimeStamp",
- "Symbol" => "PrivateName"
);
sub GetNativeType
@@ -4299,9 +4286,7 @@
return "RefPtr<${type}>" if $codeGenerator->IsTypedArrayType($type) and not $type eq "ArrayBuffer";
return $nativeType{$type} if exists $nativeType{$type};
- my $arrayType = $codeGenerator->GetArrayType($type);
- my $sequenceType = $codeGenerator->GetSequenceType($type);
- my $arrayOrSequenceType = $arrayType || $sequenceType;
+ my $arrayOrSequenceType = $codeGenerator->GetArrayOrSequenceType($type);
return "Vector<" . GetNativeVectorInnerType($arrayOrSequenceType) . ">" if $arrayOrSequenceType;
return "String" if $codeGenerator->IsStringBasedEnumType($type);
@@ -4391,6 +4376,17 @@
return exists $nativeType{$type};
}
+my %integerConversionFunction = (
+ "byte" => "toInt8",
+ "long long" => "toInt64",
+ "long" => "toInt32",
+ "octet" => "toUInt8",
+ "short" => "toInt16",
+ "unsigned long long" => "toUInt64",
+ "unsigned long" => "toUInt32",
+ "unsigned short" => "toUInt16",
+);
+
sub JSValueToNative
{
my $signature = shift;
@@ -4399,24 +4395,14 @@
my $type = $signature->type;
- return "$value.toBoolean(state)" if $type eq "boolean";
- return "$value.toNumber(state)" if $type eq "double" or $type eq "unrestricted double" ;
- return "$value.toFloat(state)" if $type eq "float" or $type eq "unrestricted float" ;
+ my $function = $integerConversionFunction{$type};
+ if ($function) {
+ my $conversionType = "NormalConversion";
+ $conversionType = "EnforceRange" if $signature->extendedAttributes->{"EnforceRange"};
+ $conversionType = "Clamp" if $signature->extendedAttributes->{"Clamp"};
+ return "$function(state, $value, $conversionType)";
+ }
- my $intConversion = "NormalConversion";
- $intConversion = "EnforceRange" if $signature->extendedAttributes->{"EnforceRange"};
- $intConversion = "Clamp" if $signature->extendedAttributes->{"Clamp"};
- return "toInt8(state, $value, $intConversion)" if $type eq "byte";
- return "toUInt8(state, $value, $intConversion)" if $type eq "octet";
- return "toInt16(state, $value, $intConversion)" if $type eq "short";
- return "toUInt16(state, $value, $intConversion)" if $type eq "unsigned short";
- return "toInt32(state, $value, $intConversion)" if $type eq "long";
- return "toUInt32(state, $value, $intConversion)" if $type eq "unsigned long";
- return "toInt64(state, $value, $intConversion)" if $type eq "long long";
- return "toUInt64(state, $value, $intConversion)" if $type eq "unsigned long long";
-
- return "valueToDate(state, $value)" if $type eq "Date";
-
if ($type eq "DOMString") {
if ($signature->extendedAttributes->{"TreatNullAs"}) {
return "valueToStringTreatingNullAsEmptyString(state, $value)" if $signature->extendedAttributes->{"TreatNullAs"} eq "EmptyString";
@@ -4424,19 +4410,9 @@
}
return "valueToStringWithUndefinedOrNullCheck(state, $value)" if $signature->isNullable;
return "$value.toString(state)->toAtomicString(state)" if $signature->extendedAttributes->{"AtomicString"};
-
return "$value.toWTFString(state)";
}
- if ($type eq "any") {
- return $value;
- }
-
- if ($type eq "NodeFilter") {
- AddToImplIncludes("JS$type.h", $conditional);
- return "JS${type}::toWrapped(state->vm(), $value)";
- }
-
if ($type eq "SerializedScriptValue") {
AddToImplIncludes("SerializedScriptValue.h", $conditional);
return "SerializedScriptValue::create(state, $value, 0, 0)";
@@ -4447,22 +4423,7 @@
return "{ state, $value }";
}
- if ($type eq "DOMStringList" ) {
- AddToImplIncludes("JSDOMStringList.h", $conditional);
- return "toDOMStringList(state, $value)";
- }
-
- if ($codeGenerator->IsTypedArrayType($type)) {
- return "to$type($value)";
- }
-
- AddToImplIncludes("HTMLOptionElement.h", $conditional) if $type eq "HTMLOptionElement";
- AddToImplIncludes("Event.h", $conditional) if $type eq "Event";
-
- my $arrayType = $codeGenerator->GetArrayType($type);
- my $sequenceType = $codeGenerator->GetSequenceType($type);
- my $arrayOrSequenceType = $arrayType || $sequenceType;
-
+ my $arrayOrSequenceType = $codeGenerator->GetArrayOrSequenceType($type);
if ($arrayOrSequenceType) {
if ($codeGenerator->IsRefPtrType($arrayOrSequenceType)) {
AddToImplIncludes("JS${arrayOrSequenceType}.h");
@@ -4471,15 +4432,22 @@
return "toNativeArray<" . GetNativeVectorInnerType($arrayOrSequenceType) . ">(state, $value)";
}
- return "$value.toWTFString(state)" if $codeGenerator->IsStringBasedEnumType($type);
+ return $value if $type eq "any";
- if ($codeGenerator->IsEnumType($type)) {
- my $className = GetEnumerationClassName($type);
- return "parse$className(*state, $value)";
- }
+ return "$value.toBoolean(state)" if $type eq "boolean";
+ return "$value.toNumber(state)" if $type eq "double" or $type eq "unrestricted double";
+ return "$value.toFloat(state)" if $type eq "float" or $type eq "unrestricted float";
+ return "valueToDate(state, $value)" if $type eq "Date";
- # Default, assume autogenerated type conversion routines
+ return "to$type($value)" if $codeGenerator->IsTypedArrayType($type);
+ return "$value.toWTFString(state)" if $codeGenerator->IsStringBasedEnumType($type);
+ return "parse" . GetEnumerationClassName($type) . "(*state, $value)" if $codeGenerator->IsEnumType($type);
+
AddToImplIncludes("JS$type.h", $conditional);
+
+ return "toDOMStringList(state, $value)" if $type eq "DOMStringList";
+ return "JSNodeFilter::toWrapped(state->vm(), $value)" if $type eq "NodeFilter";
+
return "JS${type}::toWrapped($value)";
}
@@ -4494,32 +4462,24 @@
my $conditional = $signature->extendedAttributes->{"Conditional"};
my $type = $signature->type;
+ my $globalObject = $thisValue ? "$thisValue->globalObject()" : "jsCast<JSDOMGlobalObject*>(state->lexicalGlobalObject())";
+
return "jsBoolean($value)" if $type eq "boolean";
- # Need to check Date type before IsPrimitiveType().
if ($type eq "Date") {
- my $conv = $signature->extendedAttributes->{"TreatReturnedNaNDateAs"};
- if (defined $conv) {
- return "jsDateOrNull(state, $value)" if $conv eq "Null";
- return "jsDateOrNaN(state, $value)" if $conv eq "NaN";
-
- die "Unknown value for TreatReturnedNaNDateAs extended attribute";
- }
- return "jsDateOrNull(state, $value)";
+ my $handlingForNaN = $signature->extendedAttributes->{"TreatReturnedNaNDateAs"};
+ return "jsDateOrNull(state, $value)" if !defined $handlingForNaN || $handlingForNaN eq "Null";
+ return "jsDateOrNaN(state, $value)" if $handlingForNaN eq "NaN";
+ die "Unknown value for TreatReturnedNaNDateAs extended attribute";
}
- if ($type eq "Symbol") {
- AddToImplIncludes("<runtime/Symbol.h>", $conditional);
- return "Symbol::create(state->vm(), *($value).uid())";
- }
-
- if ($codeGenerator->IsPrimitiveType($type) or $type eq "DOMTimeStamp") {
+ if ($codeGenerator->IsNumericType($type) or $type eq "DOMTimeStamp") {
# We could instead overload a function to work with optional as well as non-optional numbers, but this
# is slightly better because it guarantees we will fail to compile if the IDL file doesn't match the C++.
my $function = $signature->isNullable ? "toNullableJSNumber" : "jsNumber";
if ($signature->extendedAttributes->{"Reflect"} and ($type eq "unsigned long" or $type eq "unsigned short")) {
$value =~ s/getUnsignedIntegralAttribute/getIntegralAttribute/g;
- return "$function(std::max(0, " . $value . "))";
+ $value = "std::max(0, $value)";
}
return "$function($value)";
}
@@ -4536,34 +4496,16 @@
return "jsStringWithCache(state, $value)";
}
- my $globalObject;
- if ($thisValue) {
- $globalObject = "$thisValue->globalObject()";
- }
-
- if ($type eq "CSSStyleDeclaration") {
- AddToImplIncludes("StyleProperties.h", $conditional);
- }
-
- if ($type eq "NodeList") {
- AddToImplIncludes("NameNodeList.h", $conditional);
- }
-
my $arrayType = $codeGenerator->GetArrayType($type);
- my $sequenceType = $codeGenerator->GetSequenceType($type);
- my $arrayOrSequenceType = $arrayType || $sequenceType;
+ my $arrayOrSequenceType = $arrayType || $codeGenerator->GetSequenceType($type);
if ($arrayOrSequenceType) {
if ($arrayType eq "DOMString") {
AddToImplIncludes("JSDOMStringList.h", $conditional);
- AddToImplIncludes("DOMStringList.h", $conditional);
-
} elsif ($codeGenerator->IsRefPtrType($arrayOrSequenceType)) {
AddToImplIncludes("JS${arrayOrSequenceType}.h", $conditional);
- AddToImplIncludes("${arrayOrSequenceType}.h", $conditional);
}
AddToImplIncludes("<runtime/JSArray.h>", $conditional);
-
return "jsArray(state, $globalObject, $value)";
}
@@ -4572,35 +4514,30 @@
if (defined $returnType and ($returnType eq "IDBKeyPath" or $returnType eq "IDBKey")) {
AddToImplIncludes("IDBBindingUtilities.h", $conditional);
return "toJS(*state, *$globalObject, $value)";
- } else {
- return $value;
}
- } elsif ($type eq "SerializedScriptValue") {
+ return $value;
+ }
+
+ if ($type eq "SerializedScriptValue") {
AddToImplIncludes("SerializedScriptValue.h", $conditional);
return "$value ? $value->deserialize(state, castedThis->globalObject(), 0) : jsNull()";
- } elsif ($codeGenerator->IsTypedArrayType($type)) {
- # Do nothing - all headers are already included.
- } else {
- # Default, include header with same name.
- AddToImplIncludes("JS$type.h", $conditional);
- AddToImplIncludes("$type.h", $conditional) if not $codeGenerator->SkipIncludeHeader($type);
}
+ AddToImplIncludes("StyleProperties.h", $conditional) if $type eq "CSSStyleDeclaration";
+ AddToImplIncludes("NameNodeList.h", $conditional) if $type eq "NodeList";
+ AddToImplIncludes("JS$type.h", $conditional) if !$codeGenerator->IsTypedArrayType($type);
+
return $value if $codeGenerator->IsSVGAnimatedType($type);
- if ($signature->extendedAttributes->{"NewObject"}) {
- return "toJSNewlyCreated(state, $globalObject, WTF::getPtr($value))";
- }
-
if ($codeGenerator->IsSVGAnimatedType($interfaceName) or ($interfaceName eq "SVGViewSpec" and $type eq "SVGTransformList")) {
# Convert from abstract RefPtr<ListProperty> to real type, so the right toJS() method can be invoked.
- $value = "static_cast<" . GetNativeType($type) . ">($value" . ".get())";
+ $value = "static_cast<" . GetNativeType($type) . ">($value.get())";
} elsif ($interfaceName eq "SVGViewSpec") {
# Convert from abstract SVGProperty to real type, so the right toJS() method can be invoked.
$value = "static_cast<" . GetNativeType($type) . ">($value)";
} elsif ($codeGenerator->IsSVGTypeNeedingTearOff($type) and not $interfaceName =~ /List$/) {
my $tearOffType = $codeGenerator->GetSVGTypeNeedingTearOff($type);
- if ($codeGenerator->IsSVGTypeWithWritablePropertiesNeedingTearOff($type) and $inFunctionCall eq 0 and not defined $signature->extendedAttributes->{"Immutable"}) {
+ if ($codeGenerator->IsSVGTypeWithWritablePropertiesNeedingTearOff($type) and !$inFunctionCall and not defined $signature->extendedAttributes->{"Immutable"}) {
my $getter = $value;
$getter =~ s/impl\.//;
$getter =~ s/impl->//;
@@ -4609,8 +4546,8 @@
my $selfIsTearOffType = $codeGenerator->IsSVGTypeNeedingTearOff($interfaceName);
if ($selfIsTearOffType) {
+ # FIXME: Why SVGMatrix specifically?
AddToImplIncludes("SVGMatrixTearOff.h", $conditional);
- # FIXME: Blink: Don't create a new one everytime we access the matrix property. This means, e.g, === won't work.
$value = "SVGMatrixTearOff::create(castedThis->wrapped(), $value)";
} else {
AddToImplIncludes("SVGStaticPropertyTearOff.h", $conditional);
@@ -4623,11 +4560,10 @@
$value = "${tearOffType}::create($value)";
}
}
- if ($globalObject) {
- return "toJS(state, $globalObject, WTF::getPtr($value))";
- } else {
- return "toJS(state, jsCast<JSDOMGlobalObject*>(state->lexicalGlobalObject()), WTF::getPtr($value))";
- }
+
+ my $function = $signature->extendedAttributes->{"NewObject"} ? "toJSNewlyCreated" : "toJS";
+
+ return "$function(state, $globalObject, WTF::getPtr($value))";
}
sub ceilingToPowerOf2
Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCallback.cpp (200298 => 200299)
--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCallback.cpp 2016-04-30 22:06:21 UTC (rev 200298)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCallback.cpp 2016-05-01 04:17:54 UTC (rev 200299)
@@ -24,13 +24,11 @@
#include "JSTestCallback.h"
-#include "DOMStringList.h"
#include "JSDOMConstructor.h"
#include "JSDOMStringList.h"
#include "JSTestNode.h"
#include "ScriptExecutionContext.h"
#include "SerializedScriptValue.h"
-#include "TestNode.h"
#include "URL.h"
#include <runtime/FunctionPrototype.h>
#include <runtime/JSLock.h>
Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCallbackFunction.cpp (200298 => 200299)
--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCallbackFunction.cpp 2016-04-30 22:06:21 UTC (rev 200298)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCallbackFunction.cpp 2016-05-01 04:17:54 UTC (rev 200299)
@@ -24,12 +24,10 @@
#include "JSTestCallbackFunction.h"
-#include "DOMStringList.h"
#include "JSDOMStringList.h"
#include "JSTestNode.h"
#include "ScriptExecutionContext.h"
#include "SerializedScriptValue.h"
-#include "TestNode.h"
#include "URL.h"
#include <runtime/JSLock.h>
#include <runtime/JSString.h>
Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestInterface.cpp (200298 => 200299)
--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestInterface.cpp 2016-04-30 22:06:21 UTC (rev 200298)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestInterface.cpp 2016-05-01 04:17:54 UTC (rev 200299)
@@ -40,7 +40,6 @@
#if ENABLE(Condition11) || ENABLE(Condition12) || ENABLE(Condition22) || ENABLE(Condition23)
#include "JSNode.h"
#include "JSTestObj.h"
-#include "Node.h"
#include "URL.h"
#include <runtime/JSString.h>
#endif
Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp (200298 => 200299)
--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp 2016-04-30 22:06:21 UTC (rev 200298)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp 2016-05-01 04:17:54 UTC (rev 200299)
@@ -54,7 +54,6 @@
#include "ScriptProfile.h"
#include "SerializedScriptValue.h"
#include "Settings.h"
-#include "TestNode.h"
#include "TestObj.h"
#include "URL.h"
#include "WebCoreJSClientData.h"
@@ -66,7 +65,6 @@
#include <runtime/JSArray.h>
#include <runtime/JSString.h>
#include <runtime/PropertyNameArray.h>
-#include <runtime/Symbol.h>
#include <wtf/GetPtr.h>
#if ENABLE(Condition1)
@@ -441,8 +439,6 @@
bool setJSTestObjXMLObjAttr(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue);
JSC::EncodedJSValue jsTestObjCreate(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
bool setJSTestObjCreate(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue);
-JSC::EncodedJSValue jsTestObjReadOnlySymbolAttr(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
-JSC::EncodedJSValue jsTestObjConstructorStaticReadOnlySymbolAttr(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
JSC::EncodedJSValue jsTestObjReflectedStringAttr(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
bool setJSTestObjReflectedStringAttr(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue);
JSC::EncodedJSValue jsTestObjReflectedIntegralAttr(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
@@ -665,7 +661,6 @@
{ "staticReadOnlyLongAttr", DontDelete | ReadOnly, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjConstructorStaticReadOnlyLongAttr), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(0) } },
{ "staticStringAttr", DontDelete, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjConstructorStaticStringAttr), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjConstructorStaticStringAttr) } },
{ "TestSubObj", DontDelete | ReadOnly, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjConstructorTestSubObj), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(0) } },
- { "staticReadOnlySymbolAttr", DontDelete | ReadOnly, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjConstructorStaticReadOnlySymbolAttr), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(0) } },
{ "nullableStringStaticMethod", JSC::Function, NoIntrinsic, { (intptr_t)static_cast<NativeFunction>(jsTestObjConstructorFunctionNullableStringStaticMethod), (intptr_t) (0) } },
{ "staticMethodWithCallbackAndOptionalArg", JSC::Function, NoIntrinsic, { (intptr_t)static_cast<NativeFunction>(jsTestObjConstructorFunctionStaticMethodWithCallbackAndOptionalArg), (intptr_t) (0) } },
{ "staticMethodWithCallbackArg", JSC::Function, NoIntrinsic, { (intptr_t)static_cast<NativeFunction>(jsTestObjConstructorFunctionStaticMethodWithCallbackArg), (intptr_t) (1) } },
@@ -752,7 +747,6 @@
{ "stringAttrTreatingNullAsEmptyString", CustomAccessor, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjStringAttrTreatingNullAsEmptyString), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjStringAttrTreatingNullAsEmptyString) } },
{ "XMLObjAttr", CustomAccessor, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjXMLObjAttr), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjXMLObjAttr) } },
{ "create", CustomAccessor, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjCreate), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjCreate) } },
- { "readOnlySymbolAttr", ReadOnly | CustomAccessor, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjReadOnlySymbolAttr), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(0) } },
{ "reflectedStringAttr", CustomAccessor, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjReflectedStringAttr), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjReflectedStringAttr) } },
{ "reflectedIntegralAttr", CustomAccessor, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjReflectedIntegralAttr), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjReflectedIntegralAttr) } },
{ "reflectedUnsignedIntegralAttr", CustomAccessor, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjReflectedUnsignedIntegralAttr), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjReflectedUnsignedIntegralAttr) } },
@@ -1410,30 +1404,6 @@
}
-EncodedJSValue jsTestObjReadOnlySymbolAttr(ExecState* state, EncodedJSValue thisValue, PropertyName)
-{
- UNUSED_PARAM(state);
- UNUSED_PARAM(thisValue);
- JSValue decodedThisValue = JSValue::decode(thisValue);
- auto* castedThis = jsDynamicCast<JSTestObj*>(decodedThisValue);
- if (UNLIKELY(!castedThis)) {
- return throwGetterTypeError(*state, "TestObj", "readOnlySymbolAttr");
- }
- auto& impl = castedThis->wrapped();
- JSValue result = Symbol::create(state->vm(), *(impl.readOnlySymbolAttr()).uid());
- return JSValue::encode(result);
-}
-
-
-EncodedJSValue jsTestObjConstructorStaticReadOnlySymbolAttr(ExecState* state, EncodedJSValue thisValue, PropertyName)
-{
- UNUSED_PARAM(state);
- UNUSED_PARAM(thisValue);
- JSValue result = Symbol::create(state->vm(), *(TestObj::staticReadOnlySymbolAttr()).uid());
- return JSValue::encode(result);
-}
-
-
EncodedJSValue jsTestObjReflectedStringAttr(ExecState* state, EncodedJSValue thisValue, PropertyName)
{
UNUSED_PARAM(state);
Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.cpp (200298 => 200299)
--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.cpp 2016-04-30 22:06:21 UTC (rev 200298)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.cpp 2016-05-01 04:17:54 UTC (rev 200299)
@@ -27,7 +27,6 @@
#include "JSDOMBinding.h"
#include "JSDOMConstructor.h"
#include "JSMessagePort.h"
-#include "MessagePort.h"
#include "SerializedScriptValue.h"
#include <runtime/FunctionPrototype.h>
#include <runtime/JSArray.h>
Modified: trunk/Source/WebCore/bindings/scripts/test/TestObj.idl (200298 => 200299)
--- trunk/Source/WebCore/bindings/scripts/test/TestObj.idl 2016-04-30 22:06:21 UTC (rev 200298)
+++ trunk/Source/WebCore/bindings/scripts/test/TestObj.idl 2016-05-01 04:17:54 UTC (rev 200299)
@@ -71,10 +71,6 @@
attribute TestObj XMLObjAttr;
attribute boolean create;
- // Readonly Symbol typed attributes.
- readonly attribute Symbol readOnlySymbolAttr;
- static readonly attribute Symbol staticReadOnlySymbolAttr;
-
// Reflected DOM attributes
[Reflect] attribute DOMString reflectedStringAttr;
[Reflect] attribute long reflectedIntegralAttr;
Modified: trunk/Source/WebCore/html/canvas/EXTBlendMinMax.idl (200298 => 200299)
--- trunk/Source/WebCore/html/canvas/EXTBlendMinMax.idl 2016-04-30 22:06:21 UTC (rev 200298)
+++ trunk/Source/WebCore/html/canvas/EXTBlendMinMax.idl 2016-05-01 04:17:54 UTC (rev 200299)
@@ -24,10 +24,10 @@
*/
[
+ Conditional=WEBGL,
+ GenerateIsReachable=ImplWebGLRenderingContext,
NoInterfaceObject,
- Conditional=WEBGL,
- GenerateIsReachable=ImplWebGLRenderingContext
] interface EXTBlendMinMax {
- const unsigned int MIN_EXT = 0x8007;
- const unsigned int MAX_EXT = 0x8008;
+ const unsigned long MIN_EXT = 0x8007;
+ const unsigned long MAX_EXT = 0x8008;
};
Modified: trunk/Source/WebCore/html/canvas/EXTTextureFilterAnisotropic.idl (200298 => 200299)
--- trunk/Source/WebCore/html/canvas/EXTTextureFilterAnisotropic.idl 2016-04-30 22:06:21 UTC (rev 200298)
+++ trunk/Source/WebCore/html/canvas/EXTTextureFilterAnisotropic.idl 2016-05-01 04:17:54 UTC (rev 200299)
@@ -24,11 +24,10 @@
*/
[
- NoInterfaceObject,
Conditional=WEBGL,
GenerateIsReachable=ImplWebGLRenderingContext,
- DoNotCheckConstants
+ NoInterfaceObject,
] interface EXTTextureFilterAnisotropic {
- const unsigned int TEXTURE_MAX_ANISOTROPY_EXT = 0x84FE;
- const unsigned int MAX_TEXTURE_MAX_ANISOTROPY_EXT = 0x84FF;
+ const unsigned long TEXTURE_MAX_ANISOTROPY_EXT = 0x84FE;
+ const unsigned long MAX_TEXTURE_MAX_ANISOTROPY_EXT = 0x84FF;
};
Modified: trunk/Source/WebCore/html/canvas/EXTsRGB.idl (200298 => 200299)
--- trunk/Source/WebCore/html/canvas/EXTsRGB.idl 2016-04-30 22:06:21 UTC (rev 200298)
+++ trunk/Source/WebCore/html/canvas/EXTsRGB.idl 2016-05-01 04:17:54 UTC (rev 200299)
@@ -24,12 +24,12 @@
*/
[
+ Conditional=WEBGL,
+ GenerateIsReachable=ImplWebGLRenderingContext,
NoInterfaceObject,
- Conditional=WEBGL,
- GenerateIsReachable=ImplWebGLRenderingContext
] interface EXTsRGB {
- const unsigned int SRGB_EXT = 0x8C40;
- const unsigned int SRGB_ALPHA_EXT = 0x8C42;
- const unsigned int SRGB8_ALPHA8_EXT = 0x8C43;
- const unsigned int FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING_EXT = 0x8210;
+ const unsigned long SRGB_EXT = 0x8C40;
+ const unsigned long SRGB_ALPHA_EXT = 0x8C42;
+ const unsigned long SRGB8_ALPHA8_EXT = 0x8C43;
+ const unsigned long FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING_EXT = 0x8210;
};
Modified: trunk/Source/WebCore/html/canvas/OESStandardDerivatives.idl (200298 => 200299)
--- trunk/Source/WebCore/html/canvas/OESStandardDerivatives.idl 2016-04-30 22:06:21 UTC (rev 200298)
+++ trunk/Source/WebCore/html/canvas/OESStandardDerivatives.idl 2016-05-01 04:17:54 UTC (rev 200299)
@@ -24,10 +24,10 @@
*/
[
- NoInterfaceObject,
Conditional=WEBGL,
+ DoNotCheckConstants,
GenerateIsReachable=ImplWebGLRenderingContext,
- DoNotCheckConstants
+ NoInterfaceObject,
] interface OESStandardDerivatives {
- const unsigned int FRAGMENT_SHADER_DERIVATIVE_HINT_OES = 0x8B8B;
+ const unsigned long FRAGMENT_SHADER_DERIVATIVE_HINT_OES = 0x8B8B;
};
Modified: trunk/Source/WebCore/html/canvas/OESVertexArrayObject.idl (200298 => 200299)
--- trunk/Source/WebCore/html/canvas/OESVertexArrayObject.idl 2016-04-30 22:06:21 UTC (rev 200298)
+++ trunk/Source/WebCore/html/canvas/OESVertexArrayObject.idl 2016-05-01 04:17:54 UTC (rev 200299)
@@ -29,8 +29,8 @@
GenerateIsReachable=ImplWebGLRenderingContext,
NoInterfaceObject,
] interface OESVertexArrayObject {
- const unsigned int VERTEX_ARRAY_BINDING_OES = 0x85B5;
-
+ const unsigned long VERTEX_ARRAY_BINDING_OES = 0x85B5;
+
[StrictTypeChecking] WebGLVertexArrayObjectOES createVertexArrayOES();
[StrictTypeChecking] void deleteVertexArrayOES(optional WebGLVertexArrayObjectOES? arrayObject = null);
[StrictTypeChecking] boolean isVertexArrayOES(optional WebGLVertexArrayObjectOES? arrayObject = null);
Modified: trunk/Source/WebCore/html/canvas/WebGLCompressedTextureATC.idl (200298 => 200299)
--- trunk/Source/WebCore/html/canvas/WebGLCompressedTextureATC.idl 2016-04-30 22:06:21 UTC (rev 200298)
+++ trunk/Source/WebCore/html/canvas/WebGLCompressedTextureATC.idl 2016-05-01 04:17:54 UTC (rev 200299)
@@ -24,13 +24,12 @@
*/
[
- NoInterfaceObject,
Conditional=WEBGL,
+ DoNotCheckConstants,
GenerateIsReachable=ImplWebGLRenderingContext,
- DoNotCheckConstants
+ NoInterfaceObject,
] interface WebGLCompressedTextureATC {
- /* Compressed Texture Formats */
- const unsigned int COMPRESSED_RGB_ATC_WEBGL = 0x8C92;
- const unsigned int COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL = 0x8C93;
- const unsigned int COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL = 0x87EE;
+ const unsigned long COMPRESSED_RGB_ATC_WEBGL = 0x8C92;
+ const unsigned long COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL = 0x8C93;
+ const unsigned long COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL = 0x87EE;
};
Modified: trunk/Source/WebCore/html/canvas/WebGLCompressedTexturePVRTC.idl (200298 => 200299)
--- trunk/Source/WebCore/html/canvas/WebGLCompressedTexturePVRTC.idl 2016-04-30 22:06:21 UTC (rev 200298)
+++ trunk/Source/WebCore/html/canvas/WebGLCompressedTexturePVRTC.idl 2016-05-01 04:17:54 UTC (rev 200299)
@@ -24,14 +24,13 @@
*/
[
- NoInterfaceObject,
Conditional=WEBGL,
+ DoNotCheckConstants,
GenerateIsReachable=ImplWebGLRenderingContext,
- DoNotCheckConstants
+ NoInterfaceObject,
] interface WebGLCompressedTexturePVRTC {
- /* Compressed Texture Formats */
- const unsigned int COMPRESSED_RGB_PVRTC_4BPPV1_IMG = 0x8C00;
- const unsigned int COMPRESSED_RGB_PVRTC_2BPPV1_IMG = 0x8C01;
- const unsigned int COMPRESSED_RGBA_PVRTC_4BPPV1_IMG = 0x8C02;
- const unsigned int COMPRESSED_RGBA_PVRTC_2BPPV1_IMG = 0x8C03;
+ const unsigned long COMPRESSED_RGB_PVRTC_4BPPV1_IMG = 0x8C00;
+ const unsigned long COMPRESSED_RGB_PVRTC_2BPPV1_IMG = 0x8C01;
+ const unsigned long COMPRESSED_RGBA_PVRTC_4BPPV1_IMG = 0x8C02;
+ const unsigned long COMPRESSED_RGBA_PVRTC_2BPPV1_IMG = 0x8C03;
};
Modified: trunk/Source/WebCore/html/canvas/WebGLCompressedTextureS3TC.idl (200298 => 200299)
--- trunk/Source/WebCore/html/canvas/WebGLCompressedTextureS3TC.idl 2016-04-30 22:06:21 UTC (rev 200298)
+++ trunk/Source/WebCore/html/canvas/WebGLCompressedTextureS3TC.idl 2016-05-01 04:17:54 UTC (rev 200299)
@@ -24,14 +24,13 @@
*/
[
- NoInterfaceObject,
Conditional=WEBGL,
+ DoNotCheckConstants,
GenerateIsReachable=ImplWebGLRenderingContext,
- DoNotCheckConstants
+ NoInterfaceObject,
] interface WebGLCompressedTextureS3TC {
- /* Compressed Texture Formats */
- const unsigned int COMPRESSED_RGB_S3TC_DXT1_EXT = 0x83F0;
- const unsigned int COMPRESSED_RGBA_S3TC_DXT1_EXT = 0x83F1;
- const unsigned int COMPRESSED_RGBA_S3TC_DXT3_EXT = 0x83F2;
- const unsigned int COMPRESSED_RGBA_S3TC_DXT5_EXT = 0x83F3;
+ const unsigned long COMPRESSED_RGB_S3TC_DXT1_EXT = 0x83F0;
+ const unsigned long COMPRESSED_RGBA_S3TC_DXT1_EXT = 0x83F1;
+ const unsigned long COMPRESSED_RGBA_S3TC_DXT3_EXT = 0x83F2;
+ const unsigned long COMPRESSED_RGBA_S3TC_DXT5_EXT = 0x83F3;
};
Modified: trunk/Source/WebCore/html/canvas/WebGLDebugRendererInfo.idl (200298 => 200299)
--- trunk/Source/WebCore/html/canvas/WebGLDebugRendererInfo.idl 2016-04-30 22:06:21 UTC (rev 200298)
+++ trunk/Source/WebCore/html/canvas/WebGLDebugRendererInfo.idl 2016-05-01 04:17:54 UTC (rev 200299)
@@ -24,11 +24,11 @@
*/
[
- NoInterfaceObject,
Conditional=WEBGL,
+ DoNotCheckConstants,
GenerateIsReachable=ImplWebGLRenderingContext,
- DoNotCheckConstants
+ NoInterfaceObject,
] interface WebGLDebugRendererInfo {
- const unsigned int UNMASKED_VENDOR_WEBGL = 0x9245;
- const unsigned int UNMASKED_RENDERER_WEBGL = 0x9246;
+ const unsigned long UNMASKED_VENDOR_WEBGL = 0x9245;
+ const unsigned long UNMASKED_RENDERER_WEBGL = 0x9246;
};
Modified: trunk/Source/WebCore/html/canvas/WebGLDepthTexture.idl (200298 => 200299)
--- trunk/Source/WebCore/html/canvas/WebGLDepthTexture.idl 2016-04-30 22:06:21 UTC (rev 200298)
+++ trunk/Source/WebCore/html/canvas/WebGLDepthTexture.idl 2016-05-01 04:17:54 UTC (rev 200299)
@@ -24,10 +24,10 @@
*/
[
- NoInterfaceObject,
Conditional=WEBGL,
+ DoNotCheckConstants,
GenerateIsReachable=ImplWebGLRenderingContext,
- DoNotCheckConstants
+ NoInterfaceObject,
] interface WebGLDepthTexture {
- const unsigned int UNSIGNED_INT_24_8_WEBGL = 0x84FA;
+ const unsigned long UNSIGNED_INT_24_8_WEBGL = 0x84FA;
};
Modified: trunk/Tools/ChangeLog (200298 => 200299)
--- trunk/Tools/ChangeLog 2016-04-30 22:06:21 UTC (rev 200298)
+++ trunk/Tools/ChangeLog 2016-05-01 04:17:54 UTC (rev 200299)
@@ -1,5 +1,17 @@
2016-04-30 Darin Adler <[email protected]>
+ Streamline and remove unused bindings generation code
+ https://bugs.webkit.org/show_bug.cgi?id=157237
+
+ Reviewed by Chris Dumez.
+
+ * WebKitTestRunner/InjectedBundle/Bindings/AccessibilityController.idl:
+ * WebKitTestRunner/InjectedBundle/Bindings/AccessibilityUIElement.idl:
+ * WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl:
+ Replace non-standard "int" with standard "long", which means the same thing.
+
+2016-04-30 Darin Adler <[email protected]>
+
Next batch of conversions to use C++ enum class instead of strings for enumerations
https://bugs.webkit.org/show_bug.cgi?id=157232
Modified: trunk/Tools/WebKitTestRunner/InjectedBundle/Bindings/AccessibilityController.idl (200298 => 200299)
--- trunk/Tools/WebKitTestRunner/InjectedBundle/Bindings/AccessibilityController.idl 2016-04-30 22:06:21 UTC (rev 200298)
+++ trunk/Tools/WebKitTestRunner/InjectedBundle/Bindings/AccessibilityController.idl 2016-05-01 04:17:54 UTC (rev 200299)
@@ -30,7 +30,7 @@
readonly attribute DOMString platformName;
readonly attribute AccessibilityUIElement rootElement;
readonly attribute AccessibilityUIElement focusedElement;
- AccessibilityUIElement elementAtPoint(int x, int y);
+ AccessibilityUIElement elementAtPoint(long x, long y);
AccessibilityUIElement accessibleElementById(DOMString id);
boolean addNotificationListener(object functionCallback);
Modified: trunk/Tools/WebKitTestRunner/InjectedBundle/Bindings/AccessibilityUIElement.idl (200298 => 200299)
--- trunk/Tools/WebKitTestRunner/InjectedBundle/Bindings/AccessibilityUIElement.idl 2016-04-30 22:06:21 UTC (rev 200298)
+++ trunk/Tools/WebKitTestRunner/InjectedBundle/Bindings/AccessibilityUIElement.idl 2016-05-01 04:17:54 UTC (rev 200299)
@@ -31,7 +31,7 @@
readonly attribute DOMString documentURI;
// Element access.
- AccessibilityUIElement elementAtPoint(int x, int y);
+ AccessibilityUIElement elementAtPoint(long x, long y);
AccessibilityUIElement childAtIndex(unsigned long index);
unsigned long indexOfChild(AccessibilityUIElement child);
AccessibilityUIElement linkedUIElementAtIndex(unsigned long index);
@@ -54,7 +54,7 @@
readonly attribute DOMString url;
readonly attribute DOMString speak;
readonly attribute DOMString orientation;
- readonly attribute int insertionPointLineNumber;
+ readonly attribute long insertionPointLineNumber;
readonly attribute DOMString selectedTextRange;
DOMString stringAttributeValue(DOMString attr);
@@ -70,9 +70,9 @@
boolean isDecrementActionSupported();
readonly attribute DOMString stringValue;
- readonly attribute int intValue;
- readonly attribute int minValue;
- readonly attribute int maxValue;
+ readonly attribute long intValue;
+ readonly attribute long minValue;
+ readonly attribute long maxValue;
readonly attribute boolean isEnabled;
readonly attribute boolean isRequired;
@@ -91,22 +91,22 @@
readonly attribute boolean isIgnored;
readonly attribute boolean isOffScreen;
readonly attribute boolean isValid;
- readonly attribute int hierarchicalLevel;
+ readonly attribute long hierarchicalLevel;
readonly attribute boolean ariaIsGrabbed;
readonly attribute DOMString ariaDropEffects;
readonly attribute DOMString classList;
- readonly attribute int x;
- readonly attribute int y;
- readonly attribute int width;
- readonly attribute int height;
- readonly attribute int clickPointX;
- readonly attribute int clickPointY;
+ readonly attribute long x;
+ readonly attribute long y;
+ readonly attribute long width;
+ readonly attribute long height;
+ readonly attribute long clickPointX;
+ readonly attribute long clickPointY;
- readonly attribute int childrenCount;
- readonly attribute int selectedChildrenCount;
- readonly attribute int rowCount;
- readonly attribute int columnCount;
+ readonly attribute long childrenCount;
+ readonly attribute long selectedChildrenCount;
+ readonly attribute long rowCount;
+ readonly attribute long columnCount;
// Actions.
void increment();
@@ -121,10 +121,10 @@
DOMString attributesOfDocumentLinks();
// Text info.
- DOMString characterAtOffset(int offset);
- DOMString wordAtOffset(int offset);
- DOMString lineAtOffset(int offset);
- DOMString sentenceAtOffset(int offset);
+ DOMString characterAtOffset(long offset);
+ DOMString wordAtOffset(long offset);
+ DOMString lineAtOffset(long offset);
+ DOMString sentenceAtOffset(long offset);
// Table info.
DOMString attributesOfColumnHeaders();
@@ -138,11 +138,11 @@
AccessibilityUIElement disclosedByRow();
AccessibilityUIElement disclosedRowAtIndex(unsigned long index);
AccessibilityUIElement rowAtIndex(unsigned long index);
- int indexInTable();
+ long indexInTable();
DOMString rowIndexRange();
DOMString columnIndexRange();
- int rowCount();
- int columnCount();
+ long rowCount();
+ long columnCount();
object columnHeaders();
object rowHeaders();
@@ -152,14 +152,14 @@
// Paramaterized attributes.
DOMString parameterizedAttributeNames();
- int lineForIndex(int index);
- DOMString rangeForLine(int index);
- DOMString rangeForPosition(int x, int y);
+ long lineForIndex(long index);
+ DOMString rangeForLine(long index);
+ DOMString rangeForPosition(long x, long y);
DOMString boundsForRange(unsigned long location, unsigned long length);
DOMString stringForRange(unsigned long location, unsigned long length);
DOMString attributedStringForRange(unsigned long location, unsigned long length);
boolean attributedStringRangeIsMisspelled(unsigned long location, unsigned long length);
- [PassContext] unsigned int uiElementCountForSearchPredicate(AccessibilityUIElement startElement, boolean isDirectionNext, object searchKey, DOMString searchText, boolean visibleOnly, boolean immediateDescendantsOnly);
+ [PassContext] unsigned long uiElementCountForSearchPredicate(AccessibilityUIElement startElement, boolean isDirectionNext, object searchKey, DOMString searchText, boolean visibleOnly, boolean immediateDescendantsOnly);
[PassContext] AccessibilityUIElement uiElementForSearchPredicate(AccessibilityUIElement startElement, boolean isDirectionNext, object searchKey, DOMString searchText, boolean visibleOnly, boolean immediateDescendantsOnly);
[PassContext] DOMString selectTextWithCriteria(DOMString ambiguityResolution, object searchStrings, DOMString replacementString, DOMString activity);
boolean setSelectedTextRange(unsigned long location, unsigned long length);
@@ -169,8 +169,8 @@
readonly attribute AccessibilityUIElement verticalScrollbar;
void scrollToMakeVisible();
- void scrollToGlobalPoint(int x, int y);
- void scrollToMakeVisibleWithSubFocus(int x, int y, int width, int height);
+ void scrollToGlobalPoint(long x, long y);
+ void scrollToMakeVisibleWithSubFocus(long x, long y, long width, long height);
void takeFocus();
boolean scrollPageDown();
@@ -186,18 +186,18 @@
void resetSelectedTextMarkerRange();
AccessibilityTextMarker startTextMarkerForTextMarkerRange(AccessibilityTextMarkerRange range);
AccessibilityTextMarker endTextMarkerForTextMarkerRange(AccessibilityTextMarkerRange range);
- AccessibilityTextMarker endTextMarkerForBounds(int x, int y, int width, int height);
- AccessibilityTextMarker startTextMarkerForBounds(int x, int y, int width, int height);
- AccessibilityTextMarker textMarkerForPoint(int x, int y);
+ AccessibilityTextMarker endTextMarkerForBounds(long x, long y, long width, long height);
+ AccessibilityTextMarker startTextMarkerForBounds(long x, long y, long width, long height);
+ AccessibilityTextMarker textMarkerForPoint(long x, long y);
AccessibilityTextMarker previousTextMarker(AccessibilityTextMarker marker);
AccessibilityTextMarker nextTextMarker(AccessibilityTextMarker marker);
AccessibilityUIElement accessibilityElementForTextMarker(AccessibilityTextMarker marker);
DOMString stringForTextMarkerRange(AccessibilityTextMarkerRange range);
- int textMarkerRangeLength(AccessibilityTextMarkerRange range);
+ long textMarkerRangeLength(AccessibilityTextMarkerRange range);
boolean attributedStringForTextMarkerRangeContainsAttribute(DOMString attr, AccessibilityTextMarkerRange range);
- int indexForTextMarker(AccessibilityTextMarker marker);
+ long indexForTextMarker(AccessibilityTextMarker marker);
boolean isTextMarkerValid(AccessibilityTextMarker marker);
- AccessibilityTextMarker textMarkerForIndex(int textIndex);
+ AccessibilityTextMarker textMarkerForIndex(long textIndex);
readonly attribute AccessibilityTextMarker startTextMarker;
readonly attribute AccessibilityTextMarker endTextMarker;
boolean setSelectedVisibleTextRange(AccessibilityTextMarkerRange range);
@@ -222,8 +222,8 @@
// iOS specific accessibility methods.
readonly attribute DOMString identifier;
readonly attribute DOMString traits;
- readonly attribute int elementTextPosition;
- readonly attribute int elementTextLength;
+ readonly attribute long elementTextPosition;
+ readonly attribute long elementTextLength;
readonly attribute DOMString stringForSelection;
object elementsForRange(unsigned long location, unsigned long length);
void increaseTextSelection();
Modified: trunk/Tools/WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl (200298 => 200299)
--- trunk/Tools/WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl 2016-04-30 22:06:21 UTC (rev 200298)
+++ trunk/Tools/WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl 2016-05-01 04:17:54 UTC (rev 200299)
@@ -74,7 +74,7 @@
void setTabKeyCyclesThroughElements(boolean enabled);
void setSerializeHTTPLoads();
void dispatchPendingLoadRequests();
- void setCacheModel(int model);
+ void setCacheModel(long model);
void setAsynchronousSpellCheckingEnabled(boolean value);
void setPrinting();
void setShouldDecideNavigationPolicyAfterDelay(boolean value);
@@ -95,7 +95,7 @@
void display();
// Printing
- boolean isPageBoxVisible(int pageIndex);
+ boolean isPageBoxVisible(long pageIndex);
[PassContext] void setValueForUser(object element, DOMString value);