Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 548162624138f2bbd8079ae8474feb8e504937f8
      
https://github.com/WebKit/WebKit/commit/548162624138f2bbd8079ae8474feb8e504937f8
  Author: Vitaly Dyachkov <[email protected]>
  Date:   2026-02-12 (Thu, 12 Feb 2026)

  Changed paths:
    M Source/WebKit/UIProcess/API/C/WKPage.cpp
    M Source/WebKit/UIProcess/API/C/WKPagePrivate.h
    M Source/WebKit/WebProcess/WebPage/WebPage.cpp
    M Tools/WebKitTestRunner/gtk/EventSenderProxyGtk.cpp
    M Tools/WebKitTestRunner/gtk/TestControllerGtk.cpp
    M Tools/WebKitTestRunner/libwpe/EventSenderProxyLibWPE.cpp
    M Tools/WebKitTestRunner/win/EventSenderProxyWin.cpp
    M Tools/WebKitTestRunner/wpe/TestControllerWPE.cpp

  Log Message:
  -----------
  REGRESSION(266411@main): [GLib] `mousemove` events are not throttle to one 
per rendering update
https://bugs.webkit.org/show_bug.cgi?id=306766

Reviewed by Wenson Hsieh and Darin Adler.

Starting from 266411@main, it is required for a `DrawingArea` subclass
to override `scheduleRenderingUpdate()` and return `true` in order to
enable throttling of `mousemove` events to one per rendering update.
This method is currently only implemented by `RemoteLayerTreeDrawingArea`
which is used by Apple ports. The main purpose of it is to schedule next
rendering update to process deferred `mousemove` events. But it is
possible to schedule next rendering update by calling
`RenderingUpdateScheduler::scheduleRenderingUpdate()` which is driven by
the display refresh monitor.

This patch also implements `EventSenderProxy::waitForPendingMouseEvents()`
on GTK, WPE, and Windows by calling a new private
`WKPageDoAfterProcessingAllPendingMouseEvents()` function, which is
required to pass layout tests that use asynchronous mouse events.

Because `EventSenderProxy::waitForPendingMouseEvents()` internally calls
`m_testController->runUntil()`, `TestController::platformRunUntil()` now
explicitly iterates the main context instead of running and stopping the
main run loop to avoid completely stopping the TestController after
processing pending mouse events, which would cause tests to time out.

* Source/WebKit/UIProcess/API/C/WKPage.cpp:
(WKPageDoAfterProcessingAllPendingMouseEvents):
* Source/WebKit/UIProcess/API/C/WKPagePrivate.h:
* Source/WebKit/WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::mouseEvent):
* Tools/WebKitTestRunner/gtk/EventSenderProxyGtk.cpp:
(WTR::doAfterProcessingAllPendingMouseEventsCallback):
(WTR::EventSenderProxy::waitForPendingMouseEvents):
* Tools/WebKitTestRunner/gtk/TestControllerGtk.cpp:
(WTR::TestController::notifyDone):
(WTR::TestController::platformRunUntil):
* Tools/WebKitTestRunner/libwpe/EventSenderProxyLibWPE.cpp:
(WTR::doAfterProcessingAllPendingMouseEventsCallback):
(WTR::EventSenderProxy::waitForPendingMouseEvents):
* Tools/WebKitTestRunner/win/EventSenderProxyWin.cpp:
(WTR::doAfterProcessingAllPendingMouseEventsCallback):
(WTR::EventSenderProxy::waitForPendingMouseEvents):
* Tools/WebKitTestRunner/wpe/TestControllerWPE.cpp:
(WTR::TestController::notifyDone):
(WTR::TestController::platformRunUntil):

Canonical link: https://commits.webkit.org/307370@main



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications

Reply via email to