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

Reply via email to