Repository: WebKit/WebKit
Pull request #44319: Address Safer cpp failures in mac/ScrollerMac
Author: login: iidmsa
Labels: name: Layout and Rendering
description: For bugs with layout and rendering of Web pages.
Created: 2025-04-20T23:47:44Z | Merged: 2025-04-22T07:07:47Z

#### cfa4aa1a28ba4bf125f016ca98668f3bee093d28
<pre>
Address Safer cpp failures in mac/ScrollerMac
<a href="https://bugs.webkit.org/show_bug.cgi?id=291832">https://bugs.webkit.org/show_bug.cgi?id=291832</a>
<a href="https://rdar.apple.com/problem/149656606">rdar://problem/149656606</a>

Reviewed by Ryosuke Niwa.

Fix clang static analyzer warnings in mac/ScrollerMac.

* Source/WebCore/SaferCPPExpectations/NoUncountedMemberCheckerExpectations:
* Source/WebCore/SaferCPPExpectations/UncountedCallArgsCheckerExpectations:
* Source/WebCore/SaferCPPExpectations/UnretainedCallArgsCheckerExpectations:
* Source/WebCore/SaferCPPExpectations/UnretainedLocalVarsCheckerExpectations:
* Source/WebCore/page/scrolling/mac/ScrollerMac.h:
(WebCore::ScrollerMac::pair):
* Source/WebCore/page/scrolling/mac/ScrollerMac.mm:
(-[WebScrollbarPartAnimationMac setCurrentProgress:]):
(-[WebScrollerImpDelegateMac effectiveAppearanceForScrollerImp:]):
(-[WebScrollerImpDelegateMac setUpAlphaAnimation:featureToAnimate:animateAlphaTo:duration:]):
(WebCore::ScrollerMac::attach):
(WebCore::ScrollerMac::updateValues):
(WebCore::ScrollerMac::updateScrollbarStyle):
(WebCore::ScrollerMac::updatePairScrollerImps):
(WebCore::ScrollerMac::mouseEnteredScrollbar):
(WebCore::ScrollerMac::mouseExitedScrollbar):
(WebCore::ScrollerMac::lastKnownMousePositionInScrollbar const):
(WebCore::ScrollerMac::visibilityChanged):
(WebCore::ScrollerMac::updateMinimumKnobLength):
(WebCore::ScrollerMac::scrollbarState const):
* Source/WebCore/page/scrolling/mac/ScrollerPairMac.h:

Canonical link: <a href="https://commits.webkit.org/293949@main">https://commits.webkit.org/293949@main</a>
</pre>
<!--EWS-Status-Bubble-Start-->
https://github.com/WebKit/WebKit/commit/c27a6c03e27c41ec1dcf22a568926dbd4db821a7

| Misc | iOS, visionOS, tvOS & watchOS  | macOS  | Linux |  Windows |
| ----- | ---------------------- | ------- |  ----- |  --------- |
| [✅ 🧪 style](https://ews-build.webkit.org/#/builders/38/builds/100394 "Passed style check") | [✅ 🛠 ios](https://ews-build.webkit.org/#/builders/131/builds/20046 "Built successfully") | [✅ 🛠 mac](https://ews-build.webkit.org/#/builders/138/builds/10345 "Built successfully") | [✅ 🛠 wpe](https://ews-build.webkit.org/#/builders/5/builds/105530 "Built successfully") | [✅ 🛠 win](https://ews-build.webkit.org/#/builders/59/builds/50982 "Built successfully") 
| [✅ 🧪 bindings](https://ews-build.webkit.org/#/builders/9/builds/102435 "Passed tests") | [✅ 🛠 ios-sim](https://ews-build.webkit.org/#/builders/130/builds/20352 "Built successfully") | [✅ 🛠 mac-AS-debug](https://ews-build.webkit.org/#/builders/123/builds/28520 "Built successfully") | [✅ 🧪 wpe-wk2](https://ews-build.webkit.org/#/builders/34/builds/76439 "Passed tests") | [✅ 🧪 win-tests](https://ews-build.webkit.org/#/builders/60/builds/33495 "Passed tests") 
| [✅ 🧪 webkitperl](https://ews-build.webkit.org/#/builders/11/builds/103401 "Passed tests") | [❌ 🧪 ios-wk2](https://ews-build.webkit.org/#/builders/132/builds/15587 "Found 1 new test failure: fast/forms/ios/file-upload-panel-dismiss-when-view-removed-from-window.html (failure)") | [✅ 🧪 api-mac](https://ews-build.webkit.org/#/builders/18/builds/90687 "Passed tests") | [✅ 🧪 api-wpe](https://ews-build.webkit.org/#/builders/41/builds/56794 "Passed tests") | 
| | [✅ 🧪 ios-wk2-wpt](https://ews-build.webkit.org/#/builders/133/builds/15405 "Passed tests") | [✅ 🧪 mac-wk1](https://ews-build.webkit.org/#/builders/135/builds/8688 "Passed tests") | [❌ 🛠 wpe-cairo](https://ews-build.webkit.org/#/builders/65/builds/50351 "Failed to compile WebKit") | 
| [![loading](https://user-images.githubusercontent.com/3098702/171232313-daa606f1-8fd6-4b0f-a20b-2cb93c43d19b.png) 🛠 🧪 jsc](https://ews-build.webkit.org/#/builders/20/builds/93056 "Build is in progress. Recent messages:") | [✅ 🧪 api-ios](https://ews-build.webkit.org/#/builders/13/builds/85319 "Passed tests") | [✅ 🧪 mac-wk2](https://ews-build.webkit.org/#/builders/136/builds/8769 "Passed tests") | [✅ 🛠 gtk](https://ews-build.webkit.org/#/builders/2/builds/107885 "Built successfully") | 
| | [✅ 🛠 vision](https://ews-build.webkit.org/#/builders/128/builds/27512 "Built successfully") | [✅ 🧪 mac-AS-debug-wk2](https://ews-build.webkit.org/#/builders/122/builds/20184 "Passed tests") | [✅ 🧪 gtk-wk2](https://ews-build.webkit.org/#/builders/1/builds/85393 "Passed tests") | 
| | [✅ 🛠 vision-sim](https://ews-build.webkit.org/#/builders/121/builds/27875 "Built successfully") | [✅ 🧪 mac-wk2-stress](https://ews-build.webkit.org/#/builders/8/builds/86887 "Passed tests") | [✅ 🧪 api-gtk](https://ews-build.webkit.org/#/builders/21/builds/84931 "Passed tests") | 
| [✅ 🛠 🧪 merge](https://ews-build.webkit.org/#/builders/19/builds/21596 "Built successfully and passed tests") | [✅ 🧪 vision-wk2](https://ews-build.webkit.org/#/builders/126/builds/29615 "Passed tests") | [✅ 🧪 mac-intel-wk2](https://ews-build.webkit.org/#/builders/137/builds/7346 "Passed tests") | [  ~~🛠 playstation~~](https://ews-build.webkit.org/#/builders/134/builds/21432 "The change is no longer eligible for processing.") | 
| | [✅ 🛠 tv](https://ews-build.webkit.org/#/builders/127/builds/27447 "Built successfully") | [✅ 🛠 mac-safer-cpp](https://ews-build.webkit.org/#/builders/120/builds/32688 "Built successfully") | | 
| | [✅ 🛠 tv-sim](https://ews-build.webkit.org/#/builders/125/builds/27258 "Built successfully") | | | 
| | [✅ 🛠 watch](https://ews-build.webkit.org/#/builders/129/builds/30576 "Built successfully") | | | 
| | [✅ 🛠 watch-sim](https://ews-build.webkit.org/#/builders/124/builds/28816 "Built successfully") | | | 
<!--EWS-Status-Bubble-End-->


Diff:
diff --git a/Source/WebCore/SaferCPPExpectations/NoUncountedMemberCheckerExpectations b/Source/WebCore/SaferCPPExpectations/NoUncountedMemberCheckerExpectations
index 4f9acf2082af..b7681a0727e5 100644
--- a/Source/WebCore/SaferCPPExpectations/NoUncountedMemberCheckerExpectations
+++ b/Source/WebCore/SaferCPPExpectations/NoUncountedMemberCheckerExpectations
@@ -59,7 +59,6 @@ page/WheelEventTestMonitor.h
 page/scrolling/ScrollLatchingController.h
 page/scrolling/ScrollingCoordinator.h
 page/scrolling/ScrollingTreeGestureState.h
-page/scrolling/mac/ScrollerMac.h
 platform/PODInterval.h
 platform/cocoa/WebAVPlayerLayer.h
 platform/encryptedmedia/CDMProxy.h
diff --git a/Source/WebCore/SaferCPPExpectations/UncountedCallArgsCheckerExpectations b/Source/WebCore/SaferCPPExpectations/UncountedCallArgsCheckerExpectations
index 8b07e644ae6a..2d06c90fc51f 100644
--- a/Source/WebCore/SaferCPPExpectations/UncountedCallArgsCheckerExpectations
+++ b/Source/WebCore/SaferCPPExpectations/UncountedCallArgsCheckerExpectations
@@ -937,7 +937,6 @@ page/scrolling/ScrollingTree.cpp
 page/scrolling/ScrollingTree.h
 page/scrolling/ScrollingTreeGestureState.cpp
 page/scrolling/ThreadedScrollingCoordinator.cpp
-page/scrolling/mac/ScrollerMac.mm
 page/scrolling/mac/ScrollingCoordinatorMac.mm
 page/scrolling/mac/ScrollingTreeScrollingNodeDelegateMac.mm
 page/text-extraction/TextExtraction.cpp
diff --git a/Source/WebCore/SaferCPPExpectations/UnretainedCallArgsCheckerExpectations b/Source/WebCore/SaferCPPExpectations/UnretainedCallArgsCheckerExpectations
index 9931b89b8e5d..ce693cd69769 100644
--- a/Source/WebCore/SaferCPPExpectations/UnretainedCallArgsCheckerExpectations
+++ b/Source/WebCore/SaferCPPExpectations/UnretainedCallArgsCheckerExpectations
@@ -69,7 +69,6 @@ page/mac/EventHandlerMac.mm
 page/mac/ImageOverlayControllerMac.mm
 page/mac/ServicesOverlayController.mm
 page/mac/TextIndicatorWindow.mm
-page/scrolling/mac/ScrollerMac.mm
 page/scrolling/mac/ScrollerPairMac.mm
 page/scrolling/mac/ScrollingTreeOverflowScrollingNodeMac.mm
 page/scrolling/mac/ScrollingTreePluginScrollingNodeMac.mm
diff --git a/Source/WebCore/SaferCPPExpectations/UnretainedLocalVarsCheckerExpectations b/Source/WebCore/SaferCPPExpectations/UnretainedLocalVarsCheckerExpectations
index dbc502a5fb3e..5a475cc9ad18 100644
--- a/Source/WebCore/SaferCPPExpectations/UnretainedLocalVarsCheckerExpectations
+++ b/Source/WebCore/SaferCPPExpectations/UnretainedLocalVarsCheckerExpectations
@@ -31,7 +31,6 @@ page/CaptionUserPreferencesMediaAF.cpp
 page/cocoa/ResourceUsageThreadCocoa.mm
 page/mac/ChromeMac.mm
 page/mac/EventHandlerMac.mm
-page/scrolling/mac/ScrollerMac.mm
 page/scrolling/mac/ScrollingStateScrollingNodeMac.mm
 page/scrolling/mac/ScrollingTreeFrameScrollingNodeMac.mm
 page/scrolling/mac/ScrollingTreeScrollingNodeDelegateMac.mm
diff --git a/Source/WebCore/page/scrolling/mac/ScrollerMac.h b/Source/WebCore/page/scrolling/mac/ScrollerMac.h
index d90416d6e7ad..6654a0c60042 100644
--- a/Source/WebCore/page/scrolling/mac/ScrollerMac.h
+++ b/Source/WebCore/page/scrolling/mac/ScrollerMac.h
@@ -48,7 +48,7 @@ class ScrollerMac {
 
     void attach();
 
-    ScrollerPairMac& pair() { return m_pair; }
+    RefPtr<ScrollerPairMac> pair() const { return m_pair.get(); }
 
     ScrollbarOrientation orientation() const { return m_orientation; }
 
@@ -86,7 +86,7 @@ class ScrollerMac {
     bool m_isVisible { false };
     bool m_isHiddenByStyle { false };
 
-    ScrollerPairMac& m_pair;
+    ThreadSafeWeakPtr<ScrollerPairMac> m_pair;
     const ScrollbarOrientation m_orientation;
     IntPoint m_lastKnownMousePositionInScrollbar;
     UserInterfaceLayoutDirection m_scrollbarLayoutDirection { UserInterfaceLayoutDirection::LTR };
diff --git a/Source/WebCore/page/scrolling/mac/ScrollerMac.mm b/Source/WebCore/page/scrolling/mac/ScrollerMac.mm
index dc1ad72317b4..bd2f3e02e9e5 100644
--- a/Source/WebCore/page/scrolling/mac/ScrollerMac.mm
+++ b/Source/WebCore/page/scrolling/mac/ScrollerMac.mm
@@ -100,18 +100,20 @@ - (void)setCurrentProgress:(NSAnimationProgress)progress
     else
         currentValue = progress;
 
+    RetainPtr scrollerImp = _scroller->scrollerImp();
+
     switch (_featureToAnimate) {
     case FeatureToAnimate::KnobAlpha:
-        [_scroller->scrollerImp() setKnobAlpha:currentValue];
+        [scrollerImp.get() setKnobAlpha:currentValue];
         break;
     case FeatureToAnimate::TrackAlpha:
-        [_scroller->scrollerImp() setTrackAlpha:currentValue];
+        [scrollerImp.get() setTrackAlpha:currentValue];
         break;
     case FeatureToAnimate::UIStateTransition:
-        [_scroller->scrollerImp() setUiStateTransitionProgress:currentValue];
+        [scrollerImp.get() setUiStateTransitionProgress:currentValue];
         break;
     case FeatureToAnimate::ExpansionTransition:
-        [_scroller->scrollerImp() setExpansionTransitionProgress:currentValue];
+        [scrollerImp.get() setExpansionTransitionProgress:currentValue];
         break;
     }
 }
@@ -204,7 +206,8 @@ - (NSAppearance *)effectiveAppearanceForScrollerImp:(NSScrollerImp *)scrollerImp
     if (!_scroller)
         return [NSAppearance currentDrawingAppearance];
     // The base system does not support dark Aqua, so we might get a null result.
-    if (auto *appearance = [NSAppearance appearanceNamed:_scroller->pair().useDarkAppearance() ? NSAppearanceNameDarkAqua : NSAppearanceNameAqua])
+    // FIXME: This is a static analysis false positive.
+    SUPPRESS_UNRETAINED_ARG if (auto *appearance = [NSAppearance appearanceNamed:_scroller->pair()->useDarkAppearance() ? NSAppearanceNameDarkAqua : NSAppearanceNameAqua])
         return appearance;
     return [NSAppearance currentDrawingAppearance];
 }
@@ -217,9 +220,12 @@ - (void)setUpAlphaAnimation:(RetainPtr<WebScrollbarPartAnimationMac>&)scrollbarP
         scrollbarPartAnimation = nil;
     }
 
+    RetainPtr scrollerImp = _scroller->scrollerImp();
+    CGFloat currentAlpha = featureToAnimate == FeatureToAnimate::KnobAlpha ? [scrollerImp.get() knobAlpha] : [scrollerImp.get() trackAlpha];
+
     scrollbarPartAnimation = adoptNS([[WebScrollbarPartAnimationMac alloc] initWithScroller:_scroller
         featureToAnimate:featureToAnimate
-        animateFrom:featureToAnimate == FeatureToAnimate::KnobAlpha ? [_scroller->scrollerImp() knobAlpha] : [_scroller->scrollerImp() trackAlpha]
+        animateFrom:currentAlpha
         animateTo:newAlpha
         duration:duration]);
     [scrollbarPartAnimation startAnimation];
@@ -327,8 +333,9 @@ - (void)invalidate
 
 void ScrollerMac::attach()
 {
+    RefPtr pair = m_pair.get();
     m_scrollerImpDelegate = adoptNS([[WebScrollerImpDelegateMac alloc] initWithScroller:this]);
-    setScrollerImp([NSScrollerImp scrollerImpWithStyle:nsScrollerStyle(m_pair.scrollbarStyle()) controlSize:nsControlSizeFromScrollbarWidth(m_pair.scrollbarWidthStyle()) horizontal:m_orientation == ScrollbarOrientation::Horizontal replacingScrollerImp:nil]);
+    setScrollerImp([NSScrollerImp scrollerImpWithStyle:nsScrollerStyle(pair->scrollbarStyle()) controlSize:nsControlSizeFromScrollbarWidth(pair->scrollbarWidthStyle()) horizontal:m_orientation == ScrollbarOrientation::Horizontal replacingScrollerImp:nil]);
     [m_scrollerImp setDelegate:m_scrollerImpDelegate.get()];
 }
 
@@ -366,7 +373,8 @@ - (void)invalidate
 
 void ScrollerMac::updateValues()
 {
-    auto values = m_pair.valuesForOrientation(m_orientation);
+    RefPtr pair = m_pair.get();
+    auto values = pair->valuesForOrientation(m_orientation);
 
     BEGIN_BLOCK_OBJC_EXCEPTIONS
     [m_scrollerImp setEnabled:m_isEnabled];
@@ -381,7 +389,8 @@ - (void)invalidate
 
 void ScrollerMac::updateScrollbarStyle()
 {
-    setScrollerImp([NSScrollerImp scrollerImpWithStyle:nsScrollerStyle(m_pair.scrollbarStyle()) controlSize:nsControlSizeFromScrollbarWidth(m_pair.scrollbarWidthStyle()) horizontal:m_orientation == ScrollbarOrientation::Horizontal replacingScrollerImp:nil]);
+    RefPtr pair = m_pair.get();
+    setScrollerImp([NSScrollerImp scrollerImpWithStyle:nsScrollerStyle(pair->scrollbarStyle()) controlSize:nsControlSizeFromScrollbarWidth(pair->scrollbarWidthStyle()) horizontal:m_orientation == ScrollbarOrientation::Horizontal replacingScrollerImp:nil]);
     [m_scrollerImp setDelegate:m_scrollerImpDelegate.get()];
 
     [m_scrollerImp setLayer:m_hostLayer.get()];
@@ -392,38 +401,45 @@ - (void)invalidate
 
 void ScrollerMac::updatePairScrollerImps()
 {
-    NSScrollerImp *scrollerImp = m_scrollerImp.get();
+    RetainPtr scrollerImp = m_scrollerImp.get();
+    RefPtr pair = m_pair.get();
     if (m_orientation == ScrollbarOrientation::Vertical)
-        m_pair.setVerticalScrollerImp(scrollerImp);
+        pair->setVerticalScrollerImp(scrollerImp.get());
     else
-        m_pair.setHorizontalScrollerImp(scrollerImp);
+        pair->setHorizontalScrollerImp(scrollerImp.get());
 }
 
 void ScrollerMac::mouseEnteredScrollbar()
 {
-    m_pair.ensureOnMainThreadWithProtectedThis([this](auto&) {
+    RefPtr pair = m_pair.get();
+    RetainPtr protectedScrollerImp = m_scrollerImp;
+    RetainPtr protectedPair = pair->scrollerImpPair();
+    pair->ensureOnMainThreadWithProtectedThis([pair, protectedScrollerImp = WTFMove(protectedScrollerImp), protectedPair = WTFMove(protectedPair)](auto&) {
         // At this time, only legacy scrollbars needs to send notifications here.
-        if (m_pair.scrollbarStyle() != WebCore::ScrollbarStyle::AlwaysVisible)
+        if (pair->scrollbarStyle() != WebCore::ScrollbarStyle::AlwaysVisible)
             return;
 
-        if ([m_pair.scrollerImpPair() overlayScrollerStateIsLocked])
+        if ([protectedPair overlayScrollerStateIsLocked])
             return;
 
-        [m_scrollerImp mouseEnteredScroller];
+        [protectedScrollerImp mouseEnteredScroller];
     });
 }
 
 void ScrollerMac::mouseExitedScrollbar()
 {
-    m_pair.ensureOnMainThreadWithProtectedThis([this](auto&) {
+    RefPtr pair = m_pair.get();
+    RetainPtr protectedScrollerImp = m_scrollerImp;
+    RetainPtr protectedPair = pair->scrollerImpPair();
+    pair->ensureOnMainThreadWithProtectedThis([pair, protectedScrollerImp = WTFMove(protectedScrollerImp), protectedPair = WTFMove(protectedPair)](auto&) {
         // At this time, only legacy scrollbars needs to send notifications here.
-        if (m_pair.scrollbarStyle() != WebCore::ScrollbarStyle::AlwaysVisible)
+        if (pair->scrollbarStyle() != WebCore::ScrollbarStyle::AlwaysVisible)
             return;
 
-        if ([m_pair.scrollerImpPair() overlayScrollerStateIsLocked])
+        if ([protectedPair overlayScrollerStateIsLocked])
             return;
 
-        [m_scrollerImp mouseExitedScroller];
+        [protectedScrollerImp mouseExitedScroller];
     });
 }
 
@@ -431,7 +447,8 @@ - (void)invalidate
 {
     // When we dont have an update from the Web Process, return
     // a point outside of the scrollbars
-    if (!m_pair.mouseInContentArea())
+    RefPtr pair = m_pair.get();
+    if (!pair->mouseInContentArea())
         return { -1, -1 };
     return m_lastKnownMousePositionInScrollbar;
 }
@@ -442,7 +459,8 @@ - (void)invalidate
         return;
     m_isVisible = isVisible;
 
-    if (RefPtr node = m_pair.protectedNode())
+    RefPtr pair = m_pair.get();
+    if (RefPtr node = pair->protectedNode())
         node->scrollbarVisibilityDidChange(m_orientation, isVisible);
 }
 
@@ -452,7 +470,8 @@ - (void)invalidate
         return;
     m_minimumKnobLength = minimumKnobLength;
 
-    if (RefPtr node = m_pair.protectedNode())
+    RefPtr pair = m_pair.get();
+    if (RefPtr node = pair->protectedNode())
         node->scrollbarMinimumThumbLengthDidChange(m_orientation, m_minimumKnobLength);
 }
 
@@ -487,7 +506,8 @@ - (void)invalidate
     StringBuilder result;
     result.append([m_scrollerImp isEnabled] ? "enabled"_s: "disabled"_s);
 
-    if (m_pair.scrollbarStyle() != WebCore::ScrollbarStyle::Overlay)
+    RefPtr pair = m_pair.get();
+    if (pair->scrollbarStyle() != WebCore::ScrollbarStyle::Overlay)
         return result.toString();
 
     if ([m_scrollerImp isExpanded])


Reviews:
user: login: rniwa
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-04-21T21:33:37Z
user: login: rniwa
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-04-21T21:37:30Z
user: login: rniwa
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-04-21T21:38:16Z
user: login: rniwa
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-04-21T21:38:34Z
user: login: rniwa
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-04-21T21:38:52Z
user: login: rniwa
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-04-21T21:38:58Z
user: login: rniwa
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-04-21T21:39:25Z
user: login: iidmsa
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-04-21T23:25:42Z
user: login: iidmsa
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-04-21T23:25:56Z
user: login: iidmsa
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-04-21T23:26:11Z
user: login: iidmsa
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-04-22T00:16:02Z
user: login: rniwa
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-04-22T00:32:41Z
user: login: rniwa
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-04-22T00:33:21Z
user: login: iidmsa
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-04-22T02:04:11Z
user: login: iidmsa
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-04-22T02:04:21Z
user: login: rniwa
state: APPROVED
author_association: MEMBER
submitted_at: 2025-04-22T06:57:02Z

Review comments:
diff_hunk: @@ -100,18 +100,20 @@ - (void)setCurrentProgress:(NSAnimationProgress)progress
     else
         currentValue = progress;
 
+    RetainPtr<NSScrollerImp> scrollerImp = _scroller->scrollerImp();
path: Source/WebCore/page/scrolling/mac/ScrollerMac.mm
user: login: rniwa
body: Just say `RetainPtr` instead of `RetainPtr<NSScrollerImp>`.
created_at: 2025-04-21T21:33:37Z
author_association: MEMBER
diff_hunk: @@ -204,7 +206,8 @@ - (NSAppearance *)effectiveAppearanceForScrollerImp:(NSScrollerImp *)scrollerImp
     if (!_scroller)
         return [NSAppearance currentDrawingAppearance];
     // The base system does not support dark Aqua, so we might get a null result.
-    if (auto *appearance = [NSAppearance appearanceNamed:_scroller->pair().useDarkAppearance() ? NSAppearanceNameDarkAqua : NSAppearanceNameAqua])
+    RetainPtr<NSString> appearanceName = _scroller->pair().useDarkAppearance() ? NSAppearanceNameDarkAqua : NSAppearanceNameAqua;
path: Source/WebCore/page/scrolling/mac/ScrollerMac.mm
user: login: rniwa
body: Oh, this is silly. We're fixing this in static analyzer: https://github.com/llvm/llvm-project/pull/136170
We should probably suppress this warning for now with `SUPPRESS_UNRETAINED_ARG`
created_at: 2025-04-21T21:37:30Z
author_association: MEMBER
diff_hunk: @@ -217,9 +220,12 @@ - (void)setUpAlphaAnimation:(RetainPtr<WebScrollbarPartAnimationMac>&)scrollbarP
         scrollbarPartAnimation = nil;
     }
 
+    RetainPtr<NSScrollerImp> scrollerImp = _scroller->scrollerImp();
path: Source/WebCore/page/scrolling/mac/ScrollerMac.mm
user: login: rniwa
body: Ditto. No need to specify `<NSScrollerImp>`. Just say `RetainPtr`.
created_at: 2025-04-21T21:38:15Z
author_association: MEMBER
diff_hunk: @@ -392,46 +398,50 @@ - (void)invalidate
 
 void ScrollerMac::updatePairScrollerImps()
 {
-    NSScrollerImp *scrollerImp = m_scrollerImp.get();
+    RetainPtr<NSScrollerImp> scrollerImp = m_scrollerImp.get();
path: Source/WebCore/page/scrolling/mac/ScrollerMac.mm
user: login: rniwa
body: Ditto. Say `RetainPtr` instead.
created_at: 2025-04-21T21:38:34Z
author_association: MEMBER
diff_hunk: @@ -392,46 +398,50 @@ - (void)invalidate
 
 void ScrollerMac::updatePairScrollerImps()
 {
-    NSScrollerImp *scrollerImp = m_scrollerImp.get();
+    RetainPtr<NSScrollerImp> scrollerImp = m_scrollerImp.get();
     if (m_orientation == ScrollbarOrientation::Vertical)
-        m_pair.setVerticalScrollerImp(scrollerImp);
+        m_pair->setVerticalScrollerImp(scrollerImp.get());
     else
-        m_pair.setHorizontalScrollerImp(scrollerImp);
+        m_pair->setHorizontalScrollerImp(scrollerImp.get());
 }
 
 void ScrollerMac::mouseEnteredScrollbar()
 {
-    m_pair.ensureOnMainThreadWithProtectedThis([this](auto&) {
+    RetainPtr<NSScrollerImp> protectedScrollerImp = m_scrollerImp;
+    RetainPtr<NSScrollerImpPair> protectedPair = m_pair->scrollerImpPair();
path: Source/WebCore/page/scrolling/mac/ScrollerMac.mm
user: login: rniwa
body: Ditto. `RetainPtr`.
created_at: 2025-04-21T21:38:52Z
author_association: MEMBER
diff_hunk: @@ -392,46 +398,50 @@ - (void)invalidate
 
 void ScrollerMac::updatePairScrollerImps()
 {
-    NSScrollerImp *scrollerImp = m_scrollerImp.get();
+    RetainPtr<NSScrollerImp> scrollerImp = m_scrollerImp.get();
     if (m_orientation == ScrollbarOrientation::Vertical)
-        m_pair.setVerticalScrollerImp(scrollerImp);
+        m_pair->setVerticalScrollerImp(scrollerImp.get());
     else
-        m_pair.setHorizontalScrollerImp(scrollerImp);
+        m_pair->setHorizontalScrollerImp(scrollerImp.get());
 }
 
 void ScrollerMac::mouseEnteredScrollbar()
 {
-    m_pair.ensureOnMainThreadWithProtectedThis([this](auto&) {
+    RetainPtr<NSScrollerImp> protectedScrollerImp = m_scrollerImp;
+    RetainPtr<NSScrollerImpPair> protectedPair = m_pair->scrollerImpPair();
+    m_pair->ensureOnMainThreadWithProtectedThis([this, protectedScrollerImp = WTFMove(protectedScrollerImp), protectedPair = WTFMove(protectedPair)](auto&) {
         // At this time, only legacy scrollbars needs to send notifications here.
-        if (m_pair.scrollbarStyle() != WebCore::ScrollbarStyle::AlwaysVisible)
+        if (m_pair->scrollbarStyle() != WebCore::ScrollbarStyle::AlwaysVisible)
             return;
 
-        if ([m_pair.scrollerImpPair() overlayScrollerStateIsLocked])
+        if ([protectedPair overlayScrollerStateIsLocked])
             return;
 
-        [m_scrollerImp mouseEnteredScroller];
+        [protectedScrollerImp mouseEnteredScroller];
     });
 }
 
 void ScrollerMac::mouseExitedScrollbar()
 {
-    m_pair.ensureOnMainThreadWithProtectedThis([this](auto&) {
+    RetainPtr<NSScrollerImp> protectedScrollerImp = m_scrollerImp;
path: Source/WebCore/page/scrolling/mac/ScrollerMac.mm
user: login: rniwa
body: Ditto.
created_at: 2025-04-21T21:38:57Z
author_association: MEMBER
diff_hunk: @@ -48,8 +49,9 @@ class ScrollingTreeScrollingNode;
 namespace WebCore {
 
 // Controls a pair of NSScrollerImps via a pair of ScrollerMac. The NSScrollerImps need to remain internal to this class.
-class ScrollerPairMac : public ThreadSafeRefCountedAndCanMakeThreadSafeWeakPtr<ScrollerPairMac> {
+class ScrollerPairMac : public ThreadSafeRefCountedAndCanMakeThreadSafeWeakPtr<ScrollerPairMac>, public CanMakeCheckedPtr<ScrollerPairMac> {
path: Source/WebCore/page/scrolling/mac/ScrollerPairMac.h
user: login: rniwa
body: Why are we making this class support CheckedPtr? We can just use RefPtr instead?
created_at: 2025-04-21T21:39:25Z
author_association: MEMBER
diff_hunk: @@ -100,18 +100,20 @@ - (void)setCurrentProgress:(NSAnimationProgress)progress
     else
         currentValue = progress;
 
+    RetainPtr<NSScrollerImp> scrollerImp = _scroller->scrollerImp();
path: Source/WebCore/page/scrolling/mac/ScrollerMac.mm
user: login: iidmsa
body: Fixed.
created_at: 2025-04-21T23:25:42Z
author_association: MEMBER
diff_hunk: @@ -204,7 +206,8 @@ - (NSAppearance *)effectiveAppearanceForScrollerImp:(NSScrollerImp *)scrollerImp
     if (!_scroller)
         return [NSAppearance currentDrawingAppearance];
     // The base system does not support dark Aqua, so we might get a null result.
-    if (auto *appearance = [NSAppearance appearanceNamed:_scroller->pair().useDarkAppearance() ? NSAppearanceNameDarkAqua : NSAppearanceNameAqua])
+    RetainPtr<NSString> appearanceName = _scroller->pair().useDarkAppearance() ? NSAppearanceNameDarkAqua : NSAppearanceNameAqua;
path: Source/WebCore/page/scrolling/mac/ScrollerMac.mm
user: login: iidmsa
body: Done.
created_at: 2025-04-21T23:25:56Z
author_association: MEMBER
diff_hunk: @@ -217,9 +220,12 @@ - (void)setUpAlphaAnimation:(RetainPtr<WebScrollbarPartAnimationMac>&)scrollbarP
         scrollbarPartAnimation = nil;
     }
 
+    RetainPtr<NSScrollerImp> scrollerImp = _scroller->scrollerImp();
path: Source/WebCore/page/scrolling/mac/ScrollerMac.mm
user: login: iidmsa
body: Fixed.
created_at: 2025-04-21T23:26:11Z
author_association: MEMBER
diff_hunk: @@ -48,8 +49,9 @@ class ScrollingTreeScrollingNode;
 namespace WebCore {
 
 // Controls a pair of NSScrollerImps via a pair of ScrollerMac. The NSScrollerImps need to remain internal to this class.
-class ScrollerPairMac : public ThreadSafeRefCountedAndCanMakeThreadSafeWeakPtr<ScrollerPairMac> {
+class ScrollerPairMac : public ThreadSafeRefCountedAndCanMakeThreadSafeWeakPtr<ScrollerPairMac>, public CanMakeCheckedPtr<ScrollerPairMac> {
path: Source/WebCore/page/scrolling/mac/ScrollerPairMac.h
user: login: iidmsa
body: Resorted to `ThreadSafeWeakPtr`
created_at: 2025-04-22T00:16:02Z
author_association: MEMBER
diff_hunk: @@ -48,7 +48,7 @@ class ScrollerMac {
 
     void attach();
 
-    ScrollerPairMac& pair() { return m_pair; }
+    ScrollerPairMac* pair() const { return m_pair.get().get(); }
path: Source/WebCore/page/scrolling/mac/ScrollerMac.h
user: login: rniwa
body: Oh, this is not at all safe. Between the time get() is called and before this value is used, the object can be free'd in another thread. We need to make this function return RefPtr instead.
created_at: 2025-04-22T00:32:40Z
author_association: MEMBER
diff_hunk: @@ -203,8 +205,10 @@ - (NSAppearance *)effectiveAppearanceForScrollerImp:(NSScrollerImp *)scrollerImp
 
     if (!_scroller)
         return [NSAppearance currentDrawingAppearance];
+    // FIXME: This is a static analysis false positive.
+    SUPPRESS_UNRETAINED_ARG
path: Source/WebCore/page/scrolling/mac/ScrollerMac.mm
user: login: rniwa
body: Please place this on the same line as where NSAppearanceNameDarkAqua and NSAppearanceNameAqua appears.
created_at: 2025-04-22T00:33:21Z
author_association: MEMBER
diff_hunk: @@ -48,7 +48,7 @@ class ScrollerMac {
 
     void attach();
 
-    ScrollerPairMac& pair() { return m_pair; }
+    ScrollerPairMac* pair() const { return m_pair.get().get(); }
path: Source/WebCore/page/scrolling/mac/ScrollerMac.h
user: login: iidmsa
body: Fixed.
created_at: 2025-04-22T02:04:11Z
author_association: MEMBER
diff_hunk: @@ -203,8 +205,10 @@ - (NSAppearance *)effectiveAppearanceForScrollerImp:(NSScrollerImp *)scrollerImp
 
     if (!_scroller)
         return [NSAppearance currentDrawingAppearance];
+    // FIXME: This is a static analysis false positive.
+    SUPPRESS_UNRETAINED_ARG
path: Source/WebCore/page/scrolling/mac/ScrollerMac.mm
user: login: iidmsa
body: Done.
created_at: 2025-04-22T02:04:21Z
author_association: MEMBER

PR comments:
user: login: webkit-early-warning-system
created_at: 2025-04-20T23:47:51Z
body: EWS run on previous version of this PR (hash https://github.com/WebKit/WebKit/commit/406de54646b61949dce3b797f83341d25306b3c3)<details>

| Misc | iOS, visionOS, tvOS & watchOS  | macOS  | Linux |  Windows |
| ----- | ---------------------- | ------- |  ----- |  --------- |
| [✅ 🧪 style](https://ews-build.webkit.org/#/builders/38/builds/100275 "Passed style check") | [✅ 🛠 ios](https://ews-build.webkit.org/#/builders/131/builds/19924 "Built successfully") | [✅ 🛠 mac](https://ews-build.webkit.org/#/builders/138/builds/10222 "Built successfully") | [✅ 🛠 wpe](https://ews-build.webkit.org/#/builders/5/builds/105405 "Built successfully") | [✅ 🛠 win](https://ews-build.webkit.org/#/builders/59/builds/50858 "Built successfully") 
| [✅ 🧪 bindings](https://ews-build.webkit.org/#/builders/9/builds/102316 "Passed tests") | [✅ 🛠 ios-sim](https://ews-build.webkit.org/#/builders/130/builds/20229 "Built successfully") | [✅ 🛠 mac-AS-debug](https://ews-build.webkit.org/#/builders/123/builds/28398 "Built successfully") | [  ~~🧪 wpe-wk2~~](https://ews-build.webkit.org/#/builders/34/builds/76348 "The change is no longer eligible for processing. Commit was outdated when EWS attempted to process it.") | [✅ 🧪 win-tests](https://ews-build.webkit.org/#/builders/60/builds/33406 "Passed tests") 
| [✅ 🧪 webkitperl](https://ews-build.webkit.org/#/builders/11/builds/103282 "Passed tests") | [✅ 🧪 ios-wk2](https://ews-build.webkit.org/#/builders/132/builds/15480 "Passed tests") | [✅ 🧪 api-mac](https://ews-build.webkit.org/#/builders/18/builds/90575 "Passed tests") | [✅ 🧪 api-wpe](https://ews-build.webkit.org/#/builders/41/builds/56705 "Passed tests") | 
| | [✅ 🧪 ios-wk2-wpt](https://ews-build.webkit.org/#/builders/133/builds/15301 "Passed tests") | [✅ 🧪 mac-wk1](https://ews-build.webkit.org/#/builders/135/builds/8574 "Passed tests") | [✅ 🛠 wpe-cairo](https://ews-build.webkit.org/#/builders/65/builds/50226 "Built successfully") | 
| | [✅ 🧪 api-ios](https://ews-build.webkit.org/#/builders/13/builds/85211 "Passed tests") | [✅ 🧪 mac-wk2](https://ews-build.webkit.org/#/builders/136/builds/8656 "Passed tests") | [✅ 🛠 gtk](https://ews-build.webkit.org/#/builders/2/builds/107764 "Built successfully") | 
| | [✅ 🛠 vision](https://ews-build.webkit.org/#/builders/128/builds/27388 "Built successfully") | [  ~~🧪 mac-AS-debug-wk2~~](https://ews-build.webkit.org/#/builders/122/builds/20083 "The change is no longer eligible for processing. Commit was outdated when EWS attempted to process it.") | [✅ 🧪 gtk-wk2](https://ews-build.webkit.org/#/builders/1/builds/85300 "Passed tests") | 
| | [✅ 🛠 vision-sim](https://ews-build.webkit.org/#/builders/121/builds/27751 "Built successfully") | [✅ 🧪 mac-wk2-stress](https://ews-build.webkit.org/#/builders/8/builds/86782 "Passed tests") | [✅ 🧪 api-gtk](https://ews-build.webkit.org/#/builders/21/builds/84839 "Passed tests") | 
| | [✅ 🧪 vision-wk2](https://ews-build.webkit.org/#/builders/126/builds/29523 "Passed tests") | [✅ 🧪 mac-intel-wk2](https://ews-build.webkit.org/#/builders/137/builds/7258 "Passed tests") | [  ~~🛠 playstation~~](https://ews-build.webkit.org/#/builders/134/builds/21284 "The change is no longer eligible for processing.") | 
| | [✅ 🛠 tv](https://ews-build.webkit.org/#/builders/127/builds/27325 "Built successfully") | [❌ 🛠 mac-safer-cpp](https://ews-build.webkit.org/#/builders/120/builds/32558 "Found 2 new failures in page/scrolling/mac/ScrollerMac.mm") | | 
| | [✅ 🛠 tv-sim](https://ews-build.webkit.org/#/builders/125/builds/27136 "Built successfully") | | | 
| | [✅ 🛠 watch](https://ews-build.webkit.org/#/builders/129/builds/30452 "Built successfully") | | | 
| | [✅ 🛠 watch-sim](https://ews-build.webkit.org/#/builders/124/builds/28695 "Built successfully") | | | </details>
author_association: COLLABORATOR
user: login: webkit-ews-buildbot
created_at: 2025-04-21T00:45:12Z
body: ### Safer C++ Build [#32558](https://ews-build.webkit.org/#/builders/120/builds/32558) (https://github.com/WebKit/WebKit/commit/406de54646b61949dce3b797f83341d25306b3c3)
:x: Found [1 failing file with 2 issues](https://ews-build.s3-us-west-2.amazonaws.com/macOS-Safer-CPP-Checks-EWS/406de546-32558/scan-build-output/new-results.html). Please address these issues before landing. See [WebKit Guidelines for Safer C++ Programming](https://github.com/WebKit/WebKit/wiki/Safer-CPP-Guidelines).
(cc @rniwa)

author_association: COLLABORATOR
user: login: webkit-early-warning-system
created_at: 2025-04-21T01:01:56Z
body: EWS run on previous version of this PR (hash https://github.com/WebKit/WebKit/commit/18c8cdab343d00c115ac04f9253e39c52d374dc5)<details>

| Misc | iOS, visionOS, tvOS & watchOS  | macOS  | Linux |  Windows |
| ----- | ---------------------- | ------- |  ----- |  --------- |
| [✅ 🧪 style](https://ews-build.webkit.org/#/builders/38/builds/100279 "Passed style check") | [✅ 🛠 ios](https://ews-build.webkit.org/#/builders/131/builds/19928 "Built successfully") | [✅ 🛠 mac](https://ews-build.webkit.org/#/builders/138/builds/10226 "Built successfully") | [✅ 🛠 wpe](https://ews-build.webkit.org/#/builders/5/builds/105409 "Built successfully") | [✅ 🛠 win](https://ews-build.webkit.org/#/builders/59/builds/50862 "Built successfully") 
| [✅ 🧪 bindings](https://ews-build.webkit.org/#/builders/9/builds/102320 "Passed tests") | [✅ 🛠 ios-sim](https://ews-build.webkit.org/#/builders/130/builds/20233 "Built successfully") | [✅ 🛠 mac-AS-debug](https://ews-build.webkit.org/#/builders/123/builds/28402 "Built successfully") | [✅ 🧪 wpe-wk2](https://ews-build.webkit.org/#/builders/34/builds/76352 "Passed tests") | [✅ 🧪 win-tests](https://ews-build.webkit.org/#/builders/60/builds/33407 "Passed tests") 
| [✅ 🧪 webkitperl](https://ews-build.webkit.org/#/builders/11/builds/103286 "Passed tests") | [✅ 🧪 ios-wk2](https://ews-build.webkit.org/#/builders/132/builds/15484 "Passed tests") | [✅ 🧪 api-mac](https://ews-build.webkit.org/#/builders/18/builds/90578 "Passed tests") | [✅ 🧪 api-wpe](https://ews-build.webkit.org/#/builders/41/builds/56709 "Passed tests") | 
| | [✅ 🧪 ios-wk2-wpt](https://ews-build.webkit.org/#/builders/133/builds/15305 "Passed tests") | [✅ 🧪 mac-wk1](https://ews-build.webkit.org/#/builders/135/builds/8577 "Passed tests") | [✅ 🛠 wpe-cairo](https://ews-build.webkit.org/#/builders/65/builds/50230 "Built successfully") | 
| | [✅ 🧪 api-ios](https://ews-build.webkit.org/#/builders/13/builds/85216 "Passed tests") | [✅ 🧪 mac-wk2](https://ews-build.webkit.org/#/builders/136/builds/8659 "Passed tests") | [✅ 🛠 gtk](https://ews-build.webkit.org/#/builders/2/builds/107768 "Built successfully") | 
| | [✅ 🛠 vision](https://ews-build.webkit.org/#/builders/128/builds/27392 "Built successfully") | [  ~~🧪 mac-AS-debug-wk2~~](https://ews-build.webkit.org/#/builders/122/builds/20085 "The change is no longer eligible for processing. Commit was outdated when EWS attempted to process it.") | [✅ 🧪 gtk-wk2](https://ews-build.webkit.org/#/builders/1/builds/85302 "Passed tests") | 
| | [✅ 🛠 vision-sim](https://ews-build.webkit.org/#/builders/121/builds/27755 "Built successfully") | [✅ 🧪 mac-wk2-stress](https://ews-build.webkit.org/#/builders/8/builds/86785 "Passed tests") | [✅ 🧪 api-gtk](https://ews-build.webkit.org/#/builders/21/builds/84841 "Passed tests") | 
| | [✅ 🧪 vision-wk2](https://ews-build.webkit.org/#/builders/126/builds/29524 "Passed tests") | [✅ 🧪 mac-intel-wk2](https://ews-build.webkit.org/#/builders/137/builds/7261 "Passed tests") | [  ~~🛠 playstation~~](https://ews-build.webkit.org/#/builders/134/builds/21290 "The change is no longer eligible for processing.") | 
| | [✅ 🛠 tv](https://ews-build.webkit.org/#/builders/127/builds/27329 "Built successfully") | [❌ 🛠 mac-safer-cpp](https://ews-build.webkit.org/#/builders/120/builds/32562 "") | | 
| | [✅ 🛠 tv-sim](https://ews-build.webkit.org/#/builders/125/builds/27140 "Built successfully") | | | 
| | [✅ 🛠 watch](https://ews-build.webkit.org/#/builders/129/builds/30456 "Built successfully") | | | 
| | [✅ 🛠 watch-sim](https://ews-build.webkit.org/#/builders/124/builds/28699 "Built successfully") | | | </details>
author_association: COLLABORATOR
user: login: webkit-ews-buildbot
created_at: 2025-04-21T01:54:04Z
body: ### Safer C++ Build [#32562](https://ews-build.webkit.org/#/builders/120/builds/32562) (https://github.com/WebKit/WebKit/commit/18c8cdab343d00c115ac04f9253e39c52d374dc5)
:x: Found [2 failing files with 23 issues](https://ews-build.s3-us-west-2.amazonaws.com/macOS-Safer-CPP-Checks-EWS/18c8cdab-32562/scan-build-output/new-results.html). Please address these issues before landing. See [WebKit Guidelines for Safer C++ Programming](https://github.com/WebKit/WebKit/wiki/Safer-CPP-Guidelines).
(cc @rniwa)

author_association: COLLABORATOR
user: login: webkit-early-warning-system
created_at: 2025-04-21T02:25:59Z
body: EWS run on previous version of this PR (hash https://github.com/WebKit/WebKit/commit/76db28c21cea25b6ade7ccc795cce88e9f26f99b)<details>

| Misc | iOS, visionOS, tvOS & watchOS  | macOS  | Linux |  Windows |
| ----- | ---------------------- | ------- |  ----- |  --------- |
| [✅ 🧪 style](https://ews-build.webkit.org/#/builders/38/builds/100285 "Passed style check") | [✅ 🛠 ios](https://ews-build.webkit.org/#/builders/131/builds/19934 "Built successfully") | [✅ 🛠 mac](https://ews-build.webkit.org/#/builders/138/builds/10232 "Built successfully") | [✅ 🛠 wpe](https://ews-build.webkit.org/#/builders/5/builds/105415 "Built successfully") | [✅ 🛠 win](https://ews-build.webkit.org/#/builders/59/builds/50868 "Built successfully") 
| [✅ 🧪 bindings](https://ews-build.webkit.org/#/builders/9/builds/102326 "Passed tests") | [✅ 🛠 ios-sim](https://ews-build.webkit.org/#/builders/130/builds/20239 "Built successfully") | [❌ 🛠 mac-AS-debug](https://ews-build.webkit.org/#/builders/123/builds/28408 "Hash 76db28c2 for PR 44319 does not build (failure)") | [✅ 🧪 wpe-wk2](https://ews-build.webkit.org/#/builders/34/builds/76358 "Passed tests") | [✅ 🧪 win-tests](https://ews-build.webkit.org/#/builders/60/builds/33415 "Passed tests") 
| [✅ 🧪 webkitperl](https://ews-build.webkit.org/#/builders/11/builds/103292 "Passed tests") | [✅ 🧪 ios-wk2](https://ews-build.webkit.org/#/builders/132/builds/15487 "Passed tests") | [✅ 🧪 api-mac](https://ews-build.webkit.org/#/builders/18/builds/90582 "Passed tests") | [✅ 🧪 api-wpe](https://ews-build.webkit.org/#/builders/41/builds/56715 "Passed tests") | 
| | [✅ 🧪 ios-wk2-wpt](https://ews-build.webkit.org/#/builders/133/builds/15308 "Passed tests") | [✅ 🧪 mac-wk1](https://ews-build.webkit.org/#/builders/135/builds/8581 "Passed tests") | [✅ 🛠 wpe-cairo](https://ews-build.webkit.org/#/builders/65/builds/50236 "Built successfully") | 
| | [✅ 🧪 api-ios](https://ews-build.webkit.org/#/builders/13/builds/85219 "Passed tests") | [✅ 🧪 mac-wk2](https://ews-build.webkit.org/#/builders/136/builds/8663 "Passed tests") | [✅ 🛠 gtk](https://ews-build.webkit.org/#/builders/2/builds/107774 "Built successfully") | 
| | [✅ 🛠 vision](https://ews-build.webkit.org/#/builders/128/builds/27398 "Built successfully") | [❌ 🧪 mac-AS-debug-wk2](https://ews-build.webkit.org/#/builders/123/builds/28408 "Hash 76db28c2 for PR 44319 does not build (failure)") | [✅ 🧪 gtk-wk2](https://ews-build.webkit.org/#/builders/1/builds/85308 "Passed tests") | 
| | [✅ 🛠 vision-sim](https://ews-build.webkit.org/#/builders/121/builds/27761 "Built successfully") | [✅ 🧪 mac-wk2-stress](https://ews-build.webkit.org/#/builders/8/builds/86789 "Passed tests") | [✅ 🧪 api-gtk](https://ews-build.webkit.org/#/builders/21/builds/84847 "Passed tests") | 
| | [✅ 🧪 vision-wk2](https://ews-build.webkit.org/#/builders/126/builds/29529 "Passed tests") | [✅ 🧪 mac-intel-wk2](https://ews-build.webkit.org/#/builders/137/builds/7265 "Passed tests") | [  ~~🛠 playstation~~](https://ews-build.webkit.org/#/builders/134/builds/21297 "The change is no longer eligible for processing.") | 
| | [✅ 🛠 tv](https://ews-build.webkit.org/#/builders/127/builds/27335 "Built successfully") | [❌ 🛠 mac-safer-cpp](https://ews-build.webkit.org/#/builders/120/builds/32568 "Found 21 new failures in page/scrolling/mac/ScrollingTreeScrollingNodeDelegateMac.mm") | | 
| | [✅ 🛠 tv-sim](https://ews-build.webkit.org/#/builders/125/builds/27146 "Built successfully") | | | 
| | [✅ 🛠 watch](https://ews-build.webkit.org/#/builders/129/builds/30462 "Built successfully") | | | 
| | [✅ 🛠 watch-sim](https://ews-build.webkit.org/#/builders/124/builds/28705 "Built successfully") | | | </details>
author_association: COLLABORATOR
user: login: webkit-ews-buildbot
created_at: 2025-04-21T03:19:33Z
body: ### Safer C++ Build [#32568](https://ews-build.webkit.org/#/builders/120/builds/32568) (https://github.com/WebKit/WebKit/commit/76db28c21cea25b6ade7ccc795cce88e9f26f99b)
:x: Found [1 failing file with 21 issues](https://ews-build.s3-us-west-2.amazonaws.com/macOS-Safer-CPP-Checks-EWS/76db28c2-32568/scan-build-output/new-results.html). Please address these issues before landing. See [WebKit Guidelines for Safer C++ Programming](https://github.com/WebKit/WebKit/wiki/Safer-CPP-Guidelines).
(cc @rniwa)

author_association: COLLABORATOR
user: login: webkit-early-warning-system
created_at: 2025-04-21T03:59:27Z
body: EWS run on previous version of this PR (hash https://github.com/WebKit/WebKit/commit/b41e0fb63caca15583a241d41c92089ac2c5599e)<details>

| Misc | iOS, visionOS, tvOS & watchOS  | macOS  | Linux |  Windows |
| ----- | ---------------------- | ------- |  ----- |  --------- |
| [✅ 🧪 style](https://ews-build.webkit.org/#/builders/38/builds/100288 "Passed style check") | [✅ 🛠 ios](https://ews-build.webkit.org/#/builders/131/builds/19937 "Built successfully") | [✅ 🛠 mac](https://ews-build.webkit.org/#/builders/138/builds/10235 "Built successfully") | [✅ 🛠 wpe](https://ews-build.webkit.org/#/builders/5/builds/105418 "Built successfully") | [✅ 🛠 win](https://ews-build.webkit.org/#/builders/59/builds/50871 "Built successfully") 
| [✅ 🧪 bindings](https://ews-build.webkit.org/#/builders/9/builds/102329 "Passed tests") | [✅ 🛠 ios-sim](https://ews-build.webkit.org/#/builders/130/builds/20242 "Built successfully") | [✅ 🛠 mac-AS-debug](https://ews-build.webkit.org/#/builders/123/builds/28411 "Built successfully") | [✅ 🧪 wpe-wk2](https://ews-build.webkit.org/#/builders/34/builds/76361 "Passed tests") | [✅ 🧪 win-tests](https://ews-build.webkit.org/#/builders/60/builds/33418 "Passed tests") 
| [✅ 🧪 webkitperl](https://ews-build.webkit.org/#/builders/11/builds/103295 "Passed tests") | [✅ 🧪 ios-wk2](https://ews-build.webkit.org/#/builders/132/builds/15492 "Passed tests") | [✅ 🧪 api-mac](https://ews-build.webkit.org/#/builders/18/builds/90587 "Passed tests") | [✅ 🧪 api-wpe](https://ews-build.webkit.org/#/builders/41/builds/56718 "Passed tests") | 
| | [✅ 🧪 ios-wk2-wpt](https://ews-build.webkit.org/#/builders/133/builds/15313 "Passed tests") | [✅ 🧪 mac-wk1](https://ews-build.webkit.org/#/builders/135/builds/8586 "Passed tests") | [✅ 🛠 wpe-cairo](https://ews-build.webkit.org/#/builders/65/builds/50239 "Built successfully") | 
| | [✅ 🧪 api-ios](https://ews-build.webkit.org/#/builders/13/builds/85224 "Passed tests") | [✅ 🧪 mac-wk2](https://ews-build.webkit.org/#/builders/136/builds/8668 "Passed tests") | [✅ 🛠 gtk](https://ews-build.webkit.org/#/builders/2/builds/107777 "Built successfully") | 
| | [✅ 🛠 vision](https://ews-build.webkit.org/#/builders/128/builds/27401 "Built successfully") | [✅ 🧪 mac-AS-debug-wk2](https://ews-build.webkit.org/#/builders/122/builds/20093 "Passed tests") | [✅ 🧪 gtk-wk2](https://ews-build.webkit.org/#/builders/1/builds/85313 "Passed tests") | 
| | [✅ 🛠 vision-sim](https://ews-build.webkit.org/#/builders/121/builds/27764 "Built successfully") | [✅ 🧪 mac-wk2-stress](https://ews-build.webkit.org/#/builders/8/builds/86794 "Passed tests") | [✅ 🧪 api-gtk](https://ews-build.webkit.org/#/builders/21/builds/84852 "Passed tests") | 
| | [✅ 🧪 vision-wk2](https://ews-build.webkit.org/#/builders/126/builds/29530 "Passed tests") | [✅ 🧪 mac-intel-wk2](https://ews-build.webkit.org/#/builders/137/builds/7270 "Passed tests") | [  ~~🛠 playstation~~](https://ews-build.webkit.org/#/builders/134/builds/21302 "The change is no longer eligible for processing.") | 
| | [✅ 🛠 tv](https://ews-build.webkit.org/#/builders/127/builds/27338 "Built successfully") | [❌ 🛠 mac-safer-cpp](https://ews-build.webkit.org/#/builders/120/builds/32571 "Found 21 new failures in page/scrolling/mac/ScrollingTreeScrollingNodeDelegateMac.mm") | | 
| | [✅ 🛠 tv-sim](https://ews-build.webkit.org/#/builders/125/builds/27149 "Built successfully") | | | 
| | [✅ 🛠 watch](https://ews-build.webkit.org/#/builders/129/builds/30465 "Built successfully") | | | 
| | [✅ 🛠 watch-sim](https://ews-build.webkit.org/#/builders/124/builds/28708 "Built successfully") | | | </details>
author_association: COLLABORATOR
user: login: webkit-ews-buildbot
created_at: 2025-04-21T05:20:00Z
body: ### Safer C++ Build [#32571](https://ews-build.webkit.org/#/builders/120/builds/32571) (https://github.com/WebKit/WebKit/commit/b41e0fb63caca15583a241d41c92089ac2c5599e)
:x: Found [1 failing file with 21 issues](https://ews-build.s3-us-west-2.amazonaws.com/macOS-Safer-CPP-Checks-EWS/b41e0fb6-32571/scan-build-output/new-results.html). Please address these issues before landing. See [WebKit Guidelines for Safer C++ Programming](https://github.com/WebKit/WebKit/wiki/Safer-CPP-Guidelines).
(cc @rniwa)

author_association: COLLABORATOR
user: login: webkit-early-warning-system
created_at: 2025-04-21T23:25:01Z
body: EWS run on previous version of this PR (hash https://github.com/WebKit/WebKit/commit/570a73fc2bc7451fd379fb2f9a2c229ff4ca5d8f)<details>

| Misc | iOS, visionOS, tvOS & watchOS  | macOS  | Linux |  Windows |
| ----- | ---------------------- | ------- |  ----- |  --------- |
| [✅ 🧪 style](https://ews-build.webkit.org/#/builders/38/builds/100365 "Passed style check") | [✅ 🛠 ios](https://ews-build.webkit.org/#/builders/131/builds/20017 "Built successfully") | [✅ 🛠 mac](https://ews-build.webkit.org/#/builders/138/builds/10316 "Built successfully") | [✅ 🛠 wpe](https://ews-build.webkit.org/#/builders/5/builds/105501 "Built successfully") | [✅ 🛠 win](https://ews-build.webkit.org/#/builders/59/builds/50953 "Built successfully") 
| [✅ 🧪 bindings](https://ews-build.webkit.org/#/builders/9/builds/102406 "Passed tests") | [✅ 🛠 ios-sim](https://ews-build.webkit.org/#/builders/130/builds/20323 "Built successfully") | [✅ 🛠 mac-AS-debug](https://ews-build.webkit.org/#/builders/123/builds/28491 "Built successfully") | [  ~~🧪 wpe-wk2~~](https://ews-build.webkit.org/#/builders/34/builds/76418 "The change is no longer eligible for processing. Commit was outdated when EWS attempted to process it.") | [✅ 🧪 win-tests](https://ews-build.webkit.org/#/builders/60/builds/33473 "Passed tests") 
| [✅ 🧪 webkitperl](https://ews-build.webkit.org/#/builders/11/builds/103372 "Passed tests") | [✅ 🧪 ios-wk2](https://ews-build.webkit.org/#/builders/132/builds/15563 "Passed tests") | [✅ 🧪 api-mac](https://ews-build.webkit.org/#/builders/18/builds/90659 "Passed tests") | [✅ 🧪 api-wpe](https://ews-build.webkit.org/#/builders/41/builds/56773 "Passed tests") | 
| | [✅ 🧪 ios-wk2-wpt](https://ews-build.webkit.org/#/builders/133/builds/15380 "Passed tests") | [✅ 🧪 mac-wk1](https://ews-build.webkit.org/#/builders/135/builds/8660 "Passed tests") | [✅ 🛠 wpe-cairo](https://ews-build.webkit.org/#/builders/65/builds/50320 "Built successfully") | 
| | [⏳ 🧪 api-ios](https://ews-build.webkit.org/#/builders/API-Tests-iOS-Simulator-EWS "Waiting to run tests") | [✅ 🧪 mac-wk2](https://ews-build.webkit.org/#/builders/136/builds/8742 "Passed tests") | [✅ 🛠 gtk](https://ews-build.webkit.org/#/builders/2/builds/107856 "Built successfully") | 
| | [✅ 🛠 vision](https://ews-build.webkit.org/#/builders/128/builds/27483 "Built successfully") | [  ~~🧪 mac-AS-debug-wk2~~](https://ews-build.webkit.org/#/builders/122/builds/20162 "The change is no longer eligible for processing. Commit was outdated when EWS attempted to process it.") | [  ~~🧪 gtk-wk2~~](https://ews-build.webkit.org/#/builders/1/builds/85370 "The change is no longer eligible for processing. Commit was outdated when EWS attempted to process it.") | 
| | [✅ 🛠 vision-sim](https://ews-build.webkit.org/#/builders/121/builds/27846 "Built successfully") | [✅ 🧪 mac-wk2-stress](https://ews-build.webkit.org/#/builders/8/builds/86859 "Passed tests") | [✅ 🧪 api-gtk](https://ews-build.webkit.org/#/builders/21/builds/84906 "Passed tests") | 
| | [✅ 🧪 vision-wk2](https://ews-build.webkit.org/#/builders/126/builds/29592 "Passed tests") | [⏳ 🧪 mac-intel-wk2](https://ews-build.webkit.org/#/builders/macOS-Sonoma-Release-WK2-Intel-Tests-EWS "Waiting to run tests") | [  ~~🛠 playstation~~](https://ews-build.webkit.org/#/builders/134/builds/21403 "The change is no longer eligible for processing.") | 
| | [✅ 🛠 tv](https://ews-build.webkit.org/#/builders/127/builds/27418 "Built successfully") | [❌ 🛠 mac-safer-cpp](https://ews-build.webkit.org/#/builders/120/builds/32659 "Found 21 new failures in page/scrolling/mac/ScrollingTreeScrollingNodeDelegateMac.mm") | | 
| | [✅ 🛠 tv-sim](https://ews-build.webkit.org/#/builders/125/builds/27229 "Built successfully") | | | 
| | [✅ 🛠 watch](https://ews-build.webkit.org/#/builders/129/builds/30547 "Built successfully") | | | 
| | [✅ 🛠 watch-sim](https://ews-build.webkit.org/#/builders/124/builds/28787 "Built successfully") | | | </details>
author_association: COLLABORATOR
user: login: webkit-early-warning-system
created_at: 2025-04-21T23:53:16Z
body: EWS run on previous version of this PR (hash https://github.com/WebKit/WebKit/commit/440b667006d00c4eeeb7b9e1fcc60fbda9dafb0b)<details>

| Misc | iOS, visionOS, tvOS & watchOS  | macOS  | Linux |  Windows |
| ----- | ---------------------- | ------- |  ----- |  --------- |
| [✅ 🧪 style](https://ews-build.webkit.org/#/builders/38/builds/100373 "Passed style check") | [✅ 🛠 ios](https://ews-build.webkit.org/#/builders/131/builds/20025 "Built successfully") | [✅ 🛠 mac](https://ews-build.webkit.org/#/builders/138/builds/10324 "Built successfully") | [✅ 🛠 wpe](https://ews-build.webkit.org/#/builders/5/builds/105509 "Built successfully") | [✅ 🛠 win](https://ews-build.webkit.org/#/builders/59/builds/50961 "Built successfully") 
| [✅ 🧪 bindings](https://ews-build.webkit.org/#/builders/9/builds/102414 "Passed tests") | [✅ 🛠 ios-sim](https://ews-build.webkit.org/#/builders/130/builds/20331 "Built successfully") | [✅ 🛠 mac-AS-debug](https://ews-build.webkit.org/#/builders/123/builds/28499 "Built successfully") | [  ~~🧪 wpe-wk2~~](https://ews-build.webkit.org/#/builders/34/builds/76424 "The change is no longer eligible for processing. Commit was outdated when EWS attempted to process it.") | [  ~~🧪 win-tests~~](https://ews-build.webkit.org/#/builders/60/builds/33480 "The change is no longer eligible for processing. Commit was outdated when EWS attempted to process it.") 
| [✅ 🧪 webkitperl](https://ews-build.webkit.org/#/builders/11/builds/103380 "Passed tests") | [  ~~🧪 ios-wk2~~](https://ews-build.webkit.org/#/builders/132/builds/15571 "The change is no longer eligible for processing. Commit was outdated when EWS attempted to process it.") | [✅ 🧪 api-mac](https://ews-build.webkit.org/#/builders/18/builds/90666 "Passed tests") | [  ~~🧪 api-wpe~~](https://ews-build.webkit.org/#/builders/41/builds/56779 "The change is no longer eligible for processing. Commit was outdated when EWS attempted to process it.") | 
| | [  ~~🧪 ios-wk2-wpt~~](https://ews-build.webkit.org/#/builders/133/builds/15388 "The change is no longer eligible for processing. Commit was outdated when EWS attempted to process it.") | [✅ 🧪 mac-wk1](https://ews-build.webkit.org/#/builders/135/builds/8667 "Passed tests") | [❌ 🛠 wpe-cairo](https://ews-build.webkit.org/#/builders/65/builds/50328 "Failed to compile WebKit") | 
| | [⏳ 🧪 api-ios](https://ews-build.webkit.org/#/builders/API-Tests-iOS-Simulator-EWS "Waiting to run tests") | [✅ 🧪 mac-wk2](https://ews-build.webkit.org/#/builders/136/builds/8749 "Passed tests") | [✅ 🛠 gtk](https://ews-build.webkit.org/#/builders/2/builds/107864 "Built successfully") | 
| | [✅ 🛠 vision](https://ews-build.webkit.org/#/builders/128/builds/27491 "Built successfully") | [⏳ 🧪 mac-AS-debug-wk2](https://ews-build.webkit.org/#/builders/macOS-Sequoia-Debug-WK2-Tests-EWS "Waiting to run tests") | [⏳ 🧪 gtk-wk2](https://ews-build.webkit.org/#/builders/GTK-WK2-Tests-EWS "Waiting to run tests") | 
| | [✅ 🛠 vision-sim](https://ews-build.webkit.org/#/builders/121/builds/27854 "Built successfully") | [✅ 🧪 mac-wk2-stress](https://ews-build.webkit.org/#/builders/8/builds/86866 "Passed tests") | [✅ 🧪 api-gtk](https://ews-build.webkit.org/#/builders/21/builds/84912 "Passed tests") | 
| | [✅ 🧪 vision-wk2](https://ews-build.webkit.org/#/builders/126/builds/29598 "Passed tests") | [⏳ 🧪 mac-intel-wk2](https://ews-build.webkit.org/#/builders/macOS-Sonoma-Release-WK2-Intel-Tests-EWS "Waiting to run tests") | [  ~~🛠 playstation~~](https://ews-build.webkit.org/#/builders/134/builds/21411 "The change is no longer eligible for processing.") | 
| | [✅ 🛠 tv](https://ews-build.webkit.org/#/builders/127/builds/27426 "Built successfully") | [❌ 🛠 mac-safer-cpp](https://ews-build.webkit.org/#/builders/120/builds/32667 "Found 7 new failures in page/scrolling/mac/ScrollerMac.mm") | | 
| | [✅ 🛠 tv-sim](https://ews-build.webkit.org/#/builders/125/builds/27237 "Built successfully") | | | 
| | [✅ 🛠 watch](https://ews-build.webkit.org/#/builders/129/builds/30555 "Built successfully") | | | 
| | [✅ 🛠 watch-sim](https://ews-build.webkit.org/#/builders/124/builds/28795 "Built successfully") | | | </details>
author_association: COLLABORATOR
user: login: webkit-ews-buildbot
created_at: 2025-04-22T00:07:16Z
body: ### Safer C++ Build [#32659](https://ews-build.webkit.org/#/builders/120/builds/32659) (https://github.com/WebKit/WebKit/commit/570a73fc2bc7451fd379fb2f9a2c229ff4ca5d8f)
:x: Found [1 failing file with 21 issues](https://ews-build.s3-us-west-2.amazonaws.com/macOS-Safer-CPP-Checks-EWS/570a73fc-32659/scan-build-output/new-results.html). Please address these issues before landing. See [WebKit Guidelines for Safer C++ Programming](https://github.com/WebKit/WebKit/wiki/Safer-CPP-Guidelines).
(cc @rniwa)

author_association: COLLABORATOR
user: login: webkit-early-warning-system
created_at: 2025-04-22T00:12:26Z
body: EWS run on previous version of this PR (hash https://github.com/WebKit/WebKit/commit/954e74194cbaf113e3745b58e677e93336574503)<details>

| Misc | iOS, visionOS, tvOS & watchOS  | macOS  | Linux |  Windows |
| ----- | ---------------------- | ------- |  ----- |  --------- |
| [✅ 🧪 style](https://ews-build.webkit.org/#/builders/38/builds/100379 "Passed style check") | [✅ 🛠 ios](https://ews-build.webkit.org/#/builders/131/builds/20031 "Built successfully") | [✅ 🛠 mac](https://ews-build.webkit.org/#/builders/138/builds/10330 "Built successfully") | [  ~~🛠 wpe~~](https://ews-build.webkit.org/#/builders/5/builds/105515 "The change is no longer eligible for processing. Commit was outdated when EWS attempted to process it.") | [  ~~🛠 win~~](https://ews-build.webkit.org/#/builders/59/builds/50967 "The change is no longer eligible for processing. Commit was outdated when EWS attempted to process it.") 
| [✅ 🧪 bindings](https://ews-build.webkit.org/#/builders/9/builds/102420 "Passed tests") | [  ~~🛠 ios-sim~~](https://ews-build.webkit.org/#/builders/130/builds/20337 "The change is no longer eligible for processing. Commit was outdated when EWS attempted to process it.") | [✅ 🛠 mac-AS-debug](https://ews-build.webkit.org/#/builders/123/builds/28505 "Built successfully") | [  ~~🧪 wpe-wk2~~](https://ews-build.webkit.org/#/builders/5/builds/105515 "The change is no longer eligible for processing. Commit was outdated when EWS attempted to process it.") | [  ~~🧪 win-tests~~](https://ews-build.webkit.org/#/builders/59/builds/50967 "The change is no longer eligible for processing. Commit was outdated when EWS attempted to process it.") 
| [✅ 🧪 webkitperl](https://ews-build.webkit.org/#/builders/11/builds/103386 "Passed tests") | [  ~~🧪 ios-wk2~~](https://ews-build.webkit.org/#/builders/130/builds/20337 "The change is no longer eligible for processing. Commit was outdated when EWS attempted to process it.") | [  ~~🧪 api-mac~~](https://ews-build.webkit.org/#/builders/18/builds/90669 "The change is no longer eligible for processing. Commit was outdated when EWS attempted to process it.") | [  ~~🧪 api-wpe~~](https://ews-build.webkit.org/#/builders/5/builds/105515 "The change is no longer eligible for processing. Commit was outdated when EWS attempted to process it.") | 
| | [  ~~🧪 ios-wk2-wpt~~](https://ews-build.webkit.org/#/builders/130/builds/20337 "The change is no longer eligible for processing. Commit was outdated when EWS attempted to process it.") | [  ~~🧪 mac-wk1~~](https://ews-build.webkit.org/#/builders/135/builds/8670 "The change is no longer eligible for processing. Commit was outdated when EWS attempted to process it.") | [❌ 🛠 wpe-cairo](https://ews-build.webkit.org/#/builders/65/builds/50335 "Failed to checkout and rebase branch from PR 44319") | 
| | [  ~~🧪 api-ios~~](https://ews-build.webkit.org/#/builders/130/builds/20337 "The change is no longer eligible for processing. Commit was outdated when EWS attempted to process it.") | [  ~~🧪 mac-wk2~~](https://ews-build.webkit.org/#/builders/136/builds/8752 "The change is no longer eligible for processing. Commit was outdated when EWS attempted to process it.") | [✅ 🛠 gtk](https://ews-build.webkit.org/#/builders/2/builds/107870 "Built successfully") | 
| | [  ~~🛠 vision~~](https://ews-build.webkit.org/#/builders/128/builds/27497 "The change is no longer eligible for processing. Commit was outdated when EWS attempted to process it.") | [⏳ 🧪 mac-AS-debug-wk2](https://ews-build.webkit.org/#/builders/macOS-Sequoia-Debug-WK2-Tests-EWS "Waiting to run tests") | [⏳ 🧪 gtk-wk2](https://ews-build.webkit.org/#/builders/GTK-WK2-Tests-EWS "Waiting to run tests") | 
| | [  ~~🛠 vision-sim~~](https://ews-build.webkit.org/#/builders/121/builds/27860 "The change is no longer eligible for processing. Commit was outdated when EWS attempted to process it.") | [  ~~🧪 mac-wk2-stress~~](https://ews-build.webkit.org/#/builders/8/builds/86869 "The change is no longer eligible for processing. Commit was outdated when EWS attempted to process it.") | [⏳ 🧪 api-gtk](https://ews-build.webkit.org/#/builders/API-Tests-GTK-EWS "Waiting to run tests") | 
| | [⏳ 🧪 vision-wk2 ](https://ews-build.webkit.org/#/builders/visionOS-2-Simulator-WK2-Tests-EWS "Waiting in queue, processing has not started yet") | [⏳ 🧪 mac-intel-wk2](https://ews-build.webkit.org/#/builders/macOS-Sonoma-Release-WK2-Intel-Tests-EWS "Waiting to run tests") | [  ~~🛠 playstation~~](https://ews-build.webkit.org/#/builders/134/builds/21417 "The change is no longer eligible for processing. Commit was outdated when EWS attempted to process it.") | 
| | [  ~~🛠 tv~~](https://ews-build.webkit.org/#/builders/127/builds/27432 "The change is no longer eligible for processing. Commit was outdated when EWS attempted to process it.") | [  ~~🛠 mac-safer-cpp~~](https://ews-build.webkit.org/#/builders/120/builds/32673 "The change is no longer eligible for processing. Commit was outdated when EWS attempted to process it.") | | 
| | [  ~~🛠 tv-sim~~](https://ews-build.webkit.org/#/builders/125/builds/27243 "The change is no longer eligible for processing. Commit was outdated when EWS attempted to process it.") | | | 
| | [  ~~🛠 watch~~](https://ews-build.webkit.org/#/builders/129/builds/30561 "The change is no longer eligible for processing. Commit was outdated when EWS attempted to process it.") | | | 
| | [✅ 🛠 watch-sim](https://ews-build.webkit.org/#/builders/124/builds/28801 "Built successfully") | | | </details>
author_association: COLLABORATOR
user: login: webkit-early-warning-system
created_at: 2025-04-22T00:17:24Z
body: EWS run on previous version of this PR (hash https://github.com/WebKit/WebKit/commit/06a7cbc5c78665217d18881bb5a5aa24fabab9d2)<details>

| Misc | iOS, visionOS, tvOS & watchOS  | macOS  | Linux |  Windows |
| ----- | ---------------------- | ------- |  ----- |  --------- |
| [✅ 🧪 style](https://ews-build.webkit.org/#/builders/38/builds/100382 "Passed style check") | [✅ 🛠 ios](https://ews-build.webkit.org/#/builders/131/builds/20034 "Built successfully") | [✅ 🛠 mac](https://ews-build.webkit.org/#/builders/138/builds/10333 "Built successfully") | [✅ 🛠 wpe](https://ews-build.webkit.org/#/builders/5/builds/105518 "Built successfully") | [✅ 🛠 win](https://ews-build.webkit.org/#/builders/59/builds/50970 "Built successfully") 
| [✅ 🧪 bindings](https://ews-build.webkit.org/#/builders/9/builds/102423 "Passed tests") | [✅ 🛠 ios-sim](https://ews-build.webkit.org/#/builders/130/builds/20340 "Built successfully") | [✅ 🛠 mac-AS-debug](https://ews-build.webkit.org/#/builders/123/builds/28508 "Built successfully") | [  ~~🧪 wpe-wk2~~](https://ews-build.webkit.org/#/builders/34/builds/76429 "The change is no longer eligible for processing. Commit was outdated when EWS attempted to process it.") | [✅ 🧪 win-tests](https://ews-build.webkit.org/#/builders/60/builds/33486 "Passed tests") 
| [✅ 🧪 webkitperl](https://ews-build.webkit.org/#/builders/11/builds/103389 "Passed tests") | [✅ 🧪 ios-wk2](https://ews-build.webkit.org/#/builders/132/builds/15578 "Passed tests") | [✅ 🧪 api-mac](https://ews-build.webkit.org/#/builders/18/builds/90671 "Passed tests") | [✅ 🧪 api-wpe](https://ews-build.webkit.org/#/builders/41/builds/56784 "Passed tests") | 
| | [✅ 🧪 ios-wk2-wpt](https://ews-build.webkit.org/#/builders/133/builds/15395 "Passed tests") | [✅ 🧪 mac-wk1](https://ews-build.webkit.org/#/builders/135/builds/8672 "Passed tests") | [❌ 🛠 wpe-cairo](https://ews-build.webkit.org/#/builders/65/builds/50338 "Failed to compile WebKit") | 
| | [⏳ 🧪 api-ios](https://ews-build.webkit.org/#/builders/API-Tests-iOS-Simulator-EWS "Waiting to run tests") | [✅ 🧪 mac-wk2](https://ews-build.webkit.org/#/builders/136/builds/8754 "Passed tests") | [✅ 🛠 gtk](https://ews-build.webkit.org/#/builders/2/builds/107873 "Built successfully") | 
| | [✅ 🛠 vision](https://ews-build.webkit.org/#/builders/128/builds/27500 "Built successfully") | [  ~~🧪 mac-AS-debug-wk2~~](https://ews-build.webkit.org/#/builders/122/builds/20173 "The change is no longer eligible for processing. Commit was outdated when EWS attempted to process it.") | [  ~~🧪 gtk-wk2~~](https://ews-build.webkit.org/#/builders/1/builds/85381 "The change is no longer eligible for processing. Commit was outdated when EWS attempted to process it.") | 
| | [✅ 🛠 vision-sim](https://ews-build.webkit.org/#/builders/121/builds/27863 "Built successfully") | [✅ 🧪 mac-wk2-stress](https://ews-build.webkit.org/#/builders/8/builds/86871 "Passed tests") | [✅ 🧪 api-gtk](https://ews-build.webkit.org/#/builders/21/builds/84918 "Passed tests") | 
| | [✅ 🧪 vision-wk2](https://ews-build.webkit.org/#/builders/126/builds/29606 "Passed tests") | [⏳ 🧪 mac-intel-wk2](https://ews-build.webkit.org/#/builders/macOS-Sonoma-Release-WK2-Intel-Tests-EWS "Waiting to run tests") | [  ~~🛠 playstation~~](https://ews-build.webkit.org/#/builders/134/builds/21420 "The change is no longer eligible for processing.") | 
| | [✅ 🛠 tv](https://ews-build.webkit.org/#/builders/127/builds/27435 "Built successfully") | [✅ 🛠 mac-safer-cpp](https://ews-build.webkit.org/#/builders/120/builds/32676 "Built successfully") | | 
| | [✅ 🛠 tv-sim](https://ews-build.webkit.org/#/builders/125/builds/27246 "Built successfully") | | | 
| | [✅ 🛠 watch](https://ews-build.webkit.org/#/builders/129/builds/30564 "Built successfully") | | | 
| | [✅ 🛠 watch-sim](https://ews-build.webkit.org/#/builders/124/builds/28804 "Built successfully") | | | </details>
author_association: COLLABORATOR
user: login: webkit-ews-buildbot
created_at: 2025-04-22T00:50:11Z
body: ### Safer C++ Build [#32667](https://ews-build.webkit.org/#/builders/120/builds/32667) (https://github.com/WebKit/WebKit/commit/440b667006d00c4eeeb7b9e1fcc60fbda9dafb0b)
:x: Found [1 failing file with 7 issues](https://ews-build.s3-us-west-2.amazonaws.com/macOS-Safer-CPP-Checks-EWS/440b6670-32667/scan-build-output/new-results.html). Please address these issues before landing. See [WebKit Guidelines for Safer C++ Programming](https://github.com/WebKit/WebKit/wiki/Safer-CPP-Guidelines).
(cc @rniwa)

author_association: COLLABORATOR
user: login: webkit-early-warning-system
created_at: 2025-04-22T02:03:56Z
body: EWS run on current version of this PR (hash https://github.com/WebKit/WebKit/commit/c27a6c03e27c41ec1dcf22a568926dbd4db821a7)<details>

| Misc | iOS, visionOS, tvOS & watchOS  | macOS  | Linux |  Windows |
| ----- | ---------------------- | ------- |  ----- |  --------- |
| [✅ 🧪 style](https://ews-build.webkit.org/#/builders/38/builds/100394 "Passed style check") | [✅ 🛠 ios](https://ews-build.webkit.org/#/builders/131/builds/20046 "Built successfully") | [✅ 🛠 mac](https://ews-build.webkit.org/#/builders/138/builds/10345 "Built successfully") | [✅ 🛠 wpe](https://ews-build.webkit.org/#/builders/5/builds/105530 "Built successfully") | [✅ 🛠 win](https://ews-build.webkit.org/#/builders/59/builds/50982 "Built successfully") 
| [✅ 🧪 bindings](https://ews-build.webkit.org/#/builders/9/builds/102435 "Passed tests") | [✅ 🛠 ios-sim](https://ews-build.webkit.org/#/builders/130/builds/20352 "Built successfully") | [✅ 🛠 mac-AS-debug](https://ews-build.webkit.org/#/builders/123/builds/28520 "Built successfully") | [✅ 🧪 wpe-wk2](https://ews-build.webkit.org/#/builders/34/builds/76439 "Passed tests") | [✅ 🧪 win-tests](https://ews-build.webkit.org/#/builders/60/builds/33495 "Passed tests") 
| [✅ 🧪 webkitperl](https://ews-build.webkit.org/#/builders/11/builds/103401 "Passed tests") | [❌ 🧪 ios-wk2](https://ews-build.webkit.org/#/builders/132/builds/15587 "Found 1 new test failure: fast/forms/ios/file-upload-panel-dismiss-when-view-removed-from-window.html (failure)") | [✅ 🧪 api-mac](https://ews-build.webkit.org/#/builders/18/builds/90687 "Passed tests") | [✅ 🧪 api-wpe](https://ews-build.webkit.org/#/builders/41/builds/56794 "Passed tests") | 
| | [✅ 🧪 ios-wk2-wpt](https://ews-build.webkit.org/#/builders/133/builds/15405 "Passed tests") | [✅ 🧪 mac-wk1](https://ews-build.webkit.org/#/builders/135/builds/8688 "Passed tests") | [❌ 🛠 wpe-cairo](https://ews-build.webkit.org/#/builders/65/builds/50351 "Failed to compile WebKit") | 
| [![loading](https://user-images.githubusercontent.com/3098702/171232313-daa606f1-8fd6-4b0f-a20b-2cb93c43d19b.png) 🛠 🧪 jsc](https://ews-build.webkit.org/#/builders/20/builds/93056 "Build is in progress. Recent messages:") | [✅ 🧪 api-ios](https://ews-build.webkit.org/#/builders/13/builds/85319 "Passed tests") | [✅ 🧪 mac-wk2](https://ews-build.webkit.org/#/builders/136/builds/8769 "Passed tests") | [✅ 🛠 gtk](https://ews-build.webkit.org/#/builders/2/builds/107885 "Built successfully") | 
| | [✅ 🛠 vision](https://ews-build.webkit.org/#/builders/128/builds/27512 "Built successfully") | [✅ 🧪 mac-AS-debug-wk2](https://ews-build.webkit.org/#/builders/122/builds/20184 "Passed tests") | [✅ 🧪 gtk-wk2](https://ews-build.webkit.org/#/builders/1/builds/85393 "Passed tests") | 
| | [✅ 🛠 vision-sim](https://ews-build.webkit.org/#/builders/121/builds/27875 "Built successfully") | [✅ 🧪 mac-wk2-stress](https://ews-build.webkit.org/#/builders/8/builds/86887 "Passed tests") | [✅ 🧪 api-gtk](https://ews-build.webkit.org/#/builders/21/builds/84931 "Passed tests") | 
| [✅ 🛠 🧪 merge](https://ews-build.webkit.org/#/builders/19/builds/21596 "Built successfully and passed tests") | [✅ 🧪 vision-wk2](https://ews-build.webkit.org/#/builders/126/builds/29615 "Passed tests") | [✅ 🧪 mac-intel-wk2](https://ews-build.webkit.org/#/builders/137/builds/7346 "Passed tests") | [  ~~🛠 playstation~~](https://ews-build.webkit.org/#/builders/134/builds/21432 "The change is no longer eligible for processing.") | 
| | [✅ 🛠 tv](https://ews-build.webkit.org/#/builders/127/builds/27447 "Built successfully") | [✅ 🛠 mac-safer-cpp](https://ews-build.webkit.org/#/builders/120/builds/32688 "Built successfully") | | 
| | [✅ 🛠 tv-sim](https://ews-build.webkit.org/#/builders/125/builds/27258 "Built successfully") | | | 
| | [✅ 🛠 watch](https://ews-build.webkit.org/#/builders/129/builds/30576 "Built successfully") | | | 
| | [✅ 🛠 watch-sim](https://ews-build.webkit.org/#/builders/124/builds/28816 "Built successfully") | | | </details>
author_association: COLLABORATOR
user: login: webkit-commit-queue
created_at: 2025-04-22T07:07:46Z
body: Committed 293949@main (cfa4aa1a28ba): <https://commits.webkit.org/293949@main>

Reviewed commits have been landed. Closing PR #44319 and removing active labels.
author_association: COLLABORATOR