2010-05-01 Xan Lopez <xlopez@igalia.com>
authorxan@webkit.org <xan@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sat, 1 May 2010 10:40:45 +0000 (10:40 +0000)
committerxan@webkit.org <xan@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sat, 1 May 2010 10:40:45 +0000 (10:40 +0000)
        Reviewed by Oliver Hunt.

        [GTK] GObject DOM bindings
        https://bugs.webkit.org/show_bug.cgi?id=33590

        Unify more logic to skip functions into SkipFunction, and
        whitelist the two [Custom] methods in HTMLCollection.idl.

        * bindings/scripts/CodeGeneratorGObject.pm:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@58633 268f45cc-cd09-0410-ab3c-d52691b4dbfc

WebCore/ChangeLog
WebCore/bindings/scripts/CodeGeneratorGObject.pm
WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp
WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.h

index 9f0bcaf..a014862 100644 (file)
@@ -1,3 +1,15 @@
+2010-05-01  Xan Lopez  <xlopez@igalia.com>
+
+        Reviewed by Oliver Hunt.
+
+        [GTK] GObject DOM bindings
+        https://bugs.webkit.org/show_bug.cgi?id=33590
+
+        Unify more logic to skip functions into SkipFunction, and
+        whitelist the two [Custom] methods in HTMLCollection.idl.
+
+        * bindings/scripts/CodeGeneratorGObject.pm:
+
 2010-05-01  Robert Hogan  <robert@webkit.org>
 
         Reviewed by Simon Hausmann.
index ef18c20..ceb6562 100644 (file)
@@ -177,9 +177,20 @@ sub SkipAttribute {
 
 sub SkipFunction {
     my $function = shift;
+    my $decamelize = shift;
+    my $prefix = shift;
 
-    # FIXME: skip all custom methods; is this ok?
-    if ($function->signature->extendedAttributes->{"Custom"}) {
+    my $functionName = "webkit_dom_" . $decamelize . "_" . $prefix . decamelize($function->signature->name);
+    my $isCustomFunction = $function->signature->extendedAttributes->{"Custom"} ||
+        $function->signature->extendedAttributes->{"CustomArgumentHandling"};
+
+    if ($isCustomFunction &&
+        $functionName ne "webkit_dom_node_replace_child" &&
+        $functionName ne "webkit_dom_node_insert_before" &&
+        $functionName ne "webkit_dom_node_replace_child" &&
+        $functionName ne "webkit_dom_node_append_child" &&
+        $functionName ne "webkit_dom_html_collection_item" &&
+        $functionName ne "webkit_dom_html_collection_named_item") {
         return 1;
     }
 
@@ -678,13 +689,14 @@ sub addIncludeInBody {
 sub GenerateFunction {
     my ($object, $interfaceName, $function, $prefix) = @_;
 
-    if (SkipFunction($function)) {
+    my $decamelize = FixUpDecamelizedName(decamelize($interfaceName));
+
+    if (SkipFunction($function, $decamelize, $prefix)) {
         return;
     }
 
     my $functionSigName = $function->signature->name;
     my $functionSigType = $function->signature->type;
-    my $decamelize = FixUpDecamelizedName(decamelize($interfaceName));
     my $functionName = "webkit_dom_" . $decamelize . "_" . $prefix . decamelize($functionSigName);
     my $returnType = GetGlibTypeName($functionSigType);
     my $returnValueIsGDOMType = IsGDOMClassType($functionSigType);
@@ -735,19 +747,6 @@ sub GenerateFunction {
         $implIncludes{"${functionSigType}.h"} = 1;
     }
 
-    # skip custom functions for now
-    # but skip from here to allow some headers to be created
-    # for a successful compile.
-    if ($isCustomFunction &&
-        $functionName ne "webkit_dom_node_remove_child" && 
-        $functionName ne "webkit_dom_node_insert_before" &&
-        $functionName ne "webkit_dom_node_replace_child" &&
-        $functionName ne "webkit_dom_node_append_child") {
-        push(@hBody, "\n/* TODO: custom function ${functionName} */\n\n");
-        push(@cBody, "\n/* TODO: custom function ${functionName} */\n\n");
-        return;
-    }
-
     if(@{$function->raisesExceptions}) {
         $functionSig .= ", GError **error";
     }
@@ -807,7 +806,15 @@ sub GenerateFunction {
     my $assignPre = "";
     my $assignPost = "";
 
-    if ($returnType ne "void" && !$isCustomFunction) {
+    # We need to special-case these Node methods because their C++
+    # signature is different from what we'd expect given their IDL
+    # description; see Node.h.
+    my $functionHasCustomReturn = $functionName eq "webkit_dom_node_append_child" ||
+        $functionName eq "webkit_dom_node_insert_before" ||
+        $functionName eq "webkit_dom_node_replace_child" ||
+        $functionName eq "webkit_dom_node_remove_child";
+        
+    if ($returnType ne "void" && !$functionHasCustomReturn) {
         if ($returnValueIsGDOMType) {
             $assign = "PassRefPtr<WebCore::${functionSigType}> g_res = ";
             $assignPre = "WTF::getPtr(";
@@ -826,12 +833,7 @@ sub GenerateFunction {
         }
     }
 
-    # We need to special-case these Node methods because their C++ signature is different
-    # from what we'd expect given their IDL description; see Node.h.
-    if ($functionName eq "webkit_dom_node_append_child" ||
-        $functionName eq "webkit_dom_node_insert_before" ||
-        $functionName eq "webkit_dom_node_replace_child" ||
-        $functionName eq "webkit_dom_node_remove_child") {
+    if ($functionHasCustomReturn) {
         my $customNodeAppendChild = << "EOF";
     bool ok = item->${functionSigName}(${callImplParams}${exceptions});
     if (ok)
@@ -898,7 +900,7 @@ EOF
         }
     }
 
-    if ($returnType ne "void" && !$isCustomFunction) {
+    if ($returnType ne "void" && !$functionHasCustomReturn) {
         if ($functionSigType ne "DOMObject") {
             if ($returnValueIsGDOMType) {
                 push(@cBody, "    ${returnType} res = static_cast<${returnType}>(WebKit::kit(g_res.get()));\n");
index ef35398..d0535c6 100644 (file)
@@ -31,8 +31,6 @@
 #include "webkit/WebKitDOMSerializedScriptValuePrivate.h"
 #include "webkit/WebKitDOMTestObj.h"
 #include "webkit/WebKitDOMTestObjPrivate.h"
-#include "webkit/WebKitDOMlog.h"
-#include "webkit/WebKitDOMlogPrivate.h"
 #include "webkitmarshal.h"
 #include "webkitprivate.h"
 
@@ -153,9 +151,6 @@ webkit_dom_test_obj_method_with_exception (WebKitDOMTestObj *self, GError **erro
 }
 
 
-/* TODO: custom function webkit_dom_test_obj_custom_args_and_exception */
-
-
 /* TODO: event function webkit_dom_test_obj_add_event_listener */
 
 
index 8ea5b32..ec7aa53 100644 (file)
@@ -71,9 +71,6 @@ WEBKIT_API void
 webkit_dom_test_obj_method_with_exception (WebKitDOMTestObj *self, GError **error);
 
 
-/* TODO: custom function webkit_dom_test_obj_custom_args_and_exception */
-
-
 /* TODO: event function webkit_dom_test_obj_add_event_listener */