{
  "commits": {
    "317810@main": {
      "author": "Basuke Suzuki",
      "avatar": "https://www.gravatar.com/avatar/5192a1151c7575317affb7a4633f8d63?d=identicon\u0026s=64",
      "cl": "317810@main",
      "clUrl": "https://commits.webkit.org/317810@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320009\nrdar://182947195\n\nReviewed by Alex Christensen.\n\nAdd the WebTransportWriter IDL interface (a subclass of WritableStreamDefaultWriter\nexposing atomicWrite() and commit()) and WebTransportSendStream.getWriter(), so the\nWebTransport idlharness WPT test passes and can be un-skipped.\n\nThis adds the interface shape only. atomicWrite() rejects with NotSupportedError and\ncommit() is a no-op for now: neither is exercised by any functional WPT test (only\nidlharness checks the interface shape), and the functional implementation is tracked\nseparately by rdar://167646357 (WebTransportWriter) and rdar://164169921 (commit). This\nis enabled by the recently subclassable C++ WritableStreamDefaultWriter; a small type\ndiscriminator is added there so bindings can dispatch to the WebTransportWriter wrapper.\n\nThis clears the final 9 idlharness FAILs, so the four\nimported/w3c/web-platform-tests/webtransport/idlharness.https.sub.any variants are\nun-skipped and now pass.\n\n* LayoutTests/TestExpectations: Un-skip the four webtransport idlharness variants.\n* LayoutTests/imported/w3c/web-platform-tests/webtransport/idlharness.https.sub.any-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/webtransport/idlharness.https.sub.any.serviceworker-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/webtransport/idlharness.https.sub.any.sharedworker-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/webtransport/idlharness.https.sub.any.worker-expected.txt:\n* Source/WebCore/CMakeLists.txt:\n* Source/WebCore/DerivedSources-input.xcfilelist:\n* Source/WebCore/DerivedSources-output.xcfilelist:\n* Source/WebCore/DerivedSources.make:\n* Source/WebCore/Modules/streams/WritableStreamDefaultWriter.h:\n(WebCore::WritableStreamDefaultWriter::type const):\n* Source/WebCore/Modules/webtransport/WebTransportSendStream.cpp:\n(WebCore::WebTransportSendStream::getWriter):\n* Source/WebCore/Modules/webtransport/WebTransportSendStream.h:\n* Source/WebCore/Modules/webtransport/WebTransportSendStream.idl:\n* Source/WebCore/Modules/webtransport/WebTransportWriter.cpp: Added.\n(WebCore::WebTransportWriter::create):\n(WebCore::WebTransportWriter::WebTransportWriter):\n(WebCore::WebTransportWriter::atomicWrite):\n(WebCore::WebTransportWriter::commit):\n* Source/WebCore/Modules/webtransport/WebTransportWriter.h: Added.\n* Source/WebCore/Modules/webtransport/WebTransportWriter.idl: Added.\n* Source/WebCore/Sources.txt:\n* Source/WebCore/WebCore.xcodeproj/project.pbxproj:\n* Source/WebCore/bindings/js/WebCoreBuiltinNames.h:\n\nCanonical link: https://commits.webkit.org/317810@main",
      "email": "basuke@apple.com",
      "hash": "e2f2241ebf93fa77d5e47b6d91371d606bc8edbd",
      "subject": "[WebTransport] Add WebTransportWriter IDL interface and WebTransportSendStream.getWriter()"
    },
    "317811@main": {
      "author": "Ahmad Saleem",
      "avatar": "https://www.gravatar.com/avatar/38445f84fe28aa19bfeb1f59f6559532?d=identicon\u0026s=64",
      "cl": "317811@main",
      "clUrl": "https://commits.webkit.org/317811@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319155\nrdar://181977285\n\nReviewed by Eric Carlson.\n\nWebVTTParser::collectWebVTTBlock() buffers a candidate cue-identifier line\nin m_previousLine while collecting a WebVTT block. When the block then turns\nout to be a region or style block, m_previousLine was left untouched, so the\nstray line survived across the block and was later applied as the identifier\nof the next cue that had no identifier of its own.\n\nPer the \"collect a WebVTT block\" algorithm [1], a REGION/STYLE block is only\nrecognized when it is the first line of the block; a line preceding it makes\nthe whole block a no-op, and the following cue's identifier is the (empty)\nbuffer. Clear m_previousLine when a region or style block is started so the\nbuffered line is not carried over.\n\nThis matches Firefox on both cases and Chrome on the region case (Chrome has\na separate bug in the style case).\n\n[1] https://w3c.github.io/webvtt/#collect-a-webvtt-block\n\nTests: imported/w3c/web-platform-tests/webvtt/parsing/file-parsing/tests/ids-across-region-block.html\n imported/w3c/web-platform-tests/webvtt/parsing/file-parsing/tests/ids-across-style-block.html\n\n* LayoutTests/imported/w3c/web-platform-tests/webvtt/parsing/file-parsing/support/ids-across-region-block.test: Added.\n* LayoutTests/imported/w3c/web-platform-tests/webvtt/parsing/file-parsing/support/ids-across-style-block.test: Added.\n* LayoutTests/imported/w3c/web-platform-tests/webvtt/parsing/file-parsing/tests/ids-across-region-block-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/webvtt/parsing/file-parsing/tests/ids-across-region-block.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/webvtt/parsing/file-parsing/tests/ids-across-style-block-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/webvtt/parsing/file-parsing/tests/ids-across-style-block.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/webvtt/parsing/file-parsing/tests/support/ids-across-region-block.vtt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/webvtt/parsing/file-parsing/tests/support/ids-across-style-block.vtt: Added.\n* Source/WebCore/html/track/WebVTTParser.cpp:\n(WebCore::WebVTTParser::collectWebVTTBlock):\n\nCanonical link: https://commits.webkit.org/317811@main",
      "email": "ahmad.saleem792+github@gmail.com",
      "hash": "e289f76946d55f85c3ae899b7f1e841f042adbfd",
      "subject": "[WebVTT] A cue wrongly inherits a preceding line as its identifier across a REGION or STYLE block"
    },
    "317812@main": {
      "author": "Ahmad Saleem",
      "avatar": "https://www.gravatar.com/avatar/38445f84fe28aa19bfeb1f59f6559532?d=identicon\u0026s=64",
      "cl": "317812@main",
      "clUrl": "https://commits.webkit.org/317812@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319999\nrdar://182936070\n\nReviewed by Eric Carlson.\n\nThe per-device comparison in refreshAudioCaptureDevices() checked\nnewDevice.isDefault() != oldDevice.isDefault() twice instead of also\ncomparing label() and groupId(). As a result, a device whose label or\ngroup ID changed (but not its type, deviceID, default status, or\nenabled state) was not detected as changed, and deviceChanged() was\nnever fired for it.\n\n* Source/WebCore/platform/mediastream/cocoa/CoreAudioCaptureDeviceManager.cpp:\n(WebCore::CoreAudioCaptureDeviceManager::refreshAudioCaptureDevices):\n\nCanonical link: https://commits.webkit.org/317812@main",
      "email": "ahmad.saleem792+github@gmail.com",
      "hash": "a32f49ed4f930231a8fbaa3ed4a46f044351a36f",
      "subject": "CoreAudioCaptureDeviceManager::refreshAudioCaptureDevices() misses device changes when label or group ID changes"
    },
    "317813@main": {
      "author": "Shu-yu Guo",
      "avatar": "https://www.gravatar.com/avatar/3884544eb9e557e2ec917d32c6e12720?d=identicon\u0026s=64",
      "cl": "317813@main",
      "clUrl": "https://commits.webkit.org/317813@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320017\nrdar://182269995\n\nReviewed by Marcus Plutowski.\n\n314682@main unified handling of bound functions (i.e. functions returned by\nF.p.bind) with native functions for .length/.name materialization. This\nmaterialization is controlled by two predicates that must be in sync:\nJSBoundFunction::canSkipNameAndLengthMaterialization() used at compile-time and\nJSFunction::canAssumeNameAndLengthAreOriginal() used at runtime. 314682@main\nde-synced them by making JSFunction::canAssumeNameAndLengthAreOriginal() return\nfalse for bound functions, while\nJSBoundFunction::canSkipNameAndLengthMaterialization() kept returning true.\n\nThis PR re-syncs the predicates to return false for bound functions in both.\n\nTest: JSTests/stress/function-bind-bound-target-tainted-structure-transition.js\n\n* JSTests/stress/function-bind-bound-target-tainted-structure-transition.js: Added.\n(vm.runTaintedString.shouldBe):\n(target):\n(test):\n* Source/JavaScriptCore/runtime/JSBoundFunction.cpp:\n(JSC::JSBoundFunction::canSkipNameAndLengthMaterialization):\n* Source/JavaScriptCore/runtime/JSFunctionInlines.h:\n(JSC::JSFunction::canAssumeNameAndLengthAreOriginal):\n\nCanonical link: https://commits.webkit.org/317813@main",
      "email": "syg@apple.com",
      "hash": "259d2999018347dae277c3b7041abbcb4fd16a86",
      "subject": "[JSC] Materialize .length/.name for bound^2 functions"
    },
    "317814@main": {
      "author": "Devin Rousso",
      "avatar": "https://www.gravatar.com/avatar/c9e757d973342c773f107a94b70cb9cd?d=identicon\u0026s=64",
      "cl": "317814@main",
      "clUrl": "https://commits.webkit.org/317814@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320033\n\nReviewed by Basuke Suzuki.\n\nWhen Web Inspector disables the resource cache, `FrameLoader::updateRequestAndAddExtraFields` forces every request to `ReloadIgnoringCacheData` and `ReloadFromOrigin`, then overwrites `Cache-Control` and `Pragma` with `no-cache`.\nThat discards a `Cache-Control` the page set itself (for example through `fetch()`), so the value the page asked for never reaches the network.\n\nOnly synthesize the `no-cache` headers when the request does not already carry them, using `addHTTPHeaderFieldIfNotPresent` instead of `setHTTPHeaderField`.\nThe cache policy is still forced to `ReloadIgnoringCacheData`, so disabling the cache keeps bypassing the local cache and only the header write changes.\n\n* Source/WebCore/loader/FrameLoader.cpp:\n(WebCore::FrameLoader::updateRequestAndAddExtraFields):\n\n* LayoutTests/http/tests/cache/disable-resource-caching-preserves-request-cache-control.html: Added.\n* LayoutTests/http/tests/cache/disable-resource-caching-preserves-request-cache-control-expected.txt: Added.\n\nCanonical link: https://commits.webkit.org/317814@main",
      "email": "hi@devinrousso.com",
      "hash": "96437189e7eecba977fe0a452b7e35fecc6ea776",
      "subject": "Web Inspector: Network: disabling resource cache always sets `Cache-Control: no-cache`"
    },
    "317815@main": {
      "author": "Karl Dubost",
      "avatar": "https://www.gravatar.com/avatar/0c2b3d380fb637f3dd51eda704634b6f?d=identicon\u0026s=64",
      "cl": "317815@main",
      "clUrl": "https://commits.webkit.org/317815@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320095\nrdar://183030858\n\nReviewed by Dan Glastonbury.\n\nThis adds a couple of WPT tests missing for viewbox zero and negative\nvalues on the geometry attributes.\nIt is a companion for https://github.com/w3c/svgwg/pull/1152\n\nsvg/geometry/parsing/\n- negative-presentation-attribute-computed.svg — negative presentation\n  attributes compute to the initial value: rx/ry→auto, r→0px, cx accepts\n  negative.\n\nsvg/geometry/reftests/\n- ellipse-007.svg — both rx \u0026 ry negative → ellipse not rendered.\n- circle-006.svg — negative r → circle not rendered.\n- rect-005.svg / rect-006.svg — negative width / height → rect not\n  rendered.\n- rect-007.svg — negative corner radii: a single negative rx/ry mirrors\n  the sibling; both negative → square corners.\n- (edited) ellipse-005/006.svg titles updated to the PR #1152 wording.\n\nsvg/coordinate-systems/ (zero-viewBox disables rendering)\n- viewBox-zero-disables-rendering-001/002/003.svg — zero width /\n  zero height / both zero (standalone document).\n- viewBox-zero-disables-rendering-contexts.html — inline outer\n  + nested inner + SVG-as-image.\n- viewBox-zero-disables-rendering-symbol/pattern/marker.svg — per-host\n  coverage.\n- viewBox-invalid-attribute-baseval.tentative.html — negative-viewBox\n  attribute → baseVal {0,0,0,0} (tentative; engines differ).\n\nRemoved (dedup): svg/custom/viewBox-empty.* (LBSE expectation\ntransferred) and svg/custom/rect-negative-corner-radii.* (clean).\n\nCoverage: 12 new tests (+ their refs/expected) spanning geometry\nnegative-value handling and viewBox zero/negative behavior across\nstandalone, inline, nested, image, and the symbol/pattern/marker hosts.\n\n* LayoutTests/imported/w3c/web-platform-tests/svg/coordinate-systems/viewBox-invalid-attribute-baseval.tentative-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/svg/coordinate-systems/viewBox-invalid-attribute-baseval.tentative.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/svg/coordinate-systems/viewBox-zero-disables-rendering-001-expected.svg: Added.\n* LayoutTests/imported/w3c/web-platform-tests/svg/coordinate-systems/viewBox-zero-disables-rendering-001.svg: Added.\n* LayoutTests/imported/w3c/web-platform-tests/svg/coordinate-systems/viewBox-zero-disables-rendering-002-expected.svg: Added.\n* LayoutTests/imported/w3c/web-platform-tests/svg/coordinate-systems/viewBox-zero-disables-rendering-002.svg: Added.\n* LayoutTests/imported/w3c/web-platform-tests/svg/coordinate-systems/viewBox-zero-disables-rendering-003-expected.svg: Added.\n* LayoutTests/imported/w3c/web-platform-tests/svg/coordinate-systems/viewBox-zero-disables-rendering-003.svg: Added.\n* LayoutTests/imported/w3c/web-platform-tests/svg/coordinate-systems/viewBox-zero-disables-rendering-contexts-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/svg/coordinate-systems/viewBox-zero-disables-rendering-contexts-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/svg/coordinate-systems/viewBox-zero-disables-rendering-contexts.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/svg/coordinate-systems/viewBox-zero-disables-rendering-marker-expected.svg: Added.\n* LayoutTests/imported/w3c/web-platform-tests/svg/coordinate-systems/viewBox-zero-disables-rendering-marker-ref.svg: Added.\n* LayoutTests/imported/w3c/web-platform-tests/svg/coordinate-systems/viewBox-zero-disables-rendering-marker.svg: Added.\n* LayoutTests/imported/w3c/web-platform-tests/svg/coordinate-systems/viewBox-zero-disables-rendering-pattern-expected.svg: Added.\n* LayoutTests/imported/w3c/web-platform-tests/svg/coordinate-systems/viewBox-zero-disables-rendering-pattern.svg: Added.\n* LayoutTests/imported/w3c/web-platform-tests/svg/coordinate-systems/viewBox-zero-disables-rendering-ref.svg: Added.\n* LayoutTests/imported/w3c/web-platform-tests/svg/coordinate-systems/viewBox-zero-disables-rendering-symbol-expected.svg: Added.\n* LayoutTests/imported/w3c/web-platform-tests/svg/coordinate-systems/viewBox-zero-disables-rendering-symbol.svg: Added.\n* LayoutTests/imported/w3c/web-platform-tests/svg/geometry/parsing/negative-presentation-attribute-computed-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/svg/geometry/parsing/negative-presentation-attribute-computed.svg: Added.\n* LayoutTests/imported/w3c/web-platform-tests/svg/geometry/reftests/circle-006-expected.svg: Added.\n* LayoutTests/imported/w3c/web-platform-tests/svg/geometry/reftests/circle-006.svg: Added.\n* LayoutTests/imported/w3c/web-platform-tests/svg/geometry/reftests/ellipse-005.svg:\n* LayoutTests/imported/w3c/web-platform-tests/svg/geometry/reftests/ellipse-006.svg:\n* LayoutTests/imported/w3c/web-platform-tests/svg/geometry/reftests/ellipse-007-expected.svg: Added.\n* LayoutTests/imported/w3c/web-platform-tests/svg/geometry/reftests/ellipse-007.svg: Added.\n* LayoutTests/imported/w3c/web-platform-tests/svg/geometry/reftests/not-rendered-200-ref.svg: Added.\n* LayoutTests/imported/w3c/web-platform-tests/svg/geometry/reftests/rect-005-expected.svg: Added.\n* LayoutTests/imported/w3c/web-platform-tests/svg/geometry/reftests/rect-005.svg: Added.\n* LayoutTests/imported/w3c/web-platform-tests/svg/geometry/reftests/rect-006-expected.svg: Added.\n* LayoutTests/imported/w3c/web-platform-tests/svg/geometry/reftests/rect-006.svg: Added.\n* LayoutTests/imported/w3c/web-platform-tests/svg/geometry/reftests/rect-007-expected.svg: Added.\n* LayoutTests/imported/w3c/web-platform-tests/svg/geometry/reftests/rect-007-ref.svg: Added.\n* LayoutTests/imported/w3c/web-platform-tests/svg/geometry/reftests/rect-007.svg: Added.\n* LayoutTests/platform/mac-tahoe-wk2-lbse-text/TestExpectations:\n* LayoutTests/svg/custom/rect-negative-corner-radii-expected.svg: Removed.\n* LayoutTests/svg/custom/rect-negative-corner-radii.svg: Removed.\n* LayoutTests/svg/custom/viewBox-empty-expected.html: Removed.\n* LayoutTests/svg/custom/viewBox-empty.html: Removed.\n\nCanonical link: https://commits.webkit.org/317815@main",
      "email": "karlcow@apple.com",
      "hash": "462c404f933a279f23345d497b92a0d2364507cb",
      "subject": "Add WPT tests for SVG geometry negative-value handling and viewBox zero/negative rendering"
    },
    "317816@main": {
      "author": "Ryosuke Niwa",
      "avatar": "https://www.gravatar.com/avatar/ed2c71248fe3ea15d9129f6e9a2a1e85?d=identicon\u0026s=64",
      "cl": "317816@main",
      "clUrl": "https://commits.webkit.org/317816@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319743\n\nReviewed by Elliott Williams.\n\nThe bug is caused by Xcode running clang static analyzer over C-family sources\nbut not running swiftc over Swift files so linking fails due to missing symbols in Swift.\n\nExclude testapi in xcodebuild when analyzing.\n\n* WebKit.xcworkspace/xcshareddata/xcschemes/Everything up to WebKit.xcscheme:\n\nCanonical link: https://commits.webkit.org/317816@main",
      "email": "rniwa@webkit.org",
      "hash": "16770f3f0a661dd1b43b2aecb43ee74a9dafa409",
      "subject": "Safer C++ static analysis fails in testapi"
    },
    "317817@main": {
      "author": "Gerald Squelart",
      "avatar": "https://www.gravatar.com/avatar/894904f08d85651bf2a76868a4d2f1b3?d=identicon\u0026s=64",
      "cl": "317817@main",
      "clUrl": "https://commits.webkit.org/317817@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319966\nrdar://182891101\n\nReviewed by Mike Wyrzykowski.\n\nIn order to correctly share bitmap buffers between processes, their\npixel format is needed to compute the buffer memory size, especially\nwhen potentially dealing with HDR float16 buffers.\n\n- Add PixelFormat to ShareableBitmapConfiguration, and ensure it's\n  de/serialized.\n- If not specified, infer it from whether the color space uses extended-\n  range color values.\n- Use this PixelFormat (instead of the color space) when computing\n  memory sizes. Note that some platforms still rely solely on the color\n  space.\n- Test that HDR pixels near the end of a canvas are correctly written\n  and read.\n\nAdditionally:\n- Remove the std::optional shell around\n  ShareableBitmapConfiguration::m_colorSpace, it was effectively\n  checked at every access, so instead it's now pre-computed once during\n  construction.\n- Make the deserializing ShareableBitmapConfiguration constructor\n  private, as it's only used by friend struct IPC::ArgumentCoder.\n\nTests: fast/canvas/hdr/float16-canvas-imagedata-large-unaccelerated.html\n       fast/canvas/hdr/float16-canvas-imagedata-small-accelerated.html\n\n* LayoutTests/fast/canvas/hdr/float16-canvas-imagedata-large-unaccelerated-expected.txt: Copied from LayoutTests/fast/canvas/hdr/float16-canvas-imagedata-expected.txt.\n* LayoutTests/fast/canvas/hdr/float16-canvas-imagedata-large-unaccelerated.html: Added.\n* LayoutTests/fast/canvas/hdr/float16-canvas-imagedata-small-accelerated-expected.txt: Renamed from LayoutTests/fast/canvas/hdr/float16-canvas-imagedata-expected.txt.\n* LayoutTests/fast/canvas/hdr/float16-canvas-imagedata-small-accelerated.html: Added.\n* LayoutTests/fast/canvas/hdr/float16-canvas-imagedata.js: Renamed from LayoutTests/fast/canvas/hdr/float16-canvas-imagedata.html.\n* Source/WebCore/platform/graphics/ImageBufferBackend.cpp:\n(WebCore::ImageBufferBackend::calculateSafeBackendSize):\n* Source/WebCore/platform/graphics/ShareableBitmap.cpp:\n(WebCore::ShareableBitmapConfiguration::ShareableBitmapConfiguration):\n(WebCore::ShareableBitmapConfiguration::calculateSizeInBytes):\n* Source/WebCore/platform/graphics/ShareableBitmap.h:\n(WebCore::ShareableBitmapConfiguration::colorSpace const):\n(WebCore::ShareableBitmapConfiguration::pixelFormat const):\n(WebCore::ShareableBitmap::colorSpace const):\n(WebCore::ShareableBitmap::pixelFormat const):\n* Source/WebCore/platform/graphics/cairo/ShareableBitmapCairo.cpp:\n(WebCore::ShareableBitmapConfiguration::validateColorSpace):\n(WebCore::ShareableBitmapConfiguration::calculateBitsPerComponent):\n(WebCore::ShareableBitmapConfiguration::calculateBytesPerPixel):\n(WebCore::ShareableBitmapConfiguration::calculateBytesPerRow):\n* Source/WebCore/platform/graphics/cg/ImageBufferCGBitmapBackend.cpp:\n(WebCore::ImageBufferCGBitmapBackend::create):\n* Source/WebCore/platform/graphics/cg/ShareableBitmapCG.mm:\n(WebCore::ShareableBitmapConfiguration::validateColorSpace):\n(WebCore::ShareableBitmapConfiguration::calculateBitsPerComponent):\n(WebCore::ShareableBitmapConfiguration::calculateBytesPerPixel):\n(WebCore::ShareableBitmapConfiguration::calculateBytesPerRow):\n(WebCore::ShareableBitmapConfiguration::calculateBitmapInfo):\n* Source/WebCore/platform/graphics/skia/ShareableBitmapSkia.cpp:\n(WebCore::ShareableBitmapConfiguration::validateColorSpace):\n(WebCore::ShareableBitmapConfiguration::calculateBitsPerComponent):\n(WebCore::ShareableBitmapConfiguration::calculateBytesPerPixel):\n(WebCore::ShareableBitmapConfiguration::calculateBytesPerRow):\n* Source/WebKit/GPUProcess/media/RemoteImageDecoderAVFProxy.cpp:\n(WebKit::RemoteImageDecoderAVFProxy::createFrameImageAtIndex):\n* Source/WebKit/Shared/WebCoreArgumentCoders.serialization.in:\n* Source/WebKit/WebProcess/GPU/graphics/ImageBufferShareableBitmapBackend.cpp:\n(WebKit::ImageBufferShareableBitmapBackend::calculateSafeBackendSize):\n(WebKit::ImageBufferShareableBitmapBackend::calculateBytesPerRow):\n(WebKit::ImageBufferShareableBitmapBackend::create):\n\nCanonical link: https://commits.webkit.org/317817@main",
      "email": "g_squelart@apple.com",
      "hash": "1e66e746033fb1e8e29c91cd301149d76a62888e",
      "subject": "Add PixelFormat to ShareableBitmapConfiguration"
    },
    "317818@main": {
      "author": "Chris Dumez",
      "avatar": "https://www.gravatar.com/avatar/a9f21fe3a8baf79b45f3c91572187bdc?d=identicon\u0026s=64",
      "cl": "317818@main",
      "clUrl": "https://commits.webkit.org/317818@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320073\n\nReviewed by Abrar Rahman Protyasha.\n\n* Source/WebKit/UIProcess/API/mac/WKWebViewMac.mm:\n(-[WKWebView changeColor:]):\n\nCanonical link: https://commits.webkit.org/317818@main",
      "email": "cdumez@apple.com",
      "hash": "2581d798277ea4f611f12b377bba7089150a7a87",
      "subject": "Fix double ALLOW_DEPRECATED_IMPLEMENTATIONS_BEGIN in WebViewMac.mm"
    },
    "317819@main": {
      "author": "Chris Dumez",
      "avatar": "https://www.gravatar.com/avatar/a9f21fe3a8baf79b45f3c91572187bdc?d=identicon\u0026s=64",
      "cl": "317819@main",
      "clUrl": "https://commits.webkit.org/317819@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320076\n\nReviewed by Per Arne Vollan.\n\n* Source/WebKit/UIProcess/API/C/WKPreferences.cpp:\n(WKPreferencesSetDoubleValueForKeyForTesting):\n\nCanonical link: https://commits.webkit.org/317819@main",
      "email": "cdumez@apple.com",
      "hash": "41c24e18289a4f1567b6ad2113c3f1e0b1328a6b",
      "subject": "WKPreferencesSetDoubleValueForKeyForTesting stores double values as booleans"
    },
    "317820@main": {
      "author": "Antoine Quint",
      "avatar": "https://www.gravatar.com/avatar/9b3ef1e754f8d994f21ff67c660cbbe6?d=identicon\u0026s=64",
      "cl": "317820@main",
      "clUrl": "https://commits.webkit.org/317820@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320133\nrdar://182862906\n\nReviewed by Dan Glastonbury\n\nWe're hitting some jetsams on iOS for cnn.com when Threaded Time-based Animations are enabled.\nUntil we fix those, disable this feature on that site.\n\n* Source/WebCore/page/Quirks.cpp:\n\nCanonical link: https://commits.webkit.org/317820@main",
      "email": "graouts@webkit.org",
      "hash": "82913509604940fdfe247e5da3609c6de6e44d89",
      "subject": "[threaded-animations] disable Threaded Time-based Animations on CNN.com on iOS"
    },
    "317821@main": {
      "author": "Ian Gower",
      "avatar": "https://www.gravatar.com/avatar/cc2e677bc728b92e5463660d8b8d9ed8?d=identicon\u0026s=64",
      "cl": "317821@main",
      "clUrl": "https://commits.webkit.org/317821@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319906\nrdar://182830220\n\nReviewed by Alex Christensen.\n\nAdds classifyIPAddressSpace(const IPAddress\u0026) and wires it into\nNetworkDataTaskCocoa so the resolved connection address, not the request\nURL's host, is what gets classified into an IPAddressSpace. The request\nURL's host is attacker-controlled (a DNS-rebinding server can point a\npublic-looking hostname at 127.0.0.1), so any local-network access policy\ndecision needs to be based on what actually got connected to. Both the\nfinal response (didReceiveResponse) and each redirect hop\n(willPerformHTTPRedirection) are classified, since a redirect is a\nseparate connection that could target a local/loopback address on its own.\n\nWhen the connection address cannot be classified (no resolved address, or\none that is neither IPv4 nor IPv6) the space is left as\nIPAddressSpace::Unknown, which ranks as the least public space so the local\nnetwork access check fails closed instead of defaulting to Public. Unknown\nis kept last in the enum so the web-exposed { public, local, loopback }\nvalues in IPAddressSpace.idl keep their indices.\n\n* Source/WebCore/Modules/fetch/IPAddressSpace.cpp:\n(WebCore::classifyIPAddressSpace):\n* Source/WebCore/Modules/fetch/IPAddressSpace.h:\n(WebCore::publicnessRank):\n* Source/WebCore/platform/network/ResourceResponseBase.cpp:\n(WebCore::ResourceResponseBase::ResourceResponseBase):\n* Source/WebCore/platform/network/ResourceResponseBase.h:\n(WebCore::ResourceResponseBase::ipAddressSpace const):\n* Source/WebKit/NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:\n(WebKit::NetworkDataTaskCocoa::didReceiveResponse):\n(WebKit::NetworkDataTaskCocoa::willPerformHTTPRedirection):\n* Source/WebKit/Shared/WebCoreArgumentCoders.serialization.in:\n* Tools/TestWebKitAPI/Tests/WebCore/IPAddressSpaceTests.cpp:\n(TestWebKitAPI::TEST(IPAddressSpace, ClassifyIPAddressSpaceFromResolvedAddress)):\n(TestWebKitAPI::TEST(IPAddressSpace, ClassifyUnclassifiableAddressIsUnknown)):\n(TestWebKitAPI::TEST(IPAddressSpace, ResourceResponseAddressSpaceDefaultsToUnknown)):\n\nCanonical link: https://commits.webkit.org/317821@main",
      "email": "i_gower@apple.com",
      "hash": "40d5429223cabe6e37ca0fdc31c7ad6d76ad541d",
      "subject": "Classify the real resolved connection IP for Local Network Access on Cocoa"
    },
    "317822@main": {
      "author": "Sergey Rubanov",
      "avatar": "https://www.gravatar.com/avatar/d04164fa4e06ce85533085f24c766e17?d=identicon\u0026s=64",
      "cl": "317822@main",
      "clUrl": "https://commits.webkit.org/317822@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=290296\n\nReviewed by Yusuke Suzuki.\n\nWhen freeRetiredWasmCode retires BBQ after OMG installs, there is not\nalways a same-mode BBQCallee to release. releaseBBQCallee assumed a\nBBQ was present whenever an optimized-callee tuple existed, so\nconvertToWeak() followed by reportToVMsForDestruction() could null-deref\non a strong nullptr, and the fallback ASSERT required Signaling memory\n— which is wrong for BoundsChecking and flaked on\nworkers/wasm-hashset.html in debug.\n\nOnly convert and report when the BBQ slot is still strong and non-null;\nreturn early when there is no tuple or no BBQ. Drop the Signaling-only\nassert.\n\n* Source/JavaScriptCore/wasm/WasmCalleeGroup.cpp:\n(JSC::Wasm::CalleeGroup::releaseBBQCallee): Guard missing BBQ;\ndrop Signaling-only assert.\n\nCanonical link: https://commits.webkit.org/317822@main",
      "email": "chi187@gmail.com",
      "hash": "fb935fc3e266c357c09b4f0e65b4d7c8c03f263a",
      "subject": "[JSC] Make releaseBBQCallee tolerate missing BBQ"
    },
    "317823@main": {
      "author": "Sosuke Suzuki",
      "avatar": "https://www.gravatar.com/avatar/e63b87350fe19bdd9a30c7234eda45af?d=identicon\u0026s=64",
      "cl": "317823@main",
      "clUrl": "https://commits.webkit.org/317823@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319928\n\nReviewed by Yusuke Suzuki.\n\nWhen the inlined StringCharCodeAt hits an out-of-bounds index, it OSR exits (Uncountable in\nDFG, OutOfBounds in FTL), and once that exit site is recorded the bytecode parser never inlines\nthat call site again, leaving a generic Call forever.\n\nThis patch does what StringAt already does: the in-bounds code exits with OutOfBounds, and when\nthat exit site is present the bytecode parser emits StringCharCodeAt in an out-of-bounds mode that\nperforms the length check inline and returns NaN.\n\nSince charCodeAt returns NaN for out-of-bounds indices, the out-of-bounds mode uses\nNodeResultDouble.\n\n                                                   Baseline                  Patched\n\nstring-at-char-code-at                          9.0700+-0.2991            9.0434+-0.2745\nstring-char-code-at                             2.3423+-0.1432            2.3154+-0.1080          might be 1.0116x faster\nstring-codePointAt-constant-folding             0.8742+-0.0722            0.8419+-0.0475          might be 1.0384x faster\nstring-charcodeat-out-of-bounds-lookahead\n                                               10.8058+-0.2333     ^      4.8701+-0.2511        ^ definitely 2.2188x faster\n\nTests: JSTests/microbenchmarks/string-charcodeat-out-of-bounds-lookahead.js\n       JSTests/stress/string-charcodeat-cse-array-mode.js\n       JSTests/stress/string-charcodeat-out-of-bounds-constant-folding.js\n       JSTests/stress/string-charcodeat-out-of-bounds-mode.js\n       JSTests/stress/string-charcodeat-out-of-bounds-uses.js\n\n* JSTests/microbenchmarks/string-charcodeat-out-of-bounds-lookahead.js: Added.\n(scan):\n* JSTests/stress/string-charcodeat-cse-array-mode.js: Added.\n(shouldBe):\n(opt):\n* JSTests/stress/string-charcodeat-out-of-bounds-constant-folding.js: Added.\n(shouldBe):\n(charCodeAt):\n(foldedInRange):\n(foldedOutOfRange):\n* JSTests/stress/string-charcodeat-out-of-bounds-mode.js: Added.\n(shouldBe):\n(charCodeAt):\n* JSTests/stress/string-charcodeat-out-of-bounds-uses.js: Added.\n(shouldBe):\n(bitOr):\n(bitAnd):\n(plusOne):\n(isSlash):\n(isNaNResult):\n(switchOn):\n(rope):\n(anyIndex):\n* Source/JavaScriptCore/dfg/DFGAbstractInterpreterInlines.h:\n(JSC::DFG::AbstractInterpreter\u003cAbstractStateType\u003e::executeEffects):\n* Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:\n(JSC::DFG::ByteCodeParser::handleIntrinsicCall):\n* Source/JavaScriptCore/dfg/DFGClobberize.h:\n(JSC::DFG::clobberize):\n* Source/JavaScriptCore/dfg/DFGFixupPhase.cpp:\n(JSC::DFG::FixupPhase::fixupNode):\n* Source/JavaScriptCore/dfg/DFGPredictionPropagationPhase.cpp:\n* Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:\n(JSC::DFG::SpeculativeJIT::compileGetCharCodeAt):\n* Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:\n(JSC::FTL::DFG::LowerDFGToB3::compileStringCharCodeAt):\n\nCanonical link: https://commits.webkit.org/317823@main",
      "email": "sosuke@bun.sh",
      "hash": "89be2da97f720db0fec908746d1cfe3a3c56c91c",
      "subject": "[JSC] Add OOB mode to `StringCharCodeAt` node in DFG/FTL"
    },
    "317824@main": {
      "author": "Tyler Wilcock",
      "avatar": "https://www.gravatar.com/avatar/9545082e6bed96158a9f52dac6e4b869?d=identicon\u0026s=64",
      "cl": "317824@main",
      "clUrl": "https://commits.webkit.org/317824@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320010\nrdar://182947669\n\nReviewed by Andres Gonzalez.\n\nWhen an assistive technology sets AXSelectedTextMarkerRange on the isolated tree,\n-[WebAccessibilityObjectWrapper accessibilitySetValue:forAttribute:] converts the\nincoming marker range to DOM offsets via AXTextMarkerRange::convertToDomOffsetRange(),\nwhich calls AXTextMarker::convertToDomOffset() on each endpoint.\n\nFor a marker anchored to a non-text object, convertToDomOffset() normalizes it to a\ntext-run marker with toTextRunMarker(), which walks forward in pre-order to the nearest\nobject that has text runs. For an empty non-text *leaf* (e.g. an icon button with no\ntext of its own), that walk escapes the element's own subtree and lands on unrelated\ndownstream text. When that text is inside an editable, applying the resulting position\nas the selection moves DOM focus into the editable.\n\nConcretely: with \"Synchronize keyboard focus and VoiceOver cursor\" enabled, moving the\nVoiceOver cursor onto a hover-only button (e.g. Slack's \"More actions\") jumped the cursor\nand focus into the message composer, because the button's marker was walked forward to\nthe composer's text on set.\n\nFix convertToDomOffset() to keep the marker anchored at the object itself when the\nnormalized text run lies outside the object's own subtree — i.e. when the object has no\ntext of its own. A non-text container that genuinely wraps descendant text is unchanged,\nsince its text run is within its subtree.\n\n* LayoutTests/accessibility/mac/set-selected-text-marker-range-on-non-text-element-expected.txt: Added.\n* LayoutTests/accessibility/mac/set-selected-text-marker-range-on-non-text-element.html: Added.\n* Source/WebCore/accessibility/AXTextMarker.cpp:\n(WebCore::AXTextMarker::convertToDomOffset const):\n\nCanonical link: https://commits.webkit.org/317824@main",
      "email": "tyler_w@apple.com",
      "hash": "d9f55c1ea18059d105464a271fd8173f0ebcd7f2",
      "subject": "AX: Setting AXSelectedTextMarkerRange to an empty non-text element moves the selection into an adjacent editable, potentially causing navigation loops"
    },
    "317825@main": {
      "author": "Alan Baradlay",
      "avatar": "https://www.gravatar.com/avatar/788d66417db806c567552cfa1ae89f77?d=identicon\u0026s=64",
      "cl": "317825@main",
      "clUrl": "https://commits.webkit.org/317825@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320097\n\nReviewed by Antti Koivisto.\n\n204380 fixed \"Flexbox sizing logic triggers full repaint on the flex items\" by\nresetting a stretched flex item's logical height *inside the item's own layout* --\nvia RenderBox::shouldResetLogicalHeightBeforeLayout() -\u003e\nresetLogicalHeightBeforeLayoutIfNeeded(), which runs after the item's LayoutRepainter\nhas snapshotted the pre-stretch bounds, so the stretch relayout repaints only the\nstrip it grew into. RenderFlexibleBox signalled \"reset now\" with a dedicated scoped\nflag: m_shouldResetFlexItemLogicalHeightBeforeLayout, set via\nscopedResetFlexItemLogicalHeightBeforeLayout() around the stretch relayout and read\nback through shouldResetFlexItemLogicalHeightBeforeLayout().\n\nThat flag is redundant now that RenderFlexibleBox tracks a FlexLayoutState phase: the\nstretch relayout runs during the CrossAxisItemSizing phase, which the container\nalready exposes as isInCrossAxisStretchLayout(). So drop the flag and have\nRenderBox::shouldResetLogicalHeightBeforeLayout() consult the container's phase\ndirectly. The reset still happens inside the item's own layout (keeping 204380's\nminimal repaint); only the signal changes from a bespoke bool to the phase we already\nmaintain.\n\nThe phase spans the whole cross-axis item-sizing step, slightly broader than the flag\n(which was scoped to the block-axis stretch relayout), so a few additional cross-axis\nrelayouts now reset the height too -- harmless: those relayouts recompute the height\nregardless, and the reset stays within the item's LayoutRepainter scope, so repaint is\nunchanged (fast/repaint/align-items-change.html).\n\nAlso rename stretchFlexItemLogicalHeight to applyStretchedLogicalHeightToFlexItem: it\napplies an already-resolved height (the caller's min/max-clamped stretch target) as an\noverriding border-box height and relays the item out if needed; it does not stretch.\n\n* Source/WebCore/layout/formattingContexts/flex/FlexFormattingContext.cpp:\n(WebCore::FlexFormattingContext::applyStretchAlignmentToFlexItem):\n* Source/WebCore/rendering/RenderBox.cpp:\n(WebCore::RenderBox::shouldResetLogicalHeightBeforeLayout const):\n* Source/WebCore/rendering/RenderFlexibleBox.cpp:\n(WebCore::RenderFlexibleBox::applyStretchedLogicalHeightToFlexItem):\n(WebCore::RenderFlexibleBox::stretchFlexItemLogicalHeight): Deleted.\n* Source/WebCore/rendering/RenderFlexibleBox.h:\n(WebCore::RenderFlexibleBox::shouldResetFlexItemLogicalHeightBeforeLayout const): Deleted.\n(WebCore::RenderFlexibleBox::scopedResetFlexItemLogicalHeightBeforeLayout): Deleted.\n\nCanonical link: https://commits.webkit.org/317825@main",
      "email": "zalan@apple.com",
      "hash": "392828b842971b70070a8ac4c036ae2cc55a6cda",
      "subject": "[cleanup] Drive the flex-item logical-height reset off the FlexLayoutState phase instead of a scoped flag"
    },
    "317826@main": {
      "author": "Chris Dumez",
      "avatar": "https://www.gravatar.com/avatar/a9f21fe3a8baf79b45f3c91572187bdc?d=identicon\u0026s=64",
      "cl": "317826@main",
      "clUrl": "https://commits.webkit.org/317826@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320138\nrdar://183053307\n\nReviewed by Per Arne Vollan.\n\n317709@main fixed a LogStream connection leak by having\nLogStream::stopListeningForIPC() invalidate its StreamServerConnection's\nunderlying IPC::Connection. However, stopListeningForIPC() runs on the main\nthread, while the LogStream's StreamServerConnection is opened on (and thus\nbound to) the shared \"Log work queue\". IPC::Connection::invalidate() asserts\nit is called on its own dispatcher (a release\nASSERT_WITH_SECURITY_IMPLICATION via assertIsCurrent(dispatcher())), so\ninvalidating from the main thread crashed on ASAN/debug builds during\nWebProcessProxy::shutDown() -\u003e stopLogStream().\n\nFix stopListeningForIPC() to dispatch the connection teardown\n(stopReceivingMessages() + invalidate()) onto the log work queue so it runs\non the connection's own dispatcher. Unlike single-owner\nStreamServerConnection users (e.g. RemoteRenderingBackend), we cannot call\nStreamConnectionWorkQueue::stopAndWaitForCompletion() because the queue is\nshared by every LogStream; we only invalidate our own connection.\n\nThe dispatched lambda captures a Ref to both the LogStream and its\nconnection. The connection Ref keeps the connection alive; the LogStream Ref\nis required because StreamServerConnection::invalidate() clears its\nCheckedPtr back to the client (m_client = nullptr), and the LogStream is\notherwise destroyed synchronously when ScopedActiveMessageReceiveQueue drops\nits reference as soon as stopListeningForIPC() returns. LogStream is\nThreadSafeRefCounted with DestructionThread::Any, so destroying it (and its\nWeakPtr\u003cWebProcessProxy\u003e member) off the main thread is safe.\n\nAlso hoist the log work queue from a static local in LogStream::create() to a\nfile-static logWorkQueue() accessor so stopListeningForIPC() can reach the\nsame queue.\n\n* Source/WebKit/Shared/LogStream.mm:\n(WebKit::logWorkQueue):\n(WebKit::LogStream::stopListeningForIPC):\n(WebKit::LogStream::create):\n\nCanonical link: https://commits.webkit.org/317826@main",
      "email": "cdumez@apple.com",
      "hash": "c2562ee994064554fd397a4b23345ef63d039ae7",
      "subject": "REGRESSION(317709@main): http/tests/site-isolation/history/back-iframe-cross-site-no-bf-cache.html crashes invalidating LogStream's IPC connection off the log work queue"
    },
    "317827@main": {
      "author": "Ahmad Saleem",
      "avatar": "https://www.gravatar.com/avatar/38445f84fe28aa19bfeb1f59f6559532?d=identicon\u0026s=64",
      "cl": "317827@main",
      "clUrl": "https://commits.webkit.org/317827@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320116\nrdar://183058948\n\nReviewed by Chris Dumez.\n\nThe completion handler's callOnMainRunLoop block creates a protectedThis\nRefPtr to keep the object alive across the hop to the main run loop, but\nthen calls sessionFailedWithError() through weakThis instead, defeating\nthe guard. Use protectedThis for the call, matching the pattern used\nelsewhere in this file.\n\n* Source/WebCore/platform/mediastream/cocoa/ScreenCaptureKitCaptureSource.mm:\n(WebCore::ScreenCaptureKitCaptureSource::updateStreamConfiguration):\n\nCanonical link: https://commits.webkit.org/317827@main",
      "email": "ahmad.saleem792+github@gmail.com",
      "hash": "7094c62cf4af66330c510c10940315a744a1e34f",
      "subject": "ScreenCaptureKitCaptureSource::updateStreamConfiguration() uses weakThis instead of protectedThis after null-check"
    },
    "317828@main": {
      "author": "Ahmad Saleem",
      "avatar": "https://www.gravatar.com/avatar/38445f84fe28aa19bfeb1f59f6559532?d=identicon\u0026s=64",
      "cl": "317828@main",
      "clUrl": "https://commits.webkit.org/317828@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320069\nrdar://182991785\n\nReviewed by Chris Dumez.\n\ncharactersToFloat() parses into a double and then narrows the result to\nfloat with a plain static_cast, but the \"ok\" flag it reports back was set\npurely from whether the double parse succeeded. A string like \"1e300\"\nparses to a finite double, so ok was reported true, even though casting\nthat double to float overflows to infinity. Callers had no way to tell\nthe float result was bogus.\n\nAdded doubleToFloatCheckingOverflow(), which clears the out-param when\nthe double was finite but the narrowed float is not, and use it from\nboth bool*-returning overloads of charactersToFloat(). The two\nparsedLength-returning overloads take no ok out-param, so there is\nnothing for them to report and they are unchanged aside from dropping\nthe now-inaccurate FIXME.\n\nTest: Tools/TestWebKitAPI/Tests/WTF/WTFString.cpp\n\n* Source/WTF/wtf/text/WTFString.cpp:\n(WTF::doubleToFloatCheckingOverflow):\n(WTF::charactersToFloat):\n* Tools/TestWebKitAPI/Tests/WTF/WTFString.cpp:\n(TestWebKitAPI::TEST(WTF, StringToFloat)):\n\nCanonical link: https://commits.webkit.org/317828@main",
      "email": "ahmad.saleem792+github@gmail.com",
      "hash": "44592cdcc791dd1e6fb2ce283834b34ad4722013",
      "subject": "charactersToFloat() reports success even when a value fits a double but overflows a float"
    },
    "317829@main": {
      "author": "Ahmad Saleem",
      "avatar": "https://www.gravatar.com/avatar/38445f84fe28aa19bfeb1f59f6559532?d=identicon\u0026s=64",
      "cl": "317829@main",
      "clUrl": "https://commits.webkit.org/317829@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320050\nrdar://182987373\n\nReviewed by Chris Dumez.\n\nThe `if (!currentHashtable)` check was always true at that point, since\nthe preceding `if (currentHashtable) return currentHashtable;` already\nestablished it was null. The inner scope then declared a new local\nalso named `currentHashtable`, shadowing the outer one. Removed the\ndead check and renamed the local to `newHashtable` to avoid the\nshadowing; no behavior change.\n\n* Source/WTF/wtf/ParkingLot.cpp:\n\nCanonical link: https://commits.webkit.org/317829@main",
      "email": "ahmad.saleem792+github@gmail.com",
      "hash": "0a9ad7da36c554b99b55d3064b1a405fecac32d6",
      "subject": "ParkingLot::ensureHashtable() has dead always-true check and variable shadowing"
    },
    "317830@main": {
      "author": "Sosuke Suzuki",
      "avatar": "https://www.gravatar.com/avatar/cf9d615e1e00176d99cc4a21d33c3bbb?d=identicon\u0026s=64",
      "cl": "317830@main",
      "clUrl": "https://commits.webkit.org/317830@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=307635\n\nReviewed by Yusuke Suzuki.\n\nThe Boyer-Moore lookahead skip optimization in Yarr JIT was disabled for\npatterns with the /u or /v flags.\n\nThis change:\n\n  1. Removes the eitherUnicode() guard from BoyerMooreInfo collection.\n     The guard is kept only for the multi-pattern SIMD prefilter, which\n     is untouched by this change.\n  2. Adds readCharacterRaw() which reads raw UTF-16 code units in the BM\n     scan loops instead of tryReadUnicodeChar(), avoiding unnecessary\n     surrogate pair decoding overhead in the prefilter.\n  3. Ends the BM window at a character class that can match a non-BMP\n     code point (an inverted class, or one with non-BMP members), since\n     such a class consumes one or two code units and makes the offsets\n     of subsequent terms non-fixed (e.g. /(.A)\\1/u would otherwise miss\n     a match).\n\n                                          TipOfTree                  Patched\n\nregexp-unicode-bm-search              175.9850+-4.8277     ^     16.2982+-0.8780        ^ definitely 10.7978x faster\nregexp-unicode-bm-search-nomatch      168.9133+-1.4194     ^     18.4031+-1.5015        ^ definitely 9.1785x faster\nregexp-unicode-bm-search-emoji         77.8834+-1.1231     ^      7.7590+-0.1699        ^ definitely 10.0378x faster\n\nTests: JSTests/microbenchmarks/regexp-unicode-bm-search-emoji.js\n       JSTests/microbenchmarks/regexp-unicode-bm-search-nomatch.js\n       JSTests/microbenchmarks/regexp-unicode-bm-search.js\n       JSTests/stress/regexp-unicode-bm-search.js\n\n* JSTests/microbenchmarks/regexp-unicode-bm-search-emoji.js: Added.\n* JSTests/microbenchmarks/regexp-unicode-bm-search-nomatch.js: Added.\n* JSTests/microbenchmarks/regexp-unicode-bm-search.js: Added.\n* JSTests/stress/regexp-unicode-bm-search.js: Added.\n(shouldBe):\n(throw.new.Error):\n* Source/JavaScriptCore/yarr/YarrJIT.cpp:\n\nCanonical link: https://commits.webkit.org/317830@main",
      "email": "sosuke@bun.com",
      "hash": "2cea56a80c68a9512e6e62c528c69ebb77887ff8",
      "subject": "[YARR] Enable Boyer-Moore lookahead optimization for Unicode patterns"
    },
    "317831@main": {
      "author": "Ahmad Saleem",
      "avatar": "https://www.gravatar.com/avatar/38445f84fe28aa19bfeb1f59f6559532?d=identicon\u0026s=64",
      "cl": "317831@main",
      "clUrl": "https://commits.webkit.org/317831@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320067\nrdar://182990519\n\nReviewed by Chris Dumez.\n\nunlock() decremented m_recursionCount without first verifying that the\ncalling thread actually owns the lock or that the count is non-zero,\nso a mismatched or extra unlock() call would silently underflow\nm_recursionCount and clear m_ownerThreadUID while the lock is still\nheld by another recursive acquisition. lock() and tryLock() already\nassert their invariants; unlock() should too.\n\n* Source/WTF/wtf/RecursiveLockAdapter.h:\n(WTF::RecursiveLockAdapter::unlock): Assert isOwner() and\nm_recursionCount before decrementing.\n\nCanonical link: https://commits.webkit.org/317831@main",
      "email": "ahmad.saleem792+github@gmail.com",
      "hash": "893787793b2eda796832100033d3f769a4c3fbcd",
      "subject": "RecursiveLockAdapter::unlock() has no assertion guarding against underflow or wrong-owner unlock"
    },
    "317832@main": {
      "author": "Sam Weinig",
      "avatar": "https://www.gravatar.com/avatar/354b409240f9fb3357f498c547423d96?d=identicon\u0026s=64",
      "cl": "317832@main",
      "clUrl": "https://commits.webkit.org/317832@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320103\n\nReviewed by Alan Baradlay.\n\nNow that all Length and LengthPercentage types are using CSS::RangeZoomOptions::Unzoomed,\nwe can remove the bit from CSS::Range and update all the users to use the unannotated\nrange value.\n\nThis also means we can remove the ZoomNeeded type and all overloads that take it.\n\n* Source/WebCore/css/deprecated-cssom/DeprecatedCSSOMRect.cpp:\n* Source/WebCore/css/parser/CSSPropertyParser.cpp:\n* Source/WebCore/css/parser/CSSPropertyParserConsumer+Background.cpp:\n* Source/WebCore/css/parser/CSSPropertyParserConsumer+Filter.cpp:\n* Source/WebCore/css/parser/CSSPropertyParserConsumer+Font.cpp:\n* Source/WebCore/css/parser/CSSPropertyParserConsumer+Font.h:\n* Source/WebCore/css/parser/CSSPropertyParserConsumer+Grid.cpp:\n* Source/WebCore/css/parser/CSSPropertyParserConsumer+Image.cpp:\n* Source/WebCore/css/parser/CSSPropertyParserConsumer+Overflow.cpp:\n* Source/WebCore/css/parser/CSSPropertyParserConsumer+Position.cpp:\n* Source/WebCore/css/parser/CSSPropertyParserConsumer+SVG.cpp:\n* Source/WebCore/css/parser/CSSPropertyParserConsumer+Shapes.cpp:\n* Source/WebCore/css/parser/CSSPropertyParserConsumer+TextDecoration.cpp:\n* Source/WebCore/css/parser/CSSPropertyParserConsumer+Timeline.cpp:\n* Source/WebCore/css/parser/CSSPropertyParserConsumer+Transform.cpp:\n* Source/WebCore/css/parser/CSSPropertyParserCustom.h:\n* Source/WebCore/css/query/ContainerQueryFeatures.cpp:\n* Source/WebCore/css/query/GenericMediaQueryEvaluator.cpp:\n* Source/WebCore/css/query/GenericMediaQueryParser.cpp:\n* Source/WebCore/css/query/GenericMediaQueryTypes.h:\n* Source/WebCore/css/values/backgrounds/CSSBorderImageOutset.h:\n* Source/WebCore/css/values/backgrounds/CSSBorderImageWidth.h:\n* Source/WebCore/css/values/borders/CSSBorderRadius.h:\n* Source/WebCore/css/values/borders/CSSBoxShadow.h:\n* Source/WebCore/css/values/filter-effects/CSSBlurFunction.h:\n* Source/WebCore/css/values/filter-effects/CSSDropShadowFunction.h:\n* Source/WebCore/css/values/grid/CSSGridTrackBreadth.h:\n* Source/WebCore/css/values/grid/CSSGridTrackSize.h:\n* Source/WebCore/css/values/images/CSSGradient.h:\n* Source/WebCore/css/values/masking/CSSClip.h:\n* Source/WebCore/css/values/masking/CSSMaskBorderOutset.h:\n* Source/WebCore/css/values/masking/CSSMaskBorderWidth.h:\n* Source/WebCore/css/values/non-standard/CSSWebkitBoxReflect.h:\n* Source/WebCore/css/values/primitives/CSSPosition.cpp:\n* Source/WebCore/css/values/primitives/CSSPosition.h:\n* Source/WebCore/css/values/primitives/CSSPrimitiveNumericConcepts.h:\n* Source/WebCore/css/values/primitives/CSSPrimitiveNumericRange.h:\n* Source/WebCore/css/values/shapes/CSSCircleFunction.h:\n* Source/WebCore/css/values/shapes/CSSEllipseFunction.h:\n* Source/WebCore/css/values/shapes/CSSInsetFunction.h:\n* Source/WebCore/css/values/shapes/CSSPolygonFunction.h:\n* Source/WebCore/css/values/shapes/CSSRectFunction.h:\n* Source/WebCore/css/values/shapes/CSSShapeFunction.h:\n* Source/WebCore/css/values/shapes/CSSXywhFunction.h:\n* Source/WebCore/css/values/text-decoration/CSSTextShadow.h:\n* Source/WebCore/editing/ApplyStyleCommand.cpp:\n* Source/WebCore/editing/EditingStyle.cpp:\n* Source/WebCore/editing/FontAttributeChanges.cpp:\n* Source/WebCore/editing/cocoa/NodeHTMLConverter.mm:\n* Source/WebCore/html/canvas/CanvasRenderingContext2DBase.cpp:\n* Source/WebCore/layout/formattingContexts/table/TableFormattingContext.cpp:\n* Source/WebCore/layout/formattingContexts/table/TableGrid.h:\n* Source/WebCore/page/IntersectionObserver.cpp:\n* Source/WebCore/page/IntersectionObserverMarginBox.h:\n* Source/WebCore/rendering/RenderBox.cpp:\n* Source/WebCore/rendering/RenderBox.h:\n* Source/WebCore/rendering/RenderBoxModelObject.h:\n* Source/WebCore/rendering/RenderBoxModelObjectInlines.h:\n* Source/WebCore/rendering/TextBoxPainter.h:\n* Source/WebCore/rendering/cocoa/RenderThemeCocoa.mm:\n* Source/WebCore/rendering/ios/RenderThemeIOS.mm:\n* Source/WebCore/rendering/mac/RenderThemeMac.mm:\n* Source/WebCore/rendering/style/OutlineValue.h:\n* Source/WebCore/style/StyleBuilderCustom.h:\n* Source/WebCore/style/StyleCustomProperty.h:\n* Source/WebCore/style/StyleExtractorCustom.h:\n* Source/WebCore/style/StyleInterpolation.cpp:\n* Source/WebCore/style/StyleResolveForFont.cpp:\n* Source/WebCore/style/calc/StyleCalculationTree+Evaluation.cpp:\n* Source/WebCore/style/calc/StyleCalculationTree+Evaluation.h:\n* Source/WebCore/style/calc/StyleCalculationValue.cpp:\n* Source/WebCore/style/calc/StyleCalculationValue.h:\n* Source/WebCore/style/computed/StyleComputedStyle.cpp:\n* Source/WebCore/style/computed/StyleComputedStyle.h:\n* Source/WebCore/style/computed/StyleComputedStyleBase.h:\n* Source/WebCore/style/values/align/StyleGapGutter.h:\n* Source/WebCore/style/values/animations/StyleSingleAnimationRange.h:\n* Source/WebCore/style/values/backgrounds/StyleBackgroundSize.h:\n* Source/WebCore/style/values/backgrounds/StyleBorderImageOutset.h:\n* Source/WebCore/style/values/backgrounds/StyleBorderImageWidth.h:\n* Source/WebCore/style/values/backgrounds/StyleLineWidth.h:\n* Source/WebCore/style/values/borders/StyleBorderRadius.cpp:\n* Source/WebCore/style/values/borders/StyleBorderRadius.h:\n* Source/WebCore/style/values/borders/StyleBoxShadow.h:\n* Source/WebCore/style/values/box/StyleMargin.h:\n* Source/WebCore/style/values/box/StylePadding.h:\n* Source/WebCore/style/values/fill-stroke/StyleStrokeWidth.h:\n* Source/WebCore/style/values/filter-effects/StyleBlurFunction.h:\n* Source/WebCore/style/values/filter-effects/StyleDropShadowFunction.cpp:\n* Source/WebCore/style/values/filter-effects/StyleDropShadowFunction.h:\n* Source/WebCore/style/values/flexbox/StyleFlexBasis.h:\n* Source/WebCore/style/values/grid/StyleFlowTolerance.cpp:\n* Source/WebCore/style/values/grid/StyleFlowTolerance.h:\n* Source/WebCore/style/values/grid/StyleGridTrackBreadth.cpp:\n* Source/WebCore/style/values/grid/StyleGridTrackBreadth.h:\n* Source/WebCore/style/values/grid/StyleGridTrackSize.h:\n* Source/WebCore/style/values/images/StyleGradient.cpp:\n* Source/WebCore/style/values/images/StyleGradient.h:\n* Source/WebCore/style/values/inline/StyleLineHeight.h:\n* Source/WebCore/style/values/inline/StyleVerticalAlign.h:\n* Source/WebCore/style/values/masking/StyleClip.h:\n* Source/WebCore/style/values/masking/StyleMaskBorderOutset.h:\n* Source/WebCore/style/values/masking/StyleMaskBorderWidth.h:\n* Source/WebCore/style/values/motion/StyleOffsetDistance.h:\n* Source/WebCore/style/values/multicol/StyleColumnWidth.h:\n* Source/WebCore/style/values/non-standard/StyleWebKitBorderSpacing.h:\n* Source/WebCore/style/values/non-standard/StyleWebKitBoxReflect.h:\n* Source/WebCore/style/values/non-standard/StyleWebKitMarqueeIncrement.h:\n* Source/WebCore/style/values/non-standard/StyleWebKitTextStrokeWidth.h:\n* Source/WebCore/style/values/outline/StyleOutlineOffset.h:\n* Source/WebCore/style/values/overflow/StyleOverflowClipMargin.h:\n* Source/WebCore/style/values/page/StylePageSize.cpp:\n* Source/WebCore/style/values/page/StylePageSize.h:\n* Source/WebCore/style/values/position/StyleInset.h:\n* Source/WebCore/style/values/primitives/StylePosition.cpp:\n* Source/WebCore/style/values/primitives/StylePosition.h:\n* Source/WebCore/style/values/primitives/StylePrimitiveData.cpp:\n* Source/WebCore/style/values/primitives/StylePrimitiveData.h:\n* Source/WebCore/style/values/primitives/StylePrimitiveNumeric.h:\n* Source/WebCore/style/values/primitives/StylePrimitiveNumericTypes+Conversions.h:\n* Source/WebCore/style/values/primitives/StylePrimitiveNumericTypes+Evaluation.h:\n* Source/WebCore/style/values/primitives/StylePrimitiveNumericTypes+EvaluationMinimum.h:\n* Source/WebCore/style/values/primitives/StylePrimitiveNumericTypes.h:\n* Source/WebCore/style/values/primitives/StyleUnevaluatedCalculation.cpp:\n* Source/WebCore/style/values/primitives/StyleUnevaluatedCalculation.h:\n* Source/WebCore/style/values/rhythm/StyleBlockStepSize.h:\n* Source/WebCore/style/values/scroll-animations/StyleViewTimelineInsetItem.h:\n* Source/WebCore/style/values/scroll-snap/StyleScrollMargin.h:\n* Source/WebCore/style/values/scroll-snap/StyleScrollPadding.h:\n* Source/WebCore/style/values/shapes/StyleCircleFunction.h:\n* Source/WebCore/style/values/shapes/StyleEllipseFunction.h:\n* Source/WebCore/style/values/shapes/StyleInsetFunction.h:\n* Source/WebCore/style/values/shapes/StylePolygonFunction.h:\n* Source/WebCore/style/values/shapes/StyleRectFunction.cpp:\n* Source/WebCore/style/values/shapes/StyleShapeFunction.cpp:\n* Source/WebCore/style/values/shapes/StyleShapeFunction.h:\n* Source/WebCore/style/values/shapes/StyleShapeMargin.h:\n* Source/WebCore/style/values/sizing/StyleContainIntrinsicSize.h:\n* Source/WebCore/style/values/sizing/StyleMaximumSize.h:\n* Source/WebCore/style/values/sizing/StyleMinimumSize.h:\n* Source/WebCore/style/values/sizing/StylePreferredSize.h:\n* Source/WebCore/style/values/svg/StyleSVGBaselineShift.h:\n* Source/WebCore/style/values/svg/StyleSVGCenterCoordinateComponent.h:\n* Source/WebCore/style/values/svg/StyleSVGCoordinateComponent.h:\n* Source/WebCore/style/values/svg/StyleSVGRadius.h:\n* Source/WebCore/style/values/svg/StyleSVGRadiusComponent.h:\n* Source/WebCore/style/values/svg/StyleSVGStrokeDasharray.h:\n* Source/WebCore/style/values/svg/StyleSVGStrokeDashoffset.h:\n* Source/WebCore/style/values/text-decoration/StyleTextDecorationInset.cpp:\n* Source/WebCore/style/values/text-decoration/StyleTextDecorationInset.h:\n* Source/WebCore/style/values/text-decoration/StyleTextDecorationThickness.h:\n* Source/WebCore/style/values/text-decoration/StyleTextShadow.cpp:\n* Source/WebCore/style/values/text-decoration/StyleTextShadow.h:\n* Source/WebCore/style/values/text-decoration/StyleTextUnderlineOffset.h:\n* Source/WebCore/style/values/text/StyleLetterSpacing.cpp:\n* Source/WebCore/style/values/text/StyleLetterSpacing.h:\n* Source/WebCore/style/values/text/StyleTabSize.h:\n* Source/WebCore/style/values/text/StyleTextIndent.h:\n* Source/WebCore/style/values/text/StyleWordSpacing.cpp:\n* Source/WebCore/style/values/text/StyleWordSpacing.h:\n* Source/WebCore/style/values/transforms/StylePerspective.h:\n* Source/WebCore/style/values/transforms/StyleTransformFunction.cpp:\n* Source/WebCore/style/values/transforms/StyleTransformOrigin.h:\n* Source/WebCore/style/values/transforms/functions/StyleTranslateTransformFunction.h:\n* Source/WebCore/style/values/viewport/StyleZoomPrimitives.h:\n* Source/WebCore/style/values/viewport/StyleZoomPrimitivesInlines.h:\n* Source/WebCore/svg/SVGLengthContext.cpp:\n* Source/WebCore/svg/SVGLengthContext.h:\n* Source/WebCore/svg/SVGLengthValue.cpp:\n* Source/WebCore/svg/SVGLengthValue.h:\n\nCanonical link: https://commits.webkit.org/317832@main",
      "email": "sam@webkit.org",
      "hash": "8ebb9a6a435d1c7565314aa3bc01af4ec31d970c",
      "subject": "[EvaluationTimeZoom] Remove CSS::RangeZoomOptions from CSS::Range"
    },
    "317833@main": {
      "author": "Alan Baradlay",
      "avatar": "https://www.gravatar.com/avatar/788d66417db806c567552cfa1ae89f77?d=identicon\u0026s=64",
      "cl": "317833@main",
      "clUrl": "https://commits.webkit.org/317833@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320131\n\nReviewed by Antti Koivisto.\n\nThe number of flex items on the first and last flex line\n(m_numberOfFlexItemsOnFirstLine / m_numberOfFlexItemsOnLastLine) is produced by the\nFlexFormattingContext (returned in its Result) and consumed only by the flex baseline\nqueries -- firstLineBaseline / lastLineBaseline / flexItemForFirst|LastBaseline --\nwhich all live on LayoutIntegration::FlexLayout. RenderFlexibleBox held the two\nmembers but never read them; it only reset them and let the integration layer reach\nacross (flexBox().m_numberOfFlexItemsOn...) to write and read them.\n\nMove them onto LayoutIntegration::FlexLayout, which is a persistent member of\nRenderFlexibleBox (so it outlives the stack-scoped FlexFormattingContext and is still\naround for the parent's post-layout baseline queries) and is where the baseline logic\nthat uses them already lives. The integration layer now writes and reads its own\nmembers, and resets them at the top of FlexLayout::layout() -- covering the\nempty-container early return that RenderFlexibleBox::layoutBlock's reset used to\nhandle. RenderFlexibleBox loses both members and the reset; firstLineBaseline() /\nlastLineBaseline() already just forward to m_flexLayout.\n\n* Source/WebCore/layout/integration/flex/LayoutIntegrationFlexLayout.cpp:\n(WebCore::LayoutIntegration::FlexLayout::layout):\n(WebCore::LayoutIntegration::FlexLayout::firstLineBaseline const):\n(WebCore::LayoutIntegration::FlexLayout::lastLineBaseline const):\n(WebCore::LayoutIntegration::FlexLayout::flexItemForFirstBaseline const):\n(WebCore::LayoutIntegration::FlexLayout::flexItemForLastBaseline const):\n* Source/WebCore/layout/integration/flex/LayoutIntegrationFlexLayout.h:\n* Source/WebCore/rendering/RenderFlexibleBox.cpp:\n(WebCore::RenderFlexibleBox::layoutBlock):\n* Source/WebCore/rendering/RenderFlexibleBox.h:\n\nCanonical link: https://commits.webkit.org/317833@main",
      "email": "zalan@apple.com",
      "hash": "0f389116ff7c15568402de1c99a6e709e9687a4e",
      "subject": "[cleanup] Move the flex first/last-line item counts onto LayoutIntegration::FlexLayout"
    },
    "317834@main": {
      "author": "Sam Sneddon",
      "avatar": "https://www.gravatar.com/avatar/99f6b56d9db9d32920dfcc56deae86fc?d=identicon\u0026s=64",
      "cl": "317834@main",
      "clUrl": "https://commits.webkit.org/317834@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319610\nrdar://182438327\n\nReviewed by BJ Burg.\n\nThe Touch branch of transitionInputSourceToState never adopted\n283790@main's change to dispatch off b.mouseInteraction: it still\ninfers TouchDown/LiftUp/MoveTo purely from pressedMouseButton edges.\nsafaridriver's paired fix for the same bug stopped clearing\npressedMouseButton on pointerUp, relying on mouseInteraction alone to\nsignal Up, so pressedMouseButton now stays set across the whole\npointerDown/pointerUp pair. Since the Touch branch only emits LiftUp\nwhen pressedMouseButton goes from set to unset, no LiftUp is emitted\nfor the pointerUp action itself; the touch stays held until the next\ncommand (or the Release Actions reset keyframe) lifts it late and at\nthe wrong coordinate.\n\nPort 283790@main's approach to the Touch branch, mirroring the\nMouse/Pen branch exactly: dispatch off b.mouseInteraction with no\npressedMouseButton-delta fallback. This makes the Up keyframe's\nresolveLocation(origin=Pointer, location=(0,0)) resolve to the down\ncoordinate, so LiftUp now fires in place during the pointerUp action's\nown keyframe transition.\n\n* Source/WebKit/UIProcess/Automation/SimulatedInputDispatcher.cpp:\n(WebKit::touchInteractionForMouseInteraction):\n(WebKit::SimulatedInputDispatcher::transitionInputSourceToState):\n\nCanonical link: https://commits.webkit.org/317834@main",
      "email": "gsnedders@apple.com",
      "hash": "e59b5d3cc487c7796cca696ac3a05b2f98b739b2",
      "subject": "REGRESSION(283790@main): the touch path didn't adopt mouseInteraction and no longer works"
    },
    "317835@main": {
      "author": "Alex Christensen",
      "avatar": "https://www.gravatar.com/avatar/b087c5dfcb1233e80cad9105fd5a1ac6?d=identicon\u0026s=64",
      "cl": "317835@main",
      "clUrl": "https://commits.webkit.org/317835@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320030\nrdar://182965348\n\nReviewed by Basuke Suzuki.\n\nThis works on platforms with the accessor for the security metadata from webtransport metadata,\nnw_webtransport_metadata_copy_sec_protocol_metadata.\n\n* LayoutTests/imported/w3c/web-platform-tests/interfaces/webtransport.idl:\n* LayoutTests/imported/w3c/web-platform-tests/webtransport/export-keying-material.https.any-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/webtransport/export-keying-material.https.any.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/webtransport/export-keying-material.https.any.js: Added.\n(toBytes):\n(arraysEqual):\n(promise_test.async t):\n* LayoutTests/imported/w3c/web-platform-tests/webtransport/export-keying-material.https.any.serviceworker-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/webtransport/export-keying-material.https.any.serviceworker.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/webtransport/export-keying-material.https.any.sharedworker-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/webtransport/export-keying-material.https.any.sharedworker.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/webtransport/export-keying-material.https.any.worker-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/webtransport/export-keying-material.https.any.worker.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/webtransport/idlharness.https.sub.any-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/webtransport/idlharness.https.sub.any.serviceworker-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/webtransport/idlharness.https.sub.any.sharedworker-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/webtransport/idlharness.https.sub.any.worker-expected.txt:\n* Source/WebCore/Modules/webtransport/WebTransport.cpp:\n(WebCore::WebTransport::exportKeyingMaterial):\n* Source/WebCore/Modules/webtransport/WebTransport.h:\n* Source/WebCore/Modules/webtransport/WebTransport.idl:\n* Source/WebCore/Modules/webtransport/WebTransportSession.h:\n* Source/WebCore/Modules/webtransport/WorkerWebTransportSession.cpp:\n(WebCore::WorkerWebTransportSession::exportKeyingMaterial):\n* Source/WebCore/Modules/webtransport/WorkerWebTransportSession.h:\n* Source/WebCore/PAL/pal/spi/cocoa/NetworkSPI.h:\n* Source/WebKit/Configurations/AllowedSPI.toml:\n* Source/WebKit/NetworkProcess/cocoa/NetworkSoftLink.h:\n* Source/WebKit/NetworkProcess/cocoa/NetworkSoftLink.mm:\n* Source/WebKit/NetworkProcess/webtransport/NetworkTransportSession.cpp:\n(WebKit::NetworkTransportSession::exportKeyingMaterial):\n* Source/WebKit/NetworkProcess/webtransport/NetworkTransportSession.h:\n(WebKit::NetworkTransportSession::SecurityProtocolMetadata::create):\n(WebKit::NetworkTransportSession::SecurityProtocolMetadata::receivedMetadata):\n(WebKit::NetworkTransportSession::SecurityProtocolMetadata::metadata const):\n* Source/WebKit/NetworkProcess/webtransport/NetworkTransportSession.messages.in:\n* Source/WebKit/NetworkProcess/webtransport/cocoa/NetworkTransportSessionCocoa.mm:\n(WebKit::NetworkTransportSession::create):\n(WebKit::NetworkTransportSession::NetworkTransportSession):\n(WebKit::createParameters):\n(WebKit::NetworkTransportSession::exportKeyingMaterial):\n* Source/WebKit/Scripts/webkit/opaque_ipc_types.tracking.in:\n* Source/WebKit/WebProcess/Network/WebTransportSession.cpp:\n(WebKit::WebTransportSession::exportKeyingMaterial):\n* Source/WebKit/WebProcess/Network/WebTransportSession.h:\n\nCanonical link: https://commits.webkit.org/317835@main",
      "email": "achristensen@apple.com",
      "hash": "832fafdf37776762c2c98d44541e14b0b3838899",
      "subject": "Implement WebTransport.exportKeyingMaterial"
    },
    "317836@main": {
      "author": "Yusuke Suzuki",
      "avatar": "https://www.gravatar.com/avatar/3455d9081295e3e740c1ffa901217d9b?d=identicon\u0026s=64",
      "cl": "317836@main",
      "clUrl": "https://commits.webkit.org/317836@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320128\nrdar://183067008\n\nReviewed by Yijia Huang.\n\n/^regexp/ or sticky bit (y) is used for testing frequently, and the\npurpose of this is typically accepting or rejecting a subject. In\nparticular, sticky bit is introduced mainly for tokenizing pattern, and\nit should extremely quickly reject a subject when it does not match and\nthis pattern is expected use case.\n\nFrom this perspective, this patch introduces fast-fail filter. This is\nsimilar to YarrJIT boyermoore lookahead, but the purpose is more\nspecific: it is quickly rejecting a subject which never matches. On the\nother hand, boyermoore lookahead's purpose is finding the false-positive\nmatching index. We run FirstCharacterBitmapBuilder to collect BitSet for\nlatin-1 range which quickly answers rejection to avoid actual costly\nmatching operations. Currently we are only accepting latin-1 (8-bit),\nbut we should extend it for 16-bit cases as well.\n\nWhen sticky bit is used, RegExp will work as if it is having BOL\nassertion with the current lastIndex offset of a subject. So we do not\nneed to check BOL, and instead, we need to extract a character from\nlastIndex place. Otherwise, we can just extract a character from index 0\nand do this filtering only when the pattern is having\none-character-size-prefix and the subject is 8-bit. We do not do this\nfiltering for global bit case as it is extracting a character from lastIndex.\n\nTests: JSTests/stress/regexp-exec-anchored-first-char-filter.js\n       JSTests/stress/regexp-exec-sticky-first-char-filter.js\n       JSTests/stress/regexp-test-anchored-first-char-filter.js\n\n* JSTests/stress/regexp-exec-anchored-first-char-filter.js: Added.\n(shouldBe):\n(execStr):\n(step):\n* JSTests/stress/regexp-exec-sticky-first-char-filter.js: Added.\n(shouldBe):\n(shouldThrow):\n(step):\n* JSTests/stress/regexp-test-anchored-first-char-filter.js: Added.\n(shouldBe):\n(step):\n(check):\n* Source/JavaScriptCore/dfg/DFGCommonData.h:\n* Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:\n* Source/JavaScriptCore/dfg/DFGSpeculativeJIT.h:\n* Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:\n(JSC::DFG::SpeculativeJIT::emitFirstCharacterBitmapMatch):\n* Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:\n(JSC::FTL::DFG::LowerDFGToB3::compileCompareStrictEq):\n* Source/JavaScriptCore/yarr/YarrPattern.cpp:\n(JSC::Yarr::FirstCharacterBitmapBuilder::FirstCharacterBitmapBuilder):\n(JSC::Yarr::FirstCharacterBitmapBuilder::build):\n(JSC::Yarr::FirstCharacterBitmapBuilder::setBit):\n(JSC::Yarr::FirstCharacterBitmapBuilder::addCharacterClass):\n(JSC::Yarr::FirstCharacterBitmapBuilder::addTerm):\n(JSC::Yarr::FirstCharacterBitmapBuilder::addAlternative):\n(JSC::Yarr::FirstCharacterBitmapBuilder::addDisjunction):\n(JSC::Yarr::computeStickyFirstCharacterBitmap):\n(JSC::Yarr::computeAnchoredFirstCharacterBitmap):\n* Source/JavaScriptCore/yarr/YarrPattern.h:\n\nCanonical link: https://commits.webkit.org/317836@main",
      "email": "ysuzuki@apple.com",
      "hash": "d328c270769037f111e31474429e19999c446382",
      "subject": "[JSC] DFG / FTL should have fast-fail filter for RegExp with BOL assertions"
    },
    "317837@main": {
      "author": "David Kilzer",
      "avatar": "https://www.gravatar.com/avatar/e228ffc7a792e70bf2d160563c18dcc6?d=identicon\u0026s=64",
      "cl": "317837@main",
      "clUrl": "https://commits.webkit.org/317837@main",
      "description": "\u003chttps://bugs.webkit.org/show_bug.cgi?id=319644\u003e\n\u003crdar://182463168\u003e\n\nReviewed by Marcus Plutowski.\n\nbmalloc falls back to the system allocator under ThreadSanitizer\n(`BUSE(SYSTEM_MALLOC)` via `BTSAN_ENABLED`), which disables\n`BUSE(LIBPAS)` and `BUSE(TZONE)`.  The WTF and libpas allocator\nswitches had no matching TSan condition, so they disagreed with\nbmalloc throughout the Xcode ThreadSanitizer build.  Give WTF's\n`USE(SYSTEM_MALLOC)` a ThreadSanitizer branch so `USE(TZONE_MALLOC)`\nand `USE(LIBPAS)` agree; otherwise `TZoneMalloc.h` #errors \"TZones\nenabled in WTF, but not enabled in bmalloc\" and WTF/JavaScriptCore\nreference libpas entry points bmalloc no longer provides.  This is\nthe Xcode companion to the CMake `mac-tsan` fix (313486@main), which\nthe Xcode driver does not pick up.\n\nDisable Memory Tagging Extension (MTE) under ThreadSanitizer via a\nnew `PAS_TSAN_ENABLED`, mirroring `PAS_ASAN_ENABLED`.  MTE is a libpas\nfeature, so once libpas is disabled the MTE paths in `pas_mte.h` and\n`pas_zero_memory.h` dereference the now-undeclared `g_config` on\narm64e internal-SDK builds.\n\nGate `SequesteredImmortalHeap::installScavenger()` on `USE(LIBPAS)`.\nIt installs a callback into libpas's scavenger, which does not exist\nunder the system allocator, but the surrounding code is gated on\n`USE(PROTECTED_JIT)` rather than `USE(LIBPAS)`.\n\nDefine `__SANITIZE_THREAD__` for the Swift Clang importer under TSan,\nmirroring the existing ASan `__SANITIZE_ADDRESS__` flag.  The importer\ndoes not receive `-fsanitize=thread`, so C++ headers it imports for\nSwift/C++ interop would compute `USE(TZONE_MALLOC)` differently than\nthe instrumented C++ compile and emit undefined TZone references (for\nexample in WebGPU's Swift sources).  Also add the compact-unwind\nworkaround to `TestIPC` since it needs it now.\n\nNo new tests since this is a build configuration fix.\n\n* Configurations/Sanitizers.xcconfig:\n* Source/WTF/wtf/FastMalloc.h:\n* Source/WTF/wtf/PlatformUse.h:\n* Source/WTF/wtf/SequesteredImmortalHeap.cpp:\n(WTF::SequesteredImmortalHeap::installScavenger):\n* Source/bmalloc/libpas/src/libpas/pas_config.h:\n* Source/bmalloc/libpas/src/libpas/pas_platform.h:\n\nCanonical link: https://commits.webkit.org/317837@main",
      "email": "ddkilzer@apple.com",
      "hash": "c09c1834385f2eac98a7131b10a73369046dc429",
      "subject": "[TSan][Xcode] USE(LIBPAS) and USE(TZONE_MALLOC) should be disabled when bmalloc falls back to the system allocator under TSan"
    },
    "317838@main": {
      "author": "Wenson Hsieh",
      "avatar": "https://www.gravatar.com/avatar/c8fba82556fd4988c78bd3a0aee2a44e?d=identicon\u0026s=64",
      "cl": "317838@main",
      "clUrl": "https://commits.webkit.org/317838@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320137\nrdar://183072168\n\nReviewed by Abrar Rahman Protyasha.\n\nWhen handling a click interaction with a valid `uid` and `text`, we attempt to search within the\n`uid` for the given text, and reject the interaction if the search text can't be found. In the case\nwhere text in a click target spans two block-level elements, producing a text extraction like the\nfollowing:\n\n```\nlink uid=123 url=/settings\n    '05'\n    'SETTINGS'\n…\n```\n\n...if the agent issues `click(uid=\"123\", text=\"05 SETTINGS\")`, this ends up failing because we\nexpect `05\\nSETTINGS` instead. Avoid this failure mode by relaxing the heuristic for text-search-\nbased interactions, so that it's generally agnostic to whitespace (in this case where an explicit\ntarget was specified).\n\nTest: TextExtractionTests.InteractionWithSearchTextSpanningBlockBoundary\n\n* Source/WebCore/page/text-extraction/TextExtraction.cpp:\n(WebCore::TextExtraction::searchTextMatchesElementLabelOrRenderedText):\n(WebCore::TextExtraction::resolveMouseTarget):\n(WebCore::TextExtraction::textDescription):\n* Tools/TestWebKitAPI/Tests/WebKit/WKWebView/TextExtractionTests.mm:\n(TestWebKitAPI::TEST(TextExtractionTests, InteractionWithSearchTextSpanningBlockBoundary)):\n\nCanonical link: https://commits.webkit.org/317838@main",
      "email": "wenson_hsieh@apple.com",
      "hash": "6a3930a0038082ecf2006593e6fd37f8b2468d2c",
      "subject": "[Text Extraction] Automatically Fix Passwords: agent is occasionally unable to click the \"05 Settings\" link on www.zara.com"
    },
    "317839@main": {
      "author": "Chris Dumez",
      "avatar": "https://www.gravatar.com/avatar/a9f21fe3a8baf79b45f3c91572187bdc?d=identicon\u0026s=64",
      "cl": "317839@main",
      "clUrl": "https://commits.webkit.org/317839@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320075\n\nReviewed by Aditya Keerthi and Abrar Rahman Protyasha.\n\nTest: Tools/TestWebKitAPI/Tests/WebKit/WKWebView/ios/UIViewTreeAsText.mm\n\n* Source/WebKit/UIProcess/API/ios/WKWebViewTestingIOS.mm:\n(dumpUIView):\n* Tools/TestWebKitAPI/Tests/WebKit/WKWebView/ios/UIViewTreeAsText.mm: Added.\n(TEST(WebKit, UIViewTreeAsTextDumpsLayerPositionYCoordinate)):\n* LayoutTests/platform/visionos/transforms/separated-image-animated-expected.txt:\n* LayoutTests/platform/visionos/transforms/separated-image-downgrade-content-expected.txt:\n* LayoutTests/platform/visionos/transforms/separated-image-downgrade-expected.txt:\n* LayoutTests/platform/visionos/transforms/separated-image-downgrade-tiled-expected.txt:\n* LayoutTests/platform/visionos/transforms/separated-image-upgrade-expected.txt:\n* LayoutTests/platform/visionos/transforms/separated-image-upgrade-tiled-expected.txt:\n\nCanonical link: https://commits.webkit.org/317839@main",
      "email": "cdumez@apple.com",
      "hash": "30a61de7cfcf92cb352672472512cc97c6bbf492",
      "subject": "WKWebViewTestingIOS.mm's dumpUIView() is using point.x instead of point.y"
    },
    "317840@main": {
      "author": "Devin Rousso",
      "avatar": "https://www.gravatar.com/avatar/c9e757d973342c773f107a94b70cb9cd?d=identicon\u0026s=64",
      "cl": "317840@main",
      "clUrl": "https://commits.webkit.org/317840@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=310253\n\u003crdar://problem/172895157\u003e\n\nReviewed by Yusuke Suzuki.\n\n* LayoutTests/inspector/unit-tests/cookie.html:\n* LayoutTests/inspector/unit-tests/cookie-expected.txt:\n\nCanonical link: https://commits.webkit.org/317840@main",
      "email": "hi@devinrousso.com",
      "hash": "24f43d38bfcb60bb3e2c7edaee56ffbf6901398f",
      "subject": "inspector/unit-tests/cookie.html expected output hardcodes Pacific Daylight Time timezone"
    },
    "317841@main": {
      "author": "Devin Rousso",
      "avatar": "https://www.gravatar.com/avatar/c9e757d973342c773f107a94b70cb9cd?d=identicon\u0026s=64",
      "cl": "317841@main",
      "clUrl": "https://commits.webkit.org/317841@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319302\n\nReviewed by Yusuke Suzuki.\n\nIDL bindings consumes settings via the raw `SettingsValues` instead of the corresponding getter on `Settings`.\n\nAs a result, `inspectorOverride` has no effect on it since that intercepts the getter on `Settings` instead of modifying `SettingsValues`.\n\nIt's probably far more common to read a `Settings` value than write it, so move this logic to the setter instead.\n\nAs a result, the `inspectorOverride` is now used to store the old value and any non-`inspectorOverride` set value since then.\n\nThis allows for the `inspectorOverride` setter to modify the underlying `SettingsValues`.\n\nWhen the `inspectorOverride` is removed, the stored value is used to (re)set the `SettingsValues`.\n\nThis has the added benefit of removing an extra function call when getting `Settings` that have an `inspectorOverride`.\n\n* Source/WTF/Scripts/Preferences/UnifiedWebPreferences.yaml:\n* Source/WebCore/Scripts/GenerateSettings.rb:\n* Source/WebCore/Scripts/SettingsTemplates/Settings.h.erb:\n* Source/WebCore/Scripts/SettingsTemplates/Settings.cpp.erb:\n\n* Source/WebCore/inspector/agents/InspectorPageAgent.cpp:\n(WebCore::InspectorPageAgent::disable):\n(WebCore::InspectorPageAgent::overrideSetting):\n(WebCore::InspectorPageAgent::overrideSettingByModifyingValue): Deleted.\n* Source/WebCore/inspector/agents/InspectorPageAgent.h:\n\nCanonical link: https://commits.webkit.org/317841@main",
      "email": "hi@devinrousso.com",
      "hash": "860d7d88a9b5c4e1294ee415a4c2b4cbeb89974b",
      "subject": "Web Inspector: `inspectorOverride` should apply to `SettingsValues`"
    },
    "317842@main": {
      "author": "Devin Rousso",
      "avatar": "https://www.gravatar.com/avatar/c9e757d973342c773f107a94b70cb9cd?d=identicon\u0026s=64",
      "cl": "317842@main",
      "clUrl": "https://commits.webkit.org/317842@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320159\n\nReviewed by Yusuke Suzuki.\n\n* Source/WebCore/inspector/agents/WebHeapAgent.cpp:\n(WebCore::SendGarbageCollectionEventsTask::SendGarbageCollectionEventsTask):\nUse the current `RunLoop` so that `Worker` teardown stops the `Timer` on the thread that owns it.\n\n* LayoutTests/inspector/worker/heap-gc.html: Added.\n* LayoutTests/inspector/worker/heap-gc-expected.txt: Added.\n\nCanonical link: https://commits.webkit.org/317842@main",
      "email": "hi@devinrousso.com",
      "hash": "c608bab05f6e8ec912c90e2254a45fab47ea4ffc",
      "subject": "Web Inspector: Worker: bind delayed heap events to the current run loop"
    },
    "317844@main": {
      "author": "Sosuke Suzuki",
      "avatar": "https://www.gravatar.com/avatar/e63b87350fe19bdd9a30c7234eda45af?d=identicon\u0026s=64",
      "cl": "317844@main",
      "clUrl": "https://commits.webkit.org/317844@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320144\n\nReviewed by Yusuke Suzuki.\n\nAbstractModuleRecord::m_dependencies duplicated the specifier-to-module mapping\nthat m_loadedModules ([[LoadedModules]]) already holds, and was populated a second\ntime during InnerModuleLinking. hostResolveImportedModule now looks up m_loadedModules\ndirectly by probing each ScriptFetchParameters::Type (JavaScript first, which is what\nrequests default to), which also lets us drop the linear-scan fallback\nJSModuleLoader::maybeGetImportedModule and one Vector copy in visitChildren.\n\nThis shrinks AbstractModuleRecord from 264 to 256 bytes and removes one hash table\nallocation (and its String keys) per module record.\n\n* Source/JavaScriptCore/runtime/AbstractModuleRecord.cpp:\n(JSC::AbstractModuleRecord::visitChildrenImpl):\n(JSC::AbstractModuleRecord::hostResolveImportedModule):\n(JSC::AbstractModuleRecord::innerModuleLinking):\n* Source/JavaScriptCore/runtime/AbstractModuleRecord.h:\n* Source/JavaScriptCore/runtime/JSModuleLoader.cpp:\n(JSC::JSModuleLoader::maybeGetImportedModule): Deleted.\n* Source/JavaScriptCore/runtime/JSModuleLoader.h:\n\nCanonical link: https://commits.webkit.org/317844@main",
      "email": "sosuke@bun.sh",
      "hash": "d651aafbb69606ecc27bde540533e014d5908ce5",
      "subject": "[JSC] Remove `AbstractModuleRecord::m_dependencies`"
    },
    "317845@main": {
      "author": "Cole Carley",
      "avatar": "https://www.gravatar.com/avatar/091dd5641909acc46e581355f491ed34?d=identicon\u0026s=64",
      "cl": "317845@main",
      "clUrl": "https://commits.webkit.org/317845@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320120\nrdar://183061866\n\nReviewed by Sammy Gill.\n\nSearching for a string on a large page with the \"Beings with\" Find in\nPage option takes significantly longer than searching with the \"contains\"\noption.\n\nThe slowdown is caused by passing the entire buffer to findNextWordFromIndex\nfrom TextBoundaries.h on every match. Note that this only happens when the\nmatch does not require context for word boundaries. On mac,\nfindNextWordFromIndex copies the buffer to a new string.\n\nTo speed this up, we limit the size of the buffer passed to findNextWordFromIndex.\nInstead of the whole buffer, we send a window that includes the match. This way,\nthe copy can be much faster.\n\n* Source/WebCore/editing/ICUSearcher.cpp:\n(WebCore::boundedWordContextForNonComplexText):\n(WebCore::wordBreakContext):\n(WebCore::isWordStartMatch):\n(WebCore::isWordEndMatch):\n\nCanonical link: https://commits.webkit.org/317845@main",
      "email": "ccarley2@apple.com",
      "hash": "97b25967e86e2cdf28b0f1dea134d78659881e86",
      "subject": "Find in Page \"Begins with\" option takes too long"
    },
    "317846@main": {
      "author": "Youenn Fablet",
      "avatar": "https://www.gravatar.com/avatar/0a9886e582a7aee1eb908eb59af36da4?d=identicon\u0026s=64",
      "cl": "317846@main",
      "clUrl": "https://commits.webkit.org/317846@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320083#\nrdar://problem/183002484\n\nReviewed by Alex Christensen.\n\nAt stream upload start, we assign the FormData a PendingStreamState object.\nThis PendingStreamState object will be given data from the request's ReadableStream via a ReadableStreamToSharedBufferSink.\nThis PendingStreamState object is converyed through the FormData up to WebResourceLoader.\nWebResourceLoader will read the data from the PendingStreamState and send it through IPC to NetworkResourceLoader.\n\nNetworkResourceLoader will then give that data to the PendingStreamState object which will give it to CFNetwork.\n\nCovered by enabled tests.\n\n* LayoutTests/TestExpectations:\n* LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-upload.h2.any-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-upload.h2.any.js:\n* LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-upload.h2.any.serviceworker-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-upload.h2.any.sharedworker-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-upload.h2.any.worker-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/fetch-event.https.h2-expected.txt:\n* LayoutTests/platform/glib/TestExpectations:\n* Source/WebCore/Modules/fetch/FetchBody.cpp:\n(WebCore::FetchBody::bodyAsFormData const):\n(WebCore::FetchBody::startPendingStreamUpload):\n* Source/WebCore/Modules/fetch/FetchBody.h:\n(WebCore::FetchBody::pendingStreamState const):\n* Source/WebCore/Modules/fetch/FetchResponse.cpp:\n(WebCore::FetchResponse::fetch):\n* Source/WebCore/Modules/fetch/FetchResponse.h:\n* Source/WebCore/platform/network/FormData.cpp:\n(WebCore::FormData::create):\n(WebCore::FormData::isolatedCopy const):\n* Source/WebCore/platform/network/FormData.h:\n* Source/WebCore/platform/network/PendingStreamState.cpp:\n(WebCore::PendingStreamState::takeNextChunk):\n* Source/WebCore/platform/network/PendingStreamState.h:\n* Source/WebKit/NetworkProcess/NetworkResourceLoader.cpp:\n(WebKit::NetworkResourceLoader::pendingStreamAppendData):\n(WebKit::NetworkResourceLoader::pendingStreamEnd):\n(WebKit::NetworkResourceLoader::pendingStreamError):\n* Source/WebKit/NetworkProcess/NetworkResourceLoader.h:\n* Source/WebKit/NetworkProcess/NetworkResourceLoader.messages.in:\n* Source/WebKit/Scripts/webkit/opaque_ipc_types.tracking.in:\n* Source/WebKit/WebProcess/Network/WebLoaderStrategy.cpp:\n(WebKit::WebLoaderStrategy::scheduleLoadFromNetworkProcess):\n* Source/WebKit/WebProcess/Network/WebResourceLoader.cpp:\n(WebKit::WebResourceLoader::create):\n(WebKit::WebResourceLoader::WebResourceLoader):\n* Source/WebKit/WebProcess/Network/WebResourceLoader.h:\n(WebKit::WebResourceLoader::create):\n\nCanonical link: https://commits.webkit.org/317846@main",
      "email": "youenn@apple.com",
      "hash": "70dd30c16360692ec8542536eb191927435640bd",
      "subject": "Add support for sending stream upload data from WebProcess to Network process"
    },
    "317847@main": {
      "author": "Kiet Ho",
      "avatar": "https://www.gravatar.com/avatar/d9058b37006dce1f55f91b8ccc82f9a3?d=identicon\u0026s=64",
      "cl": "317847@main",
      "clUrl": "https://commits.webkit.org/317847@main",
      "description": "rdar://183061220\nhttps://bugs.webkit.org/show_bug.cgi?id=320119\n\nReviewed by Tim Nguyen.\n\nStyle::ColorResolutionState contains two smart pointers that can be\nmade const, so we don't need to refcount them before using it.\n\n* Source/WebCore/style/values/color/StyleColorResolutionState.h:\n* Source/WebCore/style/values/color/StyleKeywordColor.cpp:\n(WebCore::Style::toStyleColor):\n* Source/WebCore/style/values/color/StyleLightDarkColor.cpp:\n(WebCore::Style::toStyleColor):\n\nCanonical link: https://commits.webkit.org/317847@main",
      "email": "kiet.ho@apple.com",
      "hash": "a3ef039b60735f7852569d5d6d61a5bacf6027ac",
      "subject": "Make smart pointers in Style::ColorResolutionState const"
    },
    "317848@main": {
      "author": "Chris Dumez",
      "avatar": "https://www.gravatar.com/avatar/a9f21fe3a8baf79b45f3c91572187bdc?d=identicon\u0026s=64",
      "cl": "317848@main",
      "clUrl": "https://commits.webkit.org/317848@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320070\n\nReviewed by Jean-Yves Avenard.\n\nWhen a web process lazily computes the supported media MIME types (by loading\nAVFoundation and querying [AVURLAsset audiovisualMIMETypes]), it reports them\nback to the UI process via CacheMediaMIMETypes. The UI process caches them in a\nprocess-global and is supposed to push them to every other existing web process\n(via SetMediaMIMETypes) so those processes can avoid recomputing them.\n\nThis broadcast was broken in two ways, both present since the machinery was\nintroduced in 201372@main (2018):\n\n  1. cacheMediaMIMETypes() iterated over the other processes but called\n     cacheMediaMIMETypesInternal(types) on `this` rather than on the loop\n     variable `process`, so the message would have targeted the wrong process.\n\n  2. Even ignoring (1), cacheMediaMIMETypesInternal() guarded on\n     `!mediaTypeCache().isEmpty()` and returned early. Since mediaTypeCache() is\n     a UI-process global that cacheMediaMIMETypes() populates before the loop,\n     that guard was always true by the time the helper ran, so the\n     SetMediaMIMETypes IPC was never sent to any process.\n\nThe net effect was that already-running web processes never received the cached\ntypes over IPC and had to recompute them independently on first use.\n\nFix this by inlining the broadcast into the loop so it sends SetMediaMIMETypes\ndirectly to each peer process, and remove the now-unused\ncacheMediaMIMETypesInternal() helper.\n\nNote that the practical value of this broadcast is limited today:\n\n  - New web processes were never affected: they already receive the cached types\n    at launch via WebProcessCreationParameters (WebProcessPoolCocoa.mm), which\n    seeds both AVAssetMIMETypeCache and RemoteMediaPlayerMIMETypeCache. That leg\n    has always worked; only the broadcast to already-running peers was broken.\n\n  - Since media playback moved to the GPU process (205763@main), the WebProcess\n    no longer loads AVFoundation for playback type queries; those go through\n    RemoteMediaPlayerMIMETypeCache to the GPU process instead. The original\n    rationale (avoid loading AVFoundation in every web process) now mostly\n    applies to the non-GPU-process fallback path and to RemoteImageDecoderAVF,\n    which still consults AVAssetMIMETypeCache locally (see the TODOs there about\n    removing that dependency).\n\nSo the concrete benefit is narrow: a long-lived, already-running web process\nthat later hits one of the remaining local AVAssetMIMETypeCache consumers avoids\nan AVFoundation load, and its RemoteMediaPlayerMIMETypeCache avoids a sync IPC to\nthe GPU process. If RemoteImageDecoderAVF is eventually routed through the GPU\nprocess, this whole broadcast/cache chain could be removed outright (modulo the\nnon-GPU-process fallback).\n\n* Source/WebKit/UIProcess/Cocoa/WebProcessProxyCocoa.mm:\n(WebKit::WebProcessProxy::cacheMediaMIMETypes):\n(WebKit::WebProcessProxy::cacheMediaMIMETypesInternal): Deleted.\n* Source/WebKit/UIProcess/WebProcessProxy.h:\n\nCanonical link: https://commits.webkit.org/317848@main",
      "email": "cdumez@apple.com",
      "hash": "75c66e5982a9258fa7019336c884473a1cabf393",
      "subject": "WebProcessProxy::cacheMediaMIMETypes never broadcasts cached types to other web processes"
    },
    "317849@main": {
      "author": "Philippe Normand",
      "avatar": "https://www.gravatar.com/avatar/eef27203750af3510263cc29af21a16e?d=identicon\u0026s=64",
      "cl": "317849@main",
      "clUrl": "https://commits.webkit.org/317849@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=318669\n\nReviewed by Xabier Rodriguez-Calvar.\n\nThis backend is un-maintained and provides incomplete WebRTC support. The WPE and GTK ports will\nleverage LibWebRTC from now on.\n\nCanonical link: https://commits.webkit.org/317849@main",
      "email": "philn@igalia.com",
      "hash": "6ae9a398d5b21981372633d31f7ccf115230485d",
      "subject": "[GStreamer] Remove the GstWebRTC backend"
    },
    "317850@main": {
      "author": "Alan Baradlay",
      "avatar": "https://www.gravatar.com/avatar/788d66417db806c567552cfa1ae89f77?d=identicon\u0026s=64",
      "cl": "317850@main",
      "clUrl": "https://commits.webkit.org/317850@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320117\n\nReviewed by Antti Koivisto.\n\nThe set tracking which flex items have already been laid out during the current\npass was a SingleThreadWeakHashSet member on RenderFlexibleBox\n(m_flexItemsWithCompletedLayout) with mark/has accessors, cleared by hand at the\ntop of layoutBlock. That is transient per-layout state -- exactly what\nFlexLayoutState (added in 320044) exists to hold. Move the set and its accessors\nonto FlexLayoutState (setFlexItemHasCompletedLayout / hasFlexItemCompletedLayout);\nRenderFlexibleBox and FlexFormattingContext reach it through the container's\nFlexLayoutState. The manual clear() is gone -- each layout engages a fresh\nFlexLayoutState, so the set starts empty.\n\nWhile in this code, tidy up the surrounding per-flex-item layout helpers. No\nbehavior change:\n\n- Simplify layoutFlexItemWithMainSize: fold the relayout decision into one\n  shouldMarkFlexItemForLayout lambda, inline the one-line\n  setOverridingMainSizeForFlexItem, and drop updateFlexItemDirtyBitsBeforeLayout --\n  its isOutOfFlowPositioned early return was dead code, since the flex algorithm\n  only ever iterates in-flow items.\n\n- Consolidate the stretch relayout: applyStretchedLogicalHeightToFlexItem loses its\n  needsRelayout bool and delegates to layoutFlexItemForStretchedCrossSize (renamed\n  from relayoutFlexItemForStretchedCrossSize); the caller handles the \"already the\n  right size, just mark it definite\" case inline.\n\n- Rename FlexFormattingContext::flexLayoutState() to layoutState(), plus a couple of\n  guard-clause / ternary simplifications (isHorizontalFlow,\n  resetAutoMarginsAndLogicalTopInCrossAxis).\n\n* Source/WebCore/layout/formattingContexts/flex/FlexFormattingContext.cpp:\n(WebCore::FlexFormattingContext::computeFlexBaseAndHypotheticalMainSizes):\n(WebCore::FlexFormattingContext::computeFlexLines):\n(WebCore::FlexFormattingContext::computeMainSizeForFlexItems):\n(WebCore::FlexFormattingContext::layoutFlexItems):\n(WebCore::FlexFormattingContext::hypotheticalCrossSizeForFlexItems):\n(WebCore::FlexFormattingContext::handleMainAxisAlignment):\n(WebCore::FlexFormattingContext::computeCrossSizeForFlexItems):\n(WebCore::FlexFormattingContext::handleCrossAxisAlignmentForFlexItems):\n(WebCore::FlexFormattingContext::applyStretchAlignmentToFlexItem):\n(WebCore::FlexFormattingContext::applyStretchMinMaxCrossSize):\n(WebCore::FlexFormattingContext::layoutState const):\n* Source/WebCore/layout/formattingContexts/flex/FlexFormattingContext.h:\n* Source/WebCore/layout/formattingContexts/flex/FlexFormattingUtils.cpp:\n(WebCore::FlexFormattingUtils::isHorizontalFlow):\n* Source/WebCore/layout/formattingContexts/flex/FlexLayoutState.h:\n(WebCore::FlexLayoutState::setFlexItemHasCompletedLayout):\n(WebCore::FlexLayoutState::hasFlexItemCompletedLayout const):\n* Source/WebCore/rendering/RenderFlexibleBox.cpp:\n(WebCore::RenderFlexibleBox::layoutBlock):\n(WebCore::RenderFlexibleBox::computeBlockAxisContentSizeForFlexItem):\n(WebCore::RenderFlexibleBox::applyStretchedLogicalHeightToFlexItem):\n(WebCore::RenderFlexibleBox::layoutFlexItemForStretchedCrossSize):\n(WebCore::RenderFlexibleBox::layoutFlexItemWithMainSize):\n(WebCore::RenderFlexibleBox::resetAutoMarginsAndLogicalTopInCrossAxis):\n(WebCore::RenderFlexibleBox::setOverridingMainSizeForFlexItem): Deleted.\n* Source/WebCore/rendering/RenderFlexibleBox.h:\n\nCanonical link: https://commits.webkit.org/317850@main",
      "email": "zalan@apple.com",
      "hash": "f12d815fa9b7597b305ceab3077c1c09ba71a5aa",
      "subject": "[cleanup] Move flex-item completed-layout tracking from RenderFlexibleBox into FlexLayoutState"
    },
    "317851@main": {
      "author": "Youenn Fablet",
      "avatar": "https://www.gravatar.com/avatar/0a9886e582a7aee1eb908eb59af36da4?d=identicon\u0026s=64",
      "cl": "317851@main",
      "clUrl": "https://commits.webkit.org/317851@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320169\nrdar://problem/183104731\n\nReviewed by Chris Dumez.\n\nA fetch can be aborted by an AbortSignal.\nWhen AbortSignal abort steps run (in FetchResponse::addAbortSteps), we tell the FetchResponse::Loader to abort.\nFetchResponse::Loader will then abort the upload sink by cancelling the corresponding readablestream reader.\n\nCovered by rebased tests.\n\n* LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-upload.h2.any-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-upload.h2.any.serviceworker-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-upload.h2.any.sharedworker-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-upload.h2.any.worker-expected.txt:\n* Source/WebCore/Modules/fetch/FetchResponse.cpp:\n(WebCore::FetchResponse::addAbortSteps):\n(WebCore::FetchResponse::createFetchResponse):\n(WebCore::FetchResponse::fetch):\n(WebCore::FetchResponse::Loader::create):\n(WebCore::FetchResponse::Loader::Loader):\n(WebCore::FetchResponse::Loader::abortUpload):\n* Source/WebCore/Modules/fetch/FetchResponse.h:\n* Source/WebCore/Modules/streams/ReadableStreamToSharedBufferSink.cpp:\n(WebCore::ReadableStreamToSharedBufferSink::cancel):\n* Source/WebCore/Modules/streams/ReadableStreamToSharedBufferSink.h:\n\nCanonical link: https://commits.webkit.org/317851@main",
      "email": "youenn@apple.com",
      "hash": "937062addbccda04d8cec47627fbcc567cfa64ad",
      "subject": "Aborting a fetch load should abort the upload stream"
    },
    "317852@main": {
      "author": "Philippe Normand",
      "avatar": "https://www.gravatar.com/avatar/eef27203750af3510263cc29af21a16e?d=identicon\u0026s=64",
      "cl": "317852@main",
      "clUrl": "https://commits.webkit.org/317852@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320180\n\nUnreviewed, update expectation of several tests following-up with enablement of libwebrtc.\n\n* LayoutTests/platform/glib/TestExpectations:\n* LayoutTests/platform/gtk/TestExpectations:\n* LayoutTests/platform/wpe/TestExpectations:\n\nCanonical link: https://commits.webkit.org/317852@main",
      "email": "philn@igalia.com",
      "hash": "39f3b21b52590c5a989b7272ab55abd439b34bb7",
      "subject": "[GLib] LibWebRTC gardening"
    },
    "317853@main": {
      "author": "Philippe Normand",
      "avatar": "https://www.gravatar.com/avatar/eef27203750af3510263cc29af21a16e?d=identicon\u0026s=64",
      "cl": "317853@main",
      "clUrl": "https://commits.webkit.org/317853@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320181\n\nUnreviewed.\n\n* LayoutTests/platform/glib/TestExpectations:\n* LayoutTests/platform/wpe/TestExpectations:\n\nCanonical link: https://commits.webkit.org/317853@main",
      "email": "philn@igalia.com",
      "hash": "9ed4a00638c173d8a1c48ee9aa405012cffc3b82",
      "subject": "[GLib] LibWebRTC gardening of unexpected passing tests"
    },
    "317854@main": {
      "author": "Lauro Moura",
      "avatar": "https://www.gravatar.com/avatar/6157f52d61e04c2c63fe7ff668ba69b3?d=identicon\u0026s=64",
      "cl": "317854@main",
      "clUrl": "https://commits.webkit.org/317854@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=230612\n\nUnreviewed test gardening.\n\nThese tests were originally gardened in 316749@main for WPE, but are\nalso failing on GTK.\n\n* WebDriverTests/TestExpectations.json:\n\nCanonical link: https://commits.webkit.org/317854@main",
      "email": "lmoura@igalia.com",
      "hash": "349a74a89c73d8b98f0aa68cd836dfa9cdb9645e",
      "subject": "[WebDriver] Fix element references after tab switch or close"
    },
    "317855@main": {
      "author": "Philippe Normand",
      "avatar": "https://www.gravatar.com/avatar/eef27203750af3510263cc29af21a16e?d=identicon\u0026s=64",
      "cl": "317855@main",
      "clUrl": "https://commits.webkit.org/317855@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320089\n\nReviewed by Nikolas Zimmermann.\n\n* .wkdev-sdk-version: Bump to v9 which among other things removed GstWebRTC-related dependencies.\n\nCanonical link: https://commits.webkit.org/317855@main",
      "email": "philn@igalia.com",
      "hash": "c549fa4e66298fd53e8a461b2325e40331a25029",
      "subject": "[WPE][GTK] Bump SDK version"
    },
    "317856@main": {
      "author": "Philippe Normand",
      "avatar": "https://www.gravatar.com/avatar/eef27203750af3510263cc29af21a16e?d=identicon\u0026s=64",
      "cl": "317856@main",
      "clUrl": "https://commits.webkit.org/317856@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320184\n\nUnreviewed, additional round of test expectations updates after the switch to libwebrtc.\n\n* LayoutTests/platform/glib/TestExpectations:\n* LayoutTests/platform/gtk/TestExpectations:\n* LayoutTests/platform/wpe/TestExpectations:\n\nCanonical link: https://commits.webkit.org/317856@main",
      "email": "philn@igalia.com",
      "hash": "c1ec8febbb1ada16a36a96f2accf5dfa5e5900ca",
      "subject": "[GLib] LibWebRTC gardening"
    },
    "317857@main": {
      "author": "Devin Rousso",
      "avatar": "https://www.gravatar.com/avatar/c9e757d973342c773f107a94b70cb9cd?d=identicon\u0026s=64",
      "cl": "317857@main",
      "clUrl": "https://commits.webkit.org/317857@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=142657\n\u003crdar://problem/20149674\u003e\n\nReviewed by Yusuke Suzuki.\n\nRather than trying to keep a manual list, leverage the pretty format of IDL to autogenerate `WI.NativeConstructorFunctionParameters` and `WI.NativePrototypeFunctionParameters`.\n\n* Source/WebCore/bindings/scripts/CodeGenerator.pm:\n(ProcessInterfaces):\n(WriteInspectorNativeFunctionParameters): Added.\nModify the IDL parser to output `*.inspector-native-function-parameters.json` files containing a pretty string of the arguments for any class-level and instance-level methods.\n\n* Source/WebCore/bindings/scripts/combine-inspector-native-function-parameters.pl: Added.\nCombine all `*.inspector-native-function-parameters.json` into a single `InspectorNativeFunctionParameters.json`.\n\n* Source/WebInspectorUI/UserInterface/Models/NativeFunctionParameters.js: Removed.\n* Source/WebInspectorUI/UserInterface/Models/NativeFunctionParameters-overrides.json: Added.\nPure JS APIs do not have anything like pretty formatted IDL to draw from like other web APIs.\nInstead, have these be handwritten in a JSON file until a solution can be found for them.\nThis also allows for Web Inspector to override anything that is automatic if needed.\n\n* Source/WebInspectorUI/Scripts/update-NativeFunctionParameters.py: Added.\nMerge the `InspectorNativeFunctionParameters.json` with the overrides file and generate `NativeFunctionParameters.js`.\n\n* Source/WebInspectorUI/Scripts/copy-user-interface-resources.pl:\nCopy `NativeFunctionParameters.js` alongside all other resources.\n\n* Source/WebInspectorUI/UserInterface/Views/ObjectTreePropertyTreeElement.js:\n(WI.ObjectTreePropertyTreeElement.prototype._functionParameterString):\nDrive-by: also handle `Atomics`, `Intl`, and `WebAssembly` namespace objects.\n\n* Source/WebCore/CMakeLists.txt:\n* Source/WebCore/DerivedSources.make:\n* Source/WebCore/DerivedSources-output.xcfilelist:\n* Source/WebCore/WebCoreMacros.cmake:\n* Source/WebInspectorUI/CMakeLists.txt:\n* Source/WebInspectorUI/WebInspectorUI.xcodeproj/project.pbxproj:\n\n* Source/WebCore/bindings/scripts/test/JS/TestCallTracer.inspector-native-function-parameters.json: Added.\n* Source/WebCore/bindings/scripts/test/JS/TestCallbackInterface.inspector-native-function-parameters.json: Added.\n* Source/WebCore/bindings/scripts/test/JS/TestConditionalIncludes.inspector-native-function-parameters.json: Added.\n* Source/WebCore/bindings/scripts/test/JS/TestDOMJIT.inspector-native-function-parameters.json: Added.\n* Source/WebCore/bindings/scripts/test/JS/TestDomainSecurity.inspector-native-function-parameters.json: Added.\n* Source/WebCore/bindings/scripts/test/JS/TestEnabledBySetting.inspector-native-function-parameters.json: Added.\n* Source/WebCore/bindings/scripts/test/JS/TestEventTarget.inspector-native-function-parameters.json: Added.\n* Source/WebCore/bindings/scripts/test/JS/TestGlobalObject.inspector-native-function-parameters.json: Added.\n* Source/WebCore/bindings/scripts/test/JS/TestIndexedSetterWithIdentifier.inspector-native-function-parameters.json: Added.\n* Source/WebCore/bindings/scripts/test/JS/TestInterface.inspector-native-function-parameters.json: Added.\n* Source/WebCore/bindings/scripts/test/JS/TestLegacyOverrideBuiltIns.inspector-native-function-parameters.json: Added.\n* Source/WebCore/bindings/scripts/test/JS/TestNamedAndIndexedSetterWithIdentifier.inspector-native-function-parameters.json: Added.\n* Source/WebCore/bindings/scripts/test/JS/TestNamedDeleterWithIdentifier.inspector-native-function-parameters.json: Added.\n* Source/WebCore/bindings/scripts/test/JS/TestNamedGetterWithIdentifier.inspector-native-function-parameters.json: Added.\n* Source/WebCore/bindings/scripts/test/JS/TestNamedSetterWithIdentifier.inspector-native-function-parameters.json: Added.\n* Source/WebCore/bindings/scripts/test/JS/TestNamedSetterWithIndexedGetter.inspector-native-function-parameters.json: Added.\n* Source/WebCore/bindings/scripts/test/JS/TestNamedSetterWithIndexedGetterAndSetter.inspector-native-function-parameters.json: Added.\n* Source/WebCore/bindings/scripts/test/JS/TestNamespaceObject.inspector-native-function-parameters.json: Added.\n* Source/WebCore/bindings/scripts/test/JS/TestObj.inspector-native-function-parameters.json: Added.\n* Source/WebCore/bindings/scripts/test/JS/TestScheduledAction.inspector-native-function-parameters.json: Added.\n* Source/WebCore/bindings/scripts/test/JS/TestSerializedScriptValueInterface.inspector-native-function-parameters.json: Added.\n* Source/WebCore/bindings/scripts/test/JS/TestTypedefs.inspector-native-function-parameters.json: Added.\n\nCanonical link: https://commits.webkit.org/317857@main",
      "email": "hi@devinrousso.com",
      "hash": "4c4e32ead41f905d6e3b0742b99775e38b0cf1dd",
      "subject": "Web Inspector: Show Parameter Lists for Native DOM methods"
    },
    "317858@main": {
      "author": "Youenn Fablet",
      "avatar": "https://www.gravatar.com/avatar/0a9886e582a7aee1eb908eb59af36da4?d=identicon\u0026s=64",
      "cl": "317858@main",
      "clUrl": "https://commits.webkit.org/317858@main",
      "description": "rdar://183002185\nhttps://bugs.webkit.org/show_bug.cgi?id=320082\n\nReviewed by Chris Dumez.\n\nAs per fetch spec, we fail a stream upload in case of 401 response.\nWe do this in NetworkDataTaskCocoa::didReceiveChallenge.\n\nCovered by rebased WPT tests.\n\n* LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-upload.h2.any-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-upload.h2.any.serviceworker-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-upload.h2.any.sharedworker-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-upload.h2.any.worker-expected.txt:\n* Source/WebKit/NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:\n(WebKit::NetworkDataTaskCocoa::didReceiveChallenge):\n\nCanonical link: https://commits.webkit.org/317858@main",
      "email": "youenn@apple.com",
      "hash": "1b7ece377648aa95e437460a650e5240e155679f",
      "subject": "Stream uploads should fail in case of 401 responses"
    },
    "317859@main": {
      "author": "Alan Baradlay",
      "avatar": "https://www.gravatar.com/avatar/788d66417db806c567552cfa1ae89f77?d=identicon\u0026s=64",
      "cl": "317859@main",
      "clUrl": "https://commits.webkit.org/317859@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319190\nrdar://182041352\n\nReviewed by Antti Koivisto.\n\nFont::platformInit computed line metrics differently on iOS than on macOS.\nThe iOS path (inherited from the internal iOS WebKit fork via the old\nFontServicesIOS helper) rounded ascent, descent, and line gap up with\nceil(), stored them as integers, and folded a 15% line-height adjustment\nfor Times/Helvetica/.Helvetica NeueUI into the ascent. macOS instead keeps\nthe fractional CoreText metrics, rounds only the derived line spacing with\nlround(), and adjusts Times/Helvetica/Courier by 15% (via round) for\nlocally installed fonts only. The ceil() rounding made iOS line boxes\nsystematically about a pixel taller than macOS.\n\nRoute iOS through the shared macOS path so both platforms produce identical\nfont metrics:\n\n- Keep ascent/descent/lineGap as fractional CoreText values instead of\n  ceil()-ing them.\n- Compute lineSpacing as lround(ascent) + lround(descent) + lround(lineGap).\n- Use needsAscentAdjustment() (Times/Helvetica/Courier, gated on\n  Origin::Local, using round()) for the ascent adjustment on all platforms,\n  removing the iOS-only shouldUseAdjustment()/.Helvetica NeueUI variant.\n- Apply the Hiragino marked-text line-metrics hack on iOS as well.\n\nThe only remaining iOS-specific behavior in platformInit is\nm_shouldNotBeUsedForArabic, which is about Arabic shaping performance\n(rdar://9823975), not font metrics.\n\nThis shifts iOS text metrics by ~1px, so update the affected layout test\nresults (regenerated from the iOS-26 simulator WK2 EWS run):\n\n- Where the iOS result is now byte-identical to macOS, consolidate the two\n  platform baselines into one generic baseline (rename platform/mac -\u003e\n  generic) and drop the platform/ios override. This is safe because win and\n  glib already carry their own overrides for these tests; verified per test.\n- Where removing the platform/ios override falls back onto a matching\n  baseline, drop the override.\n- Where the iOS result still legitimately differs from macOS (different\n  fallback fonts for Hebrew/Arabic/CJK, iOS compositing layer trees,\n  selection geometry), rebaseline the platform/ios override in place.\n- A handful of iOS selection/caret tests assert hardcoded pixel values via\n  shouldBe(\"rect.height\", \"28\"); update those literals and expected output\n  to the new measured values. Pre-existing expected failures are left\n  untouched.\n\nTwo tests are intentionally not rebaselined and need follow-up rather than\nbaking a failure into their baseline:\n- editing/selection/caret-in-div-containing-empty-block.html: horizontal and\n  text caret rects now round to different heights (18 vs 17); the fractional\n  metrics exposed a rounding inconsistency between two caret-rect paths.\n- editing/selection/ios/bidi-visually-contiguous-selection-multiline.html:\n  the touch-driven selection lands on a different line now that line\n  positions moved, so selectedText no longer ends with the expected word.\n\nCanonical link: https://commits.webkit.org/317859@main",
      "email": "zalan@apple.com",
      "hash": "5e3c9aa280f79ab116f7832a7d69d8ed39ee211e",
      "subject": "[iOS] Converge iOS font metrics with macOS in Font::platformInit"
    },
    "317860@main": {
      "author": "Lauro Moura",
      "avatar": "https://www.gravatar.com/avatar/6157f52d61e04c2c63fe7ff668ba69b3?d=identicon\u0026s=64",
      "cl": "317860@main",
      "clUrl": "https://commits.webkit.org/317860@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=205350\n\nUnreviewed test gardening.\n\n* WebDriverTests/TestExpectations.json:\n\nCanonical link: https://commits.webkit.org/317860@main",
      "email": "lmoura@igalia.com",
      "hash": "77d3d67a5d49ec770626ee74d59e01b58939606f",
      "subject": "[WPE][GTK] Support WebAuthn"
    },
    "317861@main": {
      "author": "Lauro Moura",
      "avatar": "https://www.gravatar.com/avatar/6157f52d61e04c2c63fe7ff668ba69b3?d=identicon\u0026s=64",
      "cl": "317861@main",
      "clUrl": "https://commits.webkit.org/317861@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=217173\n\nUnreviewed test gardening.\n\n* WebDriverTests/TestExpectations.json:\n\nCanonical link: https://commits.webkit.org/317861@main",
      "email": "lmoura@igalia.com",
      "hash": "82fca03463a4eb773a0d181337789d08cf405f1c",
      "subject": "WebDriver: Implement print command"
    },
    "317862@main": {
      "author": "Vitaly Dyachkov",
      "avatar": "https://www.gravatar.com/avatar/ab950c52088e289585a5a01580ec66a4?d=identicon\u0026s=64",
      "cl": "317862@main",
      "clUrl": "https://commits.webkit.org/317862@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=263810\n\nReviewed by Carlos Garcia Campos.\n\nCurrently, async overflow scrolling in TestRunner is always enabled on\nWPE and disabled on GTK. On macOS it is enabled only for WPT tests\nstarting from 270071@main. Doing the same on WPE and GTK makes the test\nresults more consistent with macOS and each other.\n\n* Tools/WebKitTestRunner/gtk/TestControllerGtk.cpp:\n(WTR::shouldEnableAsyncOverflowScrolling):\n(WTR::TestController::platformSpecificFeatureDefaultsForTest const):\n* Tools/WebKitTestRunner/wpe/TestControllerWPE.cpp:\n(WTR::shouldEnableAsyncOverflowScrolling):\n(WTR::TestController::platformSpecificFeatureDefaultsForTest const):\n* LayoutTests/platform/glib/TestExpectations:\n* LayoutTests/platform/glib/fast/text/mark-matches-overflow-clip-expected.txt: Renamed from LayoutTests/platform/gtk/fast/text/mark-matches-overflow-clip-expected.txt.\n* LayoutTests/platform/glib/scrollingcoordinator/scrolling-tree/coordinated-frame-expected.txt: Renamed from LayoutTests/platform/gtk/scrollingcoordinator/scrolling-tree/coordinated-frame-expected.txt.\n* LayoutTests/platform/glib/scrollingcoordinator/scrolling-tree/coordinated-frame-gain-scrolling-ancestor-expected.txt: Renamed from LayoutTests/platform/gtk/scrollingcoordinator/scrolling-tree/coordinated-frame-gain-scrolling-ancestor-expected.txt.\n* LayoutTests/platform/glib/scrollingcoordinator/scrolling-tree/coordinated-frame-in-fixed-expected.txt: Renamed from LayoutTests/platform/gtk/scrollingcoordinator/scrolling-tree/coordinated-frame-in-fixed-expected.txt.\n* LayoutTests/platform/glib/scrollingcoordinator/scrolling-tree/coordinated-frame-lose-scrolling-ancestor-expected.txt: Renamed from LayoutTests/platform/gtk/scrollingcoordinator/scrolling-tree/coordinated-frame-lose-scrolling-ancestor-expected.txt.\n* LayoutTests/platform/gtk/TestExpectations:\n* LayoutTests/platform/wpe/TestExpectations:\n* LayoutTests/platform/wpe/fast/forms/basic-textareas-expected.txt:\n* LayoutTests/platform/wpe/fast/overflow/scrollRevealButton-expected.txt:\n* LayoutTests/platform/wpe/fast/text/mark-matches-overflow-clip-expected.txt: Removed.\n* LayoutTests/platform/wpe/scrollingcoordinator/scrolling-tree/coordinated-frame-expected.txt: Removed.\n* LayoutTests/platform/wpe/scrollingcoordinator/scrolling-tree/coordinated-frame-gain-scrolling-ancestor-expected.txt: Removed.\n* LayoutTests/platform/wpe/scrollingcoordinator/scrolling-tree/coordinated-frame-in-fixed-expected.txt: Removed.\n* LayoutTests/platform/wpe/scrollingcoordinator/scrolling-tree/coordinated-frame-lose-scrolling-ancestor-expected.txt: Removed.\n\nCanonical link: https://commits.webkit.org/317862@main",
      "email": "vitaly@igalia.com",
      "hash": "3e26dfad94fa3f97175c00c35055ff8b6a97413c",
      "subject": "[WPE][GTK][WKTR] Enable async overflow scrolling by default for WPTs"
    },
    "317863@main": {
      "author": "Alan Baradlay",
      "avatar": "https://www.gravatar.com/avatar/788d66417db806c567552cfa1ae89f77?d=identicon\u0026s=64",
      "cl": "317863@main",
      "clUrl": "https://commits.webkit.org/317863@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320148\n\nReviewed by Antti Koivisto.\n\nRenderFlexibleBox tracked whether the flex container's logical height (its block-axis\nsize) is definite -- i.e. whether a flex item's percentage can resolve against it -- in\nan m_hasDefiniteHeight member. That is transient per-layout state; its own comment even\nsaid it \"is SizeIsUnknown outside of layoutBlock()\". Move it onto FlexLayoutState next\nto the other per-layout flex state, as a std::optional\u003cbool\u003e m_isBlockSizeDefinite\n(engaged only during layout; nullopt means not-yet-computed). RenderFlexibleBox and\nFlexFormattingContext go through isBlockSizeDefinite() / isBlockSizeIndefinite() /\nsetBlockSizeIsDefinite() / resetBlockSizeDefiniteness().\n\nIt is the container's block-axis size specifically (not a \"main-axis size\"): the block\naxis is the main axis for a column flexbox -- where canComputePercentageFlexBasis reads\nit -- and the cross axis for a row flexbox -- where flexItemCrossSizeIsDefinite reads\nit. Both ask the same question, \"does a percentage resolve against the container's\nlogical height\", which is exactly what computePercentageLogicalHeight answers.\n\ncanComputePercentageFlexBasis keeps the same behavior: while laying ourselves out it\nconsults the cached value, and when not yet known computes it (running\ncomputePercentageLogicalHeight, whose percent-height-descendant side effect callers\nrely on) and caches it for the item's remaining sub-queries; reached outside our own\nlayout (percentage resolution for descendants, with m_flexLayoutState disengaged) it\njust computes without caching.\n\nBecause the value now lives in the per-layout FlexLayoutState -- which starts fresh each\nlayoutBlock -- the two explicit resets that only existed to clear the persistent member\nare no longer needed and are removed: the one at the end of layoutBlock, and the\nper-child one in LayoutIntegration::FlexLayout::collectFlexItems (which reset a child\nflexbox whose own FlexLayoutState is not even engaged at that point, so it was a no-op).\n\nAlso switch the writing-mode-parallel check from an isHorizontalWritingMode() equality\nto writingMode().isOrthogonal(), matching the idiom already used in RenderFlexibleBox.\n\n* Source/WebCore/layout/formattingContexts/flex/FlexFormattingContext.cpp:\n(WebCore::FlexFormattingContext::computeFlexBaseAndHypotheticalMainSizes):\n(WebCore::FlexFormattingContext::flexItemCrossSizeIsDefinite):\n* Source/WebCore/layout/formattingContexts/flex/FlexLayoutState.h:\n(WebCore::FlexLayoutState::phase const):\n(WebCore::FlexLayoutState::isFlexBoxBlockSizeDefinite const):\n(WebCore::FlexLayoutState::isFlexBoxBlockSizeIndefinite const):\n(WebCore::FlexLayoutState::setFlexBoxBlockSizeIsDefinite):\n(WebCore::FlexLayoutState::resetFlexBoxBlockSizeDefiniteness):\n* Source/WebCore/layout/integration/flex/LayoutIntegrationFlexLayout.cpp:\n(WebCore::LayoutIntegration::FlexLayout::collectFlexItems):\n* Source/WebCore/rendering/RenderFlexibleBox.cpp:\n(WebCore::RenderFlexibleBox::layoutBlock):\n(WebCore::RenderFlexibleBox::canComputePercentageFlexBasis):\n* Source/WebCore/rendering/RenderFlexibleBox.h:\n(WebCore::RenderFlexibleBox::resetHasDefiniteHeight): Deleted.\n(WebCore::RenderFlexibleBox::hasDefiniteHeight const): Deleted.\n(WebCore::RenderFlexibleBox::setHasDefiniteHeight): Deleted.\n\nCanonical link: https://commits.webkit.org/317863@main",
      "email": "zalan@apple.com",
      "hash": "eb9bd3226c415b8f1e15be4a1c329fa44a6893c3",
      "subject": "[cleanup] Move the flex container's block-size definiteness onto FlexLayoutState"
    },
    "317864@main": {
      "author": "Qianlang Chen",
      "avatar": "https://www.gravatar.com/avatar/0fd54e904334f604739d0205aa6e2130?d=identicon\u0026s=64",
      "cl": "317864@main",
      "clUrl": "https://commits.webkit.org/317864@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=308895\nrdar://171780771\n\nReviewed by BJ Burg.\n\nUnder Site Isolation the loaderId reported on Page.frameNavigated and\nPage.getResourceTree did not match the loaderId the Network domain emits\nfor the same navigation's main resource. The frontend uses loaderId\npurely as a correlation key between the Network and Page event streams\n(NetworkManager.js): when a main-resource Network.requestWillBeSent\nwhose loaderId differs from the frame's committed loaderIdentifier\narrives, it starts a provisional load, and Page.frameNavigated commits\nthat load only when the event's loaderId equals the recorded provisional\nloaderId. When the two disagree, the real main-resource load is\ndiscarded and a fresh, empty main resource is synthesized in its place.\n\nRoot cause: the loaderId was derived from the frame's current document,\nwhich changes across a navigation's commit. The Network stream computes\nit at the main resource's willSendRequest -- before commit, when the\nframe still shows the previous document -- while the Page stream\ncomputes it at frameNavigated, after the new document has committed.\nDeriving from frame-\u003edocument()-\u003eidentifier() therefore yields two\ndifferent strings for one load: the previous document's id on the\nnetwork event and the new document's id on the navigation. The frontend\nnever correlated them, so it discarded the real main resource for the\nsynthesized empty one.\n\nFix: derive the loaderId from the DocumentLoader's navigationID\n(BackendIdentifierRegistry::loaderId). navigationID is assigned when the\nload starts, while still provisional, and stays fixed for the load, so\nthe Network stream's pre-commit computation and the Page stream's\npost-commit computation produce the identical string. It is\nprocess-local, so it is qualified with the hosting process\n(\"loader-\u003cpid\u003e.\u003cnavigationID\u003e\").\n\nThe id can only be computed in the frame's hosting WebContent process --\nthe UIProcess has neither the DocumentLoader nor its navigationID -- so\nboth proxy paths compute it there (FrameNetworkAgentProxy on the network\nside, PageAgentProxy::frameNavigated on the page side) and send the\nresulting string over IPC, rather than shipping a raw\nScriptExecutionContextIdentifier and converting it in the UIProcess. A\nDocumentLoader never spans processes, so this is consistent.\n\nThe obvious alternatives don't work: frame-\u003edocument()-\u003eidentifier() is\nthe source of the bug above, and DocumentLoader::resultingClientId() --\nthe id the about-to-commit document will adopt -- is populated only for\nservice-worker-eligible loads, so it is unavailable for the common\nnavigation.\n\nBecause the loaderIds now agree, the frontend takes the provisional-load\ncommit path (WI.Frame.commitProvisionalLoad) for a cross-origin\nnavigation instead of synthesizing a fresh main resource via\nWI.Frame.initialize. commitProvisionalLoad did not propagate the frame's\nname, so make it adopt and dispatch the navigation's name like\ninitialize does; otherwise a window.name change reported on the\ncommitting navigation would no longer reach the frame model.\n\nTest: http/tests/site-isolation/inspector/page/frame-navigated-loader-id-matches-network-cross-origin-iframe.html\n\n* LayoutTests/http/tests/site-isolation/inspector/page/frame-navigated-loader-id-matches-network-cross-origin-iframe-expected.txt: Added.\n* LayoutTests/http/tests/site-isolation/inspector/page/frame-navigated-loader-id-matches-network-cross-origin-iframe.html: Added.\n* Source/WebCore/inspector/InspectorResourceUtilities.h:\n* Source/WebInspectorUI/UserInterface/Controllers/NetworkManager.js:\n(WI.NetworkManager.prototype.frameDidNavigate):\n* Source/WebInspectorUI/UserInterface/Models/Frame.js:\n(WI.Frame.prototype.commitProvisionalLoad):\n* Source/WebKit/Shared/InspectorPageTypes.serialization.in:\n* Source/WebKit/UIProcess/Inspector/Agents/ProxyingNetworkAgent.cpp:\n(Inspector::ProxyingNetworkAgent::requestWillBeSent):\n(Inspector::ProxyingNetworkAgent::responseReceived):\n(Inspector::ProxyingNetworkAgent::requestServedFromMemoryCache):\n* Source/WebKit/UIProcess/Inspector/Agents/ProxyingNetworkAgent.h:\n* Source/WebKit/UIProcess/Inspector/Agents/ProxyingNetworkAgent.messages.in:\n* Source/WebKit/UIProcess/Inspector/Agents/ProxyingPageAgent.cpp:\n(Inspector::ProxyingPageAgent::frameNavigated):\n(Inspector::ProxyingPageAgent::buildFrameTree const):\n* Source/WebKit/UIProcess/Inspector/Agents/ProxyingPageAgent.h:\n* Source/WebKit/UIProcess/Inspector/Agents/ProxyingPageAgent.messages.in:\n* Source/WebKit/WebProcess/Inspector/FrameNetworkAgentProxy.cpp:\n(WebKit::loaderIdForLoader):\n(WebKit::FrameNetworkAgentProxy::willSendRequest):\n(WebKit::FrameNetworkAgentProxy::willSendRequestOfType):\n(WebKit::FrameNetworkAgentProxy::didReceiveResponse):\n(WebKit::FrameNetworkAgentProxy::didLoadResourceFromMemoryCache):\n(WebKit::contextIdentifier): Deleted.\n* Source/WebKit/WebProcess/Inspector/PageAgentProxy.cpp:\n(WebKit::PageAgentProxy::frameNavigated):\n* Source/WebKit/WebProcess/Inspector/WebInspectorBackend.cpp:\n(WebKit::WebInspectorBackend::getFrameResourceData):\n* Source/WebCore/inspector/InspectorIdentifierRegistry.cpp:\n(Inspector::BackendIdentifierRegistry::loaderId):\n* Source/WebCore/inspector/InspectorIdentifierRegistry.h:\n(Inspector::IdentifierRegistry::parseProtocolFrameId):\n(Inspector::IdentifierRegistry::protocolLoaderId): Deleted.\n\nCanonical link: https://commits.webkit.org/317864@main",
      "email": "qianlangchen@apple.com",
      "hash": "d4e3ca88a09ecc5a89c467bb8a75906d2ecc6f02",
      "subject": "Web Inspector: Site Isolation: Page.frameNavigated should include loaderId from document identifier"
    },
    "317865@main": {
      "author": "Sihui Liu",
      "avatar": "https://www.gravatar.com/avatar/fea095a2fb34b599fa6e7d581666903b?d=identicon\u0026s=64",
      "cl": "317865@main",
      "clUrl": "https://commits.webkit.org/317865@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320135\nrdar://183071225\n\nReviewed by Ryosuke Niwa.\n\nSite Isolation's shared process mode puts multiple cross-site frames into one WebProcess for performance, trading away\nsome of the process-boundary protection between the co-located sites. Loopback/local-network endpoints (routers,\nprinters, NAS boxes, local dev servers) often expose sensitive data or privileged functionality behind weak or no\nauthentication, so colocating them with an arbitrary other site's renderer increases the blast radius of a renderer\ncompromise. Therefore, exclude them from the shared process pool.\n\nBrowsingContextGroup::sharedProcessForSite now bails out for any site whose host is a loopback/local-network IP literal\nor a literal localhost/*.localhost.\n\nAlso, Added a WebCore::Site overload of determineIPAddressSpace() so the check can classify a Site the same way the\nexisting URL overload classifies a URL.\n\nTest: TestWebKitAPI.IPAddressSpace\n      TestWebKitAPI.SiteIsolation.SharedProcessExcludesLoopback\n\n* Source/WebCore/Modules/fetch/IPAddressSpace.cpp:\n(WebCore::determineIPAddressSpaceFromHost):\n(WebCore::determineIPAddressSpace):\n* Source/WebCore/Modules/fetch/IPAddressSpace.h:\n* Source/WebKit/UIProcess/BrowsingContextGroup.cpp:\n(WebKit::isLoopbackOrLocalNetworkSite):\n(WebKit::BrowsingContextGroup::sharedProcessForSite):\n* Tools/TestWebKitAPI/Tests/WebCore/IPAddressSpaceTests.cpp:\n(TestWebKitAPI::TEST(IPAddressSpace, SiteMatchesURLForIPLiterals)):\n(TestWebKitAPI::TEST(IPAddressSpace, SiteDoesNotSpecialCaseLocalhostName)):\n* Tools/TestWebKitAPI/Tests/WebKit/WKWebView/SiteIsolation.mm:\n(TestWebKitAPI::(SiteIsolation, SharedProcessExcludesLoopback)):\n\nCanonical link: https://commits.webkit.org/317865@main",
      "email": "sihui_liu@apple.com",
      "hash": "43701fcf3eede83baf3a124ad8359677ba3619e7",
      "subject": "[Site Isolation] Loopback/local-network sites should not enter shared process"
    },
    "317866@main": {
      "author": "Yusuke Suzuki",
      "avatar": "https://www.gravatar.com/avatar/3455d9081295e3e740c1ffa901217d9b?d=identicon\u0026s=64",
      "cl": "317866@main",
      "clUrl": "https://commits.webkit.org/317866@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320153\nrdar://183089102\n\nReviewed by Tadeu Zagallo.\n\nUnicode character has some cases which lowercase / uppercase character\nis ASCII and vise versa. For example, Kelvin sign (U+212A)'s lowercase\ncharacter is ASCII 'k'. But ECMAScript RegExp specifies that we should\nnot handle this lower-casing when unicode flags are not specified.\nYarrJIT is correctly working, but YarrInterpreter was not. We\naccidentally found this bug through the other work (317836@main), and\nthis patch fixes this bug, aligning the behavior to YarrJIT.\n\n* JSTests/stress/regexp-exec-anchored-first-char-filter.js:\n* JSTests/stress/regexp-test-anchored-first-char-filter.js:\n* Source/JavaScriptCore/yarr/YarrInterpreter.cpp:\n(JSC::Yarr::ByteCompiler::atomPatternCharacter):\n(JSC::Yarr::ByteCompiler::emitDisjunction):\n\nCanonical link: https://commits.webkit.org/317866@main",
      "email": "ysuzuki@apple.com",
      "hash": "2bc1cfd939bba10b05d0b75cee4ed8b21c951814",
      "subject": "[YARR] Fix YarrInterpreter ignore-case with ASCII \u003c-\u003e unicode character case"
    },
    "317868@main": {
      "author": "Ahmad Saleem",
      "avatar": "https://www.gravatar.com/avatar/38445f84fe28aa19bfeb1f59f6559532?d=identicon\u0026s=64",
      "cl": "317868@main",
      "clUrl": "https://commits.webkit.org/317868@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320078\nrdar://182999128\n\nReviewed by Aakash Jain.\n\nThe while loops that walk up to find an ancestor directory's stats\nreassigned ancestor_dirname from os.path.dirname(dirname) instead of\nos.path.dirname(ancestor_dirname), so once the immediate parent wasn't\nin device_test_stats, the loop recomputed the same value forever\ninstead of continuing up the tree. This made --print-summary hang.\n\n* Tools/Scripts/webkitpy/layout_tests/controllers/manager.py:\n(Manager.print_summary):\n\nCanonical link: https://commits.webkit.org/317868@main",
      "email": "ahmad.saleem792+github@gmail.com",
      "hash": "85eea80d3a98e8fc5f4b091aade44f0cb5d28db4",
      "subject": "--print-summary hangs indefinitely due to infinite loop in Manager ancestor-directory walk"
    },
    "317869@main": {
      "author": "Ahmad Saleem",
      "avatar": "https://www.gravatar.com/avatar/38445f84fe28aa19bfeb1f59f6559532?d=identicon\u0026s=64",
      "cl": "317869@main",
      "clUrl": "https://commits.webkit.org/317869@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=318966\nrdar://181820705\n\nReviewed by Chris Dumez.\n\nIn parseNPTTime(), the NPT hours field (\"npt-hh = 1*DIGIT\", any positive\nnumber) was parsed with parseInteger\u003cint\u003e(digits1).value_or(0). When the\nvalue exceeded the range of int, parseInteger returned nullopt and\nvalue_or(0) silently coerced it to 0 hours, so a fragment such as\n\"t=99999999999:00:05\" was accepted as a valid seek to 00:05 (5 seconds)\nrather than being rejected. The same value1 is also used for plain\nnpt-sec fragments (e.g. \"t=99999999999\"), so that path was affected too.\n\nReject the fragment when the hours value fails to parse, consistent with\nhow the minutes and seconds fields are already validated.\n\nAlso fix a related integer overflow: the hours value was multiplied by\nsecondsPerHour (3600) using plain int arithmetic before being converted\nto a double, so an in-range hours value like 1000000\n(1000000 * 3600 = 3.6e9) could overflow INT_MAX and produce a wrong or\nnegative seek time via signed integer overflow. Compute the total in\ndouble precision instead.\n\nTests: media/media-fragments/TC0096.html\n       media/media-fragments/TC0097.html\n       media/media-fragments/TC0098.html\n\n* LayoutTests/media/media-fragments/TC0096-expected.txt: Added.\n* LayoutTests/media/media-fragments/TC0096.html: Added.\n* LayoutTests/media/media-fragments/TC0097-expected.txt: Added.\n* LayoutTests/media/media-fragments/TC0097.html: Added.\n* LayoutTests/media/media-fragments/TC0098-expected.txt: Added.\n* LayoutTests/media/media-fragments/TC0098.html: Added.\n* LayoutTests/media/media-fragments/media-fragments.js: Added TC0096,\nTC0097, and TC0098, covering an out-of-range npt-hh value, an\nout-of-range plain npt-sec value, and an in-range npt-hh value whose\nmultiplication by secondsPerHour would overflow a 32-bit int.\n\n* Source/WebCore/html/MediaFragmentURIParser.cpp:\n(WebCore::MediaFragmentURIParser::parseNPTTime): Return false when the\nhours value overflows instead of defaulting it to 0. Compute the total\nnumber of seconds using double arithmetic to avoid a signed-integer\noverflow when multiplying the hours value by secondsPerHour. Removed\nthe now-unused secondsPerHour and secondsPerMinute constants.\n\nCanonical link: https://commits.webkit.org/317869@main",
      "email": "ahmad.saleem792+github@gmail.com",
      "hash": "31f8a026714a04aa36545ad1aaea0e237f403a09",
      "subject": "MediaFragmentURIParser silently accepts overflowing NPT hours value instead of rejecting the fragment"
    },
    "317870@main": {
      "author": "Yusuke Suzuki",
      "avatar": "https://www.gravatar.com/avatar/3455d9081295e3e740c1ffa901217d9b?d=identicon\u0026s=64",
      "cl": "317870@main",
      "clUrl": "https://commits.webkit.org/317870@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320152\nrdar://183088481\n\nReviewed by Tadeu Zagallo and Marcus Plutowski.\n\nJSTests/wasm/stress/type-index-abstract-heap-types.js was very slow and frequently timing out.\nSplit them into smaller tests.\n\n* JSTests/wasm/stress/type-index-abstract-heap-types-concrete-vs-abstract.js: Added.\n(testConcreteVsAbstract):\n* JSTests/wasm/stress/type-index-abstract-heap-types-globals-and-tables.js: Added.\n(testGlobalsAndTables):\n* JSTests/wasm/stress/type-index-abstract-heap-types-nulls-and-casts.js: Added.\n(testAbstractNullsAndCasts):\n* JSTests/wasm/stress/type-index-abstract-heap-types-subtype-validation.js: Added.\n(testSubtypeValidation):\n* JSTests/wasm/stress/type-index-abstract-heap-types.js: Removed.\n\nCanonical link: https://commits.webkit.org/317870@main",
      "email": "ysuzuki@apple.com",
      "hash": "bffbddea9fb29def5973a9d6c8905341f88989eb",
      "subject": "Split very slow wasm tests"
    },
    "317871@main": {
      "author": "Yusuke Suzuki",
      "avatar": "https://www.gravatar.com/avatar/3455d9081295e3e740c1ffa901217d9b?d=identicon\u0026s=64",
      "cl": "317871@main",
      "clUrl": "https://commits.webkit.org/317871@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320156\nrdar://183089589\n\nReviewed by Tadeu Zagallo.\n\nThis test takes very long time. This patch removes testLoopCount from\nthis test as its intent is stressing RegExp, which is fine without\nwarmup count.\n\n* JSTests/stress/regexp-unicode-bmp-fast-path-code-points.js:\n(const.first.of.codeUnits.const.second.of.followers.first.toString):\n(i.const.first.of.codeUnits.const.second.of.followers.first.toString): Deleted.\n\nCanonical link: https://commits.webkit.org/317871@main",
      "email": "ysuzuki@apple.com",
      "hash": "3334d1ee02f63cff75754f95e265d5afb7e43fa9",
      "subject": "[JSC] stress/regexp-unicode-bmp-fast-path-code-points.js is timed out"
    },
    "317872@main": {
      "author": "Yusuke Suzuki",
      "avatar": "https://www.gravatar.com/avatar/3455d9081295e3e740c1ffa901217d9b?d=identicon\u0026s=64",
      "cl": "317872@main",
      "clUrl": "https://commits.webkit.org/317872@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320140\nrdar://183079408\n\nReviewed by Keith Miller.\n\nAfter 317795@main, --target jsc for example does not produce a JSC shell\nbinary which is code-signed. This patch fixes the issue by setting a\npost-build task only for \"EXECUTABLE\" target. We do not do it for the\nother type of targets since POST_BUILD in Ninja is executed just after\nlinking, and frameworks requires the other jobs before codesining the\nframework (WebKit.framework linking -\u003e XPC services are linked against\nthis framework -\u003e XPC services are code-signed -\u003e codesign\nWebKit.framework). But EXECUTABLE does not need to code-sign the other\nthings before sealing. So using POST_BUILD is fine.\n\nWe keep jsc_CodeSign etc. as a custom target which relies on jsc target\nto keep the downstream use of this name without hassle.\n\n* Source/cmake/WebKitMacros.cmake:\n\nCanonical link: https://commits.webkit.org/317872@main",
      "email": "ysuzuki@apple.com",
      "hash": "99d852ceffcf11dc07176f8ffd9f967bc594317c",
      "subject": "[CMake] Fix target names for executables"
    },
    "317873@main": {
      "author": "Andy Estes",
      "avatar": "https://www.gravatar.com/avatar/643f10f01b26fd94d03482a2013b2ea0?d=identicon\u0026s=64",
      "cl": "317873@main",
      "clUrl": "https://commits.webkit.org/317873@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320139\nrdar://183074348\n\nReviewed by Jer Noble.\n\nAdded site-isolation layout tests that verify camera, microphone, and display-capture permissions\npolicy in cross-origin frames.\n\n* LayoutTests/http/tests/site-isolation/permissions-api-camera-expected.txt: Added.\n* LayoutTests/http/tests/site-isolation/permissions-api-camera.html: Added.\n* LayoutTests/http/tests/site-isolation/permissions-api-microphone-expected.txt: Added.\n* LayoutTests/http/tests/site-isolation/permissions-api-microphone.html: Added.\n* LayoutTests/http/tests/site-isolation/permissions-policy-camera-expected.txt: Added.\n* LayoutTests/http/tests/site-isolation/permissions-policy-camera.html: Added.\n* LayoutTests/http/tests/site-isolation/permissions-policy-display-capture-expected.txt: Added.\n* LayoutTests/http/tests/site-isolation/permissions-policy-display-capture.html: Added.\n* LayoutTests/http/tests/site-isolation/permissions-policy-microphone-expected.txt: Added.\n* LayoutTests/http/tests/site-isolation/permissions-policy-microphone.html: Added.\n* LayoutTests/http/tests/site-isolation/permissions-policy-sync-xhr-expected.txt: Renamed from LayoutTests/http/tests/site-isolation/permissions-policy-expected.txt.\n* LayoutTests/http/tests/site-isolation/permissions-policy-sync-xhr.html: Renamed from LayoutTests/http/tests/site-isolation/permissions-policy.html.\n* LayoutTests/http/tests/site-isolation/resources/getDisplayMedia-permission-frame.html: Added.\n* LayoutTests/http/tests/site-isolation/resources/getUserMedia-permission-frame.html: Added.\n* LayoutTests/http/tests/site-isolation/resources/permissions-query-frame.html: Added.\n\nCanonical link: https://commits.webkit.org/317873@main",
      "email": "aestes@apple.com",
      "hash": "4893de6f65eec801340e27b932b8d5ebdc66891c",
      "subject": "[Site Isolation] Test camera, microphone, and display-capture permissions policy in cross-origin frames"
    },
    "317874@main": {
      "author": "Sammy Gill",
      "avatar": "https://www.gravatar.com/avatar/715a3cfee5d85ee90ccfdaa2a4a7a5a3?d=identicon\u0026s=64",
      "cl": "317874@main",
      "clUrl": "https://commits.webkit.org/317874@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319995\nrdar://182927210\n\nReviewed by Alan Baradlay.\n\nhttps://drafts.csswg.org/css-grid-1/#grid-item-sizing\n\nWhen a replaced element is not being stretched due to its alignment then\nwe try to size it to its natrual sizes. This falls into the logic that\ncomes from the rules of block-level elements from CSS2. There is extra\nwork that is needed for the case where a repalced element does not have\na natural size, but we defer to do that in a later patch since this\nshould be the common case.\n\nAfter this there should only be two cases left that we need to figure\nout in terms of computing the automatic sizes for grid items. These are\nthe replaced elements without a natural size and non-replaced elements\nwith a preferred aspect ratio that are documented in the FIXME.\n\nAlso, we work with the assumption that the content is all horizontal-tb\nsince that is the only thing allowed into GFC. Incorporating other\nwriting modes will ideally just be a small API changing to make sure the\nmapping is done correctly and the core logic this patch introduces\nshould remain the same.\n\n* Source/WebCore/layout/layouttree/LayoutElementBox.cpp:\n(WebCore::Layout::ElementBox::hasNaturalWidth const):\n(WebCore::Layout::ElementBox::hasNaturalHeight const):\n(WebCore::Layout::ElementBox::naturalWidth const):\n(WebCore::Layout::ElementBox::naturalHeight const):\nWe had an API that checked the box for an intrinsic width/height, but\nthose also handle cases where the box is a non-replaced element which is\nsomething we are not concerned with for this portion of the spec. I\nadded a set of natural size APIs that is similar but is targeted only\nboxes which are replaced elements since that is the type of content that\nhas natural sizes.\n\nhttps://www.w3.org/TR/css-images-3/#natural-size\nCanonical link: https://commits.webkit.org/317874@main",
      "email": "sammy.gill@apple.com",
      "hash": "ae45cfcca596a58a0202e585a88ce6dfcba4147a",
      "subject": "[GFC] Implement initial logic for automatic sizes of replaced elements"
    },
    "317875@main": {
      "author": "Tadeu Zagallo",
      "avatar": "https://www.gravatar.com/avatar/d517fd5480efde083cc7b6af36c73ced?d=identicon\u0026s=64",
      "cl": "317875@main",
      "clUrl": "https://commits.webkit.org/317875@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=318144\nrdar://180959164\n\nReviewed by Yusuke Suzuki.\n\nWhile optimizing instanceof, we first compute the result then trigger the IC generation.\nHowever, the prototype chain can be mutated by user code (e.g. a Proxy getPrototypeOf\ntrap or a getter) that runs while defaultHasInstance computes the instanceof result.\nWhen that happens, the chain walked during inline cache generation may no longer match\nthe result we observed, so we can reach the prototype even though the operation reported\na miss (shouldHit is false). In that case there is no consistent IC to build, so bail out\nand let the caller fall back to the megamorphic case instead of caching a stale condition set.\n\nTest: JSTests/stress/instanceof-prototype-change-during-compilation.js\n* JSTests/stress/instanceof-prototype-change-during-compilation.js: Added.\n(attempt.rootACtor):\n(attempt.const.quietGate.get trip):\n(attempt.const.noisyGate.get trip):\n(attempt.hot):\n(attempt.drive):\n(attempt):\n* Source/JavaScriptCore/bytecode/ObjectPropertyConditionSet.cpp:\n(JSC::generateConditionsForInstanceOf):\n\nCanonical link: https://commits.webkit.org/317875@main",
      "email": "tzagallo@apple.com",
      "hash": "9fc2f58ca9fcd8d0977d0805f96e6cc9785e7490",
      "subject": "[JSC] instanceof prototype-chain IC condition mismatch (release assertion)"
    },
    "317876@main": {
      "author": "Lily Spiniolas",
      "avatar": "https://www.gravatar.com/avatar/b65cfeb51301399bd50e338bb2d7613e?d=identicon\u0026s=64",
      "cl": "317876@main",
      "clUrl": "https://commits.webkit.org/317876@main",
      "description": "https://webkit.org/b/319803\nrdar://182131572\n\nReviewed by Abrar Rahman Protyasha.\n\nStop calling `update` on the refresh controller until the scroll stretch\nsettles after activation.\n\nAdded a basic NSRefreshController test along with a test for this specific\nbug.\n\nTest: Tools/TestWebKitAPI/Tests/WebKit/WKWebView/mac/NSRefreshControllerTests.mm\n\n* Source/WebKit/UIProcess/mac/WebViewImpl.h:\n* Source/WebKit/UIProcess/mac/WebViewImpl.mm:\n(WebKit::WebViewImpl::setRefreshController):\n(WebKit::WebViewImpl::applyRefreshControllerHeight):\n(WebKit::WebViewImpl::updateRefreshControllerFrame):\n(WebKit::WebViewImpl::topScrollStretchDidChange):\n(WebKit::WebViewImpl::updateRefreshControllerForWheelEvent):\n(WebKit::WebViewImpl::updateRefreshControllerForPanGesture):\n* Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:\n* Tools/TestWebKitAPI/Tests/WebKit/WKWebView/mac/NSRefreshControllerTests.mm: Added.\n(-[TestRefreshControllerTarget refreshControllerActivated:]):\n(TestWebKitAPI::pullDownAndWaitForRefresh):\n(TestWebKitAPI::TEST(NSRefreshControllerTests, Basic)):\n(TestWebKitAPI::TEST(NSRefreshControllerTests, DoesNotRefireDuringSettleAtSmallWindowHeight)):\n\nCanonical link: https://commits.webkit.org/317876@main",
      "email": "lily_spiniolas@apple.com",
      "hash": "19adb12b17aca01c1226574b0fea9c109e0a0b88",
      "subject": "[macOS] NSRefreshController may enter activation loop if window is short"
    },
    "317877@main": {
      "author": "Sammy Gill",
      "avatar": "https://www.gravatar.com/avatar/715a3cfee5d85ee90ccfdaa2a4a7a5a3?d=identicon\u0026s=64",
      "cl": "317877@main",
      "clUrl": "https://commits.webkit.org/317877@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320194\nrdar://problem/183142295\n\nReviewed by Alan Baradlay.\n\nWe already disable for vertical writing modes and it seems like there\nare some tests that depend on some logic when we have a horizontal-bt\nwriting mode so let's disable it for now.\n\nCanonical link: https://commits.webkit.org/317877@main",
      "email": "sammy.gill@apple.com",
      "hash": "47ce67fb51d638d315c5137e920706158356ef17",
      "subject": "[GFC] Bail out of GFC for a flipped-block (horizontal-bt) writing mode"
    },
    "317878@main": {
      "author": "Adrian Taylor",
      "avatar": "https://www.gravatar.com/avatar/d2acb8ad2e2670ff74ae0d65fb27014c?d=identicon\u0026s=64",
      "cl": "317878@main",
      "clUrl": "https://commits.webkit.org/317878@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320182\nrdar://183123665\n\nReviewed by Simon Fraser.\n\nSome Apple internal build configurations attempt to enable the Swift back\nforward list on very recent iOS 26 SDKs. The open source configuration\nmistakenly declared that this was impossible, so builds fail. Adjust the\nconfiguration to state that such builds are impossible only on 26.5 and below.\n\nCanonical link: https://commits.webkit.org/317878@main",
      "email": "adrian_taylor@apple.com",
      "hash": "fb048a9ea637d38bedc1fcb133f28a1fb4da9d10",
      "subject": "Enable Swift/C++ interop on most recent iOS 26 SDKs"
    },
    "317879@main": {
      "author": "Alan Baradlay",
      "avatar": "https://www.gravatar.com/avatar/788d66417db806c567552cfa1ae89f77?d=identicon\u0026s=64",
      "cl": "317879@main",
      "clUrl": "https://commits.webkit.org/317879@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320188\n\nReviewed by Antti Koivisto.\n\nFlexFormattingContext reached into the render tree by calling back into RenderFlexibleBox\ndirectly (m_flexBox-\u003e...). Introduce LayoutIntegration::FlexIntegrationUtils as the boundary\nthe formatting context goes through instead, mirroring how InlineFormattingContext uses its\nIntegrationUtils: LayoutIntegration::FlexLayout (the flex integration layer that drives the\nFFC) constructs and owns it and hands it to the stack-scoped FlexFormattingContext, which\nreaches it only via integrationUtils(). RenderFlexibleBox just befriends it.\n\nThe integration realizes each operation one of two ways, but the FFC-facing boundary is\nuniform:\n- Child-manipulating flex logic moves its body onto FlexIntegrationUtils:\n  applyStretchedLogicalHeightToFlexItem, layoutFlexItemForStretchedCrossSize and\n  layoutFlexItemWithMainSize (each still delegates the RenderFlexibleBox helpers it does\n  not own via flexBox()).\n- Operations that are the container sizing itself (updateFlexContainerLogicalHeight, which\n  uses RenderBox's own protected height resolution), inherited RenderBox/RenderBlock\n  mutators (setTrimmedMarginForChild, adjustBorderBoxLogicalWidthForBoxSizing), and helpers\n  whose state/readers stay on the renderer (the margin-trim addItem* -- whose sets are read\n  by the isChildEligibleForMarginTrim virtual -- and flexItemHasPercentHeightDescendants)\n  stay on RenderFlexibleBox and are proxied through FlexIntegrationUtils.\n\nThe integration's API is expressed in terms of FlexLayoutItem (extracting the renderer\ninternally), matching the abstraction the formatting context works in.\n\n* Source/WebCore/Headers.cmake:\n* Source/WebCore/Sources.txt:\n* Source/WebCore/WebCore.xcodeproj/project.pbxproj:\n* Source/WebCore/layout/integration/flex/FlexIntegrationUtils.h: Added.\n* Source/WebCore/layout/integration/flex/FlexIntegrationUtils.cpp: Added.\n(WebCore::LayoutIntegration::FlexIntegrationUtils::FlexIntegrationUtils):\n(WebCore::LayoutIntegration::FlexIntegrationUtils::flexLayoutState const):\n(WebCore::LayoutIntegration::FlexIntegrationUtils::applyStretchedLogicalHeightToFlexItem):\n(WebCore::LayoutIntegration::FlexIntegrationUtils::layoutFlexItemForStretchedCrossSize):\n(WebCore::LayoutIntegration::FlexIntegrationUtils::layoutFlexItemWithMainSize):\n(WebCore::LayoutIntegration::FlexIntegrationUtils::updateFlexContainerLogicalHeight):\n(WebCore::LayoutIntegration::FlexIntegrationUtils::setTrimmedMarginForChild):\n(WebCore::LayoutIntegration::FlexIntegrationUtils::adjustBorderBoxLogicalWidthForBoxSizing const):\n(WebCore::LayoutIntegration::FlexIntegrationUtils::addItemAtFlexLineStart):\n(WebCore::LayoutIntegration::FlexIntegrationUtils::addItemAtFlexLineEnd):\n(WebCore::LayoutIntegration::FlexIntegrationUtils::addItemOnFirstFlexLine):\n(WebCore::LayoutIntegration::FlexIntegrationUtils::addItemOnLastFlexLine):\n(WebCore::LayoutIntegration::FlexIntegrationUtils::flexItemHasPercentHeightDescendants const):\n* Source/WebCore/layout/integration/flex/LayoutIntegrationFlexLayout.h:\n* Source/WebCore/layout/integration/flex/LayoutIntegrationFlexLayout.cpp:\n(WebCore::LayoutIntegration::FlexLayout::FlexLayout):\n(WebCore::LayoutIntegration::FlexLayout::layout):\n* Source/WebCore/layout/formattingContexts/flex/FlexFormattingContext.h:\n* Source/WebCore/layout/formattingContexts/flex/FlexFormattingContext.cpp:\n(WebCore::FlexFormattingContext::FlexFormattingContext):\n(WebCore::FlexFormattingContext::layout):\n(WebCore::FlexFormattingContext::layoutFlexItems):\n(WebCore::FlexFormattingContext::trimMainAxisMarginStart):\n(WebCore::FlexFormattingContext::trimMainAxisMarginEnd):\n(WebCore::FlexFormattingContext::trimCrossAxisMarginStart):\n(WebCore::FlexFormattingContext::trimCrossAxisMarginEnd):\n(WebCore::FlexFormattingContext::applyStretchAlignmentToFlexItem):\n(WebCore::FlexFormattingContext::applyStretchMinMaxCrossSize):\n(WebCore::FlexFormattingContext::layoutState const):\n(WebCore::FlexFormattingContext::layoutFlexItemsWithMainSizes):\n(WebCore::FlexFormattingContext::computeMainSizeFromAspectRatioUsing const):\n* Source/WebCore/rendering/RenderFlexibleBox.h:\n* Source/WebCore/rendering/RenderFlexibleBox.cpp:\n(WebCore::RenderFlexibleBox::applyStretchedLogicalHeightToFlexItem): Deleted.\n(WebCore::RenderFlexibleBox::layoutFlexItemForStretchedCrossSize): Deleted.\n(WebCore::RenderFlexibleBox::layoutFlexItemWithMainSize): Deleted.\n\nCanonical link: https://commits.webkit.org/317879@main",
      "email": "zalan@apple.com",
      "hash": "e7bee5e32c6eae701208ccb7c4346875b0f3776b",
      "subject": "[cleanup] Introduce LayoutIntegration::FlexIntegrationUtils and route FlexFormattingContext's render-tree access through it"
    },
    "317880@main": {
      "author": "Ruthvik Konda",
      "avatar": "https://www.gravatar.com/avatar/bca33cefcce93017251a8fbc1204cdc4?d=identicon\u0026s=64",
      "cl": "317880@main",
      "clUrl": "https://commits.webkit.org/317880@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320110\nrdar://183047747\n\nReviewed by Mike Wyrzykowski and Etienne Segonzac.\n\nHTMLModelElement.cpp includes GraphicsLayerCA.h but only uses the base GraphicsLayer class (from GraphicsLayer.h). Remove the unused include. No change in behavior.\n\n* Source/WebCore/Modules/model-element/HTMLModelElement.cpp:\n\nCanonical link: https://commits.webkit.org/317880@main",
      "email": "rkonda2@apple.com",
      "hash": "63e2de4557af177cfc8e6fda59ec318b1c17dd82",
      "subject": "[model] Remove unused GraphicsLayerCA.h include in HTMLModelElement"
    },
    "317881@main": {
      "author": "Ahmad Saleem",
      "avatar": "https://www.gravatar.com/avatar/38445f84fe28aa19bfeb1f59f6559532?d=identicon\u0026s=64",
      "cl": "317881@main",
      "clUrl": "https://commits.webkit.org/317881@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320048\nrdar://182985963\n\nReviewed by Youenn Fablet.\n\nOnce AudioComponentInstanceNew() succeeds, createAudioUnitIfNeeded()\nconfigures the new AudioComponentInstance through a series of\nAudioUnitSetProperty()/AudioUnitGetProperty()/AudioUnitInitialize()\ncalls, each followed by an early return on failure. None of those\nearly returns disposed the instance first, so any failure after\ncreation leaked an AudioUnit/HAL resource; only the final success\npath assigned it to m_remoteIOUnit for later cleanup in stop().\nSince createAudioUnitIfNeeded() can be retried, a persistently\nfailing configuration step would leak a new instance on every call.\n\nUsed a WTF::ScopeExit to dispose of remoteIOUnit on any early return\nafter AudioComponentInstanceNew() succeeds, releasing the ScopeExit\nright before the final successful assignment to m_remoteIOUnit.\n\nNo new tests, since this path only leaks a HAL resource and cannot\nbe detected by output-diffing LayoutTests/WPT; there's no mock layer\nfor the CoreAudio calls exercised here.\n\n* Source/WebCore/platform/mediastream/cocoa/AudioMediaStreamTrackRendererInternalUnit.cpp:\n(WebCore::LocalAudioMediaStreamTrackRendererInternalUnit::createAudioUnitIfNeeded):\n\nCanonical link: https://commits.webkit.org/317881@main",
      "email": "ahmad.saleem792+github@gmail.com",
      "hash": "046517343c9de94cf783afc8120453edc35f3592",
      "subject": "LocalAudioMediaStreamTrackRendererInternalUnit::createAudioUnitIfNeeded() leaks an AudioComponentInstance on every post-creation error path"
    },
    "317882@main": {
      "author": "BJ Burg",
      "avatar": "https://www.gravatar.com/avatar/7bba434e462e6f8d8c4d17f82699886e?d=identicon\u0026s=64",
      "cl": "317882@main",
      "clUrl": "https://commits.webkit.org/317882@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319712\n\nReviewed by Qianlang Chen.\n\nAdd a new boolean automation session capability that lets a client indicate\na WebDriver/Automation session is being driven by an external agent. The\ncapability is forwarded the same way as the existing siteIsolationEnabled\ncapability: parsed from the automation session request dictionary under the\nwire key org.webkit.webdriver.controlled-by-external-agent, carried through\nRemoteInspector::SessionCapabilities, and applied onto the\n_WKAutomationSessionConfiguration SPI so it round-trips through\n-copyWithZone:.\n\n* Source/JavaScriptCore/inspector/remote/RemoteInspectorConstants.h:\nAdd the WIRControlledByExternalAgent wire key.\n* Source/JavaScriptCore/inspector/remote/RemoteInspector.h:\nAdd controlledByExternalAgent to SessionCapabilities.\n* Source/JavaScriptCore/inspector/remote/cocoa/RemoteInspectorCocoa.mm:\n(Inspector::RemoteInspector::receivedAutomationSessionRequestMessage):\nParse the new capability.\n* Source/WebKit/UIProcess/Cocoa/AutomationClient.mm:\n(WebKit::AutomationClient::requestAutomationSession): Forward the capability\nonto the configuration.\n* Source/WebKit/UIProcess/API/Cocoa/_WKAutomationSessionConfiguration.h:\nDeclare the controlledByExternalAgent property.\n* Source/WebKit/UIProcess/API/Cocoa/_WKAutomationSessionConfiguration.mm:\n(-[_WKAutomationSessionConfiguration init]): Default to NO.\n(-[_WKAutomationSessionConfiguration copyWithZone:]): Preserve the flag.\n* Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj: Add the new\ntest file to both membership exception lists.\n* Tools/TestWebKitAPI/Tests/WebKit/WebPage/ControlledByExternalAgent.swift:\nAdded. Tests that the flag round-trips through the automation session and\nsurvives -copyWithZone:, and defaults to NO when unset.\n\nCanonical link: https://commits.webkit.org/317882@main",
      "email": "bburg@apple.com",
      "hash": "02454a458e422be7d6b42db73a8bf7cfacf2a7b9",
      "subject": "[Web Automation] Add a controlledByExternalAgent automation session capability"
    },
    "317883@main": {
      "author": "Ling Ho",
      "avatar": "https://www.gravatar.com/avatar/a317955e944b0846697e4a9c8cd28b65?d=identicon\u0026s=64",
      "cl": "317883@main",
      "clUrl": "https://commits.webkit.org/317883@main",
      "description": "rdar://122142046\n\nReviewed by Ryan Haddad.\n\nWhen `git-webkit pull-request` posts to the associated bug, it makes two\nseparate tracker writes: it assigns the issue to the current user, and then\nadds a \"Pull request: \u003curl\u003e\" comment. When both land in the same clock second,\nthe comment's email notification can be silently dropped -- for Bugzilla,\nBugMail::Send only mails comments whose creation_ts is strictly greater than\nthe bug's whole-second `lastdiffed`, and the assignee change just advanced\n`lastdiffed` to that second. The comment is still recorded on the bug, but no\nemail is ever sent, so the WebKit Bug Importer never sees the pull-request link.\n\nWait out the current second between the assignee change and the comment so the\ncomment lands in a later second and its notification is always sent. The delay\nonly applies on the racy path (an assignee change actually happened and we are\nabout to post the comment to an open issue); the already-assigned, gardening,\nand reopen paths are unchanged.\n\n* Tools/Scripts/libraries/webkitscmpy/webkitscmpy/__init__.py: Bump version to 7.0.4.\n* Tools/Scripts/libraries/webkitscmpy/webkitscmpy/program/pull_request.py:\n(PullRequest.add_comment_to_issue): Sleep 1.1s after an assignee change before\nposting the pull-request comment so the two writes fall in different seconds.\n\nCanonical link: https://commits.webkit.org/317883@main",
      "email": "lingho@apple.com",
      "hash": "a7cc54396c4a2135e9f4b22369db8b99dd795443",
      "subject": "[WKBI] Bugzilla comment for PR creation not added to radar"
    },
    "317884@main": {
      "author": "Patrick Griffis",
      "avatar": "https://www.gravatar.com/avatar/2233c3a857004b126158572af9fe36f7?d=identicon\u0026s=64",
      "cl": "317884@main",
      "clUrl": "https://commits.webkit.org/317884@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320218\n\nUnreviewed gardening.\n\nMove the scroll-snap, sticky and scrollbar reftest expectations from wpe to\nglib: they have always failed on WPE and the GTK bots now reproduce them since\n317862@main enabled async overflow scrolling for GTK WPTs.\n\n* LayoutTests/platform/glib/TestExpectations:\n* LayoutTests/platform/gtk/TestExpectations:\n* LayoutTests/platform/wpe/TestExpectations:\n\nCanonical link: https://commits.webkit.org/317884@main",
      "email": "pgriffis@igalia.com",
      "hash": "8a65779a5e775c86f799e2b05f5063f68163832a",
      "subject": "[GTK][WPE] Gardening of tests - 2026-07-24"
    },
    "317885@main": {
      "author": "Alex Christensen",
      "avatar": "https://www.gravatar.com/avatar/b087c5dfcb1233e80cad9105fd5a1ac6?d=identicon\u0026s=64",
      "cl": "317885@main",
      "clUrl": "https://commits.webkit.org/317885@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320161\nrdar://183095821\n\nReviewed by Basuke Suzuki.\n\nThis removes unneeded null checks and makes the code more consistent.\nEverything the WebTransportSession does that returns something uses NativePromise\nthe same way now.  I initially made WebTransportSession able to be disconnected\nwhen the connection terminates, but now that we need it around for getStats\nafter connection termination, we may as well make it a const Ref.\n\n* Source/WebCore/Modules/webtransport/WebTransport.cpp:\n(WebCore::WebTransport::create):\n(WebCore::clientOrigin):\n(WebCore::WebTransport::WebTransport):\n(WebCore::WebTransport::receiveIncomingUnidirectionalStream):\n(WebCore::WebTransport::receiveBidirectionalStream):\n(WebCore::WebTransport::streamReceiveError):\n(WebCore::WebTransport::streamSendError):\n(WebCore::WebTransport::getStats):\n(WebCore::WebTransport::exportKeyingMaterial):\n(WebCore::WebTransport::cleanupContext):\n(WebCore::WebTransport::close):\n(WebCore::WebTransport::createBidirectionalStream):\n(WebCore::WebTransport::createUnidirectionalStream):\n(WebCore::WebTransport::initializeOverHTTP): Deleted.\n(WebCore::WebTransport::session):\n* Source/WebCore/Modules/webtransport/WebTransport.h:\n(WebCore::WebTransport::session const):\n* Source/WebCore/Modules/webtransport/WebTransportDatagramDuplexStream.cpp:\n(WebCore::WebTransportDatagramDuplexStream::session):\n* Source/WebCore/Modules/webtransport/WebTransportDatagramsWritable.cpp:\n(WebCore::WebTransportDatagramsWritable::create):\n* Source/WebCore/Modules/webtransport/WebTransportReceiveStreamByteSource.cpp:\n(WebCore::WebTransportReceiveStreamByteSource::cancel):\n* Source/WebCore/Modules/webtransport/WebTransportSendGroup.cpp:\n(WebCore::WebTransportSendGroup::getStats):\n* Source/WebCore/Modules/webtransport/WebTransportSendStream.cpp:\n(WebCore::WebTransportSendStream::getStats):\n* Source/WebCore/Modules/webtransport/WebTransportSendStreamSink.cpp:\n(WebCore::WebTransportSendStreamSink::write):\n(WebCore::WebTransportSendStreamSink::close):\n(WebCore::WebTransportSendStreamSink::abort):\n* Source/WebCore/Modules/webtransport/WebTransportSession.h:\n* Source/WebCore/Modules/webtransport/WorkerWebTransportSession.cpp:\n(WebCore::WorkerWebTransportSession::initialize):\n* Source/WebCore/Modules/webtransport/WorkerWebTransportSession.h:\n* Source/WebCore/dom/Document.h:\n* Source/WebCore/loader/EmptyClients.cpp:\n(WebCore::emptySocketProvider):\n(WebCore::pageConfigurationWithEmptyClients):\n* Source/WebCore/loader/EmptyClients.h:\n* Source/WebCore/page/SocketProvider.h:\n* Source/WebKit/WebProcess/Network/WebSocketProvider.cpp:\n(WebKit::WebSocketProvider::createWebTransportSession):\n(WebKit::WebSocketProvider::initializeWebTransportSession): Deleted.\n* Source/WebKit/WebProcess/Network/WebSocketProvider.h:\n* Source/WebKit/WebProcess/Network/WebTransportSession.cpp:\n(WebKit::WebTransportSession::create):\n(WebKit::WebTransportSession::WebTransportSession):\n(WebKit::WebTransportSession::initialize):\n* Source/WebKit/WebProcess/Network/WebTransportSession.h:\n* Source/WebKitLegacy/WebCoreSupport/LegacySocketProvider.cpp:\n(LegacySocketProvider::createWebTransportSession):\n(LegacySocketProvider::initializeWebTransportSession): Deleted.\n* Source/WebKitLegacy/WebCoreSupport/LegacySocketProvider.h:\n\nCanonical link: https://commits.webkit.org/317885@main",
      "email": "achristensen@apple.com",
      "hash": "fd5b5997ff3424e7fdc0be8e451d8ed1bd59a379",
      "subject": "Make WebTransport's session a Ref instead of a RefPtr"
    },
    "317886@main": {
      "author": "Kai Tamkun",
      "avatar": "https://www.gravatar.com/avatar/dff073cba21885df4d9f73ed3cc493c2?d=identicon\u0026s=64",
      "cl": "317886@main",
      "clUrl": "https://commits.webkit.org/317886@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319921\nrdar://180967133\n\nReviewed by Yusuke Suzuki.\n\nThis patch implements Iterator.zip and Iterator.zipKeyed, which are\npart of the TC39 Joint Iteration proposal (which is Stage 4 as of\nthis writing). The feature is gated behind the `useJointIteration`\noption, which for now is default-off.\n\nTests: JSTests/microbenchmarks/iterator-zip-keyed.js\n       JSTests/microbenchmarks/iterator-zip.js\n       JSTests/stress/iterator-zip.js\n\n* JSTests/microbenchmarks/iterator-zip-keyed.js: Added.\n(shouldBe):\n(test):\n* JSTests/microbenchmarks/iterator-zip.js: Added.\n(shouldBe):\n(test):\n* JSTests/stress/iterator-zip.js: Added.\n(stringify):\n(deepEqual):\n(shouldBe):\n(Array.from.Iterator.zipKeyed):\n* JSTests/test262/config.yaml:\n* Source/JavaScriptCore/builtins/BuiltinNames.h:\n* Source/JavaScriptCore/builtins/JSIteratorConstructor.js:\n(linkTimeConstant.getIteratorSync):\n(underlyingIterators.return):\n(generator):\n(linkTimeConstant.iteratorZip):\n(linkTimeConstant.getOptionsObject):\n(linkTimeConstant.closeAllIterators):\n(linkTimeConstant.iteratorCloseAllNormal):\n(linkTimeConstant.removeFirstFromList):\n(zip):\n(zipKeyed):\n* Source/JavaScriptCore/bytecode/LinkTimeConstant.h:\n* Source/JavaScriptCore/runtime/IteratorOperations.h:\n* Source/JavaScriptCore/runtime/JSGlobalObject.cpp:\n(JSC::JSGlobalObject::init):\n* Source/JavaScriptCore/runtime/JSIteratorConstructor.cpp:\n(JSC::JSIteratorConstructor::finishCreation):\n* Source/JavaScriptCore/runtime/JSIteratorConstructor.h:\n* Source/JavaScriptCore/runtime/ReflectObject.cpp:\n* Source/JavaScriptCore/runtime/ReflectObject.h:\n* Source/WTF/Scripts/Preferences/UnifiedWebPreferences.yaml:\n\nCanonical link: https://commits.webkit.org/317886@main",
      "email": "k_tamkun@apple.com",
      "hash": "240de0cf9d96a953b256e8c87fa479a558bef9ef",
      "subject": "[JSC] Implement Joint Iteration proposal"
    },
    "317887@main": {
      "author": "Patrick Griffis",
      "avatar": "https://www.gravatar.com/avatar/2233c3a857004b126158572af9fe36f7?d=identicon\u0026s=64",
      "cl": "317887@main",
      "clUrl": "https://commits.webkit.org/317887@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=274344\n\nUnreviewed test gardening\n\nThis appears to consistently pass.\n\n* Tools/TestWebKitAPI/glib/TestExpectations.json:\n\nCanonical link: https://commits.webkit.org/317887@main",
      "email": "pgriffis@igalia.com",
      "hash": "d799e643eb819271c4d198502f6f3122777fb094",
      "subject": "[GLib] Remove outdated failure expectation"
    },
    "317888@main": {
      "author": "Cole Carley",
      "avatar": "https://www.gravatar.com/avatar/091dd5641909acc46e581355f491ed34?d=identicon\u0026s=64",
      "cl": "317888@main",
      "clUrl": "https://commits.webkit.org/317888@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320132\nrdar://183070350\n\nReviewed by Marcus Plutowski.\n\nLayoutTests/imported/w3c/web-platform-tests/wasm/core/memory64/table64.wast.js\ntest #10 and #33 are failing because modules with tables with initial sizes\nlarger than Wasm::maxTableEntries fail to compile.\n\nTo fix this, I removed the compile-time check that is causing the failure.\nOnce the check is gone, the uint64_t initial is silently narrowed when\nconstructing TableInformation, so a value could overflow a uint32_t and wrap to a\nsmall, valid-looking length.\n\nInstead of rejecting a large initial at parse time, clamp the value to\nmaxTableEntries when narrowing it to the stored uint32_t. Out-of-range\ndeclarations therefore stay out of range and are still rejected by\nTable::tryCreate() at instantiation.\n\n* JSTests/wasm/stress/table64-initial-truncation.js: Added.\n(leb128):\n(moduleBytesWithTableInitial):\n* LayoutTests/imported/w3c/web-platform-tests/wasm/core/memory64/table64.wast.js-expected.txt:\n* Source/JavaScriptCore/wasm/WasmSectionParser.cpp:\n(JSC::Wasm::SectionParser::parseTableHelper):\n\nCanonical link: https://commits.webkit.org/317888@main",
      "email": "ccarley2@apple.com",
      "hash": "97187c70fb8727a668d979e6314a9a605e31d605",
      "subject": "[Memory64] Allow Wasm modules with an oversized initial table size to compile"
    },
    "317890@main": {
      "author": "Lauro Moura",
      "avatar": "https://www.gravatar.com/avatar/6157f52d61e04c2c63fe7ff668ba69b3?d=identicon\u0026s=64",
      "cl": "317890@main",
      "clUrl": "https://commits.webkit.org/317890@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=270895\n\nUnreviewed test gardening.\n\n* WebDriverTests/TestExpectations.json:\n\nCanonical link: https://commits.webkit.org/317890@main",
      "email": "lmoura@igalia.com",
      "hash": "4d0b162f1b01d8df029b4b822e0728374d8f1cf1",
      "subject": "[WebDriver] Support extra attributes of pointer action"
    },
    "317891@main": {
      "author": "Devin Rousso",
      "avatar": "https://www.gravatar.com/avatar/c9e757d973342c773f107a94b70cb9cd?d=identicon\u0026s=64",
      "cl": "317891@main",
      "clUrl": "https://commits.webkit.org/317891@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319168\n\nReviewed by Yusuke Suzuki.\n\n* Source/JavaScriptCore/wasm/WasmModule.h:\n(JSC::Wasm::Module::validateAsync):\n(JSC::Wasm::Module::create):\n(JSC::Wasm::Module::Module):\n* Source/JavaScriptCore/wasm/WasmModule.cpp:\n(JSC::Wasm::Module::Module):\n(JSC::Wasm::makeValidationResult):\n(JSC::Wasm::makeValidationCallback):\n(JSC::Wasm::Module::validateAsync):\n* Source/JavaScriptCore/wasm/WasmModuleInformation.h:\n* Source/JavaScriptCore/wasm/WasmStreamingCompiler.cpp:\n(JSC::Wasm::StreamingCompiler::StreamingCompiler):\n* Source/JavaScriptCore/wasm/debugger/WasmModuleDebugInfo.h:\n* Source/JavaScriptCore/wasm/debugger/WasmModuleDebugInfo.cpp:\n(JSC::Wasm::ModuleDebugInfo::debugName const):\n* Source/JavaScriptCore/wasm/js/JSWebAssembly.cpp:\n(JSC::compileAndInstantiate):\nStore the URL of streamed modules and module-loader for showing in Web Inspector.\n\n* Source/JavaScriptCore/wasm/js/JSWebAssemblyModule.cpp:\n(JSC::JSWebAssemblyModule::create):\n* Source/JavaScriptCore/debugger/Debugger.h:\n(JSC::Debugger::sourceParsed):\n(JSC::Debugger::Observer::didParseSource):\n(JSC::Debugger::sourceURLBase const): Added.\n* Source/JavaScriptCore/debugger/Debugger.cpp:\n(JSC::Debugger::attach):\n(JSC::Debugger::removeObserver):\n(JSC::Debugger::sourceParsed):\n* Source/JavaScriptCore/tools/JSDollarVM.cpp:\n(JSC::DoNothingDebugger::sourceParsed): Added.\nAdd instrumentation whenever a `WebAssembly.Module` is created.\nUse the standard WebAssembly module name subsection as an optional/fallback display name.\nDrive-by: deduplicate all parsed scripts by `SourceID`.\n\n* Source/JavaScriptCore/inspector/protocol/Debugger.json:\n* Source/JavaScriptCore/inspector/scripts/codegen/generator.py:\n(ucfirst):\n* Source/JavaScriptCore/inspector/agents/InspectorDebuggerAgent.h:\n(Inspector::InspectorDebuggerAgent::didParseSource):\n* Source/JavaScriptCore/inspector/agents/InspectorDebuggerAgent.cpp:\n(Inspector::scriptTypeForScript): Added.\n(Inspector::InspectorDebuggerAgent::resolveBreakpoint):\n(Inspector::InspectorDebuggerAgent::getBreakpointLocations):\n(Inspector::InspectorDebuggerAgent::setBlackboxConfiguration):\n(Inspector::InspectorDebuggerAgent::didParseSource):\nReport script type, execution context, and display name for each `WebAssembly.Module`.\nDisable unsupported WebAssembly debugger features (e.g. breakpoints, blackboxing, etc.).\n\n* Source/WebCore/bindings/js/JSDOMGlobalObject.cpp:\n(WebCore::handleResponseOnStreamingAction):\nForward the final response URL to the streaming compiler so it can be stored with the module.\n\n* Source/WebCore/inspector/FrameDebugger.h:\n(WebCore::FrameDebugger::sourceURLBase const): Added.\n* Source/WebCore/inspector/FrameDebugger.cpp:\n(WebCore::FrameDebugger::sourceURLBase const): Added.\n* Source/WebCore/inspector/PageDebugger.h:\n(WebCore::PageDebugger::sourceURLBase const): Added.\n* Source/WebCore/inspector/PageDebugger.cpp:\n(WebCore::PageDebugger::sourceURLBase const): Added.\n* Source/WebCore/inspector/WorkerDebugger.h:\n(WebCore::WorkerDebugger::sourceURLBase const): Added.\n* Source/WebCore/inspector/WorkerDebugger.cpp:\n(WebCore::WorkerDebugger::sourceURLBase const): Added.\nUse the document or `Worker` URL as the base for modules instantiated directly from bytes.\n\n* Source/WebCore/inspector/agents/frame/FrameRuntimeAgent.cpp:\n(WebCore::FrameRuntimeAgent::frameIdForProtocol const):\nUse process-qualified identifiers so execution contexts can be associated with site-isolated frames.\n\n* Source/WebInspectorUI/UserInterface/Protocol/DebuggerObserver.js:\n(WI.DebuggerObserver):\n(WI.DebuggerObserver.prototype.scriptParsed):\n* Source/WebInspectorUI/UserInterface/Protocol/RuntimeObserver.js:\n(WI.RuntimeObserver.prototype.executionContextCreated):\n* Source/WebInspectorUI/UserInterface/Controllers/DebuggerManager.js:\n(WI.DebuggerManager):\n(WI.DebuggerManager.prototype.scriptDidParse):\n(WI.DebuggerManager.prototype._frameForExecutionContext): Added.\n(WI.DebuggerManager.prototype._targetRemoved):\n(WI.DebuggerManager.prototype._frameWasRemoved): Added.\nConvert the legacy `module` parameter from older backends into a `Debugger.ScriptType` enum.\nAssociate every `WI.Script` reported with a `WI.ExecutionContext` to its owner `WI.Frame`.\nKeep WebAssembly module `WI.Script` that cannot map to a `WI.Resource` in \"Extra Scripts\".\n\n* Source/WebInspectorUI/UserInterface/Models/Script.js:\n(WI.Script):\n(WI.Script.isWebAssembly): Added.\n(WI.Script.prototype.get parentFrame): Added.\n(WI.Script.prototype.get mimeType):\n(WI.Script.prototype.get syntheticMIMEType): Added.\n(WI.Script.prototype.get supportsScriptBlackboxing): Added.\n(WI.Script.prototype.get displayName):\n(WI.Script.prototype.couldBeMainResource):\n(WI.Script.prototype._resolveResource):\nGive WebAssembly `WI.Script` a MIME of `application/wasm`.\nResolve a matching `WI.Resource` without allowing WebAssembly `WI.Script` to replace a main resource.\n\n* Source/WebInspectorUI/UserInterface/Views/FrameTreeElement.js:\n(WI.FrameTreeElement):\n(WI.FrameTreeElement.prototype.onpopulate):\n(WI.FrameTreeElement.prototype._collectionItemWasRemoved): Added.\n(WI.FrameTreeElement.prototype._extraScriptAdded):\n* Source/WebInspectorUI/UserInterface/Views/OpenResourceDialog.js:\n(WI.OpenResourceDialog.prototype._scriptAdded):\n(WI.OpenResourceDialog.prototype._scriptRemoved):\n* Source/WebInspectorUI/UserInterface/Views/SourcesNavigationSidebarPanel.js:\n(WI.SourcesNavigationSidebarPanel):\n(WI.SourcesNavigationSidebarPanel.prototype.closed):\n(WI.SourcesNavigationSidebarPanel.prototype._addScript):\n(WI.SourcesNavigationSidebarPanel.prototype._handleFrameWasRemoved): Added.\n(WI.SourcesNavigationSidebarPanel.prototype._handleDebuggerScriptRemoved):\n(WI.SourcesNavigationSidebarPanel.prototype._handleDebuggerScriptsCleared):\n(WI.SourcesNavigationSidebarPanel.prototype._handleTargetRemoved):\nShow WebAssembly `WI.Script` without a `WI.Resource` under the parent `WI.Frame` and/or `Worker`.\n\n* Source/WebInspectorUI/Localizations/en.lproj/localizedStrings.js:\n* Source/WebInspectorUI/UserInterface/Views/ScriptContentView.js:\n(WI.ScriptContentView):\n(WI.ScriptContentView.prototype._contentDidPopulate):\n* Source/WebInspectorUI/UserInterface/Views/SourceCodeTextEditor.js:\n(WI.SourceCodeTextEditor.prototype._prepareEditorForInitialContent):\n(WI.SourceCodeTextEditor.prototype.get _supportsDebugging):\nShow binary WebAssembly `WI.Script` without treating their contents as editable source text.\n\n* LayoutTests/inspector/debugger/wasm/getScriptSource.html: Added.\n* LayoutTests/inspector/debugger/wasm/getScriptSource-expected.txt: Added.\n* LayoutTests/inspector/debugger/wasm/resources/test-modules.js: Added.\n* LayoutTests/inspector/model/frame-extra-scripts.html:\n* LayoutTests/inspector/model/frame-extra-scripts-expected.txt:\n* LayoutTests/inspector/worker/debugger-getScriptSource-wasm.html: Added.\n* LayoutTests/inspector/worker/debugger-getScriptSource-wasm-expected.txt: Added.\n* LayoutTests/inspector/worker/resources/worker-debugger-wasm.js: Added.\n\nCanonical link: https://commits.webkit.org/317891@main",
      "email": "hi@devinrousso.com",
      "hash": "14549e6b85926dcf5f87f114d2d688b73053f2f1",
      "subject": "Web Inspector: Sources: show WebAssembly modules"
    },
    "317892@main": {
      "author": "Simon Fraser",
      "avatar": "https://www.gravatar.com/avatar/3763324aa0cdfa93be751c6081b8006a?d=identicon\u0026s=64",
      "cl": "317892@main",
      "clUrl": "https://commits.webkit.org/317892@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320197\nrdar://183146768\n\nReviewed by Abrar Rahman Protyasha.\n\nThe test exercises the \"resnap after layout\" logic[1], testing that a focused node only becomes the snap\ncandidate if it's newly focused; the existing code would aways prefer a focused candidate.\n\nFix by computing whether focus or target node changed on each axis, and having the `targetForAxis`\nlambda check this.\n\nStart migrating from \"box\" to \"node\" terminology for things referenced by NodeIdentifier.\n\n[1] https://drafts.csswg.org/css-scroll-snap/\n\n* LayoutTests/imported/w3c/web-platform-tests/css/css-scroll-snap/snap-after-relayout/multiple-aligned-targets/prefer-focused-element-expected.txt:\n* Source/WebCore/platform/ScrollSnapAnimatorState.cpp:\n(WebCore::ScrollSnapAnimatorState::snapOffsetIndexForNode const):\n(WebCore::ScrollSnapAnimatorState::preserveCurrentTargetForAxis):\n(WebCore::ScrollSnapAnimatorState::focusedOrTargetedNodeForAxis const):\n(WebCore::ScrollSnapAnimatorState::currentlySnappedOffsetsForAxis const):\n(WebCore::ScrollSnapAnimatorState::currentlySnappedBoxes const):\n(WebCore::ScrollSnapAnimatorState::resnapAfterLayout):\n* Source/WebCore/platform/ScrollSnapAnimatorState.h:\n\nCanonical link: https://commits.webkit.org/317892@main",
      "email": "simon.fraser@apple.com",
      "hash": "61b6b90764790d3bbe166e2cba379e396e455d7f",
      "subject": "[Scroll snap] Fix css/css-scroll-snap/snap-after-relayout/multiple-aligned-targets/prefer-focused-element.html"
    },
    "317893@main": {
      "author": "Devin Rousso",
      "avatar": "https://www.gravatar.com/avatar/c9e757d973342c773f107a94b70cb9cd?d=identicon\u0026s=64",
      "cl": "317893@main",
      "clUrl": "https://commits.webkit.org/317893@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=142657\n\u003crdar://problem/20149674\u003e\n\nReviewed by Yusuke Suzuki.\n\nRather than trying to keep a manual list, leverage the pretty format of IDL to autogenerate `WI.NativeConstructorFunctionParameters` and `WI.NativePrototypeFunctionParameters`.\n\n* Source/WebCore/bindings/scripts/CodeGenerator.pm:\n(ProcessInterfaces):\n(WriteInspectorNativeFunctionParameters): Added.\nModify the IDL parser to output `*.inspector-native-function-parameters.json` files containing a pretty string of the arguments for any class-level and instance-level methods.\n\n* Source/WebCore/bindings/scripts/combine-inspector-native-function-parameters.pl: Added.\nCombine all `*.inspector-native-function-parameters.json` into a single `InspectorNativeFunctionParameters.json`.\n\n* Source/WebInspectorUI/UserInterface/Models/NativeFunctionParameters.js: Removed.\n* Source/WebInspectorUI/UserInterface/Models/NativeFunctionParameters-overrides.json: Added.\nPure JS APIs do not have anything like pretty formatted IDL to draw from like other web APIs.\nInstead, have these be handwritten in a JSON file until a solution can be found for them.\nThis also allows for Web Inspector to override anything that is automatic if needed.\n\n* Source/WebInspectorUI/Scripts/update-NativeFunctionParameters.py: Added.\nMerge the `InspectorNativeFunctionParameters.json` with the overrides file and generate `NativeFunctionParameters.js`.\nIf WebCore's generated JSON cannot be read or parsed, warn and generate an overrides-only file rather than failing the build, since these parameter names are only a minor visual enhancement.\n\n* Source/WebInspectorUI/Scripts/copy-user-interface-resources.pl:\nCopy `NativeFunctionParameters.js` alongside all other resources.\n\n* Source/WebInspectorUI/UserInterface/Views/ObjectTreePropertyTreeElement.js:\n(WI.ObjectTreePropertyTreeElement.prototype._functionParameterString):\nDrive-by: also handle `Atomics`, `Intl`, and `WebAssembly` namespace objects.\n\n* Source/CMakeLists.txt:\n* Source/WebCore/CMakeLists.txt:\n* Source/WebCore/DerivedSources.make:\n* Source/WebCore/DerivedSources-output.xcfilelist:\n* Source/WebCore/WebCoreMacros.cmake:\n* Source/WebInspectorUI/CMakeLists.txt:\n* Source/WebInspectorUI/WebInspectorUI.xcodeproj/project.pbxproj:\nGenerate and consume the parameter data in each build system.\nMake WebInspectorUI explicitly depend on WebCore's native-function-parameter generation target in CMake and WebCore's `Derived Sources` target in Xcode.\nA script input alone does not order targets across CMake directories or Xcode projects, so a clean build could otherwise try to copy the UI resources before WebCore creates the JSON file.\n\n* Source/WebCore/bindings/scripts/test/JS/TestCallTracer.inspector-native-function-parameters.json: Added.\n* Source/WebCore/bindings/scripts/test/JS/TestCallbackInterface.inspector-native-function-parameters.json: Added.\n* Source/WebCore/bindings/scripts/test/JS/TestConditionalIncludes.inspector-native-function-parameters.json: Added.\n* Source/WebCore/bindings/scripts/test/JS/TestDOMJIT.inspector-native-function-parameters.json: Added.\n* Source/WebCore/bindings/scripts/test/JS/TestDomainSecurity.inspector-native-function-parameters.json: Added.\n* Source/WebCore/bindings/scripts/test/JS/TestEnabledBySetting.inspector-native-function-parameters.json: Added.\n* Source/WebCore/bindings/scripts/test/JS/TestEventTarget.inspector-native-function-parameters.json: Added.\n* Source/WebCore/bindings/scripts/test/JS/TestGlobalObject.inspector-native-function-parameters.json: Added.\n* Source/WebCore/bindings/scripts/test/JS/TestIndexedSetterWithIdentifier.inspector-native-function-parameters.json: Added.\n* Source/WebCore/bindings/scripts/test/JS/TestInterface.inspector-native-function-parameters.json: Added.\n* Source/WebCore/bindings/scripts/test/JS/TestLegacyOverrideBuiltIns.inspector-native-function-parameters.json: Added.\n* Source/WebCore/bindings/scripts/test/JS/TestNamedAndIndexedSetterWithIdentifier.inspector-native-function-parameters.json: Added.\n* Source/WebCore/bindings/scripts/test/JS/TestNamedDeleterWithIdentifier.inspector-native-function-parameters.json: Added.\n* Source/WebCore/bindings/scripts/test/JS/TestNamedGetterWithIdentifier.inspector-native-function-parameters.json: Added.\n* Source/WebCore/bindings/scripts/test/JS/TestNamedSetterWithIdentifier.inspector-native-function-parameters.json: Added.\n* Source/WebCore/bindings/scripts/test/JS/TestNamedSetterWithIndexedGetter.inspector-native-function-parameters.json: Added.\n* Source/WebCore/bindings/scripts/test/JS/TestNamedSetterWithIndexedGetterAndSetter.inspector-native-function-parameters.json: Added.\n* Source/WebCore/bindings/scripts/test/JS/TestNamespaceObject.inspector-native-function-parameters.json: Added.\n* Source/WebCore/bindings/scripts/test/JS/TestObj.inspector-native-function-parameters.json: Added.\n* Source/WebCore/bindings/scripts/test/JS/TestScheduledAction.inspector-native-function-parameters.json: Added.\n* Source/WebCore/bindings/scripts/test/JS/TestSerializedScriptValueInterface.inspector-native-function-parameters.json: Added.\n* Source/WebCore/bindings/scripts/test/JS/TestTypedefs.inspector-native-function-parameters.json: Added.\n\nCanonical link: https://commits.webkit.org/317893@main",
      "email": "hi@devinrousso.com",
      "hash": "ffbb564bcb2ce9884e5e47fb715c3677b209c629",
      "subject": "Web Inspector: Show Parameter Lists for Native DOM methods"
    },
    "317894@main": {
      "author": "Kai Tamkun",
      "avatar": "https://www.gravatar.com/avatar/dff073cba21885df4d9f73ed3cc493c2?d=identicon\u0026s=64",
      "cl": "317894@main",
      "clUrl": "https://commits.webkit.org/317894@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=248707\nrdar://103209363\n\nReviewed by Yusuke Suzuki.\n\nThis patch enables support for the Explicit Resource Management proposal\nby default. It also fixes one test that was broken by its enablement (it\nassumed no Symbol.dispose present).\n\nAlready covered by existing tests.\n\n* JSTests/stress/iterator-prototype.js:\n* Source/WTF/Scripts/Preferences/UnifiedWebPreferences.yaml:\n\nCanonical link: https://commits.webkit.org/317894@main",
      "email": "k_tamkun@apple.com",
      "hash": "9845affea3ca058cd0a3ca659eabf792cdc326b8",
      "subject": "[JSC] Enable Explicit Resource Management by default"
    },
    "317895@main": {
      "author": "Yulun Wu",
      "avatar": "https://www.gravatar.com/avatar/9e34d6632f4d926cdf6fe8dce07f9cb7?d=identicon\u0026s=64",
      "cl": "317895@main",
      "clUrl": "https://commits.webkit.org/317895@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319913\n\u003crdar://182833826\u003e\n\nReviewed by Sammy Gill.\n\nResolve a grid item's percentage/calc() padding against the inline size of the grid\nitem when available, and 0px when it is not, such as during intrinsic sizing.\n\nThe biggest change here is that grid items are now laid out with\nlayoutGridItemWithFormattingContext() which sets the grid area inline size on the\nrenderer.\n\nThis PR updates PlacedGridItem to stop resolving and caching the border and padding at\nconstruction time. The grid area's inline size is not knowable at this time and cannot\nbe resolved. Border and padding have been updated to be computed on demand.\n\nThe intrinsic GridItemSizingFunctions have been updated to correctly resolve\ncyclic padding against 0px during intrinsic column track sizing.\n\nminContentWidth() for grid items is now handled by minContentWidthForGridItem()\nwhich now correctly resolves the item's min content width against the grid area's\ninline size instead of the grid container's block size.\n\nborderAndPaddingForGridItem() is a new helper function to resolve the inline and\nblock border/padding for grid items against the inlineSize. This is fed into\ntrack sizing and used-size calculation.\n\nNo change in behavior: percentage/calc()-padded grid items are still routed to\nthe legacy grid layout by the GridItemHasPercentOrCalcPadding avoidance reason.\n\n* Source/WebCore/layout/formattingContexts/grid/GridFormattingContext.cpp:\n(WebCore::Layout::GridFormattingContext::constructPlacedGridItems const):\n* Source/WebCore/layout/formattingContexts/grid/GridItemSizingFunctions.cpp:\n(WebCore::Layout::GridItemSizingFunctions::inlineAxis):\n* Source/WebCore/layout/formattingContexts/grid/GridLayout.cpp:\n(WebCore::Layout::GridLayout::sizeColumnTracks const):\n(WebCore::Layout::GridLayout::sizeRowTracks const):\n(WebCore::Layout::GridLayout::layoutGridItems const):\n* Source/WebCore/layout/formattingContexts/grid/GridLayoutUtils.cpp:\n(WebCore::Layout::GridLayoutUtils::inlineContentSizeSuggestion):\n(WebCore::Layout::GridLayoutUtils::automaticMinimumInlineSize):\n(WebCore::Layout::GridLayoutUtils::inlineMinimumSize):\n(WebCore::Layout::GridLayoutUtils::inlineUsedSize):\n(WebCore::Layout::GridLayoutUtils::inlinePreferredSize):\n* Source/WebCore/layout/formattingContexts/grid/GridLayoutUtils.h:\n* Source/WebCore/layout/formattingContexts/grid/PlacedGridItem.cpp:\n(WebCore::Layout::PlacedGridItem::PlacedGridItem):\n(WebCore::Layout::m_blockAxisSizes):\n* Source/WebCore/layout/formattingContexts/grid/PlacedGridItem.h:\n(WebCore::Layout::PlacedGridItem::usedInlineBorderAndPadding const): Deleted.\n(WebCore::Layout::PlacedGridItem::usedBlockBorderAndPadding const): Deleted.\n* Source/WebCore/layout/integration/LayoutIntegrationFormattingContextLayout.cpp:\n(WebCore::LayoutIntegration::layoutBoxWithOverridingBorderBoxSize):\n(WebCore::LayoutIntegration::layoutWithFormattingContextForBox):\n(WebCore::LayoutIntegration::layoutGridItemWithFormattingContext):\n* Source/WebCore/layout/integration/LayoutIntegrationFormattingContextLayout.h:\n* Source/WebCore/layout/integration/LayoutIntegrationUtils.cpp:\n(WebCore::Layout::inlineWidthForGridItemWithGridArea):\n(WebCore::Layout::IntegrationUtils::borderAndPaddingForGridItem const):\n(WebCore::Layout::IntegrationUtils::layoutGridItem const):\n(WebCore::Layout::IntegrationUtils::minContentWidth const):\n(WebCore::Layout::IntegrationUtils::minContentWidthForGridItem const):\n(WebCore::Layout::IntegrationUtils::minContentLogicalWidthContribution const):\n(WebCore::Layout::IntegrationUtils::maxContentLogicalWidthContribution const):\n(WebCore::Layout::IntegrationUtils::maxContentWidth const):\n(WebCore::Layout::IntegrationUtils::maxContentWidthForGridItem const):\n* Source/WebCore/layout/integration/LayoutIntegrationUtils.h:\n\nCanonical link: https://commits.webkit.org/317895@main",
      "email": "yulun_wu@apple.com",
      "hash": "104ad1e0ccbc36f500c659c46fd183e1489142ff",
      "subject": "[GFC] Resolve percentage/calc padding for grid items on grid area"
    }
  },
  "date": "2026-07-24",
  "days": 1,
  "generatedAt": "2026-07-24T22:06:08Z",
  "markdown": "## Highlights\n- **Web Platform** JavaScriptCore flips Explicit Resource Management on by default, moving a major TC39 lifecycle feature into the baseline engine behavior. [commit 317894@main](https://commits.webkit.org/317894@main)\n- **DevTools** Web Inspector now shows WebAssembly modules in Sources, making wasm debugging much less opaque. [commit 317891@main](https://commits.webkit.org/317891@main)\n- **Web Platform** WebDriver gained print support, a meaningful standards catch-up for automation and PDF-like output workflows. [commit 317861@main](https://commits.webkit.org/317861@main)\n- **Security** Site Isolation now keeps loopback and local-network sites out of the shared process, tightening process boundaries for sensitive local targets. [commit 317865@main](https://commits.webkit.org/317865@main)\n- **Networking** Fetch uploads got stricter and more correct: aborted loads now abort upload streams, and 401 responses fail stream uploads instead of limping onward. [commit 317851@main](https://commits.webkit.org/317851@main) [commit 317858@main](https://commits.webkit.org/317858@main)\n- **Web Platform** WPE and GTK now support WebAuthn, a big platform capability unlock for modern auth flows. [commit 317860@main](https://commits.webkit.org/317860@main)\n- **Rendering** Grid formatting context keeps expanding, with new replaced-element sizing logic and a fix for percentage and calc padding on grid-area-positioned items. [commit 317874@main](https://commits.webkit.org/317874@main) [commit 317895@main](https://commits.webkit.org/317895@main)\n- **Perf** JavaScriptCore landed multiple regexp and compiler-path wins, including Unicode Boyer-Moore lookahead and fast-fail filtering for BOL-heavy RegExp cases. [commit 317830@main](https://commits.webkit.org/317830@main) [commit 317836@main](https://commits.webkit.org/317836@main)\n- **Media** WebTransport keeps filling out, adding exportKeyingMaterial and a writer API while tightening ownership in session handling. [commit 317835@main](https://commits.webkit.org/317835@main) [commit 317810@main](https://commits.webkit.org/317810@main) [commit 317885@main](https://commits.webkit.org/317885@main)\n\n## What landed by area\n\n### JavaScriptCore and Wasm\n- **V8** Joint Iteration proposal support landed in JSC, pushing deeper ECMAScript proposal coverage. [commit 317886@main](https://commits.webkit.org/317886@main)\n- **Perf** JSC fixed an instanceof prototype-chain IC condition mismatch that was tripping a release assertion. [commit 317875@main](https://commits.webkit.org/317875@main)\n- **Perf** YARR fixed ignore-case handling across ASCII and Unicode character case mappings. [commit 317866@main](https://commits.webkit.org/317866@main)\n- **Perf** DFG and FTL now fast-fail RegExp cases with BOL assertions instead of taking slower compilation paths. [commit 317836@main](https://commits.webkit.org/317836@main)\n- **Perf** YARR enabled Boyer-Moore lookahead optimization for Unicode patterns. [commit 317830@main](https://commits.webkit.org/317830@main)\n- **Perf** DFG and FTL added an out-of-bounds mode to StringCharCodeAt, tightening codegen around edge cases. [commit 317823@main](https://commits.webkit.org/317823@main)\n- **Refactor** JSC now tolerates missing BBQ in releaseBBQCallee instead of assuming the tier is always present. [commit 317822@main](https://commits.webkit.org/317822@main)\n- **Web Platform** Bound^2 functions now materialize .length and .name correctly. [commit 317813@main](https://commits.webkit.org/317813@main)\n- **Web Platform** Memory64 compilation now accepts Wasm modules whose initial table size is oversized instead of rejecting them up front. [commit 317888@main](https://commits.webkit.org/317888@main)\n- **Refactor** AbstractModuleRecord dropped m_dependencies, trimming internal module bookkeeping. [commit 317844@main](https://commits.webkit.org/317844@main)\n- **Build** Slow and timing-sensitive JSC and Wasm tests were split or adjusted to reduce timeout noise. [commit 317871@main](https://commits.webkit.org/317871@main) [commit 317870@main](https://commits.webkit.org/317870@main)\n\n### Web Inspector and developer tooling\n- **DevTools** Native DOM methods now show parameter lists in Web Inspector, which should reduce trips to docs and IDL. [commit 317893@main](https://commits.webkit.org/317893@main) [commit 317857@main](https://commits.webkit.org/317857@main)\n- **DevTools** Site Isolation frameNavigated events now include loaderId derived from the document identifier. [commit 317864@main](https://commits.webkit.org/317864@main)\n- **DevTools** Worker heap events delayed across turns are now bound to the current run loop, avoiding mismatched inspector state. [commit 317842@main](https://commits.webkit.org/317842@main)\n- **DevTools** inspectorOverride now correctly applies to SettingsValues. [commit 317841@main](https://commits.webkit.org/317841@main)\n- **DevTools** A unit test stopped hardcoding Pacific Daylight Time, removing a timezone-specific expectation. [commit 317840@main](https://commits.webkit.org/317840@main)\n- **DevTools** Disabling the resource cache in the Network panel now consistently sets Cache-Control: no-cache. [commit 317814@main](https://commits.webkit.org/317814@main)\n\n### Networking, loading, and site isolation\n- **Networking** Stream upload data can now be sent from the WebProcess to the Network process, laying down the plumbing for better upload streaming. [commit 317846@main](https://commits.webkit.org/317846@main)\n- **Networking** WebProcessProxy now broadcasts cached media MIME types to other web processes instead of keeping them marooned locally. [commit 317848@main](https://commits.webkit.org/317848@main)\n- **Security** Cross-origin frame tests now cover camera, microphone, and display-capture permissions policy under Site Isolation. [commit 317873@main](https://commits.webkit.org/317873@main)\n- **Privacy** Local Network Access on Cocoa now classifies the real resolved connection IP, which should make policy decisions track reality better. [commit 317821@main](https://commits.webkit.org/317821@main)\n- **Security** A Site Isolation history test crash was fixed by avoiding invalidation of a LogStream IPC connection off the log work queue. [commit 317826@main](https://commits.webkit.org/317826@main)\n\n### WebDriver, automation, and platform testing\n- **Web Platform** WebDriver now supports extra pointer action attributes. [commit 317890@main](https://commits.webkit.org/317890@main)\n- **Web Platform** Automation sessions gained a controlledByExternalAgent capability. [commit 317882@main](https://commits.webkit.org/317882@main)\n- **Web Platform** Element references now survive tab switches and closes more reliably in WebDriver. [commit 317854@main](https://commits.webkit.org/317854@main)\n- **Build** WPE, GTK, and WKTR now enable async overflow scrolling by default for WPT coverage. [commit 317862@main](https://commits.webkit.org/317862@main)\n- **Build** GTK and WPE test gardening continued across general and LibWebRTC-specific expectations. [commit 317884@main](https://commits.webkit.org/317884@main) [commit 317856@main](https://commits.webkit.org/317856@main) [commit 317853@main](https://commits.webkit.org/317853@main) [commit 317852@main](https://commits.webkit.org/317852@main)\n- **Web Platform** New WPT coverage landed for SVG geometry negative values and zero or negative viewBox rendering. [commit 317815@main](https://commits.webkit.org/317815@main)\n\n### Rendering, layout, and CSS\n- **Rendering** Grid formatting context now bails out for flipped-block horizontal-bt writing mode instead of trying to force a broken path. [commit 317877@main](https://commits.webkit.org/317877@main)\n- **Rendering** Scroll snap got a focused-element preference fix after relayout in a multiple-aligned-targets case. [commit 317892@main](https://commits.webkit.org/317892@main)\n- **Refactor** FlexFormattingContext render-tree access now routes through new LayoutIntegration::FlexIntegrationUtils helpers. [commit 317879@main](https://commits.webkit.org/317879@main)\n- **Refactor** Flex container block-size definiteness moved onto FlexLayoutState. [commit 317863@main](https://commits.webkit.org/317863@main)\n- **Refactor** Flex-item completed-layout tracking moved out of RenderFlexibleBox and into FlexLayoutState. [commit 317850@main](https://commits.webkit.org/317850@main)\n- **Refactor** Flex first-line and last-line item counts moved onto LayoutIntegration::FlexLayout. [commit 317833@main](https://commits.webkit.org/317833@main)\n- **Refactor** Flex-item logical-height reset is now driven by FlexLayoutState phase rather than a scoped flag. [commit 317825@main](https://commits.webkit.org/317825@main)\n- **Rendering** iOS font metrics were converged with macOS in Font::platformInit, which should reduce cross-platform text drift. [commit 317859@main](https://commits.webkit.org/317859@main)\n- **Refactor** CSS::Range dropped RangeZoomOptions as part of EvaluationTimeZoom cleanup. [commit 317832@main](https://commits.webkit.org/317832@main)\n- **Refactor** Style::ColorResolutionState smart pointers were made const, tightening mutability around style resolution. [commit 317847@main](https://commits.webkit.org/317847@main)\n\n### Media, WebRTC, and capture\n- **Media** GStreamer's GstWebRTC backend was removed. [commit 317849@main](https://commits.webkit.org/317849@main)\n- **Media** Media fragment parsing now rejects overflowing NPT hour values instead of silently accepting them. [commit 317869@main](https://commits.webkit.org/317869@main)\n- **Media** Audio track renderer creation now closes an AudioComponentInstance leak on post-creation error paths. [commit 317881@main](https://commits.webkit.org/317881@main)\n- **Media** ScreenCaptureKit stream configuration now keeps a protected self after null-check instead of a weak self. [commit 317827@main](https://commits.webkit.org/317827@main)\n- **Media** Audio capture device refresh now notices label and group ID changes, not just device churn. [commit 317812@main](https://commits.webkit.org/317812@main)\n- **Media** WebVTT cue parsing no longer lets a preceding line leak in as an identifier across REGION or STYLE blocks. [commit 317811@main](https://commits.webkit.org/317811@main)\n\n### GTK, WPE, Apple platforms, and build\n- **Build** Swift/C++ interop is now enabled on the latest iOS 26 SDKs. [commit 317878@main](https://commits.webkit.org/317878@main)\n- **UI** NSRefreshController no longer risks entering an activation loop when the window is short on macOS. [commit 317876@main](https://commits.webkit.org/317876@main)\n- **Build** CMake executable target names were fixed. [commit 317872@main](https://commits.webkit.org/317872@main)\n- **Build** GTK and WPE bumped SDK version. [commit 317855@main](https://commits.webkit.org/317855@main)\n- **UI** WKWebViewTestingIOS dumpUIView() now uses the correct y coordinate. [commit 317839@main](https://commits.webkit.org/317839@main)\n- **Build** Under TSan, LIBPAS and TZONE_MALLOC are now disabled when bmalloc falls back to the system allocator. [commit 317837@main](https://commits.webkit.org/317837@main)\n- **UI** A touch-path regression that stopped adopting mouseInteraction was fixed. [commit 317834@main](https://commits.webkit.org/317834@main)\n- **Build** ShareableBitmapConfiguration gained PixelFormat. [commit 317817@main](https://commits.webkit.org/317817@main)\n- **Build** Safer C++ static analysis was fixed in testapi. [commit 317816@main](https://commits.webkit.org/317816@main)\n- **UI** WKPreferencesSetDoubleValueForKeyForTesting stopped storing doubles as booleans. [commit 317819@main](https://commits.webkit.org/317819@main)\n- **Build** WebViewMac.mm was cleaned up to remove a duplicated deprecated-implementations guard. [commit 317818@main](https://commits.webkit.org/317818@main)\n- **Build** An outdated GLib failure expectation was removed. [commit 317887@main](https://commits.webkit.org/317887@main)\n\n### Accessibility, text extraction, and find-in-page\n- **A11y** Setting AXSelectedTextMarkerRange on an empty non-text element no longer jumps selection into an adjacent editable and trigger navigation loops. [commit 317824@main](https://commits.webkit.org/317824@main)\n- **A11y** The Zara.com \"Automatically Fix Passwords\" text-extraction agent got a reliability fix around clicking the Settings link. [commit 317838@main](https://commits.webkit.org/317838@main)\n- **Perf** Find in Page sped up \"Begins with\" matching, which had become too slow. [commit 317845@main](https://commits.webkit.org/317845@main)\n\n### Core runtime correctness and cleanup\n- **Security** RecursiveLockAdapter::unlock() now asserts against underflow and wrong-owner unlocks. [commit 317831@main](https://commits.webkit.org/317831@main)\n- **Security** ParkingLot::ensureHashtable() lost a dead always-true check and a shadowed variable. [commit 317829@main](https://commits.webkit.org/317829@main)\n- **Security** charactersToFloat() no longer reports success when a value fits in double but overflows float. [commit 317828@main](https://commits.webkit.org/317828@main)\n- **Build** The Manager ancestor-directory walk infinite loop that hung --print-summary was fixed. [commit 317868@main](https://commits.webkit.org/317868@main)\n- **Refactor** HTMLModelElement dropped an unused GraphicsLayerCA.h include. [commit 317880@main](https://commits.webkit.org/317880@main)\n- **Build** WKBI PR creation no longer misses adding the Bugzilla comment to radar. [commit 317883@main](https://commits.webkit.org/317883@main)\n\n### Reverts \u0026 Reapplies\n- **Build** No explicit Revert, Reapply, or Backed out changes appeared in this set.",
  "repo": "webkit",
  "repoDisplay": "WebKit",
  "rollGroups": [
    {
      "name": "Unreviewed",
      "count": 3
    }
  ],
  "since": "2026-07-24",
  "totals": {
    "commits": 86,
    "features": 83,
    "rolls": 3
  },
  "until": "2026-07-24"
}