Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 6448e98fedb78008de003391bf0a71922a39ba04
https://github.com/WebKit/WebKit/commit/6448e98fedb78008de003391bf0a71922a39ba04
Author: Chris Dumez <[email protected]>
Date: 2026-09-29 (Tue, 29 Sep 2026)
Changed paths:
M Source/JavaScriptCore/API/glib/JSCClass.cpp
M Source/JavaScriptCore/inspector/remote/glib/RemoteInspectorGlib.cpp
M Source/JavaScriptCore/inspector/remote/glib/RemoteInspectorServer.cpp
M Source/WTF/wtf/PlatformGTK.cmake
M Source/WTF/wtf/PlatformJSCOnly.cmake
M Source/WTF/wtf/PlatformWPE.cmake
M Source/WTF/wtf/glib/FilePathWatcher.cpp
A Source/WTF/wtf/glib/GLibExtras.h
M Source/WTF/wtf/glib/GMallocString.h
M Source/WebCore/PAL/pal/system/glib/SleepDisablerGLib.cpp
M Source/WebCore/accessibility/atspi/AccessibilityAtspi.cpp
M Source/WebCore/accessibility/atspi/AccessibilityObjectActionAtspi.cpp
M Source/WebCore/accessibility/atspi/AccessibilityObjectAtspi.cpp
M Source/WebCore/accessibility/atspi/AccessibilityObjectDocumentAtspi.cpp
M Source/WebCore/accessibility/atspi/AccessibilityObjectHyperlinkAtspi.cpp
M Source/WebCore/accessibility/atspi/AccessibilityObjectImageAtspi.cpp
M Source/WebCore/accessibility/atspi/AccessibilityObjectTableAtspi.cpp
M Source/WebCore/accessibility/atspi/AccessibilityObjectTextAtspi.cpp
M Source/WebCore/accessibility/atspi/AccessibilityRootAtspi.cpp
M Source/WebCore/loader/soup/ResourceLoaderSoup.cpp
M Source/WebCore/platform/audio/glib/MediaSessionGLib.cpp
M Source/WebCore/platform/glib/FileMonitorGLib.cpp
M Source/WebCore/platform/glib/KeyedEncoderGlib.cpp
M Source/WebCore/platform/graphics/gstreamer/GStreamerCommon.cpp
M Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp
M Source/WebCore/platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp
M
Source/WebCore/platform/graphics/gstreamer/mse/WebKitMediaSourceGStreamer.cpp
M Source/WebCore/platform/mediastream/gstreamer/DesktopPortal.cpp
M
Source/WebCore/platform/mediastream/gstreamer/GStreamerMediaStreamSource.cpp
M Source/WebCore/platform/network/soup/SoupNetworkSession.cpp
M Source/WebCore/platform/network/soup/WebKitAutoconfigProxyResolver.cpp
M Source/WebCore/platform/network/soup/WebKitFormDataInputStream.cpp
M Source/WebDriver/glib/SessionHostGlib.cpp
M Source/WebKit/NetworkProcess/cache/NetworkCache.cpp
M Source/WebKit/NetworkProcess/cache/NetworkCacheFileSystem.cpp
M Source/WebKit/NetworkProcess/cache/NetworkCacheIOChannelGLib.cpp
M Source/WebKit/NetworkProcess/soup/NetworkDataTaskSoup.cpp
M Source/WebKit/NetworkProcess/soup/NetworkStorageSessionSoup.cpp
M Source/WebKit/NetworkProcess/soup/WebKitDirectoryInputStream.cpp
M Source/WebKit/NetworkProcess/soup/WebSocketTaskSoup.cpp
M Source/WebKit/UIProcess/API/glib/WebKitAutomationSession.cpp
M Source/WebKit/UIProcess/API/glib/WebKitDownload.cpp
M Source/WebKit/UIProcess/API/glib/WebKitError.cpp
M Source/WebKit/UIProcess/API/glib/WebKitFaviconDatabase.cpp
M Source/WebKit/UIProcess/API/glib/WebKitFileChooserRequest.cpp
M Source/WebKit/UIProcess/API/glib/WebKitFormSubmissionRequest.cpp
M Source/WebKit/UIProcess/API/glib/WebKitNavigationClient.cpp
M Source/WebKit/UIProcess/API/glib/WebKitProtocolHandler.cpp
M Source/WebKit/UIProcess/API/glib/WebKitSecurityOrigin.cpp
M Source/WebKit/UIProcess/API/glib/WebKitURIUtilities.cpp
M Source/WebKit/UIProcess/API/glib/WebKitWebContext.cpp
M Source/WebKit/UIProcess/API/glib/WebKitWebExtension.cpp
M Source/WebKit/UIProcess/API/glib/WebKitWebResource.cpp
M Source/WebKit/UIProcess/API/glib/WebKitWebView.cpp
M Source/WebKit/UIProcess/API/glib/WebKitWebViewSessionState.cpp
M Source/WebKit/UIProcess/API/glib/WebKitWebsiteDataManager.cpp
M Source/WebKit/UIProcess/API/gtk/WebKitPrintOperation.cpp
M Source/WebKit/UIProcess/API/gtk/WebKitWebViewBase.cpp
M Source/WebKit/UIProcess/Inspector/glib/RemoteInspectorClient.cpp
M Source/WebKit/UIProcess/Launcher/glib/BubblewrapLauncher.cpp
M Source/WebKit/UIProcess/Notifications/glib/NotificationService.cpp
M Source/WebKit/UIProcess/geoclue/GeoclueGeolocationProvider.cpp
M Source/WebKit/WPEPlatform/wpe/WPECursorTheme.cpp
M Source/WebKit/WPEPlatform/wpe/WPESettings.cpp
M Source/WebKit/WebProcess/InjectedBundle/API/glib/WebKitWebPage.cpp
M
Source/WebKit/WebProcess/InjectedBundle/API/gtk/DOM/ConvertToUTF8String.cpp
M Tools/Scripts/webkitpy/style/checkers/cpp.py
M Tools/Scripts/webkitpy/style/checkers/cpp_unittest.py
M Tools/TestWebKitAPI/Tests/JavaScriptCore/glib/TestJSC.cpp
M Tools/TestWebKitAPI/Tests/WebKit/WKPage/glib/TestWebProcessExtensions.cpp
M Tools/TestWebKitAPI/Tests/WebKit/WKWebView/glib/TestAutomationSession.cpp
M Tools/TestWebKitAPI/Tests/WebKit/WKWebView/glib/TestBackForwardList.cpp
M Tools/TestWebKitAPI/Tests/WebKit/WKWebView/glib/TestDownloads.cpp
M Tools/TestWebKitAPI/Tests/WebKit/WKWebView/glib/TestLoaderClient.cpp
M Tools/TestWebKitAPI/Tests/WebKit/WKWebView/glib/TestResources.cpp
M Tools/TestWebKitAPI/Tests/WebKit/WKWebView/glib/TestSSL.cpp
M
Tools/TestWebKitAPI/Tests/WebKit/WKWebView/glib/TestWebKitFaviconDatabase.cpp
M Tools/TestWebKitAPI/Tests/WebKit/WKWebView/glib/TestWebKitPolicyClient.cpp
M Tools/TestWebKitAPI/Tests/WebKit/WKWebView/glib/TestWebKitWebView.cpp
M Tools/TestWebKitAPI/Tests/WebKit/WKWebView/gtk/TestContextMenu.cpp
M Tools/TestWebKitAPI/Tests/WebKit/WKWebView/gtk/TestWebViewEditor.cpp
M Tools/TestWebKitAPI/glib/WebKitGLib/WebKitTestServer.cpp
M Tools/WebKitTestRunner/InjectedBundle/glib/ActivateFontsGlib.cpp
M Tools/WebKitTestRunner/InjectedBundle/gtk/TestRunnerGtk.cpp
Log Message:
-----------
Add C++ wrappers for GLib functions that take UTF-8 strings
https://bugs.webkit.org/show_bug.cgi?id=325576
Reviewed by Claudio Saavedra.
GLib code unwrapped UTF8CStrings with legacyCStringPointer() at hundreds of
call sites, mostly
to pass them to a handful of GLib functions. Add wtf/glib/GLibExtras.h with
wrappers that take
typed strings: gStrdup(), gQuarkFromString(), gValueSetString(),
gVariantNewString() and
gFileNewForPath() take a UTF8CStringView, and gFileNewForPath() returns an
adopted GRefPtr.
The variadic gVariantNew(), gVariantBuilderAdd(), gSignalEmit() and
gBuildFilename() convert
each argument with glibVariadicType(): UTF8CString, UTF8CStringView,
GMallocString, ASCIICString
and ASCIILiteral become a const char*, and scalars, including a const char*
from another C
interface, pass through. Anything else, such as a String or a Latin1CString, is
a compile error
instead of undefined behavior in a C variadic call. gBuildFilename() also
supplies the terminating
nullptr and returns a GMallocString.
GMallocString now converts implicitly to UTF8CStringView, so it can be passed
to the non-variadic
wrappers too.
Use the wrappers at the call sites in Source/ and Tools/, removing about 200
calls to
legacyCStringPointer().
Add a runtime/glib_string_wrappers style check that flags calls to the wrapped
GLib functions
that pass legacyCStringPointer() directly as an argument, and suggests the
wrapper instead.
* Source/JavaScriptCore/API/glib/JSCClass.cpp:
* Source/JavaScriptCore/inspector/remote/glib/RemoteInspectorGlib.cpp:
* Source/JavaScriptCore/inspector/remote/glib/RemoteInspectorServer.cpp:
* Source/WTF/wtf/PlatformGTK.cmake:
* Source/WTF/wtf/PlatformJSCOnly.cmake:
* Source/WTF/wtf/PlatformWPE.cmake:
* Source/WTF/wtf/glib/FilePathWatcher.cpp:
* Source/WTF/wtf/glib/GLibExtras.h: Added.
* Source/WTF/wtf/glib/GMallocString.h:
* Source/WebCore/PAL/pal/system/glib/SleepDisablerGLib.cpp:
* Source/WebCore/accessibility/atspi/AccessibilityAtspi.cpp:
* Source/WebCore/accessibility/atspi/AccessibilityObjectActionAtspi.cpp:
* Source/WebCore/accessibility/atspi/AccessibilityObjectAtspi.cpp:
* Source/WebCore/accessibility/atspi/AccessibilityObjectDocumentAtspi.cpp:
* Source/WebCore/accessibility/atspi/AccessibilityObjectHyperlinkAtspi.cpp:
* Source/WebCore/accessibility/atspi/AccessibilityObjectImageAtspi.cpp:
* Source/WebCore/accessibility/atspi/AccessibilityObjectTableAtspi.cpp:
* Source/WebCore/accessibility/atspi/AccessibilityObjectTextAtspi.cpp:
* Source/WebCore/accessibility/atspi/AccessibilityRootAtspi.cpp:
* Source/WebCore/loader/soup/ResourceLoaderSoup.cpp:
* Source/WebCore/platform/audio/glib/MediaSessionGLib.cpp:
* Source/WebCore/platform/glib/FileMonitorGLib.cpp:
* Source/WebCore/platform/glib/KeyedEncoderGlib.cpp:
* Source/WebCore/platform/graphics/gstreamer/GStreamerCommon.cpp:
* Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:
* Source/WebCore/platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp:
* Source/WebCore/platform/graphics/gstreamer/mse/WebKitMediaSourceGStreamer.cpp:
* Source/WebCore/platform/mediastream/gstreamer/DesktopPortal.cpp:
* Source/WebCore/platform/mediastream/gstreamer/GStreamerMediaStreamSource.cpp:
* Source/WebCore/platform/network/soup/SoupNetworkSession.cpp:
* Source/WebCore/platform/network/soup/WebKitAutoconfigProxyResolver.cpp:
* Source/WebCore/platform/network/soup/WebKitFormDataInputStream.cpp:
* Source/WebDriver/glib/SessionHostGlib.cpp:
* Source/WebKit/NetworkProcess/cache/NetworkCache.cpp:
* Source/WebKit/NetworkProcess/cache/NetworkCacheFileSystem.cpp:
* Source/WebKit/NetworkProcess/cache/NetworkCacheIOChannelGLib.cpp:
* Source/WebKit/NetworkProcess/soup/NetworkDataTaskSoup.cpp:
* Source/WebKit/NetworkProcess/soup/NetworkStorageSessionSoup.cpp:
* Source/WebKit/NetworkProcess/soup/WebKitDirectoryInputStream.cpp:
* Source/WebKit/NetworkProcess/soup/WebSocketTaskSoup.cpp:
* Source/WebKit/UIProcess/API/glib/WebKitAutomationSession.cpp:
* Source/WebKit/UIProcess/API/glib/WebKitDownload.cpp:
* Source/WebKit/UIProcess/API/glib/WebKitError.cpp:
* Source/WebKit/UIProcess/API/glib/WebKitFaviconDatabase.cpp:
* Source/WebKit/UIProcess/API/glib/WebKitFileChooserRequest.cpp:
* Source/WebKit/UIProcess/API/glib/WebKitFormSubmissionRequest.cpp:
* Source/WebKit/UIProcess/API/glib/WebKitNavigationClient.cpp:
* Source/WebKit/UIProcess/API/glib/WebKitProtocolHandler.cpp:
* Source/WebKit/UIProcess/API/glib/WebKitSecurityOrigin.cpp:
* Source/WebKit/UIProcess/API/glib/WebKitURIUtilities.cpp:
* Source/WebKit/UIProcess/API/glib/WebKitWebContext.cpp:
* Source/WebKit/UIProcess/API/glib/WebKitWebExtension.cpp:
* Source/WebKit/UIProcess/API/glib/WebKitWebResource.cpp:
* Source/WebKit/UIProcess/API/glib/WebKitWebView.cpp:
* Source/WebKit/UIProcess/API/glib/WebKitWebViewSessionState.cpp:
* Source/WebKit/UIProcess/API/glib/WebKitWebsiteDataManager.cpp:
* Source/WebKit/UIProcess/API/gtk/WebKitPrintOperation.cpp:
* Source/WebKit/UIProcess/API/gtk/WebKitWebViewBase.cpp:
* Source/WebKit/UIProcess/Inspector/glib/RemoteInspectorClient.cpp:
* Source/WebKit/UIProcess/Launcher/glib/BubblewrapLauncher.cpp:
* Source/WebKit/UIProcess/Notifications/glib/NotificationService.cpp:
* Source/WebKit/UIProcess/geoclue/GeoclueGeolocationProvider.cpp:
* Source/WebKit/WPEPlatform/wpe/WPECursorTheme.cpp:
* Source/WebKit/WPEPlatform/wpe/WPESettings.cpp:
* Source/WebKit/WebProcess/InjectedBundle/API/glib/WebKitWebPage.cpp:
* Source/WebKit/WebProcess/InjectedBundle/API/gtk/DOM/ConvertToUTF8String.cpp:
* Tools/Scripts/webkitpy/style/checkers/cpp.py:
(_enclosing_function_call):
(check_glib_string_wrappers):
(check_style):
* Tools/Scripts/webkitpy/style/checkers/cpp_unittest.py:
(WebKitStyleTest.test_glib_string_wrappers):
* Tools/TestWebKitAPI/Tests/JavaScriptCore/glib/TestJSC.cpp:
* Tools/TestWebKitAPI/Tests/WebKit/WKPage/glib/TestWebProcessExtensions.cpp:
* Tools/TestWebKitAPI/Tests/WebKit/WKWebView/glib/TestAutomationSession.cpp:
* Tools/TestWebKitAPI/Tests/WebKit/WKWebView/glib/TestBackForwardList.cpp:
* Tools/TestWebKitAPI/Tests/WebKit/WKWebView/glib/TestDownloads.cpp:
* Tools/TestWebKitAPI/Tests/WebKit/WKWebView/glib/TestLoaderClient.cpp:
* Tools/TestWebKitAPI/Tests/WebKit/WKWebView/glib/TestResources.cpp:
* Tools/TestWebKitAPI/Tests/WebKit/WKWebView/glib/TestSSL.cpp:
* Tools/TestWebKitAPI/Tests/WebKit/WKWebView/glib/TestWebKitFaviconDatabase.cpp:
* Tools/TestWebKitAPI/Tests/WebKit/WKWebView/glib/TestWebKitPolicyClient.cpp:
* Tools/TestWebKitAPI/Tests/WebKit/WKWebView/glib/TestWebKitWebView.cpp:
* Tools/TestWebKitAPI/Tests/WebKit/WKWebView/gtk/TestContextMenu.cpp:
* Tools/TestWebKitAPI/Tests/WebKit/WKWebView/gtk/TestWebViewEditor.cpp:
* Tools/TestWebKitAPI/glib/WebKitGLib/WebKitTestServer.cpp:
* Tools/WebKitTestRunner/InjectedBundle/glib/ActivateFontsGlib.cpp:
* Tools/WebKitTestRunner/InjectedBundle/gtk/TestRunnerGtk.cpp:
Canonical link: https://commits.webkit.org/322216@main
To unsubscribe from these emails, change your notification settings at
https://github.com/WebKit/WebKit/settings/notifications