From 40246adfb9a4671cf7fd743443af1d4463b93afb Mon Sep 17 00:00:00 2001 From: Aliaksandr Kalenik Date: Fri, 9 Feb 2024 18:14:53 +0100 Subject: [PATCH] LibWeb: Add internals.wheel() to simulate mouse wheel events This function allows us to write tests for scrolling scenarios where the events are processed by the EventHandler. --- .../scroll-using-mousewheel-event-ref.html | 12 ++++++++ .../Ref/scroll-using-mousewheel-event.html | 28 +++++++++++++++++++ .../Libraries/LibWeb/Internals/Internals.cpp | 6 ++++ .../Libraries/LibWeb/Internals/Internals.h | 1 + .../Libraries/LibWeb/Internals/Internals.idl | 1 + 5 files changed, 48 insertions(+) create mode 100644 Tests/LibWeb/Ref/reference/scroll-using-mousewheel-event-ref.html create mode 100644 Tests/LibWeb/Ref/scroll-using-mousewheel-event.html diff --git a/Tests/LibWeb/Ref/reference/scroll-using-mousewheel-event-ref.html b/Tests/LibWeb/Ref/reference/scroll-using-mousewheel-event-ref.html new file mode 100644 index 0000000000..78adc168b5 --- /dev/null +++ b/Tests/LibWeb/Ref/reference/scroll-using-mousewheel-event-ref.html @@ -0,0 +1,12 @@ + + +
2
+
3
+
4
diff --git a/Tests/LibWeb/Ref/scroll-using-mousewheel-event.html b/Tests/LibWeb/Ref/scroll-using-mousewheel-event.html new file mode 100644 index 0000000000..f6d2b219e3 --- /dev/null +++ b/Tests/LibWeb/Ref/scroll-using-mousewheel-event.html @@ -0,0 +1,28 @@ + + + +
+
1
+
2
+
3
+
4
+
5
+
6
+
7
+
+ diff --git a/Userland/Libraries/LibWeb/Internals/Internals.cpp b/Userland/Libraries/LibWeb/Internals/Internals.cpp index 1c97951c8f..c856b615b6 100644 --- a/Userland/Libraries/LibWeb/Internals/Internals.cpp +++ b/Userland/Libraries/LibWeb/Internals/Internals.cpp @@ -83,6 +83,12 @@ void Internals::click(double x, double y) page.handle_mouseup({ x, y }, { x, y }, 1, 0, 0); } +void Internals::wheel(double x, double y, double delta_x, double delta_y) +{ + auto& page = global_object().browsing_context()->page(); + page.handle_mousewheel({ x, y }, { x, y }, 0, 0, 0, delta_x, delta_y); +} + WebIDL::ExceptionOr Internals::dispatch_user_activated_event(DOM::EventTarget& target, DOM::Event& event) { event.set_is_trusted(true); diff --git a/Userland/Libraries/LibWeb/Internals/Internals.h b/Userland/Libraries/LibWeb/Internals/Internals.h index 7372d84e7c..3ebe5d19c9 100644 --- a/Userland/Libraries/LibWeb/Internals/Internals.h +++ b/Userland/Libraries/LibWeb/Internals/Internals.h @@ -26,6 +26,7 @@ public: void commit_text(); void click(double x, double y); + void wheel(double x, double y, double delta_x, double delta_y); WebIDL::ExceptionOr dispatch_user_activated_event(DOM::EventTarget&, DOM::Event& event); diff --git a/Userland/Libraries/LibWeb/Internals/Internals.idl b/Userland/Libraries/LibWeb/Internals/Internals.idl index 1842ae1476..c3d13f3c0f 100644 --- a/Userland/Libraries/LibWeb/Internals/Internals.idl +++ b/Userland/Libraries/LibWeb/Internals/Internals.idl @@ -11,6 +11,7 @@ undefined commitText(); undefined click(double x, double y); + undefined wheel(double x, double y, double deltaX, double deltaY); boolean dispatchUserActivatedEvent(EventTarget target, Event event);