Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 8615019f48b156e271af8f0ae345697c14ed99d7
https://github.com/WebKit/WebKit/commit/8615019f48b156e271af8f0ae345697c14ed99d7
Author: Nikolas Zimmermann <[email protected]>
Date: 2025-10-12 (Sun, 12 Oct 2025)
Changed paths:
M Source/WTF/wtf/PlatformGTK.cmake
M Source/WTF/wtf/PlatformWPE.cmake
M Source/WTF/wtf/RunLoop.h
A Source/WTF/wtf/glib/ActivityObserver.h
M Source/WTF/wtf/glib/RunLoopGLib.cpp
M Source/WebCore/SourcesGTK.txt
M Source/WebCore/SourcesWPE.txt
M Source/WebCore/inspector/agents/page/PageTimelineAgent.cpp
M Source/WebCore/inspector/agents/page/PageTimelineAgent.h
M Source/WebCore/platform/RunLoopObserver.cpp
M Source/WebCore/platform/RunLoopObserver.h
A Source/WebCore/platform/glib/RunLoopObserverGLib.cpp
M Tools/TestWebKitAPI/PlatformGTK.cmake
M Tools/TestWebKitAPI/PlatformWPE.cmake
A Tools/TestWebKitAPI/Tests/WTF/glib/ActivityObserver.cpp
A Tools/TestWebKitAPI/Tests/WebCore/glib/RunLoopObserver.cpp
Log Message:
-----------
[GTK][WPE] Implement RunLoopObserver for glib ports
https://bugs.webkit.org/show_bug.cgi?id=300022
Reviewed by Carlos Garcia Campos.
Implement RunLoopObserver for GTK/WPE - ports using the GLib event loop.
This has been available on Apple platforms since a decade, and was used to
drive e.g. the rendering prior to GPUProcess. OpportunisticTaskScheduler
functionality (executing GC in 'good moments', not blocking rendering
etc.) depends on RunLoopObserver, which we failed to provide so far.
Add new API tests covering the ActiviyObserver/RunLoopObserver
implementation for the glib ports.
Tests: Tools/TestWebKitAPI/Tests/WTF/glib/ActivityObserver.cpp
Tools/TestWebKitAPI/Tests/WebCore/glib/RunLoopObserver.cpp
* Source/WTF/wtf/PlatformGTK.cmake:
* Source/WTF/wtf/PlatformWPE.cmake:
* Source/WTF/wtf/RunLoop.h:
* Source/WTF/wtf/glib/ActivityObserver.h: Added.
(WTF::ActivityObserver::create):
(WTF::ActivityObserver::order const):
(WTF::ActivityObserver::activities const):
(WTF::ActivityObserver::notify const):
(WTF::ActivityObserver::ActivityObserver):
* Source/WTF/wtf/glib/RunLoopGLib.cpp:
(WTF::RunLoop::RunLoop):
(WTF::RunLoop::~RunLoop):
(WTF::RunLoop::runGLibMainLoopIteration):
(WTF::RunLoop::runGLibMainLoop):
(WTF::RunLoop::run):
(WTF::RunLoop::stop):
(WTF::RunLoop::cycle):
(WTF::RunLoop::observeEvent):
(WTF::RunLoop::observeActivity):
(WTF::RunLoop::unobserveActivity):
(WTF::RunLoop::notifyActivity):
(WTF::RunLoop::notifyEvent):
(WTF::RunLoop::observe): Deleted.
(WTF::RunLoop::notify): Deleted.
* Source/WebCore/SourcesGTK.txt:
* Source/WebCore/SourcesWPE.txt:
* Source/WebCore/inspector/agents/page/PageTimelineAgent.cpp:
(WebCore::PageTimelineAgent::internalStart):
* Source/WebCore/inspector/agents/page/PageTimelineAgent.h:
* Source/WebCore/platform/RunLoopObserver.cpp:
(WebCore::RunLoopObserver::runLoopObserverFired):
* Source/WebCore/platform/RunLoopObserver.h:
(WebCore::RunLoopObserver::RunLoopObserver):
* Source/WebCore/platform/glib/RunLoopObserverGLib.cpp: Added.
(WebCore::RunLoopObserver::schedule):
(WebCore::RunLoopObserver::invalidate):
(WebCore::RunLoopObserver::isScheduled const):
* Tools/TestWebKitAPI/PlatformGTK.cmake:
* Tools/TestWebKitAPI/PlatformWPE.cmake:
* Tools/TestWebKitAPI/Tests/WTF/glib/ActivityObserver.cpp: Added.
(TestWebKitAPI::dispatchChecker):
(TestWebKitAPI::runTestWhileRunLoopIsActive):
(TestWebKitAPI::TEST(WTF_ActivityObserver, Create)):
(TestWebKitAPI::TEST(WTF_ActivityObserver, MatchingActivity)):
(TestWebKitAPI::TEST(WTF_ActivityObserver, NonMatchingActivity)):
(TestWebKitAPI::TEST(WTF_ActivityObserver, MultipleActivities)):
(TestWebKitAPI::TEST(WTF_ActivityObserver, Ordering)):
(TestWebKitAPI::TEST(WTF_ActivityObserver, SameOrder)):
* Tools/TestWebKitAPI/Tests/WebCore/glib/RunLoopObserver.cpp: Added.
(TestWebKitAPI::setUpTest):
(TestWebKitAPI::TEST(RunLoopObserver, Schedule)):
(TestWebKitAPI::TEST(RunLoopObserver, Invalidate)):
(TestWebKitAPI::TEST(RunLoopObserver, MultipleSchedule)):
(TestWebKitAPI::TEST(RunLoopObserver, MultipleInvalidate)):
(TestWebKitAPI::TEST(RunLoopObserver, Destruction)):
(TestWebKitAPI::TEST(RunLoopObserver, Repeating)):
(TestWebKitAPI::TEST(RunLoopObserver, OneShot)):
(TestWebKitAPI::TEST(RunLoopObserver, DefaultActivities)):
(TestWebKitAPI::TEST(RunLoopObserver, ActivityEntry)):
(TestWebKitAPI::TEST(RunLoopObserver, ActivityExit)):
(TestWebKitAPI::TEST(RunLoopObserver, ActivityBeforeWaiting)):
(TestWebKitAPI::TEST(RunLoopObserver, ActivityAfterWaiting)):
(TestWebKitAPI::TEST(RunLoopObserver, ActivityCombination)):
(TestWebKitAPI::TEST(RunLoopObserver, RemovesSelfDuringCallback)):
(TestWebKitAPI::TEST(RunLoopObserver, AddsNewObserverDuringCallback)):
(TestWebKitAPI::TEST(RunLoopObserver, AcrossMultipleIterations)):
(TestWebKitAPI::TEST(RunLoopObserver, WellKnownOrderValues)):
(TestWebKitAPI::TEST(RunLoopObserver, DifferentWellKnownOrderValues)):
Canonical link: https://commits.webkit.org/301378@main
To unsubscribe from these emails, change your notification settings at
https://github.com/WebKit/WebKit/settings/notifications
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes