Diff
Modified: trunk/LayoutTests/ChangeLog (134463 => 134464)
--- trunk/LayoutTests/ChangeLog 2012-11-13 20:11:53 UTC (rev 134463)
+++ trunk/LayoutTests/ChangeLog 2012-11-13 20:17:55 UTC (rev 134464)
@@ -1,3 +1,15 @@
+2012-11-13 Sheriff Bot <[email protected]>
+
+ Unreviewed, rolling out r133944.
+ http://trac.webkit.org/changeset/133944
+ https://bugs.webkit.org/show_bug.cgi?id=102118
+
+ Only JS bindings support NATIVE_TYPE_ERR (Requested by arv on
+ #webkit).
+
+ * fast/dom/Element/attr-param-typechecking-expected.txt:
+ * fast/dom/Element/script-tests/attr-param-typechecking.js:
+
2012-11-13 Dana Jansens <[email protected]>
Unreviewed test expectations for animation tests.
Modified: trunk/LayoutTests/fast/dom/Element/attr-param-typechecking-expected.txt (134463 => 134464)
--- trunk/LayoutTests/fast/dom/Element/attr-param-typechecking-expected.txt 2012-11-13 20:11:53 UTC (rev 134463)
+++ trunk/LayoutTests/fast/dom/Element/attr-param-typechecking-expected.txt 2012-11-13 20:17:55 UTC (rev 134464)
@@ -3,21 +3,18 @@
On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
-PASS element.setAttributeNode(); threw exception TypeError: Not enough arguments.
-PASS element.setAttributeNodeNS(); threw exception TypeError: Not enough arguments.
-PASS element.removeAttributeNode(); threw exception TypeError: Not enough arguments.
-PASS element.setAttributeNode("style"); threw exception TypeError: Type error.
-PASS element.setAttributeNode(null); threw exception TypeError: Type error.
-PASS element.setAttributeNode(undefined); threw exception TypeError: Type error.
-PASS element.setAttributeNode(new Object); threw exception TypeError: Type error.
-PASS element.removeAttributeNode("style"); threw exception TypeError: Type error.
-PASS element.removeAttributeNode(null); threw exception TypeError: Type error.
-PASS element.removeAttributeNode(undefined); threw exception TypeError: Type error.
-PASS element.removeAttributeNode(new Object); threw exception TypeError: Type error.
-PASS element.setAttributeNodeNS("style"); threw exception TypeError: Type error.
-PASS element.setAttributeNodeNS(null); threw exception TypeError: Type error.
-PASS element.setAttributeNodeNS(undefined); threw exception TypeError: Type error.
-PASS element.setAttributeNodeNS(new Object); threw exception TypeError: Type error.
+PASS element.setAttributeNode("style"); threw exception Error: TYPE_MISMATCH_ERR: DOM Exception 17.
+PASS element.setAttributeNode(null); threw exception Error: TYPE_MISMATCH_ERR: DOM Exception 17.
+PASS element.setAttributeNode(undefined); threw exception Error: TYPE_MISMATCH_ERR: DOM Exception 17.
+PASS element.setAttributeNode(new Object); threw exception Error: TYPE_MISMATCH_ERR: DOM Exception 17.
+PASS element.removeAttributeNode("style"); threw exception Error: TYPE_MISMATCH_ERR: DOM Exception 17.
+PASS element.removeAttributeNode(null); threw exception Error: TYPE_MISMATCH_ERR: DOM Exception 17.
+PASS element.removeAttributeNode(undefined); threw exception Error: TYPE_MISMATCH_ERR: DOM Exception 17.
+PASS element.removeAttributeNode(new Object); threw exception Error: TYPE_MISMATCH_ERR: DOM Exception 17.
+PASS element.setAttributeNodeNS("style"); threw exception Error: TYPE_MISMATCH_ERR: DOM Exception 17.
+PASS element.setAttributeNodeNS(null); threw exception Error: TYPE_MISMATCH_ERR: DOM Exception 17.
+PASS element.setAttributeNodeNS(undefined); threw exception Error: TYPE_MISMATCH_ERR: DOM Exception 17.
+PASS element.setAttributeNodeNS(new Object); threw exception Error: TYPE_MISMATCH_ERR: DOM Exception 17.
PASS successfullyParsed is true
TEST COMPLETE
Modified: trunk/LayoutTests/fast/dom/Element/script-tests/attr-param-typechecking.js (134463 => 134464)
--- trunk/LayoutTests/fast/dom/Element/script-tests/attr-param-typechecking.js 2012-11-13 20:11:53 UTC (rev 134463)
+++ trunk/LayoutTests/fast/dom/Element/script-tests/attr-param-typechecking.js 2012-11-13 20:17:55 UTC (rev 134464)
@@ -4,10 +4,6 @@
var element = document.createElement("input");
-shouldThrow('element.setAttributeNode();');
-shouldThrow('element.setAttributeNodeNS();');
-shouldThrow('element.removeAttributeNode();');
-
shouldThrow('element.setAttributeNode("style");');
shouldThrow('element.setAttributeNode(null);');
shouldThrow('element.setAttributeNode(undefined);');
Modified: trunk/Source/WebCore/ChangeLog (134463 => 134464)
--- trunk/Source/WebCore/ChangeLog 2012-11-13 20:11:53 UTC (rev 134463)
+++ trunk/Source/WebCore/ChangeLog 2012-11-13 20:17:55 UTC (rev 134464)
@@ -1,3 +1,23 @@
+2012-11-13 Sheriff Bot <[email protected]>
+
+ Unreviewed, rolling out r133944.
+ http://trac.webkit.org/changeset/133944
+ https://bugs.webkit.org/show_bug.cgi?id=102118
+
+ Only JS bindings support NATIVE_TYPE_ERR (Requested by arv on
+ #webkit).
+
+ * bindings/scripts/CodeGeneratorV8.pm:
+ (GenerateFunctionCallback):
+ (GenerateParametersCheck):
+ (GenerateSingleConstructorCallback):
+ (GenerateNamedConstructorCallback):
+ (TypeCanFailConversion):
+ * dom/Element.cpp:
+ (WebCore::Element::setAttributeNode):
+ (WebCore::Element::removeAttributeNode):
+ * dom/Element.idl:
+
2012-11-13 Adam Barth <[email protected]>
Unreviewed.
Modified: trunk/Source/WebCore/bindings/scripts/CodeGeneratorV8.pm (134463 => 134464)
--- trunk/Source/WebCore/bindings/scripts/CodeGeneratorV8.pm 2012-11-13 20:11:53 UTC (rev 134463)
+++ trunk/Source/WebCore/bindings/scripts/CodeGeneratorV8.pm 2012-11-13 20:17:55 UTC (rev 134464)
@@ -1616,7 +1616,7 @@
my $raisesExceptions = @{$function->raisesExceptions};
if (!$raisesExceptions) {
foreach my $parameter (@{$function->parameters}) {
- if ($parameter->extendedAttributes->{"IsIndex"}) {
+ if ((!$parameter->extendedAttributes->{"Callback"} and TypeCanFailConversion($parameter)) or $parameter->extendedAttributes->{"IsIndex"}) {
$raisesExceptions = 1;
}
}
@@ -1830,6 +1830,13 @@
}
$parameterCheckString .= " if (${parameterName}DidThrow)\n";
$parameterCheckString .= " return v8Undefined();\n";
+ } elsif (TypeCanFailConversion($parameter)) {
+ $parameterCheckString .= " $nativeType $parameterName = " .
+ JSValueToNative($parameter, "args[$paramIndex]", "args.GetIsolate()") . ";\n";
+ $parameterCheckString .= " if (UNLIKELY(!$parameterName)) {\n";
+ $parameterCheckString .= " ec = TYPE_MISMATCH_ERR;\n";
+ $parameterCheckString .= " goto fail;\n";
+ $parameterCheckString .= " }\n";
} elsif ($parameter->isVariadic) {
my $nativeElementType = GetNativeType($parameter->type);
if ($nativeElementType =~ />$/) {
@@ -1937,7 +1944,7 @@
}
if (!$raisesExceptions) {
foreach my $parameter (@{$function->parameters}) {
- if ($parameter->extendedAttributes->{"IsIndex"}) {
+ if ((!$parameter->extendedAttributes->{"Callback"} and TypeCanFailConversion($parameter)) or $parameter->extendedAttributes->{"IsIndex"}) {
$raisesExceptions = 1;
}
}
@@ -2134,7 +2141,7 @@
}
if (!$raisesExceptions) {
foreach my $parameter (@{$function->parameters}) {
- if ($parameter->extendedAttributes->{"IsIndex"}) {
+ if ((!$parameter->extendedAttributes->{"Callback"} and TypeCanFailConversion($parameter)) or $parameter->extendedAttributes->{"IsIndex"}) {
$raisesExceptions = 1;
}
}
@@ -3812,6 +3819,17 @@
}
}
+sub TypeCanFailConversion
+{
+ my $signature = shift;
+
+ my $type = GetTypeFromSignature($signature);
+
+ AddToImplIncludes("ExceptionCode.h") if $type eq "Attr";
+ return 1 if $type eq "Attr";
+ return 0;
+}
+
sub JSValueToNative
{
my $signature = shift;
Modified: trunk/Source/WebCore/dom/Element.cpp (134463 => 134464)
--- trunk/Source/WebCore/dom/Element.cpp 2012-11-13 20:11:53 UTC (rev 134463)
+++ trunk/Source/WebCore/dom/Element.cpp 2012-11-13 20:17:55 UTC (rev 134464)
@@ -1520,7 +1520,7 @@
PassRefPtr<Attr> Element::setAttributeNode(Attr* attrNode, ExceptionCode& ec)
{
if (!attrNode) {
- ec = NATIVE_TYPE_ERR;
+ ec = TYPE_MISMATCH_ERR;
return 0;
}
@@ -1562,7 +1562,7 @@
PassRefPtr<Attr> Element::removeAttributeNode(Attr* attr, ExceptionCode& ec)
{
if (!attr) {
- ec = NATIVE_TYPE_ERR;
+ ec = TYPE_MISMATCH_ERR;
return 0;
}
if (attr->ownerElement() != this) {
Modified: trunk/Source/WebCore/dom/Element.idl (134463 => 134464)
--- trunk/Source/WebCore/dom/Element.idl 2012-11-13 20:11:53 UTC (rev 134463)
+++ trunk/Source/WebCore/dom/Element.idl 2012-11-13 20:17:55 UTC (rev 134464)
@@ -34,9 +34,9 @@
raises(DOMException);
void removeAttribute(in [Optional=DefaultIsUndefined] DOMString name);
Attr getAttributeNode(in [Optional=DefaultIsUndefined] DOMString name);
- Attr setAttributeNode(in Attr newAttr)
+ Attr setAttributeNode(in [Optional=DefaultIsUndefined] Attr newAttr)
raises(DOMException);
- Attr removeAttributeNode(in Attr oldAttr)
+ Attr removeAttributeNode(in [Optional=DefaultIsUndefined] Attr oldAttr)
raises(DOMException);
NodeList getElementsByTagName(in [Optional=DefaultIsUndefined] DOMString name);
@@ -54,7 +54,7 @@
in [Optional=DefaultIsUndefined] DOMString localName);
[ObjCLegacyUnnamedParameters] Attr getAttributeNodeNS(in [TreatNullAs=NullString,Optional=DefaultIsUndefined] DOMString namespaceURI,
in [Optional=DefaultIsUndefined] DOMString localName);
- Attr setAttributeNodeNS(in Attr newAttr)
+ Attr setAttributeNodeNS(in [Optional=DefaultIsUndefined] Attr newAttr)
raises(DOMException);
boolean hasAttribute(in DOMString name);
[ObjCLegacyUnnamedParameters] boolean hasAttributeNS(in [TreatNullAs=NullString,Optional=DefaultIsUndefined] DOMString namespaceURI,