Index: Source/bindings/scripts/CodeGeneratorV8.pm |
diff --git a/Source/bindings/scripts/CodeGeneratorV8.pm b/Source/bindings/scripts/CodeGeneratorV8.pm |
index 0aad18a030b23494e8edd8a8b9c808f42347b7be..30e5a512a344a49009b3ba56fcab99b4bac94c92 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 |
@@ -1655,6 +1662,9 @@ END |
my $reflect = $attribute->signature->extendedAttributes->{"Reflect"}; |
if ($reflect && InheritsInterface($interface, "Node") && IsStringType($attrType)) { |
# Generate super-compact call for regular attribute setter: |
+ if ($attribute->signature->extendedAttributes->{"ImplementedAs"}) { |
+ $attrName = $attribute->signature->extendedAttributes->{"ImplementedAs"}; |
+ } |
my $contentAttributeName = $reflect eq "VALUE_IS_MISSING" ? lc $attrName : $reflect; |
my $namespace = NamespaceForAttributeName($interfaceName, $contentAttributeName); |
AddToImplIncludes("${namespace}.h"); |