Apply review request from 2026-11-05, with a merge of main.
The four absolute URL getters of WKHitTestResult return a null reference when the URL was never set, as the pinned WebKit returns null for a null String, instead of a non-null empty URL. The test covers an unset result and the existing set round trips. The throwing export count in the debt entry is recounted against main.
Ports the 27 StringBuilder and TextStream exports that still threw from
public WebKit c55364d53f97: appendCharacters, reserveCapacity,
shrinkToFit, reifyString, appendNumber(float) and appendQuotedJSONString,
the TextStream operators, release, groups and indent, and the Seconds and
URL operators. Both layouts are pinned with static_assert from the
release headers of that revision; they are not checked against a console
binary.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Replace 1137 NotImplemented stubs with implementations that follow the PS5 11.x OSS WebKit source: the API object model and value types, WKPreferences with PlayStation defaults, context, page, website data store and user script configuration objects, the JS* API on QuickJS-NG with libSceJsc strings, WebCore geometry, transform and color values, and WTF allocation, time, string and URL value operations. Exports whose behaviour needs the WebKit engine, the WebCore URL parser or unproven layouts stay stubs; the gaps are in docs/dev/debt/libSceNKWebKit.md.
Every export is declared once in headers reachable from the library umbrella. Allocation size, alignment and header overhead are computed with overflow checks and the try variants return null at the boundaries. tryFastMalloc, tryFastZeroedMalloc, tryFastCalloc and tryFastRealloc return WTF::TryMallocReturnValue, which is returned in memory, so they take the caller's result pointer first, store the allocation through it and return it.
The libSceJsc string exports that libSceNKWebKit calls are named with the _nid_postfix suffix, so the NID patcher renames those imports along with the exports and the patched libSceNKWebKit.prx resolves them on Linux; their NIDs are unchanged.
Implement the six WTF::charactersToDouble and WTF::charactersToFloat
overloads for Latin-1 and UTF-16 input and the four static
WTF::double_conversion::StringToDoubleConverter StringToDouble and
StringToFloat overloads for char and uint16_t input, following pinned
public WebKit. One parser follows StringToIeee: the number grammar, the
772-digit cut with a sticky digit, the exponent saturation and the
processed length. charactersToDouble and charactersToFloat add
toDoubleType's leading ASCII spaces and ok/parsedLength results, map
UTF-16 code units above 0x7F to 0 and round the float overloads through
double. StringToDoubleConverter reads the code units as they are, skips
no spaces and rounds StringToFloat directly to float as Strtof does.
Null characters with a nonzero length and a null processed length throw
where WebKit faults, a decimal exponent that leaves the range of
WebKit's int throws where WebKit overflows, and a UTF-16 charactersTo*
length above UINT32_MAX throws where WebKit's conversion Vector crashes.
Implement WTF::parseDateFromNullTerminatedCharacters(const char*, bool&)
following pinned public WebKit DateMath.cpp: the legacy RFC 2822 style
parser with its month names, comments, three date layouts, two-digit
years, am/pm, numeric offsets and time zone names, and the time range
clamp before the zone offset. Integers go through the guest libc
strtol, as WebKit calls the platform C library. Null pointers throw
where WebKit faults, and a signed overflow that is undefined in WebKit
throws. The one-argument overload still throws because it depends on
the port's configure-time time functions and the device time zone.