[webkit-changes] [WebKit/WebKit] a1236f: Move WebCore::RunLoopObserver from WebCore/platfor...
Wenson Hsieh
noreply at github.com
Mon Jun 12 14:19:17 PDT 2023
Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: a1236fc76789874df4b2e8bad5af650024ff385e
https://github.com/WebKit/WebKit/commit/a1236fc76789874df4b2e8bad5af650024ff385e
Author: Wenson Hsieh <wenson_hsieh at apple.com>
Date: 2023-06-12 (Mon, 12 Jun 2023)
Changed paths:
M Source/WebCore/Sources.txt
M Source/WebCore/SourcesCocoa.txt
M Source/WebCore/WebCore.xcodeproj/project.pbxproj
M Source/WebCore/inspector/agents/InspectorTimelineAgent.cpp
A Source/WebCore/platform/RunLoopObserver.cpp
A Source/WebCore/platform/RunLoopObserver.h
R Source/WebCore/platform/cf/RunLoopObserver.cpp
R Source/WebCore/platform/cf/RunLoopObserver.h
A Source/WebCore/platform/cf/RunLoopObserverCF.cpp
M Source/WebKit/UIProcess/WebPageProxy.cpp
M Source/WebKit/WebProcess/WebPage/mac/DisplayRefreshMonitorMac.cpp
M Source/WebKit/WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm
M Source/WebKitLegacy/mac/WebView/WebViewRenderingUpdateScheduler.mm
Log Message:
-----------
Move WebCore::RunLoopObserver from WebCore/platform/cf to WebCore/platform
https://bugs.webkit.org/show_bug.cgi?id=257650
Reviewed by Chris Dumez.
Refactor the `RunLoopObserver` helper class such that it's not inherently limited to ports that use
CoreFoundation; this allows us to deploy it in (otherwise) platform-agnostic code in subsequent
patches, and also opens the door for ports that use different event/run-loop architectures to share
a common helper for observing runloop conditions.
No change in behavior.
* Source/WebCore/Sources.txt:
* Source/WebCore/SourcesCocoa.txt:
Move the existing logic in `RunLoopObserver.cpp` to `RunLoopObserverCF.cpp`, and reintroduce a
`RunLoopObserver.cpp` to contain platform-agnostic logic in this helper.
* Source/WebCore/WebCore.xcodeproj/project.pbxproj:
* Source/WebCore/inspector/agents/InspectorTimelineAgent.cpp:
(WebCore::InspectorTimelineAgent::internalStart):
* Source/WebCore/platform/RunLoopObserver.cpp: Added.
(WebCore::RunLoopObserver::~RunLoopObserver):
(WebCore::RunLoopObserver::runLoopObserverFired):
(WebCore::RunLoopObserver::schedule):
(WebCore::RunLoopObserver::invalidate):
* Source/WebCore/platform/RunLoopObserver.h: Renamed from Source/WebCore/platform/cf/RunLoopObserver.h.
Refactor this header file, such that it's not strictly tied to having CoreFoundation. To ensure
this, we add platform-specific forward declarations and additionally hide the CF-specific behaviors
behind two new WebCore `enum class` types, which then map to `CFIndex` and `CFRunLoopActivity` in
CF-specific code.
(WebCore::RunLoopObserver::RunLoopObserver):
(WebCore::RunLoopObserver::isScheduled const):
* Source/WebCore/platform/cf/RunLoopObserverCF.cpp: Renamed from Source/WebCore/platform/cf/RunLoopObserver.cpp.
(WebCore::cfRunLoopOrder):
(WebCore::cfRunLoopActivity):
Convert from the `RunLoopObserver` WebCore flags to CF-specific values.
(WebCore::RunLoopObserver::runLoopObserverFired):
(WebCore::RunLoopObserver::schedule):
(WebCore::RunLoopObserver::invalidate):
* Source/WebKit/UIProcess/WebPageProxy.cpp:
(WebKit::m_limitsNavigationsToAppBoundDomains):
* Source/WebKit/WebProcess/WebPage/mac/DisplayRefreshMonitorMac.cpp:
(WebKit::DisplayRefreshMonitorMac::startNotificationMechanism):
Currently, this code passes in `kCFRunLoopEntry`, with value 1, as a well-known order (CFIndex).
Since this patch is only intended to refactor existing code, I'm adding a new well-known order for
`DisplayRefreshMonitor` that's equal to 1, and also adding a FIXME here to track validating whether
or not this is correct behavior.
* Source/WebKit/WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:
(WebKit::TiledCoreAnimationDrawingArea::TiledCoreAnimationDrawingArea):
* Source/WebKitLegacy/mac/WebView/WebViewRenderingUpdateScheduler.mm:
(WebViewRenderingUpdateScheduler::WebViewRenderingUpdateScheduler):
Canonical link: https://commits.webkit.org/265089@main
More information about the webkit-changes
mailing list