[SCM] WebKit Debian packaging branch, debian/experimental, updated. upstream/1.3.3-9427-gc2be6fc

mrobinson at webkit.org mrobinson at webkit.org
Wed Dec 22 12:29:33 UTC 2010


The following commit has been merged in the debian/experimental branch:
commit afebf269bae9941c3a9578798b902c92b7e26a99
Author: mrobinson at webkit.org <mrobinson at webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date:   Tue Aug 24 19:26:40 2010 +0000

    2010-08-24  Martin Robinson  <mrobinson at igalia.com>
    
            Reviewed by Xan Lopez.
    
            [GTK] GTK3: EventSender and API tests should use gdk_event_new when synthesizing events
            https://bugs.webkit.org/show_bug.cgi?id=44534
    
            Fix an issue where a GdkEvent* is treated like a GdkEvent.
    
            * tests/testkeyevents.c:
            (key_press_event_cb):
            (key_release_event_cb):
    2010-08-24  Martin Robinson  <mrobinson at igalia.com>
    
            Reviewed by Xan Lopez.
    
            [GTK] GTK3: EventSender and API tests should use gdk_event_new when synthesizing events
            https://bugs.webkit.org/show_bug.cgi?id=44534
    
            Fix two double-frees introduced in my previous commit.
    
            * DumpRenderTree/gtk/EventSender.cpp:
            (contextClickCallback): Copy the event before using it again.
            (keyDownCallback): Ditto.
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@65922 268f45cc-cd09-0410-ab3c-d52691b4dbfc

diff --git a/WebKit/gtk/ChangeLog b/WebKit/gtk/ChangeLog
index 6621fe5..50c4dab 100644
--- a/WebKit/gtk/ChangeLog
+++ b/WebKit/gtk/ChangeLog
@@ -5,6 +5,19 @@
         [GTK] GTK3: EventSender and API tests should use gdk_event_new when synthesizing events
         https://bugs.webkit.org/show_bug.cgi?id=44534
 
+        Fix an issue where a GdkEvent* is treated like a GdkEvent.
+
+        * tests/testkeyevents.c:
+        (key_press_event_cb):
+        (key_release_event_cb):
+
+2010-08-24  Martin Robinson  <mrobinson at igalia.com>
+
+        Reviewed by Xan Lopez.
+
+        [GTK] GTK3: EventSender and API tests should use gdk_event_new when synthesizing events
+        https://bugs.webkit.org/show_bug.cgi?id=44534
+
         * tests/testcopyandpaste.c:
         (runPasteTestCallback): Switch to using gdk_event_new and also reference the GdkWindow.
         when setting it on the event. It is dereferenced by gdk_event_free(...).
diff --git a/WebKit/gtk/tests/testkeyevents.c b/WebKit/gtk/tests/testkeyevents.c
index b41a032..089d56c 100644
--- a/WebKit/gtk/tests/testkeyevents.c
+++ b/WebKit/gtk/tests/testkeyevents.c
@@ -82,7 +82,7 @@ static void key_event_fixture_teardown(KeyEventFixture* fixture, gconstpointer d
 static gboolean key_press_event_cb(WebKitWebView* webView, GdkEvent* event, gpointer data)
 {
     KeyEventFixture* fixture = (KeyEventFixture*)data;
-    gboolean handled = GTK_WIDGET_GET_CLASS(fixture->webView)->key_press_event(GTK_WIDGET(fixture->webView), &event->key);
+    gboolean handled = GTK_WIDGET_GET_CLASS(fixture->webView)->key_press_event(GTK_WIDGET(fixture->webView), event->key);
     g_assert_cmpint(handled, ==, fixture->info->shouldBeHandled);
 
     return FALSE;
@@ -92,7 +92,7 @@ static gboolean key_release_event_cb(WebKitWebView* webView, GdkEvent* event, gp
 {
     // WebCore never seems to mark keyup events as handled.
     KeyEventFixture* fixture = (KeyEventFixture*)data;
-    gboolean handled = GTK_WIDGET_GET_CLASS(fixture->webView)->key_press_event(GTK_WIDGET(fixture->webView), &event->key);
+    gboolean handled = GTK_WIDGET_GET_CLASS(fixture->webView)->key_press_event(GTK_WIDGET(fixture->webView), event->key);
     g_assert(!handled);
 
     g_main_loop_quit(fixture->loop);
diff --git a/WebKitTools/ChangeLog b/WebKitTools/ChangeLog
index 5cd3b89..af8b3c8 100644
--- a/WebKitTools/ChangeLog
+++ b/WebKitTools/ChangeLog
@@ -5,6 +5,19 @@
         [GTK] GTK3: EventSender and API tests should use gdk_event_new when synthesizing events
         https://bugs.webkit.org/show_bug.cgi?id=44534
 
+        Fix two double-frees introduced in my previous commit.
+
+        * DumpRenderTree/gtk/EventSender.cpp:
+        (contextClickCallback): Copy the event before using it again.
+        (keyDownCallback): Ditto.
+
+2010-08-24  Martin Robinson  <mrobinson at igalia.com>
+
+        Reviewed by Xan Lopez.
+
+        [GTK] GTK3: EventSender and API tests should use gdk_event_new when synthesizing events
+        https://bugs.webkit.org/show_bug.cgi?id=44534
+
         * DumpRenderTree/gtk/EventSender.cpp:
         (prepareMouseButtonEvent): Use gdk_event_new and reference the reference the GdkWindow
         when setting it on the event. It is dereferenced by gdk_event_free(...).
diff --git a/WebKitTools/DumpRenderTree/gtk/EventSender.cpp b/WebKitTools/DumpRenderTree/gtk/EventSender.cpp
index 399a6cc..81ccede 100644
--- a/WebKitTools/DumpRenderTree/gtk/EventSender.cpp
+++ b/WebKitTools/DumpRenderTree/gtk/EventSender.cpp
@@ -176,13 +176,14 @@ bool prepareMouseButtonEvent(GdkEvent* event, int eventSenderButtonNumber)
 
 static JSValueRef contextClickCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
 {
-    GdkEvent* event = gdk_event_new(GDK_BUTTON_PRESS);
-    if (!prepareMouseButtonEvent(event, 2))
+    GdkEvent* pressEvent = gdk_event_new(GDK_BUTTON_PRESS);
+    if (!prepareMouseButtonEvent(pressEvent, 2))
         return JSValueMakeUndefined(context);
 
-    sendOrQueueEvent(event);
-    event->type = GDK_BUTTON_RELEASE;
-    sendOrQueueEvent(event);
+    GdkEvent* releaseEvent = gdk_event_copy(pressEvent);
+    sendOrQueueEvent(pressEvent);
+    releaseEvent->type = GDK_BUTTON_RELEASE;
+    sendOrQueueEvent(releaseEvent);
 
     return JSValueMakeUndefined(context);
 }
@@ -551,25 +552,25 @@ static JSValueRef keyDownCallback(JSContextRef context, JSObjectRef function, JS
         return JSValueMakeUndefined(context);
 
     // create and send the event
-    GdkEvent* event = gdk_event_new(GDK_KEY_PRESS);
-    event->key.keyval = gdkKeySym;
-    event->key.state = state;
-    event->key.window = gtk_widget_get_window(GTK_WIDGET(view));
-    g_object_ref(event->key.window);
+    GdkEvent* pressEvent = gdk_event_new(GDK_KEY_PRESS);
+    pressEvent->key.keyval = gdkKeySym;
+    pressEvent->key.state = state;
+    pressEvent->key.window = gtk_widget_get_window(GTK_WIDGET(view));
+    g_object_ref(pressEvent->key.window);
 
     // When synthesizing an event, an invalid hardware_keycode value
     // can cause it to be badly processed by Gtk+.
     GdkKeymapKey* keys;
     gint n_keys;
     if (gdk_keymap_get_entries_for_keyval(gdk_keymap_get_default(), gdkKeySym, &keys, &n_keys)) {
-        event->key.hardware_keycode = keys[0].keycode;
+        pressEvent->key.hardware_keycode = keys[0].keycode;
         g_free(keys);
     }
 
-    dispatchEvent(event);
-
-    event->key.type = GDK_KEY_RELEASE;
-    dispatchEvent(event);
+    GdkEvent* releaseEvent = gdk_event_copy(pressEvent);
+    dispatchEvent(pressEvent);
+    releaseEvent->key.type = GDK_KEY_RELEASE;
+    dispatchEvent(releaseEvent);
 
     return JSValueMakeUndefined(context);
 }

-- 
WebKit Debian packaging



More information about the Pkg-webkit-commits mailing list