Changeset 64580 in webkit


Ignore:
Timestamp:
Aug 3, 2010 12:41:18 PM (14 years ago)
Author:
xan@webkit.org
Message:

2010-08-03 Xan Lopez <xlopez@igalia.com>

Reviewed by Gustavo Noronha.

[GTK] Fix DOM event dispatch
https://bugs.webkit.org/show_bug.cgi?id=40847

Add new files to the build.

  • GNUmakefile.am:

WebCore:

2010-08-03 Xan Lopez <xlopez@igalia.com>

Reviewed by Gustavo Noronha.

[GTK] Fix DOM event dispatch
https://bugs.webkit.org/show_bug.cgi?id=40847

Bind UI and Mouse events and add ad-hoc kit method for WebCore
Events.

  • GNUmakefile.am:
  • bindings/gobject/WebKitDOMBinding.cpp: (WebKit::kit):
  • bindings/gobject/WebKitDOMBinding.h:
  • bindings/gobject/WebKitDOMEventTarget.cpp: (WebKit::core):
  • bindings/gobject/WebKitDOMEventTargetPrivate.h: Added.
  • bindings/scripts/CodeGeneratorGObject.pm:

WebKit/gtk:

2010-08-03 Xan Lopez <xlopez@igalia.com>

Reviewed by Gustavo Noronha.

[GTK] Fix DOM event dispatch
https://bugs.webkit.org/show_bug.cgi?id=40847

Test DOM event dispatch.

  • tests/testdomdomwindow.c: (load_event_callback): (test_dom_domview_signals): (clicked_cb): (load_status_callback): (test_dom_domview_dispatch_event): (main):
Location:
trunk
Files:
1 added
10 edited

Legend:

Unmodified
Added
Removed
  • trunk/ChangeLog

    r64550 r64580  
     12010-08-03  Xan Lopez  <xlopez@igalia.com>
     2
     3        Reviewed by Gustavo Noronha.
     4
     5        [GTK] Fix DOM event dispatch
     6        https://bugs.webkit.org/show_bug.cgi?id=40847
     7
     8        Add new files to the build.
     9
     10        * GNUmakefile.am:
     11
    1122010-08-03  Xan Lopez  <xlopez@igalia.com>
    213
  • trunk/GNUmakefile.am

    r64550 r64580  
    360360        DerivedSources/webkit/WebKitDOMEvent.h \
    361361        DerivedSources/webkit/WebKitDOMMessagePort.h \
     362        DerivedSources/webkit/WebKitDOMMouseEvent.h \
    362363        DerivedSources/webkit/WebKitDOMNamedNodeMap.h \
    363364        DerivedSources/webkit/WebKitDOMNode.h \
     
    369370        DerivedSources/webkit/WebKitDOMText.h \
    370371        DerivedSources/webkit/WebKitDOMTreeWalker.h \
     372        DerivedSources/webkit/WebKitDOMUIEvent.h \
    371373        DerivedSources/webkit/WebKitDOMBlob.h \
    372374        DerivedSources/webkit/WebKitDOMFile.h \
     
    526528        DerivedSources/webkit/WebKitDOMEvent.cpp \
    527529        DerivedSources/webkit/WebKitDOMEventPrivate.h \
     530        DerivedSources/webkit/WebKitDOMEventTargetPrivate.h \
    528531        DerivedSources/webkit/WebKitDOMFile.cpp \
    529532        DerivedSources/webkit/WebKitDOMFileList.cpp \
     
    666669        DerivedSources/webkit/WebKitDOMMessagePort.cpp \
    667670        DerivedSources/webkit/WebKitDOMMessagePortPrivate.h \
     671        DerivedSources/webkit/WebKitDOMMouseEvent.cpp \
     672        DerivedSources/webkit/WebKitDOMMouseEventPrivate.h \
    668673        DerivedSources/webkit/WebKitDOMNamedNodeMap.cpp \
    669674        DerivedSources/webkit/WebKitDOMNamedNodeMapPrivate.h \
     
    698703        DerivedSources/webkit/WebKitDOMTreeWalker.cpp \
    699704        DerivedSources/webkit/WebKitDOMTreeWalkerPrivate.h \
     705        DerivedSources/webkit/WebKitDOMUIEvent.cpp \
     706        DerivedSources/webkit/WebKitDOMUIEventPrivate.h \
    700707        DerivedSources/webkit/WebKitDOMValidityState.cpp \
    701708        DerivedSources/webkit/WebKitDOMValidityStatePrivate.h \
     
    790797        $(AM_V_GEN)cp -f $< $@
    791798
     799$(top_builddir)/DerivedSources/webkit/WebKitDOMEventTargetPrivate.h: $(WebCore)/bindings/gobject/WebKitDOMEventTargetPrivate.h
     800        $(AM_V_GEN)cp -f $< $@
     801
    792802# Filter out SVG for now
    793803gdom_feature_defines := $(filter-out ENABLE-SVG%, $(FEATURE_DEFINES))
  • trunk/WebCore/ChangeLog

    r64579 r64580  
     12010-08-03  Xan Lopez  <xlopez@igalia.com>
     2
     3        Reviewed by Gustavo Noronha.
     4
     5        [GTK] Fix DOM event dispatch
     6        https://bugs.webkit.org/show_bug.cgi?id=40847
     7
     8        Bind UI and Mouse events and add ad-hoc kit method for WebCore
     9        Events.
     10
     11        * GNUmakefile.am:
     12        * bindings/gobject/WebKitDOMBinding.cpp:
     13        (WebKit::kit):
     14        * bindings/gobject/WebKitDOMBinding.h:
     15        * bindings/gobject/WebKitDOMEventTarget.cpp:
     16        (WebKit::core):
     17        * bindings/gobject/WebKitDOMEventTargetPrivate.h: Added.
     18        * bindings/scripts/CodeGeneratorGObject.pm:
     19
    1202010-08-03  Nikolas Zimmermann  <nzimmermann@rim.com>
    221
  • trunk/WebCore/GNUmakefile.am

    r64577 r64580  
    565565        WebCore/bindings/gobject/WebKitDOMEventTarget.cpp \
    566566        WebCore/bindings/gobject/WebKitDOMEventTarget.h \
     567        WebCore/bindings/gobject/WebKitDOMEventTargetPrivate.h \
    567568        WebCore/bindings/gobject/WebKitHTMLElementWrapperFactory.cpp \
    568569        WebCore/bindings/gobject/WebKitHTMLElementWrapperFactory.h \
  • trunk/WebCore/bindings/gobject/WebKitDOMBinding.cpp

    r60229 r64580  
    2828#include "EventException.h"
    2929#include "HTMLNames.h"
     30#include "MouseEvent.h"
     31#include "UIEvent.h"
    3032#include "WebKitDOMDOMWindowPrivate.h"
    3133#include "WebKitDOMElementPrivate.h"
     
    3335#include "WebKitDOMNodePrivate.h"
    3436#include "WebKitHTMLElementWrapperFactory.h"
     37#include "webkit/WebKitDOMMouseEventPrivate.h"
     38#include "webkit/WebKitDOMUIEventPrivate.h"
    3539
    3640namespace WebKit {
     
    120124}
    121125
     126gpointer kit(Event* event)
     127{
     128    if (!event)
     129        return 0;
     130
     131    gpointer kitEvent = DOMObjectCache::get(event);
     132    if (kitEvent)
     133        return kitEvent;
     134
     135    gpointer wrappedEvent;
     136
     137    if (event->isMouseEvent())
     138        wrappedEvent = wrapMouseEvent(static_cast<MouseEvent*>(event));
     139    else if (event->isUIEvent())
     140        wrappedEvent = wrapUIEvent(static_cast<UIEvent*>(event));
     141    else
     142        wrappedEvent = 0;
     143
     144    return DOMObjectCache::put(event, wrappedEvent);
     145}
     146
    122147static gpointer wrapEventTarget(EventTarget* target)
    123148{
  • trunk/WebCore/bindings/gobject/WebKitDOMBinding.h

    r60229 r64580  
    3030class Node;
    3131class Element;
     32class Event;
    3233class EventTarget;
    3334} // namespace WebCore
     
    3637gpointer kit(WebCore::Node* node);
    3738gpointer kit(WebCore::Element* element);
     39gpointer kit(WebCore::Event* event);
    3840gpointer kit(WebCore::EventTarget* target);
    3941
  • trunk/WebCore/bindings/gobject/WebKitDOMEventTarget.cpp

    r60243 r64580  
    3232#include "WebKitDOMEventTarget.h"
    3333
     34#include "EventTarget.h"
    3435#include "WebKitDOMEvent.h"
    3536
     
    7677        iface->dispatch_event(target, event, error);
    7778}
     79
     80namespace WebKit {
     81
     82WebCore::EventTarget* core(WebKitDOMEventTarget* request)
     83{
     84    g_return_val_if_fail(request, 0);
     85
     86    WebCore::EventTarget* coreObject = static_cast<WebCore::EventTarget*>(WEBKIT_DOM_OBJECT(request)->coreObject);
     87    g_return_val_if_fail(coreObject, 0);
     88
     89    return coreObject;
     90}
     91
     92} // namespace WebKit
     93
  • trunk/WebCore/bindings/scripts/CodeGeneratorGObject.pm

    r64552 r64580  
    127127    $CLASS_NAME =~ s/DOMX_PATH/DOM_XPATH/;
    128128    $CLASS_NAME =~ s/DOM_WEB_KIT/DOM_WEBKIT/;
     129    $CLASS_NAME =~ s/DOMUI/DOM_UI/;
    129130    return $CLASS_NAME;
    130131}
     
    12241225    my $type = shift;
    12251226
    1226     return 1 if $type eq "Node" or $type eq "Element";
     1227    return 1 if $type eq "Node" or $type eq "Element" or $type eq "Event";
    12271228    return 0;
    12281229}
  • trunk/WebKit/gtk/ChangeLog

    r64567 r64580  
     12010-08-03  Xan Lopez  <xlopez@igalia.com>
     2
     3        Reviewed by Gustavo Noronha.
     4
     5        [GTK] Fix DOM event dispatch
     6        https://bugs.webkit.org/show_bug.cgi?id=40847
     7
     8        Test DOM event dispatch.
     9
     10        * tests/testdomdomwindow.c:
     11        (load_event_callback):
     12        (test_dom_domview_signals):
     13        (clicked_cb):
     14        (load_status_callback):
     15        (test_dom_domview_dispatch_event):
     16        (main):
     17
    1182010-08-03  Gustavo Noronha Silva  <gustavo.noronha@collabora.co.uk>
    219
  • trunk/WebKit/gtk/tests/testdomdomwindow.c

    r60229 r64580  
    2727#if GLIB_CHECK_VERSION(2, 16, 0) && GTK_CHECK_VERSION(2, 14, 0)
    2828
    29 #define HTML_DOCUMENT "<html><head><title>This is the title</title></head><body></body></html>"
     29#define HTML_DOCUMENT "<html><head><title>This is the title</title></head><body><p id='test'>test</p></body></html>"
    3030
    3131typedef struct {
     
    109109
    110110        g_assert(fixture->clicked == FALSE);
    111         gtk_test_widget_click (GTK_WIDGET(fixture->webView), 1, 0);
     111        gtk_test_widget_click(GTK_WIDGET(fixture->webView), 1, 0);
    112112    }
    113113
     
    133133    gtk_window_present(GTK_WINDOW(fixture->window));
    134134
     135    g_main_loop_run(fixture->loop);
     136
     137    g_assert(fixture->loaded);
     138    g_assert(fixture->clicked);
     139}
     140
     141static gboolean
     142clicked_cb(WebKitDOMEventTarget* target, WebKitDOMEvent* event, DomDomviewFixture* fixture)
     143{
     144    g_assert(fixture->clicked == FALSE);
     145    fixture->clicked = TRUE;
     146    finish_loading(fixture);
     147    return FALSE;
     148}
     149
     150static void load_status_callback(WebKitWebView* webView, GParamSpec* spec, DomDomviewFixture* fixture)
     151{
     152    WebKitLoadStatus status = webkit_web_view_get_load_status(webView);
     153    if (status == WEBKIT_LOAD_FINISHED) {
     154        WebKitDOMDocument* document;
     155        WebKitDOMDOMWindow* domWindow;
     156        WebKitDOMElement* element;
     157        WebKitDOMEvent* event;
     158        glong clientX, clientY;
     159
     160        document = webkit_web_view_get_dom_document(WEBKIT_WEB_VIEW(fixture->webView));
     161        g_assert(document);
     162        domWindow = webkit_dom_document_get_default_view(document);
     163        g_assert(domWindow);
     164        fixture->domWindow = domWindow;
     165
     166        element = webkit_dom_document_get_element_by_id(document, "test");
     167        g_assert(element);
     168        event = webkit_dom_document_create_event(document, "MouseEvent", NULL);
     169        g_assert(event);
     170        g_assert(WEBKIT_DOM_IS_EVENT(event));
     171        g_assert(WEBKIT_DOM_IS_MOUSE_EVENT(event));
     172        clientX = webkit_dom_element_get_client_left(element);
     173        clientY = webkit_dom_element_get_client_top(element);
     174        webkit_dom_mouse_event_init_mouse_event(WEBKIT_DOM_MOUSE_EVENT(event),
     175                                                "click", TRUE, TRUE,
     176                                                fixture->domWindow, 0, 0, 0, clientX, clientY,
     177                                                FALSE, FALSE, FALSE, FALSE,
     178                                                1, WEBKIT_DOM_EVENT_TARGET(element));
     179        g_signal_connect(element, "click-event", G_CALLBACK(clicked_cb), fixture);
     180        g_assert(fixture->clicked == FALSE);
     181        webkit_dom_event_target_dispatch_event(WEBKIT_DOM_EVENT_TARGET(element), event, NULL);
     182    }
     183
     184}
     185
     186static void test_dom_domview_dispatch_event(DomDomviewFixture* fixture, gconstpointer data)
     187{
     188    g_signal_connect(fixture->window, "map-event", G_CALLBACK(map_event_cb), fixture);
     189    g_signal_connect(fixture->webView, "notify::load-status", G_CALLBACK(load_status_callback), fixture);
     190
     191    gtk_widget_show_all(fixture->window);
     192    gtk_window_present(GTK_WINDOW(fixture->window));
     193
    135194    g_main_loop_run (fixture->loop);
    136 
    137     g_assert(fixture->loaded);
    138195    g_assert(fixture->clicked);
    139196}
     
    154211               dom_domview_fixture_teardown);
    155212
     213    g_test_add("/webkit/domdomview/dispatch_event",
     214               DomDomviewFixture, HTML_DOCUMENT,
     215               dom_domview_fixture_setup,
     216               test_dom_domview_dispatch_event,
     217               dom_domview_fixture_teardown);
     218
    156219    return g_test_run();
    157220}
Note: See TracChangeset for help on using the changeset viewer.