Changeset 157918 in webkit


Ignore:
Timestamp:
Oct 24, 2013 2:08:48 AM (10 years ago)
Author:
Carlos Garcia Campos
Message:

[GObject bindings] Make EventTarget interface introspectable
https://bugs.webkit.org/show_bug.cgi?id=77835

Reviewed by Gustavo Noronha Silva.

Source/WebCore:

Add webkit_dom_event_target_add_event_listener_with_closure and
webkit_dom_event_target_remove_event_listener_with_closure to be
used by GObject instrospection bindings. Instead of receving a
GCallback, which makes the function not introspectable, they
receive a GClosure.

  • bindings/gobject/GObjectEventListener.cpp:

(WebCore::GObjectEventListener::GObjectEventListener):
(WebCore::GObjectEventListener::~GObjectEventListener):
(WebCore::GObjectEventListener::gobjectDestroyed):
(WebCore::GObjectEventListener::handleEvent):
(WebCore::GObjectEventListener::operator==):

  • bindings/gobject/GObjectEventListener.h:

(WebCore::GObjectEventListener::addEventListener):
(WebCore::GObjectEventListener::removeEventListener):

  • bindings/gobject/WebKitDOMEventTarget.cpp:

(webkit_dom_event_target_dispatch_event):
(webkit_dom_event_target_add_event_listener):
(webkit_dom_event_target_remove_event_listener):
(webkit_dom_event_target_add_event_listener_with_closure):
(webkit_dom_event_target_remove_event_listener_with_closure):

  • bindings/gobject/WebKitDOMEventTarget.h:
  • bindings/scripts/CodeGeneratorGObject.pm:

(GenerateEventTargetIface):

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

(webkit_dom_test_event_target_dispatch_event):
(webkit_dom_test_event_target_add_event_listener):
(webkit_dom_test_event_target_remove_event_listener):

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

(webkit_dom_test_node_dispatch_event):
(webkit_dom_test_node_add_event_listener):
(webkit_dom_test_node_remove_event_listener):

Source/WTF:

Add support for use GRefPtr with GClosure.

  • wtf/gobject/GRefPtr.cpp:

(WTF::refGPtr):
(WTF::derefGPtr):

  • wtf/gobject/GRefPtr.h:
  • wtf/gobject/GTypedefs.h:

Tools:

  • Scripts/webkitpy/style/checker.py: Add exceptions for custom

GObject DOM bindings headers.

Location:
trunk
Files:
14 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WTF/ChangeLog

    r157903 r157918  
     12013-10-24  Carlos Garcia Campos  <cgarcia@igalia.com>
     2
     3        [GObject bindings] Make EventTarget interface introspectable
     4        https://bugs.webkit.org/show_bug.cgi?id=77835
     5
     6        Reviewed by Gustavo Noronha Silva.
     7
     8        Add support for use GRefPtr with GClosure.
     9
     10        * wtf/gobject/GRefPtr.cpp:
     11        (WTF::refGPtr):
     12        (WTF::derefGPtr):
     13        * wtf/gobject/GRefPtr.h:
     14        * wtf/gobject/GTypedefs.h:
     15
    1162013-10-23  Anders Carlsson  <andersca@apple.com>
    217
  • trunk/Source/WTF/wtf/gobject/GRefPtr.cpp

    r150019 r157918  
    2222#if USE(GLIB)
    2323
     24#include <glib-object.h>
    2425#include <glib.h>
    2526
     
    146147}
    147148
     149template <> GClosure* refGPtr(GClosure* ptr)
     150{
     151    if (ptr)
     152        g_closure_ref(ptr);
     153    return ptr;
     154}
     155
     156template <> void derefGPtr(GClosure* ptr)
     157{
     158    if (ptr)
     159        g_closure_unref(ptr);
     160}
     161
    148162} // namespace WTF
    149163
  • trunk/Source/WTF/wtf/gobject/GRefPtr.h

    r157624 r157918  
    220220template <> GBytes* refGPtr(GBytes*);
    221221template <> void derefGPtr(GBytes*);
     222template <> GClosure* refGPtr(GClosure*);
     223template <> void derefGPtr(GClosure*);
    222224
    223225template <typename T> inline T* refGPtr(T* ptr)
  • trunk/Source/WTF/wtf/gobject/GTypedefs.h

    r130491 r157918  
    6767typedef struct _GByteArray GByteArray;
    6868typedef struct _GBytes GBytes;
     69typedef struct _GClosure GClosure;
    6970
    7071#if USE(CAIRO)
  • trunk/Source/WebCore/ChangeLog

    r157916 r157918  
     12013-10-24  Carlos Garcia Campos  <cgarcia@igalia.com>
     2
     3        [GObject bindings] Make EventTarget interface introspectable
     4        https://bugs.webkit.org/show_bug.cgi?id=77835
     5
     6        Reviewed by Gustavo Noronha Silva.
     7
     8        Add webkit_dom_event_target_add_event_listener_with_closure and
     9        webkit_dom_event_target_remove_event_listener_with_closure to be
     10        used by GObject instrospection bindings. Instead of receving a
     11        GCallback, which makes the function not introspectable, they
     12        receive a GClosure.
     13
     14        * bindings/gobject/GObjectEventListener.cpp:
     15        (WebCore::GObjectEventListener::GObjectEventListener):
     16        (WebCore::GObjectEventListener::~GObjectEventListener):
     17        (WebCore::GObjectEventListener::gobjectDestroyed):
     18        (WebCore::GObjectEventListener::handleEvent):
     19        (WebCore::GObjectEventListener::operator==):
     20        * bindings/gobject/GObjectEventListener.h:
     21        (WebCore::GObjectEventListener::addEventListener):
     22        (WebCore::GObjectEventListener::removeEventListener):
     23        * bindings/gobject/WebKitDOMEventTarget.cpp:
     24        (webkit_dom_event_target_dispatch_event):
     25        (webkit_dom_event_target_add_event_listener):
     26        (webkit_dom_event_target_remove_event_listener):
     27        (webkit_dom_event_target_add_event_listener_with_closure):
     28        (webkit_dom_event_target_remove_event_listener_with_closure):
     29        * bindings/gobject/WebKitDOMEventTarget.h:
     30        * bindings/scripts/CodeGeneratorGObject.pm:
     31        (GenerateEventTargetIface):
     32        * bindings/scripts/test/GObject/WebKitDOMTestEventTarget.cpp:
     33        (webkit_dom_test_event_target_dispatch_event):
     34        (webkit_dom_test_event_target_add_event_listener):
     35        (webkit_dom_test_event_target_remove_event_listener):
     36        * bindings/scripts/test/GObject/WebKitDOMTestNode.cpp:
     37        (webkit_dom_test_node_dispatch_event):
     38        (webkit_dom_test_node_add_event_listener):
     39        (webkit_dom_test_node_remove_event_listener):
     40
    1412013-10-14  Sergio Villar Senin  <svillar@igalia.com>
    242
  • trunk/Source/WebCore/bindings/gobject/GObjectEventListener.cpp

    r133893 r157918  
    2323#include "WebKitDOMEvent.h"
    2424#include "WebKitDOMEventPrivate.h"
    25 #include <glib-object.h>
     25#include "WebKitDOMEventTarget.h"
    2626#include <wtf/HashMap.h>
    2727
    2828namespace WebCore {
    2929
    30 typedef void (*GObjectEventListenerCallback)(GObject*, WebKitDOMEvent*, void*);
    31 
    32 GObjectEventListener::GObjectEventListener(GObject* object, EventTarget* target, const char* domEventName, GCallback handler, bool capture, void* userData)
     30GObjectEventListener::GObjectEventListener(GObject* target, EventTarget* coreTarget, const char* domEventName, GClosure* handler, bool capture)
    3331    : EventListener(GObjectEventListenerType)
    34     , m_object(object)
    35     , m_coreTarget(target)
     32    , m_target(target)
     33    , m_coreTarget(coreTarget)
    3634    , m_domEventName(domEventName)
    3735    , m_handler(handler)
    3836    , m_capture(capture)
    39     , m_userData(userData)
    4037{
    4138    ASSERT(m_coreTarget);
    42     g_object_weak_ref(object, reinterpret_cast<GWeakNotify>(GObjectEventListener::gobjectDestroyedCallback), this);
     39    if (G_CLOSURE_NEEDS_MARSHAL(m_handler.get()))
     40        g_closure_set_marshal(m_handler.get(), g_cclosure_marshal_generic);
     41    g_object_weak_ref(m_target, reinterpret_cast<GWeakNotify>(GObjectEventListener::gobjectDestroyedCallback), this);
    4342}
    4443
     
    4746    if (!m_coreTarget)
    4847        return;
    49     g_object_weak_unref(m_object, reinterpret_cast<GWeakNotify>(GObjectEventListener::gobjectDestroyedCallback), this);
     48    g_object_weak_unref(m_target, reinterpret_cast<GWeakNotify>(GObjectEventListener::gobjectDestroyedCallback), this);
    5049}
    5150
     
    6059    m_coreTarget = 0;
    6160    target->removeEventListener(m_domEventName.data(), this, m_capture);
     61    m_handler = 0;
    6262}
    6363
    6464void GObjectEventListener::handleEvent(ScriptExecutionContext*, Event* event)
    6565{
    66     WebKitDOMEvent* gobjectEvent = WEBKIT_DOM_EVENT(WebKit::kit(event));
    67     reinterpret_cast<GObjectEventListenerCallback>(m_handler)(m_object, gobjectEvent, m_userData);
    68     g_object_unref(gobjectEvent);
     66    GValue parameters[2] = { G_VALUE_INIT, G_VALUE_INIT };
     67    g_value_init(&parameters[0], WEBKIT_TYPE_DOM_EVENT_TARGET);
     68    g_value_set_object(&parameters[0], m_target);
     69
     70    GRefPtr<WebKitDOMEvent> domEvent = adoptGRef(WebKit::kit(event));
     71    g_value_init(&parameters[1], WEBKIT_TYPE_DOM_EVENT);
     72    g_value_set_object(&parameters[1], domEvent.get());
     73
     74    g_closure_invoke(m_handler.get(), 0, 2, parameters, NULL);
     75    g_value_unset(parameters + 0);
     76    g_value_unset(parameters + 1);
    6977}
    7078
     
    7280{
    7381    if (const GObjectEventListener* gobjectEventListener = GObjectEventListener::cast(&listener))
    74         return m_object == gobjectEventListener->m_object && m_handler == gobjectEventListener->m_handler;
     82        return m_target == gobjectEventListener->m_target
     83            && reinterpret_cast<GCClosure*>(m_handler.get())->callback == reinterpret_cast<GCClosure*>(gobjectEventListener->m_handler.get())->callback;
    7584
    7685    return false;
  • trunk/Source/WebCore/bindings/gobject/GObjectEventListener.h

    r133893 r157918  
    2323#include "EventTarget.h"
    2424#include <wtf/RefPtr.h>
     25#include <wtf/gobject/GRefPtr.h>
    2526#include <wtf/text/CString.h>
    2627
    2728typedef struct _GObject GObject;
    28 typedef void (*GCallback) (void);
     29typedef struct _GClosure GClosure;
    2930
    3031namespace WebCore {
     
    3334public:
    3435
    35     static bool addEventListener(GObject* object, EventTarget* target, const char* domEventName, GCallback handler, bool useCapture, void* userData)
     36    static bool addEventListener(GObject* target, EventTarget* coreTarget, const char* domEventName, GClosure* handler, bool useCapture)
    3637    {
    37         RefPtr<GObjectEventListener> listener(adoptRef(new GObjectEventListener(object, target, domEventName, handler, useCapture, userData)));
    38         return target->addEventListener(domEventName, listener.release(), useCapture);
     38        RefPtr<GObjectEventListener> listener(adoptRef(new GObjectEventListener(target, coreTarget, domEventName, handler, useCapture)));
     39        return coreTarget->addEventListener(domEventName, listener.release(), useCapture);
    3940    }
    4041
    41     static bool removeEventListener(GObject* object, EventTarget* target, const char* domEventName, GCallback handler, bool useCapture)
     42    static bool removeEventListener(GObject* target, EventTarget* coreTarget, const char* domEventName, GClosure* handler, bool useCapture)
    4243    {
    43         GObjectEventListener key(object, target, domEventName, handler, useCapture, 0);
    44         return target->removeEventListener(domEventName, &key, useCapture);
     44        GObjectEventListener key(target, coreTarget, domEventName, handler, useCapture);
     45        return coreTarget->removeEventListener(domEventName, &key, useCapture);
    4546    }
    4647
     
    6061
    6162private:
    62     GObjectEventListener(GObject*, EventTarget*, const char* domEventName, GCallback handler, bool capture, void* userData);
     63    GObjectEventListener(GObject*, EventTarget*, const char* domEventName, GClosure*, bool capture);
    6364    ~GObjectEventListener();
    6465    void gobjectDestroyed();
     
    6667    virtual void handleEvent(ScriptExecutionContext*, Event*);
    6768
    68     GObject* m_object;
    69 
     69    GObject* m_target;
    7070    // We do not need to keep a reference to the m_coreTarget, because
    7171    // we only use it when the GObject and thus the m_coreTarget object is alive.
    7272    EventTarget* m_coreTarget;
    7373    CString m_domEventName;
    74     GCallback m_handler;
     74    GRefPtr<GClosure> m_handler;
    7575    bool m_capture;
    76     void* m_userData;
    7776};
    7877} // namespace WebCore
  • trunk/Source/WebCore/bindings/gobject/WebKitDOMEventTarget.cpp

    r149879 r157918  
    3737#include "WebKitDOMEventTargetPrivate.h"
    3838#include "WebKitDOMPrivate.h"
     39#include <wtf/gobject/GRefPtr.h>
    3940
    4041typedef WebKitDOMEventTargetIface WebKitDOMEventTargetInterface;
     
    4647}
    4748
    48 void webkit_dom_event_target_dispatch_event(WebKitDOMEventTarget* target, WebKitDOMEvent* event, GError** error)
     49gboolean webkit_dom_event_target_dispatch_event(WebKitDOMEventTarget* target, WebKitDOMEvent* event, GError** error)
    4950{
    50     g_return_if_fail(WEBKIT_DOM_IS_EVENT_TARGET(target));
    51     g_return_if_fail(WEBKIT_DOM_IS_EVENT(event));
     51    g_return_val_if_fail(WEBKIT_DOM_IS_EVENT_TARGET(target), FALSE);
     52    g_return_val_if_fail(WEBKIT_DOM_IS_EVENT(event), FALSE);
     53    g_return_val_if_fail(!error || !*error, FALSE);
    5254
    53     WebKitDOMEventTargetIface* iface = WEBKIT_DOM_EVENT_TARGET_GET_IFACE(target);
    54 
    55     if (iface->dispatch_event)
    56         iface->dispatch_event(target, event, error);
     55    return WEBKIT_DOM_EVENT_TARGET_GET_IFACE(target)->dispatch_event(target, event, error);
    5756}
    5857
    59 gboolean webkit_dom_event_target_add_event_listener(WebKitDOMEventTarget* target, const char* eventName, GCallback handler, gboolean bubble, gpointer userData)
     58gboolean webkit_dom_event_target_add_event_listener(WebKitDOMEventTarget* target, const char* eventName, GCallback handler, gboolean useCapture, gpointer userData)
    6059{
    6160
     
    6362    g_return_val_if_fail(eventName, FALSE);
    6463
    65     WebKitDOMEventTargetIface* iface = WEBKIT_DOM_EVENT_TARGET_GET_IFACE(target);
    66 
    67     if (iface->add_event_listener)
    68         return iface->add_event_listener(target, eventName, handler, bubble, userData);
    69 
    70     return FALSE;
     64    GRefPtr<GClosure> closure = adoptGRef(g_cclosure_new(handler, userData, 0));
     65    return WEBKIT_DOM_EVENT_TARGET_GET_IFACE(target)->add_event_listener(target, eventName, closure.get(), useCapture);
    7166}
    7267
    73 gboolean webkit_dom_event_target_remove_event_listener(WebKitDOMEventTarget* target, const char* eventName, GCallback handler, gboolean bubble)
     68gboolean webkit_dom_event_target_remove_event_listener(WebKitDOMEventTarget* target, const char* eventName, GCallback handler, gboolean useCapture)
    7469{
    7570    g_return_val_if_fail(WEBKIT_DOM_IS_EVENT_TARGET(target), FALSE);
    7671    g_return_val_if_fail(eventName, FALSE);
    7772
    78     WebKitDOMEventTargetIface* iface = WEBKIT_DOM_EVENT_TARGET_GET_IFACE(target);
     73    GRefPtr<GClosure> closure = adoptGRef(g_cclosure_new(handler, 0, 0));
     74    return WEBKIT_DOM_EVENT_TARGET_GET_IFACE(target)->remove_event_listener(target, eventName, closure.get(), useCapture);
     75}
    7976
    80     if (iface->remove_event_listener)
    81         return iface->remove_event_listener(target, eventName, handler, bubble);
     77gboolean webkit_dom_event_target_add_event_listener_with_closure(WebKitDOMEventTarget* target, const char* eventName, GClosure* handler, gboolean useCapture)
     78{
     79    g_return_val_if_fail(WEBKIT_DOM_IS_EVENT_TARGET(target), FALSE);
     80    g_return_val_if_fail(eventName, FALSE);
     81    g_return_val_if_fail(handler, FALSE);
    8282
    83     return FALSE;
     83    return WEBKIT_DOM_EVENT_TARGET_GET_IFACE(target)->add_event_listener(target, eventName, handler, useCapture);
     84}
     85
     86gboolean webkit_dom_event_target_remove_event_listener_with_closure(WebKitDOMEventTarget* target, const char* eventName, GClosure* handler, gboolean useCapture)
     87{
     88    g_return_val_if_fail(WEBKIT_DOM_IS_EVENT_TARGET(target), FALSE);
     89    g_return_val_if_fail(eventName, FALSE);
     90    g_return_val_if_fail(handler, FALSE);
     91
     92    return WEBKIT_DOM_EVENT_TARGET_GET_IFACE(target)->remove_event_listener(target, eventName, handler, useCapture);
    8493}
    8594
  • trunk/Source/WebCore/bindings/gobject/WebKitDOMEventTarget.h

    r148914 r157918  
    3737
    3838    /* virtual table */
    39     void          (* dispatch_event)(WebKitDOMEventTarget *target,
     39    gboolean      (* dispatch_event)(WebKitDOMEventTarget *target,
    4040                                     WebKitDOMEvent       *event,
    4141                                     GError              **error);
     
    4343    gboolean      (* add_event_listener)(WebKitDOMEventTarget *target,
    4444                                         const char           *event_name,
    45                                          GCallback             handler,
    46                                          gboolean              bubble,
    47                                          gpointer              user_data);
     45                                         GClosure             *handler,
     46                                         gboolean              use_capture);
    4847    gboolean      (* remove_event_listener)(WebKitDOMEventTarget *target,
    4948                                            const char           *event_name,
    50                                             GCallback             handler,
    51                                             gboolean              bubble);
     49                                            GClosure             *handler,
     50                                            gboolean              use_capture);
    5251};
    5352
     
    5554WEBKIT_API GType     webkit_dom_event_target_get_type(void) G_GNUC_CONST;
    5655
    57 WEBKIT_API void      webkit_dom_event_target_dispatch_event(WebKitDOMEventTarget *target,
     56/**
     57 * webkit_dom_event_target_dispatch_event:
     58 * @target: A #WebKitDOMEventTarget
     59 * @event: A #WebKitDOMEvent
     60 * @error: return location for an error or %NULL
     61 *
     62 * Returns: a #gboolean
     63 */
     64WEBKIT_API gboolean  webkit_dom_event_target_dispatch_event(WebKitDOMEventTarget *target,
    5865                                                            WebKitDOMEvent       *event,
    5966                                                            GError              **error);
     
    6471 * @event_name: A #gchar
    6572 * @handler: (scope async): A #GCallback
    66  * @bubble: A #gboolean
     73 * @use_capture: A #gboolean
    6774 * @user_data: A #gpointer
    6875 *
     76 * Returns: a #gboolean
    6977 */
    7078WEBKIT_API gboolean  webkit_dom_event_target_add_event_listener(WebKitDOMEventTarget *target,
    7179                                                                const char           *event_name,
    7280                                                                GCallback             handler,
    73                                                                 gboolean              bubble,
     81                                                                gboolean              use_capture,
    7482                                                                gpointer              user_data);
    7583
     
    7987 * @event_name: A #gchar
    8088 * @handler: (scope call): A #GCallback
    81  * @bubble: A #gboolean
     89 * @use_capture: A #gboolean
    8290 *
     91 * Returns: a #gboolean
    8392 */
    8493WEBKIT_API gboolean  webkit_dom_event_target_remove_event_listener(WebKitDOMEventTarget *target,
    8594                                                                   const char           *event_name,
    8695                                                                   GCallback             handler,
    87                                                                    gboolean              bubble);
     96                                                                   gboolean              use_capture);
     97
     98/**
     99 * webkit_dom_event_target_add_event_listener_with_closure:
     100 * @target: A #WebKitDOMEventTarget
     101 * @event_name: A #gchar
     102 * @handler: A #GClosure
     103 * @use_capture: A #gboolean
     104 *
     105 * Version of webkit_dom_event_target_add_event_listener() using a closure
     106 * instead of a callbacks for easier binding in other languages.
     107 *
     108 * Returns: a #gboolean
     109 *
     110 * Rename to: webkit_dom_event_target_add_event_listener
     111 */
     112WEBKIT_API gboolean webkit_dom_event_target_add_event_listener_with_closure(WebKitDOMEventTarget *target,
     113                                                                            const char           *event_name,
     114                                                                            GClosure             *handler,
     115                                                                            gboolean              use_capture);
     116
     117/**
     118 * webkit_dom_event_target_remove_event_listener_with_closure:
     119 * @target: A #WebKitDOMEventTarget
     120 * @event_name: A #gchar
     121 * @handler: A #GClosure
     122 * @use_capture: A #gboolean
     123 *
     124 * Version of webkit_dom_event_target_remove_event_listener() using a closure
     125 * instead of a callbacks for easier binding in other languages.
     126 *
     127 * Returns: a #gboolean
     128 *
     129 * Rename to: webkit_dom_event_target_remove_event_listener
     130 */
     131WEBKIT_API gboolean webkit_dom_event_target_remove_event_listener_with_closure(WebKitDOMEventTarget *target,
     132                                                                               const char           *event_name,
     133                                                                               GClosure             *handler,
     134                                                                               gboolean              use_capture);
     135
    88136
    89137G_END_DECLS
  • trunk/Source/WebCore/bindings/scripts/CodeGeneratorGObject.pm

    r156182 r157918  
    13811381    $implIncludes{"WebKitDOMEventPrivate.h"} = 1;
    13821382
    1383     push(@cBodyProperties, "static void webkit_dom_${decamelize}_dispatch_event(WebKitDOMEventTarget* target, WebKitDOMEvent* event, GError** error)\n{\n");
     1383    push(@cBodyProperties, "static gboolean webkit_dom_${decamelize}_dispatch_event(WebKitDOMEventTarget* target, WebKitDOMEvent* event, GError** error)\n{\n");
    13841384    push(@cBodyProperties, "#if ${conditionalString}\n") if $conditionalString;
    13851385    push(@cBodyProperties, "    WebCore::Event* coreEvent = WebKit::core(event);\n");
    13861386    push(@cBodyProperties, "    WebCore::${interfaceName}* coreTarget = static_cast<WebCore::${interfaceName}*>(WEBKIT_DOM_OBJECT(target)->coreObject);\n\n");
    13871387    push(@cBodyProperties, "    WebCore::ExceptionCode ec = 0;\n");
    1388     push(@cBodyProperties, "    coreTarget->dispatchEvent(coreEvent, ec);\n");
     1388    push(@cBodyProperties, "    gboolean result = coreTarget->dispatchEvent(coreEvent, ec);\n");
    13891389    push(@cBodyProperties, "    if (ec) {\n        WebCore::ExceptionCodeDescription description(ec);\n");
    13901390    push(@cBodyProperties, "        g_set_error_literal(error, g_quark_from_string(\"WEBKIT_DOM\"), description.code, description.name);\n    }\n");
    1391     push(@cBodyProperties, "#else\n") if $conditionalString;
    1392     push(@cBodyProperties, @conditionalWarn) if scalar(@conditionalWarn);
    1393     push(@cBodyProperties, "#endif // ${conditionalString}\n") if $conditionalString;
    1394     push(@cBodyProperties, "}\n\n");
    1395 
    1396     push(@cBodyProperties, "static gboolean webkit_dom_${decamelize}_add_event_listener(WebKitDOMEventTarget* target, const char* eventName, GCallback handler, gboolean bubble, gpointer userData)\n{\n");
    1397     push(@cBodyProperties, "#if ${conditionalString}\n") if $conditionalString;
    1398     push(@cBodyProperties, "    WebCore::${interfaceName}* coreTarget = static_cast<WebCore::${interfaceName}*>(WEBKIT_DOM_OBJECT(target)->coreObject);\n");
    1399     push(@cBodyProperties, "    return WebCore::GObjectEventListener::addEventListener(G_OBJECT(target), coreTarget, eventName, handler, bubble, userData);\n");
     1391    push(@cBodyProperties, "    return result;\n");
    14001392    push(@cBodyProperties, "#else\n") if $conditionalString;
    14011393    push(@cBodyProperties, @conditionalWarn) if scalar(@conditionalWarn);
     
    14031395    push(@cBodyProperties, "}\n\n");
    14041396
    1405     push(@cBodyProperties, "static gboolean webkit_dom_${decamelize}_remove_event_listener(WebKitDOMEventTarget* target, const char* eventName, GCallback handler, gboolean bubble)\n{\n");
     1397    push(@cBodyProperties, "static gboolean webkit_dom_${decamelize}_add_event_listener(WebKitDOMEventTarget* target, const char* eventName, GClosure* handler, gboolean useCapture)\n{\n");
    14061398    push(@cBodyProperties, "#if ${conditionalString}\n") if $conditionalString;
    14071399    push(@cBodyProperties, "    WebCore::${interfaceName}* coreTarget = static_cast<WebCore::${interfaceName}*>(WEBKIT_DOM_OBJECT(target)->coreObject);\n");
    1408     push(@cBodyProperties, "    return WebCore::GObjectEventListener::removeEventListener(G_OBJECT(target), coreTarget, eventName, handler, bubble);\n");
     1400    push(@cBodyProperties, "    return WebCore::GObjectEventListener::addEventListener(G_OBJECT(target), coreTarget, eventName, handler, useCapture);\n");
     1401    push(@cBodyProperties, "#else\n") if $conditionalString;
     1402    push(@cBodyProperties, @conditionalWarn) if scalar(@conditionalWarn);
     1403    push(@cBodyProperties, "    return false;\n#endif // ${conditionalString}\n") if $conditionalString;
     1404    push(@cBodyProperties, "}\n\n");
     1405
     1406    push(@cBodyProperties, "static gboolean webkit_dom_${decamelize}_remove_event_listener(WebKitDOMEventTarget* target, const char* eventName, GClosure* handler, gboolean useCapture)\n{\n");
     1407    push(@cBodyProperties, "#if ${conditionalString}\n") if $conditionalString;
     1408    push(@cBodyProperties, "    WebCore::${interfaceName}* coreTarget = static_cast<WebCore::${interfaceName}*>(WEBKIT_DOM_OBJECT(target)->coreObject);\n");
     1409    push(@cBodyProperties, "    return WebCore::GObjectEventListener::removeEventListener(G_OBJECT(target), coreTarget, eventName, handler, useCapture);\n");
    14091410    push(@cBodyProperties, "#else\n") if $conditionalString;
    14101411    push(@cBodyProperties, @conditionalWarn) if scalar(@conditionalWarn);
  • trunk/Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestEventTarget.cpp

    r156163 r157918  
    6969} // namespace WebKit
    7070
    71 static void webkit_dom_test_event_target_dispatch_event(WebKitDOMEventTarget* target, WebKitDOMEvent* event, GError** error)
     71static gboolean webkit_dom_test_event_target_dispatch_event(WebKitDOMEventTarget* target, WebKitDOMEvent* event, GError** error)
    7272{
    7373    WebCore::Event* coreEvent = WebKit::core(event);
     
    7575
    7676    WebCore::ExceptionCode ec = 0;
    77     coreTarget->dispatchEvent(coreEvent, ec);
     77    gboolean result = coreTarget->dispatchEvent(coreEvent, ec);
    7878    if (ec) {
    7979        WebCore::ExceptionCodeDescription description(ec);
    8080        g_set_error_literal(error, g_quark_from_string("WEBKIT_DOM"), description.code, description.name);
    8181    }
     82    return result;
    8283}
    8384
    84 static gboolean webkit_dom_test_event_target_add_event_listener(WebKitDOMEventTarget* target, const char* eventName, GCallback handler, gboolean bubble, gpointer userData)
     85static gboolean webkit_dom_test_event_target_add_event_listener(WebKitDOMEventTarget* target, const char* eventName, GClosure* handler, gboolean useCapture)
    8586{
    8687    WebCore::TestEventTarget* coreTarget = static_cast<WebCore::TestEventTarget*>(WEBKIT_DOM_OBJECT(target)->coreObject);
    87     return WebCore::GObjectEventListener::addEventListener(G_OBJECT(target), coreTarget, eventName, handler, bubble, userData);
     88    return WebCore::GObjectEventListener::addEventListener(G_OBJECT(target), coreTarget, eventName, handler, useCapture);
    8889}
    8990
    90 static gboolean webkit_dom_test_event_target_remove_event_listener(WebKitDOMEventTarget* target, const char* eventName, GCallback handler, gboolean bubble)
     91static gboolean webkit_dom_test_event_target_remove_event_listener(WebKitDOMEventTarget* target, const char* eventName, GClosure* handler, gboolean useCapture)
    9192{
    9293    WebCore::TestEventTarget* coreTarget = static_cast<WebCore::TestEventTarget*>(WEBKIT_DOM_OBJECT(target)->coreObject);
    93     return WebCore::GObjectEventListener::removeEventListener(G_OBJECT(target), coreTarget, eventName, handler, bubble);
     94    return WebCore::GObjectEventListener::removeEventListener(G_OBJECT(target), coreTarget, eventName, handler, useCapture);
    9495}
    9596
  • trunk/Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestNode.cpp

    r156163 r157918  
    5757} // namespace WebKit
    5858
    59 static void webkit_dom_test_node_dispatch_event(WebKitDOMEventTarget* target, WebKitDOMEvent* event, GError** error)
     59static gboolean webkit_dom_test_node_dispatch_event(WebKitDOMEventTarget* target, WebKitDOMEvent* event, GError** error)
    6060{
    6161    WebCore::Event* coreEvent = WebKit::core(event);
     
    6363
    6464    WebCore::ExceptionCode ec = 0;
    65     coreTarget->dispatchEvent(coreEvent, ec);
     65    gboolean result = coreTarget->dispatchEvent(coreEvent, ec);
    6666    if (ec) {
    6767        WebCore::ExceptionCodeDescription description(ec);
    6868        g_set_error_literal(error, g_quark_from_string("WEBKIT_DOM"), description.code, description.name);
    6969    }
     70    return result;
    7071}
    7172
    72 static gboolean webkit_dom_test_node_add_event_listener(WebKitDOMEventTarget* target, const char* eventName, GCallback handler, gboolean bubble, gpointer userData)
     73static gboolean webkit_dom_test_node_add_event_listener(WebKitDOMEventTarget* target, const char* eventName, GClosure* handler, gboolean useCapture)
    7374{
    7475    WebCore::TestNode* coreTarget = static_cast<WebCore::TestNode*>(WEBKIT_DOM_OBJECT(target)->coreObject);
    75     return WebCore::GObjectEventListener::addEventListener(G_OBJECT(target), coreTarget, eventName, handler, bubble, userData);
     76    return WebCore::GObjectEventListener::addEventListener(G_OBJECT(target), coreTarget, eventName, handler, useCapture);
    7677}
    7778
    78 static gboolean webkit_dom_test_node_remove_event_listener(WebKitDOMEventTarget* target, const char* eventName, GCallback handler, gboolean bubble)
     79static gboolean webkit_dom_test_node_remove_event_listener(WebKitDOMEventTarget* target, const char* eventName, GClosure* handler, gboolean useCapture)
    7980{
    8081    WebCore::TestNode* coreTarget = static_cast<WebCore::TestNode*>(WEBKIT_DOM_OBJECT(target)->coreObject);
    81     return WebCore::GObjectEventListener::removeEventListener(G_OBJECT(target), coreTarget, eventName, handler, bubble);
     82    return WebCore::GObjectEventListener::removeEventListener(G_OBJECT(target), coreTarget, eventName, handler, useCapture);
    8283}
    8384
  • trunk/Tools/ChangeLog

    r157891 r157918  
     12013-10-24  Carlos Garcia Campos  <cgarcia@igalia.com>
     2
     3        [GObject bindings] Make EventTarget interface introspectable
     4        https://bugs.webkit.org/show_bug.cgi?id=77835
     5
     6        Reviewed by Gustavo Noronha Silva.
     7
     8        * Scripts/webkitpy/style/checker.py: Add exceptions for custom
     9        GObject DOM bindings headers.
     10
    1112013-10-23  Lucas Forschler  <lforschler@apple.com>
    212
  • trunk/Tools/Scripts/webkitpy/style/checker.py

    r156895 r157918  
    152152      # parens for function calls, and always having variable names.
    153153      # Also, GTK+ allows the use of NULL.
     154      "Source/WebCore/bindings/gobject/WebKitDOMCustom.h",
     155      "Source/WebCore/bindings/gobject/WebKitDOMEventTarget.h",
    154156      "Source/WebCore/bindings/scripts/test/GObject",
    155157      "Source/WebKit/gtk/webkit/",
     
    217219      # variables and functions containing underscores.
    218220      "Source/WebCore/bindings/gobject/WebKitDOMCustom.cpp",
    219       "Source/WebCore/bindings/gobject/WebKitDOMCustom.h",
     221      "Source/WebCore/bindings/gobject/WebKitDOMEventTarget.cpp",
    220222      "Source/WebCore/platform/graphics/gstreamer/VideoSinkGStreamer1.cpp",
    221223      "Source/WebCore/platform/graphics/gstreamer/VideoSinkGStreamer.cpp",
Note: See TracChangeset for help on using the changeset viewer.