Index: Source/bindings/scripts/CodeGeneratorV8.pm |
diff --git a/Source/bindings/scripts/CodeGeneratorV8.pm b/Source/bindings/scripts/CodeGeneratorV8.pm |
index 0aad18a030b23494e8edd8a8b9c808f42347b7be..2f9c9a6341d654564d19c088fe4938228237d37a 100644 |
--- a/Source/bindings/scripts/CodeGeneratorV8.pm |
+++ b/Source/bindings/scripts/CodeGeneratorV8.pm |
@@ -96,7 +96,14 @@ my %handlifiedTypeHash = ( |
"WebKitCSSMatrix" => 1, |
); |
-my %partiallyHandlifiedTypeHash = (); |
+my %partiallyHandlifiedTypeHash = ( |
+ "HTMLKeygenElement" => 1, |
+ "HTMLOutputElement" => 1, |
+ "HTMLSelectElement" => 1, |
+ "HTMLInputElement" => 1, |
+ "HTMLTextAreaElement" => 1, |
+ "HTMLButtonElement" => 1, |
+); |
my %svgAnimatedTypeHash = ("SVGAnimatedAngle" => 1, "SVGAnimatedBoolean" => 1, |
"SVGAnimatedEnumeration" => 1, "SVGAnimatedInteger" => 1, |
@@ -1314,7 +1321,7 @@ END |
if ($attribute->signature->extendedAttributes->{"ImplementedBy"}) { |
my $implementedBy = $attribute->signature->extendedAttributes->{"ImplementedBy"}; |
AddInterfaceToImplIncludes($implementedBy); |
- unshift(@arguments, "imp") if !$attribute->isStatic; |
+ unshift(@arguments, $handlified ? "imp.raw()" : "imp") if !$attribute->isStatic; |
$functionName = "${implementedBy}::${functionName}"; |
} elsif ($attribute->isStatic) { |
$functionName = "${interfaceName}::${functionName}"; |
@@ -1485,7 +1492,7 @@ END |
return value; |
END |
} else { |
- $code .= " return " . NativeToJSValue($attribute->signature, $expression, "info.Holder()", "info.GetIsolate()", "info", "imp", "ReturnUnsafeHandle", $forMainWorldSuffix).";\n"; |
+ $code .= " return " . NativeToJSValue($attribute->signature, $expression, "info.Holder()", "info.GetIsolate()", "info", $handlified ? "imp.raw()" : "imp", "ReturnUnsafeHandle", $forMainWorldSuffix).";\n"; |
} |
$code .= "}\n\n"; # end of getter |
@@ -1654,7 +1661,6 @@ END |
} else { |
my $reflect = $attribute->signature->extendedAttributes->{"Reflect"}; |
if ($reflect && InheritsInterface($interface, "Node") && IsStringType($attrType)) { |
- # Generate super-compact call for regular attribute setter: |
my $contentAttributeName = $reflect eq "VALUE_IS_MISSING" ? lc $attrName : $reflect; |
my $namespace = NamespaceForAttributeName($interfaceName, $contentAttributeName); |
AddToImplIncludes("${namespace}.h"); |