diff --git a/Tests/LibWeb/Text/expected/UIEvents/mouse-events.txt b/Tests/LibWeb/Text/expected/UIEvents/mouse-events.txt new file mode 100644 index 00000000000..7930ea30972 --- /dev/null +++ b/Tests/LibWeb/Text/expected/UIEvents/mouse-events.txt @@ -0,0 +1,13 @@ + > move pointer over #inner +mouseover target.id=(inner) currentTarget.id=(inner) +mouseover target.id=(inner) currentTarget.id=(outer) +mouseenter target.id=(inner) currentTarget.id=(inner) +mouseenter target.id=(outer) currentTarget.id=(outer) +> move pointer over #outer +mouseout target.id=(inner) currentTarget.id=(inner) +mouseout target.id=(inner) currentTarget.id=(outer) +mouseleave target.id=(inner) currentTarget.id=(inner) +mouseover target.id=(outer) currentTarget.id=(outer) +> click document.body +mouseout target.id=(outer) currentTarget.id=(outer) +mouseleave target.id=(outer) currentTarget.id=(outer) diff --git a/Tests/LibWeb/Text/input/UIEvents/mouse-events.html b/Tests/LibWeb/Text/input/UIEvents/mouse-events.html new file mode 100644 index 00000000000..ad8c533bc81 --- /dev/null +++ b/Tests/LibWeb/Text/input/UIEvents/mouse-events.html @@ -0,0 +1,62 @@ + + +
+ + diff --git a/Userland/Libraries/LibWeb/Internals/Internals.cpp b/Userland/Libraries/LibWeb/Internals/Internals.cpp index 523d21f743f..9c06cff7f60 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::move_pointer_to(double x, double y) +{ + auto& page = global_object().browsing_context()->page(); + page.handle_mousemove({ x, y }, { x, y }, 0, 0); +} + void Internals::wheel(double x, double y, double delta_x, double delta_y) { auto& page = global_object().browsing_context()->page(); diff --git a/Userland/Libraries/LibWeb/Internals/Internals.h b/Userland/Libraries/LibWeb/Internals/Internals.h index 3ebe5d19c9e..e26e6ac6e51 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 move_pointer_to(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 c3d13f3c0f6..9b8fb18b50a 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 movePointerTo(double x, double y); undefined wheel(double x, double y, double deltaX, double deltaY); boolean dispatchUserActivatedEvent(EventTarget target, Event event);