Title: [134464] trunk
Revision
134464
Author
[email protected]
Date
2012-11-13 12:17:55 -0800 (Tue, 13 Nov 2012)

Log Message

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).

Patch by Sheriff Bot <[email protected]> on 2012-11-13

Source/WebCore:

* bindings/scripts/CodeGeneratorV8.pm:
(GenerateFunctionCallback):
(GenerateParametersCheck):
(GenerateSingleConstructorCallback):
(GenerateNamedConstructorCallback):
(TypeCanFailConversion):
* dom/Element.cpp:
(WebCore::Element::setAttributeNode):
(WebCore::Element::removeAttributeNode):
* dom/Element.idl:

LayoutTests:

* fast/dom/Element/attr-param-typechecking-expected.txt:
* fast/dom/Element/script-tests/attr-param-typechecking.js:

Modified Paths

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,
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to