Changeset 137072 in webkit


Ignore:
Timestamp:
Dec 9, 2012 7:48:02 AM (11 years ago)
Author:
Carlos Garcia Campos
Message:

[GTK] Use a private struct and placement new syntax in GObject DOM bindings
https://bugs.webkit.org/show_bug.cgi?id=101074

Reviewed by Xan Lopez.

It allows to use RefPtr for the wrapped object and it simplifies
the code. Only the classes deriving from WebKitDOMObject keep a
reference of the wrapped object in a private struct. The wrapped
object is added to the cache in GObjectClass::constructor() and
removed in GObjectClass::finalize().

  • bindings/gobject/WebKitDOMBinding.cpp:

(WebKit::createWrapper):
(WebKit::kit):
(WebKit::wrapEventTarget):

  • bindings/scripts/CodeGeneratorGObject.pm:

(GetParentImplClassName):
(GenerateProperties):
(GenerateCFile):
(Generate):
(WriteData):

  • bindings/scripts/test/GObject/WebKitDOMFloat64Array.cpp:

(WebKit::kit):
(WebKit::core):
(WebKit::wrapFloat64Array):
(webkit_dom_float64array_class_init):

  • bindings/scripts/test/GObject/WebKitDOMTestActiveDOMObject.cpp:

(_WebKitDOMTestActiveDOMObjectPrivate):
(WebKit::kit):
(WebKit::core):
(WebKit::wrapTestActiveDOMObject):
(webkit_dom_test_active_dom_object_finalize):
(webkit_dom_test_active_dom_object_constructor):
(webkit_dom_test_active_dom_object_class_init):
(webkit_dom_test_active_dom_object_init):

  • bindings/scripts/test/GObject/WebKitDOMTestCallback.cpp:

(_WebKitDOMTestCallbackPrivate):
(WebKit::kit):
(WebKit::core):
(WebKit::wrapTestCallback):
(webkit_dom_test_callback_finalize):
(webkit_dom_test_callback_constructor):
(webkit_dom_test_callback_class_init):
(webkit_dom_test_callback_init):

  • bindings/scripts/test/GObject/WebKitDOMTestCustomNamedGetter.cpp:

(_WebKitDOMTestCustomNamedGetterPrivate):
(WebKit::kit):
(WebKit::core):
(WebKit::wrapTestCustomNamedGetter):
(webkit_dom_test_custom_named_getter_finalize):
(webkit_dom_test_custom_named_getter_constructor):
(webkit_dom_test_custom_named_getter_class_init):
(webkit_dom_test_custom_named_getter_init):

  • bindings/scripts/test/GObject/WebKitDOMTestEventConstructor.cpp:

(_WebKitDOMTestEventConstructorPrivate):
(WebKit::kit):
(WebKit::core):
(WebKit::wrapTestEventConstructor):
(webkit_dom_test_event_constructor_finalize):
(webkit_dom_test_event_constructor_constructor):
(webkit_dom_test_event_constructor_class_init):
(webkit_dom_test_event_constructor_init):

  • bindings/scripts/test/GObject/WebKitDOMTestEventTarget.cpp:

(_WebKitDOMTestEventTargetPrivate):
(WebKit::kit):
(WebKit::core):
(WebKit::wrapTestEventTarget):
(webkit_dom_test_event_target_finalize):
(webkit_dom_test_event_target_constructor):
(webkit_dom_test_event_target_class_init):
(webkit_dom_test_event_target_init):

  • bindings/scripts/test/GObject/WebKitDOMTestException.cpp:

(_WebKitDOMTestExceptionPrivate):
(WebKit::kit):
(WebKit::core):
(WebKit::wrapTestException):
(webkit_dom_test_exception_finalize):
(webkit_dom_test_exception_constructor):
(webkit_dom_test_exception_class_init):
(webkit_dom_test_exception_init):

  • bindings/scripts/test/GObject/WebKitDOMTestInterface.cpp:

(_WebKitDOMTestInterfacePrivate):
(WebKit::kit):
(WebKit::core):
(WebKit::wrapTestInterface):
(webkit_dom_test_interface_finalize):
(webkit_dom_test_interface_constructor):
(webkit_dom_test_interface_class_init):
(webkit_dom_test_interface_init):

  • bindings/scripts/test/GObject/WebKitDOMTestMediaQueryListListener.cpp:

(_WebKitDOMTestMediaQueryListListenerPrivate):
(WebKit::kit):
(WebKit::core):
(WebKit::wrapTestMediaQueryListListener):
(webkit_dom_test_media_query_list_listener_finalize):
(webkit_dom_test_media_query_list_listener_constructor):
(webkit_dom_test_media_query_list_listener_class_init):
(webkit_dom_test_media_query_list_listener_init):

  • bindings/scripts/test/GObject/WebKitDOMTestNamedConstructor.cpp:

(_WebKitDOMTestNamedConstructorPrivate):
(WebKit::kit):
(WebKit::core):
(WebKit::wrapTestNamedConstructor):
(webkit_dom_test_named_constructor_finalize):
(webkit_dom_test_named_constructor_constructor):
(webkit_dom_test_named_constructor_class_init):
(webkit_dom_test_named_constructor_init):

  • bindings/scripts/test/GObject/WebKitDOMTestNode.cpp:

(WebKit::kit):
(WebKit::core):
(WebKit::wrapTestNode):
(webkit_dom_test_node_class_init):

  • bindings/scripts/test/GObject/WebKitDOMTestObj.cpp:

(_WebKitDOMTestObjPrivate):
(WebKit::kit):
(WebKit::core):
(WebKit::wrapTestObj):
(webkit_dom_test_obj_finalize):
(webkit_dom_test_obj_constructor):
(webkit_dom_test_obj_class_init):
(webkit_dom_test_obj_init):

  • bindings/scripts/test/GObject/WebKitDOMTestOverloadedConstructors.cpp:

(_WebKitDOMTestOverloadedConstructorsPrivate):
(WebKit::kit):
(WebKit::core):
(WebKit::wrapTestOverloadedConstructors):
(webkit_dom_test_overloaded_constructors_finalize):
(webkit_dom_test_overloaded_constructors_constructor):
(webkit_dom_test_overloaded_constructors_class_init):
(webkit_dom_test_overloaded_constructors_init):

  • bindings/scripts/test/GObject/WebKitDOMTestSerializedScriptValueInterface.cpp:

(_WebKitDOMTestSerializedScriptValueInterfacePrivate):
(WebKit::kit):
(WebKit::core):
(WebKit::wrapTestSerializedScriptValueInterface):
(webkit_dom_test_serialized_script_value_interface_finalize):
(webkit_dom_test_serialized_script_value_interface_constructor):
(webkit_dom_test_serialized_script_value_interface_class_init):
(webkit_dom_test_serialized_script_value_interface_init):

Location:
trunk/Source/WebCore
Files:
17 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r137067 r137072  
     12012-12-09  Carlos Garcia Campos  <cgarcia@igalia.com>
     2
     3        [GTK] Use a private struct and placement new syntax in GObject DOM bindings
     4        https://bugs.webkit.org/show_bug.cgi?id=101074
     5
     6        Reviewed by Xan Lopez.
     7
     8        It allows to use RefPtr for the wrapped object and it simplifies
     9        the code. Only the classes deriving from WebKitDOMObject keep a
     10        reference of the wrapped object in a private struct. The wrapped
     11        object is added to the cache in GObjectClass::constructor() and
     12        removed in GObjectClass::finalize().
     13
     14        * bindings/gobject/WebKitDOMBinding.cpp:
     15        (WebKit::createWrapper):
     16        (WebKit::kit):
     17        (WebKit::wrapEventTarget):
     18        * bindings/scripts/CodeGeneratorGObject.pm:
     19        (GetParentImplClassName):
     20        (GenerateProperties):
     21        (GenerateCFile):
     22        (Generate):
     23        (WriteData):
     24        * bindings/scripts/test/GObject/WebKitDOMFloat64Array.cpp:
     25        (WebKit::kit):
     26        (WebKit::core):
     27        (WebKit::wrapFloat64Array):
     28        (webkit_dom_float64array_class_init):
     29        * bindings/scripts/test/GObject/WebKitDOMTestActiveDOMObject.cpp:
     30        (_WebKitDOMTestActiveDOMObjectPrivate):
     31        (WebKit::kit):
     32        (WebKit::core):
     33        (WebKit::wrapTestActiveDOMObject):
     34        (webkit_dom_test_active_dom_object_finalize):
     35        (webkit_dom_test_active_dom_object_constructor):
     36        (webkit_dom_test_active_dom_object_class_init):
     37        (webkit_dom_test_active_dom_object_init):
     38        * bindings/scripts/test/GObject/WebKitDOMTestCallback.cpp:
     39        (_WebKitDOMTestCallbackPrivate):
     40        (WebKit::kit):
     41        (WebKit::core):
     42        (WebKit::wrapTestCallback):
     43        (webkit_dom_test_callback_finalize):
     44        (webkit_dom_test_callback_constructor):
     45        (webkit_dom_test_callback_class_init):
     46        (webkit_dom_test_callback_init):
     47        * bindings/scripts/test/GObject/WebKitDOMTestCustomNamedGetter.cpp:
     48        (_WebKitDOMTestCustomNamedGetterPrivate):
     49        (WebKit::kit):
     50        (WebKit::core):
     51        (WebKit::wrapTestCustomNamedGetter):
     52        (webkit_dom_test_custom_named_getter_finalize):
     53        (webkit_dom_test_custom_named_getter_constructor):
     54        (webkit_dom_test_custom_named_getter_class_init):
     55        (webkit_dom_test_custom_named_getter_init):
     56        * bindings/scripts/test/GObject/WebKitDOMTestEventConstructor.cpp:
     57        (_WebKitDOMTestEventConstructorPrivate):
     58        (WebKit::kit):
     59        (WebKit::core):
     60        (WebKit::wrapTestEventConstructor):
     61        (webkit_dom_test_event_constructor_finalize):
     62        (webkit_dom_test_event_constructor_constructor):
     63        (webkit_dom_test_event_constructor_class_init):
     64        (webkit_dom_test_event_constructor_init):
     65        * bindings/scripts/test/GObject/WebKitDOMTestEventTarget.cpp:
     66        (_WebKitDOMTestEventTargetPrivate):
     67        (WebKit::kit):
     68        (WebKit::core):
     69        (WebKit::wrapTestEventTarget):
     70        (webkit_dom_test_event_target_finalize):
     71        (webkit_dom_test_event_target_constructor):
     72        (webkit_dom_test_event_target_class_init):
     73        (webkit_dom_test_event_target_init):
     74        * bindings/scripts/test/GObject/WebKitDOMTestException.cpp:
     75        (_WebKitDOMTestExceptionPrivate):
     76        (WebKit::kit):
     77        (WebKit::core):
     78        (WebKit::wrapTestException):
     79        (webkit_dom_test_exception_finalize):
     80        (webkit_dom_test_exception_constructor):
     81        (webkit_dom_test_exception_class_init):
     82        (webkit_dom_test_exception_init):
     83        * bindings/scripts/test/GObject/WebKitDOMTestInterface.cpp:
     84        (_WebKitDOMTestInterfacePrivate):
     85        (WebKit::kit):
     86        (WebKit::core):
     87        (WebKit::wrapTestInterface):
     88        (webkit_dom_test_interface_finalize):
     89        (webkit_dom_test_interface_constructor):
     90        (webkit_dom_test_interface_class_init):
     91        (webkit_dom_test_interface_init):
     92        * bindings/scripts/test/GObject/WebKitDOMTestMediaQueryListListener.cpp:
     93        (_WebKitDOMTestMediaQueryListListenerPrivate):
     94        (WebKit::kit):
     95        (WebKit::core):
     96        (WebKit::wrapTestMediaQueryListListener):
     97        (webkit_dom_test_media_query_list_listener_finalize):
     98        (webkit_dom_test_media_query_list_listener_constructor):
     99        (webkit_dom_test_media_query_list_listener_class_init):
     100        (webkit_dom_test_media_query_list_listener_init):
     101        * bindings/scripts/test/GObject/WebKitDOMTestNamedConstructor.cpp:
     102        (_WebKitDOMTestNamedConstructorPrivate):
     103        (WebKit::kit):
     104        (WebKit::core):
     105        (WebKit::wrapTestNamedConstructor):
     106        (webkit_dom_test_named_constructor_finalize):
     107        (webkit_dom_test_named_constructor_constructor):
     108        (webkit_dom_test_named_constructor_class_init):
     109        (webkit_dom_test_named_constructor_init):
     110        * bindings/scripts/test/GObject/WebKitDOMTestNode.cpp:
     111        (WebKit::kit):
     112        (WebKit::core):
     113        (WebKit::wrapTestNode):
     114        (webkit_dom_test_node_class_init):
     115        * bindings/scripts/test/GObject/WebKitDOMTestObj.cpp:
     116        (_WebKitDOMTestObjPrivate):
     117        (WebKit::kit):
     118        (WebKit::core):
     119        (WebKit::wrapTestObj):
     120        (webkit_dom_test_obj_finalize):
     121        (webkit_dom_test_obj_constructor):
     122        (webkit_dom_test_obj_class_init):
     123        (webkit_dom_test_obj_init):
     124        * bindings/scripts/test/GObject/WebKitDOMTestOverloadedConstructors.cpp:
     125        (_WebKitDOMTestOverloadedConstructorsPrivate):
     126        (WebKit::kit):
     127        (WebKit::core):
     128        (WebKit::wrapTestOverloadedConstructors):
     129        (webkit_dom_test_overloaded_constructors_finalize):
     130        (webkit_dom_test_overloaded_constructors_constructor):
     131        (webkit_dom_test_overloaded_constructors_class_init):
     132        (webkit_dom_test_overloaded_constructors_init):
     133        * bindings/scripts/test/GObject/WebKitDOMTestSerializedScriptValueInterface.cpp:
     134        (_WebKitDOMTestSerializedScriptValueInterfacePrivate):
     135        (WebKit::kit):
     136        (WebKit::core):
     137        (WebKit::wrapTestSerializedScriptValueInterface):
     138        (webkit_dom_test_serialized_script_value_interface_finalize):
     139        (webkit_dom_test_serialized_script_value_interface_constructor):
     140        (webkit_dom_test_serialized_script_value_interface_class_init):
     141        (webkit_dom_test_serialized_script_value_interface_init):
     142
    11432012-12-09  Jon Lee  <jonlee@apple.com>
    2144
  • trunk/Source/WebCore/bindings/gobject/WebKitDOMBinding.cpp

    r133893 r137072  
    6767    }
    6868
    69     return DOMObjectCache::put(node, wrappedNode);
     69    return wrappedNode;
    7070}
    7171
     
    9898        wrappedElement = wrapElement(element);
    9999
    100     return static_cast<WebKitDOMElement*>(DOMObjectCache::put(element, wrappedElement));
     100    return static_cast<WebKitDOMElement*>(wrappedElement);
    101101}
    102102
     
    119119        wrappedEvent = wrapEvent(event);
    120120
    121     return static_cast<WebKitDOMEvent*>(DOMObjectCache::put(event, wrappedEvent));
     121    return static_cast<WebKitDOMEvent*>(wrappedEvent);
    122122}
    123123
     
    136136    }
    137137
    138     return DOMObjectCache::put(target, wrappedTarget);
     138    return wrappedTarget;
    139139}
    140140
     
    146146        return static_cast<WebKitDOMEventTarget*>(ret);
    147147
    148     return static_cast<WebKitDOMEventTarget*>(DOMObjectCache::put(obj, WebKit::wrapEventTarget(obj)));
     148    return static_cast<WebKitDOMEventTarget*>(wrapEventTarget(obj));
    149149}
    150150
  • trunk/Source/WebCore/bindings/scripts/CodeGeneratorGObject.pm

    r136505 r137072  
    7979}
    8080
     81sub GetParentImplClassName {
     82    my $interface = shift;
     83
     84    return "Object" if @{$interface->parents} eq 0;
     85    return $interface->parents(0);
     86}
     87
    8188# From String::CamelCase 0.01
    8289sub camelize
     
    541548    my $clsCaps = substr(ClassNameToGObjectType($className), 12);
    542549    my $lowerCaseIfaceName = "webkit_dom_" . (FixUpDecamelizedName(decamelize($interfaceName)));
     550    my $parentImplClassName = GetParentImplClassName($interface);
    543551
    544552    my $conditionGuardStart = "";
     
    639647    $" = "";
    640648
    641     $implContent = << "EOF";
     649    if ($parentImplClassName eq "Object") {
     650        $implContent = << "EOF";
    642651static void ${lowerCaseIfaceName}_finalize(GObject* object)
    643652{
     653    ${className}Private* priv = WEBKIT_DOM_${clsCaps}_GET_PRIVATE(object);
    644654$conditionGuardStart
    645     WebKitDOMObject* domObject = WEBKIT_DOM_OBJECT(object);
    646    
    647     if (domObject->coreObject) {
    648         WebCore::${interfaceName}* coreObject = static_cast<WebCore::${interfaceName}*>(domObject->coreObject);
    649 
    650         WebKit::DOMObjectCache::forget(coreObject);
    651         coreObject->deref();
    652 
    653         domObject->coreObject = 0;
    654     }
     655    WebKit::DOMObjectCache::forget(priv->coreObject.get());
    655656$conditionGuardEnd
    656 
     657    priv->~${className}Private();
    657658    G_OBJECT_CLASS(${lowerCaseIfaceName}_parent_class)->finalize(object);
    658659}
    659660
    660661EOF
    661     push(@cBodyProperties, $implContent);
     662        push(@cBodyProperties, $implContent);
     663    }
    662664
    663665    if ($numProperties > 0) {
     
    687689    }
    688690
     691    # Add a constructor implementation only for direct subclasses of Object to make sure
     692    # that the WebCore wrapped object is added only once to the DOM cache. The DOM garbage
     693    # collector works because Node is a direct subclass of Object and the version of
     694    # DOMObjectCache::put() that receives a Node (which is the one setting the frame) is
     695    # always called for DOM objects derived from Node.
     696    if ($parentImplClassName eq "Object") {
     697        $implContent = << "EOF";
     698static GObject* ${lowerCaseIfaceName}_constructor(GType type, guint constructPropertiesCount, GObjectConstructParam* constructProperties)
     699{
     700    GObject* object = G_OBJECT_CLASS(${lowerCaseIfaceName}_parent_class)->constructor(type, constructPropertiesCount, constructProperties);
     701$conditionGuardStart
     702    ${className}Private* priv = WEBKIT_DOM_${clsCaps}_GET_PRIVATE(object);
     703    priv->coreObject = static_cast<WebCore::${interfaceName}*>(WEBKIT_DOM_OBJECT(object)->coreObject);
     704    WebKit::DOMObjectCache::put(priv->coreObject.get(), object);
     705$conditionGuardEnd
     706    return object;
     707}
     708
     709EOF
     710        push(@cBodyProperties, $implContent);
     711    }
     712
    689713    $implContent = << "EOF";
    690714static void ${lowerCaseIfaceName}_class_init(${className}Class* requestClass)
    691715{
    692     GObjectClass* gobjectClass = G_OBJECT_CLASS(requestClass);
    693     gobjectClass->finalize = ${lowerCaseIfaceName}_finalize;
    694716EOF
    695717    push(@cBodyProperties, $implContent);
    696718
    697     if (scalar @txtInstallEventListeners > 0) {
    698         push(@cBodyProperties, "    gobjectClass->constructed = ${lowerCaseIfaceName}_constructed;\n");
    699     }
    700 
    701     if ($numProperties > 0) {
    702         if (scalar @writeableProperties > 0) {
    703             push(@cBodyProperties, "    gobjectClass->set_property = ${lowerCaseIfaceName}_set_property;\n");
    704         }
    705         push(@cBodyProperties, "    gobjectClass->get_property = ${lowerCaseIfaceName}_get_property;\n");
    706         push(@cBodyProperties, "\n");
    707         push(@cBodyProperties, @txtInstallProps);
    708     }
    709 
    710     if (scalar @txtInstallSignals > 0) {
    711         push(@cBodyProperties, "\n");
    712         push(@cBodyProperties, @txtInstallSignals);
     719    if ($parentImplClassName eq "Object" || scalar @txtInstallEventListeners > 0 || $numProperties > 0) {
     720        push(@cBodyProperties, "    GObjectClass* gobjectClass = G_OBJECT_CLASS(requestClass);\n");
     721
     722        if ($parentImplClassName eq "Object") {
     723            push(@cBodyProperties, "    g_type_class_add_private(gobjectClass, sizeof(${className}Private));\n");
     724            push(@cBodyProperties, "    gobjectClass->constructor = ${lowerCaseIfaceName}_constructor;\n");
     725            push(@cBodyProperties, "    gobjectClass->finalize = ${lowerCaseIfaceName}_finalize;\n");
     726        }
     727
     728        if (scalar @txtInstallEventListeners > 0) {
     729            push(@cBodyProperties, "    gobjectClass->constructed = ${lowerCaseIfaceName}_constructed;\n");
     730        }
     731
     732        if ($numProperties > 0) {
     733            if (scalar @writeableProperties > 0) {
     734                push(@cBodyProperties, "    gobjectClass->set_property = ${lowerCaseIfaceName}_set_property;\n");
     735            }
     736            push(@cBodyProperties, "    gobjectClass->get_property = ${lowerCaseIfaceName}_get_property;\n");
     737            push(@cBodyProperties, "\n");
     738            push(@cBodyProperties, @txtInstallProps);
     739        }
     740
     741        if (scalar @txtInstallSignals > 0) {
     742            push(@cBodyProperties, "\n");
     743            push(@cBodyProperties, @txtInstallSignals);
     744        }
    713745    }
    714746    $implContent = << "EOF";
     
    717749static void ${lowerCaseIfaceName}_init(${className}* request)
    718750{
     751EOF
     752    push(@cBodyProperties, $implContent);
     753
     754    if ($parentImplClassName eq "Object") {
     755        $implContent = << "EOF";
     756    ${className}Private* priv = WEBKIT_DOM_${clsCaps}_GET_PRIVATE(request);
     757    new (priv) ${className}Private();
     758EOF
     759        push(@cBodyProperties, $implContent);
     760    }
     761    $implContent = << "EOF";
    719762}
    720763
     
    11941237    my $clsCaps = uc(FixUpDecamelizedName(decamelize($interfaceName)));
    11951238    my $lowerCaseIfaceName = "webkit_dom_" . FixUpDecamelizedName(decamelize($interfaceName));
     1239    my $parentImplClassName = GetParentImplClassName($interface);
     1240
     1241    # Add a private struct only for direct subclasses of Object so that we can use RefPtr
     1242    # for the WebCore wrapped object and make sure we only increment the reference counter once.
     1243    if ($parentImplClassName eq "Object") {
     1244        my $conditionalString = $codeGenerator->GenerateConditionalString($interface);
     1245        push(@cStructPriv, "#define WEBKIT_DOM_${clsCaps}_GET_PRIVATE(obj) G_TYPE_INSTANCE_GET_PRIVATE(obj, WEBKIT_TYPE_DOM_${clsCaps}, ${className}Private)\n\n");
     1246        push(@cStructPriv, "typedef struct _${className}Private {\n");
     1247        push(@cStructPriv, "#if ${conditionalString}\n") if $conditionalString;
     1248        push(@cStructPriv, "    RefPtr<WebCore::${interfaceName}> coreObject;\n");
     1249        push(@cStructPriv, "#endif // ${conditionalString}\n") if $conditionalString;
     1250        push(@cStructPriv, "} ${className}Private;\n\n");
     1251    }
    11961252
    11971253    $implContent = << "EOF";
     
    12011257    push(@cBodyProperties, $implContent);
    12021258
     1259    if (!UsesManualKitImplementation($interfaceName)) {
     1260        $implContent = << "EOF";
     1261${className}* kit(WebCore::$interfaceName* obj)
     1262{
     1263    g_return_val_if_fail(obj, 0);
     1264
     1265    if (gpointer ret = DOMObjectCache::get(obj))
     1266        return static_cast<${className}*>(ret);
     1267
     1268    return static_cast<${className}*>(g_object_new(WEBKIT_TYPE_DOM_${clsCaps}, "core-object", obj, NULL));
     1269}
     1270
     1271EOF
     1272        push(@cBodyPriv, $implContent);
     1273    }
     1274
    12031275    $implContent = << "EOF";
    12041276WebCore::${interfaceName}* core(${className}* request)
     
    12061278    g_return_val_if_fail(request, 0);
    12071279
    1208     WebCore::${interfaceName}* coreObject = static_cast<WebCore::${interfaceName}*>(WEBKIT_DOM_OBJECT(request)->coreObject);
     1280    return static_cast<WebCore::${interfaceName}*>(WEBKIT_DOM_OBJECT(request)->coreObject);
     1281}
     1282
     1283${className}* wrap${interfaceName}(WebCore::${interfaceName}* coreObject)
     1284{
    12091285    g_return_val_if_fail(coreObject, 0);
    1210 
    1211     return coreObject;
     1286    return WEBKIT_DOM_${clsCaps}(g_object_new(WEBKIT_TYPE_DOM_${clsCaps}, "core-object", coreObject, NULL));
    12121287}
    12131288
     
    12171292    $object->GenerateProperties($interfaceName, $interface);
    12181293    $object->GenerateFunctions($interfaceName, $interface);
    1219 
    1220     my $wrapMethod = << "EOF";
    1221 ${className}* wrap${interfaceName}(WebCore::${interfaceName}* coreObject)
    1222 {
    1223     g_return_val_if_fail(coreObject, 0);
    1224 
    1225     // We call ref() rather than using a C++ smart pointer because we can't store a C++ object
    1226     // in a C-allocated GObject structure. See the finalize() code for the matching deref().
    1227     coreObject->ref();
    1228 
    1229     return WEBKIT_DOM_${clsCaps}(g_object_new(WEBKIT_TYPE_DOM_${clsCaps}, "core-object", coreObject, NULL));
    1230 }
    1231 
    1232 EOF
    1233     push(@cBodyPriv, $wrapMethod);
    12341294}
    12351295
     
    13231383
    13241384    $hdrIncludes{"webkit/${parentClassName}.h"} = 1;
    1325 
    1326     if (!UsesManualKitImplementation($interfaceName)) {
    1327         my $converter = << "EOF";
    1328 ${className}* kit(WebCore::$interfaceName* obj)
    1329 {
    1330     g_return_val_if_fail(obj, 0);
    1331 
    1332     if (gpointer ret = DOMObjectCache::get(obj))
    1333         return static_cast<${className}*>(ret);
    1334 
    1335     return static_cast<${className}*>(DOMObjectCache::put(obj, WebKit::wrap${interfaceName}(obj)));
    1336 }
    1337 
    1338 EOF
    1339     push(@cBodyPriv, $converter);
    1340     }
    13411385
    13421386    $object->GenerateHeader($interfaceName, $parentClassName);
     
    14331477    print IMPL "#include <wtf/GetPtr.h>\n";
    14341478    print IMPL "#include <wtf/RefPtr.h>\n\n";
     1479    print IMPL @cStructPriv;
    14351480    print IMPL "#if ${conditionalString}\n\n" if $conditionalString;
    14361481
     
    14541499    @cBodyPriv = ();
    14551500    @cBodyProperties = ();
     1501    @cStructPriv = ();
    14561502}
    14571503
  • trunk/Source/WebCore/bindings/scripts/test/GObject/WebKitDOMFloat64Array.cpp

    r136505 r137072  
    4343        return static_cast<WebKitDOMFloat64Array*>(ret);
    4444
    45     return static_cast<WebKitDOMFloat64Array*>(DOMObjectCache::put(obj, WebKit::wrapFloat64Array(obj)));
     45    return static_cast<WebKitDOMFloat64Array*>(g_object_new(WEBKIT_TYPE_DOM_FLOAT64ARRAY, "core-object", obj, NULL));
    4646}
    4747
     
    5050    g_return_val_if_fail(request, 0);
    5151
    52     WebCore::Float64Array* coreObject = static_cast<WebCore::Float64Array*>(WEBKIT_DOM_OBJECT(request)->coreObject);
    53     g_return_val_if_fail(coreObject, 0);
    54 
    55     return coreObject;
     52    return static_cast<WebCore::Float64Array*>(WEBKIT_DOM_OBJECT(request)->coreObject);
    5653}
    5754
     
    5956{
    6057    g_return_val_if_fail(coreObject, 0);
    61 
    62     // We call ref() rather than using a C++ smart pointer because we can't store a C++ object
    63     // in a C-allocated GObject structure. See the finalize() code for the matching deref().
    64     coreObject->ref();
    65 
    6658    return WEBKIT_DOM_FLOAT64ARRAY(g_object_new(WEBKIT_TYPE_DOM_FLOAT64ARRAY, "core-object", coreObject, NULL));
    6759}
     
    7163G_DEFINE_TYPE(WebKitDOMFloat64Array, webkit_dom_float64array, WEBKIT_TYPE_DOM_ARRAY_BUFFER_VIEW)
    7264
    73 static void webkit_dom_float64array_finalize(GObject* object)
    74 {
    75 
    76     WebKitDOMObject* domObject = WEBKIT_DOM_OBJECT(object);
    77    
    78     if (domObject->coreObject) {
    79         WebCore::Float64Array* coreObject = static_cast<WebCore::Float64Array*>(domObject->coreObject);
    80 
    81         WebKit::DOMObjectCache::forget(coreObject);
    82         coreObject->deref();
    83 
    84         domObject->coreObject = 0;
    85     }
    86 
    87 
    88     G_OBJECT_CLASS(webkit_dom_float64array_parent_class)->finalize(object);
    89 }
    90 
    9165static void webkit_dom_float64array_class_init(WebKitDOMFloat64ArrayClass* requestClass)
    9266{
    93     GObjectClass* gobjectClass = G_OBJECT_CLASS(requestClass);
    94     gobjectClass->finalize = webkit_dom_float64array_finalize;
    9567}
    9668
  • trunk/Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestActiveDOMObject.cpp

    r136505 r137072  
    3333#include <wtf/RefPtr.h>
    3434
     35#define WEBKIT_DOM_TEST_ACTIVE_DOM_OBJECT_GET_PRIVATE(obj) G_TYPE_INSTANCE_GET_PRIVATE(obj, WEBKIT_TYPE_DOM_TEST_ACTIVE_DOM_OBJECT, WebKitDOMTestActiveDOMObjectPrivate)
     36
     37typedef struct _WebKitDOMTestActiveDOMObjectPrivate {
     38    RefPtr<WebCore::TestActiveDOMObject> coreObject;
     39} WebKitDOMTestActiveDOMObjectPrivate;
     40
    3541namespace WebKit {
    3642
     
    4248        return static_cast<WebKitDOMTestActiveDOMObject*>(ret);
    4349
    44     return static_cast<WebKitDOMTestActiveDOMObject*>(DOMObjectCache::put(obj, WebKit::wrapTestActiveDOMObject(obj)));
     50    return static_cast<WebKitDOMTestActiveDOMObject*>(g_object_new(WEBKIT_TYPE_DOM_TEST_ACTIVE_DOM_OBJECT, "core-object", obj, NULL));
    4551}
    4652
     
    4955    g_return_val_if_fail(request, 0);
    5056
    51     WebCore::TestActiveDOMObject* coreObject = static_cast<WebCore::TestActiveDOMObject*>(WEBKIT_DOM_OBJECT(request)->coreObject);
    52     g_return_val_if_fail(coreObject, 0);
    53 
    54     return coreObject;
     57    return static_cast<WebCore::TestActiveDOMObject*>(WEBKIT_DOM_OBJECT(request)->coreObject);
    5558}
    5659
     
    5861{
    5962    g_return_val_if_fail(coreObject, 0);
    60 
    61     // We call ref() rather than using a C++ smart pointer because we can't store a C++ object
    62     // in a C-allocated GObject structure. See the finalize() code for the matching deref().
    63     coreObject->ref();
    64 
    6563    return WEBKIT_DOM_TEST_ACTIVE_DOM_OBJECT(g_object_new(WEBKIT_TYPE_DOM_TEST_ACTIVE_DOM_OBJECT, "core-object", coreObject, NULL));
    6664}
     
    7775static void webkit_dom_test_active_dom_object_finalize(GObject* object)
    7876{
     77    WebKitDOMTestActiveDOMObjectPrivate* priv = WEBKIT_DOM_TEST_ACTIVE_DOM_OBJECT_GET_PRIVATE(object);
    7978
    80     WebKitDOMObject* domObject = WEBKIT_DOM_OBJECT(object);
    81    
    82     if (domObject->coreObject) {
    83         WebCore::TestActiveDOMObject* coreObject = static_cast<WebCore::TestActiveDOMObject*>(domObject->coreObject);
     79    WebKit::DOMObjectCache::forget(priv->coreObject.get());
    8480
    85         WebKit::DOMObjectCache::forget(coreObject);
    86         coreObject->deref();
    87 
    88         domObject->coreObject = 0;
    89     }
    90 
    91 
     81    priv->~WebKitDOMTestActiveDOMObjectPrivate();
    9282    G_OBJECT_CLASS(webkit_dom_test_active_dom_object_parent_class)->finalize(object);
    9383}
     
    111101}
    112102
     103static GObject* webkit_dom_test_active_dom_object_constructor(GType type, guint constructPropertiesCount, GObjectConstructParam* constructProperties)
     104{
     105    GObject* object = G_OBJECT_CLASS(webkit_dom_test_active_dom_object_parent_class)->constructor(type, constructPropertiesCount, constructProperties);
     106
     107    WebKitDOMTestActiveDOMObjectPrivate* priv = WEBKIT_DOM_TEST_ACTIVE_DOM_OBJECT_GET_PRIVATE(object);
     108    priv->coreObject = static_cast<WebCore::TestActiveDOMObject*>(WEBKIT_DOM_OBJECT(object)->coreObject);
     109    WebKit::DOMObjectCache::put(priv->coreObject.get(), object);
     110
     111    return object;
     112}
     113
    113114static void webkit_dom_test_active_dom_object_class_init(WebKitDOMTestActiveDOMObjectClass* requestClass)
    114115{
    115116    GObjectClass* gobjectClass = G_OBJECT_CLASS(requestClass);
     117    g_type_class_add_private(gobjectClass, sizeof(WebKitDOMTestActiveDOMObjectPrivate));
     118    gobjectClass->constructor = webkit_dom_test_active_dom_object_constructor;
    116119    gobjectClass->finalize = webkit_dom_test_active_dom_object_finalize;
    117120    gobjectClass->get_property = webkit_dom_test_active_dom_object_get_property;
     
    130133static void webkit_dom_test_active_dom_object_init(WebKitDOMTestActiveDOMObject* request)
    131134{
     135    WebKitDOMTestActiveDOMObjectPrivate* priv = WEBKIT_DOM_TEST_ACTIVE_DOM_OBJECT_GET_PRIVATE(request);
     136    new (priv) WebKitDOMTestActiveDOMObjectPrivate();
    132137}
    133138
  • trunk/Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestCallback.cpp

    r136505 r137072  
    3838#include <wtf/RefPtr.h>
    3939
     40#define WEBKIT_DOM_TEST_CALLBACK_GET_PRIVATE(obj) G_TYPE_INSTANCE_GET_PRIVATE(obj, WEBKIT_TYPE_DOM_TEST_CALLBACK, WebKitDOMTestCallbackPrivate)
     41
     42typedef struct _WebKitDOMTestCallbackPrivate {
     43#if ENABLE(SQL_DATABASE)
     44    RefPtr<WebCore::TestCallback> coreObject;
     45#endif // ENABLE(SQL_DATABASE)
     46} WebKitDOMTestCallbackPrivate;
     47
    4048#if ENABLE(SQL_DATABASE)
    4149
     
    4957        return static_cast<WebKitDOMTestCallback*>(ret);
    5058
    51     return static_cast<WebKitDOMTestCallback*>(DOMObjectCache::put(obj, WebKit::wrapTestCallback(obj)));
     59    return static_cast<WebKitDOMTestCallback*>(g_object_new(WEBKIT_TYPE_DOM_TEST_CALLBACK, "core-object", obj, NULL));
    5260}
    5361
     
    5664    g_return_val_if_fail(request, 0);
    5765
    58     WebCore::TestCallback* coreObject = static_cast<WebCore::TestCallback*>(WEBKIT_DOM_OBJECT(request)->coreObject);
     66    return static_cast<WebCore::TestCallback*>(WEBKIT_DOM_OBJECT(request)->coreObject);
     67}
     68
     69WebKitDOMTestCallback* wrapTestCallback(WebCore::TestCallback* coreObject)
     70{
    5971    g_return_val_if_fail(coreObject, 0);
    60 
    61     return coreObject;
    62 }
    63 
    64 WebKitDOMTestCallback* wrapTestCallback(WebCore::TestCallback* coreObject)
    65 {
    66     g_return_val_if_fail(coreObject, 0);
    67 
    68     // We call ref() rather than using a C++ smart pointer because we can't store a C++ object
    69     // in a C-allocated GObject structure. See the finalize() code for the matching deref().
    70     coreObject->ref();
    71 
    7272    return WEBKIT_DOM_TEST_CALLBACK(g_object_new(WEBKIT_TYPE_DOM_TEST_CALLBACK, "core-object", coreObject, NULL));
    7373}
     
    8181static void webkit_dom_test_callback_finalize(GObject* object)
    8282{
    83 #if ENABLE(SQL_DATABASE)
    84     WebKitDOMObject* domObject = WEBKIT_DOM_OBJECT(object);
    85    
    86     if (domObject->coreObject) {
    87         WebCore::TestCallback* coreObject = static_cast<WebCore::TestCallback*>(domObject->coreObject);
    88 
    89         WebKit::DOMObjectCache::forget(coreObject);
    90         coreObject->deref();
    91 
    92         domObject->coreObject = 0;
    93     }
    94 #endif // ENABLE(SQL_DATABASE)
    95 
     83    WebKitDOMTestCallbackPrivate* priv = WEBKIT_DOM_TEST_CALLBACK_GET_PRIVATE(object);
     84#if ENABLE(SQL_DATABASE)
     85    WebKit::DOMObjectCache::forget(priv->coreObject.get());
     86#endif // ENABLE(SQL_DATABASE)
     87    priv->~WebKitDOMTestCallbackPrivate();
    9688    G_OBJECT_CLASS(webkit_dom_test_callback_parent_class)->finalize(object);
    9789}
    9890
     91static GObject* webkit_dom_test_callback_constructor(GType type, guint constructPropertiesCount, GObjectConstructParam* constructProperties)
     92{
     93    GObject* object = G_OBJECT_CLASS(webkit_dom_test_callback_parent_class)->constructor(type, constructPropertiesCount, constructProperties);
     94#if ENABLE(SQL_DATABASE)
     95    WebKitDOMTestCallbackPrivate* priv = WEBKIT_DOM_TEST_CALLBACK_GET_PRIVATE(object);
     96    priv->coreObject = static_cast<WebCore::TestCallback*>(WEBKIT_DOM_OBJECT(object)->coreObject);
     97    WebKit::DOMObjectCache::put(priv->coreObject.get(), object);
     98#endif // ENABLE(SQL_DATABASE)
     99    return object;
     100}
     101
    99102static void webkit_dom_test_callback_class_init(WebKitDOMTestCallbackClass* requestClass)
    100103{
    101104    GObjectClass* gobjectClass = G_OBJECT_CLASS(requestClass);
     105    g_type_class_add_private(gobjectClass, sizeof(WebKitDOMTestCallbackPrivate));
     106    gobjectClass->constructor = webkit_dom_test_callback_constructor;
    102107    gobjectClass->finalize = webkit_dom_test_callback_finalize;
    103108}
     
    105110static void webkit_dom_test_callback_init(WebKitDOMTestCallback* request)
    106111{
     112    WebKitDOMTestCallbackPrivate* priv = WEBKIT_DOM_TEST_CALLBACK_GET_PRIVATE(request);
     113    new (priv) WebKitDOMTestCallbackPrivate();
    107114}
    108115
  • trunk/Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestCustomNamedGetter.cpp

    r136505 r137072  
    3232#include <wtf/RefPtr.h>
    3333
     34#define WEBKIT_DOM_TEST_CUSTOM_NAMED_GETTER_GET_PRIVATE(obj) G_TYPE_INSTANCE_GET_PRIVATE(obj, WEBKIT_TYPE_DOM_TEST_CUSTOM_NAMED_GETTER, WebKitDOMTestCustomNamedGetterPrivate)
     35
     36typedef struct _WebKitDOMTestCustomNamedGetterPrivate {
     37    RefPtr<WebCore::TestCustomNamedGetter> coreObject;
     38} WebKitDOMTestCustomNamedGetterPrivate;
     39
    3440namespace WebKit {
    3541
     
    4147        return static_cast<WebKitDOMTestCustomNamedGetter*>(ret);
    4248
    43     return static_cast<WebKitDOMTestCustomNamedGetter*>(DOMObjectCache::put(obj, WebKit::wrapTestCustomNamedGetter(obj)));
     49    return static_cast<WebKitDOMTestCustomNamedGetter*>(g_object_new(WEBKIT_TYPE_DOM_TEST_CUSTOM_NAMED_GETTER, "core-object", obj, NULL));
    4450}
    4551
     
    4854    g_return_val_if_fail(request, 0);
    4955
    50     WebCore::TestCustomNamedGetter* coreObject = static_cast<WebCore::TestCustomNamedGetter*>(WEBKIT_DOM_OBJECT(request)->coreObject);
    51     g_return_val_if_fail(coreObject, 0);
    52 
    53     return coreObject;
     56    return static_cast<WebCore::TestCustomNamedGetter*>(WEBKIT_DOM_OBJECT(request)->coreObject);
    5457}
    5558
     
    5760{
    5861    g_return_val_if_fail(coreObject, 0);
    59 
    60     // We call ref() rather than using a C++ smart pointer because we can't store a C++ object
    61     // in a C-allocated GObject structure. See the finalize() code for the matching deref().
    62     coreObject->ref();
    63 
    6462    return WEBKIT_DOM_TEST_CUSTOM_NAMED_GETTER(g_object_new(WEBKIT_TYPE_DOM_TEST_CUSTOM_NAMED_GETTER, "core-object", coreObject, NULL));
    6563}
     
    7169static void webkit_dom_test_custom_named_getter_finalize(GObject* object)
    7270{
     71    WebKitDOMTestCustomNamedGetterPrivate* priv = WEBKIT_DOM_TEST_CUSTOM_NAMED_GETTER_GET_PRIVATE(object);
    7372
    74     WebKitDOMObject* domObject = WEBKIT_DOM_OBJECT(object);
    75    
    76     if (domObject->coreObject) {
    77         WebCore::TestCustomNamedGetter* coreObject = static_cast<WebCore::TestCustomNamedGetter*>(domObject->coreObject);
     73    WebKit::DOMObjectCache::forget(priv->coreObject.get());
    7874
    79         WebKit::DOMObjectCache::forget(coreObject);
    80         coreObject->deref();
     75    priv->~WebKitDOMTestCustomNamedGetterPrivate();
     76    G_OBJECT_CLASS(webkit_dom_test_custom_named_getter_parent_class)->finalize(object);
     77}
    8178
    82         domObject->coreObject = 0;
    83     }
     79static GObject* webkit_dom_test_custom_named_getter_constructor(GType type, guint constructPropertiesCount, GObjectConstructParam* constructProperties)
     80{
     81    GObject* object = G_OBJECT_CLASS(webkit_dom_test_custom_named_getter_parent_class)->constructor(type, constructPropertiesCount, constructProperties);
    8482
     83    WebKitDOMTestCustomNamedGetterPrivate* priv = WEBKIT_DOM_TEST_CUSTOM_NAMED_GETTER_GET_PRIVATE(object);
     84    priv->coreObject = static_cast<WebCore::TestCustomNamedGetter*>(WEBKIT_DOM_OBJECT(object)->coreObject);
     85    WebKit::DOMObjectCache::put(priv->coreObject.get(), object);
    8586
    86     G_OBJECT_CLASS(webkit_dom_test_custom_named_getter_parent_class)->finalize(object);
     87    return object;
    8788}
    8889
     
    9091{
    9192    GObjectClass* gobjectClass = G_OBJECT_CLASS(requestClass);
     93    g_type_class_add_private(gobjectClass, sizeof(WebKitDOMTestCustomNamedGetterPrivate));
     94    gobjectClass->constructor = webkit_dom_test_custom_named_getter_constructor;
    9295    gobjectClass->finalize = webkit_dom_test_custom_named_getter_finalize;
    9396}
     
    9598static void webkit_dom_test_custom_named_getter_init(WebKitDOMTestCustomNamedGetter* request)
    9699{
     100    WebKitDOMTestCustomNamedGetterPrivate* priv = WEBKIT_DOM_TEST_CUSTOM_NAMED_GETTER_GET_PRIVATE(request);
     101    new (priv) WebKitDOMTestCustomNamedGetterPrivate();
    97102}
    98103
  • trunk/Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestEventConstructor.cpp

    r136505 r137072  
    3232#include <wtf/RefPtr.h>
    3333
     34#define WEBKIT_DOM_TEST_EVENT_CONSTRUCTOR_GET_PRIVATE(obj) G_TYPE_INSTANCE_GET_PRIVATE(obj, WEBKIT_TYPE_DOM_TEST_EVENT_CONSTRUCTOR, WebKitDOMTestEventConstructorPrivate)
     35
     36typedef struct _WebKitDOMTestEventConstructorPrivate {
     37    RefPtr<WebCore::TestEventConstructor> coreObject;
     38} WebKitDOMTestEventConstructorPrivate;
     39
    3440namespace WebKit {
    3541
     
    4147        return static_cast<WebKitDOMTestEventConstructor*>(ret);
    4248
    43     return static_cast<WebKitDOMTestEventConstructor*>(DOMObjectCache::put(obj, WebKit::wrapTestEventConstructor(obj)));
     49    return static_cast<WebKitDOMTestEventConstructor*>(g_object_new(WEBKIT_TYPE_DOM_TEST_EVENT_CONSTRUCTOR, "core-object", obj, NULL));
    4450}
    4551
     
    4854    g_return_val_if_fail(request, 0);
    4955
    50     WebCore::TestEventConstructor* coreObject = static_cast<WebCore::TestEventConstructor*>(WEBKIT_DOM_OBJECT(request)->coreObject);
    51     g_return_val_if_fail(coreObject, 0);
    52 
    53     return coreObject;
     56    return static_cast<WebCore::TestEventConstructor*>(WEBKIT_DOM_OBJECT(request)->coreObject);
    5457}
    5558
     
    5760{
    5861    g_return_val_if_fail(coreObject, 0);
    59 
    60     // We call ref() rather than using a C++ smart pointer because we can't store a C++ object
    61     // in a C-allocated GObject structure. See the finalize() code for the matching deref().
    62     coreObject->ref();
    63 
    6462    return WEBKIT_DOM_TEST_EVENT_CONSTRUCTOR(g_object_new(WEBKIT_TYPE_DOM_TEST_EVENT_CONSTRUCTOR, "core-object", coreObject, NULL));
    6563}
     
    7775static void webkit_dom_test_event_constructor_finalize(GObject* object)
    7876{
     77    WebKitDOMTestEventConstructorPrivate* priv = WEBKIT_DOM_TEST_EVENT_CONSTRUCTOR_GET_PRIVATE(object);
    7978
    80     WebKitDOMObject* domObject = WEBKIT_DOM_OBJECT(object);
    81    
    82     if (domObject->coreObject) {
    83         WebCore::TestEventConstructor* coreObject = static_cast<WebCore::TestEventConstructor*>(domObject->coreObject);
     79    WebKit::DOMObjectCache::forget(priv->coreObject.get());
    8480
    85         WebKit::DOMObjectCache::forget(coreObject);
    86         coreObject->deref();
    87 
    88         domObject->coreObject = 0;
    89     }
    90 
    91 
     81    priv->~WebKitDOMTestEventConstructorPrivate();
    9282    G_OBJECT_CLASS(webkit_dom_test_event_constructor_parent_class)->finalize(object);
    9383}
     
    115105}
    116106
     107static GObject* webkit_dom_test_event_constructor_constructor(GType type, guint constructPropertiesCount, GObjectConstructParam* constructProperties)
     108{
     109    GObject* object = G_OBJECT_CLASS(webkit_dom_test_event_constructor_parent_class)->constructor(type, constructPropertiesCount, constructProperties);
     110
     111    WebKitDOMTestEventConstructorPrivate* priv = WEBKIT_DOM_TEST_EVENT_CONSTRUCTOR_GET_PRIVATE(object);
     112    priv->coreObject = static_cast<WebCore::TestEventConstructor*>(WEBKIT_DOM_OBJECT(object)->coreObject);
     113    WebKit::DOMObjectCache::put(priv->coreObject.get(), object);
     114
     115    return object;
     116}
     117
    117118static void webkit_dom_test_event_constructor_class_init(WebKitDOMTestEventConstructorClass* requestClass)
    118119{
    119120    GObjectClass* gobjectClass = G_OBJECT_CLASS(requestClass);
     121    g_type_class_add_private(gobjectClass, sizeof(WebKitDOMTestEventConstructorPrivate));
     122    gobjectClass->constructor = webkit_dom_test_event_constructor_constructor;
    120123    gobjectClass->finalize = webkit_dom_test_event_constructor_finalize;
    121124    gobjectClass->get_property = webkit_dom_test_event_constructor_get_property;
     
    139142static void webkit_dom_test_event_constructor_init(WebKitDOMTestEventConstructor* request)
    140143{
     144    WebKitDOMTestEventConstructorPrivate* priv = WEBKIT_DOM_TEST_EVENT_CONSTRUCTOR_GET_PRIVATE(request);
     145    new (priv) WebKitDOMTestEventConstructorPrivate();
    141146}
    142147
  • trunk/Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestEventTarget.cpp

    r136505 r137072  
    3636#include <wtf/RefPtr.h>
    3737
     38#define WEBKIT_DOM_TEST_EVENT_TARGET_GET_PRIVATE(obj) G_TYPE_INSTANCE_GET_PRIVATE(obj, WEBKIT_TYPE_DOM_TEST_EVENT_TARGET, WebKitDOMTestEventTargetPrivate)
     39
     40typedef struct _WebKitDOMTestEventTargetPrivate {
     41    RefPtr<WebCore::TestEventTarget> coreObject;
     42} WebKitDOMTestEventTargetPrivate;
     43
    3844namespace WebKit {
    3945
     
    4551        return static_cast<WebKitDOMTestEventTarget*>(ret);
    4652
    47     return static_cast<WebKitDOMTestEventTarget*>(DOMObjectCache::put(obj, WebKit::wrapTestEventTarget(obj)));
     53    return static_cast<WebKitDOMTestEventTarget*>(g_object_new(WEBKIT_TYPE_DOM_TEST_EVENT_TARGET, "core-object", obj, NULL));
    4854}
    4955
     
    5258    g_return_val_if_fail(request, 0);
    5359
    54     WebCore::TestEventTarget* coreObject = static_cast<WebCore::TestEventTarget*>(WEBKIT_DOM_OBJECT(request)->coreObject);
    55     g_return_val_if_fail(coreObject, 0);
    56 
    57     return coreObject;
     60    return static_cast<WebCore::TestEventTarget*>(WEBKIT_DOM_OBJECT(request)->coreObject);
    5861}
    5962
     
    6164{
    6265    g_return_val_if_fail(coreObject, 0);
    63 
    64     // We call ref() rather than using a C++ smart pointer because we can't store a C++ object
    65     // in a C-allocated GObject structure. See the finalize() code for the matching deref().
    66     coreObject->ref();
    67 
    6866    return WEBKIT_DOM_TEST_EVENT_TARGET(g_object_new(WEBKIT_TYPE_DOM_TEST_EVENT_TARGET, "core-object", coreObject, NULL));
    6967}
     
    107105static void webkit_dom_test_event_target_finalize(GObject* object)
    108106{
     107    WebKitDOMTestEventTargetPrivate* priv = WEBKIT_DOM_TEST_EVENT_TARGET_GET_PRIVATE(object);
    109108
    110     WebKitDOMObject* domObject = WEBKIT_DOM_OBJECT(object);
    111    
    112     if (domObject->coreObject) {
    113         WebCore::TestEventTarget* coreObject = static_cast<WebCore::TestEventTarget*>(domObject->coreObject);
     109    WebKit::DOMObjectCache::forget(priv->coreObject.get());
    114110
    115         WebKit::DOMObjectCache::forget(coreObject);
    116         coreObject->deref();
     111    priv->~WebKitDOMTestEventTargetPrivate();
     112    G_OBJECT_CLASS(webkit_dom_test_event_target_parent_class)->finalize(object);
     113}
    117114
    118         domObject->coreObject = 0;
    119     }
     115static GObject* webkit_dom_test_event_target_constructor(GType type, guint constructPropertiesCount, GObjectConstructParam* constructProperties)
     116{
     117    GObject* object = G_OBJECT_CLASS(webkit_dom_test_event_target_parent_class)->constructor(type, constructPropertiesCount, constructProperties);
    120118
     119    WebKitDOMTestEventTargetPrivate* priv = WEBKIT_DOM_TEST_EVENT_TARGET_GET_PRIVATE(object);
     120    priv->coreObject = static_cast<WebCore::TestEventTarget*>(WEBKIT_DOM_OBJECT(object)->coreObject);
     121    WebKit::DOMObjectCache::put(priv->coreObject.get(), object);
    121122
    122     G_OBJECT_CLASS(webkit_dom_test_event_target_parent_class)->finalize(object);
     123    return object;
    123124}
    124125
     
    126127{
    127128    GObjectClass* gobjectClass = G_OBJECT_CLASS(requestClass);
     129    g_type_class_add_private(gobjectClass, sizeof(WebKitDOMTestEventTargetPrivate));
     130    gobjectClass->constructor = webkit_dom_test_event_target_constructor;
    128131    gobjectClass->finalize = webkit_dom_test_event_target_finalize;
    129132}
     
    131134static void webkit_dom_test_event_target_init(WebKitDOMTestEventTarget* request)
    132135{
     136    WebKitDOMTestEventTargetPrivate* priv = WEBKIT_DOM_TEST_EVENT_TARGET_GET_PRIVATE(request);
     137    new (priv) WebKitDOMTestEventTargetPrivate();
    133138}
    134139
  • trunk/Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestException.cpp

    r136505 r137072  
    3232#include <wtf/RefPtr.h>
    3333
     34#define WEBKIT_DOM_TEST_EXCEPTION_GET_PRIVATE(obj) G_TYPE_INSTANCE_GET_PRIVATE(obj, WEBKIT_TYPE_DOM_TEST_EXCEPTION, WebKitDOMTestExceptionPrivate)
     35
     36typedef struct _WebKitDOMTestExceptionPrivate {
     37    RefPtr<WebCore::TestException> coreObject;
     38} WebKitDOMTestExceptionPrivate;
     39
    3440namespace WebKit {
    3541
     
    4147        return static_cast<WebKitDOMTestException*>(ret);
    4248
    43     return static_cast<WebKitDOMTestException*>(DOMObjectCache::put(obj, WebKit::wrapTestException(obj)));
     49    return static_cast<WebKitDOMTestException*>(g_object_new(WEBKIT_TYPE_DOM_TEST_EXCEPTION, "core-object", obj, NULL));
    4450}
    4551
     
    4854    g_return_val_if_fail(request, 0);
    4955
    50     WebCore::TestException* coreObject = static_cast<WebCore::TestException*>(WEBKIT_DOM_OBJECT(request)->coreObject);
    51     g_return_val_if_fail(coreObject, 0);
    52 
    53     return coreObject;
     56    return static_cast<WebCore::TestException*>(WEBKIT_DOM_OBJECT(request)->coreObject);
    5457}
    5558
     
    5760{
    5861    g_return_val_if_fail(coreObject, 0);
    59 
    60     // We call ref() rather than using a C++ smart pointer because we can't store a C++ object
    61     // in a C-allocated GObject structure. See the finalize() code for the matching deref().
    62     coreObject->ref();
    63 
    6462    return WEBKIT_DOM_TEST_EXCEPTION(g_object_new(WEBKIT_TYPE_DOM_TEST_EXCEPTION, "core-object", coreObject, NULL));
    6563}
     
    7674static void webkit_dom_test_exception_finalize(GObject* object)
    7775{
     76    WebKitDOMTestExceptionPrivate* priv = WEBKIT_DOM_TEST_EXCEPTION_GET_PRIVATE(object);
    7877
    79     WebKitDOMObject* domObject = WEBKIT_DOM_OBJECT(object);
    80    
    81     if (domObject->coreObject) {
    82         WebCore::TestException* coreObject = static_cast<WebCore::TestException*>(domObject->coreObject);
     78    WebKit::DOMObjectCache::forget(priv->coreObject.get());
    8379
    84         WebKit::DOMObjectCache::forget(coreObject);
    85         coreObject->deref();
    86 
    87         domObject->coreObject = 0;
    88     }
    89 
    90 
     80    priv->~WebKitDOMTestExceptionPrivate();
    9181    G_OBJECT_CLASS(webkit_dom_test_exception_parent_class)->finalize(object);
    9282}
     
    110100}
    111101
     102static GObject* webkit_dom_test_exception_constructor(GType type, guint constructPropertiesCount, GObjectConstructParam* constructProperties)
     103{
     104    GObject* object = G_OBJECT_CLASS(webkit_dom_test_exception_parent_class)->constructor(type, constructPropertiesCount, constructProperties);
     105
     106    WebKitDOMTestExceptionPrivate* priv = WEBKIT_DOM_TEST_EXCEPTION_GET_PRIVATE(object);
     107    priv->coreObject = static_cast<WebCore::TestException*>(WEBKIT_DOM_OBJECT(object)->coreObject);
     108    WebKit::DOMObjectCache::put(priv->coreObject.get(), object);
     109
     110    return object;
     111}
     112
    112113static void webkit_dom_test_exception_class_init(WebKitDOMTestExceptionClass* requestClass)
    113114{
    114115    GObjectClass* gobjectClass = G_OBJECT_CLASS(requestClass);
     116    g_type_class_add_private(gobjectClass, sizeof(WebKitDOMTestExceptionPrivate));
     117    gobjectClass->constructor = webkit_dom_test_exception_constructor;
    115118    gobjectClass->finalize = webkit_dom_test_exception_finalize;
    116119    gobjectClass->get_property = webkit_dom_test_exception_get_property;
     
    127130static void webkit_dom_test_exception_init(WebKitDOMTestException* request)
    128131{
     132    WebKitDOMTestExceptionPrivate* priv = WEBKIT_DOM_TEST_EXCEPTION_GET_PRIVATE(request);
     133    new (priv) WebKitDOMTestExceptionPrivate();
    129134}
    130135
  • trunk/Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestInterface.cpp

    r136505 r137072  
    3535#include <wtf/RefPtr.h>
    3636
     37#define WEBKIT_DOM_TEST_INTERFACE_GET_PRIVATE(obj) G_TYPE_INSTANCE_GET_PRIVATE(obj, WEBKIT_TYPE_DOM_TEST_INTERFACE, WebKitDOMTestInterfacePrivate)
     38
     39typedef struct _WebKitDOMTestInterfacePrivate {
     40#if ENABLE(Condition1) || ENABLE(Condition2)
     41    RefPtr<WebCore::TestInterface> coreObject;
     42#endif // ENABLE(Condition1) || ENABLE(Condition2)
     43} WebKitDOMTestInterfacePrivate;
     44
    3745#if ENABLE(Condition1) || ENABLE(Condition2)
    3846
     
    4654        return static_cast<WebKitDOMTestInterface*>(ret);
    4755
    48     return static_cast<WebKitDOMTestInterface*>(DOMObjectCache::put(obj, WebKit::wrapTestInterface(obj)));
     56    return static_cast<WebKitDOMTestInterface*>(g_object_new(WEBKIT_TYPE_DOM_TEST_INTERFACE, "core-object", obj, NULL));
    4957}
    5058
     
    5361    g_return_val_if_fail(request, 0);
    5462
    55     WebCore::TestInterface* coreObject = static_cast<WebCore::TestInterface*>(WEBKIT_DOM_OBJECT(request)->coreObject);
     63    return static_cast<WebCore::TestInterface*>(WEBKIT_DOM_OBJECT(request)->coreObject);
     64}
     65
     66WebKitDOMTestInterface* wrapTestInterface(WebCore::TestInterface* coreObject)
     67{
    5668    g_return_val_if_fail(coreObject, 0);
    57 
    58     return coreObject;
    59 }
    60 
    61 WebKitDOMTestInterface* wrapTestInterface(WebCore::TestInterface* coreObject)
    62 {
    63     g_return_val_if_fail(coreObject, 0);
    64 
    65     // We call ref() rather than using a C++ smart pointer because we can't store a C++ object
    66     // in a C-allocated GObject structure. See the finalize() code for the matching deref().
    67     coreObject->ref();
    68 
    6969    return WEBKIT_DOM_TEST_INTERFACE(g_object_new(WEBKIT_TYPE_DOM_TEST_INTERFACE, "core-object", coreObject, NULL));
    7070}
     
    8585static void webkit_dom_test_interface_finalize(GObject* object)
    8686{
    87 #if ENABLE(Condition1) || ENABLE(Condition2)
    88     WebKitDOMObject* domObject = WEBKIT_DOM_OBJECT(object);
    89    
    90     if (domObject->coreObject) {
    91         WebCore::TestInterface* coreObject = static_cast<WebCore::TestInterface*>(domObject->coreObject);
    92 
    93         WebKit::DOMObjectCache::forget(coreObject);
    94         coreObject->deref();
    95 
    96         domObject->coreObject = 0;
    97     }
    98 #endif // ENABLE(Condition1) || ENABLE(Condition2)
    99 
     87    WebKitDOMTestInterfacePrivate* priv = WEBKIT_DOM_TEST_INTERFACE_GET_PRIVATE(object);
     88#if ENABLE(Condition1) || ENABLE(Condition2)
     89    WebKit::DOMObjectCache::forget(priv->coreObject.get());
     90#endif // ENABLE(Condition1) || ENABLE(Condition2)
     91    priv->~WebKitDOMTestInterfacePrivate();
    10092    G_OBJECT_CLASS(webkit_dom_test_interface_parent_class)->finalize(object);
    10193}
     
    186178}
    187179
     180static GObject* webkit_dom_test_interface_constructor(GType type, guint constructPropertiesCount, GObjectConstructParam* constructProperties)
     181{
     182    GObject* object = G_OBJECT_CLASS(webkit_dom_test_interface_parent_class)->constructor(type, constructPropertiesCount, constructProperties);
     183#if ENABLE(Condition1) || ENABLE(Condition2)
     184    WebKitDOMTestInterfacePrivate* priv = WEBKIT_DOM_TEST_INTERFACE_GET_PRIVATE(object);
     185    priv->coreObject = static_cast<WebCore::TestInterface*>(WEBKIT_DOM_OBJECT(object)->coreObject);
     186    WebKit::DOMObjectCache::put(priv->coreObject.get(), object);
     187#endif // ENABLE(Condition1) || ENABLE(Condition2)
     188    return object;
     189}
     190
    188191static void webkit_dom_test_interface_class_init(WebKitDOMTestInterfaceClass* requestClass)
    189192{
    190193    GObjectClass* gobjectClass = G_OBJECT_CLASS(requestClass);
     194    g_type_class_add_private(gobjectClass, sizeof(WebKitDOMTestInterfacePrivate));
     195    gobjectClass->constructor = webkit_dom_test_interface_constructor;
    191196    gobjectClass->finalize = webkit_dom_test_interface_finalize;
    192197    gobjectClass->set_property = webkit_dom_test_interface_set_property;
     
    218223static void webkit_dom_test_interface_init(WebKitDOMTestInterface* request)
    219224{
     225    WebKitDOMTestInterfacePrivate* priv = WEBKIT_DOM_TEST_INTERFACE_GET_PRIVATE(request);
     226    new (priv) WebKitDOMTestInterfacePrivate();
    220227}
    221228
  • trunk/Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestMediaQueryListListener.cpp

    r136505 r137072  
    3232#include <wtf/RefPtr.h>
    3333
     34#define WEBKIT_DOM_TEST_MEDIA_QUERY_LIST_LISTENER_GET_PRIVATE(obj) G_TYPE_INSTANCE_GET_PRIVATE(obj, WEBKIT_TYPE_DOM_TEST_MEDIA_QUERY_LIST_LISTENER, WebKitDOMTestMediaQueryListListenerPrivate)
     35
     36typedef struct _WebKitDOMTestMediaQueryListListenerPrivate {
     37    RefPtr<WebCore::TestMediaQueryListListener> coreObject;
     38} WebKitDOMTestMediaQueryListListenerPrivate;
     39
    3440namespace WebKit {
    3541
     
    4147        return static_cast<WebKitDOMTestMediaQueryListListener*>(ret);
    4248
    43     return static_cast<WebKitDOMTestMediaQueryListListener*>(DOMObjectCache::put(obj, WebKit::wrapTestMediaQueryListListener(obj)));
     49    return static_cast<WebKitDOMTestMediaQueryListListener*>(g_object_new(WEBKIT_TYPE_DOM_TEST_MEDIA_QUERY_LIST_LISTENER, "core-object", obj, NULL));
    4450}
    4551
     
    4854    g_return_val_if_fail(request, 0);
    4955
    50     WebCore::TestMediaQueryListListener* coreObject = static_cast<WebCore::TestMediaQueryListListener*>(WEBKIT_DOM_OBJECT(request)->coreObject);
    51     g_return_val_if_fail(coreObject, 0);
    52 
    53     return coreObject;
     56    return static_cast<WebCore::TestMediaQueryListListener*>(WEBKIT_DOM_OBJECT(request)->coreObject);
    5457}
    5558
     
    5760{
    5861    g_return_val_if_fail(coreObject, 0);
    59 
    60     // We call ref() rather than using a C++ smart pointer because we can't store a C++ object
    61     // in a C-allocated GObject structure. See the finalize() code for the matching deref().
    62     coreObject->ref();
    63 
    6462    return WEBKIT_DOM_TEST_MEDIA_QUERY_LIST_LISTENER(g_object_new(WEBKIT_TYPE_DOM_TEST_MEDIA_QUERY_LIST_LISTENER, "core-object", coreObject, NULL));
    6563}
     
    7169static void webkit_dom_test_media_query_list_listener_finalize(GObject* object)
    7270{
     71    WebKitDOMTestMediaQueryListListenerPrivate* priv = WEBKIT_DOM_TEST_MEDIA_QUERY_LIST_LISTENER_GET_PRIVATE(object);
    7372
    74     WebKitDOMObject* domObject = WEBKIT_DOM_OBJECT(object);
    75    
    76     if (domObject->coreObject) {
    77         WebCore::TestMediaQueryListListener* coreObject = static_cast<WebCore::TestMediaQueryListListener*>(domObject->coreObject);
     73    WebKit::DOMObjectCache::forget(priv->coreObject.get());
    7874
    79         WebKit::DOMObjectCache::forget(coreObject);
    80         coreObject->deref();
     75    priv->~WebKitDOMTestMediaQueryListListenerPrivate();
     76    G_OBJECT_CLASS(webkit_dom_test_media_query_list_listener_parent_class)->finalize(object);
     77}
    8178
    82         domObject->coreObject = 0;
    83     }
     79static GObject* webkit_dom_test_media_query_list_listener_constructor(GType type, guint constructPropertiesCount, GObjectConstructParam* constructProperties)
     80{
     81    GObject* object = G_OBJECT_CLASS(webkit_dom_test_media_query_list_listener_parent_class)->constructor(type, constructPropertiesCount, constructProperties);
    8482
     83    WebKitDOMTestMediaQueryListListenerPrivate* priv = WEBKIT_DOM_TEST_MEDIA_QUERY_LIST_LISTENER_GET_PRIVATE(object);
     84    priv->coreObject = static_cast<WebCore::TestMediaQueryListListener*>(WEBKIT_DOM_OBJECT(object)->coreObject);
     85    WebKit::DOMObjectCache::put(priv->coreObject.get(), object);
    8586
    86     G_OBJECT_CLASS(webkit_dom_test_media_query_list_listener_parent_class)->finalize(object);
     87    return object;
    8788}
    8889
     
    9091{
    9192    GObjectClass* gobjectClass = G_OBJECT_CLASS(requestClass);
     93    g_type_class_add_private(gobjectClass, sizeof(WebKitDOMTestMediaQueryListListenerPrivate));
     94    gobjectClass->constructor = webkit_dom_test_media_query_list_listener_constructor;
    9295    gobjectClass->finalize = webkit_dom_test_media_query_list_listener_finalize;
    9396}
     
    9598static void webkit_dom_test_media_query_list_listener_init(WebKitDOMTestMediaQueryListListener* request)
    9699{
     100    WebKitDOMTestMediaQueryListListenerPrivate* priv = WEBKIT_DOM_TEST_MEDIA_QUERY_LIST_LISTENER_GET_PRIVATE(request);
     101    new (priv) WebKitDOMTestMediaQueryListListenerPrivate();
    97102}
    98103
  • trunk/Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestNamedConstructor.cpp

    r136505 r137072  
    3232#include <wtf/RefPtr.h>
    3333
     34#define WEBKIT_DOM_TEST_NAMED_CONSTRUCTOR_GET_PRIVATE(obj) G_TYPE_INSTANCE_GET_PRIVATE(obj, WEBKIT_TYPE_DOM_TEST_NAMED_CONSTRUCTOR, WebKitDOMTestNamedConstructorPrivate)
     35
     36typedef struct _WebKitDOMTestNamedConstructorPrivate {
     37    RefPtr<WebCore::TestNamedConstructor> coreObject;
     38} WebKitDOMTestNamedConstructorPrivate;
     39
    3440namespace WebKit {
    3541
     
    4147        return static_cast<WebKitDOMTestNamedConstructor*>(ret);
    4248
    43     return static_cast<WebKitDOMTestNamedConstructor*>(DOMObjectCache::put(obj, WebKit::wrapTestNamedConstructor(obj)));
     49    return static_cast<WebKitDOMTestNamedConstructor*>(g_object_new(WEBKIT_TYPE_DOM_TEST_NAMED_CONSTRUCTOR, "core-object", obj, NULL));
    4450}
    4551
     
    4854    g_return_val_if_fail(request, 0);
    4955
    50     WebCore::TestNamedConstructor* coreObject = static_cast<WebCore::TestNamedConstructor*>(WEBKIT_DOM_OBJECT(request)->coreObject);
    51     g_return_val_if_fail(coreObject, 0);
    52 
    53     return coreObject;
     56    return static_cast<WebCore::TestNamedConstructor*>(WEBKIT_DOM_OBJECT(request)->coreObject);
    5457}
    5558
     
    5760{
    5861    g_return_val_if_fail(coreObject, 0);
    59 
    60     // We call ref() rather than using a C++ smart pointer because we can't store a C++ object
    61     // in a C-allocated GObject structure. See the finalize() code for the matching deref().
    62     coreObject->ref();
    63 
    6462    return WEBKIT_DOM_TEST_NAMED_CONSTRUCTOR(g_object_new(WEBKIT_TYPE_DOM_TEST_NAMED_CONSTRUCTOR, "core-object", coreObject, NULL));
    6563}
     
    7169static void webkit_dom_test_named_constructor_finalize(GObject* object)
    7270{
     71    WebKitDOMTestNamedConstructorPrivate* priv = WEBKIT_DOM_TEST_NAMED_CONSTRUCTOR_GET_PRIVATE(object);
    7372
    74     WebKitDOMObject* domObject = WEBKIT_DOM_OBJECT(object);
    75    
    76     if (domObject->coreObject) {
    77         WebCore::TestNamedConstructor* coreObject = static_cast<WebCore::TestNamedConstructor*>(domObject->coreObject);
     73    WebKit::DOMObjectCache::forget(priv->coreObject.get());
    7874
    79         WebKit::DOMObjectCache::forget(coreObject);
    80         coreObject->deref();
     75    priv->~WebKitDOMTestNamedConstructorPrivate();
     76    G_OBJECT_CLASS(webkit_dom_test_named_constructor_parent_class)->finalize(object);
     77}
    8178
    82         domObject->coreObject = 0;
    83     }
     79static GObject* webkit_dom_test_named_constructor_constructor(GType type, guint constructPropertiesCount, GObjectConstructParam* constructProperties)
     80{
     81    GObject* object = G_OBJECT_CLASS(webkit_dom_test_named_constructor_parent_class)->constructor(type, constructPropertiesCount, constructProperties);
    8482
     83    WebKitDOMTestNamedConstructorPrivate* priv = WEBKIT_DOM_TEST_NAMED_CONSTRUCTOR_GET_PRIVATE(object);
     84    priv->coreObject = static_cast<WebCore::TestNamedConstructor*>(WEBKIT_DOM_OBJECT(object)->coreObject);
     85    WebKit::DOMObjectCache::put(priv->coreObject.get(), object);
    8586
    86     G_OBJECT_CLASS(webkit_dom_test_named_constructor_parent_class)->finalize(object);
     87    return object;
    8788}
    8889
     
    9091{
    9192    GObjectClass* gobjectClass = G_OBJECT_CLASS(requestClass);
     93    g_type_class_add_private(gobjectClass, sizeof(WebKitDOMTestNamedConstructorPrivate));
     94    gobjectClass->constructor = webkit_dom_test_named_constructor_constructor;
    9295    gobjectClass->finalize = webkit_dom_test_named_constructor_finalize;
    9396}
     
    9598static void webkit_dom_test_named_constructor_init(WebKitDOMTestNamedConstructor* request)
    9699{
     100    WebKitDOMTestNamedConstructorPrivate* priv = WEBKIT_DOM_TEST_NAMED_CONSTRUCTOR_GET_PRIVATE(request);
     101    new (priv) WebKitDOMTestNamedConstructorPrivate();
    97102}
    98103
  • trunk/Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestNode.cpp

    r136505 r137072  
    4444        return static_cast<WebKitDOMTestNode*>(ret);
    4545
    46     return static_cast<WebKitDOMTestNode*>(DOMObjectCache::put(obj, WebKit::wrapTestNode(obj)));
     46    return static_cast<WebKitDOMTestNode*>(g_object_new(WEBKIT_TYPE_DOM_TEST_NODE, "core-object", obj, NULL));
    4747}
    4848
     
    5151    g_return_val_if_fail(request, 0);
    5252
    53     WebCore::TestNode* coreObject = static_cast<WebCore::TestNode*>(WEBKIT_DOM_OBJECT(request)->coreObject);
    54     g_return_val_if_fail(coreObject, 0);
    55 
    56     return coreObject;
     53    return static_cast<WebCore::TestNode*>(WEBKIT_DOM_OBJECT(request)->coreObject);
    5754}
    5855
     
    6057{
    6158    g_return_val_if_fail(coreObject, 0);
    62 
    63     // We call ref() rather than using a C++ smart pointer because we can't store a C++ object
    64     // in a C-allocated GObject structure. See the finalize() code for the matching deref().
    65     coreObject->ref();
    66 
    6759    return WEBKIT_DOM_TEST_NODE(g_object_new(WEBKIT_TYPE_DOM_TEST_NODE, "core-object", coreObject, NULL));
    6860}
     
    10496G_DEFINE_TYPE_WITH_CODE(WebKitDOMTestNode, webkit_dom_test_node, WEBKIT_TYPE_DOM_NODE, G_IMPLEMENT_INTERFACE(WEBKIT_TYPE_DOM_EVENT_TARGET, webkit_dom_event_target_init))
    10597
    106 static void webkit_dom_test_node_finalize(GObject* object)
    107 {
    108 
    109     WebKitDOMObject* domObject = WEBKIT_DOM_OBJECT(object);
    110    
    111     if (domObject->coreObject) {
    112         WebCore::TestNode* coreObject = static_cast<WebCore::TestNode*>(domObject->coreObject);
    113 
    114         WebKit::DOMObjectCache::forget(coreObject);
    115         coreObject->deref();
    116 
    117         domObject->coreObject = 0;
    118     }
    119 
    120 
    121     G_OBJECT_CLASS(webkit_dom_test_node_parent_class)->finalize(object);
    122 }
    123 
    12498static void webkit_dom_test_node_class_init(WebKitDOMTestNodeClass* requestClass)
    12599{
    126     GObjectClass* gobjectClass = G_OBJECT_CLASS(requestClass);
    127     gobjectClass->finalize = webkit_dom_test_node_finalize;
    128100}
    129101
  • trunk/Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp

    r136505 r137072  
    4545#include <wtf/RefPtr.h>
    4646
     47#define WEBKIT_DOM_TEST_OBJ_GET_PRIVATE(obj) G_TYPE_INSTANCE_GET_PRIVATE(obj, WEBKIT_TYPE_DOM_TEST_OBJ, WebKitDOMTestObjPrivate)
     48
     49typedef struct _WebKitDOMTestObjPrivate {
     50    RefPtr<WebCore::TestObj> coreObject;
     51} WebKitDOMTestObjPrivate;
     52
    4753namespace WebKit {
    4854
     
    5460        return static_cast<WebKitDOMTestObj*>(ret);
    5561
    56     return static_cast<WebKitDOMTestObj*>(DOMObjectCache::put(obj, WebKit::wrapTestObj(obj)));
     62    return static_cast<WebKitDOMTestObj*>(g_object_new(WEBKIT_TYPE_DOM_TEST_OBJ, "core-object", obj, NULL));
    5763}
    5864
     
    6167    g_return_val_if_fail(request, 0);
    6268
    63     WebCore::TestObj* coreObject = static_cast<WebCore::TestObj*>(WEBKIT_DOM_OBJECT(request)->coreObject);
     69    return static_cast<WebCore::TestObj*>(WEBKIT_DOM_OBJECT(request)->coreObject);
     70}
     71
     72WebKitDOMTestObj* wrapTestObj(WebCore::TestObj* coreObject)
     73{
    6474    g_return_val_if_fail(coreObject, 0);
    65 
    66     return coreObject;
    67 }
    68 
    69 WebKitDOMTestObj* wrapTestObj(WebCore::TestObj* coreObject)
    70 {
    71     g_return_val_if_fail(coreObject, 0);
    72 
    73     // We call ref() rather than using a C++ smart pointer because we can't store a C++ object
    74     // in a C-allocated GObject structure. See the finalize() code for the matching deref().
    75     coreObject->ref();
    76 
    7775    return WEBKIT_DOM_TEST_OBJ(g_object_new(WEBKIT_TYPE_DOM_TEST_OBJ, "core-object", coreObject, NULL));
    7876}
     
    134132static void webkit_dom_test_obj_finalize(GObject* object)
    135133{
    136 
    137     WebKitDOMObject* domObject = WEBKIT_DOM_OBJECT(object);
    138    
    139     if (domObject->coreObject) {
    140         WebCore::TestObj* coreObject = static_cast<WebCore::TestObj*>(domObject->coreObject);
    141 
    142         WebKit::DOMObjectCache::forget(coreObject);
    143         coreObject->deref();
    144 
    145         domObject->coreObject = 0;
    146     }
    147 
    148 
     134    WebKitDOMTestObjPrivate* priv = WEBKIT_DOM_TEST_OBJ_GET_PRIVATE(object);
     135
     136    WebKit::DOMObjectCache::forget(priv->coreObject.get());
     137
     138    priv->~WebKitDOMTestObjPrivate();
    149139    G_OBJECT_CLASS(webkit_dom_test_obj_parent_class)->finalize(object);
    150140}
     
    519509}
    520510
     511static GObject* webkit_dom_test_obj_constructor(GType type, guint constructPropertiesCount, GObjectConstructParam* constructProperties)
     512{
     513    GObject* object = G_OBJECT_CLASS(webkit_dom_test_obj_parent_class)->constructor(type, constructPropertiesCount, constructProperties);
     514
     515    WebKitDOMTestObjPrivate* priv = WEBKIT_DOM_TEST_OBJ_GET_PRIVATE(object);
     516    priv->coreObject = static_cast<WebCore::TestObj*>(WEBKIT_DOM_OBJECT(object)->coreObject);
     517    WebKit::DOMObjectCache::put(priv->coreObject.get(), object);
     518
     519    return object;
     520}
     521
    521522static void webkit_dom_test_obj_class_init(WebKitDOMTestObjClass* requestClass)
    522523{
    523524    GObjectClass* gobjectClass = G_OBJECT_CLASS(requestClass);
     525    g_type_class_add_private(gobjectClass, sizeof(WebKitDOMTestObjPrivate));
     526    gobjectClass->constructor = webkit_dom_test_obj_constructor;
    524527    gobjectClass->finalize = webkit_dom_test_obj_finalize;
    525528    gobjectClass->set_property = webkit_dom_test_obj_set_property;
     
    892895static void webkit_dom_test_obj_init(WebKitDOMTestObj* request)
    893896{
     897    WebKitDOMTestObjPrivate* priv = WEBKIT_DOM_TEST_OBJ_GET_PRIVATE(request);
     898    new (priv) WebKitDOMTestObjPrivate();
    894899}
    895900
  • trunk/Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestOverloadedConstructors.cpp

    r136505 r137072  
    3232#include <wtf/RefPtr.h>
    3333
     34#define WEBKIT_DOM_TEST_OVERLOADED_CONSTRUCTORS_GET_PRIVATE(obj) G_TYPE_INSTANCE_GET_PRIVATE(obj, WEBKIT_TYPE_DOM_TEST_OVERLOADED_CONSTRUCTORS, WebKitDOMTestOverloadedConstructorsPrivate)
     35
     36typedef struct _WebKitDOMTestOverloadedConstructorsPrivate {
     37    RefPtr<WebCore::TestOverloadedConstructors> coreObject;
     38} WebKitDOMTestOverloadedConstructorsPrivate;
     39
    3440namespace WebKit {
    3541
     
    4147        return static_cast<WebKitDOMTestOverloadedConstructors*>(ret);
    4248
    43     return static_cast<WebKitDOMTestOverloadedConstructors*>(DOMObjectCache::put(obj, WebKit::wrapTestOverloadedConstructors(obj)));
     49    return static_cast<WebKitDOMTestOverloadedConstructors*>(g_object_new(WEBKIT_TYPE_DOM_TEST_OVERLOADED_CONSTRUCTORS, "core-object", obj, NULL));
    4450}
    4551
     
    4854    g_return_val_if_fail(request, 0);
    4955
    50     WebCore::TestOverloadedConstructors* coreObject = static_cast<WebCore::TestOverloadedConstructors*>(WEBKIT_DOM_OBJECT(request)->coreObject);
    51     g_return_val_if_fail(coreObject, 0);
    52 
    53     return coreObject;
     56    return static_cast<WebCore::TestOverloadedConstructors*>(WEBKIT_DOM_OBJECT(request)->coreObject);
    5457}
    5558
     
    5760{
    5861    g_return_val_if_fail(coreObject, 0);
    59 
    60     // We call ref() rather than using a C++ smart pointer because we can't store a C++ object
    61     // in a C-allocated GObject structure. See the finalize() code for the matching deref().
    62     coreObject->ref();
    63 
    6462    return WEBKIT_DOM_TEST_OVERLOADED_CONSTRUCTORS(g_object_new(WEBKIT_TYPE_DOM_TEST_OVERLOADED_CONSTRUCTORS, "core-object", coreObject, NULL));
    6563}
     
    7169static void webkit_dom_test_overloaded_constructors_finalize(GObject* object)
    7270{
     71    WebKitDOMTestOverloadedConstructorsPrivate* priv = WEBKIT_DOM_TEST_OVERLOADED_CONSTRUCTORS_GET_PRIVATE(object);
    7372
    74     WebKitDOMObject* domObject = WEBKIT_DOM_OBJECT(object);
    75    
    76     if (domObject->coreObject) {
    77         WebCore::TestOverloadedConstructors* coreObject = static_cast<WebCore::TestOverloadedConstructors*>(domObject->coreObject);
     73    WebKit::DOMObjectCache::forget(priv->coreObject.get());
    7874
    79         WebKit::DOMObjectCache::forget(coreObject);
    80         coreObject->deref();
     75    priv->~WebKitDOMTestOverloadedConstructorsPrivate();
     76    G_OBJECT_CLASS(webkit_dom_test_overloaded_constructors_parent_class)->finalize(object);
     77}
    8178
    82         domObject->coreObject = 0;
    83     }
     79static GObject* webkit_dom_test_overloaded_constructors_constructor(GType type, guint constructPropertiesCount, GObjectConstructParam* constructProperties)
     80{
     81    GObject* object = G_OBJECT_CLASS(webkit_dom_test_overloaded_constructors_parent_class)->constructor(type, constructPropertiesCount, constructProperties);
    8482
     83    WebKitDOMTestOverloadedConstructorsPrivate* priv = WEBKIT_DOM_TEST_OVERLOADED_CONSTRUCTORS_GET_PRIVATE(object);
     84    priv->coreObject = static_cast<WebCore::TestOverloadedConstructors*>(WEBKIT_DOM_OBJECT(object)->coreObject);
     85    WebKit::DOMObjectCache::put(priv->coreObject.get(), object);
    8586
    86     G_OBJECT_CLASS(webkit_dom_test_overloaded_constructors_parent_class)->finalize(object);
     87    return object;
    8788}
    8889
     
    9091{
    9192    GObjectClass* gobjectClass = G_OBJECT_CLASS(requestClass);
     93    g_type_class_add_private(gobjectClass, sizeof(WebKitDOMTestOverloadedConstructorsPrivate));
     94    gobjectClass->constructor = webkit_dom_test_overloaded_constructors_constructor;
    9295    gobjectClass->finalize = webkit_dom_test_overloaded_constructors_finalize;
    9396}
     
    9598static void webkit_dom_test_overloaded_constructors_init(WebKitDOMTestOverloadedConstructors* request)
    9699{
     100    WebKitDOMTestOverloadedConstructorsPrivate* priv = WEBKIT_DOM_TEST_OVERLOADED_CONSTRUCTORS_GET_PRIVATE(request);
     101    new (priv) WebKitDOMTestOverloadedConstructorsPrivate();
    97102}
    98103
  • trunk/Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestSerializedScriptValueInterface.cpp

    r136505 r137072  
    3535#include <wtf/RefPtr.h>
    3636
     37#define WEBKIT_DOM_TEST_SERIALIZED_SCRIPT_VALUE_INTERFACE_GET_PRIVATE(obj) G_TYPE_INSTANCE_GET_PRIVATE(obj, WEBKIT_TYPE_DOM_TEST_SERIALIZED_SCRIPT_VALUE_INTERFACE, WebKitDOMTestSerializedScriptValueInterfacePrivate)
     38
     39typedef struct _WebKitDOMTestSerializedScriptValueInterfacePrivate {
     40#if ENABLE(Condition1) || ENABLE(Condition2)
     41    RefPtr<WebCore::TestSerializedScriptValueInterface> coreObject;
     42#endif // ENABLE(Condition1) || ENABLE(Condition2)
     43} WebKitDOMTestSerializedScriptValueInterfacePrivate;
     44
    3745#if ENABLE(Condition1) || ENABLE(Condition2)
    3846
     
    4654        return static_cast<WebKitDOMTestSerializedScriptValueInterface*>(ret);
    4755
    48     return static_cast<WebKitDOMTestSerializedScriptValueInterface*>(DOMObjectCache::put(obj, WebKit::wrapTestSerializedScriptValueInterface(obj)));
     56    return static_cast<WebKitDOMTestSerializedScriptValueInterface*>(g_object_new(WEBKIT_TYPE_DOM_TEST_SERIALIZED_SCRIPT_VALUE_INTERFACE, "core-object", obj, NULL));
    4957}
    5058
     
    5361    g_return_val_if_fail(request, 0);
    5462
    55     WebCore::TestSerializedScriptValueInterface* coreObject = static_cast<WebCore::TestSerializedScriptValueInterface*>(WEBKIT_DOM_OBJECT(request)->coreObject);
     63    return static_cast<WebCore::TestSerializedScriptValueInterface*>(WEBKIT_DOM_OBJECT(request)->coreObject);
     64}
     65
     66WebKitDOMTestSerializedScriptValueInterface* wrapTestSerializedScriptValueInterface(WebCore::TestSerializedScriptValueInterface* coreObject)
     67{
    5668    g_return_val_if_fail(coreObject, 0);
    57 
    58     return coreObject;
    59 }
    60 
    61 WebKitDOMTestSerializedScriptValueInterface* wrapTestSerializedScriptValueInterface(WebCore::TestSerializedScriptValueInterface* coreObject)
    62 {
    63     g_return_val_if_fail(coreObject, 0);
    64 
    65     // We call ref() rather than using a C++ smart pointer because we can't store a C++ object
    66     // in a C-allocated GObject structure. See the finalize() code for the matching deref().
    67     coreObject->ref();
    68 
    6969    return WEBKIT_DOM_TEST_SERIALIZED_SCRIPT_VALUE_INTERFACE(g_object_new(WEBKIT_TYPE_DOM_TEST_SERIALIZED_SCRIPT_VALUE_INTERFACE, "core-object", coreObject, NULL));
    7070}
     
    8787static void webkit_dom_test_serialized_script_value_interface_finalize(GObject* object)
    8888{
    89 #if ENABLE(Condition1) || ENABLE(Condition2)
    90     WebKitDOMObject* domObject = WEBKIT_DOM_OBJECT(object);
    91    
    92     if (domObject->coreObject) {
    93         WebCore::TestSerializedScriptValueInterface* coreObject = static_cast<WebCore::TestSerializedScriptValueInterface*>(domObject->coreObject);
    94 
    95         WebKit::DOMObjectCache::forget(coreObject);
    96         coreObject->deref();
    97 
    98         domObject->coreObject = 0;
    99     }
     89    WebKitDOMTestSerializedScriptValueInterfacePrivate* priv = WEBKIT_DOM_TEST_SERIALIZED_SCRIPT_VALUE_INTERFACE_GET_PRIVATE(object);
     90#if ENABLE(Condition1) || ENABLE(Condition2)
     91    WebKit::DOMObjectCache::forget(priv->coreObject.get());
    10092#endif // ENABLE(Condition1) || ENABLE(Condition2)
    101 
     93    priv->~WebKitDOMTestSerializedScriptValueInterfacePrivate();
    10294    G_OBJECT_CLASS(webkit_dom_test_serialized_script_value_interface_parent_class)->finalize(object);
    10395}
     
    167159}
    168160
     161static GObject* webkit_dom_test_serialized_script_value_interface_constructor(GType type, guint constructPropertiesCount, GObjectConstructParam* constructProperties)
     162{
     163    GObject* object = G_OBJECT_CLASS(webkit_dom_test_serialized_script_value_interface_parent_class)->constructor(type, constructPropertiesCount, constructProperties);
     164#if ENABLE(Condition1) || ENABLE(Condition2)
     165    WebKitDOMTestSerializedScriptValueInterfacePrivate* priv = WEBKIT_DOM_TEST_SERIALIZED_SCRIPT_VALUE_INTERFACE_GET_PRIVATE(object);
     166    priv->coreObject = static_cast<WebCore::TestSerializedScriptValueInterface*>(WEBKIT_DOM_OBJECT(object)->coreObject);
     167    WebKit::DOMObjectCache::put(priv->coreObject.get(), object);
     168#endif // ENABLE(Condition1) || ENABLE(Condition2)
     169    return object;
     170}
     171
    169172static void webkit_dom_test_serialized_script_value_interface_class_init(WebKitDOMTestSerializedScriptValueInterfaceClass* requestClass)
    170173{
    171174    GObjectClass* gobjectClass = G_OBJECT_CLASS(requestClass);
     175    g_type_class_add_private(gobjectClass, sizeof(WebKitDOMTestSerializedScriptValueInterfacePrivate));
     176    gobjectClass->constructor = webkit_dom_test_serialized_script_value_interface_constructor;
    172177    gobjectClass->finalize = webkit_dom_test_serialized_script_value_interface_finalize;
    173178    gobjectClass->get_property = webkit_dom_test_serialized_script_value_interface_get_property;
     
    212217static void webkit_dom_test_serialized_script_value_interface_init(WebKitDOMTestSerializedScriptValueInterface* request)
    213218{
     219    WebKitDOMTestSerializedScriptValueInterfacePrivate* priv = WEBKIT_DOM_TEST_SERIALIZED_SCRIPT_VALUE_INTERFACE_GET_PRIVATE(request);
     220    new (priv) WebKitDOMTestSerializedScriptValueInterfacePrivate();
    214221}
    215222
Note: See TracChangeset for help on using the changeset viewer.