Title: [227961] trunk/Source/WebKit
- Revision
- 227961
- Author
- [email protected]
- Date
- 2018-02-01 05:58:22 -0800 (Thu, 01 Feb 2018)
Log Message
REGRESSION(r227893): fast/events/touch/touch-stale-node-crash.html and other tests crash
https://bugs.webkit.org/show_bug.cgi?id=182350
Reviewed by Carlos Alberto Lopez Perez.
Ensure events synthesized from touch gestures have a valid window, screen and device.
* UIProcess/API/gtk/WebKitWebViewBase.cpp:
* UIProcess/gtk/GestureController.h: Add virtual destructor to GestureControllerclient.
Modified Paths
Diff
Modified: trunk/Source/WebKit/ChangeLog (227960 => 227961)
--- trunk/Source/WebKit/ChangeLog 2018-02-01 13:38:01 UTC (rev 227960)
+++ trunk/Source/WebKit/ChangeLog 2018-02-01 13:58:22 UTC (rev 227961)
@@ -1,3 +1,15 @@
+2018-02-01 Carlos Garcia Campos <[email protected]>
+
+ REGRESSION(r227893): fast/events/touch/touch-stale-node-crash.html and other tests crash
+ https://bugs.webkit.org/show_bug.cgi?id=182350
+
+ Reviewed by Carlos Alberto Lopez Perez.
+
+ Ensure events synthesized from touch gestures have a valid window, screen and device.
+
+ * UIProcess/API/gtk/WebKitWebViewBase.cpp:
+ * UIProcess/gtk/GestureController.h: Add virtual destructor to GestureControllerclient.
+
2018-01-31 Simon Fraser <[email protected]>
Use different debug red colors for different contexts
Modified: trunk/Source/WebKit/UIProcess/API/gtk/WebKitWebViewBase.cpp (227960 => 227961)
--- trunk/Source/WebKit/UIProcess/API/gtk/WebKitWebViewBase.cpp 2018-02-01 13:38:01 UTC (rev 227960)
+++ trunk/Source/WebKit/UIProcess/API/gtk/WebKitWebViewBase.cpp 2018-02-01 13:58:22 UTC (rev 227961)
@@ -1021,10 +1021,15 @@
#else
UNUSED_PARAM(isStop);
#endif
+ scrollEvent->scroll.window = event->window ? GDK_WINDOW(g_object_ref(event->window)) : nullptr;
+ auto* touchEvent = reinterpret_cast<GdkEvent*>(event);
+ gdk_event_set_screen(scrollEvent.get(), gdk_event_get_screen(touchEvent));
+ gdk_event_set_device(scrollEvent.get(), gdk_event_get_device(touchEvent));
+ gdk_event_set_source_device(scrollEvent.get(), gdk_event_get_source_device(touchEvent));
return scrollEvent;
}
- void simulateMouseClick(const GdkEventTouch* event, unsigned button)
+ void simulateMouseClick(GdkEventTouch* event, unsigned button)
{
GUniquePtr<GdkEvent> pointerEvent(gdk_event_new(GDK_MOTION_NOTIFY));
pointerEvent->motion.time = event->time;
@@ -1033,6 +1038,11 @@
pointerEvent->motion.x_root = event->x_root;
pointerEvent->motion.y_root = event->y_root;
pointerEvent->motion.state = event->state;
+ pointerEvent->motion.window = event->window ? GDK_WINDOW(g_object_ref(event->window)) : nullptr;
+ auto* touchEvent = reinterpret_cast<GdkEvent*>(event);
+ gdk_event_set_screen(pointerEvent.get(), gdk_event_get_screen(touchEvent));
+ gdk_event_set_device(pointerEvent.get(), gdk_event_get_device(touchEvent));
+ gdk_event_set_source_device(pointerEvent.get(), gdk_event_get_source_device(touchEvent));
webkitWebViewBaseHandleMouseEvent(m_webView, pointerEvent.get());
pointerEvent.reset(gdk_event_new(GDK_BUTTON_PRESS));
@@ -1042,6 +1052,10 @@
pointerEvent->button.y = event->y;
pointerEvent->button.x_root = event->x_root;
pointerEvent->button.y_root = event->y_root;
+ pointerEvent->button.window = event->window ? GDK_WINDOW(g_object_ref(event->window)) : nullptr;
+ gdk_event_set_screen(pointerEvent.get(), gdk_event_get_screen(touchEvent));
+ gdk_event_set_device(pointerEvent.get(), gdk_event_get_device(touchEvent));
+ gdk_event_set_source_device(pointerEvent.get(), gdk_event_get_source_device(touchEvent));
webkitWebViewBaseHandleMouseEvent(m_webView, pointerEvent.get());
pointerEvent->type = GDK_BUTTON_RELEASE;
Modified: trunk/Source/WebKit/UIProcess/gtk/GestureController.h (227960 => 227961)
--- trunk/Source/WebKit/UIProcess/gtk/GestureController.h 2018-02-01 13:38:01 UTC (rev 227960)
+++ trunk/Source/WebKit/UIProcess/gtk/GestureController.h 2018-02-01 13:58:22 UTC (rev 227961)
@@ -41,6 +41,8 @@
class GestureControllerClient {
public:
+ virtual ~GestureControllerClient() = default;
+
virtual void tap(GdkEventTouch*) = 0;
virtual void startDrag(GdkEventTouch*, const WebCore::FloatPoint&) = 0;
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes