Skip to content

Address Safer C++ static analysis warnings in WebKitLegacy/mac/WebView - #75636

Draft
cdumez wants to merge 1 commit into
WebKit:mainfrom
cdumez:326054_WebKitLegacy_safer_cpp
Draft

cdumez wants to merge 1 commit into
WebKit:mainfrom
cdumez:326054_WebKitLegacy_safer_cpp

Conversation

@cdumez

@cdumez cdumez commented Oct 2, 2026 •

Copy link
Copy Markdown
Contributor

358eab5

Address Safer C++ static analysis warnings in WebKitLegacy/mac/WebView
https://bugs.webkit.org/show_bug.cgi?id=326054

Reviewed by NOBODY (OOPS!).

Fix Safer C++ warnings in Source/WebKitLegacy/mac/WebView and update the
expectations accordingly. WebFeature and WebFormDelegate are renamed to
Objective-C++ so that they can use smart pointers.

* Source/WebKitLegacy/PlatformCocoa.cmake:
* Source/WebKitLegacy/WebKitLegacy.xcodeproj/project.pbxproj:
* Source/WebKitLegacy/mac/WebView/WebFeature.mm: Renamed from Source/WebKitLegacy/mac/WebView/WebFeature.m.
* Source/WebKitLegacy/mac/WebView/WebFormDelegate.mm: Renamed from Source/WebKitLegacy/mac/WebView/WebFormDelegate.m.
* Source/WebKitLegacy/mac/WebCoreSupport/WebChromeClient.h:
* Source/WebKitLegacy/mac/WebCoreSupport/WebContextMenuClient.h:
* Source/WebKitLegacy/mac/WebCoreSupport/WebFrameLoaderClient.h:
* Source/WebKitLegacy/mac/WebCoreSupport/WebNotificationClient.h:
Add type traits.
* Source/WebKitLegacy/mac/WebView/WebArchive.h:
* Source/WebKitLegacy/mac/WebView/WebArchive.mm:
* Source/WebKitLegacy/mac/WebView/WebFramePrivate.h:
* Source/WebKitLegacy/mac/WebView/WebPreferences.h:
* Source/WebKitLegacy/mac/WebView/WebPreferencesPrivate.h:
* Source/WebKitLegacy/mac/WebView/WebViewInternal.h:
* Source/WebKitLegacy/mac/WebView/WebViewPrivate.h:
Declare NSString globals as NSString * const.
* Source/WebKitLegacy/mac/WebView/WebDeviceOrientationProviderMock.h:
* Source/WebKitLegacy/mac/WebView/WebDeviceOrientationProviderMock.mm:
* Source/WebKitLegacy/mac/WebView/WebDeviceOrientationProviderMockInternal.h:
Make m_core const and initialize it with lazyInitialize().
* Source/WebKitLegacy/mac/WebView/WebFullScreenController.h:
* Source/WebKitLegacy/mac/WebView/WebFullScreenController.mm:
* Source/WebKitLegacy/mac/WebView/WebPDFView.h:
* Source/WebKitLegacy/mac/WebView/WebPDFView.mm:
* Source/WebKitLegacy/mac/WebView/WebTextCompletionController.h:
* Source/WebKitLegacy/mac/WebView/WebTextCompletionController.mm:
Use RetainPtr for owned instance variables and __weak for non-owning ones.
* Source/WebKitLegacy/mac/WebView/WebIndicateLayer.h:
* Source/WebKitLegacy/mac/WebView/WebIndicateLayer.mm:
* Source/WebKitLegacy/mac/WebView/WebWindowAnimation.h:
Use __weak for non-owning instance variables.
* Source/WebKitLegacy/mac/WebView/WebVideoFullscreenController.h:
* Source/WebKitLegacy/mac/WebView/WebVideoFullscreenController.mm:
Remove unused instance variables, suppress a MemoryUnsafeCast warning for
WebAVPlayerController, which mimics AVPlayerController without subclassing it,
and use protect() at call sites.
* Source/WebKitLegacy/mac/WebView/WebHTMLView.mm:
(-[WebHTMLView attachRootLayer:]): Read layerHostingView after creating it.
Also use protect(), smart pointer locals and checked Objective-C casts.
* Source/WebKitLegacy/mac/WebView/WebDataSource.mm:
* Source/WebKitLegacy/mac/WebView/WebDelegateImplementationCaching.mm:
* Source/WebKitLegacy/mac/WebView/WebDynamicScrollBarsView.mm:
* Source/WebKitLegacy/mac/WebView/WebFrame.mm:
* Source/WebKitLegacy/mac/WebView/WebFrameView.mm:
* Source/WebKitLegacy/mac/WebView/WebHTMLRepresentation.mm:
* Source/WebKitLegacy/mac/WebView/WebImmediateActionController.mm:
* Source/WebKitLegacy/mac/WebView/WebMediaPlaybackTargetPicker.mm:
* Source/WebKitLegacy/mac/WebView/WebPreferences.mm:
* Source/WebKitLegacy/mac/WebView/WebScriptDebugger.mm:
* Source/WebKitLegacy/mac/WebView/WebView.mm:
Use protect(), smart pointer locals, downcast<> and checked Objective-C casts.
* Source/WebKitLegacy/SaferCPPExpectations/ForwardDeclCheckerExpectations:
* Source/WebKitLegacy/SaferCPPExpectations/MemoryUnsafeCastCheckerExpectations:
* Source/WebKitLegacy/SaferCPPExpectations/NoUncountedMemberCheckerExpectations:
* Source/WebKitLegacy/SaferCPPExpectations/NoUnretainedMemberCheckerExpectations:
* Source/WebKitLegacy/SaferCPPExpectations/RetainPtrCtorAdoptCheckerExpectations:
* Source/WebKitLegacy/SaferCPPExpectations/UncheckedCallArgsCheckerExpectations:
* Source/WebKitLegacy/SaferCPPExpectations/UncheckedLocalVarsCheckerExpectations:
* Source/WebKitLegacy/SaferCPPExpectations/UncountedCallArgsCheckerExpectations:
* Source/WebKitLegacy/SaferCPPExpectations/UncountedLocalVarsCheckerExpectations:
* Source/WebKitLegacy/SaferCPPExpectations/UnretainedCallArgsCheckerExpectations:
* Source/WebKitLegacy/SaferCPPExpectations/UnretainedLambdaCapturesCheckerExpectations:
* Source/WebKitLegacy/SaferCPPExpectations/UnretainedLocalVarsCheckerExpectations:

358eab5

Misc iOS, visionOS, tvOS & watchOS macOS Linux Windows Apple Internal
❌ 🧪 style ✅ 🛠 ios ✅ 🛠 mac ✅ 🛠 wpe ⏳ 🛠 win ⏳ 🛠 ios-apple
✅ 🧪 bindings ✅ 🛠 ios-sim ✅ 🛠 mac-AS-debug ✅ 🧪 wpe-wk2 ⏳ 🧪 win-tests ⏳ 🛠 mac-apple
✅ 🧪 webkitperl ⏳ 🧪 ios-wk2 ⏳ 🧪 api-mac ⏳ 🧪 api-wpe ⏳ 🛠 vision-apple
✅ 🧪 ios-wk2-wpt ⏳ 🧪 api-mac-debug
⏳ 🧪 api-ios ✅ 🧪 mac-wk2 ✅ 🛠 gtk3-gcc
⏳ 🛠 ios-safer-cpp ⏳ 🧪 mac-AS-debug-wk2 ✅ 🛠 gtk
✅ 🛠 vision ⏳ 🧪 gtk-wk2
✅ 🛠 vision-sim ⏳ 🧪 mac-intel-wk2 ✅ 🧪 api-gtk
✅ 🧪 vision-wk2 ⏳ 🛠 mac-safer-cpp ✅ 🛠 playstation
✅ 🛠 tv ✅ 🧪 mac-site-isolation
✅ 🛠 tv-sim
✅ 🛠 watch
✅ 🛠 watch-sim

@cdumez cdumez self-assigned this Oct 2, 2026
@cdumez cdumez added the WebKit Misc. For miscellaneous bugs in the WebKit framework (and not JavaScriptCore or WebCore). label Oct 2, 2026
@webkit-ews-buildbot webkit-ews-buildbot added the merging-blocked Applied to prevent a change from being merged label Oct 2, 2026
https://bugs.webkit.org/show_bug.cgi?id=326054

Reviewed by NOBODY (OOPS!).

Fix Safer C++ warnings in Source/WebKitLegacy/mac/WebView and update the
expectations accordingly. WebFeature and WebFormDelegate are renamed to
Objective-C++ so that they can use smart pointers.

* Source/WebKitLegacy/PlatformCocoa.cmake:
* Source/WebKitLegacy/WebKitLegacy.xcodeproj/project.pbxproj:
* Source/WebKitLegacy/mac/WebView/WebFeature.mm: Renamed from Source/WebKitLegacy/mac/WebView/WebFeature.m.
* Source/WebKitLegacy/mac/WebView/WebFormDelegate.mm: Renamed from Source/WebKitLegacy/mac/WebView/WebFormDelegate.m.
* Source/WebKitLegacy/mac/WebCoreSupport/WebChromeClient.h:
* Source/WebKitLegacy/mac/WebCoreSupport/WebContextMenuClient.h:
* Source/WebKitLegacy/mac/WebCoreSupport/WebFrameLoaderClient.h:
* Source/WebKitLegacy/mac/WebCoreSupport/WebNotificationClient.h:
Add type traits.
* Source/WebKitLegacy/mac/WebView/WebArchive.h:
* Source/WebKitLegacy/mac/WebView/WebArchive.mm:
* Source/WebKitLegacy/mac/WebView/WebFramePrivate.h:
* Source/WebKitLegacy/mac/WebView/WebPreferences.h:
* Source/WebKitLegacy/mac/WebView/WebPreferencesPrivate.h:
* Source/WebKitLegacy/mac/WebView/WebViewInternal.h:
* Source/WebKitLegacy/mac/WebView/WebViewPrivate.h:
Declare NSString globals as NSString * const.
* Source/WebKitLegacy/mac/WebView/WebDeviceOrientationProviderMock.h:
* Source/WebKitLegacy/mac/WebView/WebDeviceOrientationProviderMock.mm:
* Source/WebKitLegacy/mac/WebView/WebDeviceOrientationProviderMockInternal.h:
Make m_core const and initialize it with lazyInitialize().
* Source/WebKitLegacy/mac/WebView/WebFullScreenController.h:
* Source/WebKitLegacy/mac/WebView/WebFullScreenController.mm:
* Source/WebKitLegacy/mac/WebView/WebPDFView.h:
* Source/WebKitLegacy/mac/WebView/WebPDFView.mm:
* Source/WebKitLegacy/mac/WebView/WebTextCompletionController.h:
* Source/WebKitLegacy/mac/WebView/WebTextCompletionController.mm:
Use RetainPtr for owned instance variables and __weak for non-owning ones.
* Source/WebKitLegacy/mac/WebView/WebIndicateLayer.h:
* Source/WebKitLegacy/mac/WebView/WebIndicateLayer.mm:
* Source/WebKitLegacy/mac/WebView/WebWindowAnimation.h:
Use __weak for non-owning instance variables.
* Source/WebKitLegacy/mac/WebView/WebVideoFullscreenController.h:
* Source/WebKitLegacy/mac/WebView/WebVideoFullscreenController.mm:
Remove unused instance variables, suppress a MemoryUnsafeCast warning for
WebAVPlayerController, which mimics AVPlayerController without subclassing it,
and use protect() at call sites.
* Source/WebKitLegacy/mac/WebView/WebHTMLView.mm:
(-[WebHTMLView attachRootLayer:]): Read layerHostingView after creating it.
Also use protect(), smart pointer locals and checked Objective-C casts.
* Source/WebKitLegacy/mac/WebView/WebDataSource.mm:
* Source/WebKitLegacy/mac/WebView/WebDelegateImplementationCaching.mm:
* Source/WebKitLegacy/mac/WebView/WebDynamicScrollBarsView.mm:
* Source/WebKitLegacy/mac/WebView/WebFrame.mm:
* Source/WebKitLegacy/mac/WebView/WebFrameView.mm:
* Source/WebKitLegacy/mac/WebView/WebHTMLRepresentation.mm:
* Source/WebKitLegacy/mac/WebView/WebImmediateActionController.mm:
* Source/WebKitLegacy/mac/WebView/WebMediaPlaybackTargetPicker.mm:
* Source/WebKitLegacy/mac/WebView/WebPreferences.mm:
* Source/WebKitLegacy/mac/WebView/WebScriptDebugger.mm:
* Source/WebKitLegacy/mac/WebView/WebView.mm:
Use protect(), smart pointer locals, downcast<> and checked Objective-C casts.
* Source/WebKitLegacy/SaferCPPExpectations/ForwardDeclCheckerExpectations:
* Source/WebKitLegacy/SaferCPPExpectations/MemoryUnsafeCastCheckerExpectations:
* Source/WebKitLegacy/SaferCPPExpectations/NoUncountedMemberCheckerExpectations:
* Source/WebKitLegacy/SaferCPPExpectations/NoUnretainedMemberCheckerExpectations:
* Source/WebKitLegacy/SaferCPPExpectations/RetainPtrCtorAdoptCheckerExpectations:
* Source/WebKitLegacy/SaferCPPExpectations/UncheckedCallArgsCheckerExpectations:
* Source/WebKitLegacy/SaferCPPExpectations/UncheckedLocalVarsCheckerExpectations:
* Source/WebKitLegacy/SaferCPPExpectations/UncountedCallArgsCheckerExpectations:
* Source/WebKitLegacy/SaferCPPExpectations/UncountedLocalVarsCheckerExpectations:
* Source/WebKitLegacy/SaferCPPExpectations/UnretainedCallArgsCheckerExpectations:
* Source/WebKitLegacy/SaferCPPExpectations/UnretainedLambdaCapturesCheckerExpectations:
* Source/WebKitLegacy/SaferCPPExpectations/UnretainedLocalVarsCheckerExpectations:
@cdumez cdumez removed the merging-blocked Applied to prevent a change from being merged label Oct 2, 2026
@cdumez
cdumez force-pushed the 326054_WebKitLegacy_safer_cpp branch from 858570e to 358eab5 Compare October 2, 2026 09:31
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

WebKit Misc. For miscellaneous bugs in the WebKit framework (and not JavaScriptCore or WebCore).

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants