Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 8ca47457ed12c69a97e43acd70a3a2eb7bc2f462
https://github.com/WebKit/WebKit/commit/8ca47457ed12c69a97e43acd70a3a2eb7bc2f462
Author: Chris Dumez <[email protected]>
Date: 2026-09-19 (Sat, 19 Sep 2026)
Changed paths:
A Source/JavaScriptCore/API/JSStringRefCPP.h
M Source/JavaScriptCore/API/tests/ExecutionTimeLimitTest.cpp
M Source/JavaScriptCore/API/tests/MultithreadedMultiVMExecutionTest.cpp
M Source/JavaScriptCore/API/tests/VMManagerStopTheWorldTest.cpp
M Source/JavaScriptCore/CMakeLists.txt
M Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj
M Source/WebCore/bridge/objc/objc_class.mm
M Source/WebCore/contentextensions/ContentExtensionActions.cpp
M Source/WebCore/platform/graphics/gstreamer/GStreamerRegistryScanner.cpp
M Source/WebCore/platform/win/PasteboardWin.cpp
M Source/WebKit/NetworkProcess/cache/NetworkCache.cpp
M Source/WebKit/Platform/IPC/Connection.h
M Source/WebKit/Shared/JavaScriptEvaluationResult.cpp
M Source/WebKit/UIProcess/Launcher/cocoa/ProcessLauncherCocoa.mm
M Source/WebKit/UIProcess/linux/MemoryPressureMonitor.cpp
M Source/WebKit/UIProcess/mac/WebPageProxyMac.mm
M
Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIRuntimeCocoa.mm
M Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPITestCocoa.mm
M Source/WebKit/WebProcess/Extensions/API/WebExtensionAPIAlarms.cpp
M Source/WebKit/WebProcess/Extensions/Bindings/JSWebExtensionWrapper.cpp
M Source/WebKit/WebProcess/Extensions/Bindings/JSWebExtensionWrapper.h
M Source/WebKit/WebProcess/WebPage/IPCTestingAPI.cpp
M Tools/DumpRenderTree/TestRunner.cpp
M Tools/DumpRenderTree/mac/ResourceLoadDelegate.mm
M Tools/DumpRenderTree/mac/TestRunnerMac.mm
M Tools/TestRunnerShared/UIScriptContext/UIScriptContext.cpp
M Tools/TestWebKitAPI/Helpers/JavaScriptTest.cpp
M Tools/TestWebKitAPI/Helpers/PlatformUtilities.cpp
M Tools/TestWebKitAPI/Helpers/PlatformUtilities.h
M Tools/TestWebKitAPI/Tests/WTF/DateMath.cpp
M Tools/TestWebKitAPI/Tests/WTF/IntegerToStringConversion.cpp
M Tools/TestWebKitAPI/Tests/WebCore/CBORWriterTest.cpp
M Tools/TestWebKitAPI/Tests/WebKit/WKPage/CookieStorageFile.cpp
M
Tools/TestWebKitAPI/Tests/WebKit/WKPage/cocoa/ForceLightAppearanceInBundle_Bundle.mm
M Tools/TestWebKitAPI/Tests/WebKit/WKWebView/mac/DOMNodeFromJSObject.mm
M
Tools/TestWebKitAPI/Tests/WebKit/WKWebView/mac/JSWrapperForNodeInWebFrame.mm
M Tools/WebKitTestRunner/InjectedBundle/TestRunner.cpp
M Tools/WebKitTestRunner/InjectedBundle/gtk/TestRunnerGtk.cpp
Log Message:
-----------
Reduce use of untyped CString and add encoding-aware JSStringRef conversions
https://bugs.webkit.org/show_bug.cgi?id=324435
Reviewed by Yusuke Suzuki.
Follow-up to 320652@main. Two kinds of untyped CString remain: sites that
construct one
from raw bytes, and declarations that slice an already-typed value back to the
base. The
second kind stays legal however the constructors are locked down, so it has to
be found
by hand.
The MESSAGE_CHECK_* macros wrapped WTF_PRETTY_FUNCTION in a CString only because
safePrintfType() rejects char*; ASCIILiteral says the same without allocating
on a path
that runs just before process termination. CBORWriterTest held CBOR encodings,
which are
bytes rather than text, so they become Vector<uint8_t> - which also removes the
span and
std::string wrappers the rows with embedded nulls needed. 321435@main has since
typed
MemoryPressureMonitor's cgroup path as UTF8CString and its file names as
ASCIILiteral, so
what is left there is the controller name, which is likewise always a literal.
The slicing declarations use auto; IntegerToStringConversion also moves from
latin1() to
ascii(), since the values are numbers and ASCIICString::data() is already a
const char*.
Add JSStringRefCPP.h, holding utf8CString(JSStringRef) and createJSString(). It
is a new
header rather than an addition to JSStringRefPrivate.h because that one is
listed in
JavaScriptCore_Private.modulemap, whose contract is headers "compatible with
both C and
C++", and testapi.c includes it as C. JSStringRefCPP.h is the C++ counterpart to
JSStringRef.h in the way JSStringRefCF.h is the CoreFoundation one, so it is
Private rather
than Public - it exposes WTF types, whose headers a framework client does not
get - and it
is deliberately absent from the modulemap.
createJSString() returns an owning JSRetainPtr, and since a JSString stores a
String its
String overloads hand the characters over rather than transcoding to UTF-8 and
back. The
ASCIILiteral overload is needed for overload resolution rather than speed:
ASCIILiteral
converts implicitly to both String and UTF8CString, so the call would otherwise
be
ambiguous. Three ad-hoc versions already existed - toJSString(), makeJSString()
and
createJSString(const char*) - and the first two now forward to it.
ExecutionTimeLimitTest
drops ten manual JSStringRelease() calls as a result, including one behind a
JSStringRef&
bound into a dispatch block. Util::toWK() gains UTF8CString and String
overloads for the
same reason, and can then use WKStringCreateWithUTF8CStringWithLength() in
place of a
strlen.
alpha.webkit.UncountedCallArgsChecker does not recognize JSRetainPtr's adopt()
the way it
recognizes adoptRef(), which is why API/JSRetainPtr.h is already listed in
UncountedCallArgsCheckerExpectations. Suppress at the affected call sites
rather than
adding another file to that list, matching what JSContext.mm already does.
* Source/JavaScriptCore/API/JSStringRefCPP.h: Added.
(utf8CString):
(createJSString):
* Source/JavaScriptCore/API/tests/ExecutionTimeLimitTest.cpp:
(testResetAfterTimeout):
(testExecutionTimeLimit):
* Source/JavaScriptCore/API/tests/MultithreadedMultiVMExecutionTest.cpp:
(startMultithreadedMultiVMExecutionTest):
* Source/JavaScriptCore/API/tests/VMManagerStopTheWorldTest.cpp:
* Source/JavaScriptCore/CMakeLists.txt:
* Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj:
* Source/WebCore/bridge/objc/objc_class.mm:
(JSC::Bindings::convertJSMethodNameToObjc):
(JSC::Bindings::ObjcClass::methodNamed const):
(JSC::Bindings::ObjcClass::fieldNamed const):
* Source/WebCore/contentextensions/ContentExtensionActions.cpp:
(WebCore::ContentExtensions::RedirectAction::RegexSubstitutionAction::applyToURL
const):
(WebCore::ContentExtensions::makeJSString): Deleted.
* Source/WebCore/platform/graphics/gstreamer/GStreamerRegistryScanner.cpp:
(WebCore::GStreamerRegistryScanner::isAVC1CodecSupported const):
* Source/WebCore/platform/win/PasteboardWin.cpp:
(WebCore::Pasteboard::writeURLToDataObject):
* Source/WebKit/NetworkProcess/cache/NetworkCache.cpp:
(WebKit::NetworkCache::Cache::dumpContentsToFile):
* Source/WebKit/Platform/IPC/Connection.h:
* Source/WebKit/Shared/JavaScriptEvaluationResult.cpp:
(WebKit::JavaScriptEvaluationResult::JSExtractor::processContainersWithoutRecursion):
* Source/WebKit/UIProcess/Launcher/cocoa/ProcessLauncherCocoa.mm:
(WebKit::ProcessLauncher::finishLaunchingProcess):
(WebKit::ProcessLauncher::tryFinishLaunchingProcess):
* Source/WebKit/UIProcess/linux/MemoryPressureMonitor.cpp:
(WebKit::getCgroupControllerPath):
(WebKit::MemoryPressureMonitor::start):
* Source/WebKit/UIProcess/mac/WebPageProxyMac.mm:
(WebKit::temporaryPDFDirectoryPath):
* Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIRuntimeCocoa.mm:
* Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPITestCocoa.mm:
* Source/WebKit/WebProcess/Extensions/API/WebExtensionAPIAlarms.cpp:
* Source/WebKit/WebProcess/Extensions/Bindings/JSWebExtensionWrapper.cpp:
(WebKit::toString):
* Source/WebKit/WebProcess/Extensions/Bindings/JSWebExtensionWrapper.h:
(WebKit::toJSString):
* Source/WebKit/WebProcess/WebPage/IPCTestingAPI.cpp:
(WebKit::IPCTestingAPI::JSIPC::objectIdentifiers):
* Tools/DumpRenderTree/TestRunner.cpp:
(addURLToRedirectCallback):
(setAuthenticationPasswordCallback):
(setAuthenticationUsernameCallback):
(setWillSendRequestClearHeaderCallback):
(setPageVisibilityCallback):
(TestRunner::setPOSIXLocale):
(TestRunner::setAccummulateLogsForChannel):
(TestRunner::uiScriptDidComplete):
(TestRunner::setOpenPanelFiles):
* Tools/DumpRenderTree/mac/ResourceLoadDelegate.mm:
(-[ResourceLoadDelegate
webView:resource:willSendRequest:redirectResponse:fromDataSource:]):
* Tools/DumpRenderTree/mac/TestRunnerMac.mm:
(stringFromJSString):
(TestRunner::queueLoad):
* Tools/TestRunnerShared/UIScriptContext/UIScriptContext.cpp:
(UIScriptContext::runUIScript):
* Tools/TestWebKitAPI/Helpers/JavaScriptTest.cpp:
(TestWebKitAPI::javaScriptCallback):
(TestWebKitAPI::runJSTest):
* Tools/TestWebKitAPI/Helpers/PlatformUtilities.cpp:
(TestWebKitAPI::Util::toWK):
* Tools/TestWebKitAPI/Helpers/PlatformUtilities.h:
* Tools/TestWebKitAPI/Tests/WTF/DateMath.cpp:
(TestWebKitAPI::ScopedTimeZone::ScopedTimeZone):
* Tools/TestWebKitAPI/Tests/WTF/IntegerToStringConversion.cpp:
(testBoundaries):
(testNumbers):
* Tools/TestWebKitAPI/Tests/WebCore/CBORWriterTest.cpp:
(TestWebKitAPI::TEST(CBORWriterTest, TestWriteUint)):
(TestWebKitAPI::TEST(CBORWriterTest, TestWriteNegativeInteger)):
(TestWebKitAPI::TEST(CBORWriterTest, TestWriteBytes)):
(TestWebKitAPI::TEST(CBORWriterTest, TestWriteString)):
(TestWebKitAPI::TEST(CBORWriterTest, TestWriteSimpleValue)):
* Tools/TestWebKitAPI/Tests/WebKit/WKPage/CookieStorageFile.cpp:
(TestWebKitAPI::TEST_F(CookieStorageFile, CustomPath)):
*
Tools/TestWebKitAPI/Tests/WebKit/WKPage/cocoa/ForceLightAppearanceInBundle_Bundle.mm:
(TestWebKitAPI::ForceLightAppearanceInBundleTest::didReceiveMessage):
* Tools/TestWebKitAPI/Tests/WebKit/WKWebView/mac/DOMNodeFromJSObject.mm:
(TestWebKitAPI::TEST(WebKitLegacy, DOMNodeFromJSObject)):
* Tools/TestWebKitAPI/Tests/WebKit/WKWebView/mac/JSWrapperForNodeInWebFrame.mm:
(TestWebKitAPI::TEST(WebKitLegacy, JSWrapperForNode)):
* Tools/WebKitTestRunner/InjectedBundle/TestRunner.cpp:
(WTR::TestRunner::setPOSIXLocale):
* Tools/WebKitTestRunner/InjectedBundle/gtk/TestRunnerGtk.cpp:
(WTR::TestRunner::pathToLocalResource):
Canonical link: https://commits.webkit.org/321442@main
To unsubscribe from these emails, change your notification settings at
https://github.com/WebKit/WebKit/settings/notifications