Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: b46c2cfc57bf2b603fccc05c6722f797c7aee080
      
https://github.com/WebKit/WebKit/commit/b46c2cfc57bf2b603fccc05c6722f797c7aee080
  Author: Chris Dumez <[email protected]>
  Date:   2026-09-30 (Wed, 30 Sep 2026)

  Changed paths:
    M Source/JavaScriptCore/inspector/remote/glib/RemoteInspectorGlib.cpp
    M Source/WTF/wtf/glib/FileSystemGlib.cpp
    M Source/WTF/wtf/glib/GLibExtras.h
    M Source/WebDriver/soup/HTTPServerSoup.cpp
    M Source/WebDriver/soup/WebSocketServerSoup.cpp
    M Source/WebKit/NetworkProcess/soup/WebKitDirectoryInputStream.cpp
    M Source/WebKit/UIProcess/API/glib/WebKitFaviconDatabase.cpp
    M Source/WebKit/UIProcess/API/glib/WebKitWebExtension.cpp
    M Source/WebKit/UIProcess/API/glib/WebKitWebExtensionContext.cpp
    M Source/WebKit/UIProcess/API/glib/WebKitWebExtensionMatchPattern.cpp
    M Source/WebKit/UIProcess/API/glib/WebKitWebView.cpp
    M Source/WebKit/UIProcess/API/gtk/WebKitAuthenticationDialog.cpp
    M Source/WebKit/UIProcess/API/gtk/WebKitPrintOperation.cpp
    M Source/WebKit/WPEPlatform/wpe/WPESettings.cpp
    M Source/WebKit/WPEPlatform/wpe/drm/WPEViewDRM.cpp
    M Source/WebKit/WebProcess/InjectedBundle/API/glib/WebKitWebExtension.cpp
    M Source/WebKit/WebProcess/InjectedBundle/API/glib/WebKitWebPage.cpp
    M 
Source/WebKit/WebProcess/InjectedBundle/API/glib/WebKitWebProcessExtension.cpp
    M Source/WebKit/WebProcess/InjectedBundle/glib/InjectedBundleGlib.cpp
    M Tools/Scripts/webkitpy/style/checkers/cpp.py
    M Tools/Scripts/webkitpy/style/checkers/cpp_unittest.py
    M Tools/TestWebKitAPI/Tests/WebKit/WKWebView/glib/TestDownloads.cpp
    M 
Tools/TestWebKitAPI/Tests/WebKit/WKWebView/glib/TestNetworkProcessMemoryPressure.cpp
    M Tools/TestWebKitAPI/Tests/WebKit/WKWebView/glib/TestSSL.cpp
    M 
Tools/TestWebKitAPI/Tests/WebKit/WKWebView/glib/TestWebKitNetworkSession.cpp
    M Tools/TestWebKitAPI/Tests/WebKit/WKWebView/glib/TestWebKitSettings.cpp
    M Tools/TestWebKitAPI/Tests/WebKit/WKWebView/glib/TestWebKitWebContext.cpp
    M Tools/TestWebKitAPI/Tests/WebKit/WKWebView/glib/TestWebsiteData.cpp
    M Tools/TestWebKitAPI/Tests/WebKit/WKWebView/gtk/TestContextMenu.cpp
    M Tools/TestWebKitAPI/Tests/WebKit/WKWebView/gtk/TestWebKitAccessibility.cpp

  Log Message:
  -----------
  Add SAFE_G_* macros for printf-style GLib functions that take UTF-8 strings
https://bugs.webkit.org/show_bug.cgi?id=325742

Reviewed by Claudio Saavedra.

GLib code still unwrapped UTF8CStrings with legacyCStringPointer() to pass them 
to printf-style
GLib functions. Add SAFE_G_STRDUP_PRINTF(), SAFE_G_SET_ERROR(), 
SAFE_G_TASK_RETURN_NEW_ERROR(),
SAFE_G_WARNING() and SAFE_G_ERROR_NEW() to wtf/glib/GLibExtras.h. They are 
macros rather than
templates so that the GLib function is still called directly and its format 
string is still
checked against its arguments. Each argument after the format is converted with
glibVariadicType(), so typed strings can be passed as they are, a const char* 
from another C
interface passes through, and a String or a Latin1CString is a compile error. 
The format itself is
not converted, so that literal formats keep being checked.

Use the macros at the call sites in Source/ and Tools/, removing about 40 calls 
to
legacyCStringPointer().

WebKitWebExtension.cpp and WebKitWebExtensionMatchPattern.cpp passed an error's 
localized
description to g_set_error() as the format string, so a '%' in it would have 
made GLib read
arguments that were never passed. Pass it as a "%s" argument instead.

Extend the runtime/glib_string_wrappers style check to suggest the macros, 
except when
legacyCStringPointer() is the format argument, which the macros do not convert.

* Source/JavaScriptCore/inspector/remote/glib/RemoteInspectorGlib.cpp:
(Inspector::RemoteInspector::start):
* Source/WTF/wtf/glib/FileSystemGlib.cpp:
(WTF::FileSystemImpl::createTemporaryDirectory):
* Source/WTF/wtf/glib/GLibExtras.h:
* Source/WebDriver/soup/HTTPServerSoup.cpp:
(WebDriver::soupServerListen):
* Source/WebDriver/soup/WebSocketServerSoup.cpp:
(WebDriver::soupServerListen):
* Source/WebKit/NetworkProcess/soup/WebKitDirectoryInputStream.cpp:
(webkitDirectoryInputStreamCreateHeader):
* Source/WebKit/UIProcess/API/glib/WebKitFaviconDatabase.cpp:
(webkitFaviconDatabaseGetFaviconInternal):
* Source/WebKit/UIProcess/API/glib/WebKitWebExtension.cpp:
(webkitWebExtensionInitableInit):
(webkitWebExtensionCreate):
* Source/WebKit/UIProcess/API/glib/WebKitWebExtensionContext.cpp:
(webkit_web_extension_context_load_background_content):
* Source/WebKit/UIProcess/API/glib/WebKitWebExtensionMatchPattern.cpp:
(webkit_web_extension_match_pattern_new_with_string):
(webkit_web_extension_match_pattern_new_with_scheme):
* Source/WebKit/UIProcess/API/glib/WebKitWebView.cpp:
(webkitWebViewRunJavaScriptWithParams):
* Source/WebKit/UIProcess/API/gtk/WebKitAuthenticationDialog.cpp:
(webkitAuthenticationDialogInitialize):
* Source/WebKit/UIProcess/API/gtk/WebKitPrintOperation.cpp:
(webkitPrintOperationSendPagesToPrintPortal):
* Source/WebKit/WPEPlatform/wpe/WPESettings.cpp:
(wpe_settings_load_from_keyfile):
* Source/WebKit/WPEPlatform/wpe/drm/WPEViewDRM.cpp:
(wpeViewDRMCommitAtomic):
(buildDamageBlob):
* Source/WebKit/WebProcess/InjectedBundle/API/glib/WebKitWebExtension.cpp:
(webkit_web_extension_send_message_to_context):
* Source/WebKit/WebProcess/InjectedBundle/API/glib/WebKitWebPage.cpp:
(webkit_web_page_send_message_to_view):
* 
Source/WebKit/WebProcess/InjectedBundle/API/glib/WebKitWebProcessExtension.cpp:
(webkit_web_process_extension_send_message_to_context):
* Source/WebKit/WebProcess/InjectedBundle/glib/InjectedBundleGlib.cpp:
(WebKit::InjectedBundle::initialize):
* Tools/Scripts/webkitpy/style/checkers/cpp.py:
(_enclosing_function_call):
(_enclosing_function_call_and_argument_index):
(check_glib_string_wrappers):
* Tools/Scripts/webkitpy/style/checkers/cpp_unittest.py:
(WebKitStyleTest.test_glib_string_wrappers):
* Tools/TestWebKitAPI/Tests/WebKit/WKWebView/glib/TestDownloads.cpp:
(testContextMenuDownloadActions):
* 
Tools/TestWebKitAPI/Tests/WebKit/WKWebView/glib/TestNetworkProcessMemoryPressure.cpp:
(testMemoryPressureSettings):
* Tools/TestWebKitAPI/Tests/WebKit/WKWebView/glib/TestSSL.cpp:
(WebSocketTest::connectToServerAndWaitForEvents):
(httpsServerCallback):
(httpServerCallback):
* Tools/TestWebKitAPI/Tests/WebKit/WKWebView/glib/TestWebKitNetworkSession.cpp:
(ProxyTest::createWebSocketAndWaitUntilConnected):
* Tools/TestWebKitAPI/Tests/WebKit/WKWebView/glib/TestWebKitSettings.cpp:
(testWebKitSettingsUserAgent):
* Tools/TestWebKitAPI/Tests/WebKit/WKWebView/glib/TestWebKitWebContext.cpp:
(testWebContextSecurityFileXHR):
(ProxyTest::createWebSocketAndWaitUntilConnected):
* Tools/TestWebKitAPI/Tests/WebKit/WKWebView/glib/TestWebsiteData.cpp:
(testWebsiteDataCache):
* Tools/TestWebKitAPI/Tests/WebKit/WKWebView/gtk/TestContextMenu.cpp:
(prepareContextMenuTestView):
* Tools/TestWebKitAPI/Tests/WebKit/WKWebView/gtk/TestWebKitAccessibility.cpp:
(testAccessibleListMarkers):
(testComponentHitTest):
(testComponentScrollTo):
(testImageBasic):

Canonical link: https://commits.webkit.org/322352@main



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications

Reply via email to