Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: bdea79f67f1c97c0a88cfe1d97634e253a3544bc
      
https://github.com/WebKit/WebKit/commit/bdea79f67f1c97c0a88cfe1d97634e253a3544bc
  Author: Chris Dumez <[email protected]>
  Date:   2026-10-01 (Thu, 01 Oct 2026)

  Changed paths:
    M Source/WTF/wtf/glib/GLibExtras.h
    M Source/WTF/wtf/text/StringView.h
    M Source/WebCore/accessibility/atspi/AccessibilityAtspi.cpp
    M Source/WebCore/accessibility/atspi/AccessibilityObjectTextAtspi.cpp
    M Source/WebCore/platform/graphics/gstreamer/GStreamerCommon.cpp
    M Source/WebCore/platform/graphics/gstreamer/GStreamerCommon.h
    M Source/WebCore/platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp
    M 
Source/WebCore/platform/graphics/gstreamer/mse/WebKitMediaSourceGStreamer.cpp
    M Source/WebCore/platform/mediastream/gstreamer/GStreamerMockDevice.cpp
    M Source/WebKit/Shared/API/glib/WebKitHitTestResult.cpp
    M Source/WebKit/UIProcess/API/glib/WebKitAutomationSession.cpp
    M Source/WebKit/UIProcess/API/glib/WebKitSettings.cpp
    M 
Source/WebKit/WebProcess/InjectedBundle/API/glib/WebKitWebHitTestResult.cpp
    M Tools/Scripts/webkitpy/style/checkers/cpp.py
    M Tools/Scripts/webkitpy/style/checkers/cpp_unittest.py
    M Tools/TestWebKitAPI/Tests/WTF/StringView.cpp
    M Tools/TestWebKitAPI/Tests/WebKit/WKWebView/glib/TestInputMethodContext.cpp

  Log Message:
  -----------
  Add more C++ wrappers for GLib and GStreamer functions that take UTF-8 strings
https://bugs.webkit.org/show_bug.cgi?id=325782

Reviewed by Claudio Saavedra.

GLib code still unwrapped UTF8CStrings with legacyCStringPointer() to pass them 
to a few GLib and
GStreamer functions. Add wrappers to wtf/glib/GLibExtras.h that take typed 
strings:
gDBusConnectionEmitSignal() takes a UTF8CStringView object path, and 
gObjectNew() converts each
argument with glibVariadicType(), like gVariantNew(), and supplies the 
terminating nullptr itself.

Use WTF instead of GLib where WTF can do the same:
- Add StringView::codePointCount() and use it in the ATSPI text code instead of 
calling
  g_utf8_strlen() on a UTF-8 copy of a string whose UTF-16 form is already at 
hand.
- Compare against UTF8CStringView::unsafeFromUTF8() instead of calling 
g_strcmp0(). Unlike
  g_strcmp0(), this treats a null string as equal to an empty one.

Add gstStructureSet() and gstStructureNew() to GStreamerCommon.h, which convert 
each field name and
value with glibVariadicType() and supply the terminating nullptr themselves, 
since GCC's sentinel
check does not accept a converted nullptr.

gObjectNew() static_asserts that it is given a value for each property name.

Use the wrappers at the call sites in Source/ and Tools/, removing 60 calls to
legacyCStringPointer().

Extend the runtime/glib_string_wrappers style check to suggest the new 
wrappers, pointing to
GStreamerCommon.h for the GStreamer ones.

* Source/WTF/wtf/glib/GLibExtras.h:
(WTF::gDBusConnectionEmitSignal):
(WTF::gObjectNew):
* Source/WTF/wtf/text/StringView.h:
(WTF::StringView::codePointCount const):
* Source/WebCore/accessibility/atspi/AccessibilityAtspi.cpp:
(WebCore::AccessibilityAtspi::unregisterRoot):
(WebCore::AccessibilityAtspi::unregisterObject):
(WebCore::AccessibilityAtspi::parentChanged):
(WebCore::AccessibilityAtspi::childrenChanged):
(WebCore::AccessibilityAtspi::stateChanged):
(WebCore::AccessibilityAtspi::textChanged):
(WebCore::AccessibilityAtspi::textAttributesChanged):
(WebCore::AccessibilityAtspi::textCaretMoved):
(WebCore::AccessibilityAtspi::textSelectionChanged):
(WebCore::AccessibilityAtspi::valueChanged):
(WebCore::AccessibilityAtspi::activeDescendantChanged):
(WebCore::AccessibilityAtspi::selectionChanged):
(WebCore::AccessibilityAtspi::loadEvent):
* Source/WebCore/accessibility/atspi/AccessibilityObjectTextAtspi.cpp:
(WebCore::AccessibilityObjectAtspi::text const):
(WebCore::AccessibilityObjectAtspi::textInserted):
(WebCore::AccessibilityObjectAtspi::textDeleted):
(WebCore::AccessibilityObjectAtspi::textAtOffset const):
(WebCore::AccessibilityObjectAtspi::characterAtOffset const):
(WebCore::AccessibilityObjectAtspi::characterIndex const):
(WebCore::AccessibilityObjectAtspi::textExtents const):
(WebCore::AccessibilityObjectAtspi::selectionBounds const):
(WebCore::AccessibilityObjectAtspi::selectRange):
(WebCore::AccessibilityObjectAtspi::selectionChanged):
(WebCore::AccessibilityObjectAtspi::textAttributesWithUTF8Offset const):
(WebCore::AccessibilityObjectAtspi::scrollToMakeVisible const):
(WebCore::AccessibilityObjectAtspi::scrollToPoint const):
* Source/WebCore/platform/graphics/gstreamer/GStreamerCommon.cpp:
(WebCore::createAutoAudioSink):
* Source/WebCore/platform/graphics/gstreamer/GStreamerCommon.h:
(WebCore::gstStructureSet):
(WebCore::gstStructureNew):
* Source/WebCore/platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp:
(CachedResourceStreamingClient::responseReceived):
* Source/WebCore/platform/graphics/gstreamer/mse/WebKitMediaSourceGStreamer.cpp:
(webKitMediaSrcEmitStreams):
* Source/WebCore/platform/mediastream/gstreamer/GStreamerMockDevice.cpp:
(webkitMockDeviceCreate):
* Source/WebKit/Shared/API/glib/WebKitHitTestResult.cpp:
(webkitHitTestResultCreate):
* Source/WebKit/UIProcess/API/glib/WebKitAutomationSession.cpp:
(webkitAutomationSessionCreate):
* Source/WebKit/UIProcess/API/glib/WebKitSettings.cpp:
(webkit_settings_set_default_font_family):
(webkit_settings_set_monospace_font_family):
(webkit_settings_set_serif_font_family):
(webkit_settings_set_sans_serif_font_family):
(webkit_settings_set_cursive_font_family):
(webkit_settings_set_fantasy_font_family):
(webkit_settings_set_pictograph_font_family):
(webkit_settings_set_math_font_family):
(webkit_settings_set_default_charset):
(webkit_settings_set_media_content_types_requiring_hardware_support):
(webkit_settings_set_webrtc_udp_ports_range):
* Source/WebKit/WebProcess/InjectedBundle/API/glib/WebKitWebHitTestResult.cpp:
(webkitWebHitTestResultCreate):
* Tools/Scripts/webkitpy/style/checkers/cpp.py:
(_check_string_wrappers):
(check_glib_string_wrappers):
(check_posix_string_wrappers):
* Tools/Scripts/webkitpy/style/checkers/cpp_unittest.py:
(WebKitStyleTest.test_glib_string_wrappers):
* Tools/TestWebKitAPI/Tests/WTF/StringView.cpp:
(TestWebKitAPI::TEST(WTF, StringViewCodePointCount)):
* Tools/TestWebKitAPI/Tests/WebKit/WKWebView/glib/TestInputMethodContext.cpp:

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



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

Reply via email to