Diff
Modified: releases/WebKitGTK/webkit-2.34/Source/WebKit/ChangeLog (289078 => 289079)
--- releases/WebKitGTK/webkit-2.34/Source/WebKit/ChangeLog 2022-02-03 22:12:39 UTC (rev 289078)
+++ releases/WebKitGTK/webkit-2.34/Source/WebKit/ChangeLog 2022-02-03 22:27:08 UTC (rev 289079)
@@ -1,3 +1,20 @@
+2021-09-23 Chris Lord <cl...@igalia.com>
+
+ [GTK] Allow sending precise mouse wheel events in LayoutTests
+ https://bugs.webkit.org/show_bug.cgi?id=230541
+
+ Reviewed by Tim Horton.
+
+ Add code to be able to send precise synthetic mouse-wheel events in GTK.
+
+ * Shared/NativeWebWheelEvent.h:
+ * Shared/gtk/NativeWebWheelEventGtk.cpp:
+ (WebKit::NativeWebWheelEvent::NativeWebWheelEvent):
+ * UIProcess/API/gtk/WebKitWebViewBase.cpp:
+ (webkitWebViewBaseSynthesizeWheelEvent):
+ (webkitWebViewBaseSetWheelHasPreciseDeltas):
+ * UIProcess/API/gtk/WebKitWebViewBaseInternal.h:
+
2022-01-20 Adrian Perez de Castro <ape...@igalia.com>
Unreviewed. Update OptionsWPE.cmake and NEWS for the 2.34.4 release
Modified: releases/WebKitGTK/webkit-2.34/Source/WebKit/Shared/NativeWebWheelEvent.h (289078 => 289079)
--- releases/WebKitGTK/webkit-2.34/Source/WebKit/Shared/NativeWebWheelEvent.h 2022-02-03 22:12:39 UTC (rev 289078)
+++ releases/WebKitGTK/webkit-2.34/Source/WebKit/Shared/NativeWebWheelEvent.h 2022-02-03 22:27:08 UTC (rev 289079)
@@ -61,7 +61,7 @@
NativeWebWheelEvent(GdkEvent*);
NativeWebWheelEvent(GdkEvent*, WebWheelEvent::Phase, WebWheelEvent::Phase momentumPhase);
NativeWebWheelEvent(GdkEvent*, const WebCore::IntPoint&, const WebCore::FloatSize& wheelTicks);
- NativeWebWheelEvent(GdkEvent*, const WebCore::IntPoint& position, const WebCore::IntPoint& globalPosition, const WebCore::FloatSize& delta, const WebCore::FloatSize& wheelTicks, WebWheelEvent::Phase, WebWheelEvent::Phase momentumPhase);
+ NativeWebWheelEvent(GdkEvent*, const WebCore::IntPoint& position, const WebCore::IntPoint& globalPosition, const WebCore::FloatSize& delta, const WebCore::FloatSize& wheelTicks, WebWheelEvent::Phase, WebWheelEvent::Phase momentumPhase, bool hasPreciseDeltas = false);
#elif USE(LIBWPE)
NativeWebWheelEvent(struct wpe_input_axis_event*, float deviceScaleFactor, WebWheelEvent::Phase, WebWheelEvent::Phase momentumPhase);
#elif PLATFORM(WIN)
Modified: releases/WebKitGTK/webkit-2.34/Source/WebKit/Shared/gtk/NativeWebWheelEventGtk.cpp (289078 => 289079)
--- releases/WebKitGTK/webkit-2.34/Source/WebKit/Shared/gtk/NativeWebWheelEventGtk.cpp 2022-02-03 22:12:39 UTC (rev 289078)
+++ releases/WebKitGTK/webkit-2.34/Source/WebKit/Shared/gtk/NativeWebWheelEventGtk.cpp 2022-02-03 22:27:08 UTC (rev 289079)
@@ -49,8 +49,8 @@
{
}
-NativeWebWheelEvent::NativeWebWheelEvent(GdkEvent *event, const WebCore::IntPoint& position, const WebCore::IntPoint& globalPosition, const WebCore::FloatSize& delta, const WebCore::FloatSize& wheelTicks, WebWheelEvent::Phase phase, WebWheelEvent::Phase momentumPhase)
- : WebWheelEvent(WebEvent::Wheel, position, globalPosition, delta, wheelTicks, phase, momentumPhase, WebWheelEvent::ScrollByPixelWheelEvent, false, { }, WallTime::now())
+NativeWebWheelEvent::NativeWebWheelEvent(GdkEvent *event, const WebCore::IntPoint& position, const WebCore::IntPoint& globalPosition, const WebCore::FloatSize& delta, const WebCore::FloatSize& wheelTicks, WebWheelEvent::Phase phase, WebWheelEvent::Phase momentumPhase, bool hasPreciseDeltas)
+ : WebWheelEvent(WebEvent::Wheel, position, globalPosition, delta, wheelTicks, phase, momentumPhase, WebWheelEvent::ScrollByPixelWheelEvent, hasPreciseDeltas, { }, WallTime::now())
, m_nativeEvent(event ? gdk_event_copy(event) : nullptr)
{
}
Modified: releases/WebKitGTK/webkit-2.34/Source/WebKit/UIProcess/API/gtk/WebKitWebViewBase.cpp (289078 => 289079)
--- releases/WebKitGTK/webkit-2.34/Source/WebKit/UIProcess/API/gtk/WebKitWebViewBase.cpp 2022-02-03 22:12:39 UTC (rev 289078)
+++ releases/WebKitGTK/webkit-2.34/Source/WebKit/UIProcess/API/gtk/WebKitWebViewBase.cpp 2022-02-03 22:27:08 UTC (rev 289079)
@@ -284,6 +284,7 @@
TouchEventsMap touchEvents;
IntSize contentsSize;
std::optional<MotionEvent> lastMotionEvent;
+ bool wheelHasPreciseDeltas { false };
bool isBlank;
bool shouldNotifyFocusEvents { true };
@@ -2994,12 +2995,18 @@
FloatSize wheelTicks(deltaX, deltaY);
FloatSize delta(wheelTicks);
- delta.scale(static_cast<float>(Scrollbar::pixelsPerLineStep()));
+ if (!priv->wheelHasPreciseDeltas)
+ delta.scale(static_cast<float>(Scrollbar::pixelsPerLineStep()));
priv->pageProxy->handleWheelEvent(NativeWebWheelEvent(const_cast<GdkEvent*>(event), { x, y }, widgetRootCoords(GTK_WIDGET(webViewBase), x, y),
- delta, wheelTicks, toWebKitWheelEventPhase(phase), toWebKitWheelEventPhase(momentumPhase)));
+ delta, wheelTicks, toWebKitWheelEventPhase(phase), toWebKitWheelEventPhase(momentumPhase), priv->wheelHasPreciseDeltas));
}
+void webkitWebViewBaseSetWheelHasPreciseDeltas(WebKitWebViewBase* webViewBase, bool hasPreciseDeltas)
+{
+ webViewBase->priv->wheelHasPreciseDeltas = hasPreciseDeltas;
+}
+
void webkitWebViewBaseMakeBlank(WebKitWebViewBase* webViewBase, bool makeBlank)
{
WebKitWebViewBasePrivate* priv = webViewBase->priv;
Modified: releases/WebKitGTK/webkit-2.34/Source/WebKit/UIProcess/API/gtk/WebKitWebViewBaseInternal.h (289078 => 289079)
--- releases/WebKitGTK/webkit-2.34/Source/WebKit/UIProcess/API/gtk/WebKitWebViewBaseInternal.h 2022-02-03 22:12:39 UTC (rev 289078)
+++ releases/WebKitGTK/webkit-2.34/Source/WebKit/UIProcess/API/gtk/WebKitWebViewBaseInternal.h 2022-02-03 22:27:08 UTC (rev 289079)
@@ -45,3 +45,5 @@
enum class WheelEventPhase { NoPhase, Began, Changed, Ended, Cancelled, MayBegin };
WK_EXPORT void webkitWebViewBaseSynthesizeWheelEvent(WebKitWebViewBase*, double deltaX, double deltaY, int x, int y, WheelEventPhase, WheelEventPhase momentumPhase);
+WK_EXPORT void webkitWebViewBaseSetWheelHasPreciseDeltas(WebKitWebViewBase*, bool);
+
Modified: releases/WebKitGTK/webkit-2.34/Tools/ChangeLog (289078 => 289079)
--- releases/WebKitGTK/webkit-2.34/Tools/ChangeLog 2022-02-03 22:12:39 UTC (rev 289078)
+++ releases/WebKitGTK/webkit-2.34/Tools/ChangeLog 2022-02-03 22:27:08 UTC (rev 289079)
@@ -1,3 +1,24 @@
+2021-09-23 Chris Lord <cl...@igalia.com>
+
+ [GTK] Allow sending precise mouse wheel events in LayoutTests
+ https://bugs.webkit.org/show_bug.cgi?id=230541
+
+ Reviewed by Tim Horton.
+
+ Add API to be able to send precise mouse-wheel events in EventSender.
+
+ * WebKitTestRunner/EventSenderProxy.h:
+ * WebKitTestRunner/InjectedBundle/Bindings/EventSendingController.idl:
+ * WebKitTestRunner/InjectedBundle/EventSendingController.cpp:
+ (WTR::EventSendingController::setWheelHasPreciseDeltas):
+ * WebKitTestRunner/InjectedBundle/EventSendingController.h:
+ * WebKitTestRunner/TestController.cpp:
+ (WTR::TestController::didReceiveMessageFromInjectedBundle):
+ * WebKitTestRunner/gtk/EventSenderProxyGtk.cpp:
+ (WTR::toWebKitGLibAPI):
+ (WTR::EventSenderProxy::~EventSenderProxy):
+ (WTR::EventSenderProxy::setWheelHasPreciseDeltas):
+
2021-11-30 Chris Dumez <cdu...@apple.com>
Scripting attributes are sometimes not properly stripped from elements when JS is disabled
Modified: releases/WebKitGTK/webkit-2.34/Tools/WebKitTestRunner/EventSenderProxy.h (289078 => 289079)
--- releases/WebKitGTK/webkit-2.34/Tools/WebKitTestRunner/EventSenderProxy.h 2022-02-03 22:12:39 UTC (rev 289078)
+++ releases/WebKitGTK/webkit-2.34/Tools/WebKitTestRunner/EventSenderProxy.h 2022-02-03 22:27:08 UTC (rev 289079)
@@ -62,6 +62,9 @@
void mouseMoveTo(double x, double y, WKStringRef pointerType = nullptr);
void mouseScrollBy(int x, int y);
void mouseScrollByWithWheelAndMomentumPhases(int x, int y, int phase, int momentum);
+#if PLATFORM(GTK)
+ void setWheelHasPreciseDeltas(bool);
+#endif
void continuousMouseScrollBy(int x, int y, bool paged);
void leapForward(int milliseconds);
Modified: releases/WebKitGTK/webkit-2.34/Tools/WebKitTestRunner/InjectedBundle/Bindings/EventSendingController.idl (289078 => 289079)
--- releases/WebKitGTK/webkit-2.34/Tools/WebKitTestRunner/InjectedBundle/Bindings/EventSendingController.idl 2022-02-03 22:12:39 UTC (rev 289078)
+++ releases/WebKitGTK/webkit-2.34/Tools/WebKitTestRunner/InjectedBundle/Bindings/EventSendingController.idl 2022-02-03 22:27:08 UTC (rev 289079)
@@ -38,6 +38,7 @@
undefined mouseForceChanged(double force);
undefined mouseScrollBy(long x, long y);
undefined mouseScrollByWithWheelAndMomentumPhases(long x, long y, DOMString phase, DOMString momentum);
+ undefined setWheelHasPreciseDeltas(boolean hasPreciseDeltas);
undefined continuousMouseScrollBy(long x, long y, optional boolean paged);
object contextClick();
undefined scheduleAsynchronousClick();
Modified: releases/WebKitGTK/webkit-2.34/Tools/WebKitTestRunner/InjectedBundle/EventSendingController.cpp (289078 => 289079)
--- releases/WebKitGTK/webkit-2.34/Tools/WebKitTestRunner/InjectedBundle/EventSendingController.cpp 2022-02-03 22:12:39 UTC (rev 289078)
+++ releases/WebKitGTK/webkit-2.34/Tools/WebKitTestRunner/InjectedBundle/EventSendingController.cpp 2022-02-03 22:27:08 UTC (rev 289079)
@@ -377,6 +377,14 @@
postPageMessage("EventSender", body);
}
+void EventSendingController::setWheelHasPreciseDeltas(bool hasPreciseDeltas)
+{
+ auto body = adoptWK(WKMutableDictionaryCreate());
+ setValue(body, "SubMessage", "SetWheelHasPreciseDeltas");
+ setValue(body, "HasPreciseDeltas", hasPreciseDeltas);
+ postPageMessage("EventSender", body);
+}
+
void EventSendingController::continuousMouseScrollBy(int x, int y, bool paged)
{
auto body = adoptWK(WKMutableDictionaryCreate());
Modified: releases/WebKitGTK/webkit-2.34/Tools/WebKitTestRunner/InjectedBundle/EventSendingController.h (289078 => 289079)
--- releases/WebKitGTK/webkit-2.34/Tools/WebKitTestRunner/InjectedBundle/EventSendingController.h 2022-02-03 22:12:39 UTC (rev 289078)
+++ releases/WebKitGTK/webkit-2.34/Tools/WebKitTestRunner/InjectedBundle/EventSendingController.h 2022-02-03 22:27:08 UTC (rev 289079)
@@ -58,6 +58,7 @@
void mouseForceChanged(double force);
void mouseScrollBy(int x, int y);
void mouseScrollByWithWheelAndMomentumPhases(int x, int y, JSStringRef phase, JSStringRef momentum);
+ void setWheelHasPreciseDeltas(bool);
void continuousMouseScrollBy(int x, int y, bool paged);
JSValueRef contextClick();
void leapForward(int milliseconds);
Modified: releases/WebKitGTK/webkit-2.34/Tools/WebKitTestRunner/TestController.cpp (289078 => 289079)
--- releases/WebKitGTK/webkit-2.34/Tools/WebKitTestRunner/TestController.cpp 2022-02-03 22:12:39 UTC (rev 289078)
+++ releases/WebKitGTK/webkit-2.34/Tools/WebKitTestRunner/TestController.cpp 2022-02-03 22:27:08 UTC (rev 289079)
@@ -1654,6 +1654,14 @@
return;
}
+#if PLATFORM(GTK)
+ if (WKStringIsEqualToUTF8CString(subMessageName, "SetWheelHasPreciseDeltas")) {
+ auto hasPreciseDeltas = booleanValue(dictionary, "HasPreciseDeltas");
+ m_eventSenderProxy->setWheelHasPreciseDeltas(hasPreciseDeltas);
+ return;
+ }
+#endif
+
ASSERT_NOT_REACHED();
}
Modified: releases/WebKitGTK/webkit-2.34/Tools/WebKitTestRunner/gtk/EventSenderProxyGtk.cpp (289078 => 289079)
--- releases/WebKitGTK/webkit-2.34/Tools/WebKitTestRunner/gtk/EventSenderProxyGtk.cpp 2022-02-03 22:12:39 UTC (rev 289078)
+++ releases/WebKitGTK/webkit-2.34/Tools/WebKitTestRunner/gtk/EventSenderProxyGtk.cpp 2022-02-03 22:27:08 UTC (rev 289079)
@@ -70,8 +70,14 @@
{
}
+static inline WebKitWebViewBase* toWebKitGLibAPI(PlatformWKView view)
+{
+ return const_cast<WebKitWebViewBase*>(reinterpret_cast<const WebKitWebViewBase*>(view));
+}
+
EventSenderProxy::~EventSenderProxy()
{
+ webkitWebViewBaseSetWheelHasPreciseDeltas(toWebKitGLibAPI(m_testController->mainWebView()->platformView()), false);
}
static unsigned eventSenderButtonToGDKButton(unsigned button)
@@ -232,11 +238,6 @@
return gdk_unicode_to_keyval(static_cast<guint32>(buffer.get()[0]));
}
-static inline WebKitWebViewBase* toWebKitGLibAPI(PlatformWKView view)
-{
- return const_cast<WebKitWebViewBase*>(reinterpret_cast<const WebKitWebViewBase*>(view));
-}
-
void EventSenderProxy::keyDown(WKStringRef keyRef, WKEventModifiers wkModifiers, unsigned location)
{
guint modifiers = webkitModifiersToGDKModifiers(wkModifiers);
@@ -348,6 +349,11 @@
horizontal, vertical, m_position.x, m_position.y, eventPhase, eventMomentumPhase);
}
+void EventSenderProxy::setWheelHasPreciseDeltas(bool hasPreciseDeltas)
+{
+ webkitWebViewBaseSetWheelHasPreciseDeltas(toWebKitGLibAPI(m_testController->mainWebView()->platformView()), hasPreciseDeltas);
+}
+
void EventSenderProxy::leapForward(int milliseconds)
{
m_time += milliseconds / 1000.0;