[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