{
  "commits": {
    "318097@main": {
      "author": "Elliott Williams",
      "avatar": "https://www.gravatar.com/avatar/4086acbe078d65242df929cb51298130?d=identicon\u0026s=64",
      "cl": "318097@main",
      "clUrl": "https://commits.webkit.org/318097@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320387\nrdar://183348215\n\nReviewed by Richard Robinson.\n\nHighly mechanical first change to merge the port codepaths into a single\nCocoa port. While there *are* meaningful differences between the Mac and\niOS builds, the overall shape is the same, and the port idiom makes it\ntoo easy to let the builds diverge and duplicate code.\n\nAdds WEBKIT_SDK_IS_MACOS, WEBKIT_SDK_IS_IOS_FAMILY, and\nWEBKIT_SDK_IS_SIMULATOR cache variables to differentiate build logic\nwhere it makes sense. There are some sections of the config that have a\nbig if-else branch, where code can be consolidated further.\n\nPreset names are unchanged, and set CMAKE_OSX_SYSROOT to specify which\nSDK name(s) to resolve. Port names are backwards-compatible: \"Mac\" and\n\"IOS\" are aliases for Cocoa, and still work when set as cache varibles,\ne.g. from the CLI.\n\n* CMakeLists.txt:\n* CMakePresets.json:\n* Source/JavaScriptCore/CMakeLists.txt:\n* Source/JavaScriptCore/PlatformCocoa.cmake:\n* Source/JavaScriptCore/PlatformIOS.cmake: Removed.\n* Source/JavaScriptCore/PlatformMac.cmake: Removed.\n* Source/JavaScriptCore/shell/PlatformCocoa.cmake:\n* Source/JavaScriptCore/shell/PlatformIOS.cmake: Removed.\n* Source/JavaScriptCore/shell/PlatformMac.cmake: Removed.\n* Source/PlatformCocoa.cmake: Renamed from Source/PlatformMac.cmake.\n* Source/ThirdParty/ANGLE/PlatformCocoa.cmake:\n* Source/ThirdParty/ANGLE/PlatformIOS.cmake: Removed.\n* Source/ThirdParty/ANGLE/PlatformMac.cmake: Removed.\n* Source/WTF/wtf/PlatformCocoa.cmake:\n* Source/WTF/wtf/PlatformIOS.cmake: Removed.\n* Source/WTF/wtf/PlatformMac.cmake: Removed.\n* Source/WebCore/PAL/pal/PlatformCocoa.cmake:\n* Source/WebCore/PAL/pal/PlatformIOS.cmake: Removed.\n* Source/WebCore/PAL/pal/PlatformMac.cmake: Removed.\n* Source/WebCore/PlatformCocoa.cmake:\n* Source/WebCore/PlatformIOS.cmake: Removed.\n* Source/WebCore/PlatformMac.cmake: Removed.\n* Source/WebInspectorUI/PlatformCocoa.cmake: Renamed from Source/WebInspectorUI/PlatformMac.cmake.\n* Source/WebKit/CMakeLists.txt:\n* Source/WebKit/PlatformCocoa.cmake:\n* Source/WebKit/PlatformIOS.cmake: Removed.\n* Source/WebKit/PlatformMac.cmake: Removed.\n* Source/WebKitLegacy/PlatformCocoa.cmake:\n* Source/WebKitLegacy/PlatformIOS.cmake: Removed.\n* Source/WebKitLegacy/PlatformMac.cmake: Removed.\n* Source/bmalloc/PlatformIOS.cmake: Removed.\n* Source/bmalloc/PlatformMac.cmake: Removed.\n* Source/cmake/OptionsCocoa.cmake:\n* Source/cmake/OptionsIOS.cmake: Removed.\n* Source/cmake/OptionsMac.cmake: Removed.\n* Source/cmake/WebKitCommon.cmake:\n* Source/cmake/WebKitFS.cmake:\n* Source/cmake/WebKitMacros.cmake:\n* Source/cmake/WebKitXcodeSDK.cmake:\n* Tools/DumpRenderTree/PlatformCocoa.cmake: Renamed from Tools/DumpRenderTree/PlatformMac.cmake.\n* Tools/ImageDiff/PlatformCocoa.cmake: Renamed from Tools/ImageDiff/PlatformMac.cmake.\n* Tools/ImageDiff/PlatformIOS.cmake: Removed.\n* Tools/PlatformCocoa.cmake: Renamed from Tools/PlatformMac.cmake.\n* Tools/TestRunnerShared/PlatformCocoa.cmake: Renamed from Tools/TestRunnerShared/PlatformMac.cmake.\n* Tools/TestWebKitAPI/PlatformCocoa.cmake: Renamed from Tools/TestWebKitAPI/PlatformMac.cmake.\n* Tools/TestWebKitAPI/PlatformIOS.cmake: Removed.\n* Tools/WebKitTestRunner/PlatformCocoa.cmake: Renamed from Tools/WebKitTestRunner/PlatformMac.cmake.\n* Tools/WebKitTestRunner/PlatformIOS.cmake: Removed.\n\nCanonical link: https://commits.webkit.org/318097@main",
      "email": "emw@apple.com",
      "hash": "7eb640d408f81acd4ff1ff98016c28f8176c243f",
      "subject": "[CMake] Merge Mac and iOS ports into \"Cocoa\""
    },
    "318098@main": {
      "author": "Mike Wyrzykowski",
      "avatar": "https://www.gravatar.com/avatar/4b1bc9e238714f95e22d5d2454c07066?d=identicon\u0026s=64",
      "cl": "318098@main",
      "clUrl": "https://commits.webkit.org/318098@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320443\nrdar://183426431\n\nReviewed by Tadeu Zagallo.\n\nIndexing a packed matrix yields a packed vector, but we were\nassuming it would yield an unpacked vector resulting in compilation\nerrors.\n\nTest: Tools/TestWebKitAPI/Tests/WGSL/MetalCompilationTests.mm\n\n* Source/WebGPU/WGSL/GlobalVariableRewriter.cpp:\n(WGSL::RewriteGlobalVariables::getPacking):\n* Tools/TestWebKitAPI/Tests/WGSL/MetalCompilationTests.mm:\n(TestWGSLAPI::TEST_F(WGSLMetalCompilationTests, Packing)):\n\nCanonical link: https://commits.webkit.org/318098@main",
      "email": "mwyrzykowski@apple.com",
      "hash": "4bd6398850757a1e38bc2ecb584bf15d88b38c41",
      "subject": "Wgsl misscompilation `error: no member named 'xyz' in 'PackedVec3\u003cfloat\u003e'` (320443)"
    },
    "318099@main": {
      "author": "Jean-Yves Avenard",
      "avatar": "https://www.gravatar.com/avatar/509313899deeb9262fad8f5e04093f5b?d=identicon\u0026s=64",
      "cl": "318099@main",
      "clUrl": "https://commits.webkit.org/318099@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320409\nrdar://183370165\n\nReviewed by Eric Carlson and Megan Gardner.\n\nAudio session category was not propagated to WebContent process under site isolation\n\nUnder site isolation the WebContent process reads a cached RemoteAudioSession\ncategory that is only updated by the UIProcess proxy, but the proxy computed\nPlayAndRecord from the capture count before any media session had\nregistered (so it was pushed to no process) and then early-returned once\nthe session did register, leaving the WebContent category stuck at None.\nFixed by folding the audio-capture-source count into an async-reply\nUpdateMediaSessionStates and returning the category on the MediaSessionWillBeginPlayback\nreply, so the WebContent process applies the current category directly and\nplay() only resolves once it has been updated.\n\n* Source/WebCore/platform/audio/AudioSession.h: Move enums definitions so that they can be compiled on GTK-based player.\n* Source/WebCore/platform/audio/MediaSessionManagerInterface.h:\n* Source/WebCore/platform/audio/PlatformMediaSessionTypes.h:\n* Source/WebKit/UIProcess/Media/RemoteMediaSessionManagerProxy.messages.in:\n* Source/WebKit/UIProcess/Media/RemoteMediaSessionManagerProxy.h:\n* Source/WebKit/UIProcess/Media/RemoteMediaSessionManagerProxy.cpp:\n(WebKit::RemoteMediaSessionManagerProxy::updateMediaSessionStates): Take the per-page capture count, update the aggregate, and reply with the current category.\n(WebKit::RemoteMediaSessionManagerProxy::mediaSessionWillBeginPlayback): Reply with the current category so play() observes it.\n* Source/WebKit/WebProcess/Media/RemoteMediaSessionManager.h:\n* Source/WebKit/WebProcess/Media/RemoteMediaSessionManager.cpp:\n(WebKit::RemoteMediaSessionManager::updateSessionState): Send the capture count and apply the returned category.\n(WebKit::RemoteMediaSessionManager::sessionWillBeginPlayback): Apply the returned category before resuming playback.\n* LayoutTests/platform/ios-site-isolation/TestExpectations: Unskip the now-passing test.\n\nCanonical link: https://commits.webkit.org/318099@main",
      "email": "jya@apple.com",
      "hash": "b66c74f488966774b7b42b4ec68e8bef60a8ee32",
      "subject": "[site-isolation] fast/mediastream/audio-track-enabled.html is a permanent failure"
    },
    "318100@main": {
      "author": "Alan Baradlay",
      "avatar": "https://www.gravatar.com/avatar/788d66417db806c567552cfa1ae89f77?d=identicon\u0026s=64",
      "cl": "318100@main",
      "clUrl": "https://commits.webkit.org/318100@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320397\n\nReviewed by Antti Koivisto.\n\nBefore the flex algorithm runs, RenderFlexibleBox trims the inline margins of the items at the start and\nend of the line, so that those margins stay out of the container's intrinsic widths -- which\nrecomputeLogicalWidth needs before FlexLayout::layout has built anything. It picked those two items with\nfirstInFlowChildBox and lastInFlowChildBox, i.e. in render tree order, but which item starts a flex line\nis decided by the used 'order' value.\n\nSo a container that sizes to its content reports a width computed from the wrong item's margin. The items\nthemselves are placed correctly -- the algorithm sorts by 'order' and trims from that -- so the symptom is\na container that is too wide or too narrow for the content it just laid out. This has been the behaviour\nsince margin-trim for flexbox landed in 249208.\n\nPick the items the way buildFlexItemList will: the lowest and highest used 'order' value, with document\norder breaking ties, which is what its stable sort produces. Scanning for the two ends avoids having to\nbuild the sorted list before the container has been sized.\n\nThat also fixes a smaller discrepancy with the same cause. firstInFlowChildBox skips floating and\nout-of-flow children, but not ones excluded from normal layout, so a fieldset's legend could be picked as\nthe item to trim even though it is not a flex item and the algorithm never sees it. The scan applies the\nsame filter buildFlexItemList does.\n\nTests: imported/w3c/web-platform-tests/css/css-box/margin-trim/flex-inline-start-with-order-ref.html\n       imported/w3c/web-platform-tests/css/css-box/margin-trim/flex-inline-start-with-order.html\n\n* LayoutTests/imported/w3c/web-platform-tests/css/css-box/margin-trim/flex-inline-start-with-order-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-box/margin-trim/flex-inline-start-with-order-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-box/margin-trim/flex-inline-start-with-order.html: Added.\n* Source/WebCore/layout/integration/flex/LayoutIntegrationFlexLayout.cpp:\n(WebCore::LayoutIntegration::FlexLayout::marginTrimItemsBeforeFlexLayout const):\n\nCanonical link: https://commits.webkit.org/318100@main",
      "email": "zalan@apple.com",
      "hash": "7c73eb8db19c7d1deb6a449f4bdf8aa0faafeee5",
      "subject": "[Flex] margin-trim on a content-sized flex container ignores 'order'"
    },
    "318101@main": {
      "author": "Alex Christensen",
      "avatar": "https://www.gravatar.com/avatar/b087c5dfcb1233e80cad9105fd5a1ac6?d=identicon\u0026s=64",
      "cl": "318101@main",
      "clUrl": "https://commits.webkit.org/318101@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320246\nrdar://183175125\n\nReviewed by Youenn Fablet.\n\nAlso update maxDatagramSize to 1024, a bit below the minimum max datagram size for QUIC.\nChrome seems to have 1024.  This change makes the \"Transfer max-size datagram\"\ntest pass, and is a reasonable max datagram size.\n\n* LayoutTests/imported/w3c/web-platform-tests/webtransport/datagrams.https.any-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/webtransport/datagrams.https.any.serviceworker-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/webtransport/datagrams.https.any.sharedworker-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/webtransport/datagrams.https.any.worker-expected.txt:\n* Source/WebCore/Modules/webtransport/DatagramSink.cpp:\n(WebCore::DatagramSink::DatagramSink):\n(WebCore::DatagramSink::resolveBufferedDatagramsWithRoom):\n(WebCore::DatagramSink::datagramSent):\n(WebCore::DatagramSink::write):\n* Source/WebCore/Modules/webtransport/DatagramSink.h:\n(WebCore::DatagramSink::create):\n* Source/WebCore/Modules/webtransport/DatagramSource.cpp:\n(WebCore::DatagramDefaultSource::setTransport):\n(WebCore::DatagramDefaultSource::incomingMaxBufferedDatagrams const):\n(WebCore::DatagramDefaultSource::deliverDatagram):\n(WebCore::DatagramDefaultSource::doStart):\n(WebCore::DatagramDefaultSource::doPull):\n(WebCore::DatagramDefaultSource::receiveDatagram):\n(WebCore::DatagramDefaultSource::doCancel):\n* Source/WebCore/Modules/webtransport/DatagramSource.h:\n(WebCore::DatagramSource::setTransport):\n* Source/WebCore/Modules/webtransport/WebTransport.cpp:\n(WebCore::WebTransport::create):\n(WebCore::WebTransport::WebTransport):\n* Source/WebCore/Modules/webtransport/WebTransportDatagramDuplexStream.cpp:\n(WebCore::WebTransportDatagramDuplexStream::maxDatagramSize const):\n* Source/WebCore/Modules/webtransport/WebTransportDatagramDuplexStream.h:\n(WebCore::WebTransportDatagramDuplexStream::maxDatagramSize const):\n* Source/WebCore/Modules/webtransport/WebTransportDatagramsWritable.cpp:\n(WebCore::WebTransportDatagramsWritable::create):\n* Tools/TestWebKitAPI/Tests/WebKit/WKWebView/WebTransport.mm:\n(TestWebKitAPI::TEST(WebTransport, Datagram)):\n\nCanonical link: https://commits.webkit.org/318101@main",
      "email": "achristensen@apple.com",
      "hash": "fc590f32814ad0a3f3d01883947dc1e23c414b50",
      "subject": "Begin implementing datagram queues for WebTransport"
    },
    "318102@main": {
      "author": "Alex Christensen",
      "avatar": "https://www.gravatar.com/avatar/b087c5dfcb1233e80cad9105fd5a1ac6?d=identicon\u0026s=64",
      "cl": "318102@main",
      "clUrl": "https://commits.webkit.org/318102@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320102\nrdar://167645473\n\nReviewed by Youenn Fablet.\n\nThe WPT test streams-close.https.any \"Close and abort unidirectional stream\"\nwrites a chunk, calls writer.close() and then immediately writer.abort(e), and\nexpects close_promise, writer.closed, and abort_promise to all reject with e.\nWebTransportSendStreamSink::close() was synchronous (the internal\nWritableStreamSink.idl declared `undefined close()`), so the WritableStream\nclose algorithm resolved immediately and the subsequent abort() could not\npreempt the in-flight close; close_promise resolved instead of rejecting.\n\nMake the internal WritableStreamSink close() asynchronous (return\nPromise\u003cundefined\u003e) and have WebTransportSendStreamSink observe the\nWritableStreamDefaultController's abort signal, which fires synchronously during\nwriter.abort(). When an abort races an in-flight close(), the pending close is\nrejected with the abort reason and the stream is reset (RESET_STREAM) rather\nthan sending FIN, matching the spec discussion at\nwhatwg/streams#1203.\n\nThe stream reset is delivered after the already-buffered chunk, so the server\nmay observe it later than the WPT test's fixed 10ms delay allows. Update the WPT\ntest to poll the server for the stream close info (query_stream_close_info)\ninstead of a single fixed delay; this test change is being upstreamed as\nweb-platform-tests/wpt#61525. Un-skip streams-close.https.any, which was\npreviously skipped for an internal streams-hang timeout.\n\nWhether a synchronous abort() should take precedence over an in-flight close()\nlike this is still under discussion (whatwg/streams#1203);\nthe code carries a FIXME and https://bugs.webkit.org/show_bug.cgi?id=320232\ntracks validating the approach.\n\nOriginal PR by Basuke Suzuki.  I just rebased it and undid the test changes.\n\n* LayoutTests/imported/w3c/web-platform-tests/webtransport/streams-close.https.any-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/webtransport/streams-close.https.any.serviceworker-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/webtransport/streams-close.https.any.sharedworker-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/webtransport/streams-close.https.any.worker-expected.txt:\n* Source/WebCore/Modules/filesystem/FileSystemWritableFileStreamSink.cpp:\n(WebCore::FileSystemWritableFileStreamSink::close):\n* Source/WebCore/Modules/filesystem/FileSystemWritableFileStreamSink.h:\n* Source/WebCore/Modules/mediastream/VideoTrackGenerator.cpp:\n(WebCore::VideoTrackGenerator::Sink::close):\n(WebCore::VideoTrackGenerator::Sink::abort):\n* Source/WebCore/Modules/mediastream/VideoTrackGenerator.h:\n* Source/WebCore/Modules/streams/StreamTransferUtilities.cpp:\n* Source/WebCore/Modules/streams/WritableStreamSink.cpp:\n(WebCore::WritableStreamDefaultController::signal const):\n(WebCore::WritableStreamSink::abortSignal const):\n(WebCore::SimpleWritableStreamSink::close):\n* Source/WebCore/Modules/streams/WritableStreamSink.h:\n(): Deleted.\n* Source/WebCore/Modules/streams/WritableStreamSink.idl:\n* Source/WebCore/Modules/webtransport/DatagramSink.cpp:\n(WebCore::DatagramSink::close):\n* Source/WebCore/Modules/webtransport/DatagramSink.h:\n* Source/WebCore/Modules/webtransport/WebTransportSendStreamSink.cpp:\n(WebCore::WebTransportSendStreamSink::~WebTransportSendStreamSink):\n(WebCore::WebTransportSendStreamSink::start):\n(WebCore::WebTransportSendStreamSink::close):\n(WebCore::WebTransportSendStreamSink::sendFin):\n(WebCore::WebTransportSendStreamSink::abort):\n(WebCore::WebTransportSendStreamSink::cancel):\n* Source/WebCore/Modules/webtransport/WebTransportSendStreamSink.h:\n\nCanonical link: https://commits.webkit.org/318102@main",
      "email": "achristensen@apple.com",
      "hash": "54cffb8bc0c7ceaf24819e9a75806301f7baf2f3",
      "subject": "[WebTransport] WPT failure: Close and abort unidirectional stream"
    },
    "318103@main": {
      "author": "Gerald Squelart",
      "avatar": "https://www.gravatar.com/avatar/894904f08d85651bf2a76868a4d2f1b3?d=identicon\u0026s=64",
      "cl": "318103@main",
      "clUrl": "https://commits.webkit.org/318103@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320158\nrdar://183093382\n\nReviewed by Mike Wyrzykowski.\n\nAdd float16 canvas tests for all possible predefined color spaces.\nNote that these only test conversions of color values between unorm8 and\nfloat16 pixel formats in each color space, *not* conversions between\ndifferent color spaces.\n\n* LayoutTests/fast/canvas/hdr/float16-canvas-imagedata-large-unaccelerated-expected.txt:\n* LayoutTests/fast/canvas/hdr/float16-canvas-imagedata-large-unaccelerated.html:\n* LayoutTests/fast/canvas/hdr/float16-canvas-imagedata-small-accelerated-display-p3-expected.txt: Copied from LayoutTests/fast/canvas/hdr/float16-canvas-imagedata-small-accelerated-expected.txt.\n* LayoutTests/fast/canvas/hdr/float16-canvas-imagedata-small-accelerated-display-p3-linear-expected.txt: Copied from LayoutTests/fast/canvas/hdr/float16-canvas-imagedata-small-accelerated-expected.txt.\n* LayoutTests/fast/canvas/hdr/float16-canvas-imagedata-small-accelerated-display-p3-linear.html: Copied from LayoutTests/fast/canvas/hdr/float16-canvas-imagedata-large-unaccelerated.html.\n* LayoutTests/fast/canvas/hdr/float16-canvas-imagedata-small-accelerated-display-p3.html: Copied from LayoutTests/fast/canvas/hdr/float16-canvas-imagedata-large-unaccelerated.html.\n* LayoutTests/fast/canvas/hdr/float16-canvas-imagedata-small-accelerated-expected.txt:\n* LayoutTests/fast/canvas/hdr/float16-canvas-imagedata-small-accelerated-srgb-linear-expected.txt: Copied from LayoutTests/fast/canvas/hdr/float16-canvas-imagedata-small-accelerated-expected.txt.\n* LayoutTests/fast/canvas/hdr/float16-canvas-imagedata-small-accelerated-srgb-linear.html: Copied from LayoutTests/fast/canvas/hdr/float16-canvas-imagedata-large-unaccelerated.html.\n* LayoutTests/fast/canvas/hdr/float16-canvas-imagedata-small-accelerated.html:\n* LayoutTests/fast/canvas/hdr/float16-canvas-imagedata.js:\n* LayoutTests/platform/mac-wk2/TestExpectations:\n\nCanonical link: https://commits.webkit.org/318103@main",
      "email": "g_squelart@apple.com",
      "hash": "607623d9651bf9f7e7ea26635468f1fd51b9fc32",
      "subject": "Add float16 canvas tests with all predefined color spaces"
    },
    "318104@main": {
      "author": "Adrian Perez de Castro",
      "avatar": "https://www.gravatar.com/avatar/30ffea8cf404586741a8f5f7110c0914?d=identicon\u0026s=64",
      "cl": "318104@main",
      "clUrl": "https://commits.webkit.org/318104@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320464\n\nUnreviewed Skia update.\n\n% git log --pretty='%h %s' 741e480402db12ca9c9baf068d21991749b9964a..e5f9ed19954384bf70572897fee33c9d002db449\ne5f9ed1995 gpu: Reorder members to fix destruction order\nb2e55fdc5c Revert \"[rust_ico] Add Rust-based ICO decoder using image-rs\"\n014a77e8a6 Fix Use-After-Free in SubRunAllocator\n0feab09eb8 [Fonts] Add EBDT bitmap + glyf outline test font generation\n80ae1deed9 Rename cblc_glyph to blc glyph\n7d9da40283 Roll recipe dependencies (trivial).\n71db7c06c5 Roll ANGLE from c053bf85793b to 1bb9d6a05849 (16 revisions)\nc1fb3a8cfa Roll Skia Infra from 58c1a09f1e80 to dc5c43ee2e11 (10 revisions)\na49fe07399 Roll SwiftShader from 7868bf37d5b2 to eb0bee078ef2 (1 revision)\n4da5c51e65 Roll Dawn from 7f4daf4eee47 to 6bcedae5720d (10 revisions)\n125a76cc4c Roll recipe dependencies (trivial).\nb75a13130c Roll vulkan-deps from 8e7420f63043 to abeb70d7ee3c (10 revisions)\n7fa560bd02 Roll recipe dependencies (trivial).\n2dde156aec Fix potential destruction-order UAF hazards\n10cd2cbe97 Roll recipe dependencies (trivial).\n7dccd1e79a Apply min/max optimizations in lowp SkRP stages\n49c0165256 [graphite] Remove unused kForwards template from Layer::test\n3613e6dfbb [rust_ico] Add Rust-based ICO decoder using image-rs\n2b55eed550 Roll vulkan-deps from 4d84938ebbb1 to 8e7420f63043 (1 revision)\nc0e2b9667d Disable nullability-completeness on win clang builds.\nb68567542f Roll ANGLE from 600b59f1595f to c053bf85793b (3 revisions)\n9b5f59437e Roll Skia Infra from 4fe7802c8e43 to 58c1a09f1e80 (3 revisions)\n225f347d95 Roll Dawn from bd2dadf43e82 to 7f4daf4eee47 (6 revisions)\n5f054919aa Roll skottie-base from 6c01ff2ce17b to e34c0f483d40\ne15ea7a4b9 Roll recipe dependencies (trivial).\n22e05ffef7 Roll recipe dependencies (trivial).\n7980669242 Roll recipe dependencies (trivial).\n2826ae6dc6 Roll vulkan-deps from 457f47f38fb7 to 4d84938ebbb1 (2 revisions)\n7f99eee20f Roll SKP CIPD package from 567 to 568\n6f6fc1bda7 Roll vulkan-deps from 2eb9e2c66a25 to 457f47f38fb7 (5 revisions)\n75a4bf6706 Roll vulkan-deps from bb655ad91bcc to 2eb9e2c66a25 (2 revisions)\n26571da5c5 Roll vulkan-deps from add78d6dcd49 to bb655ad91bcc (4 revisions)\n8c5eb079d3 Roll vulkan-deps from 597215fa7377 to add78d6dcd49 (21 revisions)\n919956953a Roll ANGLE from 8e69854ca685 to 600b59f1595f (7 revisions)\n8b94a5f2a7 Roll Skia Infra from 5046ef52eb92 to 4fe7802c8e43 (15 revisions)\n1d673d2b09 Roll Dawn from a25b697fe5b0 to bd2dadf43e82 (17 revisions)\n7dd7fd971c Roll vulkan-deps from be1dae5413d9 to 597215fa7377 (1 revision)\n803eadd7c9 Roll ANGLE from aea502e52005 to 8e69854ca685 (11 revisions)\nc8c67d57cb Roll Skia Infra from a21d5e42faa3 to 5046ef52eb92 (8 revisions)\nfdef7b5d3b Roll Dawn from 7807dcbdca24 to a25b697fe5b0 (79 revisions)\n5358ab75b8 Roll vulkan-deps from 245a3bb1956d to be1dae5413d9 (9 revisions)\nf2d152df87 Add avoid depth mode for graphite\n0c4faca350 Roll recipe dependencies (trivial).\n5efd89a094 Add SkPreIncrementSpan and SkPostIncrementSpan helpers to SkSpan\n0fc8ba72e8 Roll recipe dependencies (trivial).\n272ed8a1f3 Fix Vulkan Memory Allocator\n537bbfd69d Refactor Raster Pipeline benches\n0f68f5e679 Add new tool for easily comparing raster pipeline benchmarks\nd19e557ac3 Roll vulkan-deps from 092187154b19 to 245a3bb1956d (2 revisions)\nbd4ae38ca3 Roll ANGLE from a32d31d2f123 to aea502e52005 (8 revisions)\n077d15d843 Roll Skia Infra from 6810abaa66f5 to a21d5e42faa3 (15 revisions)\n3928aca11c Roll SwiftShader from f3e464b1e567 to 7868bf37d5b2 (2 revisions)\nef178c9898 Roll recipe dependencies (trivial).\naf1782bd9c Roll recipe dependencies (trivial).\n5cc5312779 Roll vulkan-deps from c60153d2ad91 to 092187154b19 (9 revisions)\n3ac99be472 Roll recipe dependencies (trivial).\n15302f1625 Merge 3 release notes into RELEASE_NOTES.md\n3149a8f0ac Update Skia milestone to 152\ne60a12bc6c [Graphite] drawImageLattice support\ne30d3d14a4 Propagate protectedness to SkPictureShader draws\na8fc94114c Roll recipe dependencies (trivial).\n3ba832f868 Avoid comments in Graphite shaders release mode\na0cebc0a5a Fix fuzzer timeout\n6ad90d7d18 Support 8-bit YUV400 monochrome AVIF decoding\nb5842dc4ec [demos] Text-on-path editor tweaks\n2ac21689ff Roll vulkan-deps from 285f3b19c49c to c60153d2ad91 (6 revisions)\n6314e9c84b Roll ANGLE from 98dab44d9cd2 to a32d31d2f123 (5 revisions)\ne3f768cd32 Roll Skia Infra from c0e4e8a0a6bd to 6810abaa66f5 (6 revisions)\n15e1bdf2ad Roll recipe dependencies (trivial).\n92aebcc26c Optimize div_(uint|int)_n code in SkRP\n94dd812d73 Roll recipe dependencies (trivial).\n7152c00de7 [graphite] Signal identity sRGB curve for CSXform_sRGB specialization\n5eb6351a54 [demo] Text-on-path editor\n71947c4110 Roll vulkan-deps from 0af4fee9206d to 285f3b19c49c (3 revisions)\n60a102159d Roll recipe dependencies (trivial).\n158f23e33d [codecs] Fix potential overflow in SkBmpRLECodec\ne278515e00 [graphite] Consolidate PreAlpha+PostAlpha shader logic\ncd81fd7189 Implement sampling for interlaced images in `SkPngRustCodec`\n79e2e1538e Roll recipe dependencies (trivial).\nca9aecfbf4 Check clipped renderpass bounds against cleared stencil area\n4de316aa5d [graphite] Add Simd SparseStrips coverage generation\n8e1085db61 [graphite] DrawAtlas::Plot Refactor\nbfb7860cb9 Add TSAN suppression for libgallium\n0daa495b39 Roll recipe dependencies (trivial).\n111e7582d0 Roll recipe dependencies (trivial).\nba1942d8c3 Roll recipe dependencies (trivial).\nc692074dc3 Roll ANGLE from 6e65aeaa7006 to 98dab44d9cd2 (6 revisions)\n48ef6c3658 Roll vulkan-deps from 782a48bf2db0 to 0af4fee9206d (1 revision)\nc4ba849af1 Roll Skia Infra from 51dfbce05960 to c0e4e8a0a6bd (7 revisions)\n4aee6482bc Roll Dawn from 5f4709f1a2c7 to 7807dcbdca24 (7 revisions)\nd242b9bc71 Roll recipe dependencies (trivial).\n587d8befe1 Roll vulkan-deps from e44f14c91d6d to 782a48bf2db0 (1 revision)\n76941bbcaf Roll SKP CIPD package from 566 to 567\n68344eb642 Roll vulkan-deps from dee190b82ff3 to e44f14c91d6d (1 revision)\n62efacd377 Roll vulkan-deps from 421bfddfc5bd to dee190b82ff3 (1 revision)\n9f86b1e270 Implement sampling for non-interlaced images in `SkPngRustCodec`\n3c462ad5a8 Roll recipe dependencies (trivial).\n48b7d024fa Manual roll Dawn from b295347f18d1 to 5f4709f1a2c7 (12 revisions)\nfbaee0700c Roll vulkan-deps from f2b9fece7c67 to 421bfddfc5bd (13 revisions)\ne47bb0549c Roll recipe dependencies (trivial).\n63c19a2761 Migrate `SkIcoCodec` to generic registry-based APIs\n6d89b67e64 Manual roll ANGLE from 44ba9d57ecb1 to 6e65aeaa7006 (15 revisions)\n70e2f8491e [Maintenance] Remove dead test code that never ran\ncb5ff71179 Reland \"GM_lattice add Graphite readPixel support\"\ne199716c93 Modify SkRRect comparison to be more robust\n5d02452a33 Manual roll Dawn from c3fd396bbfe7 to b295347f18d1 (8 revisions)\n7a123c107c Fix bugs in no-op raw_ptr and add unit tests\n49856493d1 Roll vulkan-deps from 4751e35bc85f to f2b9fece7c67 (5 revisions)\nac21de4bf2 Roll ANGLE from b9aa07e9d122 to 44ba9d57ecb1 (14 revisions)\nb0ca984633 Roll Skia Infra from 604794226cd6 to 51dfbce05960 (16 revisions)\n946faa1e4b Roll SwiftShader from 0255eccc9824 to f3e464b1e567 (1 revision)\n6d99d31818 Roll Dawn from 9c5cdb25bf88 to c3fd396bbfe7 (16 revisions)\n339be28c7c Roll recipe dependencies (trivial).\ne793ca20f3 Temporarily disable sampling in `SkPngRustCodec`\nf2169b805f Retry vkWaitForFences() on timeout\n1a63a80d94 Roll vulkan-deps from 4cd4bfcf818e to 4751e35bc85f (6 revisions)\n077ada9183 Revert \"GM_lattice add Graphite readPixel support\"\n090bf26ad1 Fix incremental subset decoding and `yOffset` in `SkPngRustCodec`\n3c878f44c0 GM_lattice add Graphite readPixel support\nf5a6086c28 [graphite] remove TEST_UTILS dep from sparse strips\n82eedeafdd Fix forward SkPixmap::isEmpty return type\n41bfea8dcd Reland \"Add support for gainmaps in `SkPngRustEncoder`.\"\ne6496d1279 Fix Ganesh stencil UMR\n68f005836b Add isEmpty to SkPixmap\ne1e2a569bd Revert \"Add support for gainmaps in `SkPngRustEncoder`.\"\n426b616af3 Roll vulkan-deps from c3cf0d4fcb1d to 4cd4bfcf818e (8 revisions)\n12e7444fcc Roll ANGLE from 195369f6675e to b9aa07e9d122 (6 revisions)\nef58382311 Roll Skia Infra from 4482c65cbc8d to 604794226cd6 (9 revisions)\n8c863b2d24 Roll Dawn from 636a470ddb7f to 9c5cdb25bf88 (13 revisions)\n87cd7a07d6 Roll SwiftShader from 2843cbcc714f to 0255eccc9824 (1 revision)\nfdd0b605e8 Roll recipe dependencies (trivial).\n189983a9b6 Roll recipe dependencies (trivial).\ne7abf7e3c1 Delete VulkanGraphiteUtils.h\ndd26c181cb [sksl] Add atomicMax/Min\na02df043b3 Add support for gainmaps in `SkPngRustEncoder`.\n09a43d2fe8 Remove SkScalarHalf\n3338a186a6 [fiddle] Don't compile with PartitionAlloc\ne975ee8af0 Make rust code compatible with G3\nd2e396064c Roll vulkan-deps from 5481b8c77757 to c3cf0d4fcb1d (5 revisions)\nb72b7aa04a [sksl] Add workgroupUniformLoad\nf492072f1b Fix compile error with recent Rust toolchains in Rust PNG FFI\n2a22e8ba93 Revert \"Update libjxl to 0.11.2\"\n6bfc23eb30 [infra] Add tasks for new IntelArc140V machines\ne1ca633f00 Roll recipe dependencies (trivial).\n588f849889 Roll recipe dependencies (trivial).\n59dff88b1e Roll ANGLE from 2cbd2792f24c to 195369f6675e (18 revisions)\n299d6e31c2 Roll Skia Infra from 2aed8cf41f80 to 4482c65cbc8d (11 revisions)\n9e1383ec3d Roll Dawn from f2224261327f to 636a470ddb7f (24 revisions)\n7018122bf8 Roll vulkan-deps from e73c8345b94e to 5481b8c77757 (9 revisions)\nba9db6ac4d Roll recipe dependencies (trivial).\n86aec8d45c Update libjxl to 0.11.2\nc439d7b07d Enable Skia Graphite for all GPU builds\nfd47aaa4c7 [graphite] Add sparse strips coverage bench\nff3643bd71 Manual roll Dawn from cbf8e7390fe1 to f2224261327f (50 revisions)\n6a2c2f4b3f Avoid TSAN issues when initializing SkResourceCache\n7fb304a530 [sksl][SPIRV] Limit array stride decorator\n2ff78efc13 Fix dawn generation in Bazel rules\na78aac1619 Fix potential `SkPngRustCodec` crash in low-bit-depth subset decodes\ncd89371605 Support VideoFrame dimensions in MakeImageFromCanvasImageSource\na36b97ccf3 Fix salt value used for expat in parsing XML\n19eed9d422 [sksl] SkLog fixes\nf51965efae Roll vulkan-deps from 3962bacd04ed to e73c8345b94e (1 revision)\na830e22390 Roll recipe dependencies (trivial).\n799a3ff9d8 Roll Skia Infra from ac0c9a2575ae to 2aed8cf41f80 (4 revisions)\n5081cdd827 Prevent overshoot past IEND for the Rust PNG decoder\n72137d1554 Roll vulkan-deps from 0582f446e54a to 3962bacd04ed (6 revisions)\n8e71d20ae3 Roll ANGLE from 28262f144abb to 2cbd2792f24c (19 revisions)\nffac3e91fb [graphite] Add scalar SparseStrips coverage generation\n51b910d240 Roll recipe dependencies (trivial).\nc88d962498 Manual roll vulkan-deps from 1c234a0ddd6e to 0582f446e54a (10 revisions)\na028fcad29 [skshaper] Perform global line break analysis in HarfBuzz shaper\nbd7d20b4aa Roll vulkan-deps from fac28bbc554e to 1c234a0ddd6e (1 revision)\ndf87c52d7e Add opt-in metadata to rasterize alpha gradients for printing\n61d037187e Roll ANGLE from 317ae3119bf1 to 28262f144abb (8 revisions)\nd4e2af223c Roll Skia Infra from dce9b47ff97e to ac0c9a2575ae (8 revisions)\nc0c4392d26 Roll shaders-base from 2ca02a2612d9 to 61415213cc70\nff7470025c Roll skottie-base from 870493f76166 to 6c01ff2ce17b\nca4aee69be Roll recipe dependencies (trivial).\nd7fe8b4e27 Roll SKP CIPD package from 565 to 566\n488a6fc05a Roll vulkan-deps from a1bcb73b7c45 to fac28bbc554e (1 revision)\n5924bfc6cb Roll vulkan-deps from 43c89776df30 to a1bcb73b7c45 (5 revisions)\n257afeb047 Roll vulkan-deps from 4210d7fc52f6 to 43c89776df30 (4 revisions)\n\nCanonical link: https://commits.webkit.org/318104@main",
      "email": "aperez@igalia.com",
      "hash": "79852b32c8fa3ecfaf38a3835e62b1f8221475e1",
      "subject": "Update Skia to 2026-07-06 (e5f9ed19954384bf70572897fee33c9d002db449)"
    },
    "318105@main": {
      "author": "Alan Baradlay",
      "avatar": "https://www.gravatar.com/avatar/788d66417db806c567552cfa1ae89f77?d=identicon\u0026s=64",
      "cl": "318105@main",
      "clUrl": "https://commits.webkit.org/318105@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320420\n\nReviewed by Antti Koivisto.\n\nWhether a percentage in the flex container's block axis resolves to a length is a property of the container: a\nflex item's containing block is the flex container, and the percentage walk never leaves it. The answer has to be\nthe one from before the items were flexed, because the algorithm installs overriding sizes on them as it goes, so\nit was cached -- but it was cached lazily, by whichever query happened to come first, from two sites that gated\nthe same slot differently, with the only reset inside the per-item loop of computeFlexBaseAndHypotheticalMainSizes.\n\nAsk the container instead, once, in FlexLayout::layout before the formatting context runs. hasDefiniteLogicalHeight\nis exactly the question -- it is availableLogicalHeightForPercentageComputation as a bool -- and that is what a\nflex item's percentage resolves against once the cases below are excluded. FlexLayoutState now holds a plain bool\nseeded at construction: no setter, no reset, and nothing writes it during layout.\n\nTwo kinds of flex item resolve by a route the container cannot answer for, and they still ask the renderer.\nisFlexBoxBlockSizeDefiniteForFlexItem returns nullopt for them: an orthogonal item resolves its percentage block\nsize against the container's inline size, and a widget substitutes its own intrinsic height for a percentage that\ndid not resolve, so it can be definite where the container is not.\n\nAnswering from the container also has to take over the one thing computePercentageLogicalHeight does besides\nanswer: with UpdatePercentageHeightDescendants::Yes it registers the item as a percent-height descendant of its\ncontaining block, which is what dirties the item when the container is resized. That containing block is the flex\ncontainer -- the percentage walk cannot leave it, the same reason the container can answer at all -- so the\nregistration happens here instead.\n\nThat drops three latent problems. The formatting context's cross-size query gated on mainAxisIsInlineAxis while\nthe integration layer's gated on !isOrthogonal, so a column-flow orthogonal item wrote the slot from a value\nderived from the container's inline size and a later query read it back as the container's block size. An item\nwhose percent resolution was suspended stored false, which then stood for every other item. And once past the\nbase-size loop nothing reset the slot, so the answer for the whole rest of the layout came from whichever item\nhappened to lay out first and happened to have a percent-height descendant.\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::FlexLayoutState):\n(WebCore::FlexLayoutState::isFlexBoxBlockSizeDefinite const):\n(WebCore::FlexLayoutState::isFlexBoxBlockSizeIndefinite const): Deleted.\n(WebCore::FlexLayoutState::setFlexBoxBlockSizeIsDefinite): Deleted.\n(WebCore::FlexLayoutState::resetFlexBoxBlockSizeDefiniteness): Deleted.\n* Source/WebCore/layout/integration/flex/FlexIntegrationUtils.cpp:\n(WebCore::LayoutIntegration::FlexIntegrationUtils::isFlexBoxBlockSizeDefiniteForFlexItem const):\n* Source/WebCore/layout/integration/flex/FlexIntegrationUtils.h:\n* Source/WebCore/layout/integration/flex/LayoutIntegrationFlexLayout.cpp:\n(WebCore::LayoutIntegration::FlexLayout::layout):\n(WebCore::LayoutIntegration::FlexLayout::isFlexBoxBlockSizeDefiniteForFlexItem const):\n(WebCore::LayoutIntegration::FlexLayout::canResolvePercentAgainstContainerBlockSize):\n* Source/WebCore/layout/integration/flex/LayoutIntegrationFlexLayout.h:\n(WebCore::LayoutIntegration::FlexLayout::isInLayout const):\n(WebCore::LayoutIntegration::FlexLayout::isFlexBoxBlockSizeDefinite const): Deleted.\n(WebCore::LayoutIntegration::FlexLayout::isFlexBoxBlockSizeIndefinite const): Deleted.\n(WebCore::LayoutIntegration::FlexLayout::setFlexBoxBlockSizeIsDefinite): Deleted.\n\nCanonical link: https://commits.webkit.org/318105@main",
      "email": "zalan@apple.com",
      "hash": "abba71dc926a5e7579e8acd3dfdb5393b5567b3a",
      "subject": "[cleanup] Compute the flex container's block-size definiteness up front"
    },
    "318106@main": {
      "author": "Lily Spiniolas",
      "avatar": "https://www.gravatar.com/avatar/b65cfeb51301399bd50e338bb2d7613e?d=identicon\u0026s=64",
      "cl": "318106@main",
      "clUrl": "https://commits.webkit.org/318106@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320448\nrdar://182688886\n\nReviewed by Abrar Rahman Protyasha.\n\nAdopt `NSRefreshControlHosting` property `refreshControlHostIsTracking` so that\nwe can prevent momentum scrolling from triggering refresh controllers by setting\nthe property to false during momentum scrolls.\n\nTests:\nNSRefreshControllerTests.MomentumScrollDoesNotTriggerRefresh\nNSRefreshControllerTests.HostIsNotTrackingDuringMomentumScroll\nNSRefreshControllerTests.HostIsTrackingForLegacyMouseWheelScroll\n\n* Source/WebKit/Platform/spi/mac/AppKitSPI.h:\n* Source/WebKit/UIProcess/API/Cocoa/WKWebView+RefreshControl.swift:\n(WKWebView.refreshControlHostIsTracking):\n* Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm:\n(-[WKWebView _refreshControlHostIsTracking]):\n* Source/WebKit/UIProcess/API/Cocoa/WKWebViewInternal.h:\n* Source/WebKit/UIProcess/mac/WKAppKitGestureController.mm:\n(-[WKAppKitGestureController startMomentumIfNeededForGesture:]):\n* Source/WebKit/UIProcess/mac/WebViewImpl.h:\n* Source/WebKit/UIProcess/mac/WebViewImpl.mm:\n(WebKit::WebViewImpl::setRefreshController):\n(WebKit::WebViewImpl::updateRefreshControllerForWheelEvent):\n(WebKit::WebViewImpl::updateRefreshControllerForPanGesture):\n* Source/WebKit/UIProcess/API/mac/WKWebViewPrivateForTestingMac.h:\n* Source/WebKit/UIProcess/API/mac/WKWebViewTestingMac.mm:\n(-[WKWebView _refreshControlHostIsTrackingForTesting]):\n* Tools/TestWebKitAPI/Tests/WebKit/WKWebView/mac/NSRefreshControllerTests.mm:\n(TestWebKitAPI::pullDownAndWaitForRefresh):\n(TestWebKitAPI::flickDownAndCoastWithMomentum):\n(TestWebKitAPI::TEST_F(NSRefreshControllerTests, MomentumScrollDoesNotTriggerRefresh)):\n(TestWebKitAPI::TEST_F(NSRefreshControllerTests, HostIsNotTrackingDuringMomentumScroll)):\n(TestWebKitAPI::TEST_F(NSRefreshControllerTests, HostIsTrackingForLegacyMouseWheelScroll)):\n\nCanonical link: https://commits.webkit.org/318106@main",
      "email": "lily_spiniolas@apple.com",
      "hash": "4f227986989fbd30f5b12752fe4928b250b81a4b",
      "subject": "[macOS 27] Momentum scrolling should not trigger NSRefreshController"
    },
    "318107@main": {
      "author": "Megan Gardner",
      "avatar": "https://www.gravatar.com/avatar/b466a5bcbfabf4d82a8ecc595db5a531?d=identicon\u0026s=64",
      "cl": "318107@main",
      "clUrl": "https://commits.webkit.org/318107@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319963\nrdar://182889143\n\nReviewed by Alan Baradlay.\n\nIn a vertical writing mode with text-underline-position: auto, the underline should be under-aligned (to the text's under edge),\nwith text-underline-offset shifting it from there. isAlignedForUnder() additionally required text-underline-offset to be auto,\nso specifying an explicit offset dropped the text out of the under-alignment path into the horizontal ascent + offset computation,\npositioning the underline incorrectly. This was exposed by custom highlights: a ::highlight carries its offset as an override on an\noriginating box whose own offset is auto, so the highlight under-aligned correctly while an equivalently-styled plain element\n(with a non-auto offset) did not — the two diverged in vertical-lr. Dropping the offset condition lets any vertical\ntext-underline-position: auto text under-align, applying the offset within that branch, so highlights and directly-styled elements agree.\n\nCorrecting the underline position surfaced a second, pre-existing issue in the ink-overflow (repaint) path:\ncollectInkOverflowForTextDecorations passed the run's physical height as the logical run height, which is only correct in horizontal\nwriting modes. Once the underline under-aligns in vertical text, this over-inflated the computed ink overflow and the tracked repaint\nrectangle. It now uses the run's block-axis extent (physical width in vertical writing modes), matching the paint path, so the repaint\nrects stay tight. The two fast/repaint baselines are updated to reflect the corrected underline position.\n\nThis addresses only the offset-gated under-alignment and its repaint side-effect; other vertical decoration-positioning issues\n(e.g. the non-root path FIXME in TextBoxPainter.cpp, and custom-highlight-painting-vertical-writing-mode-001) are unrelated and remain.\n\nimported/w3c/web-platform-tests/css/css-highlight-api/painting/custom-highlight-logical-metrics-002.html\nimported/w3c/web-platform-tests/css/css-highlight-api/painting/custom-highlight-dynamic-logical-metrics-001.html\n\n* LayoutTests/TestExpectations:\n* LayoutTests/fast/repaint/text-decoration-overflow-repaint-expected.txt:\n* LayoutTests/fast/repaint/vertical-rl-repaint-when-decoration-changes-expected.txt:\n* Source/WebCore/layout/formattingContexts/inline/display/InlineDisplayContentBuilder.cpp:\n(WebCore::Layout::InlineDisplayContentBuilder::collectInkOverflowForTextDecorations):\n* Source/WebCore/style/InlineTextBoxStyle.cpp:\n(WebCore::isAlignedForUnder):\n\nCanonical link: https://commits.webkit.org/318107@main",
      "email": "megan_gardner@apple.com",
      "hash": "892029d23764c2c8f0cda40bd46c7aa70d8f3c76",
      "subject": "[Custom Highlight] text-underline-offset is mispositioned in vertical writing mode."
    },
    "318108@main": {
      "author": "Richard Robinson",
      "avatar": "https://www.gravatar.com/avatar/a0d2f862985ed0fd47887be66f5a3e4f?d=identicon\u0026s=64",
      "cl": "318108@main",
      "clUrl": "https://commits.webkit.org/318108@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320483\nrdar://183449733\n\nReviewed by Aditya Keerthi.\n\nExpose these symbols as SPI on watch and TV.\n\n* Source/WebKit/_WebKit_SwiftUI/API/View+WebViewModifiers.swift:\n* Source/WebKit/_WebKit_SwiftUI/API/WebPage+SwiftUI.swift:\n* Source/WebKit/_WebKit_SwiftUI/API/WebView.swift:\n* Source/WebKit/_WebKit_SwiftUI/Implementation/CocoaWebViewAdapter.swift:\n* Source/WebKit/_WebKit_SwiftUI/Implementation/PlatformTextSearching.swift:\n* Source/WebKit/_WebKit_SwiftUI/Implementation/WebViewRepresentable.swift:\n(WebViewCoordinator.update(_:configuration:context:)):\n\nCanonical link: https://commits.webkit.org/318108@main",
      "email": "richard_robinson2@apple.com",
      "hash": "03bb4fd8e05a251507ba25a7ddbf343da5bf102a",
      "subject": "[SwiftUI WebKit API] Expose WebView and related types as SPI on watchOS and tvOS"
    },
    "318109@main": {
      "author": "Karl Dubost",
      "avatar": "https://www.gravatar.com/avatar/0c2b3d380fb637f3dd51eda704634b6f?d=identicon\u0026s=64",
      "cl": "318109@main",
      "clUrl": "https://commits.webkit.org/318109@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=318103\nrdar://180896205\n\nReviewed by Simon Fraser.\n\n`SVGMatrix.multiply()` still had the SVG 1.1 signature `multiply(SVGMatrix)`, so\npassing a dictionary threw:\n\n    svg.createSVGMatrix().multiply({a: 3, d: 2});  // TypeError\n\nSVG 2 keeps `SVGMatrix` as its own interface but takes the DOM geometry\ndictionaries as input. The SVG WG settled this in svgwg#706 and the prose landed\nin w3c/svgwg#1143.\n\nFix by widening the IDL to `optional DOMMatrix2DInit secondMatrix = {}` and\nbuilding the `AffineTransform` through a new\n`DOMMatrixReadOnly::toAffineTransform()`, which runs validate-and-fixup[1] and\nreads the normalized `m11`..`m42`. `Path2D::addPath()` and\n`CanvasRenderingContext2DBase::setTransform()` open-coded the same sequence, so\nthey use the helper too. Gecko has the equivalent `ToValidatedMatrixDouble()`.\n\nPassing an `SVGMatrix` keeps working, since dictionary conversion reads `a`..`f`\noff whatever object it gets. Two calls that used to throw now multiply by the\nidentity matrix: `multiply()` with no argument, and `multiply()` with an object\nholding none of `a`..`f` / `m11`..`m42`.\n\nNote that `CanvasPattern::setTransform()`, `SVGTransform::setMatrix()` and\n`SVGSVGElement::createSVGTransformFromMatrix()` still read `a`..`f`. Since\nvalidate-and-fixup only fills forward, setting `m11` from `a` but never `a` from\n`m11`, those ignore `m11`-spelled input. Converting them changes behavior and\nneeds its own tests, so it is left for a follow-up.\n\nThe WPT test drops its `-tentative` suffix now that w3c/svgwg#1143 has merged,\nand grows coverage for the aliasing rule: nothing in `svg/` passed the\n`m11`..`m42` spelling to anything before this. `DOMMatrix2DInit-validate-fixup.html`\ncovers the algorithm well but drives it only through `ctx.setTransform()` and\n`Path2D.addPath()`.\n\n[1] https://drafts.csswg.org/geometry-1/#matrix-validate-and-fixup\n\n* LayoutTests/imported/w3c/web-platform-tests/svg/types/scripted/SVGMatrix-expected.txt: Renamed from SVGMatrix-tentative-expected.txt.\n* LayoutTests/imported/w3c/web-platform-tests/svg/types/scripted/SVGMatrix.html: Renamed from SVGMatrix-tentative.html.\n* LayoutTests/imported/w3c/web-platform-tests/svg/types/scripted/WEB_FEATURES.yml:\n* LayoutTests/imported/w3c/web-platform-tests/svg/types/scripted/w3c-import.log:\n* LayoutTests/svg/dom/SVGMatrix-interface-expected.txt:\n* LayoutTests/svg/dom/SVGMatrix-interface.xhtml:\n* LayoutTests/svg/dom/SVGMatrix.html:\n* Source/WebCore/css/DOMMatrixReadOnly.cpp:\n(WebCore::DOMMatrixReadOnly::toAffineTransform):\n* Source/WebCore/css/DOMMatrixReadOnly.h:\n* Source/WebCore/html/canvas/CanvasRenderingContext2DBase.cpp:\n(WebCore::CanvasRenderingContext2DBase::setTransform):\n* Source/WebCore/html/canvas/Path2D.cpp:\n(WebCore::Path2D::addPath):\n* Source/WebCore/svg/SVGMatrix.h:\n(WebCore::SVGMatrix::multiply const):\n* Source/WebCore/svg/SVGMatrix.idl:\n\nCanonical link: https://commits.webkit.org/318109@main",
      "email": "karlcow@apple.com",
      "hash": "ce15568a0e8b7e6c2c2aed2913ef4d2c4b4150ff",
      "subject": "SVGMatrix.multiply should accept DOMMatrix2DInit per SVG 2"
    },
    "318110@main": {
      "author": "Dan Hecht",
      "avatar": "https://www.gravatar.com/avatar/080f47d912b1b34d0be8293f825d132d?d=identicon\u0026s=64",
      "cl": "318110@main",
      "clUrl": "https://commits.webkit.org/318110@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320503\nrdar://183467830\n\nReviewed by Marcus Plutowski.\n\nThe zeroed path has to be correct over pages that are resident but were never\nwritten, and over pages whose contents sit in the pager rather than in memory.\nNeither arose here: a page was resident and dirty, or untouched and backed by\nnothing.\n\nAdd two actions that pick a random live object and, if it spans at least two\npages, read every page without writing, or page it out and leave it out. Also\npage out a fraction of regions after validating them but before freeing, so a\nregion can return to the heap with its contents in the pager rather than\nresident. Page-out uses madvise(MADV_PAGEOUT), which is unavailable on kernels\nbuilt without MACH_ASSERT; that action is dropped rather than given a share of\nthe action budget when the probe fails.\n\nreadSomething also verifies what it reads. A large object is stamped and\nchecked on only a sample of its pages, so most of it went unverified for its\nwhole life; the pages outside the stamp were never written, so a zeroed\nallocation must still read zero there.\n\nClamp injected huge allocations to a quarter of the heap budget. One that\nalone exceeded the budget held the heap over its cap until it happened to be\npicked for freeing, so it was only ever live while everything else drained.\n\n* Source/bmalloc/libpas/src/test/IsoHeapChaosTests.cpp:\n(std::pageOutIsAvailable):\n(std::pageOutRange):\n(std::testAllocationChaos):\n\nCanonical link: https://commits.webkit.org/318110@main",
      "email": "dan.hecht@apple.com",
      "hash": "86fb5e3a4eef7408f5d14e37f447a7761a55a69a",
      "subject": "[libpas] Cover unwritten and paged-out pages in IsoHeapChaosTests"
    },
    "318111@main": {
      "author": "Dan Hecht",
      "avatar": "https://www.gravatar.com/avatar/080f47d912b1b34d0be8293f825d132d?d=identicon\u0026s=64",
      "cl": "318111@main",
      "clUrl": "https://commits.webkit.org/318111@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320506\nrdar://183470095\n\nReviewed by Yusuke Suzuki.\n\npas_scavenger_max_epoch_delta is unsigned, so assigning it a negative value\nwraps to near 2^64. The scavenger's epoch subtraction then underflows and\nclamps max_epoch to PAS_EPOCH_MIN, which admits almost no pages -- the opposite\nof the intended aggressive decommit. Use 0, which yields max_epoch equal to the\ncurrent epoch so every page qualifies, and which EpochIsCounter in TestHarness\nalready uses for the same purpose. Four scopes across two test files had the\nnegative value; none remains in the tree.\n\nVerified with temporary logging in the scavenger, sampling one in 200 passes over\na full run of the affected scopes:\n\n                   overflow   passes blocked by max_epoch   bytes decommitted\n  negative delta       yes              87%                      162 MB\n  delta = 0            no               20%                     3214 MB\n\nfrequent-scavenging 49/49, ScavengerExternalWork 2/2, testAllocationChaos\n252/252, AllocationZeroing 14/14.\n\n* Source/bmalloc/libpas/src/test/IsoHeapChaosTests.cpp:\n(std::addIsoTests):\n(std::addAllTests):\n* Source/bmalloc/libpas/src/test/ScavengerExternalWorkTests.cpp:\n(addScavengerExternalWorkTests):\n\nCanonical link: https://commits.webkit.org/318111@main",
      "email": "dan.hecht@apple.com",
      "hash": "f01297663d405f5f74796bde25933ff9230d560e",
      "subject": "[libpas] Fix frequent-scavenging test scopes decommitting almost nothing"
    },
    "318112@main": {
      "author": "Andres Gonzalez",
      "avatar": "https://www.gravatar.com/avatar/4e49c1280c6711bf7da7c7c121e013f6?d=identicon\u0026s=64",
      "cl": "318112@main",
      "clUrl": "https://commits.webkit.org/318112@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320427\n\u003crdar://problem/183385743\u003e\n\nReviewed by Tyler Wilcock.\n\nAccessibility text stitching combines a paragraph's inline text runs into a single\nrepresentative AXStaticText and removes the individual (stitched-away) runs from their\nparent's exposed children (see childrenAfterStitching in AXCoreObject.cpp). Because those\nmembers are no longer present in their parent's children, any AT-facing API that hands a\nsingle object back to the client must resolve a stitched-away member to its representative;\notherwise it exposes an element that cannot be found in the tree it is supposedly part of.\n\n309924@main added that resolution for the NSAccessibilityUIElementForTextMarker path\n(handleUIElementForTextMarkerAttribute), but the SelectedTextChanged notification posted by\npostTextSelectionChangePlatformNotification still targeted the stitched-away member. That\nnotification is the one an assistive client such as VoiceOver uses to follow the caret while\nthe user reads a read-only web document line by line with the arrow keys (for example, an\nHTML mail message body). When the caret lands inside a stitched-away run, the client is handed\nthe member object that stitching removed from its parent's children. On the next\nlayout-changed notification VoiceOver re-validates that its focused element is still among its\nparent's children, does not find it, concludes the focused element has been removed, and\nre-homes focus to the web area, re-announcing the entire message from the beginning. The\nAXUIElementForTextMarker fix did not cover this case because the element the client caches for\nthe caret comes from the selection-change notification, not from resolving a text marker.\n\nThis patch factors the \"resolve a stitched-away object to its representative\" step into a\nsingle shared helper, AXCoreObject::stitchRepresentativeOrSelf(), and routes both AT-facing\nsingle-object paths through it:\n\n    1. handleUIElementForTextMarkerAttribute now calls the helper, replacing the inline\n       resolution added in 309924@main.\n    2. postTextSelectionChangePlatformNotification calls the helper before building and posting\n       the notification, so the change element (NSAccessibilityTextChangeElement) and the\n       object the notification is posted on are the exposed representative.\n\nThe helper resolves the representative tree-agnostically via\nAXTextMarker { treeID(), representativeID, 0 }.object(), and returns the object itself when it\nis not stitched away, so it is a no-op for non-stitched content and behaves correctly on both\nthe main-thread and the isolated tree. Stitching's presentation is unchanged: the individual\nmembers are still removed from their parent's children, and only the single object handed to\nthe assistive client for the caret's position is corrected to the representative that is\nactually present in the tree. The selected-text-marker range carried in the notification is\nstill computed from the live selection, so the reported caret range is unaffected.\n\nThe new test moves the caret into a stitched-away run of a read-only paragraph using the\naccessibility selection API and verifies that the SelectedTextChanged change element is the\nrepresentative, whose value spans the whole run, rather than the individual member.\n\nTest: accessibility/mac/text-stitching-selection-notification-element.html\n\n* LayoutTests/accessibility/mac/text-stitching-selection-notification-element-expected.txt: Added.\n* LayoutTests/accessibility/mac/text-stitching-selection-notification-element.html: Added.\n* Source/WebCore/accessibility/AXCoreObject.cpp:\n(WebCore::AXCoreObject::stitchRepresentativeOrSelf):\n* Source/WebCore/accessibility/AXCoreObject.h:\n* Source/WebCore/accessibility/mac/AXObjectCacheMac.mm:\n(WebCore::AXObjectCache::postTextSelectionChangePlatformNotification):\n* Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.mm:\n(handleUIElementForTextMarkerAttribute):\n\nCanonical link: https://commits.webkit.org/318112@main",
      "email": "andresg_22@apple.com",
      "hash": "0c6fba63ba28ce7dcb2cc90e9afe32acbb488043",
      "subject": "AX: SelectedTextChanged should report the stitch representative, not a stitched-away text member"
    },
    "318113@main": {
      "author": "Dan Glastonbury",
      "avatar": "https://www.gravatar.com/avatar/fb7cb28bf9f1bc9fc0c3bbf65566efdc?d=identicon\u0026s=64",
      "cl": "318113@main",
      "clUrl": "https://commits.webkit.org/318113@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320142\nrdar://183081340\n\nReviewed by Alan Baradlay.\n\nSince out-of-flow/floating boxes don't participate in the inline/block\ndetermination that creates anonymous wrappers, removing an out-of-flow\npositioned or floating child cannot change whether the parent's in-flow children\nneed their anonymous wrappers.\n\nWhen removing many absolutely-positioned children from a large container,\nremoveAnonymousWrappersForInlineChildrenIfNeeded() scans all of the parent's\nchildren, so skipping it for out-of-flow removals avoids O(n) work per removed\nchild.\n\n* Source/WebCore/rendering/updating/RenderTreeBuilder.cpp:\n(WebCore::RenderTreeBuilder::destroyAndCleanUpAnonymousWrappers):\n* LayoutTests/fast/block/remove-out-of-flow-child-does-not-affect-anonymous-wrappers-expected.txt: Added.\n* LayoutTests/fast/block/remove-out-of-flow-child-does-not-affect-anonymous-wrappers.html: Added.\n\nCanonical link: https://commits.webkit.org/318113@main",
      "email": "djg@apple.com",
      "hash": "947e0ed57ed11d54e8a568748e8cfdc547251ac9",
      "subject": "Avoid recomputing anonymousWrappers on removal of out-of-flow elements."
    },
    "318114@main": {
      "author": "Aleksei Marchenko",
      "avatar": "https://www.gravatar.com/avatar/9a469093291c12531caccfcaa6ab73b1?d=identicon\u0026s=64",
      "cl": "318114@main",
      "clUrl": "https://commits.webkit.org/318114@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320168\nrdar://182292637 (Expand ModelPlayer interface for Multi-Model)\n\nReviewed by Etienne Segonzac.\n\nFoundational, behavior-preserving prep for Multi-Model: the per-model\nsurface of ModelPlayer / ModelPlayerClient (and the Model-process IPC)\nnow carries a WebCore::NodeIdentifier so one player can address a specific\nmodel. Also adds an unload(NodeIdentifier) entry point.\n\n* Source/WebCore/Modules/model-element/HTMLModelElement.cpp:\n(WebCore::HTMLModelElement::didFinishLoading):\n(WebCore::HTMLModelElement::didFailLoading):\n(WebCore::HTMLModelElement::didUpdateEntityTransform):\n(WebCore::HTMLModelElement::didUpdateBoundingBox):\n(WebCore::HTMLModelElement::createModelPlayer):\n(WebCore::HTMLModelElement::unloadModelPlayer):\n(WebCore::HTMLModelElement::reloadModelPlayer):\n(WebCore::HTMLModelElement::setEntityTransform):\n(WebCore::HTMLModelElement::setPlaybackRate):\n(WebCore::HTMLModelElement::duration const):\n(WebCore::HTMLModelElement::paused const):\n(WebCore::HTMLModelElement::setPaused):\n(WebCore::HTMLModelElement::updateAutoplay):\n(WebCore::HTMLModelElement::updateLoop):\n(WebCore::HTMLModelElement::currentTime const):\n(WebCore::HTMLModelElement::setCurrentTime):\n(WebCore::HTMLModelElement::isPlayingAnimation):\n(WebCore::HTMLModelElement::setAnimationIsPlaying):\n(WebCore::HTMLModelElement::isLoopingAnimation):\n(WebCore::HTMLModelElement::setIsLoopingAnimation):\n(WebCore::HTMLModelElement::animationDuration):\n(WebCore::HTMLModelElement::animationCurrentTime):\n(WebCore::HTMLModelElement::setAnimationCurrentTime):\n* Source/WebCore/Modules/model-element/HTMLModelElement.h:\n* Source/WebCore/Modules/model-element/ModelPlayer.cpp:\n(WebCore::ModelPlayer::currentAnimationState const):\n(WebCore::ModelPlayer::currentTransformState const):\n(WebCore::ModelPlayer::reload):\n(WebCore::ModelPlayer::unload):\n(WebCore::ModelPlayer::boundingBoxCenter const):\n(WebCore::ModelPlayer::boundingBoxExtents const):\n(WebCore::ModelPlayer::entityTransform const):\n(WebCore::ModelPlayer::setEntityTransform):\n(WebCore::ModelPlayer::setAutoplay):\n(WebCore::ModelPlayer::setLoop):\n(WebCore::ModelPlayer::setPlaybackRate):\n(WebCore::ModelPlayer::duration const):\n(WebCore::ModelPlayer::paused const):\n(WebCore::ModelPlayer::setPaused):\n(WebCore::ModelPlayer::currentTime const):\n(WebCore::ModelPlayer::setCurrentTime):\n* Source/WebCore/Modules/model-element/ModelPlayer.h:\n* Source/WebCore/Modules/model-element/ModelPlayerClient.h:\n* Source/WebCore/Modules/model-element/PlaceholderModelPlayer.cpp:\n(WebCore::PlaceholderModelPlayer::currentAnimationState const):\n(WebCore::PlaceholderModelPlayer::currentTransformState const):\n(WebCore::PlaceholderModelPlayer::load):\n(WebCore::PlaceholderModelPlayer::reload):\n(WebCore::PlaceholderModelPlayer::boundingBoxCenter const):\n(WebCore::PlaceholderModelPlayer::boundingBoxExtents const):\n(WebCore::PlaceholderModelPlayer::entityTransform const):\n(WebCore::PlaceholderModelPlayer::setEntityTransform):\n(WebCore::PlaceholderModelPlayer::setAutoplay):\n(WebCore::PlaceholderModelPlayer::setLoop):\n(WebCore::PlaceholderModelPlayer::setPlaybackRate):\n(WebCore::PlaceholderModelPlayer::duration const):\n(WebCore::PlaceholderModelPlayer::paused const):\n(WebCore::PlaceholderModelPlayer::setPaused):\n(WebCore::PlaceholderModelPlayer::currentTime const):\n(WebCore::PlaceholderModelPlayer::setCurrentTime):\n(WebCore::PlaceholderModelPlayer::isPlayingAnimation):\n(WebCore::PlaceholderModelPlayer::setAnimationIsPlaying):\n(WebCore::PlaceholderModelPlayer::isLoopingAnimation):\n(WebCore::PlaceholderModelPlayer::setIsLoopingAnimation):\n(WebCore::PlaceholderModelPlayer::animationDuration):\n(WebCore::PlaceholderModelPlayer::animationCurrentTime):\n(WebCore::PlaceholderModelPlayer::setAnimationCurrentTime):\n* Source/WebCore/Modules/model-element/PlaceholderModelPlayer.h:\n* Source/WebCore/Modules/model-element/dummy/DummyModelPlayer.cpp:\n(WebCore::DummyModelPlayer::load):\n(WebCore::DummyModelPlayer::isPlayingAnimation):\n(WebCore::DummyModelPlayer::setAnimationIsPlaying):\n(WebCore::DummyModelPlayer::isLoopingAnimation):\n(WebCore::DummyModelPlayer::setIsLoopingAnimation):\n(WebCore::DummyModelPlayer::animationDuration):\n(WebCore::DummyModelPlayer::animationCurrentTime):\n(WebCore::DummyModelPlayer::setAnimationCurrentTime):\n* Source/WebCore/Modules/model-element/dummy/DummyModelPlayer.h:\n* Source/WebKit/ModelProcess/cocoa/ModelProcessModelPlayerProxy.h:\n* Source/WebKit/ModelProcess/cocoa/ModelProcessModelPlayerProxy.messages.in:\n* Source/WebKit/ModelProcess/cocoa/ModelProcessModelPlayerProxy.mm:\n(WebKit::ModelProcessModelPlayerProxy::loadModel):\n(WebKit::ModelProcessModelPlayerProxy::reloadModel):\n(WebKit::ModelProcessModelPlayerProxy::notifyModelPlayerOfEntityTransformChange):\n(WebKit::ModelProcessModelPlayerProxy::animationPlaybackStateDidUpdate):\n(WebKit::ModelProcessModelPlayerProxy::didFinishLoading):\n(WebKit::ModelProcessModelPlayerProxy::didFailLoading):\n(WebKit::ModelProcessModelPlayerProxy::load):\n(WebKit::ModelProcessModelPlayerProxy::setEntityTransform):\n(WebKit::ModelProcessModelPlayerProxy::isPlayingAnimation):\n(WebKit::ModelProcessModelPlayerProxy::setAnimationIsPlaying):\n(WebKit::ModelProcessModelPlayerProxy::isLoopingAnimation):\n(WebKit::ModelProcessModelPlayerProxy::setIsLoopingAnimation):\n(WebKit::ModelProcessModelPlayerProxy::animationDuration):\n(WebKit::ModelProcessModelPlayerProxy::animationCurrentTime):\n(WebKit::ModelProcessModelPlayerProxy::setAnimationCurrentTime):\n(WebKit::ModelProcessModelPlayerProxy::setAutoplay):\n(WebKit::ModelProcessModelPlayerProxy::setLoop):\n(WebKit::ModelProcessModelPlayerProxy::setPlaybackRate):\n(WebKit::ModelProcessModelPlayerProxy::duration const):\n(WebKit::ModelProcessModelPlayerProxy::paused const):\n(WebKit::ModelProcessModelPlayerProxy::setPaused):\n(WebKit::ModelProcessModelPlayerProxy::currentTime const):\n(WebKit::ModelProcessModelPlayerProxy::setCurrentTime):\n(WebKit::ModelProcessModelPlayerProxy::captureStateForReload):\n(WebKit::ModelProcessModelPlayerProxy::ensureImmersivePresentation):\n(WebKit::ModelProcessModelPlayerProxy::exitImmersivePresentation):\n* Source/WebKit/WebProcess/Model/ModelProcessModelPlayer.cpp:\n(WebKit::ModelProcessModelPlayer::didFinishLoading):\n(WebKit::ModelProcessModelPlayer::didFailLoading):\n(WebKit::ModelProcessModelPlayer::didUpdateEntityTransform):\n(WebKit::ModelProcessModelPlayer::didUpdateAnimationPlaybackState):\n(WebKit::ModelProcessModelPlayer::currentAnimationState const):\n(WebKit::ModelProcessModelPlayer::currentTransformState const):\n(WebKit::ModelProcessModelPlayer::load):\n(WebKit::ModelProcessModelPlayer::reload):\n(WebKit::ModelProcessModelPlayer::boundingBoxCenter const):\n(WebKit::ModelProcessModelPlayer::boundingBoxExtents const):\n(WebKit::ModelProcessModelPlayer::entityTransform const):\n(WebKit::ModelProcessModelPlayer::setEntityTransform):\n(WebKit::ModelProcessModelPlayer::isPlayingAnimation):\n(WebKit::ModelProcessModelPlayer::setAnimationIsPlaying):\n(WebKit::ModelProcessModelPlayer::isLoopingAnimation):\n(WebKit::ModelProcessModelPlayer::setIsLoopingAnimation):\n(WebKit::ModelProcessModelPlayer::animationDuration):\n(WebKit::ModelProcessModelPlayer::animationCurrentTime):\n(WebKit::ModelProcessModelPlayer::setAnimationCurrentTime):\n(WebKit::ModelProcessModelPlayer::setAutoplay):\n(WebKit::ModelProcessModelPlayer::setLoop):\n(WebKit::ModelProcessModelPlayer::setPlaybackRate):\n(WebKit::ModelProcessModelPlayer::duration const):\n(WebKit::ModelProcessModelPlayer::paused const):\n(WebKit::ModelProcessModelPlayer::setPaused):\n(WebKit::ModelProcessModelPlayer::currentTime const):\n(WebKit::ModelProcessModelPlayer::setCurrentTime):\n* Source/WebKit/WebProcess/Model/ModelProcessModelPlayer.h:\n* Source/WebKit/WebProcess/Model/ModelProcessModelPlayer.messages.in:\n* Source/WebKit/WebProcess/Model/WebModelPlayer.h:\n* Source/WebKit/WebProcess/Model/WebModelPlayer.mm:\n(WebKit::WebModelPlayer::duration const):\n(WebKit::WebModelPlayer::load):\n(WebKit::WebModelPlayer::notifyEntityTransformUpdated):\n(WebKit::WebModelPlayer::handleMouseDown):\n(WebKit::WebModelPlayer::isPlayingAnimation):\n(WebKit::WebModelPlayer::setAnimationIsPlaying):\n(WebKit::WebModelPlayer::isLoopingAnimation):\n(WebKit::WebModelPlayer::setIsLoopingAnimation):\n(WebKit::WebModelPlayer::animationDuration):\n(WebKit::WebModelPlayer::animationCurrentTime):\n(WebKit::WebModelPlayer::setAnimationCurrentTime):\n(WebKit::WebModelPlayer::setPlaybackRate):\n(WebKit::WebModelPlayer::update):\n(WebKit::WebModelPlayer::notifyClientDidFinishLoading):\n(WebKit::WebModelPlayer::play):\n(WebKit::WebModelPlayer::setLoop):\n(WebKit::WebModelPlayer::setAutoplay):\n(WebKit::WebModelPlayer::setPaused):\n(WebKit::WebModelPlayer::paused const):\n(WebKit::WebModelPlayer::currentTime const):\n(WebKit::WebModelPlayer::setCurrentTime):\n(WebKit::WebModelPlayer::entityTransform const):\n(WebKit::WebModelPlayer::setEntityTransform):\n(WebKit::WebModelPlayer::visibilityStateDidChange):\n(WebKit::WebModelPlayer::reload):\n(WebKit::WebModelPlayer::currentAnimationState const):\n(WebKit::WebModelPlayer::currentTransformState const):\n(WebKit::WebModelPlayer::dynamicRangeLimitDidChange):\n\nCanonical link: https://commits.webkit.org/318114@main",
      "email": "aleksei@apple.com",
      "hash": "8c75aadf564cab15d87f0b76e64c3b219bb63f40",
      "subject": "Make ModelPlayer node-addressable for Multi-Model"
    },
    "318115@main": {
      "author": "Sammy Gill",
      "avatar": "https://www.gravatar.com/avatar/715a3cfee5d85ee90ccfdaa2a4a7a5a3?d=identicon\u0026s=64",
      "cl": "318115@main",
      "clUrl": "https://commits.webkit.org/318115@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320492\nrdar://problem/183458460\n\nReviewed by Taher Ali.\n\nWhen a grid item is relatively positioned and has a percentage inset we\nneed to resolve the percent against the item's grid area. This\ninformation is needed after layout but we currently have no way to\nrecompute this and it is not stored anywhere so let's not run GFC while\nwe figure this out.\n\nCanonical link: https://commits.webkit.org/318115@main",
      "email": "sammy.gill@apple.com",
      "hash": "690d4e5d080bf880c5cb73d2e777fc5de3d3ac05",
      "subject": "[GFC][Integration] Bail out of GFC for relatively positioned grid items with a percentage offset"
    },
    "318116@main": {
      "author": "Sammy Gill",
      "avatar": "https://www.gravatar.com/avatar/715a3cfee5d85ee90ccfdaa2a4a7a5a3?d=identicon\u0026s=64",
      "cl": "318116@main",
      "clUrl": "https://commits.webkit.org/318116@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320494\nrdar://problem/183459336\n\nReviewed by Taher Ali.\n\nIn order to do this we need to slightly refactor the code so that we can\nrun the \"Find the size of the grid container,\" portion of the spec\ncompletely before the \"Given the resulting grid container size, run the\nGrid Sizing Algorithm to size the grid,\" portion of the Grid Layout\nAlgorithm:\nhttps://drafts.csswg.org/css-grid-1/#layout-algorithm\n\nCurrently these two steps are coupled together so while we work this out\nlet's just make sure we don't run GFC if we hit this type of content.\n\nCanonical link: https://commits.webkit.org/318116@main",
      "email": "sammy.gill@apple.com",
      "hash": "a4ea1ffe4be96e5adbf47ffa220d845a155af2ff",
      "subject": "[GFC] Bail out of GFC for grids with percentage rows and an indefinite block size"
    },
    "318117@main": {
      "author": "Said Abou-Hallawa",
      "avatar": "https://www.gravatar.com/avatar/ae80a929a378a055822829ae63903296?d=identicon\u0026s=64",
      "cl": "318117@main",
      "clUrl": "https://commits.webkit.org/318117@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=316242\nrdar://183373661\n\nReviewed by Tim Nguyen.\n\nUpstream the directroies:\n\thtml/canvas/element/manual/draw-element-image\n\thtml/canvas/offscreen/manual/draw-element-image\n\n* LayoutTests/imported/w3c/resources/resource-files.json:\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/anchor-positioning-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/anchor-positioning.tentative-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/anchor-positioning.tentative.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/animated-gif-pinned-to-element-image.tentative.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/animated-gif-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/animated-gif.tentative.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/backdrop-filter-bounds-expansion.tentative.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/backdrop-filter-nested-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/backdrop-filter-nested.tentative-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/backdrop-filter-nested.tentative.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/backdrop-filter-rounded-bounds-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/backdrop-filter-rounded-bounds.tentative-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/backdrop-filter-rounded-bounds.tentative.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/basic-rect-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/basic-rect-zoom.tentative-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/basic-rect-zoom.tentative.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/basic-rect.tentative-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/basic-rect.tentative.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/broken-image-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/broken-image.tentative-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/broken-image.tentative.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/canvas-in-custom-element-multiple-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/canvas-in-custom-element-multiple.tentative-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/canvas-in-custom-element-multiple.tentative.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/canvas-in-custom-element.tentative-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/canvas-in-custom-element.tentative.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/captureElementImage.tentative.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/changes-in-paint-event-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/changes-in-paint-event.tentative-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/changes-in-paint-event.tentative.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/changing-size-in-paint-event-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/changing-size-in-paint-event.tentative-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/changing-size-in-paint-event.tentative.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/clips-overflow-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/clips-overflow.tentative-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/clips-overflow.tentative.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/compositing-descendant-filter-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/compositing-descendant-filter.tentative-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/compositing-descendant-filter.tentative.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/compositing-op-basic-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/compositing-op-basic.tentative-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/compositing-op-basic.tentative.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/compositing-op-non-opaque-element-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/compositing-op-non-opaque-element.tentative-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/compositing-op-non-opaque-element.tentative.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/containment.tentative.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/css-backdrop-filter-and-mask-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/css-backdrop-filter-and-mask.tentative-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/css-backdrop-filter-and-mask.tentative.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/css-backdrop-filter-image-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/css-backdrop-filter-image.tentative-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/css-backdrop-filter-image.tentative.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/css-backdrop-filter-on-div-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/css-backdrop-filter-on-div.tentative-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/css-backdrop-filter-on-div.tentative.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/css-backdrop-filter-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/css-backdrop-filter-with-sibling-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/css-backdrop-filter-with-sibling.tentative-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/css-backdrop-filter-with-sibling.tentative.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/css-backdrop-filter.tentative-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/css-backdrop-filter.tentative.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/css-blend-mode-over-both-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/css-blend-mode-over-both.tentative-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/css-blend-mode-over-both.tentative.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/css-blend-mode-over-content.tentative-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/css-blend-mode-over-content.tentative.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/css-blend-mode-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/css-blend-mode.tentative-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/css-blend-mode.tentative.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/css-blur-filter-on-div-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/css-blur-filter-on-div.tentative-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/css-blur-filter-on-div.tentative.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/css-clip-path-on-div-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/css-clip-path-on-div.tentative-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/css-clip-path-on-div.tentative.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/css-filter-image-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/css-filter-image.tentative-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/css-filter-image.tentative.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/css-filter-on-div-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/css-filter-on-div.tentative-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/css-filter-on-div.tentative.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/css-filter-reference-on-div-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/css-filter-reference-on-div.tentative-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/css-filter-reference-on-div.tentative.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/css-mask-on-div-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/css-mask-on-div.tentative-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/css-mask-on-div.tentative.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/css-opacity-on-div-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/css-opacity-on-div.tentative-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/css-opacity-on-div.tentative.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/css-transform-on-div-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/css-transform-on-div.tentative-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/css-transform-on-div.tentative.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/dialog-paints-in-top-layer-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/dialog-paints-in-top-layer.tentative-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/dialog-paints-in-top-layer.tentative.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/draw-element-different-canvas.tentative.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/draw-element-image-detached.tentative.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/draw-element-image-different-canvas.tentative.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/draw-element-image-display-none.tentative.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/draw-element-image-empty.tentative.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/draw-element-image-get-image-data.tentative.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/draw-element-image-returned-matrix.tentative.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/draw-element-image-scale-variant-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/draw-element-image-scale-variant.tentative-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/draw-element-image-scale-variant.tentative.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/drawElementImage-zero-size.tentative.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/drawing-display-none-fails.tentative.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/element-image-fractional-size.tentative.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/element-shadow-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/element-shadow.tentative-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/element-shadow.tentative.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/error-conditions.tentative.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/filtered-basic-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/filtered-basic.tentative-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/filtered-basic.tentative.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/fullscreen-canvas-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/fullscreen-canvas.tentative-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/fullscreen-canvas.tentative.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/fullscreen-child-crash.tentative.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/fullscreen-crash.tentative.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/get-element-transform.tentative.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/global-alpha-basic-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/global-alpha-basic.tentative-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/global-alpha-basic.tentative.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/hit-test/elementsFromPoint-no-layoutsubtree.tentative.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/hit-test/elementsFromPoint.tentative.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/hit-test/low-dpi-hit-test.tentative.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/hit-test/selection.tentative.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/hit-test/w3c-import.log: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/hit-test/z-index.tentative.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/iframe-local.tentative-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/iframe-local.tentative.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/iframe-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/iframe.tentative-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/iframe.tentative.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/ink-overflow-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/ink-overflow.tentative-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/ink-overflow.tentative.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/intersection-observer-visibility.tentative.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/invalidation-during-onpaint-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/invalidation-during-onpaint.tentative-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/invalidation-during-onpaint.tentative.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/layout-canvas-children.tentative.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/layoutsubtree-no-hit-test.tentative.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/moved-nested-layoutsubtree-canvas.tentative.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/nested-canvas-invalidation-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/nested-canvas-invalidation.tentative-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/nested-canvas-invalidation.tentative.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/nested-canvas-not-rendered-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/nested-canvas-not-rendered.tentative-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/nested-canvas-not-rendered.tentative.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/nested-canvas-reset-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/nested-canvas-reset.tentative-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/nested-canvas-reset.tentative.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/nested-div-layoutsubtree-canvas.tentative.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/nested-layoutsubtree-canvas.tentative.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/non-opaque-element-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/non-opaque-element.tentative-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/non-opaque-element.tentative.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/onpaint-after-scroll-2.tentative.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/onpaint-after-scroll.tentative.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/onpaint-changedElements.tentative.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/onpaint-css-animation.tentative.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/onpaint-fires-post-intersection-observation-steps.tentative.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/onpaint-fires-post-resize-observer.tentative.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/onpaint-iframe.tentative.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/onpaint-invalidation-crash.tentative.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/onpaint-outside-invalidation-crash.tentative.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/onpaint-post-tree-order.tentative.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/onpaint-scroll-crash.tentative.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/onpaint-zindex.tentative.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/onpaint.tentative.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/opacity-animation-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/opacity-animation.tentative-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/opacity-animation.tentative.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/percent-sizing.tentative-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/percent-sizing.tentative.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/position-anchor-crash.tentative.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/privacy/backdrop-filter-png-images-ignored.tentative.https.sub.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/privacy/background-image-in-iframe-ignored.tentative.https.sub.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/privacy/background-png-images-ignored.tentative.https.sub.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/privacy/background-svg-images-ignored.tentative.https.sub.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/privacy/border-png-images-ignored.tentative.https.sub.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/privacy/border-svg-images-ignored.tentative.https.sub.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/privacy/box-mask-png-ignored.tentative.https.sub.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/privacy/box-mask-svg-ignored.tentative.https.sub.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/privacy/box-reflect-images-ignored.tentative.https.sub.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/privacy/canvas-in-custom-element-images-ignored.tentative.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/privacy/embed-image-ignored.tentative.https.sub.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/privacy/filtered-div-multi-filters-ignored.tentative.https.sub.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/privacy/filtered-div-ref-external-svg-ignored.tentative.https.sub.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/privacy/filtered-div-ref-svg-feimage-ignored.tentative.https.sub.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/privacy/filtered-div-ref-svg-feimage-svg-ignored.tentative.https.sub.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/privacy/filtered-div-ref-svg-mixed-ignored.tentative.https.sub.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/privacy/filtered-svg-ref-svg-feimage-ignored.tentative.https.sub.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/privacy/filtered-svg-ref-svg-feimage-svg-ignored.tentative.https.sub.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/privacy/fragment-mask-png-ignored.tentative.https.sub.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/privacy/fragment-mask-svg-ignored.tentative.https.sub.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/privacy/html-images-cors-allowed.tentative.https.sub.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/privacy/html-images-ignored.tentative.https.sub.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/privacy/iframe-sandbox-ignored.tentative.https.sub.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/privacy/iframes-ignored.tentative.https.sub.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/privacy/nested-tainted-canvas-ignored.tentative.https.sub.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/privacy/nested-tainted-html-in-canvas-ignored.tentative.https.sub.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/privacy/object-image-ignored.tentative.https.sub.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/privacy/picture-images-ignored.tentative.https.sub.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/privacy/scrollbar-thumb-images-ignored.tentative.https.sub.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/privacy/selection-alone-with-decorations-painted-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/privacy/selection-alone-with-decorations-painted.tentative-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/privacy/selection-alone-with-decorations-painted.tentative.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/privacy/selection-colors-default-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/privacy/selection-colors-default.tentative-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/privacy/selection-colors-default.tentative.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/privacy/selection-painted-overlay-path-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/privacy/selection-painted-overlay-path.tentative-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/privacy/selection-painted-overlay-path.tentative.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/privacy/shape-image-png-ignored.tentative.https.sub.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/privacy/shape-image-svg-ignored.tentative.https.sub.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/privacy/subframe-cross-origin-background-image.tentative.https.sub.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/privacy/subframe-cross-origin-frame.tentative.https.sub.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/privacy/subframe-cross-origin-html-images.tentative.https.sub.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/privacy/support/CanvasWidgetWithImages.https.sub.js: Added.\n(CanvasWidget):\n(CanvasWidget.prototype.async connectedCallback):\n(CanvasWidget.prototype.setupEventListeners):\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/privacy/support/iframe-blue.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/privacy/support/sandboxed-iframe-red.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/privacy/support/sandboxed-iframe-red.html.headers: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/privacy/support/subframe-cross-origin-background-image.https.sub.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/privacy/support/subframe-with-canvas-background-png-images.https.sub.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/privacy/support/subframe-with-canvas-html-images.https.sub.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/privacy/support/subframe-with-canvas-iframe.https.sub.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/privacy/support/w3c-import.log: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/privacy/svg-images-ignored.tentative.https.sub.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/privacy/svg-mask-filter.tentative.https.sub.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/privacy/svg-pattern-cross-origin-image.tentative.https.sub.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/privacy/svg-pattern-with-feImage-cross-origin-image.tentative.https.sub.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/privacy/svg-use-ignored.tentative.https.sub.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/privacy/target-text-ignored-overlay-path-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/privacy/target-text-ignored-overlay-path.tentative-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/privacy/target-text-ignored-overlay-path.tentative.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/privacy/video-ignored.tentative.https.sub.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/privacy/visited-link-color-ignored.tentative.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/privacy/visited-link-currentcolor-ignored.tentative.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/privacy/visited-link-decoration-color-ignored.tentative.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/privacy/visited-link-slotted-color-ignored.tentative.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/privacy/visited-link-svg-fill-stroke-color-ignored.tentative.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/privacy/w3c-import.log: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/requestPaint.tentative.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/resources/CanvasWidget.js: Added.\n(CanvasWidget):\n(CanvasWidget.prototype.connectedCallback):\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/resources/iframe-subframe-green.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/resources/iframe-subframe-red.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/resources/left-half-mask-50.svg: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/resources/rgb100.gif: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/resources/w3c-import.log: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/ruby-canvas-crash.tentative.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/scale-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/scale.tentative-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/scale.tentative.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/scroller-crash.tentative.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/shadow-basic-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/shadow-basic.tentative-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/shadow-basic.tentative.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/shadow-dom-slot-canvas-child.tentative-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/shadow-dom-slot-canvas-child.tentative.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/shadow-dom-slotted-moveBefore.tentative-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/shadow-dom-slotted-moveBefore.tentative.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/shadow-dom-slotted.tentative-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/shadow-dom-slotted.tentative.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/shadow-non-opaque-element-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/shadow-non-opaque-element.tentative-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/shadow-non-opaque-element.tentative.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/svg-foreign-object.tentative-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/svg-foreign-object.tentative.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/svg-rect.tentative-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/svg-rect.tentative.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/top-layer-not-painted-in-canvas-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/top-layer-not-painted-in-canvas.tentative-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/top-layer-not-painted-in-canvas.tentative.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/triple-nested-layoutsubtree-canvas.tentative.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/video.tentative.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/w3c-import.log: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/offscreen/manual/draw-element-image/animated-gif-worker.tentative.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/offscreen/manual/draw-element-image/drawElementImage-returned-matrix-worker.tentative.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/offscreen/manual/draw-element-image/ink-overflow-worker-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/offscreen/manual/draw-element-image/ink-overflow-worker.tentative-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/offscreen/manual/draw-element-image/ink-overflow-worker.tentative.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/offscreen/manual/draw-element-image/offscreenCanvas-drawElementImage-worker.tentative.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/offscreen/manual/draw-element-image/offscreenCanvas-drawElementImage.tentative.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/offscreen/manual/draw-element-image/resources/rgb100.gif: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/offscreen/manual/draw-element-image/resources/w3c-import.log: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/offscreen/manual/draw-element-image/scale-worker-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/offscreen/manual/draw-element-image/scale-worker.tentative-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/offscreen/manual/draw-element-image/scale-worker.tentative.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/offscreen/manual/draw-element-image/video-worker.tentative.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/offscreen/manual/draw-element-image/w3c-import.log: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/resources/canvas-grid-reftest.css: Added.\n(h1):\n(.grid-container):\n(.grid-cell-content):\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/resources/canvas-promise-test-worker.js: Added.\n(canvasPromiseTest):\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/resources/canvas-promise-test.js: Added.\n(setup):\n(createHTMLCanvasElement):\n(canvasPromiseTest):\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/resources/canvas-tests.js:\n(_getPixelFromImageData):\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/resources/color-grid-component.js: Added.\n(ColorGrid):\n(ColorGrid.prototype.connectedCallback):\n(ColorGridSRGB):\n(ColorGridDisplayP3):\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/resources/draw-element-image-styles.css: Added.\n(.css-is-awesome):\n(.css-is-awesome::before):\n(.draw-element-wrapper):\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/resources/draw-element-image-utils.js: Added.\n(resizeToPixelGrid):\n(computeExplicitDestinationSize):\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/resources/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/resources/wait-for-canvas-paint.js: Added.\n(waitForCanvasPaint):\n* LayoutTests/TestExpectations:\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/hit-test/elementsFromPoint-no-layoutsubtree.tentative-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/layoutsubtree-no-hit-test.tentative-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/draw-element-image/onpaint-zindex.tentative-expected.txt: Added.\n\nCanonical link: https://commits.webkit.org/318117@main",
      "email": "said@apple.com",
      "hash": "833c2b2bbda4294da3b5a9b9c57d1805cc2e4d7b",
      "subject": "[HTML-in-Canvas] Import HTML-inCanvas WPT tests"
    },
    "318118@main": {
      "author": "Lauro Moura",
      "avatar": "https://www.gravatar.com/avatar/6157f52d61e04c2c63fe7ff668ba69b3?d=identicon\u0026s=64",
      "cl": "318118@main",
      "clUrl": "https://commits.webkit.org/318118@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=184967\n\nUnreviewed test gardening.\n\nGardening most of the existing input/action-related failures. This\nincludes a few drive-by pointer failures related to bug270895.\n\n* WebDriverTests/TestExpectations.json:\n\nCanonical link: https://commits.webkit.org/318118@main",
      "email": "lmoura@igalia.com",
      "hash": "04cd6bdd67f6fc7443dc03a5e2072d3b303f46ea",
      "subject": "WebDriver: several tests are still failing after initial implementation of advance user interactions"
    },
    "318119@main": {
      "author": "Lily Spiniolas",
      "avatar": "https://www.gravatar.com/avatar/b65cfeb51301399bd50e338bb2d7613e?d=identicon\u0026s=64",
      "cl": "318119@main",
      "clUrl": "https://commits.webkit.org/318119@main",
      "description": "https://webkit.org/b/320261\nrdar://183153900\n\nReviewed by Tim Nguyen.\n\nAdd foundation for Accessibility Custom Color Mode.\n\n* Source/WTF/Scripts/Preferences/UnifiedWebPreferences.yaml:\n* Source/WebCore/dom/Document.cpp:\n(WebCore::Document::adjustStyleColorOptionsIfNeeded const):\n(WebCore::Document::styleColorOptions const):\n* Source/WebCore/dom/Document.h:\n* Source/WebCore/loader/cache/CachedImage.cpp:\n(WebCore::CachedImage::clearImage):\n(WebCore::CachedImage::axCustomColorModeAdjustedTile const):\n(WebCore::CachedImage::setAXCustomColorModeAdjustedTile):\n* Source/WebCore/loader/cache/CachedImage.h:\n* Source/WebCore/page/LocalFrameView.cpp:\n(WebCore::LocalFrameView::performPostLayoutTasks):\n* Source/WebCore/rendering/BackgroundPainter.cpp:\n(WebCore::applyBoxShadowForBackground):\n(WebCore::BackgroundPainter::paintFillLayerImpl const):\n(WebCore::BackgroundPainter::paintBoxShadow const):\n* Source/WebCore/rendering/RenderImage.cpp:\n(WebCore::RenderImage::imageChanged):\n(WebCore::RenderImage::paintIntoRect):\n* Source/WebCore/rendering/RenderImage.h:\n* Source/WebCore/rendering/RenderView.cpp:\n* Source/WebCore/rendering/RenderView.h:\n* Source/WebCore/style/StyleAdjuster.cpp:\n(WebCore::Style::Adjuster::adjust const):\n* Source/WebCore/style/StyleAdjuster.h:\n* Source/WebCore/style/values/color/StyleColorOptions.cpp:\n(WebCore::operator\u003c\u003c):\n* Source/WebCore/style/values/color/StyleColorOptions.h:\n* Source/WebCore/style/values/images/kinds/StyleGradientImage.h:\n* Source/WebKit/UIProcess/API/Cocoa/WKPreferences.mm:\n(-[WKPreferences _setAXCustomColorModeEnabled:]):\n(-[WKPreferences _axCustomColorModeEnabled]):\n* Source/WebKit/UIProcess/API/Cocoa/WKPreferencesPrivate.h:\n\nCanonical link: https://commits.webkit.org/318119@main",
      "email": "lily_spiniolas@apple.com",
      "hash": "2c2a4add5574c8388732a753dd1841715ed15fc4",
      "subject": "Add foundation for Accessibility Custom Color Mode"
    },
    "318120@main": {
      "author": "Zak Ridouh",
      "avatar": "https://www.gravatar.com/avatar/d9b65ef530b9cbbfc6dff1ca158faace?d=identicon\u0026s=64",
      "cl": "318120@main",
      "clUrl": "https://commits.webkit.org/318120@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320505\nrdar://183469399\n\nReviewed by Elliott Williams.\n\nLayerHostingContextManager.mm and RemoteSampleBufferDisplayLayer.mm call\n-addLayerHierarchy: and -commit on a BELayerHierarchyHostingTransactionCoordinator,\nbut LayerHostingContext.h only forward-declares that class. Both files were\ngetting the declarations from a unified source bundle neighbor,\nLayerHostingContext.mm, which imports the BrowserEngineKit headers itself.\n\nMerging the Mac and iOS ports into Cocoa in 318097@main shifted the unified\nbundle boundaries and split LayerHostingContextManager.mm off from\nLayerHostingContext.mm, breaking the iOS CMake build with -Wobjc-method-access.\nRemoteSampleBufferDisplayLayer.mm still builds today, but is fragile for the same\nreason.\n\nImport the headers both files actually depend on instead of relying on bundle\nlayout.\n\n* Source/WebKit/GPUProcess/webrtc/RemoteSampleBufferDisplayLayer.mm:\n* Source/WebKit/Platform/cocoa/LayerHostingContextManager.mm:\n\nCanonical link: https://commits.webkit.org/318120@main",
      "email": "zakr@apple.com",
      "hash": "81347effc2a82d24c89222190079a6dbe7315ac1",
      "subject": "[CMake][Cocoa] Import BrowserEngineKit headers where BELayerHierarchy is used"
    },
    "318121@main": {
      "author": "Per Arne Vollan",
      "avatar": "https://www.gravatar.com/avatar/644dde5b61925a175f4bdea3f0f00bda?d=identicon\u0026s=64",
      "cl": "318121@main",
      "clUrl": "https://commits.webkit.org/318121@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=318532\nrdar://181301368\n\nReviewed by Alex Christensen.\n\nTo avoid code duplication, create methods to get Darwin temp and cache directories.\nThis is in preparation of upcoming work.\n\n* Source/WTF/wtf/FileSystem.h:\n* Source/WTF/wtf/cocoa/FileSystemCocoa.mm:\n(WTF::FileSystemImpl::darwinCacheDirectory):\n(WTF::FileSystemImpl::darwinTempDirectory):\n* Source/WebKit/Shared/mac/AuxiliaryProcessMac.mm:\n(WebKit::sandboxDataVaultParentDirectory):\n\nCanonical link: https://commits.webkit.org/318121@main",
      "email": "pvollan@apple.com",
      "hash": "158f737725b773d4919f9d583052ecef88714d33",
      "subject": "Create methods to get Darwin temp and cache directories"
    },
    "318122@main": {
      "author": "Marcos Caceres",
      "avatar": "https://www.gravatar.com/avatar/d31c9c6a3b0af558a2945682020e5b90?d=identicon\u0026s=64",
      "cl": "318122@main",
      "clUrl": "https://commits.webkit.org/318122@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319583\nrdar://problem/182412996\n\nReviewed by Abrar Rahman Protyasha.\n\nget() serialized the requested credentials, which can reject with a TypeError,\nbefore consuming the document's transient activation. A page could therefore\nprobe whether its request data was serializable without spending its user\nactivation. Filter the requests down to those with a supported protocol first,\nreject with a TypeError if none remain, then consume transient activation, and\nonly then serialize the surviving requests.\n\nAligns with the Digital Credentials specification change in\nhttps://github.com/w3c-fedid/digital-credentials/pull/558.\n\n* LayoutTests/imported/w3c/web-platform-tests/digital-credentials/user-activation-get.https-expected.txt:\n* LayoutTests/platform/ios/imported/w3c/web-platform-tests/digital-credentials/get.https-expected.txt:\n* Source/WebCore/Modules/identity/DigitalCredential.cpp:\n(WebCore::DigitalCredential::discoverFromExternalSource):\n\nCanonical link: https://commits.webkit.org/318122@main",
      "email": "marcosc@apple.com",
      "hash": "6f080b99cb9bc24d70ce427426221eff0eefe9e2",
      "subject": "Digital Credentials get() should consume transient activation before serializing requests"
    },
    "318123@main": {
      "author": "Alan Baradlay",
      "avatar": "https://www.gravatar.com/avatar/788d66417db806c567552cfa1ae89f77?d=identicon\u0026s=64",
      "cl": "318123@main",
      "clUrl": "https://commits.webkit.org/318123@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320493\n\nReviewed by Antti Koivisto.\n\nFlexIntegrationUtils called back into LayoutIntegration::FlexLayout by fishing it out of the renderer --\nflexBox().flexLayout() -- to ask the CSS Flexbox 9.8 percentage-resolution questions. The formatting context owns\nthe FlexIntegrationUtils it asks through, and FlexLayout owns the formatting context, so that reach ran backwards\nthrough the renderer to get at the layer above.\n\nThose questions only need one piece of state: the FlexLayoutState the running algorithm holds. flexItemMainSizeIsDefinite\nis otherwise a function of its size argument and FlexFormattingUtils statics, and the state is used two ways at the\nbottom of the chain -- as the container's cached block-size definiteness, and as the signal for whether the algorithm\nis running at all (what isInLayout() answered).\n\nSo move the chain to FlexIntegrationUtils as statics taking a const FlexLayoutState*, where nullptr means the\nalgorithm is not running. The flex container comes from the item's parent, as it does throughout FlexFormattingUtils.\nFlexIntegrationUtils already holds a reference to the very FlexLayoutState that FlexLayout owns -- the formatting\ncontext hands it over at construction -- so its instance wrappers pass that, and FlexLayout passes its optional's\naddress or nullptr. The state moves from being reached for to being handed in.\n\nFlexLayout keeps hasDefiniteSizeForPercentResolution, which is the one caller that made this awkward: RenderFlexibleBox\nasks it from layout passes with no formatting context on the stack, when no FlexIntegrationUtils exists. It is now a\nforwarder, and the three helpers behind it leave FlexLayout's surface along with isInLayout().\n\nThat leaves RenderFlexibleBox::flexLayout() with no callers, so remove it. Nothing can take the integration layer off\nthe renderer now.\n\n* Source/WebCore/layout/integration/flex/FlexIntegrationUtils.cpp:\n(WebCore::LayoutIntegration::FlexIntegrationUtils::computeBlockAxisContentSizeForFlexItem):\n(WebCore::LayoutIntegration::FlexIntegrationUtils::flexItemMainSizeIsDefinite):\n(WebCore::LayoutIntegration::FlexIntegrationUtils::isFlexBoxBlockSizeDefiniteForFlexItem):\n(WebCore::LayoutIntegration::FlexIntegrationUtils::canResolvePercentAgainstContainerBlockSize):\n* Source/WebCore/layout/integration/flex/FlexIntegrationUtils.h:\n* Source/WebCore/layout/integration/flex/LayoutIntegrationFlexLayout.cpp:\n(WebCore::LayoutIntegration::FlexLayout::hasDefiniteSizeForPercentResolution):\n(WebCore::LayoutIntegration::FlexLayout::flexItemMainSizeIsDefinite): Deleted.\n(WebCore::LayoutIntegration::FlexLayout::isFlexBoxBlockSizeDefiniteForFlexItem): Deleted.\n(WebCore::LayoutIntegration::FlexLayout::canResolvePercentAgainstContainerBlockSize): Deleted.\n* Source/WebCore/layout/integration/flex/LayoutIntegrationFlexLayout.h:\n* Source/WebCore/rendering/RenderFlexibleBox.h:\n(WebCore::RenderFlexibleBox::flexLayout): Deleted.\n\nCanonical link: https://commits.webkit.org/318123@main",
      "email": "zalan@apple.com",
      "hash": "25cfac7b1b15dc8bf5d77b061075d49cbcc63d64",
      "subject": "[cleanup] Stop reaching the flex integration layer through the renderer"
    },
    "318124@main": {
      "author": "Frédéric Wang Nélar",
      "avatar": "https://www.gravatar.com/avatar/2c634be4515bda5959ed1d7138b17d48?d=identicon\u0026s=64",
      "cl": "318124@main",
      "clUrl": "https://commits.webkit.org/318124@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=315416\nrdar://183308318\n\nReviewed by Chris Dumez.\n\nhttps://github.com/WebKit/WebKit/pull/9665 introduced a new version of\nStorage::traverse that accepts a cache partition argument to traverse\nonly the cache entries corresponding to that partition. This is done by\npassing the subdirectory corresponding to that partition on the disk\nas a rootPath argument to Storage::traverseWithinRootPath and that\nends up using that subdirectory as a recordsPath argument for\nStorage::traverseRecordsFiles. However, that latter function actually\nexpects recordsPath to be the root of Records files, since it\ntraverses all the subdirectories as if they were cache partitions.\n\nCurrently, this code is only hit by the version of Cache::traverse that\nacccepts a partition argument, which is itself only used by\nNetworkProcess::deleteWebsiteDataForOrigin and finally\nby NetworkResourceLoader::processClearSiteDataHeader. So that regression\nfrom 2023 only affects Clear-Site-Data: \"cache\".\n\nThis bug can be manually tested with some simple steps from the command\nline: https://bugs.webkit.org/show_bug.cgi?id=315416#c1. This method to\ntraverse cache entries per-partition is also critically used to\nimplement Compression Dictionary Transport and is covered by many WPT\ntests from fetch/compression-dictionary. However, we don't implement\nthis yet, see bug 295249.\n\nNo new tests, verified manually and covered by WPT tests.\n\n* Source/WebKit/NetworkProcess/cache/NetworkCacheStorage.cpp:\n(WebKit::NetworkCache::traversePartitionFiles): New traverse function that accepts a partition path as an argument.\n(WebKit::NetworkCache::traverseRecordsFiles): New function that accepts the root of Records as an argument and calls traversePartitionFiles on all subdirectories.\n(WebKit::NetworkCache::Storage::traverseWithinRootPath): Deleted.\n(WebKit::NetworkCache::Storage::traverseInternal): Replace traverseWithinRootPath, using a partition name instead, and call either traverseRecordsFiles (if partition name is empty) or traversePartitionFiles on the specific partition folder.\n(WebKit::NetworkCache::Storage::traverse): Calls traverseWithinRootPath with a partion name (empty or not depending on the version).\n* Source/WebKit/NetworkProcess/cache/NetworkCacheStorage.h: Replace traverseWithinRootPath with traverseInternal.\n\nCanonical link: https://commits.webkit.org/318124@main",
      "email": "fwang@igalia.com",
      "hash": "8bc8f4ca4c47be01c6b6e166763ef55f57c8a800",
      "subject": "[regression] Storage::traverse(const String\u0026 type, const String\u0026 partition, ...) is broken"
    },
    "318125@main": {
      "author": "Yulun Wu",
      "avatar": "https://www.gravatar.com/avatar/9e34d6632f4d926cdf6fe8dce07f9cb7?d=identicon\u0026s=64",
      "cl": "318125@main",
      "clUrl": "https://commits.webkit.org/318125@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320486\nrdar://183452829\n\nReviewed by Sammy Gill.\n\nImplements the auto-minimum case of the single-span intrinsic track sizing step\n(CSS Grid 1 §11.5.2): under a min-/max-content constraint, an auto-min track's\nbase size is the maximum of its items' limited min-content contributions,\nfloored at zero, rather than their plain minimum contributions.\n\n* Source/WebCore/layout/formattingContexts/grid/TrackSizingAlgorithm.cpp:\n(WebCore::Layout::sizeTracksToFitNonSpanningItems):\n* LayoutTests/fast/grid/grid-auto-min-track-under-min-content-constraint-expected.txt: Added.\n* LayoutTests/fast/grid/grid-auto-min-track-under-min-content-constraint.html: Added.\n\nCanonical link: https://commits.webkit.org/318125@main",
      "email": "yulun_wu@apple.com",
      "hash": "293d26c84bad0bfd15fb7028aa9377ba88455103",
      "subject": "[GFC] Resolve limited min-content contributions for auto-min tracks under a min-/max-content constraint"
    },
    "318126@main": {
      "author": "Richard Robinson",
      "avatar": "https://www.gravatar.com/avatar/a0d2f862985ed0fd47887be66f5a3e4f?d=identicon\u0026s=64",
      "cl": "318126@main",
      "clUrl": "https://commits.webkit.org/318126@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320526\nrdar://183485604\n\nUnreviewed build fix.\n\n* Tools/TestWebKitAPI/Helpers/cocoa/HTTPServer.swift:\n\nCanonical link: https://commits.webkit.org/318126@main",
      "email": "richard_robinson2@apple.com",
      "hash": "03b60763c7d2e6c917846b8adecbfa5410fae871",
      "subject": "Fix the build for some configurations"
    },
    "318127@main": {
      "author": "Chris Dumez",
      "avatar": "https://www.gravatar.com/avatar/a9f21fe3a8baf79b45f3c91572187bdc?d=identicon\u0026s=64",
      "cl": "318127@main",
      "clUrl": "https://commits.webkit.org/318127@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320422\n\nReviewed by Sihui Liu.\n\nCacheStorageDiskStore::readAllRecordInfosInternal() dispatches work to its IO\nqueue and captures cacheName = m_cacheName.isolatedCopy() precisely so the\nmember is not touched off the owning thread. However, the lambda body then\nbuilt the cache directory path from the raw member m_cacheName instead of the\ncaptured copy, leaving the isolated copy unused.\n\n* Source/WebKit/NetworkProcess/storage/CacheStorageDiskStore.cpp:\n(WebKit::CacheStorageDiskStore::readAllRecordInfosInternal):\n\nCanonical link: https://commits.webkit.org/318127@main",
      "email": "cdumez@apple.com",
      "hash": "2f33456d75157ca48b19d9e37ccfd333b79d325f",
      "subject": "CacheStorageDiskStore reads a member off the IO queue instead of its isolated copy"
    },
    "318128@main": {
      "author": "Chris Dumez",
      "avatar": "https://www.gravatar.com/avatar/a9f21fe3a8baf79b45f3c91572187bdc?d=identicon\u0026s=64",
      "cl": "318128@main",
      "clUrl": "https://commits.webkit.org/318128@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320418\n\nReviewed by Ryosuke Niwa.\n\n* Source/WebKit/NetworkProcess/ServiceWorker/WebSWServerConnection.cpp:\n(WebKit::WebSWServerConnection::sharedPreferencesForWebProcess const):\n* Source/WebKit/SaferCPPExpectations/NoDeleteCheckerExpectations:\n* Source/WebKit/WebProcess/WebPage/WebFrame.h:\n\nCanonical link: https://commits.webkit.org/318128@main",
      "email": "cdumez@apple.com",
      "hash": "eef5a835e86a4c0f11cf6bd40aacc0253087f7ed",
      "subject": "[Safer CPP] Address safer cpp failures in Source/WebKit"
    },
    "318129@main": {
      "author": "Chris Dumez",
      "avatar": "https://www.gravatar.com/avatar/a9f21fe3a8baf79b45f3c91572187bdc?d=identicon\u0026s=64",
      "cl": "318129@main",
      "clUrl": "https://commits.webkit.org/318129@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320353\n\nReviewed by Mike Wyrzykowski.\n\ncomputeSHA1HashStringForContext()'s big-endian branch declared its scratch\nbuffer as Vector\u003cuint8_t\u003e buffer(4 * pixelsWide) but then assigned a 32-bit\nvalue (OSReadLittleInt32) into buffer[column], truncating each pixel to its\nlow byte and leaving 3/4 of the buffer uninitialized. It then hashed the\nentire 4 * pixelsWide-byte span, so the resulting SHA-1 was derived partly\nfrom uninitialized memory and varied run-to-run, making the actual-vs-expected\nhash comparison meaningless on any kCGBitmapByteOrder32Big context.\n\nStore the byte-swapped pixels in a Vector\u003cuint32_t\u003e of pixelsWide elements and\nhash asBytes(buffer.span()), so every element is written and exactly the bytes\nwe populated are hashed. This matches the little-endian branch and the\nDumpRenderTree implementation in PixelDumpSupportCG.cpp, producing a\ndeterministic, endianness-independent hash.\n\n* Tools/WebKitTestRunner/cocoa/TestInvocationCocoa.mm:\n(WTR::computeSHA1HashStringForContext):\n\nCanonical link: https://commits.webkit.org/318129@main",
      "email": "cdumez@apple.com",
      "hash": "6e308ae07c58e7517c33cce7078d3bd8ed6a258e",
      "subject": "WebKitTestRunner: Fix corrupted pixel hash on big-endian byte-order contexts"
    },
    "318130@main": {
      "author": "Chris Dumez",
      "avatar": "https://www.gravatar.com/avatar/a9f21fe3a8baf79b45f3c91572187bdc?d=identicon\u0026s=64",
      "cl": "318130@main",
      "clUrl": "https://commits.webkit.org/318130@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320355\n\nReviewed by Sihui Liu.\n\nFileSystemStorageHandle::computeCommandSpace() estimated the disk space a\nwrite command would consume by seeking from FileSeekOrigin::Current, but the\nwrite itself (executeCommandForWritableInternal) and the Seek command both\ninterpret the command's position as an absolute offset from the start of the\nfile (FileSeekOrigin::Beginning). Because the two used different seek origins,\nthe space estimate was wrong whenever the writable stream's file offset was\nnon-zero: computeCommandSpace() based finalSize on (currentOffset + position)\ninstead of just (position).\n\nThe estimate was always too large (the current offset is never negative), so\nthe code requested more quota than the write actually consumed. This could\nspuriously deny an otherwise-valid write with QuotaError and inflate the\norigin's tracked usage until the next usage re-measurement. It triggered even\nfor the common \"overwrite in place\" pattern (repeated writes at position 0),\nbecause each write advances the file offset.\n\nFix computeCommandSpace() to compute the write's end offset the same way the\nwrite does: use the command's position directly when present, otherwise query\nthe current file offset non-destructively via seek(0, Current). This also\nremoves the previous side effect of moving the file offset inside a helper\nthat is only meant to compute a size.\n\nAdd an API test that writes a chunk to advance the file offset and then\noverwrites it in place at position 0 under a small origin quota. Before the\nfix, the positioned write was charged (currentOffset + position + length) and\nwas spuriously denied with QuotaExceededError.\n\n* Source/WebKit/NetworkProcess/storage/FileSystemStorageHandle.cpp:\n(WebKit::FileSystemStorageHandle::computeCommandSpace):\n* Tools/TestWebKitAPI/Tests/WebKit/WKWebView/FileSystemAccess.mm:\n(TEST(FileSystemAccess, WritableQuotaAccountingForPositionedWrite)):\n\nCanonical link: https://commits.webkit.org/318130@main",
      "email": "cdumez@apple.com",
      "hash": "f280a9ac58cc5ee245d50ee11bec2069356f3804",
      "subject": "OPFS FileSystemWritableFileStream quota accounting over-charges positioned writes"
    },
    "318131@main": {
      "author": "Chris Dumez",
      "avatar": "https://www.gravatar.com/avatar/a9f21fe3a8baf79b45f3c91572187bdc?d=identicon\u0026s=64",
      "cl": "318131@main",
      "clUrl": "https://commits.webkit.org/318131@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320424\n\nReviewed by Alex Christensen.\n\nThe Network.framework state-changed handlers for a WebTransport stream connection and\nfor the session's connection group treated the terminal nw_connection_state_cancelled /\nnw_connection_group_state_cancelled transition as a silent return, without invoking the\none-shot CompletionHandler they had captured.\n\nWhen a session or stream is cancelled before it ever reaches the ready state -- e.g. the\npage calls WebTransport.close() (or creates then tears down a stream) while the QUIC\nconnection is still being established -- terminate() cancels the underlying nw_connection /\nnw_connection_group, the cancelled state is delivered, and the captured handler is never\ncalled. When Network.framework later releases the block, the CompletionHandler is destroyed\nuncalled: an assertion failure in debug builds, and in release builds a never-settled IPC\nasync reply, leaving the corresponding JS promise (WebTransport.ready,\ncreateBidirectionalStream()) pending until the whole connection is torn down.\n\nHandle the cancelled transition the same way the datagram connection already does: resolve\nthe handler with a failure result. NetworkTransportStream::start calls readyHandler(nullopt)\nwhen it is still pending (guarded like the existing failed branch, since cancelled can also\nfire after ready/failed during normal teardown), which also covers the createStream reply\ncaptured inside that handler. NetworkTransportSession::initialize calls\ncreationCompletionHandler(nullopt), which already self-guards against being called twice.\n\n* Source/WebKit/NetworkProcess/webtransport/cocoa/NetworkTransportSessionCocoa.mm:\n(WebKit::NetworkTransportSession::initialize):\n* Source/WebKit/NetworkProcess/webtransport/cocoa/NetworkTransportStreamCocoa.mm:\n(WebKit::NetworkTransportStream::start):\n\nCanonical link: https://commits.webkit.org/318131@main",
      "email": "cdumez@apple.com",
      "hash": "2d530bfeaa4658acd955ed694afa41d2d1a4aebb",
      "subject": "WebTransport: resolve pending promise when a connection or group is cancelled before becoming ready"
    },
    "318132@main": {
      "author": "Yusuke Suzuki",
      "avatar": "https://www.gravatar.com/avatar/3455d9081295e3e740c1ffa901217d9b?d=identicon\u0026s=64",
      "cl": "318132@main",
      "clUrl": "https://commits.webkit.org/318132@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320484\nrdar://183450092\n\nReviewed by Yijia Huang.\n\nThis patch adds optimized code for Array#shift by leveraging ArrayMode-based speculation.\n\n1. We are already emitting Write based ArrayMode in DFGByteCodeParser.\n   So blessArrayOperation can ensure that this is not CoW array\n   (otherwise, we convert them).\n2. Based on that, we further speculate InBoundsSaneChain status, which\n   subscribes a watchpoint.\n3. With (2), we no longer need to care about holes. They should just go\n   to all the [[Prototype]] and getting undefined without side-effect.\n   This makes Array#shift operation simpler by just moving elements.\n4. DFG and FTL supports 0, 1, \u003c= 128 elements cases efficiently. 0 And 1\n   are handled inline, and small array shift is handled in exremely\n   optimized operation (I tried doing this inline and it had negative\n   effect rather).\n\n* JSTests/stress/array-shift-intrinsic.js:\n(shiftNonOriginal):\n(MyArray):\n(shiftSubclass):\n(checkShift):\n(int32Element):\n(doubleElement):\n(stringElement):\n(shiftCells):\n(shiftIsolated):\n* Source/JavaScriptCore/dfg/DFGFixupPhase.cpp:\n(JSC::DFG::FixupPhase::fixupNode):\n* Source/JavaScriptCore/dfg/DFGOperations.cpp:\n(JSC::DFG::assertArrayShiftElementsPreconditions):\n(JSC::DFG::JSC_DEFINE_NOEXCEPT_JIT_OPERATION):\n* Source/JavaScriptCore/dfg/DFGOperations.h:\n* Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:\n(JSC::DFG::SpeculativeJIT::compile):\n* Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:\n(JSC::FTL::DFG::LowerDFGToB3::compileArrayShift):\n* Source/JavaScriptCore/runtime/JSArray.cpp:\n(JSC::JSArray::fastShift):\n(JSC::JSArray::shiftCountWithAnyIndexingType):\n* Source/JavaScriptCore/runtime/JSArray.h:\n(JSC::JSArray::shiftCount):\n\nCanonical link: https://commits.webkit.org/318132@main",
      "email": "ysuzuki@apple.com",
      "hash": "960adeccefcd5f0320489e46f1aa4af764983853",
      "subject": "[JSC] Add fast operation for Array#shift"
    },
    "318133@main": {
      "author": "Yusuke Suzuki",
      "avatar": "https://www.gravatar.com/avatar/3455d9081295e3e740c1ffa901217d9b?d=identicon\u0026s=64",
      "cl": "318133@main",
      "clUrl": "https://commits.webkit.org/318133@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320497\nrdar://183461597\n\nReviewed by Yijia Huang.\n\nInterestingly we found that particular kind of RegExp is taking long\ntime in this construction because of linear-search. We should just use\nbinary search here as it is already sorted.\n\n* Source/JavaScriptCore/yarr/YarrPattern.cpp:\n(JSC::Yarr::CharacterClassConstructor::addSortedRange):\n\nCanonical link: https://commits.webkit.org/318133@main",
      "email": "ysuzuki@apple.com",
      "hash": "4ebed247914456072e142b14fd83f4228782b4fb",
      "subject": "[JSC] Make addSortedRange faster by using binary search"
    },
    "318134@main": {
      "author": "Brady Eidson",
      "avatar": "https://www.gravatar.com/avatar/31bed81d6d8ef517f93b30add03f5651?d=identicon\u0026s=64",
      "cl": "318134@main",
      "clUrl": "https://commits.webkit.org/318134@main",
      "description": "rdar://156027399\nhttps://bugs.webkit.org/show_bug.cgi?id=320429\n\nReviewed by Alex Christensen.\n\nWith site isolation, a single WKWebView can have multiple web content processes at once.\nEach of those processes might be making a request to show a modal JS dialog,\nmeaning the UI process can receive multiple requests at once.\n\nBefore site isolation, a WebKit API client would only ever receive a single JS dialog\nrequest at once for a given WKWebView, but now they might receive more than one at once.\n\nThis is a surprising and probably breaking change, and was unintentional. So this patch\nteaches the UI process to queue API dialog requests and send them to the client serially.\n\nThere was already an instance where we queued \"modal dialog requests\" - which was while the\nweb page was waiting on a safe browsing check - and this PR rolls these two queues into one.\n\nTest: Tools/TestWebKitAPI/Tests/WebKit/WKWebView/SiteIsolation.mm\n\n* Source/WebKit/UIProcess/Cocoa/WebPageProxyCocoa.mm:\n(WebKit::WebPageProxy::completeSafeBrowsingCheckForModals):\n(WebKit::WebPageProxy::drainDeferredModalsForNewNavigation):\n(WebKit::WebPageProxy::deferModalUntilSafeBrowsingCompletes): Deleted.\n* Source/WebKit/UIProcess/WebPageProxy.cpp:\n(WebKit::WebPageProxy::didStartProvisionalLoadForFrameShared):\n(WebKit::WebPageProxy::runModalJavaScriptDialog):\n(WebKit::WebPageProxy::runNextModalJavaScriptDialogIfNeeded):\n(WebKit::WebPageProxy::purgeQueuedModalDialogs):\n(WebKit::WebPageProxy::runJavaScriptAlert):\n(WebKit::WebPageProxy::runJavaScriptConfirm):\n(WebKit::WebPageProxy::runJavaScriptPrompt):\n* Source/WebKit/UIProcess/WebPageProxy.h:\n* Tools/TestWebKitAPI/Tests/WebKit/WKWebView/SiteIsolation.mm:\n(TestWebKitAPI::TEST(SiteIsolation, SimultaneousDialogsFromMultipleCrossOriginFrames)):\n(TestWebKitAPI::TEST(SiteIsolation, QueuedDialogPurgedByMainFrameNavigation)):\n\nCanonical link: https://commits.webkit.org/318134@main",
      "email": "beidson@apple.com",
      "hash": "adb057839de955260036324af1343aa8dbb4875d",
      "subject": "Queue multiple JS dialog requests in the UI process (possible with site isolation enabled)"
    },
    "318135@main": {
      "author": "Sihui Liu",
      "avatar": "https://www.gravatar.com/avatar/fea095a2fb34b599fa6e7d581666903b?d=identicon\u0026s=64",
      "cl": "318135@main",
      "clUrl": "https://commits.webkit.org/318135@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320396\nrdar://183351796\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. Sites that are likely to contains sensitive data\nor capabilities should not be put in the shared process. We currently use user interaction as indicator, but there are\nbetter signals, like whether user has used autofill on the site to fill in credentials. This patch introduces a new\nper-session, in-memory IsolatedSiteStore to store these important sites. BrowsingContextGroup::sharedProcessForSite\nnow consults it and will not put any site it flags in shared process.\n\nIn the initial version of IsolatedSiteStore, a site is recorded via two paths that both funnel through\nHTMLInputElement::didCompleteAutofill(), which calls ChromeClient::didCompleteAutofill():\n- Native autofill: AutofillElements::autofill() calls didCompleteAutofill() after filling in a non-empty\nusername/password.\n- Scripted autofill: HTMLInputElement::setAutofilled(bool) calls didCompleteAutofill() when the field\ntransitions to autofilled. This is reached by real autofill agents via the existing [EnabledForWorld=allowAutofill]\nautofilled IDL attribute, which is only reachable from a JS world with allowAutofill() set. Hooking into this existing,\nnarrowly-scoped setter avoids adding any overhead to HTMLInputElement's value setter.\n\nWebChromeClient::didCompleteAutofill computes the WebCore::Site for the input's document and sends it to the UI process\nvia the new WebProcessProxy::DidCompleteAutofill IPC message, which forwards it to WebsiteDataStore's\nIsolatedSiteStore::addSite(). The IPC message and IsolatedSiteStore's interface intentionally carry WebCore::Site\nrather than RegistrableDomain so scheme information isn't discarded before it crosses the process boundary, even though\nthe store's internal map is currently keyed by domain only.\n\nAdded WKWebsiteDataStore._isIsolatedSiteForTesting: SPI to observe this from tests, and covered both the native-autofill\n(iOS) and scripted-autofill (macOS) paths with new API tests.\n\nAPI tests: WKWebViewAutoFillTests.AutofillMarksSiteAsIsolated\n           WKUserContentController.AutofillScriptingMarksSiteAsIsolated\n\n* Source/WebCore/editing/cocoa/AutofillElements.cpp:\n(WebCore::AutofillElements::autofill):\n* Source/WebCore/html/HTMLInputElement.cpp:\n(WebCore::HTMLInputElement::setAutofilled):\n(WebCore::HTMLInputElement::didCompleteAutofill):\n* Source/WebCore/html/HTMLInputElement.h:\n* Source/WebCore/page/ChromeClient.h:\n(WebCore::ChromeClient::didCompleteAutofill):\n* Source/WebKit/Sources.txt:\n* Source/WebKit/UIProcess/API/Cocoa/WKWebsiteDataStore.mm:\n(-[WKWebsiteDataStore _isIsolatedSiteForTesting:]):\n* Source/WebKit/UIProcess/API/Cocoa/WKWebsiteDataStorePrivate.h:\n* Source/WebKit/UIProcess/BrowsingContextGroup.cpp:\n(WebKit::BrowsingContextGroup::sharedProcessForSite):\n* Source/WebKit/UIProcess/WebProcessProxy.cpp:\n(WebKit::WebProcessProxy::didCompleteAutofill):\n* Source/WebKit/UIProcess/WebProcessProxy.h:\n* Source/WebKit/UIProcess/WebProcessProxy.messages.in:\n* Source/WebKit/UIProcess/WebsiteData/IsolatedSiteStore.cpp: Added.\n(WebKit::IsolatedSiteStore::addSite):\n(WebKit::IsolatedSiteStore::reasonsFor const):\n(WebKit::IsolatedSiteStore::contains const):\n* Source/WebKit/UIProcess/WebsiteData/IsolatedSiteStore.h: Added.\n* Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp:\n(WebKit::WebsiteDataStore::isIsolatedSiteForTesting const):\n* Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.h:\n(WebKit::WebsiteDataStore::isolatedSiteStore):\n* Source/WebKit/WebKit.xcodeproj/project.pbxproj:\n* Source/WebKit/WebProcess/WebCoreSupport/WebChromeClient.cpp:\n(WebKit::WebChromeClient::didCompleteAutofill):\n* Source/WebKit/WebProcess/WebCoreSupport/WebChromeClient.h:\n* Tools/TestWebKitAPI/Tests/WebKit/WKWebView/UserContentController.mm:\n(TEST(WKUserContentController, AutofillScriptingMarksSiteAsIsolated)):\n* Tools/TestWebKitAPI/Tests/WebKit/WKWebView/ios/WKWebViewAutofillTests.mm:\n(TestWebKitAPI::TEST(WKWebViewAutoFillTests, AutofillMarksSiteAsIsolated)):\n\nCanonical link: https://commits.webkit.org/318135@main",
      "email": "sihui_liu@apple.com",
      "hash": "89fdf3d120e33378db776d04a73d6b13766d8bbd",
      "subject": "[Site Isolation] Autofilled sites should not enter shared process"
    },
    "318136@main": {
      "author": "Ryosuke Niwa",
      "avatar": "https://www.gravatar.com/avatar/ed2c71248fe3ea15d9129f6e9a2a1e85?d=identicon\u0026s=64",
      "cl": "318136@main",
      "clUrl": "https://commits.webkit.org/318136@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320512\n\nReviewed by Chris Dumez.\n\nRemoved NODELETE annotations from various functions in Source/WebCore/Modules.\n\n* Source/WebCore/Modules/notifications/NotificationPayload.h:\n* Source/WebCore/Modules/streams/ReadableByteStreamController.h:\n* Source/WebCore/Modules/streams/ReadableStreamBYOBReader.h:\n* Source/WebCore/Modules/webtransport/WebTransportDatagramsWritable.h:\n* Source/WebCore/SaferCPPExpectations/NoDeleteCheckerExpectations:\n\nCanonical link: https://commits.webkit.org/318136@main",
      "email": "rniwa@webkit.org",
      "hash": "8862b90b0bd7b6341cf0fa14e7ff78b8451dc7df",
      "subject": "Remove incorrect NODELETE annotations from Source/WebCore/Modules"
    },
    "318137@main": {
      "author": "Lily Spiniolas",
      "avatar": "https://www.gravatar.com/avatar/b65cfeb51301399bd50e338bb2d7613e?d=identicon\u0026s=64",
      "cl": "318137@main",
      "clUrl": "https://commits.webkit.org/318137@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=317336\nrdar://177747987\n\nReviewed by Wenson Hsieh and Abrar Rahman Protyasha.\n\nIn iOS 27, page colors or content should not be visible in the leading obscured\ncontent inset areas when the page is at the scroll origin. This behavior matches\nmacOS 27, and is also achieved with installing system background color extension\nviews. There are a few key differences from the macOS implementation that are noted\nbelow (along with a general summary).\n\nTo prevent page content from being visible in the leading obscured content inset\nareas on iOS, we create a left and/or right system background color extension view\nequal to the left and/or right obscured content inset width, and position the views\nin the inset areas so that they scroll with the web content. This matches macOS\nbehavior. As for the top obscured content area, we cannot directly control the\nscroll edge effect view size like we do on macOS, so we instead draw the color\nextensions directly over the scroll view so that the top extension can still\nstart with a width equal to the web view's unobscured width and then grow as the\nuser scrolls horizontally or zooms. We handle the positioning of the refresh\ncontrol so that it continues to display appropriately over sampled color extensions,\nand we pin the height of top system background color extensions when scrolling past\nthe top extent of the scroll view so that it does not obscure refresh controls.\n\nThe 8 macOS tests for this behavior have been updated to support iOS as well.\n\nTest: Tools/TestWebKitAPI/Tests/WebKit/WKWebView/ObscuredContentInsets.mm\n\n* Source/WTF/wtf/PlatformEnableCocoa.h:\n* Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm:\n(-[WKWebView _updateFixedColorExtensionViews]):\n(-[WKWebView _updateFixedColorExtensionViewFrames]):\n(-[WKWebView _webContentDistanceFromLeftEdge]):\n(-[WKWebView _webContentDistanceFromRightEdge]):\n(-[WKWebView _updateAppearanceForSystemBackgroundColorExtensionViews]):\n(-[WKWebView _shouldAdjustColorExtensionsForHorizontalBannerViewOverlays]):\n(-[WKWebView _hasDetectedHorizontalBannerViewOverlays]): Deleted.\n* Source/WebKit/UIProcess/API/Cocoa/WKWebViewInternal.h:\n* Source/WebKit/UIProcess/API/Cocoa/WKWebViewTesting.mm:\n(-[WKWebView _cancelFixedColorExtensionFadeAnimationsForTesting]):\n* Source/WebKit/UIProcess/API/ios/WKWebViewIOS.mm:\n(-[WKWebView _registerForNotifications]):\n(-[WKWebView _reinsertTopFixedColorExtensionViewIfNeeded]):\n(-[WKWebView scrollViewDidZoom:]):\n* Tools/TestWebKitAPI/Tests/WebKit/WKWebView/ObscuredContentInsets.mm:\n(TestWebKitAPI::HorizontalBannerOverlays::setUpWebView):\n(TestWebKitAPI::HorizontalBannerOverlays::capturePageState):\n(TestWebKitAPI::HorizontalBannerOverlays::scrollTo):\n(TestWebKitAPI::HorizontalBannerOverlays::zoomTo):\n(TestWebKitAPI::HorizontalBannerOverlays::computeGeometry):\n(TestWebKitAPI::HorizontalBannerOverlays::expectFrameEqualWithTolerance):\n(TestWebKitAPI::HorizontalBannerOverlays::leftSystemBackgroundFrame):\n(TestWebKitAPI::HorizontalBannerOverlays::rightSystemBackgroundFrame):\n(TestWebKitAPI::HorizontalBannerOverlays::assertLeftColorExtension):\n(TestWebKitAPI::HorizontalBannerOverlays::assertRightColorExtension):\n(TestWebKitAPI::HorizontalBannerOverlays::assertTopPocket):\n(TestWebKitAPI::HorizontalBannerOverlays::assertTopColorExtension):\n(TestWebKitAPI::HorizontalBannerOverlays::verifyColorExtensions):\n(TestWebKitAPI::HorizontalBannerOverlays::runSubcases):\n(TestWebKitAPI::TEST(ObscuredContentInsets, HorizontalBannerOverlaysNoOverflow)):\n(TestWebKitAPI::TEST(ObscuredContentInsets, HorizontalBannerOverlaysLeftToRightOverflow)):\n(TestWebKitAPI::TEST(ObscuredContentInsets, HorizontalBannerOverlaysLeftToRightOverflowWithFixedHeader)):\n(TestWebKitAPI::TEST(ObscuredContentInsets, HorizontalBannerOverlaysLeftToRightOverflowWithFixedHeaderAndSidebar)):\n(TestWebKitAPI::TEST(ObscuredContentInsets, HorizontalBannerOverlaysRightToLeftOverflow)):\n(TestWebKitAPI::TEST(ObscuredContentInsets, HorizontalBannerOverlaysRightToLeftOverflowWithFixedHeader)):\n(TestWebKitAPI::TEST(ObscuredContentInsets, HorizontalBannerOverlaysRightToLeftOverflowWithFixedHeaderAndSidebar)):\n(TestWebKitAPI::TEST(ObscuredContentInsets, HorizontalBannerOverlaysSystemBackgroundColorTracksAppearance)):\n(TestWebKitAPI::HorizontalBannerOverlays::computeExpectedFrames): Deleted.\n(TestWebKitAPI::HorizontalBannerOverlays::verifyFrames): Deleted.\n\nCanonical link: https://commits.webkit.org/318137@main",
      "email": "lily_spiniolas@apple.com",
      "hash": "8b5cfad939f76e35a20fbc885759fb82914843d0",
      "subject": "[iOS] Don't extend page colors under sidebar or top inset"
    },
    "318138@main": {
      "author": "Carlos Garcia Campos",
      "avatar": "https://www.gravatar.com/avatar/8393f7e76d83c8a147cb852d8fb1a959?d=identicon\u0026s=64",
      "cl": "318138@main",
      "clUrl": "https://commits.webkit.org/318138@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320528\n\nReviewed by Alejandro G. Castro.\n\nThis was copied from texture mapper which means a different thing only\nused for 3D context layers. In skia compositor it's always just\nreturning the layer rectangle. The layer rectangle is in layer\ncoordinates, so it's always 0,0 widthxheight. We have a member for the\nsize and build a FloatRect every time the layer rect is needed. This\npatch replaces m_size by m_rect so that we always have the rectangle and\nwe just change its size when the layer size changes. We don't even need\na getter for the layer rect since it's only used internally.\n\n* Source/WebCore/platform/graphics/skia/SkiaCompositingLayer.cpp:\n(WebCore::SkiaCompositingLayer::setSize):\n(WebCore::SkiaCompositingLayer::updateBackingStore):\n(WebCore::SkiaCompositingLayer::paintedLayerRect const):\n(WebCore::SkiaCompositingLayer::computeTransformsAndAnimations):\n(WebCore::SkiaCompositingLayer::paint):\n(WebCore::SkiaCompositingLayer::paintSelfAndChildren):\n(WebCore::SkiaCompositingLayer::isVisible const):\n(WebCore::SkiaCompositingLayer::maskImage):\n(WebCore::SkiaCompositingLayer::computeOverlapRegions):\n(WebCore::SkiaCompositingLayer::transformedFlattenedBounds const):\n(WebCore::SkiaCompositingLayer::geometryFor3DRenderingContext const):\n* Source/WebCore/platform/graphics/skia/SkiaCompositingLayer.h:\n\nCanonical link: https://commits.webkit.org/318138@main",
      "email": "cgarcia@igalia.com",
      "hash": "73a527b95f75436dc62313d444d4d9a086308fd9",
      "subject": "[GTK][WPE] Skia compositor: remove effectiveLayerRect()"
    },
    "318139@main": {
      "author": "Tim Horton",
      "avatar": "https://www.gravatar.com/avatar/a04261df168177f0d816f3c7276f6183?d=identicon\u0026s=64",
      "cl": "318139@main",
      "clUrl": "https://commits.webkit.org/318139@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320468\n\nReviewed by Wenson Hsieh, Pascoe, Richard Robinson, and Abrar Rahman Protyasha.\n\nAdd support for x/y/width/height window features to MiniBrowser.\nDon't save the custom sizes in AppKit frame autosaving mechanism,\nand don't let them join with the main window.\n\n* Tools/MiniBrowser/mac/WK2BrowserWindowController.h:\n* Tools/MiniBrowser/mac/WK2BrowserWindowController.m:\n(-[WK2BrowserWindowController initWithConfiguration:]):\n(-[WK2BrowserWindowController initWithConfiguration:windowFeatures:]):\n(frameForWindowFeatures):\n(-[WK2BrowserWindowController applyWindowFeatures]):\n(-[WK2BrowserWindowController windowDidLoad]):\n(-[WK2BrowserWindowController webView:createWebViewWithConfiguration:forNavigationAction:windowFeatures:]):\n\nCanonical link: https://commits.webkit.org/318139@main",
      "email": "thorton@apple.com",
      "hash": "c05f55c26706e9397a2289a8f06810a6eeffff79",
      "subject": "MiniBrowser doesn't respect window.open window features (part 1: size and location)"
    },
    "318140@main": {
      "author": "Ryosuke Niwa",
      "avatar": "https://www.gravatar.com/avatar/ed2c71248fe3ea15d9129f6e9a2a1e85?d=identicon\u0026s=64",
      "cl": "318140@main",
      "clUrl": "https://commits.webkit.org/318140@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320500\n\nReviewed by Chris Dumez.\n\nAnnotated incrementCheckedPtrCount and decrementCheckedPtrCount with NODELETE.\n\n* Source/JavaScriptCore/SaferCPPExpectations/UncheckedCallArgsCheckerExpectations:\n* Source/WTF/SaferCPPExpectations/NoDeleteCheckerExpectations:\n* Source/WTF/SaferCPPExpectations/UncheckedCallArgsCheckerExpectations:\n* Source/WTF/SaferCPPExpectations/UncheckedLocalVarsCheckerExpectations:\n* Source/WTF/SaferCPPExpectations/UncountedCallArgsCheckerExpectations:\n* Source/WTF/SaferCPPExpectations/UncountedLocalVarsCheckerExpectations:\n* Source/WTF/wtf/CheckedRef.h:\n(WTF::CanMakeCheckedPtrBase::checkedPtrCount const):\n(WTF::CanMakeCheckedPtrBase::incrementCheckedPtrCount const):\n(WTF::CanMakeCheckedPtrBase::decrementCheckedPtrCount const):\n* Source/WebCore/SaferCPPExpectations/NoDeleteCheckerExpectations:\n* Source/WebCore/SaferCPPExpectations/UncheckedCallArgsCheckerExpectations:\n* Source/WebCore/SaferCPPExpectations/UncheckedLocalVarsCheckerExpectations:\n* Source/WebCore/SaferCPPExpectations/UncountedCallArgsCheckerExpectations:\n* Source/WebCore/SaferCPPExpectations/UncountedLocalVarsCheckerExpectations:\n\nCanonical link: https://commits.webkit.org/318140@main",
      "email": "rniwa@webkit.org",
      "hash": "ff1f31c83dc7a38f82912154fa1b11ae18d92f51",
      "subject": "Treat creating or destroying a CheckedPtr as no-delete"
    },
    "318141@main": {
      "author": "Ruthvik Konda",
      "avatar": "https://www.gravatar.com/avatar/bca33cefcce93017251a8fbc1204cdc4?d=identicon\u0026s=64",
      "cl": "318141@main",
      "clUrl": "https://commits.webkit.org/318141@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320481\nrdar://183448505\n\nReviewed by Mike Wyrzykowski.\n\nStream IPC message receivers can now be implemented in Swift, but a\nsynchronous message on such a receiver does not build. IPC::handleMessageSynchronous\nconstructs the reply completion handler itself, and its StreamServerConnection\noverload builds a bare CompletionHandler rather than routing it through\nMethodSignatureValidation::wrapCompletionHandler, unlike the Connection overload\nand handleMessageAsync. A Swift handler takes its completion handler as a\nWTF::RefCountable\u003cCompletionHandler\u003c...\u003e\u003e*, because a CompletionHandler is not\nitself reference counted and Swift needs an ARC-managed reference to keep it\nalive until the reply is sent, so a Swift receiver with a Synchronous message\ncannot be dispatched.\n\nWrap and unwrap the completion handler in the stream overload exactly as the\nnon-stream overload does. For C++ receivers wrapCompletionHandler and\nunwrapCompletionHandler are std::identity, so existing stream receivers are\nunaffected. This is a prerequisite for moving RemoteMesh, whose\nPaintCurrentFrameToImageBuffer message is synchronous, to Swift.\n\nAdds a Synchronous message to the TestWithStreamSwift fixture in\nmessages_unittest.py, giving the stream Swift receiver combination codegen\ncoverage. The generated output is the same either way, so the fixture does not\nexercise the fix itself; that is covered when a Swift stream receiver is first\ncompiled.\n\n* Source/WebKit/Platform/IPC/HandleMessage.h:\n(IPC::handleMessageSynchronous):\n* Source/WebKit/Scripts/webkit/tests/MessageArgumentDescriptions.cpp:\n* Source/WebKit/Scripts/webkit/tests/MessageNames.cpp:\n* Source/WebKit/Scripts/webkit/tests/MessageNames.h:\n* Source/WebKit/Scripts/webkit/tests/TestWithStreamSwift.messages.in:\n* Source/WebKit/Scripts/webkit/tests/TestWithStreamSwiftMessageReceiver.cpp:\n* Source/WebKit/Scripts/webkit/tests/TestWithStreamSwiftMessages.h:\n\nCanonical link: https://commits.webkit.org/318141@main",
      "email": "rkonda2@apple.com",
      "hash": "578b578ca162593e05818162b33ff99dd3975952",
      "subject": "Stream IPC message receivers can dispatch synchronous messages to Swift"
    },
    "318142@main": {
      "author": "Ruthvik Konda",
      "avatar": "https://www.gravatar.com/avatar/bca33cefcce93017251a8fbc1204cdc4?d=identicon\u0026s=64",
      "cl": "318142@main",
      "clUrl": "https://commits.webkit.org/318142@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320378\nrdar://183343675\n\nReviewed by Dan Glastonbury.\n\nWebXRWebGLLayer.cpp includes \u003cwtf/Scope.h\u003e but never uses it. No change in behavior.\n\n* Source/WebCore/Modules/webxr/WebXRWebGLLayer.cpp:\n\nCanonical link: https://commits.webkit.org/318142@main",
      "email": "rkonda2@apple.com",
      "hash": "38b7709884ced2e82991b0fbe034e023b2bba81b",
      "subject": "[WebXR] Remove unused Scope.h include in WebXRWebGLLayer"
    },
    "318143@main": {
      "author": "Carlos Garcia Campos",
      "avatar": "https://www.gravatar.com/avatar/8393f7e76d83c8a147cb852d8fb1a959?d=identicon\u0026s=64",
      "cl": "318143@main",
      "clUrl": "https://commits.webkit.org/318143@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319131\n\nReviewed by Alejandro G. Castro.\n\nFlush the context after copying buffer in\nSkiaSerializedImageBuffer::sinkIntoImageBuffer().\n\n* Source/WebCore/platform/graphics/skia/SkiaSerializedImageBuffer.cpp:\n(WebCore::SkiaSerializedImageBuffer::sinkIntoImageBuffer):\n\nCanonical link: https://commits.webkit.org/318143@main",
      "email": "cgarcia@igalia.com",
      "hash": "0d1e5abeecb6275e6347994deac13fa3e9bcea7f",
      "subject": "REGRESSION(313868@main): [Skia] Broke certain images in PDF documents"
    },
    "318144@main": {
      "author": "Kiet Ho",
      "avatar": "https://www.gravatar.com/avatar/d9058b37006dce1f55f91b8ccc82f9a3?d=identicon\u0026s=64",
      "cl": "318144@main",
      "clUrl": "https://commits.webkit.org/318144@main",
      "description": "rdar://183094796\nhttps://bugs.webkit.org/show_bug.cgi?id=320160\n\nReviewed by Tim Nguyen.\n\nDuring style resolution, new element styles are not immediately committed to the\nrender tree. Instead, they're stored in a Style::Update, and the render tree updater\n(which runs after style resolution) commits the new styles. This means accessing an\nelement's render style during style resolution will result in the style of the\nprevious resolution, not the current one.\n\nThis wouldn't work with container style queries, as it queries against the new\nstyle, which hasn't been committed into the render tree. As ContainerQueryEvaluator\nis run during style resolution, it has has a clever trick: it has access to the\nStyle::Update of the current resolution. This gives it access to the new styles.\n\nContainerQueryEvaluator::featureEvaluationContextForQuery uses styleForContainer\nto grab the new style for the container and container's parent, but for the root\nelement style, it uses the current render style instead. This means if the style\nqueries specifies length using root-relative units (e.g rem, rlh, vb, vi), the\nlength are relative to the root's old style, not the new one. If the container\nqueries are re-evaluated because the root style changes (e.g font-size, line-height,\nor writing-mode), then the queries will incorrectly evaluate the length against\nthe old root style.\n\nFix this by also using styleForContainer to get the newest possible root style.\n\nTests:  imported/w3c/web-platform-tests/css/css-conditional/container-queries/style-query-registered-custom-rem-change.html\n        imported/w3c/web-platform-tests/css/css-conditional/container-queries/style-query-registered-custom-root-relative-units-change.html\n\n* LayoutTests/imported/w3c/web-platform-tests/css/css-conditional/container-queries/style-query-registered-custom-rem-change-expected.txt:\n    - Test progression\n\n* LayoutTests/imported/w3c/web-platform-tests/css/css-conditional/container-queries/style-query-registered-custom-root-relative-units-change-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-conditional/container-queries/style-query-registered-custom-root-relative-units-change.html: Added.\n    - Add test that tests whether lengths using root-relative units in container style\n      queries correctly re-evaluates when the root changes. This test is similar to\n      style-query-registered-custom-rem-change.html, but it tests more root-relative\n      units (rem, rlh, vb, vi)\n\n* Source/WebCore/style/ContainerQueryEvaluator.cpp:\n(WebCore::Style::ContainerQueryEvaluator::featureEvaluationContextForQuery const):\n\nCanonical link: https://commits.webkit.org/318144@main",
      "email": "kiet.ho@apple.com",
      "hash": "a7b39ca3653c38e1984af164efaa13475f2b61e6",
      "subject": "[css-conditional-5] @container style queries not evaluating root-relative length correctly"
    },
    "318145@main": {
      "author": "Adrian Perez de Castro",
      "avatar": "https://www.gravatar.com/avatar/30ffea8cf404586741a8f5f7110c0914?d=identicon\u0026s=64",
      "cl": "318145@main",
      "clUrl": "https://commits.webkit.org/318145@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320536\n\nUnreviewed Skia update.\n\n% git log --pretty='%h %s' e5f9ed19954384bf70572897fee33c9d002db449..bb33c115454b273613c515245ec3d4ae0a305b0b\nbb33c11545 Roll recipe dependencies (trivial).\n30ad01017a Adding override for incremental decoding as both Rust PNG and Rust BMP support it while the base class SkCodec returns false.\n8109f6dbe4 Roll vulkan-deps from 0d9c229af89c to 863cb98140c0 (4 revisions)\n70733f74d4 [graphite] Start refactoring Layer::test for more early-out conditions\n254d9c0992 Revert \"[infra] Remove all remaining references to gsutil\"\nd78865e708 Use hermetic Python directly from dawn_repo.bzl\nb4592b750d Add missing GN deps on shaper\ne8657140ac [infra] Remove all remaining references to gsutil\n30d5f78de4 [bazel] Add Windows CI job for building viewer\na92fcd70a1 Merge 4 release notes into RELEASE_NOTES.md\n5f1d47d3a0 Update Skia milestone to 153\n31e9a73130 Ganesh: honor subset when flattening a YUVA image to a special image\n5241b492c7 Manual roll Skia Infra from d47334d0785d to 42f146e4e61d (40 revisions)\n3cbd8d4115 [recipes] Switch from \"gsutil\" to \"gcloud storage\"\n32cd7e454c Roll vulkan-deps from b97f97b70455 to 0d9c229af89c (6 revisions)\naa2ee984b1 Roll recipe dependencies (trivial).\n711f7c04f8 Roll recipe dependencies (trivial).\nb5ecc1dad0 Roll Dawn from 1e897275172a to 10934785b43b (18 revisions)\n92d1f16eed Roll ANGLE from c3ede28106e9 to ff4855759c68 (11 revisions)\nbf96c47f38 Roll debugger-app-base from b4889b3141e3 to a46a65d7ba05\n833f199399 Add missing \u003ccstdlib\u003e header to FrontBufferedStream.cpp\na59720e8e8 Roll recipe dependencies (trivial).\n2f9fc22df9 Roll vulkan-deps from 70a303980973 to b97f97b70455 (5 revisions)\n60e1832a44 miracleptr: Add RAW_PTR_EXCLUSION for pointers in stable C ABIs\n8f54ee3142 [skottie] Add support for Skottie ColorOverlay style\n6cdc17ffc0 [graphite] SparseStrips approximate conics with cubics\n8e300af3fd Roll recipe dependencies (trivial).\n8781cb106d Roll ANGLE from 92de898b7a32 to c3ede28106e9 (3 revisions)\n4493aea308 Roll vulkan-deps from f147dcdbea36 to 70a303980973 (2 revisions)\nec1a0b172a Roll Dawn from a56ab87a19a0 to 1e897275172a (16 revisions)\n9d739c1651 Roll debugger-app-base from 773cb2ff3ea5 to b4889b3141e3\nb9fc6254a6 Roll recipe dependencies (trivial).\n75e17308cf Roll vulkan-deps from 59e03a8479a3 to f147dcdbea36 (1 revision)\n2227799a6f Roll SKP CIPD package from 569 to 570\nc3b29df302 Roll vulkan-deps from 8e393ad533ce to 59e03a8479a3 (1 revision)\n62442d6cf0 Roll vulkan-deps from 1f2cbadfb9c8 to 8e393ad533ce (8 revisions)\n2c014dc494 Manual roll ANGLE from e316181208fd to 92de898b7a32 (10 revisions)\nd8d20eef4d Handle global resource tracing when SK_DISABLE_TRACING is defined\n7707e1d48a Revert \"miracleptr: Add RAW_PTR_EXCLUSION for pointers to global/static state\"\ne49f657a6a miracleptr: Add RAW_PTR_EXCLUSION for pointers to global/static state\n035f070816 Fix README.chromium for skcms\ne808d47821 Revert \"miracleptr: Add RAW_PTR_EXCLUSION for pointers in unions\"\nc6eca60592 Revert \"miracleptr: Add RAW_PTR_EXCLUSION for pointers used to pack integers\"\n991076ec0c [SkCapture] Get Captures Working on Viewer\n49bf5e7c22 Roll vulkan-deps from 808860b25bf7 to 1f2cbadfb9c8 (1 revision)\nd2d5546db6 Manual roll bazel_build from b5d31abb7bc772a69... to 348e064d2951b8209... (1 revision)\ncee83412c5 [ganesh] Check results of internal flushes for internalWritePixels success\ne7e1b3f28b Move GlobalResourceStats::Singleton definition into CPP file\nd177b1ccc6 miracleptr: Add RAW_PTR_EXCLUSION for pointers used to pack integers\nc701fcce38 miracleptr: Add RAW_PTR_EXCLUSION for pointers in unions\n5fd4072db0 Remove SkPath::updateBoundsCache\n834e9eb631 Roll recipe dependencies (trivial).\n268f37cbbb Roll debugger-app-base from e2e7fdda0991 to 773cb2ff3ea5\n8df9589c61 Roll ANGLE from 8521722b7ebc to e316181208fd (9 revisions)\n533d1527c9 Roll Skia Infra from 7a6f0a35a522 to d47334d0785d (12 revisions)\nb01a3addd4 Roll Dawn from 9b8c24f3b4ee to a56ab87a19a0 (13 revisions)\n8a831d8868 Roll vulkan-deps from afc9d8707b53 to 808860b25bf7 (4 revisions)\nfa51c18374 Roll recipe dependencies (trivial).\nf2f9b52fe1 Trace detailed ResourceCache summaries for Ganesh and Graphite\n6b15319985 Roll recipe dependencies (trivial).\n2ce2541c15 [rust bmp] Cleanup experimental rust_bmp\n6e9c4687c0 [rust_ico] Add Rust-based ICO decoder using image-rs\n5f3e5240dc [graphite] Move FloatStorageManager to StorageBufferManager\n2273ddd0bb Fix Bazel build on Windows\n2c72144d25 [Maintenance] Add a match_override for tryjob machines\nc8c0299172 [graphite] Remove Insertion helper struct\na889c9d4e1 [graphite] Exit searchBinding() loop at shading/non-shading boundary\n1229bad352 Add SkRRect::contains(const SkPoint\u0026)\n7ce3b4ed5e [graphite] Always specialize xfer fns for color spaces\n6d18bba17f [graphite] Add more details to DrawListLayer types\n130035d2fc [graphite] Storage usage flags to rendersteps\nc8fe0eea6e Reland \"[graphite] Trace more DrawPass details\"\na119ef99d5 Roll vulkan-deps from b65fca8cfc87 to afc9d8707b53 (1 revision)\n952973ebe3 Manual roll Dawn from 85891e8dcf47 to 9b8c24f3b4ee (6 revisions)\n933b272d03 Roll ANGLE from 3d3c181bdcf2 to 8521722b7ebc (24 revisions)\ne3727f6b15 Roll recipe dependencies (trivial).\n1d8bf9270d Roll Skia Infra from ed73bb996e6d to 7a6f0a35a522 (13 revisions)\n8105956c23 Roll Dawn from 63af03bd26e2 to 85891e8dcf47 (6 revisions)\n5690871f9f Roll vulkan-deps from a5843ef093d3 to b65fca8cfc87 (6 revisions)\n3424966b8a Manual roll Dawn from 4527b42f1a95 to 63af03bd26e2 (8 revisions)\n0fa86c0c6f Revert \"[graphite] Trace more DrawPass details\"\nbdb859b278 Suppress failure cases for new TestManyStopLinearHardstopsGanesh test\n7e658a67a1 Disable partition_alloc on Mac/iOS when using Xcode clang\ne0eb3d588c [ganesh] Fully clear initial stencil bits when stencil clear is a draw\n31125c0bbc [graphite] Only use CompressedPaintersOrder to stop layer search\n3642116788 [rust bmp] Move rust bmp out of experimental\n3544c994ca [graphite] SparseStrips SIMD coverage improvements\n94bf16e6ef Make sure partition alloc is disabled on all clang mac names.\nfa130164d4 [viewer] Avoid fLastImage polluting Graphite caches\n30d6603d43 [ganesh] Skip resolve/mipmap step on flush failure\nb0777fa0b8 [graphite] Trace more DrawPass details\na2f1fcc2cf [ganesh] Add many-stop analytic gradient colorizer\n473d93a09d Fix ganesh_native_vulkan target\n1c8b0c6ac3 [skif] Request expected child output for Magnifier\nb78700523b [tracing] Add TRACE_COUNTER1_ALWAYS variant\n2c8f3e963b Compare the return value of `GetLimits()` with `wgpu::Status::Success`\n03f555cf00 Roll vulkan-deps from 218432abf71f to a5843ef093d3 (2 revisions)\ne069f422a6 Roll recipe dependencies (trivial).\n4b4a079f03 Roll recipe dependencies (trivial).\na2fb2fdf33 Roll ANGLE from 80d793462953 to 3d3c181bdcf2 (7 revisions)\na1f2598bb3 Roll Skia Infra from b8df33bbc301 to ed73bb996e6d (15 revisions)\n0e908453a6 Roll Dawn from 7c60d39b65ee to 4527b42f1a95 (3 revisions)\n418ab117fa Roll recipe dependencies (trivial).\naee3692371 Roll recipe dependencies (trivial).\n691742a728 [ganesh][gl] ARM FBO query workaround\nd978fd3a89 [tracing] Remove TRACE_COUNTER2; implement counters in SkPerfettoTrace\nf59537437b Manual roll ANGLE from d6247827bfd0 to 80d793462953 (6 revisions)\n3bcfa3f6e1 [graphite] Add BoundsFlags and adjust test result names\na5d1e5412d Add sanitization proc to SkTypeface::MakeDeserialize\n77a54cd353 Roll vulkan-deps from f7e4835de105 to 218432abf71f (2 revisions)\n5aaa7bfe70 Manual roll Dawn from 1b6954523e35 to 7c60d39b65ee (6 revisions)\n58400f9629 Deprecate SkPath::updateBoundsCache\n5e183e5aea Remove legacy_ganesh_vulkan target that had VMA baked in\nb08789681f [ganesh][gl] Imagination FBO deletion workaround\n2ddb8d2d7d Manual roll Dawn from 0bc38adde72b to 1b6954523e35 (5 revisions)\n569534e9fa Roll vulkan-deps from c74167a8e3d3 to f7e4835de105 (10 revisions)\n5a4ef83c79 Roll ANGLE from 318948133839 to d6247827bfd0 (13 revisions)\nbd4a80e2eb Roll debugger-app-base from 60e75023b30b to e2e7fdda0991\n1352a34364 Roll Skia Infra from 055b758759c8 to b8df33bbc301 (7 revisions)\nb8aeea2c84 Roll Dawn from 2529dfe8b6af to 0bc38adde72b (14 revisions)\n3c52d80c96 Roll recipe dependencies (trivial).\n6e283b083a Revert \"[FontConfig] Implement onGetResourceName() for SkTypeface_FCI\"\n11426cf7aa Delete SkCapture::MakeFromPictures\n59b74a5d1f Add initial DM test targets to Bazel build\n348e064d29 Roll vulkan-deps from e5ed54df51f5 to c74167a8e3d3 (2 revisions)\nd94148ae12 [infra] Update dep on skia-infra\ne08a884455 [infra] Add jobs for Windows IntelArcB570 machines\nc67fe5df37 [bazel] Remove temp dawn/tint patches\naa311c4681 Roll ANGLE from 5c2e15eebf4e to 318948133839 (11 revisions)\n47143b6fa4 Roll Dawn from ea7f96fc628e to 2529dfe8b6af (28 revisions)\n547c001697 Roll vulkan-deps from 50e7ce346c7e to e5ed54df51f5 (1 revision)\nbddc2ea153 Roll vulkan-deps from a419dc1c98c6 to 50e7ce346c7e (1 revision)\nce0793e98b Roll vulkan-deps from 6f77cec87088 to a419dc1c98c6 (1 revision)\nba90f98535 Roll vulkan-deps from 5a68db9f6cfb to 6f77cec87088 (10 revisions)\nfcc568e34b In Vulkan backends query the optimal row pitch alignment for uploads.\nd40a5492ad [FontConfig] Implement onGetResourceName() for SkTypeface_FCI\n04dbd15284 [Ganesh] If a resolve task fails to execute unwind the dirty tracking.\na2cda8b170 [Ganesh] Make sure stencil is cleared on kPreserve\n013ad6e709 [Security] Add a SmallPathIDChangeListener to SmallPathAtlasMgr\ne17384bb8e Revert \"pictureshader_persp clear canvas\"\nbf73fd513f pictureshader_persp clear canvas\n9468e96cc4 [Security] Added checks to MakeFromBuffer for Cluster size\n702c3e7902 Roll vulkan-deps from 62dd7bbbcbed to 5a68db9f6cfb (7 revisions)\n2e4a3ae035 Roll ANGLE from 88229d73b7cf to 5c2e15eebf4e (13 revisions)\n59e52ab1d4 Roll Skia Infra from bb2d9ae683c6 to d02b5721be66 (9 revisions)\n7379527b59 Roll Dawn from 2a49ad12f8a9 to ea7f96fc628e (26 revisions)\n4f5aca109c Roll recipe dependencies (trivial).\nf092f98099 Roll recipe dependencies (trivial).\n1a70f537d1 Roll recipe dependencies (trivial).\n6cf503849a Roll vulkan-deps from 1e5cf4226991 to 62dd7bbbcbed (8 revisions)\n3e5204e5e3 [Graphite] drawAtlas support\n956ee20eb0 Align staging buffer row pitch for optimal texture uploads in Vulkan/Metal\n3d956bafea Fix $blend_set_color_saturation to handle near zero case\n1efb73bcf9 [graphite] Convert searchBackwards loop to simple for-loop\n731888c38e [ganesh] prevent stale readbacks\na1db562cbc BUILD: Add formal dependency on :core for optional targets\n86788c52a6 Reapply \"Update libjxl to 0.11.2\" with Bzlmod fix\n21fa5edc7e [bazel] Replace hand-crated TEST_UTIL with macro-defined ones\ne553224dcf [bazel] Add support to viewer for Windows (and all Direct3D backends)\ndf579664aa Roll vulkan-deps from e992ea0db59f to 1e5cf4226991 (5 revisions)\n0c171b2438 Roll ANGLE from 7a960f346c57 to 88229d73b7cf (7 revisions)\nb7156f5689 Roll Skia Infra from 9f5d866edce1 to bb2d9ae683c6 (10 revisions)\n5002705400 Roll Dawn from a2d2de42f350 to 2a49ad12f8a9 (15 revisions)\nbb3d7e6fda Roll recipe dependencies (trivial).\n9f7d67cae5 Roll recipe dependencies (trivial).\n37c5e6b26a [graphite] Handle opaque Layer fast-path in recordDraw() instead of searchBackwards()\na68c88368d Reland \"[infra] Update fiddler-base image\"\n9af10ab0b0 [demos] Improved text-on-path glyph alignment\n87411a6ec8 [bazel] Update dawn rules to support building on/for Windows\nb54f8e10ea [bazel] Add rules for d3d12allocator\nf2f986116f [bazel] Update/fix Windows toolchain\nfd811a647e Roll vulkan-deps from 2b6f457686a2 to e992ea0db59f (7 revisions)\n2b839b42a2 [text] fix padding issue on directmask\ncc51850347 [skpdf] Don't crash with degenerate stops in SkPDFGradientShader::Make.\n1a29f70b28 [SkSL][WGSL] Remove polyfillInfo null check assert\n96a68c2ea3 Revert \"[infra] Update fiddler-base image\"\n45d8b27452 Enable partition_alloc on all possible platforms.\na9590bdadc Roll recipe dependencies (trivial).\n30a5b33495 Roll ANGLE from 0bdeec3fc0d3 to 7a960f346c57 (7 revisions)\nd88ad8aa38 Roll Skia Infra from c82d19b6bc66 to 9f5d866edce1 (12 revisions)\nd619b4a17a Roll Dawn from 8b692610bcff to a2d2de42f350 (24 revisions)\n0923b5d055 Roll vulkan-deps from 13b031f420f4 to 2b6f457686a2 (10 revisions)\nf5778d05ac [skvx] add reduce add\nd7dafdd163 Roll recipe dependencies (trivial).\nab2410bc85 [SkSLC] Enable ForceNoRTFlip for WGSL\ndc485e82dc Roll recipe dependencies (trivial).\n00d5dbacd8 Delete getSurfaceBase hooks from Android utils\nc0db6004b6 Roll recipe dependencies (trivial).\nca065587ac [infra] Update fiddler-base image\n6fa58c78d6 [bazel] Replace trampolines with direct paths\n87520ec88c Roll vulkan-deps from abe1fefc22af to 13b031f420f4 (5 revisions)\n2950646d94 [gen_tasks] Log warnings for tasks which have no matching machines\n9f737d3a24 [graphite] Use canonical uniform index to simplify LayerKey comparison with SSBOs\n88954ef8f3 Roll recipe dependencies (trivial).\ndfcff99566 Roll ANGLE from c1a25085dd9e to 0bdeec3fc0d3 (23 revisions)\n51590657f0 Roll Skia Infra from 8d556d436e0f to c82d19b6bc66 (15 revisions)\n4d3f500960 Roll Dawn from b87a8b9b6489 to 8b692610bcff (16 revisions)\n1ad5c734a5 Roll recipe dependencies (trivial).\n21fd70c153 Roll recipe dependencies (trivial).\nd56fcbe0e3 Roll vulkan-deps from 1f04d1b21852 to abe1fefc22af (13 revisions)\n32c83c8526 Roll recipe dependencies (trivial).\n583a75ea28 Roll recipe dependencies (trivial).\n36e509ddad [skottie] Fix gradient count overflow in 32 bit builds\nbe0ec8e4cb [graphite] Fix double translation in standalone clip mask fallback path\na80e3db937 Make sure tracked stencil clear rect is done in native coords.\n94db35da9a Roll vulkan-deps from e6f8ad39a426 to 1f04d1b21852 (1 revision)\n4153e67b62 Roll recipe dependencies (trivial).\n653a691cf2 Roll ANGLE from fc174c46a137 to c1a25085dd9e (14 revisions)\na4e0ed8d5b Roll Skia Infra from a736e8709729 to 8d556d436e0f (14 revisions)\n8a4c7365a7 Roll Dawn from 318132945735 to b87a8b9b6489 (27 revisions)\n6284e1a780 Roll recipe dependencies (trivial).\n3d1fc554f1 Roll vulkan-deps from f6d1d22e985f to e6f8ad39a426 (2 revisions)\ndbcacb7cf1 Roll SKP CIPD package from 568 to 569\n8bf65996ca Roll vulkan-deps from 054012628d6f to f6d1d22e985f (4 revisions)\nf3bd16e65e Roll vulkan-deps from 69340ba4efec to 054012628d6f (1 revision)\n6a541bef31 Roll recipe dependencies (trivial).\n0f1aed68b9 Roll vulkan-deps from ef0d2fd00095 to 69340ba4efec (11 revisions)\n04d1ee4b9c Roll recipe dependencies (trivial).\n6ecffccd32 Roll recipe dependencies (trivial).\n8489536418 Add Bazel task to build on Intel Macs\n47870d5727 [rust bmp] Reduce fixed overhead for small decodes\n07c0fbfdf0 Roll vulkan-deps from 7ea2d2b72528 to ef0d2fd00095 (4 revisions)\n707bd0f94a Roll recipe dependencies (trivial).\n7ef4df44d6 Roll ANGLE from efe382b830f8 to fc174c46a137 (13 revisions)\n6671b54e94 Roll debugger-app-base from 7d52f7d9b6c7 to 60e75023b30b\n83b4501ec3 Roll Skia Infra from 6e680898a941 to a736e8709729 (7 revisions)\n86ea16cdb6 Roll Dawn from 44d9faab2712 to 318132945735 (25 revisions)\naddd8a80b8 Roll recipe dependencies (trivial).\n387a110203 Roll recipe dependencies (trivial).\n6d145bc347 Roll vulkan-deps from b85f8363a07f to 7ea2d2b72528 (9 revisions)\nd2aee9cc41 [infra] Update dimensions for devonf Android devices\n2c4e3993fd Roll recipe dependencies (trivial).\ncf6d28f51d Updated \"procs_utils\" build rules to support PNG encoding\nab3a7b98c9 Roll vulkan-deps from 8ef965cdf8d0 to b85f8363a07f (4 revisions)\n7f250df84d Roll recipe dependencies (trivial).\n7b42d1251d Roll recipe dependencies (trivial).\n3c25d55510 Roll ANGLE from d3728521450c to efe382b830f8 (16 revisions)\n05d9d214e0 Roll Skia Infra from fe8945d89a4c to 6e680898a941 (12 revisions)\n8a92ef6856 Roll Dawn from 0b1713dac2c2 to 44d9faab2712 (30 revisions)\nd3c0400729 Roll recipe dependencies (trivial).\n4a579356bd Roll recipe dependencies (trivial).\n542c8bdd7f Roll recipe dependencies (trivial).\nb4c3fe8c0d [graphite] Search for layer from last RenderStep, insert remaining steps in reverse order\n2fff8fd068 Roll recipe dependencies (trivial).\n5ae6e32b96 [Maintenance] Feed SkSerialProcs to SkBinaryWriteBuffer\ndd572c07f6 Roll vulkan-deps from bbc872ec2e93 to 8ef965cdf8d0 (12 revisions)\n014c00005a Roll recipe dependencies (trivial).\n2013d844ea [Maintenance] Made the SkData object within URLDataManager const\n4bbfe375b9 Roll recipe dependencies (trivial).\n8df24be665 Split skia_defaults into skia_flags_defaults.\n51a62da33d Fix bazel DM target\n040d9f55de [bazel] Resolve external path instead of hardcoding it\n1ff92f8798 Roll recipe dependencies (trivial).\n5a0e6f51e5 Roll vulkan-deps from f79b8eaae53b to bbc872ec2e93 (5 revisions)\n6095c404be Roll ANGLE from 1bb9d6a05849 to d3728521450c (13 revisions)\nd9aac29539 Roll Skia Infra from dc5c43ee2e11 to fe8945d89a4c (19 revisions)\nde721ea8d1 Roll Dawn from 6bcedae5720d to 0b1713dac2c2 (19 revisions)\nf1a2f3f596 Roll SwiftShader from eb0bee078ef2 to a7c547b55474 (1 revision)\n6137414bef Roll recipe dependencies (trivial).\ne77ee11b75 Roll recipe dependencies (trivial).\na8b9d3dd18 Clarify comments in SkEdge\n3ed97c97e8 Address speculative bug in AA edge detection\n74f97c48dd Validate SkDescriptor length alignment on read\n8c9602e856 [graphite] Remove mostly extraneous RPDesc label tracing\n5e234fb8a3 [graphite] Refactor layer/binding-list/draw recording functions\nd7f3832bef Add rust png build flags to gn_to_bp.py\n58dba0595e Roll vulkan-deps from abeb70d7ee3c to f79b8eaae53b (4 revisions)\n35319fdfca Roll recipe dependencies (trivial).\n075fbe4778 Prefer outline over a distant EBDT/EBLC strike in Fontations\ne5a19c851f Roll recipe dependencies (trivial).\n\nCanonical link: https://commits.webkit.org/318145@main",
      "email": "aperez@igalia.com",
      "hash": "fb3d4a5ec40a8765c352b36b5b9e841b9afa5df6",
      "subject": "Update Skia to 2026-07-28 (bb33c115454b273613c515245ec3d4ae0a305b0b)"
    },
    "318146@main": {
      "author": "Carlos Alberto Lopez Perez",
      "avatar": "https://www.gravatar.com/avatar/05326c1dbe06f486e884975e73f25179?d=identicon\u0026s=64",
      "cl": "318146@main",
      "clUrl": "https://commits.webkit.org/318146@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320499\n\nReviewed by Carlos Garcia Campos.\n\n317226@main removed the port subdirectory from being part of the name uploaded\nto results.webkit.org, and 317233@main made Google Test cases use a dot like\nthe Mac ports do. However, neither updated --json-output, which still uses the\nold names.\n\nThis causes problems on the EWS for API tests on GTK and WPE, when there are\nfailures on a run it tries to consult resuls.webkit.org to see if the failure\nis pre-existent but for that query it uses the test names as reported in the\njson file, and those names don't match anymore.\n\nFix that by ensuring that the names used for the tests stay consistent both in\n--json-output as well as on the names used for the upload to results.webkit.org\n\nWhen running tests accept as argument for the test to run both a binary path (full\nor relative) on the command line as well as the bare name with the port subdirectory\nremoved. So the previous naming still works to specify tests to run even when the\nname of the tests reported uses the bare name everywhere now.\n\nAlso added unit tests to verify this works as expected and doesn't regress,\nincluding also round trip testing from the canonical names written to --json-output\nback to the command-line runner.\n\n* Tools/Scripts/webkitpy/api_tests/glib_api_test_runner_unittest.py: Added.\n(StubTestRunner):\n(StubTestRunner.__init__):\n(StubTestRunner._test_programs_base_dir):\n(StubTestRunner.is_google_test):\n(GLibAPITestRunnerTest):\n(GLibAPITestRunnerTest.setUp):\n(GLibAPITestRunnerTest.tearDown):\n(GLibAPITestRunnerTest._create_executable):\n(GLibAPITestRunnerTest.test_resolves_bare_and_prefixed_binary_names):\n(GLibAPITestRunnerTest.test_canonical_and_prefixed_names_select_the_same_glib_subtest):\n(GLibAPITestRunnerTest.test_canonical_google_test_name_resolves_and_selects_only_its_test_case):\n(GLibAPITestRunnerTest.test_multiple_subtests_are_preserved):\n(GLibAPITestRunnerTest.test_uploaded_names_can_be_passed_back_to_the_runner):\n(GLibAPITestRunnerTest.test_json_output_uses_uploaded_test_names):\n* Tools/glib/api_test_runner.py:\n(TestRunner._resolve_test_program): Added.\n(TestRunner._get_tests):\n(TestRunner._generate_test_list_for_json_output): Added.\n(TestRunner._canonical_binary_name): Added.\n(TestRunner._getsubtests_to_run_for_test):\n(TestRunner.run_tests):\n(TestRunner.run_tests.generate_test_list_for_json_output): Deleted.\n\nCanonical link: https://commits.webkit.org/318146@main",
      "email": "clopez@igalia.com",
      "hash": "da58bb4f55b16310af446902cf4d58e7f97fcf74",
      "subject": "REGRESSION(317233@main): REGRESSION(317226@main): [GLIB] API test names reported in --json-output don't match the names reported to results.webkit.org"
    },
    "318147@main": {
      "author": "Youenn Fablet",
      "avatar": "https://www.gravatar.com/avatar/0a9886e582a7aee1eb908eb59af36da4?d=identicon\u0026s=64",
      "cl": "318147@main",
      "clUrl": "https://commits.webkit.org/318147@main",
      "description": "rdar://183422054\nhttps://bugs.webkit.org/show_bug.cgi?id=320454\n\nReviewed by Chris Dumez.\n\nThe contract is to call CFReadStreamSignalEvent when the CFReadStream is opened.\nBut pendingStreamSchedule can be called before pendingStreamOpen.\n\nWe are now registering the data available handler (that can call CFReadStreamSignalEvent) in pendingStreamCanRead.\nAt that point, we know it makes sense to register this handler since CFNetwork is interested in data.\n\nWe register the data available handler at the first call of pendingStreamCanRead, based on context isHTTP2OrLater.\nWe also move the HTTP1.1 check there since it will fail the load immediately afterwards.\n\n* Source/WebCore/platform/network/cf/FormDataStreamCFNet.mm:\n(WebCore::pendingStreamOpen):\n(WebCore::pendingStreamCanRead):\n(WebCore::pendingStreamSchedule):\n(WebCore::createHTTPBodyCFReadStream):\n(WebCore::pendingStreamUnschedule): Deleted.\n\nCanonical link: https://commits.webkit.org/318147@main",
      "email": "youenn@apple.com",
      "hash": "c9df83b2f0da3b9cbdafc9ac3afc99b0ad728310",
      "subject": "pendingStreamSchedule should not allow to call CFReadStreamSignalEvent before pendingStreamOpen"
    },
    "318148@main": {
      "author": "Carlos Garcia Campos",
      "avatar": "https://www.gravatar.com/avatar/8393f7e76d83c8a147cb852d8fb1a959?d=identicon\u0026s=64",
      "cl": "318148@main",
      "clUrl": "https://commits.webkit.org/318148@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320544\n\nReviewed by Alejandro G. Castro.\n\nWe only need to apply the flattened bounds when the layer is empty to\nget proper bounds from the children.\n\n* Source/WebCore/platform/graphics/skia/SkiaCompositingLayer.cpp:\n(WebCore::SkiaCompositingLayer::geometryFor3DRenderingContext const):\n\nCanonical link: https://commits.webkit.org/318148@main",
      "email": "cgarcia@igalia.com",
      "hash": "0449e10b207f116794d891027af2930f2e17798c",
      "subject": "REGRESSION(318066@main): [GTK][WPE] Skia compositor: do not apply flattened bounds transformation if layer is not empty"
    },
    "318149@main": {
      "author": "Youenn Fablet",
      "avatar": "https://www.gravatar.com/avatar/0a9886e582a7aee1eb908eb59af36da4?d=identicon\u0026s=64",
      "cl": "318149@main",
      "clUrl": "https://commits.webkit.org/318149@main",
      "description": "rdar://183147942\nhttps://bugs.webkit.org/show_bug.cgi?id=320087\n\nReviewed by Jean-Yves Avenard.\n\nFor iOS, all webrtc tracks are mixed in a source, whose id is \"default\".\nThis is is used when adding the mixed source to the webprocess wide renderer and we would use the id to set the destination speaker.\n\nThe webrtc track renderer IncomingAudioMediaStreamTrackRendererUnit would also set the destination speaker everytime a new webrtc track is added.\nThis makes speaker selection works in case two webrtc tracks are rendered. If there is only one webrtc track rendered, \"default\" would be used.\n\nWe simplify the handling by setting the destination speaker whenever starting to render an audio track (whether webrtc or not), in AudioMediaStreamTrackRendererCocoa::setRegisteredDataSource.\nWe remove the other call sites.\nThis is a no-op outside of iOS since AudioMediaStreamTrackRendererUnit::setLastDeviceUsed is a no-op outside of iOS.\n\nManually tested.\n\n* Source/WebCore/platform/mediastream/cocoa/AudioMediaStreamTrackRendererCocoa.cpp:\n(WebCore::AudioMediaStreamTrackRendererCocoa::setRegisteredDataSource):\n* Source/WebCore/platform/mediastream/cocoa/AudioMediaStreamTrackRendererUnit.cpp:\n(WebCore::AudioMediaStreamTrackRendererUnit::getDeviceUnit):\n* Source/WebCore/platform/mediastream/cocoa/IncomingAudioMediaStreamTrackRendererUnit.cpp:\n(WebCore::IncomingAudioMediaStreamTrackRendererUnit::addSource):\n\nCanonical link: https://commits.webkit.org/318149@main",
      "email": "youenn@apple.com",
      "hash": "bdaffe35a57ea067f07b46dd45ba29a1c0557afd",
      "subject": "iOS Safari: `setSinkId()` returns success but audio output doesn't actually switch on single-track WebRTC MediaStream. Works correctly with dual-track streams."
    },
    "318150@main": {
      "author": "Youenn Fablet",
      "avatar": "https://www.gravatar.com/avatar/0a9886e582a7aee1eb908eb59af36da4?d=identicon\u0026s=64",
      "cl": "318150@main",
      "clUrl": "https://commits.webkit.org/318150@main",
      "description": "rdar://183322787\nhttps://bugs.webkit.org/show_bug.cgi?id=320362\n\nReviewed by Chris Dumez.\n\nWe were calling takeNextChunk in a while loop and everytime checking for error or end of stream.\nWe can improve upon this by making a single takeAllChunks method, that will return either the error, or the chunks and whether enf of stream or not.\n\nWe apply this and simplify the call sites.\nWe do the same for the other read method, that we rename readInto.\n\nCovered by existing tests.\n\n* Source/WebCore/Modules/fetch/FormDataConsumer.cpp:\n(WebCore::FormDataConsumer::drainPendingStream):\n* Source/WebCore/platform/network/PendingStreamState.cpp:\n(WebCore::PendingStreamState::takeAvailableChunks):\n(WebCore::PendingStreamState::takeNextChunk): Deleted.\n(WebCore::PendingStreamState::readInto):\n(WebCore::PendingStreamState::read): Deleted.\n* Source/WebCore/platform/network/PendingStreamState.h:\n* Source/WebKit/NetworkProcess/ServiceWorker/WebSWServerToContextConnection.cpp:\n(WebKit::WebSWServerToContextConnection::pendingStreamDataAvailable):\n* Source/WebKit/WebProcess/Network/WebResourceLoader.cpp:\n(WebKit::WebResourceLoader::initPendingStreamState):\n* Source/WebCore/platform/network/cf/FormDataStreamCFNet.mm:\n(WebCore::pendingStreamRead):\n\nCanonical link: https://commits.webkit.org/318150@main",
      "email": "youenn@apple.com",
      "hash": "e7be28da94629cd1f6d51d59561da29f830718b2",
      "subject": "Improve ability to get all chunks of PendingStreamState at once"
    },
    "318151@main": {
      "author": "Jean-Yves Avenard",
      "avatar": "https://www.gravatar.com/avatar/509313899deeb9262fad8f5e04093f5b?d=identicon\u0026s=64",
      "cl": "318151@main",
      "clUrl": "https://commits.webkit.org/318151@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320509\nrdar://183471290\n\nReviewed by Youenn Fablet.\n\nWhen site-isolation is enabled and a RemoteMediaSessionProxy is in use,\nhasPlayedAudiblySinceLastInterruption would always return a stale value\nas m_hasPlayedAudiblySinceLastInterruption is only updated in the UIProcess.\n\nWe override the RemoteMediaSessionProxy::hasPlayedAudiblySinceLastInterruption\nto return the cached value provided by the UIP.\n\nCovered by existing tests.\n\n* LayoutTests/platform/ios-site-isolation/TestExpectations:\n* Source/WebCore/platform/audio/PlatformMediaSession.h:\n* Source/WebKit/UIProcess/Media/RemoteMediaSessionProxy.h:\n\nCanonical link: https://commits.webkit.org/318151@main",
      "email": "jya@apple.com",
      "hash": "e84c654398d16bcc70c82d5d3580be777a70d2ef",
      "subject": "[site-isolation] http/wpt/mediasession/setCaptureState-audio-category.html is a permanent failure"
    },
    "318152@main": {
      "author": "Philippe Normand",
      "avatar": "https://www.gravatar.com/avatar/eef27203750af3510263cc29af21a16e?d=identicon\u0026s=64",
      "cl": "318152@main",
      "clUrl": "https://commits.webkit.org/318152@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320550\n\nReviewed by Carlos Garcia Campos.\n\nWithout a firefox quirk for play.hbomax.com we are redirected to a page asking to install some HBO\nmobile app.\n\nCanonical link: https://commits.webkit.org/318152@main",
      "email": "philn@igalia.com",
      "hash": "1d43d49faf11eafdc92d217b08d1a26a910a44e7",
      "subject": "[GLib] Quirks: Make HBOMax library accessible again"
    },
    "318153@main": {
      "author": "Alan Baradlay",
      "avatar": "https://www.gravatar.com/avatar/788d66417db806c567552cfa1ae89f77?d=identicon\u0026s=64",
      "cl": "318153@main",
      "clUrl": "https://commits.webkit.org/318153@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320501\n\nReviewed by Antti Koivisto.\n\nThe flex code is three layers: RenderFlexibleBox, the LayoutIntegration classes that reach the render tree for it,\nand the formatting context that runs the algorithm. Dependencies should point down that list. Four places went the\nother way.\n\nFlexFormattingContext held a FlexIntegrationUtils by value, so the formatting context's header had to include the\nintegration layer's, and the formatting context constructed the thing that exists to serve it. FlexLayout builds it\nnow and passes FlexIntegrationUtils\u0026, which the formatting context keeps by reference, so a forward declaration is\nenough and the include is gone. Its constructor also drops the FlexItemContentCache argument, which was only there\nto build the FlexIntegrationUtils.\n\nFlexItemContentCache was in the formatting context's directory but the formatting context never touched it. The\nintegration layer owns it, fills it, and keys it on the renderer -- even its TZONE implementation lives in\nFlexIntegrationUtils.cpp -- so move it to layout/integration/flex and into the LayoutIntegration namespace.\n\nThe formatting context read one renderer-keyed set out of FlexLayoutState directly, reaching for the item's renderer\nto do it. That read goes through FlexIntegrationUtils::hasFlexItemCompletedLayout instead, which leaves every reader\nand writer of the renderer-keyed layout state in the integration layer.\n\nRenderFlexibleBox befriended five classes but only two of them touch anything private: LayoutIntegration::FlexLayout\nfor RenderBlock::updateBlockChildDirtyBitsBeforeLayout, and FlexItemIntrinsicWidthComputationScope for the intrinsic\nwidth flag. The other three, including both formatting context classes, are removed. RenderFlexibleBox also included\nFlexFormattingContext.h in both its header and its implementation without needing either; the header already had the\nFlexFormattingUtils.h it uses for GapType.\n\nFlexLayoutState stays where it is: moving it to the integration layer would put the include the formatting context's\nheader just lost back again. Its renderer coupling is a forward declaration and weak sets, which is what an algorithm\nthat runs on renderers looks like.\n\n* Source/WebCore/Headers.cmake:\n* Source/WebCore/WebCore.xcodeproj/project.pbxproj:\n* Source/WebCore/layout/formattingContexts/flex/FlexFormattingContext.cpp:\n(WebCore::FlexFormattingContext::FlexFormattingContext):\n(WebCore::FlexFormattingContext::computeCrossSizeForFlexItems):\n* Source/WebCore/layout/formattingContexts/flex/FlexFormattingContext.h:\n* Source/WebCore/layout/formattingContexts/flex/FlexItemContentCache.h: Removed.\n* Source/WebCore/layout/integration/flex/FlexIntegrationUtils.cpp:\n(WebCore::LayoutIntegration::FlexIntegrationUtils::hasFlexItemCompletedLayout const):\n* Source/WebCore/layout/integration/flex/FlexIntegrationUtils.h:\n* Source/WebCore/layout/integration/flex/FlexItemContentCache.h: Copied from Source/WebCore/layout/formattingContexts/flex/FlexItemContentCache.h.\n* Source/WebCore/layout/integration/flex/LayoutIntegrationFlexLayout.cpp:\n(WebCore::LayoutIntegration::FlexLayout::layout):\n* Source/WebCore/layout/integration/flex/LayoutIntegrationFlexLayout.h:\n* Source/WebCore/rendering/RenderFlexibleBox.cpp:\n* Source/WebCore/rendering/RenderFlexibleBox.h:\n\nCanonical link: https://commits.webkit.org/318153@main",
      "email": "zalan@apple.com",
      "hash": "4a230cd0dad3946daaccb6e703481a6c22a6ec98",
      "subject": "[cleanup] Fix the layering between the flex formatting context and its integration"
    },
    "318154@main": {
      "author": "Alan Baradlay",
      "avatar": "https://www.gravatar.com/avatar/788d66417db806c567552cfa1ae89f77?d=identicon\u0026s=64",
      "cl": "318154@main",
      "clUrl": "https://commits.webkit.org/318154@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320513\n\nReviewed by Antti Koivisto.\n\nA flex container's first baseline comes from one of its flex lines, and FlexLayout::flexItemForFirstBaseline picks\nthat line as a slice of the flex item list: a start index and an item count. flex-wrap: wrap-reverse stacks the lines\nthe other way round, so the visually-first line is the last one in item order, and that function flips for it -- it\ntakes the slice from the end of the list instead of the start.\n\nsetFlexItemCountsForFirstAndLastLine flipped as well, reporting the visually-first line's count as\nnumberOfFlexItemsOnFirstLine. Two flips, but only one of the two numbers that make up the slice: the start index came\nout of the flipped count and the item count out of the other one. When the two lines hold the same number of items\nthat cancels out, which is every existing test. When they do not, the slice starts partway through one line and ends\npartway through the next, and the baseline is taken from an item on the wrong line -- so the container sits at the\nwrong height in its parent's line box.\n\nCount the lines in the order they were collected, which is the order the item list is in, and leave the visual\nmapping to the caller that already does it. The counts are what index that list, so they have to be in its order.\n\nThe same slice feeds lastLineBaseline, which was wrong in the same way.\n\n* LayoutTests/imported/w3c/web-platform-tests/css/css-flexbox/flexbox-baseline-wrap-reverse-unequal-lines-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-flexbox/flexbox-baseline-wrap-reverse-unequal-lines.html: Added.\n* Source/WebCore/layout/formattingContexts/flex/FlexFormattingContext.cpp:\n(WebCore::FlexFormattingContext::setFlexItemCountsForFirstAndLastLine):\n* Source/WebCore/layout/formattingContexts/flex/FlexFormattingContext.h:\n\nCanonical link: https://commits.webkit.org/318154@main",
      "email": "zalan@apple.com",
      "hash": "cd61603bb4c75a6c536c73aa90e4a83fde402f09",
      "subject": "[Flex] First baseline of a wrap-reverse flex container comes from the wrong flex line"
    },
    "318155@main": {
      "author": "Chris Dumez",
      "avatar": "https://www.gravatar.com/avatar/a9f21fe3a8baf79b45f3c91572187bdc?d=identicon\u0026s=64",
      "cl": "318155@main",
      "clUrl": "https://commits.webkit.org/318155@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320541\n\nReviewed by Gerald Squelart.\n\n`PaymentAuthorizationPresenter::completePaymentMethodSelection()` set the\ndeferred payment request on the PKPaymentRequestPaymentMethodUpdate *after*\nhanding the update to the delegate via `completePaymentMethodSelection:`. That\ndelegate call is synchronous and consuming: WKPaymentAuthorizationDelegate\nimmediately invokes PassKit's stored completion block with the update object\n`(std::exchange(_didSelectPaymentMethodCompletion, nil)(update.get()))`. By the\ntime `setDeferredPaymentRequest:` ran, PassKit had already consumed the object,\nso the deferred payment request was silently dropped for payment-method\nselection.\n\nAll three sibling handlers (completeShippingContactSelection,\ncompleteShippingMethodSelection, completeCouponCodeChange) set the deferred\npayment request *before* their `complete...:` call; the payment-method path was\nthe sole outlier with inverted ordering. Every other property in\n`completePaymentMethodSelection()` is likewise set before the delegate call.\n\nMove the `setDeferredPaymentRequest:` block ahead of the\n`completePaymentMethodSelection:` call so the deferred payment terms are\napplied before PassKit consumes the update.\n\n* Source/WebKit/Platform/cocoa/PaymentAuthorizationPresenter.mm:\n(WebKit::PaymentAuthorizationPresenter::completePaymentMethodSelection):\n\nCanonical link: https://commits.webkit.org/318155@main",
      "email": "cdumez@apple.com",
      "hash": "fb26be4eafff34b547db17ea687379119f61fbf8",
      "subject": "Apple Pay deferred payment request is dropped when changing payment method"
    },
    "318156@main": {
      "author": "Philippe Normand",
      "avatar": "https://www.gravatar.com/avatar/eef27203750af3510263cc29af21a16e?d=identicon\u0026s=64",
      "cl": "318156@main",
      "clUrl": "https://commits.webkit.org/318156@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320553\n\nReviewed by Carlos Garcia Campos.\n\nUse Firefox UA for all hbomax.com sub-domains. The previous approach broke once already and we had\nto handle play.hbomax.com. This new approach should be more reliable in case of additional\nUser-Agent checks on hbomax.\n\n* Source/WebCore/platform/glib/UserAgentQuirks.cpp:\n(WebCore::urlRequiresFirefoxBrowser):\n(WebCore::UserAgentQuirks::quirksForURL):\n\nCanonical link: https://commits.webkit.org/318156@main",
      "email": "philn@igalia.com",
      "hash": "933452434c72a47bb22c327ed65c8c11d2c2e65e",
      "subject": "[GLib] Simplify hboxmax User-Agent quirk"
    },
    "318157@main": {
      "author": "Lauro Moura",
      "avatar": "https://www.gravatar.com/avatar/6157f52d61e04c2c63fe7ff668ba69b3?d=identicon\u0026s=64",
      "cl": "318157@main",
      "clUrl": "https://commits.webkit.org/318157@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320527\n\nReviewed by Carlos Alberto Lopez Perez.\n\nOnly call xcodebuild to get the sdk version if the command to run\nrequires it.\n\n* Tools/Scripts/measure-build-time:\n(get_args):\n\nCanonical link: https://commits.webkit.org/318157@main",
      "email": "lmoura@igalia.com",
      "hash": "afad2f07d0e61c862613a8334445a87859f56782",
      "subject": "REGRESSION(318023@main) [Build perf] measure-build-time tests calls xcodebuild unconditionally"
    },
    "318158@main": {
      "author": "Alejandro G. Castro",
      "avatar": "https://www.gravatar.com/avatar/c8c6e17acbdf0549b05d6f7fc2c1c4dc?d=identicon\u0026s=64",
      "cl": "318158@main",
      "clUrl": "https://commits.webkit.org/318158@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=317845\n\nReviewed by Carlos Garcia Campos and Adrian Perez de Castro.\n\nWebKit's auxiliary processes (Web, Network and GPU) are launched by\nProcessLauncherGLib via g_subprocess_launcher_spawnv(). That does not work on\nplatforms where the auxiliary processes cannot be spawned as executables and\nmust be created by the embedder instead, for example Android, where each process\nis a service started with bindService(). With the legacy libwpe API this was\nhandled by libwpe's process provider, but a WPEPlatform-only build\n(ENABLE_WPE_LEGACY_API=OFF) had no equivalent and could only fall back to\nspawning executables.\n\nAdd a WPEProcessManager abstract class for Android that we subclass to launch and\nterminate auxiliary processes, and register it process-wide with\nwpe_process_manager_set_default(). This is currently only needed on Android, so\nthe WPEProcessManager type is built and exposed only on Android if\nWPE_PLATFORM_PROCESS_MANAGER_ANDROID config is defined, and\nthe ProcessLauncherGLib integration is guarded with OS(ANDROID); other ports\nkeep the existing subprocess launching and are unaffected. ProcessLauncherGLib\nuses the default manager through wpe_process_manager_get_default() when one is\nset. The process manager is a system-level facility that does not change at\nruntime, so it is a global default rather than a per-WPEDisplay object.\n\n* Source/WebKit/UIProcess/Launcher/glib/ProcessLauncherGLib.cpp: Use the default\n  WPEProcessManager when set on Android.\n(WebKit::ProcessLauncher::launchProcess):\n(WebKit::ProcessLauncher::terminateProcess):\n* Source/WebKit/WPEPlatform/CMakeLists.txt: Build the new files on Android.\n* Source/cmake/OptionsWPE.cmake: Set WPE_PLATFORM_PROCESS_MANAGER_ANDROID on Android.\n* Source/WebKit/WPEPlatform/wpe/WPEConfig.h.in: Add WPE_PLATFORM_PROCESS_MANAGER_ANDROID.\n* Source/WebKit/WPEPlatform/wpe/WPEProcessManager.cpp: Added.\n(wpe_process_launch_options_copy):\n(wpe_process_launch_options_free):\n(wpe_process_launch_options_new):\n(wpe_process_launch_options_get_process_type):\n(wpe_process_launch_options_get_process_id):\n(wpe_process_launch_options_get_ipc_socket_fd):\n(wpe_process_manager_class_init):\n(wpe_process_manager_launch):\n(wpe_process_manager_terminate):\n(wpe_process_manager_get_default):\n(wpe_process_manager_set_default):\n* Source/WebKit/WPEPlatform/wpe/WPEProcessManager.h: Added.\n* Source/WebKit/WPEPlatform/wpe/wpe-platform.h: Include WPEProcessManager.h on Android.\n\nCanonical link: https://commits.webkit.org/318158@main",
      "email": "alex@igalia.com",
      "hash": "028fba0979e9b3911d607034c7e2f43814c5553d",
      "subject": "[WPE] WPEPlatform add WPEProcessManager to allow embedder launch the auxiliary processes"
    },
    "318159@main": {
      "author": "Josh Hernandez",
      "avatar": "https://www.gravatar.com/avatar/e268e9ba8d96006649c1745a48db2f73?d=identicon\u0026s=64",
      "cl": "318159@main",
      "clUrl": "https://commits.webkit.org/318159@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320455\nrdar://183422611\n\nReviewed by Eric Carlson.\n\nFind in Page only searched caption tracks that were already showing,so\na word spoken in a video wasn't findable unless the user first turned captions on.\nNow the cue search lives on HTMLMediaElement.\n\nWhen a find query runs and no caption or subtitle track is showing,\nthe element shows the best one, ranked by the user's preferred caption\nlanguages and then the author's default track, so its cues can be searched.\nThe track's previous mode is restored when Find is dismissed. If a track\nis already showing, that one is searched instead.\n\nAdds a layout test that, with captions off, searches across three preferred\nlanguages and confirms Find shows the highest-priority track while searching and\nrestores it to off when cleared. It also confirms a track the user already has\nshowing is searched as-is and left untouched.\n\n* Source/WebCore/dom/Document.cpp:\n(WebCore::Document::findCueMatches):\n* Source/WebCore/html/HTMLMediaElement.cpp:\n(WebCore::HTMLMediaElement::removeTextTrack):\n(WebCore::isSubtitleOrCaptionTrackKind):\n(WebCore::HTMLMediaElement::hasShowingFindSearchableTextTrackExcept const):\n(WebCore::HTMLMediaElement::bestFindCaptionTrack const):\n(WebCore::HTMLMediaElement::updateFindCaptionTrack):\n(WebCore::HTMLMediaElement::clearFindCaptionTrack):\n(WebCore::HTMLMediaElement::findCueMatches):\n* Source/WebCore/html/HTMLMediaElement.h:\n* Source/WebCore/page/Page.cpp:\n(WebCore::Page::clearFindCaptionTracks):\n* Source/WebCore/page/Page.h:\n* Source/WebKit/WebProcess/WebPage/FindController.cpp:\n(WebKit::FindController::hideFindUI):\n* Source/WebKit/WebProcess/WebPage/WebFoundTextRangeController.cpp:\n(WebKit::WebFoundTextRangeController::clearAllDecoratedFoundText):\n* LayoutTests/media/track/text-track-find-preferred-language-expected.txt: Added.\n* LayoutTests/media/track/text-track-find-preferred-language.html: Added.\n* Source/WebCore/testing/Internals.cpp:\n(WebCore::Internals::clearFindCaptionTracks):\n* Source/WebCore/testing/Internals.h:\n* Source/WebCore/testing/Internals.idl:\n\nCanonical link: https://commits.webkit.org/318159@main",
      "email": "jhernandez89@apple.com",
      "hash": "a82cb239707d0b8c17f94d92c1dab4f0b83fefd4",
      "subject": "Find in Page can’t find any matches for a video’s captions when turned off"
    },
    "318160@main": {
      "author": "Roberto Rodriguez",
      "avatar": "https://www.gravatar.com/avatar/45f4995b936231d4893f38e70cbc4805?d=identicon\u0026s=64",
      "cl": "318160@main",
      "clUrl": "https://commits.webkit.org/318160@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=318410\nrdar://181198809\n\nReviewed by Ryan Reno.\n\nRe-import content-security-policy/connect-src tests from wpt\n\n* LayoutTests/TestExpectations:\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/connect-src/connect-src-fetch-keepalive-allowed.sub-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/connect-src/connect-src-fetch-keepalive-allowed.sub.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/connect-src/connect-src-fetch-keepalive-blocked.sub-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/connect-src/connect-src-fetch-keepalive-blocked.sub.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/connect-src/connect-src-fetch-keepalive-redirect-to-blocked.sub-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/connect-src/connect-src-fetch-keepalive-redirect-to-blocked.sub.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/connect-src/connect-src-text-import-allowed.sub-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/connect-src/connect-src-text-import-allowed.sub.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/connect-src/connect-src-text-import-blocked.sub-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/connect-src/connect-src-text-import-blocked.sub.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/connect-src/connect-src-webtransport-allowed.sub.https-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/connect-src/connect-src-webtransport-allowed.sub.https.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/connect-src/connect-src-webtransport-blocked.sub.https-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/connect-src/connect-src-webtransport-blocked.sub.https.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/connect-src/connect-src-webtransport-hashes.sub.https-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/connect-src/connect-src-webtransport-hashes.sub.https.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/connect-src/resources/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/connect-src/support/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/connect-src/w3c-import.log:\n* LayoutTests/tests-options.json:\n* LayoutTests/platform/mac-sequoia/TestExpectations:\n* LayoutTests/platform/glib/TestExpectations:\n\nCanonical link: https://commits.webkit.org/318160@main",
      "email": "roberto_rodriguez2@apple.com",
      "hash": "2077a44a217ba4ad32eb6573bc54c0013d219056",
      "subject": "Re-import content-security-policy/connect-src"
    },
    "318161@main": {
      "author": "Alex Christensen",
      "avatar": "https://www.gravatar.com/avatar/b087c5dfcb1233e80cad9105fd5a1ac6?d=identicon\u0026s=64",
      "cl": "318161@main",
      "clUrl": "https://commits.webkit.org/318161@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320479\nrdar://183446539\n\nReviewed by Youenn Fablet.\n\nThis re-merges 318000@main but with an additional check of\n__IPHONE_OS_VERSION_MIN_REQUIRED \u003e= 260400 because the ios-safer-cpp\nbot is still building with the iOS 26.0 SDK, which doesn't have the\nneeded Network.framework symbols.\n\nTest: Tools/TestWebKitAPI/Tests/WebKit/WKWebView/WebTransport.mm\n\n* Source/WTF/wtf/PlatformHave.h:\n* Source/WebKit/NetworkProcess/cocoa/NetworkSoftLink.h:\n* Source/WebKit/NetworkProcess/cocoa/NetworkSoftLink.mm:\n* Source/WebKit/NetworkProcess/webtransport/NetworkTransportSession.cpp:\n* Source/WebKit/NetworkProcess/webtransport/NetworkTransportSession.h:\n* Source/WebKit/NetworkProcess/webtransport/NetworkTransportStream.cpp:\n* Source/WebKit/NetworkProcess/webtransport/NetworkTransportStream.h:\n* Source/WebKit/NetworkProcess/webtransport/cocoa/NetworkTransportSessionCocoa.mm:\n(WebKit::createParameters):\n(WebKit::NetworkTransportSession::create):\n(WebKit::NetworkTransportSession::initialize):\n(WebKit::NetworkTransportSession::setupDatagramConnection):\n(WebKit::NetworkTransportSession::createStream):\n(WebKit::NetworkTransportSession::terminate):\n(WebKit::NetworkTransportSession::isSessionClosed const):\n(WebKit::NetworkTransportSession::exportKeyingMaterial):\n* Source/WebKit/NetworkProcess/webtransport/cocoa/NetworkTransportStreamCocoa.mm:\n(WebKit::NetworkTransportStream::initializeReadyConnection):\n(WebKit::NetworkTransportStream::cancelReceive):\n(WebKit::NetworkTransportStream::cancelSend):\n* Source/WebKit/Shared/WebPreferencesDefaultValues.cpp:\n(WebKit::defaultWebTransportEnabled):\n* Tools/TestWebKitAPI/Helpers/cocoa/NetworkConnection.h:\n* Tools/TestWebKitAPI/Helpers/cocoa/NetworkConnection.mm:\n(TestWebKitAPI::Connection::abortReads):\n(TestWebKitAPI::Connection::abortWrites):\n(TestWebKitAPI::Connection::setRemoteReceiveErrorHandler):\n(TestWebKitAPI::Connection::setRemoteSendErrorHandler):\n(TestWebKitAPI::ConnectionGroup::drainWebTransportSession):\n* Tools/TestWebKitAPI/Helpers/cocoa/WebTransportServer.h:\n* Tools/TestWebKitAPI/Helpers/cocoa/WebTransportServer.mm:\n(TestWebKitAPI::WebTransportServer::isAvailable): Deleted.\n* Tools/TestWebKitAPI/Tests/WebKit/WKWebView/WebTransport.mm:\n(TestWebKitAPI::TEST(WebTransport, ClientBidirectional)):\n(TestWebKitAPI::TEST(WebTransport, ClientBidirectionalBYOB)):\n(TestWebKitAPI::TEST(WebTransport, Datagram)):\n(TestWebKitAPI::TEST(WebTransport, Unidirectional)):\n(TestWebKitAPI::TEST(WebTransport, ServerBidirectional)):\n(TestWebKitAPI::TEST(WebTransport, NetworkProcessCrash)):\n(TestWebKitAPI::TEST(WebTransport, Worker)):\n(TestWebKitAPI::TEST(WebTransport, WorkerAfterNetworkProcessCrash)):\n(TestWebKitAPI::TEST(WebTransport, ServiceWorker)):\n(TestWebKitAPI::CreateStreamsBeforeReady)):\n(TestWebKitAPI::DISABLED_CSP)):\n(TestWebKitAPI::ServerCertificateHashes)):\n(TestWebKitAPI::ServerConnectionTermination)):\n(TestWebKitAPI::BackForwardCache)):\n(TestWebKitAPI::ServerDrain)):\n(TestWebKitAPI::DISABLED_ClientStreamAborts)):\n(TestWebKitAPI::DISABLED_ServerStreamAborts)):\n\nCanonical link: https://commits.webkit.org/318161@main",
      "email": "achristensen@apple.com",
      "hash": "644d9105c163c06249cf14ab7e29757459ac5807",
      "subject": "Replace most of NetworkSoftLink with HAVE(WEBTRANSPORT)"
    },
    "318162@main": {
      "author": "Megan Gardner",
      "avatar": "https://www.gravatar.com/avatar/b466a5bcbfabf4d82a8ecc595db5a531?d=identicon\u0026s=64",
      "cl": "318162@main",
      "clUrl": "https://commits.webkit.org/318162@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320539\nrdar://182859944\n\nReviewed by Tim Horton and Abrar Rahman Protyasha.\n\n317100@main (\"Refactor Style::ComputedStyleProperties generation\") made adjacent NSAttributedString ranges that carry\nidentical attributes coalesce into a single run across shadow boundaries. This is a progression: the runs had byte-identical\nattributes (font, kern, stroke, color), so merging them into one range is the canonical form -- no attribute value changed. The\ncross-platform baselines already expected the merged output; only the stale mac-wk1 overrides still held the pre-merge split form.\n\n* LayoutTests/platform/mac-wk1/editing/mac/attributed-string/attributed-string-across-shadow-boundaries-1-expected.txt:\n* LayoutTests/platform/mac-wk1/editing/mac/attributed-string/attributed-string-across-shadow-boundaries-2-expected.txt:\n* LayoutTests/platform/mac-wk1/editing/mac/attributed-string/attributed-string-across-shadow-boundaries-3-expected.txt:\n* LayoutTests/platform/mac-wk1/editing/mac/attributed-string/attributed-string-across-shadow-boundaries-4-expected.txt:\n* LayoutTests/platform/mac-wk1/editing/mac/attributed-string/attributed-string-across-shadow-boundaries-5-expected.txt:\n\nCanonical link: https://commits.webkit.org/318162@main",
      "email": "megan_gardner@apple.com",
      "hash": "db6cf6a9c16245de2f8104305818648ec1b67ab9",
      "subject": "REGRESSION(317100@main): [Fizz] 5 editing/mac/attributed-string/attributed-string-across-shadow-boundaries tests are constant TEXT failures."
    },
    "318163@main": {
      "author": "Yusuke Suzuki",
      "avatar": "https://www.gravatar.com/avatar/3455d9081295e3e740c1ffa901217d9b?d=identicon\u0026s=64",
      "cl": "318163@main",
      "clUrl": "https://commits.webkit.org/318163@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320533\nrdar://183490993\n\nReviewed by Yijia Huang.\n\nGreedy * or + non-capturing parens in the tail position does not need inter-iteration backtracking state.\n\n1. For * case (term.quantityMinCount == 0)\n\n    Pattern like /(?:AA|A)*/ can never fail, because * succeeds even with zero iterations.\n    And because it is in the tail position, all backtracking are coming from the\n    greedy matching attempt of (?:AA|A). This means that we will never restore the\n    previous iteration's state to explore a different matching. When we failed in the current\n    iteration, we can just say \"the matching is complete\" because we are at the terminal position.\n\n2. For + case (term.quantityMinCount == 1)\n\n    Pattern like /(?:AA|A)+/ will need to match at least once. If we failed in this 1st iteration,\n    since this is the initial iteration, we have no context to restore, and we can simply fail.\n    If we matched once and in the second iteration, if we failed to match, then we also do not need\n    to restore to the 1st iteration since we already succeeded the 1st iteration (and + suffices),\n    and since it is a terminal position, we can just say \"the matching is complete\"\n\nAs a result, term.quantityMinCount \u003c= 1 cases never require per-iteration ParenContext when\nwe have these greedy patterns at the terminal position. Thus we can mark them `isTerminal` to\nskip ParenContext generation as an optimization.\n\nOn the other hand, term.quantityMinCount \u003e= 2 cannot work in this way. Let's have a RegExp matching\n`/(?:AA|A){2,}/.exec(\"AA\")`. The right answer is \"AA\" since \"A\" and \"A\" matches with 2 iterations.\nBut this is achieved by restoring the 1st iteration and taking a different alternative \"A\" instead of \"AA\".\nThus, inter-iteration backtracking state is necessary for this case.\n\nTests: JSTests/stress/yarr-terminal-parentheses-captures.js\n       JSTests/stress/yarr-terminal-parentheses-frame-layout.js\n       JSTests/stress/yarr-terminal-parentheses-min-count.js\n\n* JSTests/stress/yarr-terminal-parentheses-captures.js: Added.\n(shouldBe):\n(testExec):\n* JSTests/stress/yarr-terminal-parentheses-frame-layout.js: Added.\n(shouldBe):\n(test):\n* JSTests/stress/yarr-terminal-parentheses-min-count.js: Added.\n(shouldBe):\n(test):\n* Source/JavaScriptCore/yarr/Yarr.h:\n* Source/JavaScriptCore/yarr/YarrInterpreter.cpp:\n(JSC::Yarr::Interpreter::matchParenthesesTerminalBegin):\n(JSC::Yarr::Interpreter::matchParenthesesTerminalEnd):\n(JSC::Yarr::Interpreter::backtrackParenthesesTerminalBegin):\n* Source/JavaScriptCore/yarr/YarrJIT.cpp:\n* Source/JavaScriptCore/yarr/YarrPattern.cpp:\n(JSC::Yarr::YarrPatternConstructor::checkForTerminalParentheses):\n* Source/JavaScriptCore/yarr/YarrPattern.h:\n(JSC::Yarr::BackTrackInfoParenthesesTerminal::entryPositionIndex):\n\nCanonical link: https://commits.webkit.org/318163@main",
      "email": "ysuzuki@apple.com",
      "hash": "7c5dbbcba11029727e3494d5a12ae482a542774d",
      "subject": "[YARR] Extend ParenthesesSubpatternTerminal"
    },
    "318164@main": {
      "author": "Youenn Fablet",
      "avatar": "https://www.gravatar.com/avatar/0a9886e582a7aee1eb908eb59af36da4?d=identicon\u0026s=64",
      "cl": "318164@main",
      "clUrl": "https://commits.webkit.org/318164@main",
      "description": "rdar://183517329\nhttps://bugs.webkit.org/show_bug.cgi?id=320452\n\nReviewed by Eric Carlson.\n\nTo remove microphone interruption when echo cancellation is off, we should disable VPIO prewarming in GPUProcess when not needed.\nTo do so, we compute in WebPageProxy whether we will use echo cancellation from the gum request constraints.\nWe then pass that information via IPC to GPUConnectionToWebProcess::updateCaptureAccess which will prewarm the VPIO unit only if echo cancellation is on.\nIn case of GPU process crash, we lot the info whether echo cancellation is on or off.\nWe do not prewarm the VPIO unit, as this is quite rare and minimising the work on GPU process crash is probably best.\n\nManually tested.\n\n* Source/WebCore/platform/mediastream/MediaConstraints.cpp:\n(WebCore::MediaConstraints::willUseEchoCancellation const):\n* Source/WebCore/platform/mediastream/MediaConstraints.h:\n* Source/WebKit/GPUProcess/GPUConnectionToWebProcess.cpp:\n(WebKit::GPUConnectionToWebProcess::updateCaptureAccess):\n* Source/WebKit/GPUProcess/GPUConnectionToWebProcess.h:\n* Source/WebKit/GPUProcess/GPUProcess.cpp:\n(WebKit::GPUProcess::createGPUConnectionToWebProcess):\n(WebKit::GPUProcess::updateCaptureAccess):\n* Source/WebKit/GPUProcess/GPUProcess.h:\n* Source/WebKit/GPUProcess/GPUProcess.messages.in:\n* Source/WebKit/UIProcess/GPU/GPUProcessProxy.cpp:\n(WebKit::GPUProcessProxy::updateCaptureAccess):\n* Source/WebKit/UIProcess/GPU/GPUProcessProxy.h:\n* Source/WebKit/UIProcess/UserMediaPermissionRequestProxy.cpp:\n(WebKit::UserMediaPermissionRequestProxy::willUseEchoCancellation const):\n* Source/WebKit/UIProcess/UserMediaPermissionRequestProxy.h:\n* Source/WebKit/UIProcess/WebPageProxy.cpp:\n(WebKit::WebPageProxy::willStartCapture):\n(WebKit::WebPageProxy::gpuProcessExited):\n\nCanonical link: https://commits.webkit.org/318164@main",
      "email": "youenn@apple.com",
      "hash": "3c9fa32394331bf762d4f4047cff80336db5ab9d",
      "subject": "getUserMedia with echoCancellation:false still interrupts the microphone device system-wide on every capture start (unconditional VPIO instantiation)"
    },
    "318165@main": {
      "author": "Alan Baradlay",
      "avatar": "https://www.gravatar.com/avatar/788d66417db806c567552cfa1ae89f77?d=identicon\u0026s=64",
      "cl": "318165@main",
      "clUrl": "https://commits.webkit.org/318165@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320558\n\nReviewed by Antti Koivisto.\n\nA flex line is at least as tall as each of its baseline-sharing groups, and a group is as tall as its largest\nascent plus its largest descent. align-self: baseline and align-self: last baseline align to opposite edges of the\nline, so they are two separate groups.\n\ncrossSizeForFlexLines kept the two ascents apart but shared one descent between them, and each group's total read\nthat shared value. So a last-baseline item's descent was added to the first-baseline group's ascent, and the other\nway round, making the line taller than either group really is. It also made the result depend on the order the\nitems appear in, since a descent only reached the other group once it had been seen.\n\nGive the last-baseline group its own descent. Both groups now sum the ascent and descent of their own members.\n\nChrome and Firefox both size these lines correctly.\n\n* LayoutTests/imported/w3c/web-platform-tests/css/css-flexbox/flexbox-baseline-and-last-baseline-groups-line-size-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-flexbox/flexbox-baseline-and-last-baseline-groups-line-size.html: Added.\n* Source/WebCore/layout/formattingContexts/flex/FlexFormattingContext.cpp:\n(WebCore::FlexFormattingContext::crossSizeForFlexLines):\n\nCanonical link: https://commits.webkit.org/318165@main",
      "email": "zalan@apple.com",
      "hash": "7b1e435b78be41ca145ca0472c93e8914dbb81eb",
      "subject": "[Flex] A flex line's cross size mixes the 'baseline' and 'last baseline' sharing groups"
    },
    "318166@main": {
      "author": "Sergey Rubanov",
      "avatar": "https://www.gravatar.com/avatar/d04164fa4e06ce85533085f24c766e17?d=identicon\u0026s=64",
      "cl": "318166@main",
      "clUrl": "https://commits.webkit.org/318166@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=317022\n\nReviewed by Keith Miller.\n\nrecursivelyBuildSwitch picks a jump table when (last - first + 1) / n is\nbelow a density limit. When case values span more than 2^63, that\nsubtraction overflows signed int64; the wrapped result can look dense and\ntableSize becomes enormous, OOMing in BitVector / data-section allocation.\n\nCompute the span with CheckedInt64 and skip the table path on overflow.\nAdd a testb3 case with the sparse i64 values from the bug report.\n\n* Source/JavaScriptCore/b3/B3LowerMacros.cpp:\n(JSC::B3::LowerMacros::recursivelyBuildSwitch): Checked span for density.\n* Source/JavaScriptCore/b3/testb3.h:\n* Source/JavaScriptCore/b3/testb3_1.cpp:\n* Source/JavaScriptCore/b3/testb3_5.cpp:\n(testSwitchSparseI64RangeOverflow): Added.\n\nCanonical link: https://commits.webkit.org/318166@main",
      "email": "chi187@gmail.com",
      "hash": "72ea806faa2186f39c48899724ad6c2f336270ac",
      "subject": "[JSC] Use overflow-safe range when choosing a switch jump table"
    },
    "318167@main": {
      "author": "Sergey Rubanov",
      "avatar": "https://www.gravatar.com/avatar/d04164fa4e06ce85533085f24c766e17?d=identicon\u0026s=64",
      "cl": "318167@main",
      "clUrl": "https://commits.webkit.org/318167@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=312794\n\nReviewed by Yusuke Suzuki.\n\nMemory64 bulk ops (fill/copy/init) are implemented in OMG, but this stress\ntest disabled OMG with --useOMGJIT=0. Drop that flag so default tiering and\nwasmTestLoopCount can reach OMG (the path that regressed JetStream3).\n\n* JSTests/wasm/stress/memory64-bulk-memory.js:\n\nCanonical link: https://commits.webkit.org/318167@main",
      "email": "chi187@gmail.com",
      "hash": "ae632a6a28e86264aba936a76864ecf9f6c7f77d",
      "subject": "[JSC][Wasm] Exercise Memory64 bulk memory under OMG"
    },
    "318168@main": {
      "author": "Sergey Rubanov",
      "avatar": "https://www.gravatar.com/avatar/d04164fa4e06ce85533085f24c766e17?d=identicon\u0026s=64",
      "cl": "318168@main",
      "clUrl": "https://commits.webkit.org/318168@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=277686\n\nReviewed by Yusuke Suzuki.\n\nBBQ used to emit a full binary search over every br.table index even when\nlong stretches shared the same target. Collapse consecutive identical\ntargets into runs and dispatch with unsigned range checks. Prefer the\njump table only when the number of runs is large enough, so dense tables\nwith few runs stay on the shallow path.\n\nBinarySwitch takes those runs via a dedicated constructor over\nspan of (caseValue, runLength), rather than overloading the flat\nspan\u003cint64_t\u003e case list.\n\nStress forces BBQ and skips wasm-no-jit / wasm-no-wasm-jit modes,\nwhich would set IPInt or BBQ off against the required options.\n\n* Source/JavaScriptCore/jit/BinarySwitch.h:\n* Source/JavaScriptCore/jit/BinarySwitch.cpp:\n(JSC::BinarySwitch::BinarySwitch):\n(JSC::BinarySwitch::advance):\n(JSC::BinarySwitch::buildCheckRuns):\n* Source/JavaScriptCore/wasm/WasmBBQJIT.cpp:\n(JSC::Wasm::BBQJIT::addSwitch):\n* JSTests/wasm/stress/br-table-consecutive-target-runs.js: Added.\n* JSTests/microbenchmarks/wasm-bbq-br-table-runs.js: Added.\n\nCanonical link: https://commits.webkit.org/318168@main",
      "email": "chi187@gmail.com",
      "hash": "d434a41411a3712e8b90d0ccb5866195d28079c3",
      "subject": "[JSC][Wasm] Optimize BBQ br.table for consecutive same-target runs"
    },
    "318169@main": {
      "author": "Devin Rousso",
      "avatar": "https://www.gravatar.com/avatar/c9e757d973342c773f107a94b70cb9cd?d=identicon\u0026s=64",
      "cl": "318169@main",
      "clUrl": "https://commits.webkit.org/318169@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:\nRead `InspectorNativeFunctionParameters.json` from WebCore's private headers and copy `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/WebCore/WebCore.xcodeproj/project.pbxproj:\n* Source/WebInspectorUI/CMakeLists.txt:\n* Source/WebInspectorUI/WebInspectorUI.xcodeproj/project.pbxproj:\nGenerate and consume the parameter data in each build system.\nExport `InspectorNativeFunctionParameters.json` as a WebCore private header and consume it from `WEBCORE_PRIVATE_HEADERS_DIR`, matching the existing `InspectorBackendCommands.js` pattern.\nThis avoids a cross-project target dependency, which cannot be satisfied when WebInspectorUI is built standalone against installed WebKit.\nDepend on `WebCore_CopyPrivateHeaders` in CMake and add `WebCore.framework` to Xcode's `Product Dependencies` build phase so combined builds still order WebCore before WebInspectorUI.\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/318169@main",
      "email": "hi@devinrousso.com",
      "hash": "9c3c522fd382fc22f100437332a05981fdbdff3d",
      "subject": "Web Inspector: Show Parameter Lists for Native DOM methods"
    },
    "318170@main": {
      "author": "Anthony Tarbinian",
      "avatar": "https://www.gravatar.com/avatar/e2fb942081a29714985c48f402fa1788?d=identicon\u0026s=64",
      "cl": "318170@main",
      "clUrl": "https://commits.webkit.org/318170@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=310640\nrdar://problem/173252605\n\nReviewed by Abrar Rahman Protyasha\n\nRemove construction of ISO-18013 request info\n\n* Source/WTF/wtf/PlatformEnable.h:\n* Source/WebCore/Headers.cmake:\n* Source/WebCore/Modules/identity/DigitalCredentialsMobileDocumentRequestDataWithRequestInfo.h: Removed.\n* Source/WebCore/Modules/identity/DigitalCredentialsRequestData.h:\n* Source/WebCore/Modules/identity/DigitalCredentialsRequestDataBuilder.cpp:\n* Source/WebCore/Modules/identity/DigitalCredentialsRequestDataBuilder.h:\n* Source/WebCore/WebCore.xcodeproj/project.pbxproj:\n* Source/WebKit/Shared/WebCoreArgumentCodersAuth.serialization.in:\n* Source/WebKit/UIProcess/DigitalCredentials/WKDigitalCredentialsPicker.mm:\n* Source/WebKit/UIProcess/WebPageProxy.h:\n* Source/WebKit/UIProcess/WebPageProxy.messages.in:\n* Source/WebKit/WebProcess/DigitalCredentials/DigitalCredentialsCoordinator.messages.in:\n\nCanonical link: https://commits.webkit.org/318170@main",
      "email": "atar137h@gmail.com",
      "hash": "2618d2ec4f6f357326dc136d81893f2ffb5085ff",
      "subject": "Digital Credentials: Remove request info backed ISO 18013 request construction"
    },
    "318171@main": {
      "author": "Carlos Alberto Lopez Perez",
      "avatar": "https://www.gravatar.com/avatar/05326c1dbe06f486e884975e73f25179?d=identicon\u0026s=64",
      "cl": "318171@main",
      "clUrl": "https://commits.webkit.org/318171@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320559\n\nUnreviewed test gardening.\n\nThe Linux ports (GTK and WPE) build and test on the CI with asserts enabled\nfor Release.\n\nThis tests are quite slow on a standard release build, but on release+asserts they\noften timeout completely. On the CI each one of this tests is run several times\nwith different configurations, and at least 15-20 of those runs usually timeout.\nEach one of those timeouts costs around ~10 minutes (because first it hits\nthe soft timeout and then the hard, so around 5+5) with the CPU spinning like\ncrazy and a worker waiting that can't advance to the next test.\n\n* JSTests/wasm/stress/type-index-abstract-heap-types-concrete-vs-abstract.js:\n* JSTests/wasm/stress/type-index-abstract-heap-types-globals-and-tables.js:\n* JSTests/wasm/stress/type-index-abstract-heap-types-nulls-and-casts.js:\n* JSTests/wasm/stress/type-index-abstract-heap-types-subtype-validation.js:\n\nCanonical link: https://commits.webkit.org/318171@main",
      "email": "clopez@igalia.com",
      "hash": "21d5ac54d545d7078cb5ac89df670bbe73e7a7a1",
      "subject": "[JSC][WPE][GTK] Skip wasm/stress/type-index-abstract-heap-types* tests on Linux"
    },
    "318172@main": {
      "author": "Alex Christensen",
      "avatar": "https://www.gravatar.com/avatar/b087c5dfcb1233e80cad9105fd5a1ac6?d=identicon\u0026s=64",
      "cl": "318172@main",
      "clUrl": "https://commits.webkit.org/318172@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320510\nrdar://183471508\n\nReviewed by Chris Dumez.\n\nLike getStats requests, createStream requests need to wait until the session has been initialized\neither successfully or unsuccessfully before completing.\n\n* LayoutTests/imported/w3c/web-platform-tests/webtransport/close.https.any-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/webtransport/close.https.any.serviceworker-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/webtransport/close.https.any.sharedworker-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/webtransport/close.https.any.worker-expected.txt:\n* Source/WebKit/NetworkProcess/webtransport/NetworkTransportSession.cpp:\n(WebKit::NetworkTransportSession::~NetworkTransportSession):\n(WebKit::NetworkTransportSession::completeRequestsAfterInitialization):\n(WebKit::NetworkTransportSession::completeStatsRequestsAfterInitialization): Deleted.\n* Source/WebKit/NetworkProcess/webtransport/NetworkTransportSession.h:\n* Source/WebKit/NetworkProcess/webtransport/cocoa/NetworkTransportSessionCocoa.mm:\n(WebKit::NetworkTransportSession::initialize):\n(WebKit::NetworkTransportSession::createStream):\n\nCanonical link: https://commits.webkit.org/318172@main",
      "email": "achristensen@apple.com",
      "hash": "b89af4901547b62428e87ff6335cba0d7308a851",
      "subject": "[WebTransport] createBidirectionalStream and createUnidirectionalStream before WebTransport.ready should fail if the server closes the connection"
    },
    "318173@main": {
      "author": "Sam Weinig",
      "avatar": "https://www.gravatar.com/avatar/354b409240f9fb3357f498c547423d96?d=identicon\u0026s=64",
      "cl": "318173@main",
      "clUrl": "https://commits.webkit.org/318173@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320235\n\nReviewed by Darin Adler.\n\nNow that all \u003clength\u003e and \u003clength-percentage\u003e values can use evaluation time zoom,\nwe no longer have anything that requires style building time zoom. That means its\na good time to remove the EvaluationTimeZoomEnabled setting, as we can get the complete\nbenefit from its removal now.\n\nAlong with removing the setting, all the zoom state on CSSToLengthConversionData can\nbe remove.\n\nOne place that zoom was still being used was in the theme code when using the version\nof emToPx that takes a Style::ComputedStyle. Its very unclear from call sites that it\nis distinct, so a new function, emToPxZoomed was added for those callers, and now the\nnormal emToPx is always unzoomed. There is quite a bit of cleanup in the theme code\naround zoom that can be done, but that is not handled in this change.\n\n* Source/WTF/Scripts/Preferences/UnifiedWebPreferences.yaml:\n* Source/WebCore/css/CSSProperties.json:\n* Source/WebCore/css/CSSToLengthConversionData.cpp:\n* Source/WebCore/css/CSSToLengthConversionData.h:\n* Source/WebCore/css/parser/SizesAttributeParser.cpp:\n* Source/WebCore/css/query/MediaQueryEvaluator.cpp:\n* Source/WebCore/css/values/primitives/CSSPrimitiveNumericRange.h:\n* Source/WebCore/dom/Document.cpp:\n* Source/WebCore/html/canvas/CanvasRenderingContext2DBase.cpp:\n* Source/WebCore/html/shadow/TextControlInnerElements.cpp:\n* Source/WebCore/platform/graphics/FontDescription.cpp:\n* Source/WebCore/platform/graphics/FontDescription.h:\n* Source/WebCore/rendering/RenderBlock.cpp:\n* Source/WebCore/rendering/RenderTheme.cpp:\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/mathml/RenderMathMLBlock.cpp:\n* Source/WebCore/style/StyleBuilderCustom.h:\n* Source/WebCore/style/StyleBuilderState.cpp:\n* Source/WebCore/style/StyleExtractorCustom.h:\n* Source/WebCore/style/StyleResolveForDocument.cpp:\n* Source/WebCore/style/StyleResolveForFont.cpp:\n* Source/WebCore/style/computed/StyleComputedStyleBase+GettersInlines.h:\n* Source/WebCore/style/computed/StyleComputedStyleBase+SettersInlines.h:\n* Source/WebCore/style/computed/StyleComputedStyleBase.h:\n* Source/WebCore/style/computed/StyleComputedStyleProperties+InitialCustomInlines.h:\n* Source/WebCore/style/computed/data/StyleInheritedRareData.cpp:\n* Source/WebCore/style/computed/data/StyleInheritedRareData.h:\n* Source/WebCore/style/values/backgrounds/StyleLineWidth.cpp:\n* Source/WebCore/style/values/backgrounds/StyleLineWidth.h:\n* Source/WebCore/style/values/inline/StyleLineHeight.cpp:\n* Source/WebCore/style/values/non-standard/StyleWebKitTextStrokeWidth.cpp:\n* Source/WebCore/style/values/primitives/StyleLengthResolution.cpp:\n* Source/WebCore/style/values/primitives/StyleLengthResolution.h:\n* Source/WebCore/style/values/primitives/StylePrimitiveNumericTypes+Conversions.cpp:\n* Source/WebCore/style/values/primitives/StylePrimitiveNumericTypes+Conversions.h:\n* Source/WebCore/style/values/sizing/StyleContainIntrinsicSize.cpp:\n* Source/WebCore/style/values/text/StyleLetterSpacing.cpp:\n* Source/WebCore/style/values/text/StyleWordSpacing.cpp:\n* Source/WebCore/style/values/transforms/StylePerspective.cpp:\n* Source/WebCore/style/values/transforms/StyleTransformFunction.cpp:\n* Source/WebCore/svg/SVGLengthContext.cpp:\n* Source/WebCore/svg/SVGLengthContext.h:\n\nCanonical link: https://commits.webkit.org/318173@main",
      "email": "sam@webkit.org",
      "hash": "25f5e8ba2895f8c061081bdc45764d0c88223922",
      "subject": "[EvaluationTimeZoom] Remove support for style building time zoom"
    },
    "318174@main": {
      "author": "Abrar Rahman Protyasha",
      "avatar": "https://www.gravatar.com/avatar/fce5b3c4e9f3c59a4873e08c9f03c3b1?d=identicon\u0026s=64",
      "cl": "318174@main",
      "clUrl": "https://commits.webkit.org/318174@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320554\nrdar://problem/183517726\n\nReviewed by Aditya Keerthi.\n\nThis method is not implemented (or called) anywhere, so let's remove the\ndeclaration.\n\n* Source/WebKit/WebProcess/WebPage/WebPage.h:\n\nCanonical link: https://commits.webkit.org/318174@main",
      "email": "a_protyasha@apple.com",
      "hash": "47cd94fc7a413543d42229e0441f06d08f5c3512",
      "subject": "WebPage::updatePluginsActiveAndFocusedState() is an unnecessary declaration"
    },
    "318175@main": {
      "author": "Sammy Gill",
      "avatar": "https://www.gravatar.com/avatar/715a3cfee5d85ee90ccfdaa2a4a7a5a3?d=identicon\u0026s=64",
      "cl": "318175@main",
      "clUrl": "https://commits.webkit.org/318175@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320511\nrdar://problem/183473145\n\nReviewed by Alan Baradlay.\n\nA negative grid line counts backward from the end edge of the explicit grid: for\na grid with N explicit tracks, -1 is the last line and -(N+1) is the first line,\nwith more-negative values counting past the start edge into the leading implicit\ngrid. Previously explicitLineToIndex() passed negative lines through unchanged\n(e.g. -1 stayed -1), which is not quite how they are supposed to get\nresolved.\n\nTo fix this we can just thread in the number of explicit tracks through\nthe code that computes the UnplacedGridItem's GridPosition so that it\ntakes the number of explicit tracks into account. For example, if you\nhave three expliti columns with lines L1 L2 L3 L4, then -1 will map to\nL4 and -5 will map to the first implicit track that is created right\nbefore the first explicit one.\n\n* Source/WebCore/layout/formattingContexts/grid/GridFormattingContext.cpp:\n(WebCore::Layout::GridFormattingContext::constructUnplacedGridItems const):\n* Source/WebCore/layout/formattingContexts/grid/UnplacedGridItem.cpp:\n(WebCore::Layout::explicitLineToIndex):\nThis is what does the mapping as described above. This means that this\nmay still return a negative number for those lines that are part of the\nimplicit grid that is part of the beginning. That is ok though since\nthose will be translated and be relative to the implicit grid when we\nactually create the GridPosition itself.\n\n(WebCore::Layout::UnplacedGridItem::GridPosition::create):\nThis is where the line numbers will get transformed to be relative to\nthe implicit grid. So here -5 from the example above would be fed in as\n-1 but then transformed into 0 since it is the first line in the\nimplicit grid.\n\n(WebCore::Layout::UnplacedGridItem::resolveDefinitePosition):\nPlumb the number of explicit tracks to explicitLineToIndex so that the\nvalues take them into consideration like described above in the\nexplanation of the function.\n\nCanonical link: https://commits.webkit.org/318175@main",
      "email": "sammy.gill@apple.com",
      "hash": "385c9c629c84a067b47ed966c0d3d96e50819349",
      "subject": "[GFC] Resolve negative grid lines against the explicit grid track count"
    },
    "318176@main": {
      "author": "Etienne Segonzac",
      "avatar": "https://www.gravatar.com/avatar/3566820d0ba7e035bc440dc736c17f0c?d=identicon\u0026s=64",
      "cl": "318176@main",
      "clUrl": "https://commits.webkit.org/318176@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320548\nrdar://183507280\n\nReviewed by Mike Wyrzykowski and Aditya Keerthi.\n\nFix the typo and rebaseline the impacted tests.\n\nTest: Tools/TestWebKitAPI/Tests/WebKit/WKWebView/ios/CALayerTreeAsText.mm\n\n* LayoutTests/compositing/background-color/background-color-clamping-expected.txt:\n* LayoutTests/interaction-region/guard-crash-expected.txt:\n* LayoutTests/interaction-region/interaction-layers-culling-layer-type-change-expected.txt:\n* LayoutTests/interaction-region/layer-tree-expected.txt:\n* LayoutTests/interaction-region/layer-tree-shape-reset-expected.txt:\n* LayoutTests/platform/ios/compositing/background-color/background-color-clamping-expected.txt:\n* LayoutTests/platform/visionos/transforms/separated-expected.txt:\n* Source/WebKit/UIProcess/API/Cocoa/WKWebViewTesting.mm:\n(dumpCALayer):\n(-[WKWebView _propertiesOfLayerWithID:]):\n\n* Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:\n* Tools/TestWebKitAPI/Tests/WebKit/WKWebView/ios/CALayerTreeAsText.mm: Added.\n(TEST(WebKit, CALayerTreeAsTextDumpsYCoordinates)):\nAdd an API test similar to the one from 317839@main.\n\nCanonical link: https://commits.webkit.org/318176@main",
      "email": "sgz@apple.com",
      "hash": "f30303811c2592181940302fdbd6c43d859aa2e6",
      "subject": "WKWebViewTestingIOS.mm's dumpCALayer() is using origin.x instead of origin.y"
    },
    "318177@main": {
      "author": "Megan Gardner",
      "avatar": "https://www.gravatar.com/avatar/b466a5bcbfabf4d82a8ecc595db5a531?d=identicon\u0026s=64",
      "cl": "318177@main",
      "clUrl": "https://commits.webkit.org/318177@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320538\nrdar://183496114\n\nReviewed by Alan Baradlay.\n\nFor vertical writing modes, TextBoxPainter paints the highlight background\nfill inside a rotated graphics context whose translation is derived from an\ninline-axis coordinate that is intentionally not device-pixel aligned (to\npreserve glyph advances). A fill snapped to integers in the box's local space\ntherefore lands on fractional device pixels and gets anti-aliased, leaving a\none-pixel fringe that an ordinary unrotated element background does not have.\nFix this by snapping the fill rect in device space for vertical writing modes.\n\nimported/w3c/web-platform-tests/css/css-highlight-api/painting/custom-highlight-painting-vertical-writing-mode-001.html\n\n* LayoutTests/TestExpectations:\n* LayoutTests/platform/ios/TestExpectations:\n* Source/WebCore/rendering/TextBoxPainter.cpp:\n(WebCore::TextBoxPainter::paintBackgroundFillForRange):\n\nCanonical link: https://commits.webkit.org/318177@main",
      "email": "megan_gardner@apple.com",
      "hash": "a582ca2b893203d78a0f5927d8e43244175ce06b",
      "subject": "[Custom Highlight]::highlight() background fill has an anti-aliased fringe in vertical writing modes."
    },
    "318178@main": {
      "author": "Lauro Moura",
      "avatar": "https://www.gravatar.com/avatar/6157f52d61e04c2c63fe7ff668ba69b3?d=identicon\u0026s=64",
      "cl": "318178@main",
      "clUrl": "https://commits.webkit.org/318178@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=175181\n\nUnreviewed test gardening.\n\n* WebDriverTests/TestExpectations.json:\n\nCanonical link: https://commits.webkit.org/318178@main",
      "email": "lmoura@igalia.com",
      "hash": "7e8a1739dde2a0c51f0aec0a49a6da6726e0b18e",
      "subject": "Web Automation: clear element should fire onchange event"
    },
    "318179@main": {
      "author": "Kai Tamkun",
      "avatar": "https://www.gravatar.com/avatar/dff073cba21885df4d9f73ed3cc493c2?d=identicon\u0026s=64",
      "cl": "318179@main",
      "clUrl": "https://commits.webkit.org/318179@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320491\nrdar://183457853\n\nReviewed by Yusuke Suzuki.\n\nThis patch fixes the path run-regexp-tests tries to chdir to.\n\n* Tools/Scripts/run-regexp-tests:\n\nCanonical link: https://commits.webkit.org/318179@main",
      "email": "k_tamkun@apple.com",
      "hash": "01646f08a54ef03e1cfa3f398b842c45c8b7e9c8",
      "subject": "[JSC] Update test path in run-regexp-tests"
    },
    "318180@main": {
      "author": "Alan Baradlay",
      "avatar": "https://www.gravatar.com/avatar/788d66417db806c567552cfa1ae89f77?d=identicon\u0026s=64",
      "cl": "318180@main",
      "clUrl": "https://commits.webkit.org/318180@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320572\n\nReviewed by Antti Koivisto.\n\nflowAwareMarginBeforeForFlexItem returns a margin of the flex item, but the fallback after its switch returns one of\nthe flex container's. The four flow-aware accessors next to it are container-level, so returning flexBox().marginTop()\nis right for them and was carried over to this one.\n\n* Source/WebCore/layout/formattingContexts/flex/FlexFormattingUtils.cpp:\n(WebCore::FlexFormattingUtils::flowAwareMarginBeforeForFlexItem const):\n\nCanonical link: https://commits.webkit.org/318180@main",
      "email": "zalan@apple.com",
      "hash": "0f8b6690f96e22f7d72990744c63978bea21bded",
      "subject": "[cleanup] Return the flex item's margin from flowAwareMarginBeforeForFlexItem's unreachable fallback"
    },
    "318181@main": {
      "author": "Alan Baradlay",
      "avatar": "https://www.gravatar.com/avatar/788d66417db806c567552cfa1ae89f77?d=identicon\u0026s=64",
      "cl": "318181@main",
      "clUrl": "https://commits.webkit.org/318181@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320564\n\nReviewed by Antti Koivisto.\n\ncomputeIntrinsicLogicalWidths measures a flex item's margins once and adds the same value to both the min-content\nand the max-content width. The two are measured over different sets of flex lines, though: max-content puts every\nitem on one line, while min-content for a wrapping container puts a break between every item, so each one is alone\non its line.\n\nmargin-trim takes the inline margins of the items at the start and end of a line. On the single line max-content\nmeasures there are two such items; on the min-content lines every item is one, at both ends. RenderFlexibleBox\ntrims the margins of the container's first and last flex items before layout, which is the right answer for\nmax-content and feeds the same number into min-content, where it leaves every interior item contributing margins\nthat will not be there.\n\nSo a container that sizes to min-content reports a width wider than the content it then lays out. Three 50px items\nwith 100px inline margins and margin-trim: inline-start inline-end come out 250px wide when the same container's\nlayout puts each item alone on its line at 50px with both margins gone, leaving 200px of the container empty.\n\nTake the margins off the min-content contribution of every item when the container wraps and the corresponding\nside is trimmed. Column flow keeps its existing behaviour: its min-content is a max over items in the cross axis,\nnot a per-line break.\n\n* LayoutTests/imported/w3c/web-platform-tests/css/css-box/margin-trim/flex-min-content-trims-every-line-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-box/margin-trim/flex-min-content-trims-every-line.html: Added.\n* Source/WebCore/rendering/RenderFlexibleBox.cpp:\n(WebCore::RenderFlexibleBox::computeIntrinsicLogicalWidths const):\n\nCanonical link: https://commits.webkit.org/318181@main",
      "email": "zalan@apple.com",
      "hash": "e8b0eb7ff13d9af3e7e2a187da9c3700f549053e",
      "subject": "[Flex] margin-trim is ignored for interior items when a wrapping flex container is sized to min-content"
    },
    "318182@main": {
      "author": "Abrar Rahman Protyasha",
      "avatar": "https://www.gravatar.com/avatar/fce5b3c4e9f3c59a4873e08c9f03c3b1?d=identicon\u0026s=64",
      "cl": "318182@main",
      "clUrl": "https://commits.webkit.org/318182@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320517\nrdar://183482026\n\nReviewed by Brady Eidson.\n\nSometimes it's desirable to log said data close to their IPC\nsend/receive methods, where they are usually bundled as ProcessSyncData\ntypes. As such, this patch teaches generate-process-sync-data.py to\ncreate TextStream operator\u003c\u003c overloads for said types.\n\nWe also regenerate the TestSyncData output, which had drifted from the\ngenerator after 312295@main and 316357@main; each of those commits\naltered the script without regenerating these baselines.\n\n* Source/WebCore/Scripts/generate-process-sync-data.py:\n(generate_synched_data_header):\n(generate_synched_data_header.TextStream):\n(generate_synched_data_impl):\n* Source/WebCore/Scripts/tests/TestSyncClient.cpp:\n(WebCore::TestSyncClient::broadcastAudioSessionTypeToOtherProcesses):\n(WebCore::TestSyncClient::broadcastMainFrameURLChangeToOtherProcesses):\n(WebCore::TestSyncClient::broadcastIsAutofocusProcessedToOtherProcesses):\n(WebCore::TestSyncClient::broadcastUserDidInteractWithPageToOtherProcesses):\n(WebCore::TestSyncClient::broadcastAnotherOneToOtherProcesses):\n(WebCore::TestSyncClient::broadcastMultipleHeadersToOtherProcesses):\n* Source/WebCore/Scripts/tests/TestSyncData.cpp:\n(WebCore::TestSyncData::update):\n(WebCore::operator\u003c\u003c):\n* Source/WebCore/Scripts/tests/TestSyncData.h:\n* Source/WebCore/Scripts/tests/TestSyncData.serialization.in:\n\nCanonical link: https://commits.webkit.org/318182@main",
      "email": "a_protyasha@apple.com",
      "hash": "a98133faac84549c8d12241d36ec2ec759f631b6",
      "subject": "[Site Isolation] Add TextStream logging support to generated ProcessSyncData types"
    },
    "318183@main": {
      "author": "Abrar Rahman Protyasha",
      "avatar": "https://www.gravatar.com/avatar/fce5b3c4e9f3c59a4873e08c9f03c3b1?d=identicon\u0026s=64",
      "cl": "318183@main",
      "clUrl": "https://commits.webkit.org/318183@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320495\nrdar://183460049\n\nReviewed by Sihui Liu.\n\nSiteIsolationSharedProcessEnabled may soon be enabled by default. While\nthis is a useful performance optimization to complement Site Isolation,\nit _may_ mask real issues unique to frames in separate processes, since\nthere will be more process re-use now.\n\nWe should introduce test coverage around this feature, so let's retrofit\nthe EmbeddedPDFHUDSiteIsolation suite for that purpose.\n\n* Tools/TestWebKitAPI/Tests/WebKit/WKWebView/UnifiedPDFTests.mm:\n(TestWebKitAPI::EmbeddedPDFHUDSiteIsolation::siteIsolationSharedProcessEnabled const):\n(TestWebKitAPI::EmbeddedPDFHUDSiteIsolation::testNameGenerator):\n(TestWebKitAPI::TEST_P):\n\nCanonical link: https://commits.webkit.org/318183@main",
      "email": "a_protyasha@apple.com",
      "hash": "cc692cea334e640a5e5038ecc5c80b052c589141",
      "subject": "EmbeddedPDFHUDSiteIsolation test suite should toggle SiteIsolationSharedProcessEnabled"
    },
    "318184@main": {
      "author": "Tetsuharu Ohzeki",
      "avatar": "https://www.gravatar.com/avatar/549cbf8e9e2460763d7248f6266be8af?d=identicon\u0026s=64",
      "cl": "318184@main",
      "clUrl": "https://commits.webkit.org/318184@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=310698\n\nReviewed by Yusuke Suzuki.\n\n* JSTests/stress/iterator-prototype.js:\n    This test checks whether properties on `Iterator.prototype` are expected.\n* Source/WTF/Scripts/Preferences/UnifiedWebPreferences.yaml:\n\nCanonical link: https://commits.webkit.org/318184@main",
      "email": "tetsuharu.ohzeki@gmail.com",
      "hash": "319f94b3db4a8f40185ffe2551abe724cb865588",
      "subject": "[JSC] Enable `Iterator.prototype.includes()`"
    },
    "318185@main": {
      "author": "Alex Christensen",
      "avatar": "https://www.gravatar.com/avatar/b087c5dfcb1233e80cad9105fd5a1ac6?d=identicon\u0026s=64",
      "cl": "318185@main",
      "clUrl": "https://commits.webkit.org/318185@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320390\nrdar://183347616\n\nReviewed by Youenn Fablet.\n\nThis makes WebTransport receive streams and bidirectional streams work with byob buffers that\ndon't line up exactly with what bytes are received from the network.\n\nTests: imported/w3c/web-platform-tests/webtransport/receive-stream-pull.https.any.html\n       imported/w3c/web-platform-tests/webtransport/receive-stream-pull.https.any.serviceworker.html\n       imported/w3c/web-platform-tests/webtransport/receive-stream-pull.https.any.sharedworker.html\n       imported/w3c/web-platform-tests/webtransport/receive-stream-pull.https.any.worker.html\n\n* LayoutTests/imported/w3c/web-platform-tests/webtransport/receive-stream-pull.https.any-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/webtransport/receive-stream-pull.https.any.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/webtransport/receive-stream-pull.https.any.js: Added.\n(async echo_bidirectional_stream):\n(ascending_bytes):\n(promise_test.async t):\n* LayoutTests/imported/w3c/web-platform-tests/webtransport/receive-stream-pull.https.any.serviceworker-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/webtransport/receive-stream-pull.https.any.serviceworker.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/webtransport/receive-stream-pull.https.any.sharedworker-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/webtransport/receive-stream-pull.https.any.sharedworker.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/webtransport/receive-stream-pull.https.any.worker-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/webtransport/receive-stream-pull.https.any.worker.html: Added.\n* Source/WebCore/Modules/webtransport/DatagramByteSource.cpp:\n(WebCore::DatagramByteSource::receiveDatagram):\n(WebCore::DatagramByteSource::closeStreamIfPossible):\n* Source/WebCore/Modules/webtransport/WebTransport.cpp:\n(WebCore::WebTransport::WebTransport):\n(WebCore::WebTransport::receiveIncomingUnidirectionalStream):\n(WebCore::createBidirectionalStream):\n(WebCore::WebTransport::receiveBidirectionalStream):\n(WebCore::WebTransport::streamReceiveBytes):\n(WebCore::WebTransport::cleanup):\n(WebCore::WebTransport::didDrain):\n* Source/WebCore/Modules/webtransport/WebTransportBidirectionalStreamSource.h:\n(WebCore::WebTransportBidirectionalStreamSource::stopReceivingIncomingStreams):\n* Source/WebCore/Modules/webtransport/WebTransportReceiveStream.cpp:\n(WebCore::WebTransportReceiveStream::create):\n* Source/WebCore/Modules/webtransport/WebTransportReceiveStreamByteSource.cpp:\n(WebCore::WebTransportReceiveStreamByteSource::pull):\n(WebCore::WebTransportReceiveStreamByteSource::deliverBytes):\n(WebCore::WebTransportReceiveStreamByteSource::closeStream):\n(WebCore::WebTransportReceiveStreamByteSource::errorStream):\n(WebCore::WebTransportReceiveStreamByteSource::receiveBytes):\n(WebCore::WebTransportReceiveStreamByteSource::receiveError):\n(WebCore::WebTransportReceiveStreamByteSource::cancel):\n* Source/WebCore/Modules/webtransport/WebTransportReceiveStreamByteSource.h:\n* Source/WebCore/Modules/webtransport/WebTransportReceiveStreamSource.h:\n(WebCore::WebTransportReceiveStreamSource::stopReceivingIncomingStreams):\n\nCanonical link: https://commits.webkit.org/318185@main",
      "email": "achristensen@apple.com",
      "hash": "851b271edd75317ce210f85fd016a79439c62855",
      "subject": "Implement WebTransportReceiveStream pull bytes algorithm"
    },
    "318186@main": {
      "author": "AndrewJMart",
      "avatar": "https://www.gravatar.com/avatar/2649f392172aff8f86de9b7a4f6605b5?d=identicon\u0026s=64",
      "cl": "318186@main",
      "clUrl": "https://commits.webkit.org/318186@main",
      "description": "rdar://181924326\nhttps://bugs.webkit.org/show_bug.cgi?id=319107\n\nReviewed by Tyler Wilcock.\n\nIntroduces or guard clause within SVGAElement. This if statement only assigns an AccessibilityRole::Link if the element has an href link or has a click handler. Bare anchor svgs will no longer emit an AcessibilityRole::Link. Also, changes were made to update SVG objects on the AXIsolated Tree as well.\n\nTest: accessibility/svg-anchor-with-click-handler-is-link.html\n\n* LayoutTests/accessibility/svg-anchor-with-click-handler-is-link-expected.txt: Added.\n* LayoutTests/accessibility/svg-anchor-with-click-handler-is-link.html: Added.\n* Source/WebCore/accessibility/AccessibilitySVGObject.cpp:\n(WebCore::AccessibilitySVGObject::determineAccessibilityRole):\n* Source/WebCore/accessibility/AXObjectCache.cpp:\n(WebCore::AXObjectCache::handleClickHandlerChanged):\n(WebCore::AXObjectCache::handleAttributeChange):\n\nCanonical link: https://commits.webkit.org/318186@main",
      "email": "amart89531@gmail.com",
      "hash": "7c4388cfb93e553c0e3be53306cc847d1b2629ed",
      "subject": "AX: WebKit should only expose href-less SVG anchors as links if they have a click handler (matching HTML anchors)"
    },
    "318187@main": {
      "author": "Razvan Caliman",
      "avatar": "https://www.gravatar.com/avatar/e35c40637d6bc28b86585f2cf1b2e1ca?d=identicon\u0026s=64",
      "cl": "318187@main",
      "clUrl": "https://commits.webkit.org/318187@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320563\nrdar://183529776\n\nReviewed by BJ Burg.\n\nAutomation commands that operate on a specific frame route their IPC to the\nprocess hosting that frame via `sendWithAsyncReplyToProcessContainingFrame...`,\nbut pass `webPageIDInMainFrameProcess()` as the destination page identifier.\n\nThat identifier is only valid in the main frame's process. With site isolation,\na cross-origin (out-of-process) frame lives in a different `WebProcess`, where the\n`RemotePage`'s `WebPage` is registered under a freshly generated `PageIdentifier`.\n\nThe `WebProcess`-side handler resolves the page with `WebProcess::webPage(pageID)`,\nwhich returns null for the main frame id, so the command fails with a\n`WindowNotFound (\"no such window\")` error.\n\nAdd `WebPageProxy::webPageIDInProcessForFrame()`, which return the page identifier valid\nin the process that actually hosts the frame. For the main frame this resolves to the\nmain frame process and returns m_webPageID, so the non-isolated path is unchanged.\nUse it at every frame-scoped automation call site.\n\n* Source/WebKit/UIProcess/Automation/WebAutomationSession.cpp:\n(WebKit::WebAutomationSession::switchToBrowsingContext):\n(WebKit::WebAutomationSession::evaluateJavaScriptFunction):\n(WebKit::WebAutomationSession::resolveChildFrameHandle):\n(WebKit::WebAutomationSession::resolveParentFrameHandle):\n(WebKit::WebAutomationSession::computeElementLayout):\n(WebKit::WebAutomationSession::getComputedRole):\n(WebKit::WebAutomationSession::consumeUserActivation):\n(WebKit::WebAutomationSession::getComputedLabel):\n(WebKit::WebAutomationSession::selectOptionElement):\n(WebKit::WebAutomationSession::setFilesForInputFileUpload):\n(WebKit::WebAutomationSession::viewportInViewCenterPointOfElement):\n(WebKit::WebAutomationSession::evaluateBidiScript):\n(WebKit::WebAutomationSession::takeScreenshot):\n* Source/WebKit/UIProcess/WebPageProxy.cpp:\n(WebKit::WebPageProxy::webPageIDInProcessForFrame):\n* Source/WebKit/UIProcess/WebPageProxy.h:\n\nCanonical link: https://commits.webkit.org/318187@main",
      "email": "rcaliman@apple.com",
      "hash": "f0d922f81710f89bc41c9fc196b5326689574d8b",
      "subject": "[Site Isolation] WebDriver commands fail with \"no such window\" in out-of-process iframes"
    },
    "318188@main": {
      "author": "Harrison Weinerman",
      "avatar": "https://www.gravatar.com/avatar/aa5de22bf3c20e0ca33ed5d223946f4b?d=identicon\u0026s=64",
      "cl": "318188@main",
      "clUrl": "https://commits.webkit.org/318188@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320136\nrdar://183071308\n\nReviewed by Brady Eidson and Elliott Williams.\n\nThis patch moves the install location for relocatable builds of webpushd to the standard /Library/LaunchAgents\ndirectory where it will automatically be loaded by the system. For more info, please see rdar://171543360.\n\n* Source/WebKit/Configurations/webpushd.xcconfig:\n\nCanonical link: https://commits.webkit.org/318188@main",
      "email": "hmw@apple.com",
      "hash": "b76ec310e94c855c6555c8646402154b6e2a87d9",
      "subject": "Adjust relocatable build webpushd launchd plist location"
    },
    "318189@main": {
      "author": "Zak Ridouh",
      "avatar": "https://www.gravatar.com/avatar/d9b65ef530b9cbbfc6dff1ca158faace?d=identicon\u0026s=64",
      "cl": "318189@main",
      "clUrl": "https://commits.webkit.org/318189@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319764\nrdar://182625550\n\nReviewed by Alex Christensen.\n\nFollow-up to the previous fix in b/317789.\nInstead of the web process self-reporting whether it\nhosts the local main frame via InjectedBundle::pageHasLocalMainFrame(),\nthe UI process now determines whether the synchronous notifyDone()/forceImmediateCompletion() message came from the process hosting the main frame and tells WebKitTestRunner via a new WKPageInjectedBundleClient callback.\n\nWhen the message is from the main-frame process, the injected bundle completes the\ndump locally, matching the non-site-isolation behavior. Otherwise the dump is routed\nto the process that owns the main frame. These messages are now sent as page-level\nsynchronous messages so the UI process has the page context needed to make that\ndetermination.\n\n* Source/WebKit/UIProcess/API/C/WKPageInjectedBundleClient.h:\n* Source/WebKit/UIProcess/WebPageInjectedBundleClient.cpp:\n(WebKit::WebPageInjectedBundleClient::didReceiveSynchronousMessageFromInjectedBundle):\n* Source/WebKit/UIProcess/WebPageInjectedBundleClient.h:\n* Source/WebKit/UIProcess/WebPageProxy.cpp:\n(WebKit::WebPageProxy::handleSynchronousMessage):\n* Tools/WebKitTestRunner/InjectedBundle/InjectedBundle.cpp:\n(WTR::InjectedBundle::pageHasLocalMainFrame const): Deleted.\n* Tools/WebKitTestRunner/InjectedBundle/InjectedBundle.h:\n* Tools/WebKitTestRunner/InjectedBundle/TestRunner.cpp:\n(WTR::TestRunner::notifyDone):\n(WTR::TestRunner::forceImmediateCompletion):\n* Tools/WebKitTestRunner/TestController.cpp:\n(WTR::TestController::createOtherPlatformWebView):\n(WTR::TestController::createWebViewWithOptions):\n* Tools/WebKitTestRunner/TestController.h:\n* Tools/WebKitTestRunner/TestInvocation.cpp:\n(WTR::TestInvocation::didReceiveSynchronousMessageFromInjectedBundle):\n(WTR::TestInvocation::resolveNotifyDone):\n* Tools/WebKitTestRunner/TestInvocation.h:\n* LayoutTests/http/tests/site-isolation/force-immediate-completion-expected.txt: Added.\n* LayoutTests/http/tests/site-isolation/force-immediate-completion.html: Added.\n* LayoutTests/http/tests/site-isolation/resources/frame-force-immediate-completion.html: Added.\n* LayoutTests/http/tests/site-isolation/resources/pointer-lock.html:\n* LayoutTests/platform/ios/http/tests/site-isolation/pointer-lock-expected.txt:\n\nCanonical link: https://commits.webkit.org/318189@main",
      "email": "zakr@apple.com",
      "hash": "44e1c809f0e06146f13e2d24683928402be51ace",
      "subject": "[Site Isolation] Determine the notifyDone()/forceImmediateCompletion() dump target in the UI process"
    },
    "318190@main": {
      "author": "Zak Ridouh",
      "avatar": "https://www.gravatar.com/avatar/d9b65ef530b9cbbfc6dff1ca158faace?d=identicon\u0026s=64",
      "cl": "318190@main",
      "clUrl": "https://commits.webkit.org/318190@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320293\nrdar://183226312\n\nReviewed by Pascoe.\n\nSymlinkHeaders.cmake spawned readlink through execute_process for every entry\nto check whether an existing symlink already pointed at the right file. The\ntarget that runs it, WebKit_StageFrameworkHeaders, is an add_custom_target with\nno output, so ninja re-runs it on every build, over roughly 760 and 68 entries.\n\nUse file(READ_SYMLINK), which needs no subprocess: re-running the script over a\ndirectory of 503 already-staged headers drops from 1.72s to 0.02s.\n\n* Source/cmake/SymlinkHeaders.cmake:\n\nCanonical link: https://commits.webkit.org/318190@main",
      "email": "zakr@apple.com",
      "hash": "9e71a47bda4c0b2d1fbe26d8f77dfb318e9d923b",
      "subject": "[CMake] [iOS] Stop spawning readlink for every staged framework header"
    },
    "318191@main": {
      "author": "Zak Ridouh",
      "avatar": "https://www.gravatar.com/avatar/d9b65ef530b9cbbfc6dff1ca158faace?d=identicon\u0026s=64",
      "cl": "318191@main",
      "clUrl": "https://commits.webkit.org/318191@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320325\nrdar://183266525\n\nReviewed by Alex Christensen.\n\n317357@main taught isFullyActive to treat a parentless frame that is not the\npage's main frame as severed from the frame tree. That signal is correct for a\nframe whose owner iframe was removed in another process, but it also matches a\nprovisional frame mid-cross-process-navigation, which is parentless purely by\nconstruction: createProvisionalSubframe passes AddToFrameTree::No with a\nnon-null parent, so tree().parent() is null while m_mainFrame points at the\nremote main frame.\n\nThe mismatch is not transient. Navigation::initializeForNewWindow runs from\ndidBeginDocument inside DocumentLoader::commitData, before receivedFirstData()\ncommits the provisional frame into the tree, and it returns early on\nhasEntriesAndEventsDisabled() without populating m_entries. An ASSERT that\nm_entries is empty prevents it from ever running again, so navigation.entries()\nstayed permanently empty for a subframe that had navigated across processes.\n\nDistinguish the two cases explicitly rather than inferring severance from\nparentlessness. isFullyActive now asks the LocalFrameLoaderClient whether this\nframe is a provisional frame whose load has not committed, in the same shape as\nthe existing provisionalParentFrame() query. That needs no new state: WebFrame\nalready tracks the answer in m_provisionalFrame, set by createProvisionalFrame\nand cleared by commitProvisionalFrame and destroyProvisionalFrame. Only a\nLocalFrame can be provisional, so nothing is added to Frame or RemoteFrame. The\nclient is consulted only in the no-ancestor case, leaving the severance behavior\n317357@main added unchanged.\n\n* Source/WebCore/dom/Document.cpp:\n(WebCore::Document::isFullyActive const):\n* Source/WebCore/loader/LocalFrameLoaderClient.cpp:\n(WebCore::LocalFrameLoaderClient::isProvisionalFrame const):\n* Source/WebCore/loader/LocalFrameLoaderClient.h:\n* Source/WebKit/WebProcess/WebCoreSupport/WebLocalFrameLoaderClient.cpp:\n(WebKit::WebLocalFrameLoaderClient::isProvisionalFrame const):\n* Source/WebKit/WebProcess/WebCoreSupport/WebLocalFrameLoaderClient.h:\n\nCanonical link: https://commits.webkit.org/318191@main",
      "email": "zakr@apple.com",
      "hash": "f9c7e1033362aa474ed608e994dfec49297b3347",
      "subject": "REGRESSION (317357@main): imported/w3c/web-platform-tests/navigation-api/navigation-methods/traverseTo-with-cross-origin-in-history.html fails on Site Isolation bots"
    },
    "318192@main": {
      "author": "Richard Robinson",
      "avatar": "https://www.gravatar.com/avatar/a0d2f862985ed0fd47887be66f5a3e4f?d=identicon\u0026s=64",
      "cl": "318192@main",
      "clUrl": "https://commits.webkit.org/318192@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320535\nrdar://183493532\n\nReviewed by Aditya Keerthi.\n\nThe existing logic in `WebFrame::updateLocalFrameRect` to set the exposed content rect and unobscured\ncontent size mostly worked, but fails when the iframe is the full size of the viewport. This is\nbecause in this case, its possible only the origin may change, or nothing will change, instead of the\nsize actually changing.\n\nFix by making that logic always run so it works in all cases (and adjust the rest of the function accordingly).\n\nTest: http/tests/site-isolation/full-viewport-iframe.html\n\n* LayoutTests/http/tests/site-isolation/full-viewport-iframe-expected.html: Added.\n* LayoutTests/http/tests/site-isolation/full-viewport-iframe.html: Added.\n* LayoutTests/platform/ios-site-isolation/TestExpectations:\n* Source/WebKit/WebProcess/WebPage/WebFrame.cpp:\n(WebKit::WebFrame::updateLocalFrameRect):\n\nCanonical link: https://commits.webkit.org/318192@main",
      "email": "richard_robinson2@apple.com",
      "hash": "fa91023df56d96bfa2e2a0930f77f22f31f2ef30",
      "subject": "[Site Isolation] [iOS] A full-sized iframe within its parent is not visible"
    }
  },
  "date": "2026-07-29",
  "days": 1,
  "generatedAt": "2026-07-29T22:06:25Z",
  "markdown": "## Highlights\n\n- **Web Platform** WebTransport moved forward on multiple fronts with receive stream pull-bytes logic, early-failure handling, cancellation cleanup, datagram queue groundwork, and several WPT fixes, closing real gaps in stream semantics. [commit 318185@main](https://commits.webkit.org/318185@main) [commit 318172@main](https://commits.webkit.org/318172@main) [commit 318131@main](https://commits.webkit.org/318131@main) [commit 318101@main](https://commits.webkit.org/318101@main) [commit 318102@main](https://commits.webkit.org/318102@main)\n- **Rendering** Flex and grid layout got a dense batch of correctness fixes across baseline alignment, margin-trim, wrapping behavior, min-content sizing, and GFC bailout rules that should reduce subtle interop bugs. [commit 318181@main](https://commits.webkit.org/318181@main) [commit 318165@main](https://commits.webkit.org/318165@main) [commit 318154@main](https://commits.webkit.org/318154@main) [commit 318175@main](https://commits.webkit.org/318175@main) [commit 318125@main](https://commits.webkit.org/318125@main)\n- **Site Isolation** OOP iframe work kept landing across visibility, WebDriver stability, autofill process policy, JS dialog queuing, test plumbing, and UI-process dump targeting. [commit 318192@main](https://commits.webkit.org/318192@main) [commit 318187@main](https://commits.webkit.org/318187@main) [commit 318135@main](https://commits.webkit.org/318135@main) [commit 318134@main](https://commits.webkit.org/318134@main) [commit 318189@main](https://commits.webkit.org/318189@main)\n- **V8** JavaScriptCore picked up meaningful runtime work with `Iterator.prototype.includes()`, a fast path for `Array#shift`, safer jump-table selection, and Wasm/BBQ tuning. [commit 318184@main](https://commits.webkit.org/318184@main) [commit 318132@main](https://commits.webkit.org/318132@main) [commit 318166@main](https://commits.webkit.org/318166@main) [commit 318168@main](https://commits.webkit.org/318168@main)\n- **Security** Safer C++ and pointer lifetime work tightened low-level invariants, including CheckedPtr no-delete behavior and cleanup of incorrect NODELETE annotations in WebCore modules. [commit 318140@main](https://commits.webkit.org/318140@main) [commit 318136@main](https://commits.webkit.org/318136@main) [commit 318128@main](https://commits.webkit.org/318128@main)\n- **Media** Audio and capture fixes addressed microphone interruption on `getUserMedia`, `setSinkId()` not actually switching output on iOS single-track streams, and find-in-page missing hidden video captions. [commit 318164@main](https://commits.webkit.org/318164@main) [commit 318149@main](https://commits.webkit.org/318149@main) [commit 318159@main](https://commits.webkit.org/318159@main)\n- **DevTools** Web Inspector now shows parameter lists for native DOM methods, making built-in API discovery a lot less guessy from the console and inspector surfaces. [commit 318169@main](https://commits.webkit.org/318169@main)\n- **A11y** Accessibility fixes touched SVG anchor exposure, stitched text selection reporting, and the foundation for a custom color mode. [commit 318186@main](https://commits.webkit.org/318186@main) [commit 318112@main](https://commits.webkit.org/318112@main) [commit 318119@main](https://commits.webkit.org/318119@main)\n\n## What landed by area\n\n### Rendering and CSS\n\n- **Rendering** Flex layout now honors interior-item `margin-trim` when a wrapping container is sized to min-content. [commit 318181@main](https://commits.webkit.org/318181@main)\n- **Refactor** A fallback path in flex item margin computation now returns the item's margin instead of nonsense. [commit 318180@main](https://commits.webkit.org/318180@main)\n- **Rendering** Grid negative lines now resolve against the explicit grid track count. [commit 318175@main](https://commits.webkit.org/318175@main)\n- **Rendering** Style-building-time zoom support was removed from EvaluationTimeZoom plumbing. [commit 318173@main](https://commits.webkit.org/318173@main)\n- **Rendering** Flex line cross-size calculation no longer mixes `baseline` and `last baseline` sharing groups. [commit 318165@main](https://commits.webkit.org/318165@main)\n- **Rendering** Root-relative lengths in `@container` style queries now evaluate correctly. [commit 318144@main](https://commits.webkit.org/318144@main)\n- **Rendering** Auto-min grid tracks now resolve limited min-content contributions correctly under min-content and max-content constraints. [commit 318125@main](https://commits.webkit.org/318125@main)\n- **Refactor** Flex integration cleanup continues by removing renderer reach-throughs. [commit 318123@main](https://commits.webkit.org/318123@main)\n- **Rendering** GFC now bails out for grids with percentage rows and indefinite block size instead of pushing through invalid assumptions. [commit 318116@main](https://commits.webkit.org/318116@main)\n- **Rendering** GFC integration also bails out for relatively positioned grid items with percentage offsets. [commit 318115@main](https://commits.webkit.org/318115@main)\n- **Perf** Removal of out-of-flow elements no longer recomputes `anonymousWrappers` unnecessarily. [commit 318113@main](https://commits.webkit.org/318113@main)\n- **Rendering** Vertical writing mode custom highlights no longer draw an anti-aliased background fringe. [commit 318177@main](https://commits.webkit.org/318177@main)\n- **Rendering** Vertical writing mode custom highlights also place `text-underline-offset` correctly. [commit 318107@main](https://commits.webkit.org/318107@main)\n- **Rendering** The first baseline for wrap-reverse flex containers now comes from the correct flex line. [commit 318154@main](https://commits.webkit.org/318154@main)\n- **Refactor** Flex formatting context layering got cleaned up to better separate core logic from integration. [commit 318153@main](https://commits.webkit.org/318153@main)\n- **Refactor** Flex container block-size definiteness is now computed up front. [commit 318105@main](https://commits.webkit.org/318105@main)\n- **Rendering** Content-sized flex containers now respect `order` when applying `margin-trim`. [commit 318100@main](https://commits.webkit.org/318100@main)\n\n### Site Isolation and process model\n\n- **Site Isolation** A full-sized iframe within its parent is visible again on iOS. [commit 318192@main](https://commits.webkit.org/318192@main)\n- **Site Isolation** A Navigation API cross-origin history traversal regression on SI bots was fixed. [commit 318191@main](https://commits.webkit.org/318191@main)\n- **Site Isolation** Dump target selection for `notifyDone()` and `forceImmediateCompletion()` now happens in the UI process. [commit 318189@main](https://commits.webkit.org/318189@main)\n- **Site Isolation** WebDriver commands no longer spuriously fail with \"no such window\" in out-of-process iframes. [commit 318187@main](https://commits.webkit.org/318187@main)\n- **Site Isolation** EmbeddedPDFHUDSiteIsolation tests now toggle `SiteIsolationSharedProcessEnabled` correctly. [commit 318183@main](https://commits.webkit.org/318183@main)\n- **Site Isolation** Generated `ProcessSyncData` types gained `TextStream` logging support for better debugging. [commit 318182@main](https://commits.webkit.org/318182@main)\n- **Site Isolation** A permanent mediasession test failure was marked and handled. [commit 318151@main](https://commits.webkit.org/318151@main)\n- **Site Isolation** Autofilled sites are now kept out of the shared process. [commit 318135@main](https://commits.webkit.org/318135@main)\n- **UI** Multiple pending JS dialog requests now queue in the UI process, which matters once SI allows more concurrent edge cases. [commit 318134@main](https://commits.webkit.org/318134@main)\n- **Site Isolation** Another permanent failure was addressed for `fast/mediastream/audio-track-enabled.html`. [commit 318099@main](https://commits.webkit.org/318099@main)\n\n### JavaScriptCore and Wasm\n\n- **V8** `Iterator.prototype.includes()` is now enabled in JSC. [commit 318184@main](https://commits.webkit.org/318184@main)\n- **Build** RegExp test path updates keep `run-regexp-tests` aligned with current layout. [commit 318179@main](https://commits.webkit.org/318179@main)\n- **V8** Wasm BBQ `br.table` now optimizes consecutive same-target runs. [commit 318168@main](https://commits.webkit.org/318168@main)\n- **V8** Memory64 bulk-memory coverage now runs under OMG. [commit 318167@main](https://commits.webkit.org/318167@main)\n- **Security** Switch jump-table selection now uses an overflow-safe range. [commit 318166@main](https://commits.webkit.org/318166@main)\n- **V8** YARR extended `ParenthesesSubpatternTerminal`. [commit 318163@main](https://commits.webkit.org/318163@main)\n- **Build** Linux skips were added for `wasm/stress/type-index-abstract-heap-types*` on GTK and WPE. [commit 318171@main](https://commits.webkit.org/318171@main)\n- **Perf** `addSortedRange` got faster via binary search. [commit 318133@main](https://commits.webkit.org/318133@main)\n- **V8** JSC added a fast operation for `Array#shift`. [commit 318132@main](https://commits.webkit.org/318132@main)\n\n### Networking, storage, and web platform APIs\n\n- **Web Platform** Web Automation `clear element` now fires `change`, matching expected form behavior. [commit 318178@main](https://commits.webkit.org/318178@main)\n- **Web Platform** `NetworkSoftLink` usage was largely replaced with `HAVE(WEBTRANSPORT)` feature guards. [commit 318161@main](https://commits.webkit.org/318161@main)\n- **Security** CSP `connect-src` tests were re-imported. [commit 318160@main](https://commits.webkit.org/318160@main)\n- **Networking** Pending stream state can now return all chunks at once more easily. [commit 318150@main](https://commits.webkit.org/318150@main)\n- **Networking** `pendingStreamSchedule` no longer signals CFReadStream events before open. [commit 318147@main](https://commits.webkit.org/318147@main)\n- **Web Platform** OPFS quota accounting no longer over-charges positioned writes in `FileSystemWritableFileStream`. [commit 318130@main](https://commits.webkit.org/318130@main)\n- **Security** `CacheStorageDiskStore` stopped reading a member off the IO queue instead of its isolated copy. [commit 318127@main](https://commits.webkit.org/318127@main)\n- **Web Platform** `Storage::traverse(const String\u0026 type, const String\u0026 partition, ...)` works again after a regression. [commit 318124@main](https://commits.webkit.org/318124@main)\n- **Privacy** Digital Credentials `get()` now consumes transient activation before request serialization. [commit 318122@main](https://commits.webkit.org/318122@main)\n- **Privacy** Request-info-backed ISO 18013 request construction was removed from Digital Credentials. [commit 318170@main](https://commits.webkit.org/318170@main)\n- **Web Platform** `SVGMatrix.multiply` now accepts `DOMMatrix2DInit` per SVG 2. [commit 318109@main](https://commits.webkit.org/318109@main)\n- **Web Platform** HTML-in-Canvas WPT coverage was imported. [commit 318117@main](https://commits.webkit.org/318117@main)\n\n### Media, WebRTC, payments, and immersive APIs\n\n- **Media** `getUserMedia` with `echoCancellation:false` no longer interrupts the system microphone on every capture start. [commit 318164@main](https://commits.webkit.org/318164@main)\n- **Media** Find in Page can now match captions in videos even when captions are turned off. [commit 318159@main](https://commits.webkit.org/318159@main)\n- **Media** iOS Safari `setSinkId()` now actually switches audio output for single-track WebRTC streams. [commit 318149@main](https://commits.webkit.org/318149@main)\n- **Web Platform** Apple Pay no longer drops a deferred payment request when the payment method changes. [commit 318155@main](https://commits.webkit.org/318155@main)\n- **Web Platform** ModelPlayer is now node-addressable for Multi-Model work. [commit 318114@main](https://commits.webkit.org/318114@main)\n- **Web Platform** An unused include was removed from `WebXRWebGLLayer`. [commit 318142@main](https://commits.webkit.org/318142@main)\n\n### UI, accessibility, and developer tools\n\n- **A11y** SVG anchors without `href` are only exposed as links if they have a click handler, matching HTML anchor behavior. [commit 318186@main](https://commits.webkit.org/318186@main)\n- **DevTools** Native DOM methods now show parameter lists in Web Inspector. [commit 318169@main](https://commits.webkit.org/318169@main)\n- **UI** MiniBrowser now respects `window.open` size and location features in its first pass. [commit 318139@main](https://commits.webkit.org/318139@main)\n- **UI** iOS no longer extends page colors under the sidebar or top inset. [commit 318137@main](https://commits.webkit.org/318137@main)\n- **A11y** `SelectedTextChanged` now reports the stitch representative instead of a stitched-away text member. [commit 318112@main](https://commits.webkit.org/318112@main)\n- **Mobile** SwiftUI WebKit API types were exposed as SPI on watchOS and tvOS. [commit 318108@main](https://commits.webkit.org/318108@main)\n- **UI** On macOS 27, momentum scrolling no longer triggers `NSRefreshController`. [commit 318106@main](https://commits.webkit.org/318106@main)\n- **A11y** WebKit added foundation work for Accessibility Custom Color Mode. [commit 318119@main](https://commits.webkit.org/318119@main)\n- **Web Platform** Several WebDriver tests were fixed after the initial advance-user-interactions implementation. [commit 318118@main](https://commits.webkit.org/318118@main)\n\n### Build, ports, platform plumbing, and test infra\n\n- **Build** iOS CMake stopped spawning `readlink` for every staged framework header. [commit 318190@main](https://commits.webkit.org/318190@main)\n- **Build** Relocatable build handling now uses the right `webpushd` launchd plist location. [commit 318188@main](https://commits.webkit.org/318188@main)\n- **Perf** `measure-build-time` tests no longer call `xcodebuild` unconditionally. [commit 318157@main](https://commits.webkit.org/318157@main)\n- **Build** GLib simplified the hboxmax user-agent quirk. [commit 318156@main](https://commits.webkit.org/318156@main)\n- **Build** GLib quirks also restored HBOMax library accessibility. [commit 318152@main](https://commits.webkit.org/318152@main)\n- **GPU** GTK and WPE Skia compositor code now skips flattened-bounds transforms for empty layers. [commit 318148@main](https://commits.webkit.org/318148@main)\n- **Build** GLib JSON output once again reports API test names consistently with results.webkit.org. [commit 318146@main](https://commits.webkit.org/318146@main)\n- **Build** Skia rolled to the 2026-07-28 snapshot. [commit 318145@main](https://commits.webkit.org/318145@main)\n- **GPU** Stream IPC receivers can now dispatch synchronous messages into Swift. [commit 318141@main](https://commits.webkit.org/318141@main)\n- **GPU** GTK and WPE Skia compositor cleanup removed `effectiveLayerRect()`. [commit 318138@main](https://commits.webkit.org/318138@main)\n- **Build** WebKitTestRunner now computes stable pixel hashes on big-endian byte-order contexts. [commit 318129@main](https://commits.webkit.org/318129@main)\n- **Build** Safer C++ fixes landed in `Source/WebKit`. [commit 318128@main](https://commits.webkit.org/318128@main)\n- **Build** Some broken configurations build again. [commit 318126@main](https://commits.webkit.org/318126@main)\n- **Build** Darwin temp and cache directory helpers were added. [commit 318121@main](https://commits.webkit.org/318121@main)\n- **Build** Cocoa CMake now imports BrowserEngineKit headers where `BELayerHierarchy` is used. [commit 318120@main](https://commits.webkit.org/318120@main)\n- **Build** WPEPlatform gained `WPEProcessManager` so embedders can launch auxiliary processes. [commit 318158@main](https://commits.webkit.org/318158@main)\n- **GPU** Skia updated again to the 2026-07-06 snapshot line used by the tree. [commit 318104@main](https://commits.webkit.org/318104@main)\n- **Rendering** Float16 canvas tests were added across all predefined color spaces. [commit 318103@main](https://commits.webkit.org/318103@main)\n- **Build** Mac and iOS ports were merged under a single \"Cocoa\" CMake port. [commit 318097@main](https://commits.webkit.org/318097@main)\n\n### Memory management, allocator, and low-level cleanup\n\n- **Security** Creating or destroying a `CheckedPtr` is now treated as no-delete. [commit 318140@main](https://commits.webkit.org/318140@main)\n- **Security** Incorrect NODELETE annotations were removed from `Source/WebCore/Modules`. [commit 318136@main](https://commits.webkit.org/318136@main)\n- **Perf** `libpas` fixed frequent-scavenging test scopes that were decommitting almost nothing. [commit 318111@main](https://commits.webkit.org/318111@main)\n- **Security** `libpas` chaos tests now cover unwritten and paged-out pages. [commit 318110@main](https://commits.webkit.org/318110@main)\n\n## Reverts \u0026 Reapplies\n\n- **Refactor** No explicit revert, reapply, or backed-out feature commits landed in this slice.",
  "repo": "webkit",
  "repoDisplay": "WebKit",
  "rollGroups": [],
  "since": "2026-07-29",
  "totals": {
    "commits": 96,
    "features": 96,
    "rolls": 0
  },
  "until": "2026-07-29"
}