{
  "commits": {
    "316853@main": {
      "author": "Zak Ridouh",
      "avatar": "https://www.gravatar.com/avatar/d9b65ef530b9cbbfc6dff1ca158faace?d=identicon\u0026s=64",
      "cl": "316853@main",
      "clUrl": "https://commits.webkit.org/316853@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=315146\nrdar://177478344\n\nReviewed by Pascoe.\n\nWhen both WebKitBuild/\u003cConfig\u003e/ (Xcode) and WebKitBuild/cmake-mac/\u003cConfig\u003e/\n(CMake) exist, webkit-build-directory now defaults to whichever tree was built\nmost recently instead of always preferring Xcode. The choice is logged on\nSTDERR (\"Using last-built tree: cmake-mac/Debug\" or \"Using last-built tree:\nDebug\").\n\nTools that benefit (anything that shells out to webkit-build-directory):\nrun-api-tests, run-webkit-tests, run-perf-tests, run-webdriver,\nrun-minibrowser, run-swiftbrowser, run-jsc-stress-tests, run-testmem,\ndump-class-layout, install-built-product, measure-build-time,\nextract-tbds-from-internal-sdk.\n\nBuild drivers (build-webkit and its wrappers, set-webkit-configuration) call\nwebkitdirs.pm directly without opting into the tiebreaker and keep today's\nbehavior, so they never auto-flip the build target.\n\nAdd --xcode as a counterpart to --cmake for explicit pinning.\n\nThe tiebreaker is opt-in via enableLastBuiltTiebreaker(), which\nwebkit-build-directory calls for itself before any product-directory query. It\ncompares each build system's own build log rather than a specific product\nbinary, so a partial build (e.g. a JSC-only build that never relinks\nWebKit.framework) still moves the marker: the CMake/Ninja tree's\ncmake-mac/\u003cConfig\u003e/.ninja_log versus the Xcode/XCBuild tree's\nWebKitBuild/XCBuildData/build.db, read via File::stat's -\u003emtime. A missing log\nresolves to mtime 0, so an absent log degrades to the pre-existing \"Xcode wins\nwhen both exist\" default. build.db lives at the WebKitBuild root and is shared\nacross Xcode configurations, so with two Xcode configs it reflects the most\nrecent Xcode build of any of them rather than this specific configuration; that\nonly ever biases back toward the historical Xcode-wins default. Non-Cocoa ports\nare gated out via the existing isAppleCocoaWebKit() guard.\n\n* Tools/Scripts/webkit-build-directory:\n* Tools/Scripts/webkitdirs.pm:\n(determineIsCMakeBuild):\n(enableLastBuiltTiebreaker): Added.\n* Tools/Scripts/webkitperl/webkitdirs_unittest/determineIsCMakeBuild.pl:\n* Tools/Scripts/webkitperl/webkitdirs_unittest/determineIsCMakeBuildXcode.pl: Added.\n* Tools/Scripts/webkitperl/webkitdirs_unittest/determineIsCMakeBuildLastBuiltCMake.pl: Added.\n* Tools/Scripts/webkitperl/webkitdirs_unittest/determineIsCMakeBuildLastBuiltXcode.pl: Added.\n* Tools/Scripts/webkitpy/port/base.py:\n(Port.__init__):\n* Tools/Scripts/webkitpy/port/config.py:\n(Config.__init__):\n(Config.build_directory):\n* Tools/Scripts/webkitpy/port/config_unittest.py:\n(ConfigTest.make_config):\n(ConfigTest.test_build_directory_passes_xcode_flag):\n(ConfigTest.test_build_directory_passes_xcode_flag.mock_run_command):\n* Tools/Scripts/webkitpy/port/factory.py:\n(configuration_options):\n\nCanonical link: https://commits.webkit.org/316853@main",
      "email": "zakr@apple.com",
      "hash": "b3f1f7efedad5b6f50e1acd35a4a400e2393d120",
      "subject": "Auto-pick last-built tree on Mac for scripts that use local build products, add --xcode flag"
    },
    "316854@main": {
      "author": "Alex Christensen",
      "avatar": "https://www.gravatar.com/avatar/b087c5dfcb1233e80cad9105fd5a1ac6?d=identicon\u0026s=64",
      "cl": "316854@main",
      "clUrl": "https://commits.webkit.org/316854@main",
      "description": "rdar://174079071\n\nReviewed by Chris Dumez.\n\nUsing the CertificateInfo from the web content process allows a compromised\nweb content process to tamper with the certificates and their properties.\nThis PR makes us use the CertificateInfo from the network process instead.\nWe send the CertificateInfo when we receive a response.  Thereafter, when the\nfirst HTTP body data is received, it is sent to the web content process which\ntells the UI process that the load was committed.  Since the messages coming\nfrom the network process directly to the UI process are on a separate queue\nat the kernel level, there is no guarantee of the order messages are received\nin.  In the very unlikely case that the certificate info has not yet arrived,\nprocess the incoming messages from the network process to find the certificate\ninfo.  To avoid race conditions between multiple navigations committing in\nquick succession, we check the host and port for correctness before using the\ncertificate info.  This allows a compromised web content process to either\nmatch or not match, which limits its ability to just using or not using the\ncertificate info from the network process.\n\nTo fix the regression from the original commit, I include rdar://177670634\nin this upstreaming too.\n\nTest: Tools/TestWebKitAPI/Tests/WebKit/WKWebView/WKWebViewServerTrustKVC.mm\n\n* Source/WebKit/NetworkProcess/NetworkResourceLoader.cpp:\n(WebKit::NetworkResourceLoader::didReceiveMainResourceResponse):\n* Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm:\n(-[WKWebView _certificateChain]):\n(-[WKWebView certificateChain]):\n* Source/WebKit/UIProcess/Network/NetworkProcessProxy.cpp:\n(WebKit::NetworkProcessProxy::receivedMainResourceResponseWithCertificateInfo):\n* Source/WebKit/UIProcess/Network/NetworkProcessProxy.h:\n* Source/WebKit/UIProcess/Network/NetworkProcessProxy.messages.in:\n* Source/WebKit/UIProcess/ProvisionalPageProxy.cpp:\n(WebKit::ProvisionalPageProxy::didCommitLoadForFrame):\n* Source/WebKit/UIProcess/ProvisionalPageProxy.h:\n* Source/WebKit/UIProcess/WebFrameProxy.cpp:\n(WebKit::WebFrameProxy::didCommitLoad):\n(WebKit::WebFrameProxy::commitProvisionalFrame):\n(WebKit::WebFrameProxy::waitForCertificateInfoFromNetworkProcess):\n(WebKit::WebFrameProxy::commitCertificateInfo):\n(WebKit::WebFrameProxy::receivedMainResourceResponseWithCertificateInfo):\n* Source/WebKit/UIProcess/WebFrameProxy.h:\n* Source/WebKit/UIProcess/WebPageProxy.cpp:\n(WebKit::WebPageProxy::commitProvisionalPage):\n(WebKit::WebPageProxy::didCommitLoadForFrame):\n* Source/WebKit/UIProcess/WebPageProxy.h:\n* Source/WebKit/UIProcess/WebPageProxy.messages.in:\n* Source/WebKit/WebProcess/WebCoreSupport/WebLocalFrameLoaderClient.cpp:\n(WebKit::WebLocalFrameLoaderClient::dispatchDidCommitLoad):\n* Tools/TestWebKitAPI/Tests/WebKit/WKWebView/WKWebViewServerTrustKVC.mm:\n(-[TrustObserver observeValueForKeyPath:ofObject:change:context:]):\n(-[TrustObserver waitUntilServerTrustChanged]):\n(TEST(WKWebView, ServerTrustKVC)):\n\nOriginally-landed-as: 305413.924@safari-7624-branch (ca0e749a00ce). rdar://174079071\nAlso includes:\n\nOriginally-landed-as: 305413.950@safari-7624-branch (732f21e). rdar://177670634\nCanonical link: https://commits.webkit.org/316854@main",
      "email": "achristensen@apple.com",
      "hash": "8c4517f0f7c512fe8ace111510e3068f745ebcd2",
      "subject": "Use CertificateInfo from network process instead of web content process"
    },
    "316855@main": {
      "author": "Karl Rackler",
      "avatar": "https://www.gravatar.com/avatar/809e306d02face15d5e29b561026f7c2?d=identicon\u0026s=64",
      "cl": "316855@main",
      "clUrl": "https://commits.webkit.org/316855@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319003\nrdar://181852376\n\nUnreviewed test gardening.\n\nAdd test expectation.\n\n* LayoutTests/platform/mac-wk2/TestExpectations:\n\nCanonical link: https://commits.webkit.org/316855@main",
      "email": "rackler@apple.com",
      "hash": "52cb6d78ba86d7f58dca155ada25914853fbc441",
      "subject": "[Gardening]: (REGRESSION(316360@main):[macOS] fast/mediastream/microphone-interruption-and-audio-session.html is a constant TEXT failure)"
    },
    "316856@main": {
      "author": "Fady Farag",
      "avatar": "https://www.gravatar.com/avatar/0ac5127c69f90d0c57054173ae4c3108?d=identicon\u0026s=64",
      "cl": "316856@main",
      "clUrl": "https://commits.webkit.org/316856@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319005\nrdar://181853376\n\nReviewed by Darin Adler.\n\n* JSTests/stress/regress-191856.js:\n* Source/WebGPU/WebGPU/CommandEncoder.swift:\n(WebGPU.beginRenderPass(_:)):\n\nCanonical link: https://commits.webkit.org/316856@main",
      "email": "com.webkit.iidmsa@gmail.com",
      "hash": "4fc57e46800dda031a0643511e594514af81393f",
      "subject": "Replace common typo \"FIMXE\" with the intended \"FIXME\" in WebKit"
    },
    "316857@main": {
      "author": "Jetzel Espinal",
      "avatar": "https://www.gravatar.com/avatar/2edd78d5d9f2f2e2e695465277634921?d=identicon\u0026s=64",
      "cl": "316857@main",
      "clUrl": "https://commits.webkit.org/316857@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319000\nrdar://181850973\n\nUnreviewed test gardening.\n\n* TestExpectations/apitests:\n\nCanonical link: https://commits.webkit.org/316857@main",
      "email": "jespinal23@apple.com",
      "hash": "6459fa27cca11c102f8f9058452de51908ac1928",
      "subject": "[GARDENING][iOS] TestWebKitAPI.WKHTTPCookieStore.ObserveCookiesReceivedFromHTTP (api-test) is a flaky failure."
    },
    "316858@main": {
      "author": "Josh Hernandez",
      "avatar": "https://www.gravatar.com/avatar/e268e9ba8d96006649c1745a48db2f73?d=identicon\u0026s=64",
      "cl": "316858@main",
      "clUrl": "https://commits.webkit.org/316858@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=318377\nrdar://181166823\n\nReviewed by Aditya Keerthi and Cole Carley.\n\nMake video caption text searchable in Find-in-Page on iOS and\nlet matches seek the video.\n\nWebFoundTextRange now carries a cue variant (media element identifier, document offset,\nseek time) so cue matches travel over IPC alongside DOM and PDF matches.\n\nWebFoundTextRangeController now handles cues: it gathers cue matches during a\nfind, orders them by the media element's position in the document so they\ninterleave with page-text matches, seeks the video to the cue time when a cue\nbecomes the current match, scrolls the video into view, and reports the video's\nbounds as the match rect.\n\nWKContentViewInteraction now represents cue matches on iOS and orders them\ntogether with DOM matches in document order, so Find-in-Page steps through page\ntext and captions in the order they appear on screen.\n\nAdds API tests in FindInPage.mm: FindInPageVideoCaptionCues checks that caption\ncues are returned interleaved with page-text matches, FindInPageVideoCaptionCuesInSubframe\ncovers cues in a same-origin subframe, and FindInPageVideoCaptionCueSeeksVideo\nchecks that highlighting a cue seeks the video to its start time while\nhighlighting page text does not.\n\n* Source/WebKit/Shared/WebFoundTextRange.cpp:\n(WebKit::WebFoundTextRange::CueData::hash const):\n(WebKit::WebFoundTextRange::hash const):\n(WebKit::operator\u003c\u003c):\n* Source/WebKit/Shared/WebFoundTextRange.h:\n* Source/WebKit/Shared/WebFoundTextRange.serialization.in:\n* Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm:\n(-[WKContentView offsetFromPosition:toPosition:]):\n(+[WKFoundTextRange foundTextRangeWithWebFoundTextRange:]):\n(-[WKFoundCueTextRange start]):\n(-[WKFoundCueTextRange end]):\n(-[WKFoundCueTextRange webFoundTextRange]):\n(+[WKFoundCueTextPosition textPositionWithDocumentOffset:seekTimeMillis:order:]):\n(+[WKFoundCueTextPosition textPositionWithDocumentOffset:seekTimeMilliseconds:order:]):\n* Source/WebKit/WebProcess/WebPage/WebFoundTextRangeController.cpp:\n(WebKit::WebFoundTextRangeController::findTextRangesForStringMatches):\n(WebKit::WebFoundTextRangeController::mediaElementForCueRange const):\n(WebKit::WebFoundTextRangeController::decorateTextRangeWithStyle):\n(WebKit::WebFoundTextRangeController::scrollTextRangeToVisible):\n(WebKit::WebFoundTextRangeController::requestRectForFoundTextRange):\n(WebKit::WebFoundTextRangeController::redraw):\n(WebKit::findCueMatchesInFrame):\n* Source/WebKit/WebProcess/WebPage/WebFoundTextRangeController.h:\n* Tools/TestWebKitAPI/Resources/lots-of-text-and-video.html: Added.\n* Tools/TestWebKitAPI/Resources/video-with-caption-cues.html: Added.\n* Tools/TestWebKitAPI/Tests/WebKit/WKWebView/FindInPage.mm:\n(configurationWithFindInVideoEnabled):\n(TEST(WebKit, FindInPageVideoCaptionCues)):\n(currentTimeAfterHighlighting):\n(TEST(WebKit, FindInPageVideoCaptionCueSeeksVideo)):\n(TEST(WebKit, FindInPageVideoCaptionCuesInSubframe)):\n\nCanonical link: https://commits.webkit.org/316858@main",
      "email": "jhernandez89@apple.com",
      "hash": "2b3618997e3d2ac35a41df8cf3fed94fd9dde423",
      "subject": "Include video caption cues in Find-in-Page navigation on iOS"
    },
    "316859@main": {
      "author": "Ahmad Saleem",
      "avatar": "https://www.gravatar.com/avatar/38445f84fe28aa19bfeb1f59f6559532?d=identicon\u0026s=64",
      "cl": "316859@main",
      "clUrl": "https://commits.webkit.org/316859@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=318939\nrdar://181783474\n\nReviewed by Eric Carlson.\n\nTwo conditionals in MediaFragmentURIParser::parseNPTTime() are\nunreachable and can be removed with no behavior change:\n\n- The `if (offset == timeString.size()) return true;` guard inside the\n  fractional-seconds ('.') branch. Just above it, the earlier check\n  `if (offset \u003e= timeString.size() || timeString[offset] == ',')`\n  already returns, so reaching this point guarantees\n  offset \u003c timeString.size(); the equality can never hold.\n\n- The `if (digits1.length() \u003c 1) return false;` check. The function's\n  entry guard `if (offset \u003e= timeString.size() || !isASCIIDigit(...))`\n  ensures the current character is a digit before collectDigits() runs,\n  so digits1 always contains at least one digit.\n\n* Source/WebCore/html/MediaFragmentURIParser.cpp:\n(WebCore::MediaFragmentURIParser::parseNPTTime):\n\nCanonical link: https://commits.webkit.org/316859@main",
      "email": "ahmad.saleem792+github@gmail.com",
      "hash": "f55b9f50a0d6935def78b06ebe81cbbd5da11ffa",
      "subject": "[MediaFragmentURIParser] Remove two dead branches in parseNPTTime"
    },
    "316860@main": {
      "author": "Basuke Suzuki",
      "avatar": "https://www.gravatar.com/avatar/5192a1151c7575317affb7a4633f8d63?d=identicon\u0026s=64",
      "cl": "316860@main",
      "clUrl": "https://commits.webkit.org/316860@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=318998\nrdar://181850400\n\nReviewed by Alex Christensen.\n\nRe-import the web-platform-tests webtransport test suite from upstream at\ntip-of-tree.\n\nUpstream commit: https://github.com/web-platform-tests/wpt/commit/666e2cf845f692e4465b40f5e392302cdb59c783\n\nUpstream renamed constructor, idlharness and datagram-cancel-crash to their\n.sub. substituted variants, and added the congestion-control,\nincoming-multiple-streams and historical tests. TestExpectations is updated to\nfollow the renames and to skip the new tests: the layout test harness does not\nyet run a WebTransport-over-HTTP/3 (webtransport-h3) server, so these tests\nwould otherwise time out. idlharness moves from [ Failure ] to [ Skip ] for the\nsame reason (its baseline was removed by the rename); a proper baseline will be\nregenerated once the h3 server is wired up. This is a test-import-only change;\ntools/webtransport (the aioquic h3 server) is imported separately.\n\n* LayoutTests/imported/w3c/web-platform-tests/webtransport/back-forward-cache-with-open-webtransport-connection.https.window.js:\n* LayoutTests/imported/w3c/web-platform-tests/webtransport/bidirectional-cancel-crash.https.html:\n* LayoutTests/imported/w3c/web-platform-tests/webtransport/close.https.any.js:\n* LayoutTests/imported/w3c/web-platform-tests/webtransport/congestion-control.https.any.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/webtransport/congestion-control.https.any.js: Added.\n* LayoutTests/imported/w3c/web-platform-tests/webtransport/congestion-control.https.any.serviceworker.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/webtransport/congestion-control.https.any.sharedworker.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/webtransport/congestion-control.https.any.worker.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/webtransport/connect.https.any.js:\n* LayoutTests/imported/w3c/web-platform-tests/webtransport/constructor.https.any-expected.txt: Removed.\n* LayoutTests/imported/w3c/web-platform-tests/webtransport/constructor.https.any.html: Removed.\n* LayoutTests/imported/w3c/web-platform-tests/webtransport/constructor.https.any.js: Removed.\n* LayoutTests/imported/w3c/web-platform-tests/webtransport/constructor.https.any.serviceworker-expected.txt: Removed.\n* LayoutTests/imported/w3c/web-platform-tests/webtransport/constructor.https.any.serviceworker.html: Removed.\n* LayoutTests/imported/w3c/web-platform-tests/webtransport/constructor.https.any.sharedworker-expected.txt: Removed.\n* LayoutTests/imported/w3c/web-platform-tests/webtransport/constructor.https.any.sharedworker.html: Removed.\n* LayoutTests/imported/w3c/web-platform-tests/webtransport/constructor.https.any.worker-expected.txt: Removed.\n* LayoutTests/imported/w3c/web-platform-tests/webtransport/constructor.https.any.worker.html: Removed.\n* LayoutTests/imported/w3c/web-platform-tests/webtransport/constructor.https.sub.any.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/webtransport/constructor.https.sub.any.js: Added.\n* LayoutTests/imported/w3c/web-platform-tests/webtransport/constructor.https.sub.any.serviceworker.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/webtransport/constructor.https.sub.any.sharedworker.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/webtransport/constructor.https.sub.any.worker.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/webtransport/csp-fail.https.window.js:\n* LayoutTests/imported/w3c/web-platform-tests/webtransport/csp-pass.https.window.js:\n* LayoutTests/imported/w3c/web-platform-tests/webtransport/datagram-bad-chunk.https.any.js:\n* LayoutTests/imported/w3c/web-platform-tests/webtransport/datagram-cancel-crash.https.sub.window.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/webtransport/datagram-cancel-crash.https.sub.window.js: Added.\n* LayoutTests/imported/w3c/web-platform-tests/webtransport/datagram-cancel-crash.https.window-expected.txt: Removed.\n* LayoutTests/imported/w3c/web-platform-tests/webtransport/datagram-cancel-crash.https.window.html: Removed.\n* LayoutTests/imported/w3c/web-platform-tests/webtransport/datagram-cancel-crash.https.window.js: Removed.\n* LayoutTests/imported/w3c/web-platform-tests/webtransport/datagrams.https.any.js:\n* LayoutTests/imported/w3c/web-platform-tests/webtransport/echo-large-bidirectional-streams.https.any.js:\n* LayoutTests/imported/w3c/web-platform-tests/webtransport/handlers/server-create-multiple-streams.py: Added.\n* LayoutTests/imported/w3c/web-platform-tests/webtransport/handlers/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/webtransport/historical.https.sub.any.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/webtransport/historical.https.sub.any.js: Added.\n* LayoutTests/imported/w3c/web-platform-tests/webtransport/historical.https.sub.any.serviceworker.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/webtransport/historical.https.sub.any.sharedworker.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/webtransport/historical.https.sub.any.worker.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/webtransport/idlharness.https.any-expected.txt: Removed.\n* LayoutTests/imported/w3c/web-platform-tests/webtransport/idlharness.https.any.html: Removed.\n* LayoutTests/imported/w3c/web-platform-tests/webtransport/idlharness.https.any.js: Removed.\n* LayoutTests/imported/w3c/web-platform-tests/webtransport/idlharness.https.any.serviceworker-expected.txt: Removed.\n* LayoutTests/imported/w3c/web-platform-tests/webtransport/idlharness.https.any.serviceworker.html: Removed.\n* LayoutTests/imported/w3c/web-platform-tests/webtransport/idlharness.https.any.sharedworker-expected.txt: Removed.\n* LayoutTests/imported/w3c/web-platform-tests/webtransport/idlharness.https.any.sharedworker.html: Removed.\n* LayoutTests/imported/w3c/web-platform-tests/webtransport/idlharness.https.any.worker-expected.txt: Removed.\n* LayoutTests/imported/w3c/web-platform-tests/webtransport/idlharness.https.any.worker.html: Removed.\n* LayoutTests/imported/w3c/web-platform-tests/webtransport/idlharness.https.sub.any.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/webtransport/idlharness.https.sub.any.serviceworker.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/webtransport/idlharness.https.sub.any.sharedworker.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/webtransport/idlharness.https.sub.any.worker.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/webtransport/in-removed-iframe.https.html:\n* LayoutTests/imported/w3c/web-platform-tests/webtransport/incoming-multiple-streams.https.any.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/webtransport/incoming-multiple-streams.https.any.js: Added.\n* LayoutTests/imported/w3c/web-platform-tests/webtransport/incoming-multiple-streams.https.any.serviceworker.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/webtransport/incoming-multiple-streams.https.any.sharedworker.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/webtransport/incoming-multiple-streams.https.any.worker.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/webtransport/resources/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/webtransport/resources/webtransport-test-helpers.sub.js:\n* LayoutTests/imported/w3c/web-platform-tests/webtransport/sendorder.https.any.js:\n* LayoutTests/imported/w3c/web-platform-tests/webtransport/sendstream-bad-chunk.https.any.js:\n* LayoutTests/imported/w3c/web-platform-tests/webtransport/server-certificate-hashes.https.any.js:\n* LayoutTests/imported/w3c/web-platform-tests/webtransport/stats.https.any.js:\n* LayoutTests/imported/w3c/web-platform-tests/webtransport/streams-close.https.any.js:\n* LayoutTests/imported/w3c/web-platform-tests/webtransport/streams-echo.https.any.js:\n* LayoutTests/imported/w3c/web-platform-tests/webtransport/w3c-import.log:\n* LayoutTests/TestExpectations:\n\nCanonical link: https://commits.webkit.org/316860@main",
      "email": "basuke@apple.com",
      "hash": "693d22dcf55a54ed7dc79859fab4acb03f556e96",
      "subject": "[WebTransport] Re-import WPT webtransport tests"
    },
    "316861@main": {
      "author": "Ryosuke Niwa",
      "avatar": "https://www.gravatar.com/avatar/ed2c71248fe3ea15d9129f6e9a2a1e85?d=identicon\u0026s=64",
      "cl": "316861@main",
      "clUrl": "https://commits.webkit.org/316861@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=318999\n\nReviewed by Wenson Hsieh.\n\nCompile out the offending code in Safer C++ bots for now.\n\n* Source/WebKit/UIProcess/API/Cocoa/WKUserContentController.swift:\n\nCanonical link: https://commits.webkit.org/316861@main",
      "email": "rniwa@webkit.org",
      "hash": "4e6aeaa03e7a3f5a2b926c740a83f3f1213df678",
      "subject": "REGRESSION(316796@main): Safer C++ builds are broken"
    },
    "316862@main": {
      "author": "Ling Ho",
      "avatar": "https://www.gravatar.com/avatar/a317955e944b0846697e4a9c8cd28b65?d=identicon\u0026s=64",
      "cl": "316862@main",
      "clUrl": "https://commits.webkit.org/316862@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=317706\nrdar://180355975\n\nReviewed by Alexey Proskuryakov.\n\nCanonical link: https://commits.webkit.org/316862@main",
      "email": "lingho@apple.com",
      "hash": "dcb203ffdef7ad2479f1dfab882fc2f840a9b04b",
      "subject": "Improve PrettyPatch handling of git binary image diffs"
    },
    "316863@main": {
      "author": "Sam Weinig",
      "avatar": "https://www.gravatar.com/avatar/354b409240f9fb3357f498c547423d96?d=identicon\u0026s=64",
      "cl": "316863@main",
      "clUrl": "https://commits.webkit.org/316863@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=318786\n\nReviewed by Antti Koivisto.\n\nConverts `clip`, `-webkit-marquee-increment`, `overflow-clip-margin`, `baseline-shift`, `cx`, `cy`,\n`x`, `y`, `r`, `rx`, `ry`, `stroke-dasharray`,`stroke-dashoffset` and @page `size`.\n\n* Source/WebCore/css/deprecated-cssom/DeprecatedCSSOMRect.cpp:\n* Source/WebCore/css/parser/CSSPropertyParserConsumer+Overflow.cpp:\n* Source/WebCore/css/parser/CSSPropertyParserConsumer+SVG.cpp:\n* Source/WebCore/css/parser/CSSPropertyParserConsumer+Timeline.cpp:\n* Source/WebCore/css/parser/CSSPropertyParserCustom.h:\n* Source/WebCore/css/values/borders/CSSBorderRadius.cpp:\n* Source/WebCore/css/values/borders/CSSBorderRadius.h:\n* Source/WebCore/css/values/masking/CSSClip.h:\n* Source/WebCore/dom/Document.cpp:\n* Source/WebCore/page/PrintContext.cpp:\n* Source/WebCore/rendering/RenderBox.cpp:\n* Source/WebCore/rendering/RenderMarquee.cpp:\n* Source/WebCore/rendering/svg/RenderSVGEllipse.cpp:\n* Source/WebCore/rendering/svg/RenderSVGForeignObject.cpp:\n* Source/WebCore/rendering/svg/RenderSVGRect.cpp:\n* Source/WebCore/rendering/svg/SVGPathFromElement.cpp:\n* Source/WebCore/rendering/svg/SVGRenderSupport.cpp:\n* Source/WebCore/rendering/svg/SVGRenderTreeAsText.cpp:\n* Source/WebCore/rendering/svg/SVGTextLayoutEngineBaseline.cpp:\n* Source/WebCore/rendering/svg/legacy/LegacyRenderSVGEllipse.cpp:\n* Source/WebCore/rendering/svg/legacy/LegacyRenderSVGForeignObject.cpp:\n* Source/WebCore/rendering/svg/legacy/LegacyRenderSVGRect.cpp:\n* Source/WebCore/style/values/masking/StyleClip.h:\n* Source/WebCore/style/values/non-standard/StyleWebKitMarqueeIncrement.h:\n* Source/WebCore/style/values/overflow/StyleOverflowClipMargin.h:\n* Source/WebCore/style/values/page/StylePageSize.cpp:\n* Source/WebCore/style/values/page/StylePageSize.h:\n* Source/WebCore/style/values/svg/StyleSVGBaselineShift.h:\n* Source/WebCore/style/values/svg/StyleSVGCenterCoordinateComponent.h:\n* Source/WebCore/style/values/svg/StyleSVGCoordinateComponent.h:\n* Source/WebCore/style/values/svg/StyleSVGRadius.h:\n* Source/WebCore/style/values/svg/StyleSVGRadiusComponent.h:\n* Source/WebCore/style/values/svg/StyleSVGStrokeDasharray.h:\n* Source/WebCore/style/values/svg/StyleSVGStrokeDashoffset.h:\n* Source/WebCore/style/values/transforms/StyleTransformFunction.cpp:\n* Source/WebCore/svg/SVGLengthContext.cpp:\n* Source/WebCore/svg/SVGLengthContext.h:\n* Source/WebCore/svg/SVGLengthValue.cpp:\n* Source/WebCore/svg/SVGLengthValue.h:\n\nCanonical link: https://commits.webkit.org/316863@main",
      "email": "sam@webkit.org",
      "hash": "8d6cf69019de97384d79fc4ce60035819be5edd4",
      "subject": "[EvaluationTimeZoom] Convert remaining trivial to convert properties to evaluation time zoom"
    },
    "316864@main": {
      "author": "Sosuke Suzuki",
      "avatar": "https://www.gravatar.com/avatar/e63b87350fe19bdd9a30c7234eda45af?d=identicon\u0026s=64",
      "cl": "316864@main",
      "clUrl": "https://commits.webkit.org/316864@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=318847\n\nReviewed by Yusuke Suzuki.\n\nThe microtask drain loop has a call cache with a single entry. It\nremembers the last callee (executable, CodeBlock, and entry address), and\na hit skips getCallData / prepareForExecution / incoming-call relinking.\n\nBut one entry misses whenever an async function awaits another async\nfunction: the callee's completion wakes the caller, so their resumes are\nalways adjacent in the microtask stream, and the cache never sees the\nsame callee twice in a row. This is the common shape of async code, and\nthe miss path took ~14% of drain time in an await-chain profile.\n\nThis change widens the cache to 8 entries with round-robin replacement,\nso all callees of a typical await/then chain stay cached.\n\nIt also inlines JSGlobalObject::queueMicrotask and microtaskQueue(),\nwhich were out-of-line and copied a QueuedTask on every enqueue. This\npart alone is worth about 5-8% on promise-heavy microbenchmarks.\n\n                                                Baseline                  Patched\n\npromise-then-chain-distinct-functions       16.9122+-0.1662     ^     10.7162+-0.1512        ^ definitely 1.5782x faster\nawait-async-function-call-chain             16.0482+-0.1623     ^     12.5936+-0.2134        ^ definitely 1.2743x faster\n\nTests: JSTests/microbenchmarks/await-async-function-call-chain.js\n       JSTests/microbenchmarks/promise-then-chain-distinct-functions.js\n\n* JSTests/microbenchmarks/await-async-function-call-chain.js: Added.\n(async d5):\n(async d4):\n(async d3):\n(async d2):\n(async d1):\n(async run):\n* JSTests/microbenchmarks/promise-then-chain-distinct-functions.js: Added.\n(async run):\n* JSTests/stress/microtask-call-cache.js: Added.\n(shouldBe):\n(async a1):\n(async a2):\n(async a3):\n(async a4):\n(async a5):\n(async a6):\n(async a7):\n(async a8):\n(async a9):\n(async a10):\n(async a11):\n(async a12):\n(makeAdder.return.async adder):\n(makeAdder):\n(async test):\n(async run):\n* Source/JavaScriptCore/interpreter/MicrotaskCall.h:\n* Source/JavaScriptCore/runtime/JSGlobalObject.cpp:\n(JSC::JSGlobalObject::microtaskQueue const): Deleted.\n(JSC::JSGlobalObject::queueMicrotask): Deleted.\n* Source/JavaScriptCore/runtime/JSMicrotask.cpp:\n(JSC::callMicrotask):\n(JSC::runInternalMicrotask):\n* Source/JavaScriptCore/runtime/JSMicrotask.h:\n* Source/JavaScriptCore/runtime/JSPromise.cpp:\n* Source/JavaScriptCore/runtime/JSPromiseConstructor.cpp:\n* Source/JavaScriptCore/runtime/MicrotaskQueue.cpp:\n(JSC::runMicrotask):\n(JSC::MicrotaskQueue::drainImpl):\n* Source/JavaScriptCore/runtime/MicrotaskQueueInlines.h:\n(JSC::JSGlobalObject::microtaskQueue const):\n(JSC::JSGlobalObject::queueMicrotask):\n\nCanonical link: https://commits.webkit.org/316864@main",
      "email": "sosuke@bun.sh",
      "hash": "d11c8c7ba675067079fe261af351c44e5fd3278b",
      "subject": "[JSC] Use a polymorphic cache for microtask calls"
    },
    "316865@main": {
      "author": "Richard Robinson",
      "avatar": "https://www.gravatar.com/avatar/a0d2f862985ed0fd47887be66f5a3e4f?d=identicon\u0026s=64",
      "cl": "316865@main",
      "clUrl": "https://commits.webkit.org/316865@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319024\nrdar://181879513\n\nReviewed by Abrar Rahman Protyasha.\n\nSwift 6.4 has the safe `Span(viewing:)` initializer API (https://developer.apple.com/documentation/swift/span/init(viewing:)-9d31g) implemented in https://github.com/swiftlang/swift/commit/8e5539f6199458258d508210ed2f2256911c6ca3 .\n\nHowever, some configurations of WebKit use an old Swift 6.4 version which does not yet have such\nAPI. Therefore, a build fix was landed to use the pre-API version of the initializer, which has\nan identical implementation but is marked as unsafe since its constraints on the `Span.Element`\ntype aren't as strict.\n\nDocument this safety reasoning and add a FIXME.\n\n* Source/WebKit/UIProcess/API/Cocoa/WKUserContentController.swift:\n(WKUserContentController.addBuffer(_:name:to:)):\n\nCanonical link: https://commits.webkit.org/316865@main",
      "email": "richard_robinson2@apple.com",
      "hash": "fd3b2868954a7aff5564e6e01ebabf4253728c75",
      "subject": "Follow-up to 316796@main and subsequent build fixes to document safety invariants and FIXMEs"
    },
    "316867@main": {
      "author": "Ahmad Saleem",
      "avatar": "https://www.gravatar.com/avatar/38445f84fe28aa19bfeb1f59f6559532?d=identicon\u0026s=64",
      "cl": "316867@main",
      "clUrl": "https://commits.webkit.org/316867@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=317070\nrdar://179558196\n\nReviewed by Frédéric Wang Nélar.\n\nThe operator dictionary entries for U+2016 ‖ DOUBLE VERTICAL LINE (prefix and\npostfix forms) were missing the symmetric property. Per the MathML Core\noperator dictionary [1], both forms are { stretchy, symmetric } (categories F\nand G). WebKit only had { Fence, Stretchy }, so a stretchy ‖ was not stretched\nsymmetrically about the math axis.\n\nAdd the Symmetric flag to both entries. Verified against the WPT operator\ndictionary data (operator-dictionary.json) that U+2016 is the only character\nwhose symmetric property was missing.\n\n[1] https://w3c.github.io/mathml-core/#operator-dictionary-human\n\n* Source/WebCore/mathml/MathMLOperatorDictionary.cpp:\n\n\u003e Progressions:\n* LayoutTests/imported/w3c/web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-symmetric-001-expected.txt: Progression\n* LayoutTests/imported/w3c/web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-symmetric-006-expected.txt: Ditto\n\n\u003e Rebaselines:\n* LayoutTests/platform/mac/mathml/presentation/mo-stretch-expected.txt: Rebaselined\n* LayoutTests/platform/glib/mathml/presentation/mo-stretch-expected.txt: Ditto\n* LayoutTests/platform/ios/mathml/presentation/mo-stretch-expected.txt: Ditto\n\nCanonical link: https://commits.webkit.org/316867@main",
      "email": "ahmad.saleem792+github@gmail.com",
      "hash": "fd9720f6c31924452f80959059bdc40ca76e0eed",
      "subject": "U+2016 (DOUBLE VERTICAL LINE) is missing the symmetric property in the operator dictionary"
    },
    "316868@main": {
      "author": "Nikolas Zimmermann",
      "avatar": "https://www.gravatar.com/avatar/83cbd636495835720e369cd589e3ca5e?d=identicon\u0026s=64",
      "cl": "316868@main",
      "clUrl": "https://commits.webkit.org/316868@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319037\n\nUnreviewed.\n\nisCMakeBuild() short-circuits to true on non-Cocoa ports, so the\n\"--xcode pins isCMakeBuild() to false\" assertion failed on WPE Linux\nbots. Force isAppleCocoaWebKit() on, matching the sibling\ndetermineIsCMakeBuildLastBuilt*.pl tests, to keep it platform-independent.\n\nFixes a webkitperl unit test regression seen on the WPE/Gtk bots.\n\nCanonical link: https://commits.webkit.org/316868@main",
      "email": "nzimmermann@igalia.com",
      "hash": "3d8360192eb5afe3d53ae8444e11fc6eca45e3d0",
      "subject": "REGRESSION(316853@main): determineIsCMakeBuildXcode.pl webkitperl test fails on non-Cocoa bots"
    },
    "316869@main": {
      "author": "Carlos Garcia Campos",
      "avatar": "https://www.gravatar.com/avatar/8393f7e76d83c8a147cb852d8fb1a959?d=identicon\u0026s=64",
      "cl": "316869@main",
      "clUrl": "https://commits.webkit.org/316869@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=318960\n\nReviewed by Nikolas Zimmermann.\n\nIt's currently unused and untested, better keep the threaded rendering as\nthe only code path for tile painting.\n\n* Source/WebCore/platform/graphics/skia/SkiaPaintingEngine.cpp:\n(WebCore::SkiaPaintingEngine::createBuffer const):\n(WebCore::SkiaPaintingEngine::record):\n(WebCore::SkiaPaintingEngine::replay):\n(WebCore::SkiaPaintingEngine::numberOfCPUPaintingThreads):\n(WebCore::SkiaPaintingEngine::numberOfGPUPaintingThreads):\n(WebCore::SkiaPaintingEngine::paint): Deleted.\n* Source/WebCore/platform/graphics/skia/SkiaPaintingEngine.h:\n(WebCore::SkiaPaintingEngine::useThreadedRendering const): Deleted.\n* Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedBackingStoreProxy.cpp:\n(WebCore::CoordinatedBackingStoreProxy::updateIfNeeded):\n* Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedPlatformLayer.cpp:\n(WebCore::CoordinatedPlatformLayer::paint):\n(WebCore::CoordinatedPlatformLayer::record):\n(WebCore::CoordinatedPlatformLayer::replay):\n\nCanonical link: https://commits.webkit.org/316869@main",
      "email": "cgarcia@igalia.com",
      "hash": "a1e52732560f8b5d38c2870910cf4e4733d4fd39",
      "subject": "[CoordinatedGraphics][Skia] Remove the code to render layers in the main thread"
    },
    "316870@main": {
      "author": "Nikolas Zimmermann",
      "avatar": "https://www.gravatar.com/avatar/83cbd636495835720e369cd589e3ca5e?d=identicon\u0026s=64",
      "cl": "316870@main",
      "clUrl": "https://commits.webkit.org/316870@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319040\n\nUnreviewed build fix.\n\nMockOpenXRRuntime.cpp unconditionally included openxr_loader_negotiation.h,\nwhich only exists in OpenXR 1.1.x. Older SDKs on the RPi4 bots expose the\nsame loader negotiation structs via loader_interfaces.h. Select the header\nwith __has_include so both SDK versions build.\n\n* Tools/TestWebKitAPI/openxr-mock/MockOpenXRRuntime.cpp:\n\nCanonical link: https://commits.webkit.org/316870@main",
      "email": "nzimmermann@igalia.com",
      "hash": "ec2dcd109207d32c004b4c58a9b6e53f75b3ab13",
      "subject": "REGRESSION(316809@main): RPi4 build broken with older OpenXR SDK"
    },
    "316871@main": {
      "author": "Nikolas Zimmermann",
      "avatar": "https://www.gravatar.com/avatar/83cbd636495835720e369cd589e3ca5e?d=identicon\u0026s=64",
      "cl": "316871@main",
      "clUrl": "https://commits.webkit.org/316871@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319041\n\nUnreviewed gardening.\n\nThe test guards pool.wait() with a hard-coded Timeout(1) while serializing 26\nforked tasks through a single mutually-exclusive group. On a loaded\nGTK-Linux-64-bit-Release bot that legitimately takes longer than one second,\nso the guard fires a false-positive Timeout.Exception.\n\nRaise the guard to 5s, which still trips quickly on a genuine deadlock\nwhile removing the false positive...\n\n* Tools/Scripts/libraries/webkitcorepy/webkitcorepy/tests/task_pool_unittest.py:\n\nCanonical link: https://commits.webkit.org/316871@main",
      "email": "nzimmermann@igalia.com",
      "hash": "e399c12ae4f310dc1e65945e2b271067b826df12",
      "subject": "[webkitcorepy] TaskPoolUnittest.test_mutually_exclusive_group_hang is flaky on loaded bots"
    },
    "316872@main": {
      "author": "Youenn Fablet",
      "avatar": "https://www.gravatar.com/avatar/0a9886e582a7aee1eb908eb59af36da4?d=identicon\u0026s=64",
      "cl": "316872@main",
      "clUrl": "https://commits.webkit.org/316872@main",
      "description": "rdar://181802298\nhttps://bugs.webkit.org/show_bug.cgi?id=318951\n\nReviewed by Jean-Yves Avenard.\n\nWe align with the webrtc spec and verify whether the selector is used in more than one sender/receiver.\nIf so, we reject the promise.\n\n* LayoutTests/imported/w3c/web-platform-tests/webrtc/RTCPeerConnection-getStats.https_rest-expected.txt:\n* Source/WebCore/Modules/mediastream/RTCPeerConnection.cpp:\n(WebCore::RTCPeerConnection::getStats):\n\nCanonical link: https://commits.webkit.org/316872@main",
      "email": "youenn@apple.com",
      "hash": "37c0ab0fdfdf2d070d4b5a93faf66b686f93767d",
      "subject": "RTCPeerConnection.getStats should verify that the selector is not used in multiple senders/receivers"
    },
    "316873@main": {
      "author": "Youenn Fablet",
      "avatar": "https://www.gravatar.com/avatar/0a9886e582a7aee1eb908eb59af36da4?d=identicon\u0026s=64",
      "cl": "316873@main",
      "clUrl": "https://commits.webkit.org/316873@main",
      "description": "rdar://181801298\nhttps://bugs.webkit.org/show_bug.cgi?id=318948\n\nReviewed by Jean-Yves Avenard.\n\nWe validate that TURN/STUN URLs have an opaque path and that TURN query strings need to start with \"?transport\".\n\n* LayoutTests/imported/w3c/web-platform-tests/webrtc/RTCConfiguration-iceServers_rest-expected.txt:\n* Source/WebCore/Modules/mediastream/RTCPeerConnection.cpp:\n(WebCore::RTCPeerConnection::iceServersFromConfiguration):\n\nCanonical link: https://commits.webkit.org/316873@main",
      "email": "youenn@apple.com",
      "hash": "c31c11bbbdf261ded04d15deaad5d2cb401a6774",
      "subject": "Improve TURN server URL checks"
    },
    "316874@main": {
      "author": "Youenn Fablet",
      "avatar": "https://www.gravatar.com/avatar/0a9886e582a7aee1eb908eb59af36da4?d=identicon\u0026s=64",
      "cl": "316874@main",
      "clUrl": "https://commits.webkit.org/316874@main",
      "description": "rdar://181790407\nhttps://bugs.webkit.org/show_bug.cgi?id=318941\n\nReviewed by Sihui Liu.\n\nDOMAsyncIterator stored the pending completion callback in a single m_callback member and re-used the slot for both callNext and callReturn.\nWhen callReturn was invoked (e.g. because the ReadableStream wrapping the iterator was cancelled) while a callNext promise was still pending,\nthe second call overwrites m_callback which could lead to the wrong callback being called.\n\nWe move the callback ownership into the lambda captured by DOMPromise::whenPromiseIsSettled, so each callNext/callReturn owns its own callback for the lifetime of its promise.\nThe m_callback member and the handleCallbackWithPromise helper are no longer needed.\n\nWe preserve the old behavior of invoking the caller-supplied callback with isOK=false when JSBoundFunction::create fails to register,\nby introducing an opt-in ShouldCallCallbackOnRegistrationFailure parameter to DOMPromise::whenPromiseIsSettled.\nThis is off by default and used in DOMAsyncIterator call sites.\n\nWe guard the ReadableStream::from pull continuation with an m_isCancelled flag set in doCancel.\nThat way, a callNext result that arrives after cancel does not touch the controller.\n\nTest: streams/readable-stream-from-cancel-pending-next-crash.html\n\n* LayoutTests/streams/readable-stream-from-cancel-pending-next-crash-expected.txt: Added.\n* LayoutTests/streams/readable-stream-from-cancel-pending-next-crash.html: Added.\n* Source/WebCore/Modules/streams/ReadableStream.cpp:\n* Source/WebCore/bindings/js/DOMAsyncIterator.cpp:\n(WebCore::DOMAsyncIterator::callNext):\n(WebCore::DOMAsyncIterator::callReturn):\n(WebCore::DOMAsyncIterator::handleCallbackWithPromise): Deleted.\n* Source/WebCore/bindings/js/DOMAsyncIterator.h:\n* Source/WebCore/bindings/js/JSDOMPromise.cpp:\n(WebCore::DOMPromise::whenPromiseIsSettled):\n* Source/WebCore/bindings/js/JSDOMPromise.h:\n\nCanonical link: https://commits.webkit.org/316874@main",
      "email": "youenn@apple.com",
      "hash": "6184395225722949a9a83b80a7b78d9aaf3fa829",
      "subject": "DOMAsyncIterator should not store the callNext and callReturn callback as the same member"
    },
    "316875@main": {
      "author": "Adrian Taylor",
      "avatar": "https://www.gravatar.com/avatar/d2acb8ad2e2670ff74ae0d65fb27014c?d=identicon\u0026s=64",
      "cl": "316875@main",
      "clUrl": "https://commits.webkit.org/316875@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319030\nrdar://181882828\n\nReviewed by Alex Christensen.\n\nAdd missing IPC tester sources to the CMake build.\nThis fixes a build error which only occurs with cmake:\n\"error: \"This source includes WebKit-Swift.h; add it to\nWebKit_SWIFT_INTEROP_SOURCES in Source/WebKit/CMakeLists.txt.\"\n\ncaused by C++ sources assuming that this Swift support was present.\n\nCanonical link: https://commits.webkit.org/316875@main",
      "email": "adrian_taylor@apple.com",
      "hash": "45145d8a48303932fb85ffae0b357c443fce0d82",
      "subject": "Add IPC tester to Swift interop sources"
    },
    "316876@main": {
      "author": "Jean-Yves Avenard",
      "avatar": "https://www.gravatar.com/avatar/509313899deeb9262fad8f5e04093f5b?d=identicon\u0026s=64",
      "cl": "316876@main",
      "clUrl": "https://commits.webkit.org/316876@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=318964\nrdar://181092025\n\nReviewed by Jer Noble.\n\nOnly the synchronous hostingContext() API was implemented by both MediaPlayerPrivateMediaSourceAVFObjC\nand MediaPlayerPrivateWebM, the asynchronous requestHostingContext didn't and\nwas always returning a null contextID which caused the entering PiP path to exit early.\n\nManually verified.\n\nAn automated regression test isn't achievable at this point due to the testing\ninfrastucture limitation: iPad simulator only and only having the Mock PresentationManager.\n\n* Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.h:\n* Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.mm:\n(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::requestHostingContext):\n* Source/WebCore/platform/graphics/cocoa/MediaPlayerPrivateWebM.h:\n* Source/WebCore/platform/graphics/cocoa/MediaPlayerPrivateWebM.mm:\n(WebCore::MediaPlayerPrivateWebM::requestHostingContext):\n\nCanonical link: https://commits.webkit.org/316876@main",
      "email": "jya@apple.com",
      "hash": "56441d3640475ce4cceb7f56e6a283f71dc2fef2",
      "subject": "[Netflix.com] Unable to PiP video after navigating to another episode"
    },
    "316877@main": {
      "author": "Nikolas Zimmermann",
      "avatar": "https://www.gravatar.com/avatar/83cbd636495835720e369cd589e3ca5e?d=identicon\u0026s=64",
      "cl": "316877@main",
      "clUrl": "https://commits.webkit.org/316877@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319040\n\nReviewed by Carlos Garcia Campos.\n\nThe __has_include header selection in 316870@main was not enough. The\nloader negotiation structs (XrNegotiateLoaderInfo, XrNegotiateRuntimeRequest)\nare only exposed by an installed public header, openxr_loader_negotiation.h,\nsince OpenXR 1.1. Older SDKs keep them in a loader-internal header that is not\nshipped in the runtime package, so neither include branch resolves and the\nmock runtime cannot build there at all.\n\nRather than guard the source, stop building the mock runtime on old SDKs.\nExpose the detected OpenXR version as a cache variable so it reaches the\nTestWebKitAPI subdirectory, then build MockOpenXRRuntime and the\nTestOpenXRInstanceLifecycle test that dlopens it only when the SDK is 1.1 or\nnewer. TestWebKitWebXR stays unconditional, so older bots keep that coverage.\nWith the mock now limited to 1.1+, revert MockOpenXRRuntime.cpp back to a\nplain include of openxr_loader_negotiation.h.\n\n* Source/cmake/OptionsGTK.cmake:\n* Source/cmake/OptionsWPE.cmake:\n* Tools/TestWebKitAPI/glib/CMakeLists.txt:\n* Tools/TestWebKitAPI/openxr-mock/MockOpenXRRuntime.cpp:\n\nCanonical link: https://commits.webkit.org/316877@main",
      "email": "nzimmermann@igalia.com",
      "hash": "815d93bfb2d07914b65f2051b89a58819017b6c0",
      "subject": "REGRESSION(316809@main): RPi4 build broken with older OpenXR SDK"
    },
    "316878@main": {
      "author": "Antti Koivisto",
      "avatar": "https://www.gravatar.com/avatar/07965eed55d4b41ea2b394599b17f7cd?d=identicon\u0026s=64",
      "cl": "316878@main",
      "clUrl": "https://commits.webkit.org/316878@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=318963\nrdar://181815712\n\nReviewed by Tim Nguyen.\n\nWhen if(style(--foo):bar) reads an attr() tainted property the taint must propagate\nto the substitution value per CSS Values 5 §8.7.2 (\"attr()-tainted as a whole if any\nattr()-tainted values were involved in creating that substitution value\")\n\n* LayoutTests/imported/w3c/web-platform-tests/css/css-values/attr-security-if-expected.txt:\n* Source/WebCore/style/IfConditionEvaluator.cpp:\n(WebCore::Style::IfConditionEvaluator::evaluateFeature const):\n\nSet m_referencedAttrTaintedValue during evaluation if needed.\n\n* Source/WebCore/style/IfConditionEvaluator.h:\n(WebCore::Style::IfConditionEvaluator::referencedAttrTaintedValue const):\n* Source/WebCore/style/StyleSubstitutionResolver.cpp:\n(WebCore::Style::SubstitutionResolver::substituteIfFunction):\n\nPropagate the taint.\n\nCanonical link: https://commits.webkit.org/316878@main",
      "email": "antti@apple.com",
      "hash": "733936bdb21a71e1cfc778ad75ba009b735cbef3",
      "subject": "[css-values-5] Propagate attr()-taint through if() conditions"
    },
    "316879@main": {
      "author": "Nikolas Zimmermann",
      "avatar": "https://www.gravatar.com/avatar/83cbd636495835720e369cd589e3ca5e?d=identicon\u0026s=64",
      "cl": "316879@main",
      "clUrl": "https://commits.webkit.org/316879@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319080\n\nUnreviewed gardening.\n\n* LayoutTests/platform/glib/TestExpectations:\n* LayoutTests/platform/gtk/TestExpectations:\n* LayoutTests/platform/wpe/TestExpectations:\n\nCanonical link: https://commits.webkit.org/316879@main",
      "email": "nzimmermann@igalia.com",
      "hash": "8aca6bf93a00824762e9973283b8efe90c2ebd32",
      "subject": "[GTK][WPE] Gardening of tests - 2026-07-10"
    },
    "316880@main": {
      "author": "Nikolas Zimmermann",
      "avatar": "https://www.gravatar.com/avatar/83cbd636495835720e369cd589e3ca5e?d=identicon\u0026s=64",
      "cl": "316880@main",
      "clUrl": "https://commits.webkit.org/316880@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=318850\n\nReviewed by Rob Buis.\n\nLocalFrameViewLayoutContext::flushPendingSVGTransformAttributeUpdatesIfNeeded\nruns once per rendering update and processes every SVG renderer whose transform\nchanged since the last update, whether from a scripted change or an\nanimation. Its repaint pass was the dominant per-frame cost at\nMotionMark/Suits. This rework makes that pass cheaper and issues\nfewer, smaller invalidations, closing the gap to the legacy SVG engine.\n\nRepaint rects are now mapped with RepaintOutlineBounds::No. For SVG the outline\nbounds equal the visual overflow, so requesting them mapped a redundant second\nrect up the container chain every frame, work the legacy engine already avoided.\n\nRather than walking each moved renderer to its repaint container, the flush now\ncomputes each non-layered child's rect in its parent's coordinate space by\napplying the SVG transform and the location offset, unions the children per\nparent, and maps each parent's single union to the repaint container once. This\nreplaces N ancestor-chain walks with N cheap transforms plus one walk per parent.\nA child whose parent also moved this frame, a child whose parent clips overflow,\nand any renderer that is not a plain RenderSVGModelObject fall back to the exact\nper-shape mapping.\n\nThe moved rects are then accumulated into one union per repaint container and\nflushed with a single repaintUsingContainer() per container instead of one per\nshape, collapsing N backing-store invalidations into one while keeping the\nrepainted region minimal.\n\nBecause this path never lays out, it also has to refresh the caches that layout\nwould. updateTransformAndRepaintForSVGAfterAttributeChange, which applies the\nqueued change to a single renderer, now also invalidates the bounding boxes and\ncached visual overflow rect of that renderer's ancestors up to the SVG root, so\ngetBBox() and paint or hit-test culling never read a stale rect before the next\nlayout. It skips that walk when the transform did not actually change or when a\nrelayout is already scheduled.\n\nFinally, a marker or clip-path change can resize the element that references it.\nWhen that referencing element has no layer it gets no post-layout position\nupdate, so it now repaints its old bounds before invalidating its cached visual\noverflow, letting a shrunk element erase the area it used to cover. Paint\nservers, whose bounds do not change, are excluded. RenderSVGImage gains the same\neager post-layout visual-overflow refresh RenderSVGShape already had, so the old\nbounds are available when that repaint runs.\n\nA test, svg/repaint/nested-transform-change-static-parent-repaint.html, covers a\nshape whose ancestor transform changes in the same flush: the shape's previous\nposition must still be repainted. The two existing\n*-repainting-after-modifying-transform-repaint-rects tests now record one union\nrect instead of several separate rects, with identical rendering, and their LBSE\nbaselines are updated here.\n\n* LayoutTests/platform/mac-tahoe-wk2-lbse-text/svg/repaint/image-repainting-after-modifying-transform-repaint-rects-expected.txt:\n* LayoutTests/platform/mac-tahoe-wk2-lbse-text/svg/repaint/nested-transform-change-static-parent-repaint-expected.txt: Added.\n* LayoutTests/platform/mac-tahoe-wk2-lbse-text/svg/repaint/shape-repainting-after-modifying-transform-repaint-rects-expected.txt:\n* LayoutTests/svg/repaint/nested-transform-change-static-parent-repaint-expected.txt: Added.\n* LayoutTests/svg/repaint/nested-transform-change-static-parent-repaint.html: Added.\n* Source/WebCore/page/LocalFrameViewLayoutContext.cpp:\n(WebCore::LocalFrameViewLayoutContext::flushPendingSVGTransformAttributeUpdatesIfNeeded):\n* Source/WebCore/rendering/ReferencedSVGResources.cpp:\n(WebCore::CSSSVGResourceElementClient::resourceChanged):\n* Source/WebCore/rendering/RenderLayerModelObject.cpp:\n(WebCore::RenderLayerModelObject::updateTransformAndRepaintForSVGAfterAttributeChange):\n* Source/WebCore/rendering/svg/RenderSVGImage.cpp:\n(WebCore::RenderSVGImage::layout):\n\nCanonical link: https://commits.webkit.org/316880@main",
      "email": "nzimmermann@igalia.com",
      "hash": "6bd9478e8fd2f401e6539f1263e9e32c1f9f2880",
      "subject": "[LBSE] Coalesce the SVG transform flush into one minimal repaint per container"
    },
    "316881@main": {
      "author": "Nikolas Zimmermann",
      "avatar": "https://www.gravatar.com/avatar/83cbd636495835720e369cd589e3ca5e?d=identicon\u0026s=64",
      "cl": "316881@main",
      "clUrl": "https://commits.webkit.org/316881@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=318962\n\nReviewed by Carlos Garcia Campos.\n\nThe Skia compositor draws every layer with the default blend mode\n(SkBlendMode::kSrcOver). With that mode Skia always keeps GL_BLEND\nturned on, even for fully opaque layers that do not need blending.\nSkia can turn blending off, but only on ARM GPUs and only when the\ninput is opaque -- neither is true here, so we always pay for blending\nwe do not use.\n\nTextureMapper does better: it turns GL_BLEND on only when a layer is\nactually non-opaque (opacity \u003c 1 or a non-opaque texture). Do the same\non the Skia side: When a layer is opaque, drawn at full opacity, and\nuses the default blend mode, draw it with SkBlendMode::kSrc instead.\nSkia then turns GL_BLEND off, which lowers GPU bandwidth on tiled GPUs\nwith no changes to Skia itself. Anti-aliased edges still look correct\nbecause Skia handles them separately.\n\nFor that to hold, the SkImages/surfaces Skia composites must also carry\nthe correct alpha type: an opaque source must be kOpaque_SkAlphaType,\nnot kPremul_SkAlphaType, otherwise Skia does not know it can drop the\nblend. Several compositor paths hardcoded kPremul even though the\nopaqueness was already known -- the tile buffers know it through their\nFlags, and the RGB/ExternalOES layer buffers know it through the\nShouldBlend TextureMapper flag their producers set from the real source\nalpha. Fix those cases as well.\n\n* Source/WebCore/platform/graphics/skia/SkiaBackingStore.cpp:\n(WebCore::SkiaBackingStore::Tile::image const):\n* Source/WebCore/platform/graphics/skia/SkiaCompositingLayer.cpp:\n(WebCore::SkiaCompositingLayer::paintContents):\n* Source/WebCore/platform/graphics/skia/SkiaCompositingLayer.h:\n* Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedPlatformLayer.cpp:\n(WebCore::CoordinatedPlatformLayer::flushCompositingStateOnSkiaTarget):\n* Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedPlatformLayerBufferExternalOES.cpp:\n(WebCore::CoordinatedPlatformLayerBufferExternalOES::skiaImage):\n* Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedPlatformLayerBufferRGB.cpp:\n(WebCore::CoordinatedPlatformLayerBufferRGB::skiaImage):\n* Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedTileBuffer.cpp:\n(WebCore::CoordinatedUnacceleratedTileBuffer::canvas):\n(WebCore::CoordinatedAcceleratedTileBuffer::create):\n\nCanonical link: https://commits.webkit.org/316881@main",
      "email": "nzimmermann@igalia.com",
      "hash": "cbeeab739cd01915a42b80fc8c37891407f440fc",
      "subject": "[WPE][Skia] Compositor keeps GL_BLEND enabled for opaque layers"
    },
    "316882@main": {
      "author": "Claudio Saavedra",
      "avatar": "https://www.gravatar.com/avatar/376a6edb56b8e52de407ea171c869bcf?d=identicon\u0026s=64",
      "cl": "316882@main",
      "clUrl": "https://commits.webkit.org/316882@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319084\n\nUnreviewed build fix.\n\n316816@main added eccentricAngle() using std::atan2(). On Windows,\nMathExtras.h defines a function-like macro `atan2(x, y)` that expands\nto wtf_atan2(). Call atan2() unqualified, matching every other caller in WebCore.\n\n* Source/WebCore/platform/graphics/GeometryUtilities.cpp:\n(WebCore::eccentricAngle):\n\nCanonical link: https://commits.webkit.org/316882@main",
      "email": "csaavedra@igalia.com",
      "hash": "9ba6f9aa138aa78abd78455291b6b778e6054659",
      "subject": "REGRESSION(316816@main): [Win] Build broken in GeometryUtilities due to std::atan2"
    },
    "316883@main": {
      "author": "Carlos Alberto Lopez Perez",
      "avatar": "https://www.gravatar.com/avatar/05326c1dbe06f486e884975e73f25179?d=identicon\u0026s=64",
      "cl": "316883@main",
      "clUrl": "https://commits.webkit.org/316883@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319082\n\nReviewed by Nikolas Zimmermann.\n\nIt seems the URIs https://git.yoctoproject.org/git/$repo are not longer valid,\nand the new valid ones have the format of https://git.yoctoproject.org/$repo\n\n* Tools/yocto/riscv/manifest.xml:\n* Tools/yocto/rpi/manifest.xml:\n\nCanonical link: https://commits.webkit.org/316883@main",
      "email": "clopez@igalia.com",
      "hash": "a3bb2650a027ac3acea7b44dbd66d96434c83090",
      "subject": "[WPE][cross-toolchain-helper] fatal: repository 'https://git.yoctoproject.org/git/poky/' not found"
    },
    "316884@main": {
      "author": "Claudio Saavedra",
      "avatar": "https://www.gravatar.com/avatar/376a6edb56b8e52de407ea171c869bcf?d=identicon\u0026s=64",
      "cl": "316884@main",
      "clUrl": "https://commits.webkit.org/316884@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319085\n\nUnreviewed build fix.\n\n316781@main moved the public ANGLE headers (EGL, GLES, KHR) from\nANGLE/Headers to ANGLE/Headers/ANGLE, but the ANGLE::EGL search path is\nstill bare ANGLE/Headers, so \u003cEGL/egl.h\u003e fails to resolve on a clean\nbuild. Restore their copy destination to ANGLE_FRAMEWORK_HEADERS_DIR.\n\n* Source/ThirdParty/ANGLE/include/CMakeLists.txt:\n\nCanonical link: https://commits.webkit.org/316884@main",
      "email": "csaavedra@igalia.com",
      "hash": "10bec06e7deabab90042b511aebabac86a0f9de4",
      "subject": "[Win] Speculative build fix after 316781@main"
    },
    "316885@main": {
      "author": "Anne van Kesteren",
      "avatar": "https://www.gravatar.com/avatar/09bb44ac3625a121017cd98d0a7dc52c?d=identicon\u0026s=64",
      "cl": "316885@main",
      "clUrl": "https://commits.webkit.org/316885@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=295092\nrdar://155028047\n\nReviewed by Tim Nguyen.\n\nThey are implemented behind the HeadingOffsetEnabled feature flag\n(preview). The complexity of the feature lies in correctly invalidating\nthe :heading pseudo-class.\n\nTests: imported/w3c/web-platform-tests/css/selectors/invalidation/heading-pseudo-class-in-has-with-headingoffset.html\n       imported/w3c/web-platform-tests/css/selectors/invalidation/heading-pseudo-class-in-has-with-slot-reassignment.html\n       imported/w3c/web-platform-tests/html/semantics/sections/headingoffset-and-headingreset.html\n       imported/w3c/web-platform-tests/html/semantics/sections/headingoffset-mutations.html\n\nThis includes a fix for a recent (and hopefully last) change for this\nfeature:\n\n   https://github.com/whatwg/html/pull/12562\n   https://github.com/web-platform-tests/wpt/pull/60525\n\nCanonical link: https://commits.webkit.org/316885@main",
      "email": "annevk@annevk.nl",
      "hash": "bb6d1b4a1f91239eed5808209db60ab7cd4081d9",
      "subject": "Implement headingoffset \u0026 headingreset attributes"
    },
    "316886@main": {
      "author": "Aakash Jain",
      "avatar": "https://www.gravatar.com/avatar/e82e0cafeeac3a35b7e74206ebe4c536?d=identicon\u0026s=64",
      "cl": "316886@main",
      "clUrl": "https://commits.webkit.org/316886@main",
      "description": "rdar://181837155\nhttps://bugs.webkit.org/show_bug.cgi?id=318981\n\nReviewed by Ryan Haddad.\n\nCurrently it mentions a generic message: \"An uxpected error occured\".\nWe should try to highlight the specific exception message whenever possible.\n\n* Tools/CISupport/ews-app/ews/common/github.py:\n(GitHubEWS.github_status_for_buildbot_queue):\n(GitHubEWS._most_recent_exception_message):\n\nCanonical link: https://commits.webkit.org/316886@main",
      "email": "aakash_jain@apple.com",
      "hash": "d248e14cde5a5f7395132dd2aa6b643f5411aca0",
      "subject": "Improve ews status-bubble tooltip message in case of exception"
    },
    "316887@main": {
      "author": "test",
      "avatar": "https://www.gravatar.com/avatar/c8d86ad5ed1add319e802f7f659df166?d=identicon\u0026s=64",
      "cl": "316887@main",
      "clUrl": "https://commits.webkit.org/316887@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319090\n\nReviewed by Claudio Saavedra.\n\nThe variable was renamed to WPE_BUFFER_FORMAT in the WPEBufferDMABufFormats -\u003e WPEBufferFormats\nrename (bug #303474), but the documentation still mentioned the old name.\n\n* Source/WebKit/glib/environment-variables.md.in:\n\nCanonical link: https://commits.webkit.org/316887@main",
      "email": "test@test",
      "hash": "f6cdd7b3fb69dc7221f8cf2627024d24625979e8",
      "subject": "[WPE] Update environment variables documentation after WPE_DMABUF_BUFFER_FORMAT rename"
    },
    "316888@main": {
      "author": "Carlos Garcia Campos",
      "avatar": "https://www.gravatar.com/avatar/8393f7e76d83c8a147cb852d8fb1a959?d=identicon\u0026s=64",
      "cl": "316888@main",
      "clUrl": "https://commits.webkit.org/316888@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319088\n\nReviewed by Nikolas Zimmermann.\n\nWe save a heap allocation for every tile buffer when using DDL.\n\n* Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedTileBuffer.cpp:\n(WebCore::CoordinatedAcceleratedTileBuffer::canvas):\n* Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedTileBuffer.h:\n\nCanonical link: https://commits.webkit.org/316888@main",
      "email": "cgarcia@igalia.com",
      "hash": "2377cad7def2fcc31b330c4950e1c98efae80549",
      "subject": "[GTK][WPE] Skia compositor: use std::optional for GrDeferredDisplayListRecorder in CoordinatedTileBuffer"
    },
    "316889@main": {
      "author": "Youenn Fablet",
      "avatar": "https://www.gravatar.com/avatar/0a9886e582a7aee1eb908eb59af36da4?d=identicon\u0026s=64",
      "cl": "316889@main",
      "clUrl": "https://commits.webkit.org/316889@main",
      "description": "rdar://181715555\nhttps://bugs.webkit.org/show_bug.cgi?id=319081\n\nReviewed by Jean-Yves Avenard.\n\nAs per documentation, kCMSampleAttachmentKey_NotSync can be present and its value may be 0.\nIn that case, we should treat the frame as a key frame.\nWe make the code more robust by covering this case.\nWe also apply the same rule for WebCore helper routines.\n\n* Source/ThirdParty/libwebrtc/Source/webrtc/webkit_sdk/objc/components/video_codec/RTCVideoEncoderH264.mm:\n(-[RTCVideoEncoderH264 frameWasEncoded:flags:sampleBuffer:codecSpecificInfo:width:height:renderTimeMs:timestamp:duration:rotation:isKeyFrameRequired:]):\n* Source/ThirdParty/libwebrtc/Source/webrtc/webkit_sdk/objc/components/video_codec/RTCVideoEncoderH265.mm:\n(-[RTCVideoEncoderH265 frameWasEncoded:flags:sampleBuffer:width:height:renderTimeMs:timestamp:rotation:]):\n* Source/WebCore/platform/graphics/avfoundation/objc/MediaSampleAVFObjC.mm:\n(WebCore::isCMSampleBufferAttachmentRandomAccess):\n* Source/WebCore/platform/graphics/cocoa/CMUtilities.mm:\n(WebCore::isCMSampleBufferRandomAccess):\n\nCanonical link: https://commits.webkit.org/316889@main",
      "email": "youenn@apple.com",
      "hash": "8d1730723e6d7186b274f471c7e5676647d4bd88",
      "subject": "VTB encoders should check for kCMSampleAttachmentKey_NotSync value if present"
    },
    "316890@main": {
      "author": "Youenn Fablet",
      "avatar": "https://www.gravatar.com/avatar/0a9886e582a7aee1eb908eb59af36da4?d=identicon\u0026s=64",
      "cl": "316890@main",
      "clUrl": "https://commits.webkit.org/316890@main",
      "description": "rdar://181852376\nhttps://bugs.webkit.org/show_bug.cgi?id=319086\n\nReviewed by Eric Carlson.\n\nI can only reproduce the debug failure when running concurrently 20 WKTR on this test.\nIncreasing the time to get the mute event fixes the flakiness, which is what this PR is doing.\n\n* LayoutTests/fast/mediastream/microphone-interruption-and-audio-session.html:\n\nCanonical link: https://commits.webkit.org/316890@main",
      "email": "youenn@apple.com",
      "hash": "dc9c99a89e44f7add3eb502e9fe807c3aacd97f1",
      "subject": "fast/mediastream/microphone-interruption-and-audio-session.html is a constant TEXT failure"
    },
    "316891@main": {
      "author": "Jean Haberer",
      "avatar": "https://www.gravatar.com/avatar/8ac33d529228e323edb2a2df3a3bac2f?d=identicon\u0026s=64",
      "cl": "316891@main",
      "clUrl": "https://commits.webkit.org/316891@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=318860\nrdar://180966321\n\nReviewed by Etienne Segonzac.\n\nTrigger the state exit of the old immersive element and queue the immersivechange notification when the document is about to\nenter the back/forward cache, mirroring how pointer lock is torn down at the same call site.\nSince the Immersive environment cannot survive navigation, it is safe to clear the immersive document state at this point,\nto get back from a clean slate if the user navigates back to this page.\nSending the event to the page ensures that it updates its UI and doesn't stay in a stale state thinking that the\nimmersive environment is still up.\n\n* Source/WebCore/dom/Document.cpp:\n(WebCore::Document::setBackForwardCacheState):\n* Source/WebCore/dom/DocumentImmersive.cpp:\n(WebCore::DocumentImmersive::clearForBackForwardCache):\n* Source/WebCore/dom/DocumentImmersive.h:\n\nCanonical link: https://commits.webkit.org/316891@main",
      "email": "jean.haberer@apple.com",
      "hash": "2c84f4f3c4eafb71100f721c4e7e0318f0250f99",
      "subject": "Navigating back to page with previously active web env leaves UI stuck showing active state"
    },
    "316892@main": {
      "author": "Alan Baradlay",
      "avatar": "https://www.gravatar.com/avatar/788d66417db806c567552cfa1ae89f77?d=identicon\u0026s=64",
      "cl": "316892@main",
      "clUrl": "https://commits.webkit.org/316892@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=318457\n\nReviewed by Antti Koivisto.\n\nalignFlexItems stretched each align-self:stretch item to its line's cross size\nand then positioned it in the same loop, fusing the item's cross sizing with its cross-axis alignment.\n\nPull the stretch out into computeCrossSizeForFlexItems. It stretches every align-self:stretch\nitem that has non-auto cross margins -- the exact gate alignFlexItems used, since\nupdateAutoMarginsInCrossAxis returns true only when a cross margin is auto, the\nsame set hasAutoMarginsInCrossAxis checks. The pass runs right before\nalignFlexItems, so each item is still stretched before it is positioned.\n\nNo change in behavior.\n\n* Source/WebCore/rendering/RenderFlexibleBox.h:\n* Source/WebCore/rendering/RenderFlexibleBox.cpp:\n(WebCore::RenderFlexibleBox::repositionLogicalHeightDependentFlexItems):\n(WebCore::RenderFlexibleBox::computeCrossSizeForFlexItems):\n(WebCore::RenderFlexibleBox::alignFlexItems):\n\nCanonical link: https://commits.webkit.org/316892@main",
      "email": "zalan@apple.com",
      "hash": "7c91251713104a08c0fd1a18be4cb0d2c33d3179",
      "subject": "[cleanup] Separate flex item stretch from cross-axis alignment"
    },
    "316893@main": {
      "author": "Claudio Saavedra",
      "avatar": "https://www.gravatar.com/avatar/376a6edb56b8e52de407ea171c869bcf?d=identicon\u0026s=64",
      "cl": "316893@main",
      "clUrl": "https://commits.webkit.org/316893@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319095\n\nUnreviewed build fix.\n\n* Source/WebKit/UIProcess/glib/SystemSettingsManagerProxy.cpp:\n\nCanonical link: https://commits.webkit.org/316893@main",
      "email": "csaavedra@igalia.com",
      "hash": "5495e3449a50f415d581d6ece44c6c5e29ba603d",
      "subject": "[WPE] REGRESSION(316709@main): Build broken with WPE_PLATFORM off"
    },
    "316894@main": {
      "author": "Alan Baradlay",
      "avatar": "https://www.gravatar.com/avatar/788d66417db806c567552cfa1ae89f77?d=identicon\u0026s=64",
      "cl": "316894@main",
      "clUrl": "https://commits.webkit.org/316894@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=318461\n\nReviewed by Antti Koivisto.\n\nalignFlexLines and alignFlexItems do the same work as FlexLayout::layout's\nhandleCrossAxisAlignmentForFlexLines and handleCrossAxisAlignmentForFlexItems:\npositioning the flex lines, and then the items within them, along the cross\naxis. Give them those names so the legacy phases line up with the\nFlexLayout::layout pipeline.\n\nNo change in behavior.\n\n* Source/WebCore/rendering/RenderFlexibleBox.h:\n* Source/WebCore/rendering/RenderFlexibleBox.cpp:\n(WebCore::RenderFlexibleBox::repositionLogicalHeightDependentFlexItems):\n(WebCore::RenderFlexibleBox::handleCrossAxisAlignmentForFlexLines):\n(WebCore::RenderFlexibleBox::handleCrossAxisAlignmentForFlexItems):\n\nCanonical link: https://commits.webkit.org/316894@main",
      "email": "zalan@apple.com",
      "hash": "7cc319d600e5ad910a4c85ac4b8a584cea05cabe",
      "subject": "[cleanup] Rename the flex cross-axis alignment phases to match FlexLayout::layout"
    },
    "316895@main": {
      "author": "Fady Farag",
      "avatar": "https://www.gravatar.com/avatar/0ac5127c69f90d0c57054173ae4c3108?d=identicon\u0026s=64",
      "cl": "316895@main",
      "clUrl": "https://commits.webkit.org/316895@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319010\nrdar://181856199\n\nReviewed by Yusuke Suzuki.\n\n* Source/WTF/wtf/Spectrum.h:\n(WTF::Spectrum::add):\n\nCanonical link: https://commits.webkit.org/316895@main",
      "email": "com.webkit.iidmsa@gmail.com",
      "hash": "94cdfebaf7f455ed76413c09bf3dda3f29813d50",
      "subject": "Simplify incrementing `WTF::HashMap` counts by dropping redundant `isNewEntry` check in `WTF`"
    },
    "316896@main": {
      "author": "Ian Grunert",
      "avatar": "https://www.gravatar.com/avatar/6a676cf1bcb9ff83c6cd867a0e3a0fa4?d=identicon\u0026s=64",
      "cl": "316896@main",
      "clUrl": "https://commits.webkit.org/316896@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319093\n\nUnreviewed build fix.\n\n* Source/ThirdParty/ANGLE/CMakeLists.txt:\n* Source/WebCore/platform/graphics/GeometryUtilities.cpp:\n\nCanonical link: https://commits.webkit.org/316896@main",
      "email": "ian.grunert@gmail.com",
      "hash": "4cf5872efddd94e2c40b36921299a194dc4fc84a",
      "subject": "[Win] Fix win build breakage"
    },
    "316898@main": {
      "author": "Yijia Huang",
      "avatar": "https://www.gravatar.com/avatar/5bc95a5f0a5fdfc107bbdec6979dae89?d=identicon\u0026s=64",
      "cl": "316898@main",
      "clUrl": "https://commits.webkit.org/316898@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=318990\nrdar://181842591\n\nReviewed by Yusuke Suzuki.\n\nBefore Temporal.\u003cType\u003e was accessed as a property for the first time,\nTemporal.Now.plainDateISO().constructor.name returned \"Object\" instead\nof \"PlainDate\". The 8 Temporal types used LazyProperty\u003cStructure\u003e, which\ncreates only the prototype; prototype.constructor was set inside each\nconstructor's finishCreation, which ran only when Temporal.\u003cType\u003e was\ntouched.\n\nSwitch to LazyClassStructure so setConstructor sets prototype.constructor\neagerly. Drop the now-redundant write from each constructor's finishCreation.\n\nTest: JSTests/stress/temporal-now-constructor-cold-init.js\nCanonical link: https://commits.webkit.org/316898@main",
      "email": "yijia_huang@apple.com",
      "hash": "75d9be0204db1a1c7c0cfd3ba63f70afaf53ef01",
      "subject": "[JSC][Temporal] Fix Temporal.\u003cType\u003e.prototype.constructor before first access"
    },
    "316899@main": {
      "author": "Alex Christensen",
      "avatar": "https://www.gravatar.com/avatar/b087c5dfcb1233e80cad9105fd5a1ac6?d=identicon\u0026s=64",
      "cl": "316899@main",
      "clUrl": "https://commits.webkit.org/316899@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319029\nrdar://180738945\n\nReviewed by Abrar Rahman Protyasha.\n\nThis is similar to 287896@main.\n\nWhen an iframe navigates from one site to another with site isolation enabled,\nthere is a time between when the UI process sends WebPage::LoadDidCommitInAnotherProcess\nand when the navigated-from web content process receives it and stops JS execution.\nDuring this time, JS can set window.location.hash to something, which sends\nWebPageProxy::DidSameDocumentNavigationForFrameViaJS to the UI process from the\nnavigated-from web content process.  Ever since 313796@main that triggers a\nMESSAGE_CHECK in the UI process because the UI process's notion of which site\nis being shown in the frame and the navigated-from web content process's site\nare not the same.  When this race condition is hit, we can safely ignore the\nmessage from the old web content process.\n\nThe race condition is so rare that attempts at making unit tests to hit it\nhave been unfruitful.  WebCore::Navigation::RateLimiter makes it so we can\nonly attempt 200 navigations per 10 second window, which is not enough to\nhit the MESSAGE_CHECK reasonably.\n\n* Source/WebKit/UIProcess/WebPageProxy.cpp:\n(WebKit::WebPageProxy::didSameDocumentNavigationForFrameViaJS):\n\nCanonical link: https://commits.webkit.org/316899@main",
      "email": "achristensen@apple.com",
      "hash": "607d216d17bb7419ef491c1d09f341c75f5f7c76",
      "subject": "Add another early return in WebPageProxy::didSameDocumentNavigationForFrameViaJS"
    },
    "316900@main": {
      "author": "Ian Grunert",
      "avatar": "https://www.gravatar.com/avatar/6a676cf1bcb9ff83c6cd867a0e3a0fa4?d=identicon\u0026s=64",
      "cl": "316900@main",
      "clUrl": "https://commits.webkit.org/316900@main",
      "description": "* LayoutTests/platform/win/TestExpectations:\n\nCanonical link: https://commits.webkit.org/316900@main",
      "email": "ian.grunert@gmail.com",
      "hash": "d9612b2ea3aa56620ed4b1eeb0b6146cc244acd8",
      "subject": "[Win] Unreviewed layout test gardening"
    },
    "316901@main": {
      "author": "Alex Christensen",
      "avatar": "https://www.gravatar.com/avatar/b087c5dfcb1233e80cad9105fd5a1ac6?d=identicon\u0026s=64",
      "cl": "316901@main",
      "clUrl": "https://commits.webkit.org/316901@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=318994\nrdar://181844786\n\nReviewed by Tim Nguyen.\n\nIt was disabled in 311166@main because of a regression that was fixed in 311445@main.\nI also fixed an issue in 314970@main.  The time has come to re-enable the feature.\n\n* Source/WTF/Scripts/Preferences/UnifiedWebPreferences.yaml:\n\nCanonical link: https://commits.webkit.org/316901@main",
      "email": "achristensen@apple.com",
      "hash": "6ef4572c86458cf451e376ec4325d3579c150291",
      "subject": "Re-enable SpeculationRules prefetch"
    },
    "316902@main": {
      "author": "Justin Michaud",
      "avatar": "https://www.gravatar.com/avatar/36e0433ee725a08f7e1122a6bc584b57?d=identicon\u0026s=64",
      "cl": "316902@main",
      "clUrl": "https://commits.webkit.org/316902@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319014\n\nReviewed by Keith Miller.\n\nThis test is slow and did not reproduce on arm64 for me. I replaced\nit with a faster test that does.\n\nCanonical link: https://commits.webkit.org/316902@main",
      "email": "jmichaud@igalia.com",
      "hash": "dfe5014bb424b2f4aa74057017d691a588082d1f",
      "subject": "[GLIB][JSC] REGRESSION(316118@main): JSTests/stress/arguments-elimination-multiple-inline-call-frames.js causes JSCore tests to time out"
    },
    "316903@main": {
      "author": "Sergio Villar Senin",
      "avatar": "https://www.gravatar.com/avatar/2d83fda649cd4acc99663f5ce5aaedee?d=identicon\u0026s=64",
      "cl": "316903@main",
      "clUrl": "https://commits.webkit.org/316903@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319038\n\nReviewed by Alejandro G. Castro.\n\nIn df6bba12@main we added an extra check whenever xrCompatible flag was\nused to create a canvas. In those cases we should verify the\navailability of certain GL extensions before returning a compatible\ncanvas. That change was correct but it unveiled a previous bug that was\nhidden in the android specific implementation.\n\nGraphicsContextGLTextureMapperAndroid::enableRequiredWebXRExtensionsImpl()\npassed EGL extension names (EGL_KHR_image_base, EGL_KHR_surfaceless_context,\nEGL_ANDROID_get_native_client_buffer...) to enableExtensionsImpl(),\nwhich does only check GL extensions. That's why this method was always\nreturning false, and thus, rejected the creation of XR compatible GL\ncanvases.\n\nThe required EGL extensions are already validated in\nplatformInitializeExtensions(), except EGL_KHR_surfaceless_context\nwhich was also incorrectly included in the list of required extensions,\nthe code would use it if available but is not required (also it only\nmakes sense whenever DMABuf is used which is not the case for android).\n\n* Source/WebCore/platform/graphics/android/GraphicsContextGLTextureMapperAndroid.cpp:\n(WebCore::GraphicsContextGLTextureMapperAndroid::enableRequiredWebXRExtensionsImpl):\n\nCanonical link: https://commits.webkit.org/316903@main",
      "email": "svillar@igalia.com",
      "hash": "9b3aeb16b3e6a4fe7b979bca2397232ced32440f",
      "subject": "[WebXR] Nothing is rendered in Android"
    },
    "316904@main": {
      "author": "Philippe Normand",
      "avatar": "https://www.gravatar.com/avatar/eef27203750af3510263cc29af21a16e?d=identicon\u0026s=64",
      "cl": "316904@main",
      "clUrl": "https://commits.webkit.org/316904@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319101\n\nUnreviewed, flag the media-fragments tests as flaky.\n\n* LayoutTests/platform/gtk/TestExpectations:\n\nCanonical link: https://commits.webkit.org/316904@main",
      "email": "philn@igalia.com",
      "hash": "a35ef2ef7611110e5746af3c4b0c6b231a986b9a",
      "subject": "[GStreamer] Gardening"
    },
    "316905@main": {
      "author": "Alan Baradlay",
      "avatar": "https://www.gravatar.com/avatar/788d66417db806c567552cfa1ae89f77?d=identicon\u0026s=64",
      "cl": "316905@main",
      "clUrl": "https://commits.webkit.org/316905@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=318462\n\nReviewed by Antti Koivisto.\n\nadjustAlignmentForFlexItem read the renderer's flow-aware location, added the cross-axis delta, and wrote it back to the renderer.\nHave it move the flex item's own flowAwareLocation and apply that with setFlexItemGeometry, so the logical flex item\n-- not the renderer -- carries the cross-axis offset.\nIts callers (updateAutoMarginsInCrossAxis, performBaselineAlignment, the cross-axis line and item alignment, and flipForWrapReverse)\npass the FlexLayoutItem, and layoutColumnReverse now writes the item's location too so it stays in sync before alignment reads it.\nflipForRightToLeftColumn keeps writing the renderer: it runs last and nothing reads the item afterwards.\n\nNo change in behavior: item.flowAwareLocation equals the renderer's flow-aware location at every adjustAlignmentForFlexItem call\n(placeFlexItems and layoutColumnReverse seed it, each adjustment re-applies), so setFlexItemGeometry writes the same value the old code did.\n\nWhile here, annotate performFlexLayout and its phases with the css-flexbox-1 algorithm step numbers.\n\n* Source/WebCore/rendering/RenderFlexibleBox.h:\n* Source/WebCore/rendering/RenderFlexibleBox.cpp:\n(WebCore::RenderFlexibleBox::repositionLogicalHeightDependentFlexItems):\n(WebCore::RenderFlexibleBox::performFlexLayout):\n(WebCore::RenderFlexibleBox::layoutFlexLines):\n(WebCore::RenderFlexibleBox::updateAutoMarginsInCrossAxis):\n(WebCore::RenderFlexibleBox::layoutColumnReverse):\n(WebCore::RenderFlexibleBox::handleCrossAxisAlignmentForFlexLines):\n(WebCore::RenderFlexibleBox::adjustAlignmentForFlexItem):\n(WebCore::RenderFlexibleBox::handleCrossAxisAlignmentForFlexItems):\n(WebCore::RenderFlexibleBox::performBaselineAlignment):\n(WebCore::RenderFlexibleBox::flipForWrapReverse):\n\nCanonical link: https://commits.webkit.org/316905@main",
      "email": "zalan@apple.com",
      "hash": "28ba2f2789b0f8fed9fbd3b8d6963e3bb4e6c68e",
      "subject": "[cleanup] Route cross-axis alignment through the flex item instead of the renderer"
    },
    "316906@main": {
      "author": "Taher Ali",
      "avatar": "https://www.gravatar.com/avatar/e104800647d8c98b8c9dbe736b5e1751?d=identicon\u0026s=64",
      "cl": "316906@main",
      "clUrl": "https://commits.webkit.org/316906@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=318983\nrdar://181838675\n\nReviewed by Nikolas Zimmermann.\n\nSVGTextPositioningElement (the base for \u003ctext\u003e, \u003ctspan\u003e, \u003ctref\u003e, \u003caltGlyph\u003e)\noverrode hasPresentationalHintsForAttribute/collectPresentationalHintsForAttribute\nto opt x/y out of presentation-hint mapping. That restates a decision the\ncentral SVGElement::cssPropertyIdForSVGAttributeName mapping already makes: its\nsupportsXY() set is {foreignObject, image, rect, svg, symbol, use}, which excludes\nall text-positioning elements, so the base already returns false / emits nothing\nfor x/y on these elements.\n\nNo behavior change.\n\n* Source/WebCore/svg/SVGTextPositioningElement.cpp:\n(WebCore::SVGTextPositioningElement::collectPresentationalHintsForAttribute): Deleted.\n(WebCore::SVGTextPositioningElement::hasPresentationalHintsForAttribute const): Deleted.\n* Source/WebCore/svg/SVGTextPositioningElement.h:\n\nCanonical link: https://commits.webkit.org/316906@main",
      "email": "taher_ali@apple.com",
      "hash": "6a672bedbf6c7200860080238f76bdd2c48e2e87",
      "subject": "Remove redundant x/y presentation-hint overrides from SVGTextPositioningElement"
    },
    "316907@main": {
      "author": "Richard Robinson",
      "avatar": "https://www.gravatar.com/avatar/a0d2f862985ed0fd47887be66f5a3e4f?d=identicon\u0026s=64",
      "cl": "316907@main",
      "clUrl": "https://commits.webkit.org/316907@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319027\nrdar://181881668\n\nUnreviewed build fix.\n\n* Source/WebKit/UIProcess/API/Cocoa/WKContentWorld.swift:\n(WKContentWorld.world(with:)):\n\nCanonical link: https://commits.webkit.org/316907@main",
      "email": "richard_robinson2@apple.com",
      "hash": "6675202f43106524639134d4c80ad9bae4a7cd2c",
      "subject": "Speculatively fix the build for some macOS configurations after 316796@main"
    },
    "316908@main": {
      "author": "Ryosuke Niwa",
      "avatar": "https://www.gravatar.com/avatar/ed2c71248fe3ea15d9129f6e9a2a1e85?d=identicon\u0026s=64",
      "cl": "316908@main",
      "clUrl": "https://commits.webkit.org/316908@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319103\n\nUnreviewed. Update safer C++ expectations.\n\n* Source/JavaScriptCore/SaferCPPExpectations/NoDeleteCheckerExpectations: Added.\n* Source/JavaScriptCore/SaferCPPExpectations/NoUncountedMemberCheckerExpectations:\n* Source/JavaScriptCore/SaferCPPExpectations/UncheckedCallArgsCheckerExpectations:\n* Source/JavaScriptCore/SaferCPPExpectations/UncountedCallArgsCheckerExpectations:\n* Source/JavaScriptCore/SaferCPPExpectations/UncountedLambdaCapturesCheckerExpectations:\n* Source/JavaScriptCore/SaferCPPExpectations/UncountedLocalVarsCheckerExpectations:\n* Source/WTF/SaferCPPExpectations/NoDeleteCheckerExpectations:\n* Source/WTF/SaferCPPExpectations/UncheckedCallArgsCheckerExpectations: Added.\n* Source/WTF/SaferCPPExpectations/UncheckedLocalVarsCheckerExpectations: Added.\n* Source/WTF/SaferCPPExpectations/UncountedCallArgsCheckerExpectations: Added.\n* Source/WTF/SaferCPPExpectations/UncountedLocalVarsCheckerExpectations: Added.\n* Source/WebCore/SaferCPPExpectations/NoDeleteCheckerExpectations:\n* Source/WebCore/SaferCPPExpectations/NoUncheckedPtrMemberCheckerExpectations:\n* Source/WebCore/SaferCPPExpectations/UncheckedCallArgsCheckerExpectations:\n* Source/WebCore/SaferCPPExpectations/UncheckedLocalVarsCheckerExpectations:\n* Source/WebCore/SaferCPPExpectations/UncountedCallArgsCheckerExpectations:\n* Source/WebCore/SaferCPPExpectations/UncountedLambdaCapturesCheckerExpectations:\n* Source/WebCore/SaferCPPExpectations/UncountedLocalVarsCheckerExpectations:\n* Source/WebGPU/SaferCPPExpectations/NoDeleteCheckerExpectations:\n* Source/WebKit/SaferCPPExpectations/NoDeleteCheckerExpectations:\n* Source/WebKit/SaferCPPExpectations/RetainPtrCtorAdoptCheckerExpectations: Added.\n* Source/WebKit/SaferCPPExpectations/UncheckedLocalVarsCheckerExpectations: Added.\n* Source/WebKit/SaferCPPExpectations/UncountedCallArgsCheckerExpectations:\n* Source/WebKit/SaferCPPExpectations/UncountedLocalVarsCheckerExpectations:\n* Source/WebKitLegacy/SaferCPPExpectations/NoDeleteCheckerExpectations: Copied from Source/WTF/SaferCPPExpectations/NoDeleteCheckerExpectations.\n\nCanonical link: https://commits.webkit.org/316908@main",
      "email": "rniwa@webkit.org",
      "hash": "953a65db52e02007d9efe661ae18b7812f4bb594",
      "subject": "Update safer C++ expectations for iOS"
    },
    "316909@main": {
      "author": "Anne van Kesteren",
      "avatar": "https://www.gravatar.com/avatar/09bb44ac3625a121017cd98d0a7dc52c?d=identicon\u0026s=64",
      "cl": "316909@main",
      "clUrl": "https://commits.webkit.org/316909@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=318945\n\nReviewed by Ryosuke Niwa.\n\nThis aligns us with an upcoming DOM standard change that makes\nreplaceChildren() consistent with the other mutation methods:\n\n    https://github.com/whatwg/dom/pull/1487\n\nTests are updated as per:\n\n   https://github.com/web-platform-tests/wpt/pull/61154\n\nCanonical link: https://commits.webkit.org/316909@main",
      "email": "annevk@annevk.nl",
      "hash": "ced9e679e7f8d49a9f0c299f0db816e7939c3a3f",
      "subject": "Let replaceChildren() replace a document's children"
    },
    "316910@main": {
      "author": "Richard Robinson",
      "avatar": "https://www.gravatar.com/avatar/a0d2f862985ed0fd47887be66f5a3e4f?d=identicon\u0026s=64",
      "cl": "316910@main",
      "clUrl": "https://commits.webkit.org/316910@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=318987\nrdar://181840751\n\nReviewed by Abrar Rahman Protyasha and Alex Christensen.\n\nThere were a few issues with the tests added in 316796@main (a lot of style violations, no test coverage\nfor the WebPage API, abnormal compilation conditions, redundancy, etc).\n\nFix these issues by ultimately reducing duplication and just converting a few of the existing tests\nto use the WebPage API, which is also much less verbose and improves readability/correctness anyways.\n\nTests: Tools/TestWebKitAPI/Tests/WebKit/WKWebView/JSHandle.mm\n       Tools/TestWebKitAPI/Tests/WebKit/WKWebView/UserContentController.mm\n       Tools/TestWebKitAPI/Tests/WebKit/WKWebView/WKWebViewSwiftOverlayTests.swift\n       Tools/TestWebKitAPI/Tests/WebKit/WebPage/JSHandleTests.swift\n       Tools/TestWebKitAPI/Tests/WebKit/WebPage/UserContentControllerTests.swift\n\n* Source/WebKit/UIProcess/API/Cocoa/WKUserContentController.swift:\n(WKUserContentController.addBuffer(_:name:to:)):\n* Source/WebKit/UIProcess/API/Cocoa/WKWebsiteDataStore.mm:\n(+[WKWebsiteDataStore _storeWithConfiguration:]):\n* Source/WebKit/UIProcess/API/Cocoa/WKWebsiteDataStorePrivate.h:\n* Source/WebKit/UIProcess/API/Swift/WebPage+FrameInfo.swift:\n* Tools/TestWebKitAPI/Helpers/cocoa/HTTPServer.h:\n* Tools/TestWebKitAPI/Helpers/cocoa/HTTPServer.mm:\n* Tools/TestWebKitAPI/Helpers/cocoa/HTTPServer.swift:\n(Configuration.httpsProxy):\n* Tools/TestWebKitAPI/Helpers/cocoa/WebPage+Extras.swift:\n(mainFrame):\n* Tools/TestWebKitAPI/Helpers/cocoa/WebPage+JavaScriptExpression.swift:\n* Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:\n* Tools/TestWebKitAPI/Tests/WebKit/WKWebView/JSHandle.mm:\n(TestWebKitAPI::getWindowFrameInfo): Deleted.\n(TestWebKitAPI::TEST(JSHandle, Basic)): Deleted.\n* Tools/TestWebKitAPI/Tests/WebKit/WKWebView/UserContentController.mm:\n(TEST(WKUserContentController, JSBufferInjectsWebKitNamespace)): Deleted.\n* Tools/TestWebKitAPI/Tests/WebKit/WKWebView/WKWebViewSwiftOverlayTests.swift:\n(WKWebViewSwiftOverlayTests.evaluateJavaScriptWithNilResponse):\n(WKWebViewSwiftOverlayTests.wkUserContentControllerRefinements): Deleted.\n(WKWebViewSwiftOverlayTests.wkJSHandleRefinements): Deleted.\n* Tools/TestWebKitAPI/Tests/WebKit/WebPage/JSHandleTests.swift: Added.\n(JSHandleTests.basic):\n* Tools/TestWebKitAPI/Tests/WebKit/WebPage/UserContentControllerTests.swift: Added.\n(UserContentControllerTests.jsBufferInjectsWebKitNamespace):\n\nCanonical link: https://commits.webkit.org/316910@main",
      "email": "richard_robinson2@apple.com",
      "hash": "d223b75e9edc14bcb4c722f4a8dce8380cf0cac1",
      "subject": "Follow-up to 316796@main to fix and improve tests"
    },
    "316911@main": {
      "author": "Sammy Gill",
      "avatar": "https://www.gravatar.com/avatar/715a3cfee5d85ee90ccfdaa2a4a7a5a3?d=identicon\u0026s=64",
      "cl": "316911@main",
      "clUrl": "https://commits.webkit.org/316911@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=318970\nrdar://problem/181825230\n\nReviewed by Brent Fulgham and Brandon Stewart.\n\nInstead of returning a std::pair we should be returning a dedicated type\nas a result of grid layout.\n\nCanonical link: https://commits.webkit.org/316911@main",
      "email": "sammy.gill@apple.com",
      "hash": "dd2e839a441231258214f78ac2711d46cf4d5300",
      "subject": "[GFC][Cleanup] Grid layout should return a dedicated result type"
    },
    "316912@main": {
      "author": "Hysu Xiong",
      "avatar": "https://www.gravatar.com/avatar/ecfded559f81d5d495c592f3f76939d2?d=identicon\u0026s=64",
      "cl": "316912@main",
      "clUrl": "https://commits.webkit.org/316912@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319015\nrdar://181862027\n\nReviewed by Dewei Zhu.\n\nExpose the diagnose directory to browser drivers via the benchmark config, alongside the existing device_id/enable_signposts entries. This lets drivers collect per-iteration diagnostics into the directory rather than only having access to it on test failure.\n\n* Tools/Scripts/webkitpy/benchmark_runner/benchmark_runner.py:\n(BenchmarkRunner.__init__):\n\nCanonical link: https://commits.webkit.org/316912@main",
      "email": "hysu@apple.com",
      "hash": "48df662276cbf490c86d6df41603248720b56ed8",
      "subject": "[run-benchmark] Expose the diagnose directory to browser drivers via the benchmark config"
    },
    "316913@main": {
      "author": "Tyler Wilcock",
      "avatar": "https://www.gravatar.com/avatar/9545082e6bed96158a9f52dac6e4b869?d=identicon\u0026s=64",
      "cl": "316913@main",
      "clUrl": "https://commits.webkit.org/316913@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=317108\nrdar://179677418\n\nReviewed by Dominic Mazzoni.\n\nAfter the initial relations build, AXObjectCache resolves relations lazily and only\nre-resolves when something dirties m_relationsNeedUpdate. When a relation source (e.g. a\n\u003cbutton aria-labelledby=\"label\"\u003e) already exists but its target is inserted via innerHTML\nafterwards, nothing dirties relations, so the source's aria-labelledby never resolves.\n\nFix this by remembering the ids referenced by a relation attribute whose target didn't exist\nwhen relations were last built (m_unresolvedRelationTargetIds). When an element with one of\nthose ids is later inserted, dirty relations so they re-resolve. This is scoped to\npreviously-unresolved targets rather than every id-bearing element so that fully-resolvable\npages don't needlessly trigger the incremental rebuild (which iterates a WeakHashSet in\nnondeterministic order and can reorder symmetric reverse-relations).\n\n* LayoutTests/accessibility/aria-labelledby-target-added-via-innerHTML-expected.txt: Added.\n* LayoutTests/accessibility/aria-labelledby-target-added-via-innerHTML.html: Added.\n* Source/WebCore/accessibility/AXObjectCache.cpp:\n(WebCore::AXObjectCache::performDeferredCacheUpdate):\n(WebCore::AXObjectCache::updateRelationsIfNeeded):\n(WebCore::AXObjectCache::addRelation):\n* Source/WebCore/accessibility/AXObjectCache.h:\n\nCanonical link: https://commits.webkit.org/316913@main",
      "email": "tyler_w@apple.com",
      "hash": "647c7baec5c5ad8ab1975a626d861cfb7769e89a",
      "subject": "AX: aria-labelledby relation isn't built when its target element is inserted via innerHTML"
    },
    "316914@main": {
      "author": "Pascoe",
      "avatar": "https://www.gravatar.com/avatar/7a6e50b09dba6a185f45250268683d71?d=identicon\u0026s=64",
      "cl": "316914@main",
      "clUrl": "https://commits.webkit.org/316914@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=318993\nrdar://181709823\n\nReviewed by Abrar Rahman Protyasha.\n\nThe completion callbacks created in requestPin() and requestNewPin() capture a\nWeakPtr to the AuthenticatorManager and correctly bail out if the manager has\ngone away. However, they then unconditionally dereference m_pendingRequest to\ncache the entered PIN. m_pendingRequest is a std::optional that is reset\nwhenever the pending request is cancelled, times out, or is replaced, so if the\nmanager outlives the request the callback dereferences a disengaged optional\nand we crash.\n\nThis patch guards the dereference on m_pendingRequest being engaged, matching\nthe checks already used by the surrounding synchronous code paths. When there\nis no longer a pending request there is nothing to cache the PIN into, so we\ninvoke the completion handler with a null string and return, the same way we\nalready handle a null manager.\n\n* Source/WebKit/UIProcess/WebAuthentication/AuthenticatorManager.cpp:\n(WebKit::AuthenticatorManager::requestPin):\n(WebKit::AuthenticatorManager::requestNewPin):\n\nCanonical link: https://commits.webkit.org/316914@main",
      "email": "pascoe@apple.com",
      "hash": "ec0b6a54937e081b2428f1b6b43425ad50926df2",
      "subject": "[WebAuthn] Null check m_pendingRequest before dereferencing it in PIN callbacks"
    },
    "316915@main": {
      "author": "Tyler Wilcock",
      "avatar": "https://www.gravatar.com/avatar/9545082e6bed96158a9f52dac6e4b869?d=identicon\u0026s=64",
      "cl": "316915@main",
      "clUrl": "https://commits.webkit.org/316915@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=318992\nrdar://181844005\n\nReviewed by Chris Fleizach.\n\nDuring node teardown (e.g. a GC sweep destroying DOM nodes), AXObjectCache::remove(Node\u0026)\n-\u003e remove(AXID) -\u003e AXIsolatedTree::queueNodeRemoval() computes the removed object's parent via\nparentInCoreTree() -\u003e AccessibilityNodeObject::ownerParentObject(). When relations are dirty,\nthat reaches owners() -\u003e relatedObjects(AXRelation::OwnedBy) -\u003e relatedObjectIDsFor(...,\nUpdateRelations::Yes), which synchronously runs updateRelationsIfNeeded(). Rebuilding relations\nwalks the DOM and creates accessibility objects in the middle of node destruction, dereferencing\na null pointer.\n\nGuard against this with an m_isRemovingNode flag set across remove(AXID). updateRelationsIfNeeded()\nreturns early while it is set. queueNodeRemoval() already reads relations without updating them\nfor its LabelFor lookup (UpdateRelations::No), so this is consistent with the existing intent.\n\nReading the current (stale) relations during removal is also correct. The parent ID recorded by\nqueueNodeRemoval() must match the isolated tree's m_nodeMap, which reflects the same last-built\nrelations. A fresh rebuild would desync from it and make removeSubtreeFromNodeMap() bail.\n\n* LayoutTests/accessibility/relations-update-during-node-removal-crash-expected.txt: Added.\n* LayoutTests/accessibility/relations-update-during-node-removal-crash.html: Added.\n* Source/WebCore/accessibility/AXObjectCache.cpp:\n(WebCore::AXObjectCache::remove):\n(WebCore::AXObjectCache::updateRelationsIfNeeded):\n* Source/WebCore/accessibility/AXObjectCache.h:\n\nCanonical link: https://commits.webkit.org/316915@main",
      "email": "tyler_w@apple.com",
      "hash": "62d7f19ba485e768f437050b9b146695883c2c02",
      "subject": "AX: Null-pointer dereference rebuilding accessibility relations during node removal"
    },
    "316916@main": {
      "author": "Alex Christensen",
      "avatar": "https://www.gravatar.com/avatar/b087c5dfcb1233e80cad9105fd5a1ac6?d=identicon\u0026s=64",
      "cl": "316916@main",
      "clUrl": "https://commits.webkit.org/316916@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319105\nrdar://181920760\n\nReviewed by David Kilzer.\n\nSomething mysterious was happening with cmake swift modules saying DiagnosticLoggingClient\nhas a different definition in different modules.  It was only from DiagnosticLoggingClient.\nRemoving the include DiagnosticLoggingClient.h where possible fixes the build failure for me.\n\n* Source/WebCore/inspector/InspectorFrontendClient.h:\n(WebCore::InspectorFrontendClient::logDiagnosticEvent):\n* Source/WebCore/inspector/InspectorFrontendHost.cpp:\n* Source/WebKit/NetworkProcess/NetworkProcess.h:\n* Source/WebKit/NetworkProcess/NetworkResourceLoader.cpp:\n* Source/WebKit/NetworkProcess/cache/NetworkCacheSpeculativeLoadManager.cpp:\n* Source/WebKit/UIProcess/ProvisionalPageProxy.cpp:\n* Source/WebKit/UIProcess/ProvisionalPageProxy.h:\n* Source/WebKit/UIProcess/WebProcessProxy.cpp:\n* Source/WebKit/UIProcess/mac/WebViewImpl.mm:\n* Source/WebKit/WebProcess/Inspector/RemoteWebInspectorUI.cpp:\n* Source/WebKit/WebProcess/Inspector/RemoteWebInspectorUI.h:\n* Source/WebKit/WebProcess/Inspector/WebInspectorUI.cpp:\n* Source/WebKit/WebProcess/Inspector/WebInspectorUI.h:\n* Source/WebKit/WebProcess/WebCoreSupport/WebDiagnosticLoggingClient.h:\n* Source/WebKitLegacy/ios/WebCoreSupport/WebInspectorClientIOS.mm:\n* Source/WebKitLegacy/mac/WebCoreSupport/WebInspectorClient.h:\n* Source/WebKitLegacy/mac/WebCoreSupport/WebInspectorClient.mm:\n\nCanonical link: https://commits.webkit.org/316916@main",
      "email": "achristensen@apple.com",
      "hash": "339108df2306ac05d435eb1a3cc4abc07abcfa83",
      "subject": "Only include DiagnosticLoggingClient.h where necessary"
    },
    "316917@main": {
      "author": "Ruthvik Konda",
      "avatar": "https://www.gravatar.com/avatar/bca33cefcce93017251a8fbc1204cdc4?d=identicon\u0026s=64",
      "cl": "316917@main",
      "clUrl": "https://commits.webkit.org/316917@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=318976\nrdar://181832325\n\nReviewed by Dan Glastonbury.\n\nWebGPUPresentationContextImpl.cpp includes WebGPUTextureDescriptor.h but never\nreferences TextureDescriptor. The types it does use, TextureFormat and\nTextureDimension, are provided by other includes already present in the\ntranslation unit (WebGPUPresentationContextImpl.h and WebGPUCanvasConfiguration.h\nfor TextureFormat; WebGPUTextureImpl.h for TextureDimension). Remove the unused\ninclude. No change in behavior.\n\n* Source/WebCore/Modules/WebGPU/Implementation/WebGPUPresentationContextImpl.cpp:\n\nCanonical link: https://commits.webkit.org/316917@main",
      "email": "rkonda2@apple.com",
      "hash": "947b87bc2d9ae711addc552de21be1f7d5be1dfe",
      "subject": "[WebGPU] Remove unused WebGPUTextureDescriptor.h include in WebGPUPresentationContextImpl"
    },
    "316918@main": {
      "author": "Taher Ali",
      "avatar": "https://www.gravatar.com/avatar/e104800647d8c98b8c9dbe736b5e1751?d=identicon\u0026s=64",
      "cl": "316918@main",
      "clUrl": "https://commits.webkit.org/316918@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=318895\nrdar://181729664\n\nReviewed by Nikolas Zimmermann.\n\nlayoutTextOnLineOrPath() computed a RefPtr\u003cSVGElement\u003e (\"lengthContext\")\nfrom textParent-\u003eelement() that was never read. Possibly a leftover from an\nearlier refactor.\n\n* Source/WebCore/rendering/svg/SVGTextLayoutEngine.cpp:\n(WebCore::SVGTextLayoutEngine::layoutTextOnLineOrPath):\n\nCanonical link: https://commits.webkit.org/316918@main",
      "email": "taher_ali@apple.com",
      "hash": "33235b3cb4845ef85e2c9c5f1accb708000245e9",
      "subject": "Remove dead downcast\u003cSVGElement\u003e in SVGTextLayoutEngine::layoutTextOnLineOrPath"
    },
    "316919@main": {
      "author": "Ben Nham",
      "avatar": "https://www.gravatar.com/avatar/dc0914eabf69047ee3397794c2d17bf7?d=identicon\u0026s=64",
      "cl": "316919@main",
      "clUrl": "https://commits.webkit.org/316919@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=318996\nrdar://181137520\n\nReviewed by Simon Fraser.\n\nTest: Tools/TestWebKitAPI/Tests/WebKit/WKWebView/DoAfterNextPresentationUpdateOffscreen.mm\n\nThis fixes an issue where `_doAfterNextPresentationUpdate:` sometimes hangs forever. This is bad,\nbecause `_doAfterNextPresentationUpdate:` hangs on to the associated WKWebView forever, which then\ncauses the associated WebContent process to run forever.\n\nThe issue affects offscreen WKWebViews using `_relatedWebView`. The first WKWebView's WebPageProxy\ngets a drawing area with a non-empty display ID, because `WebPageProxy::finishAttachingToWebProcess`\neventually calls `WebViewImpl::windowDidChangeScreen`.\n\nThe second WKWebView use `_relatedWebView` and creates a WebPageProxy that has a drawing area with\nan empty display ID. This is because those pages go down the `WebPageProxy::ensureRunningProcess()`\npath, which never calls `WebViewImpl::windowDidChangeScreen`.\n\nFix this by making the WebViewImpl constructor always call `windowDidChangeScreen`, so that the\nassociated WebPageProxy and drawing area always have some non-empty display ID.\n\nA better fix might be to make m_displayID non-optional in RemoteLayerTreeDrawingAreaProxyMac, which\nis already mentioned in the header. However, that's a larger change, so I didn't attempt it here.\n\nCanonical link: https://commits.webkit.org/316919@main",
      "email": "nham@apple.com",
      "hash": "e3f74a2799bcd897eccfe38f0f3b827dc3cfcd42",
      "subject": "Fix _doAfterNextPresentationUpdate hanging forever in views using _relatedWebView"
    },
    "316920@main": {
      "author": "Cole Carley",
      "avatar": "https://www.gravatar.com/avatar/091dd5641909acc46e581355f491ed34?d=identicon\u0026s=64",
      "cl": "316920@main",
      "clUrl": "https://commits.webkit.org/316920@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=318287\nrdar://181072951\n\nReviewed by Sammy Gill.\n\nI added unit tests for the CachedMatchFinder.\n\nTests: Tools/TestWebKitAPI/Tests/WebCore/CachedMatchFinder.cpp\n       Tools/TestWebKitAPI/Tests/WebCore/TestPageHarness.h\n\n* Source/WebCore/editing/CachedMatchFinder.h:\n* Tools/TestWebKitAPI/Tests/WebCore/CachedMatchFinder.cpp:\n(TestWebKitAPI::TEST(CachedMatchFinder, CountMatchesReturnsZeroWhenNoMatches)):\n(TestWebKitAPI::TEST(CachedMatchFinder, CountMatchesWithEmptyTargetReturnsZero)):\n(TestWebKitAPI::TEST(CachedMatchFinder, CountMatchesRespectsLimit)):\n(TestWebKitAPI::TEST(CachedMatchFinder, FindMatchesReturnsAllMatchingRanges)):\n(TestWebKitAPI::TEST(CachedMatchFinder, FindMatchesReturnsEmptyVectorWhenNoMatches)):\n(TestWebKitAPI::TEST(CachedMatchFinder, FindMatchesRespectsLimit)):\n(TestWebKitAPI::TEST(CachedMatchFinder, FindMatchFromReturnsFirstMatchWhenStartingWithoutReferenceRange)):\n(TestWebKitAPI::TEST(CachedMatchFinder, FindMatchFromReturnsNulloptWhenNoMatches)):\n(TestWebKitAPI::TEST(CachedMatchFinder, FindMatchFromAdvancesPastReferenceRangeToNextMatch)):\n(TestWebKitAPI::TEST(CachedMatchFinder, FindMatchFromWithBackwardsOptionFindsPrecedingMatch)):\n(TestWebKitAPI::TEST(CachedMatchFinder, FindMatchFromWithoutWrapAroundStopsAtEndOfDocument)):\n(TestWebKitAPI::TEST(CachedMatchFinder, FindMatchFromWithWrapAroundWrapsToBeginningOfDocument)):\n(TestWebKitAPI::TEST(CachedMatchFinder, CaseInsensitiveOptionMatchesRegardlessOfCase)):\n(TestWebKitAPI::TEST(CachedMatchFinder, AtWordStartsOptionExcludesMidWordMatches)):\n(TestWebKitAPI::TEST(CachedMatchFinder, TextBufferCacheIsInvalidatedByDOMMutation)):\n(TestWebKitAPI::TEST(CachedMatchFinder, TextBufferCacheIsInvalidatedByStyleChangeWithoutDOMMutation)):\n(TestWebKitAPI::TEST(CachedMatchFinder, FlatTreeAndLightTreeBufferCachesRemainIndependentAcrossRepeatedSwitches)):\n(TestWebKitAPI::TEST(CachedMatchFinder, SearchResultCacheDistinguishesDifferentTargets)):\n(TestWebKitAPI::TEST(CachedMatchFinder, SearchResultCacheDistinguishesDifferentOptions)):\n(TestWebKitAPI::TEST(CachedMatchFinder, FlatTreeTraversalFindsMatchesInsideShadowTree)):\n(TestWebKitAPI::TEST(CachedMatchFinder, FindMatchFromWithinShadowTreeUsesShadowIncludingAncestorTraversal)):\n(TestWebKitAPI::TEST(CachedMatchFinder, OversizedDocumentReturnsCacheUnusableError)):\n* Tools/TestWebKitAPI/Tests/WebCore/TestPageHarness.h:\n(TestWebKitAPI::TestPageHarness::getElementById):\n\nCanonical link: https://commits.webkit.org/316920@main",
      "email": "ccarley2@apple.com",
      "hash": "24c5e3b2f50900a76dc0f4cd761ebb0c77b859ed",
      "subject": "Add unit tests for CachedMatchFinder"
    },
    "316921@main": {
      "author": "Alan Baradlay",
      "avatar": "https://www.gravatar.com/avatar/788d66417db806c567552cfa1ae89f77?d=identicon\u0026s=64",
      "cl": "316921@main",
      "clUrl": "https://commits.webkit.org/316921@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=318464\n\nReviewed by Antti Koivisto.\n\nflipForRightToLeftColumn was the last place that read and wrote the renderer's\nflow-aware location directly. Have it read and write the flex item's\nflowAwareLocation and apply that with setFlexItemGeometry, like every other flex\ngeometry writer now does. It runs last, after the other item-based writers have\napplied, so the item's location still equals the renderer's going in and the\nresult is identical.\n\nWith that, nothing reads the renderer's flow-aware location anymore, so remove\nthe now-unused flowAwareLocationForFlexItem. No change in behavior.\n\n* Source/WebCore/rendering/RenderFlexibleBox.h:\n* Source/WebCore/rendering/RenderFlexibleBox.cpp:\n(WebCore::RenderFlexibleBox::flowAwareLocationForFlexItem): Deleted.\n(WebCore::RenderFlexibleBox::flipForRightToLeftColumn):\n\nCanonical link: https://commits.webkit.org/316921@main",
      "email": "zalan@apple.com",
      "hash": "7f1a23389fefcca828059bdb2f1f5242802ef5bc",
      "subject": "[cleanup] Route the right-to-left column flip through the flex item instead of the renderer"
    },
    "316922@main": {
      "author": "Jessica Cheung",
      "avatar": "https://www.gravatar.com/avatar/5c102f093ce6bc01424466a4cfdf1d1f?d=identicon\u0026s=64",
      "cl": "316922@main",
      "clUrl": "https://commits.webkit.org/316922@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=318190\nrdar://178016084\n\nReviewed by Abrar Rahman Protyasha and Aditya Keerthi.\n\nWebKit test harness' use of keyboard state manipulation and\noverriding UIKit's implementation may cause unexpected behavior.\nIt seems matching GSEventSetHardwareKeyboardAttached and\nisInHardwareKeyboardMode fixes the failing tests.\n\nPreviously where there was a mismatch, GSEventSetHardwareKeyboardAttached\nwould always be true while isInHardwareKeyboardMode could be false. That\ncould mean the system believes a hardware keyboard is attached but when\nisInHardwareKeyboardMode reports false, the software keyboard doesn't show up.\n\nDue to this behavior change, some EWS tests were failing. To mimic the old\nbehavior, some needed to add `useHardwareKeyboardMode=true`.\n\nThere was an issue where the keyboard state would be up for the first iteration of\nthe test, then fail because each iteration of a test would not do the full keyboard\nreset. So, when the second iteration waits for the keyboard (which is considered\nalready up), the test timeouts. Then it fails, the full tear-down happens for the\nthird iteration, and the test passes again. Thus, there was a pattern of Pass, Fail, Pass,\nFail when running tests in multiple iterations. To fix this, instead of waiting for the\nkeyboard presentation, have a new helper called `activateAndWaitForInputSessionStartAt`\nsimilar to `activateAndWaitForInputSessionAt`, that instead checks for an active input session.\n\nOther tests (specifically the zoom/scroll tests) failed because the results were\ngenerated under the mismatched behavior. Now that GSEventSetHardwareKeyboardAttached and\nisInHardwareKeyboardMode match, both flags agree in the case when the hardware keyboard\nisn't toggled on, the software keyboard should actually appear now which offsets the\nprevious results. So, regenerate the results according to the new offset.\n\n* LayoutTests/editing/caret/ios/caret-in-overflow-area.html:\n* LayoutTests/editing/input/ios/typing-with-inline-predictions.html:\n* LayoutTests/editing/selection/ios/extend-selection-with-inline-predictions.html:\n* LayoutTests/editing/selection/ios/place-selection-in-overflow-area.html:\n* LayoutTests/editing/selection/ios/select-text-by-long-press-with-focused-element.html:\n* LayoutTests/editing/selection/ios/selection-extends-into-overflow-area.html:\n* LayoutTests/editing/selection/ios/tap-focused-input-clears-outside-selection.html:\n* LayoutTests/editing/selection/ios/tap-to-change-selection-after-accepting-inline-prediction.html:\n* LayoutTests/editing/text-placeholder/insert-into-content-editable-non-zero-width-and-height.html:\n* LayoutTests/fast/events/ios/contenteditable-autocapitalize.html:\n* LayoutTests/fast/forms/ios/accessory-bar-navigation.html:\n* LayoutTests/fast/forms/password-scrolled-after-caps-lock-toggled.html:\n* LayoutTests/platform/ios/fast/forms/ios/focus-input-via-button-expected.txt:\n* LayoutTests/platform/ios/fast/forms/ios/focus-long-textarea-expected.txt:\n* LayoutTests/platform/ios/fast/forms/ios/zoom-after-input-tap-expected.txt:\n* LayoutTests/platform/ios/fast/forms/ios/zoom-after-input-tap-wide-input-expected.txt:\n* LayoutTests/resources/ui-helper.js:\n(window.UIHelper.await.new.Promise.):\n(window.UIHelper.await.new.Promise):\n(window.UIHelper.return.new.Promise.):\n(window.UIHelper.return.new.Promise):\n(window.UIHelper.async activateAndWaitForInputSessionStartAt):\n(window.UIHelper.activateElementAndWaitForInputSessionStart):\n* Tools/TestRunnerShared/UIScriptContext/Bindings/UIScriptController.idl:\n* Tools/TestRunnerShared/UIScriptContext/UIScriptContext.h:\n* Tools/TestRunnerShared/UIScriptContext/UIScriptController.h:\n* Tools/TestRunnerShared/UIScriptContext/UIScriptControllerShared.cpp:\n(WTR::UIScriptController::setDidStartInputSessionCallback):\n(WTR::UIScriptController::didStartInputSessionCallback const):\n* Tools/WebKitTestRunner/cocoa/TestRunnerWKWebView.h:\n* Tools/WebKitTestRunner/cocoa/TestRunnerWKWebView.mm:\n(-[TestRunnerWKWebView resetInteractionCallbacks]):\n(-[TestRunnerWKWebView _webView:didStartInputSession:]):\n* Tools/WebKitTestRunner/ios/TestControllerIOS.mm:\n(WTR::TestController::platformResetStateToConsistentValues):\n* Tools/WebKitTestRunner/ios/UIScriptControllerIOS.h:\n* Tools/WebKitTestRunner/ios/UIScriptControllerIOS.mm:\n(WTR::UIScriptControllerIOS::setDidStartInputSessionCallback):\n\nCanonical link: https://commits.webkit.org/316922@main",
      "email": "jcheung23@apple.com",
      "hash": "d97068f942ec3f1375bc824131b0d989f7a0c44a",
      "subject": "[iOS] Quite a few tests time out while awaiting the keyboard"
    },
    "316923@main": {
      "author": "Jetzel Espinal",
      "avatar": "https://www.gravatar.com/avatar/2edd78d5d9f2f2e2e695465277634921?d=identicon\u0026s=64",
      "cl": "316923@main",
      "clUrl": "https://commits.webkit.org/316923@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319018\nrdar://181862595\n\nUnreviewed test gardening.\n\n* LayoutTests/platform/mac-wk2/TestExpectations:\n\nCanonical link: https://commits.webkit.org/316923@main",
      "email": "jespinal23@apple.com",
      "hash": "9a4c148b7e59c180f4acc3c39ee0aac133e0b572",
      "subject": "[GARDENING] 2x media/media-source/* (layout-tests) are flaky timeouts."
    },
    "316924@main": {
      "author": "Andy Estes",
      "avatar": "https://www.gravatar.com/avatar/643f10f01b26fd94d03482a2013b2ea0?d=identicon\u0026s=64",
      "cl": "316924@main",
      "clUrl": "https://commits.webkit.org/316924@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319028\nrdar://181881466\n\nReviewed by Youenn Fablet.\n\nMediaPlayerPrivateWirelessPlayback did not implement playbackPositionDidChange, playingDidChange,\nplaybackSpeedDidChange, or volumeDidChange from MediaDeviceRouteClient. As a result, changes to\nthese properties made by the MediaDeviceRoute were not propagated to HTMLMediaElement.\nAdditionally, MediaPlayerPrivateWirelessPlayback did not properly implement setMuted, preventing\nthe webage from muting playback occurring on a MediaDeviceRoute.\n\nAddressed these problems by implementing the above functions. While here, made the logging in\nplaybackPositionDidChange less noisy by only logging during a seek.\n\nCovered by new layout tests.\n\nTests: media/wireless-playback-media-player/muted.html\n       media/wireless-playback-media-player/route-muted-change.html\n       media/wireless-playback-media-player/route-pauses-playback.html\n       media/wireless-playback-media-player/route-playback-rate-change.html\n       media/wireless-playback-media-player/route-stops-advancing-current-time.html\n       media/wireless-playback-media-player/route-volume-change.html\n\n* LayoutTests/media/wireless-playback-media-player/muted-expected.txt: Added.\n* LayoutTests/media/wireless-playback-media-player/muted.html: Added.\n* LayoutTests/media/wireless-playback-media-player/route-muted-change-expected.txt: Added.\n* LayoutTests/media/wireless-playback-media-player/route-muted-change.html: Added.\n* LayoutTests/media/wireless-playback-media-player/route-pauses-playback-expected.txt: Added.\n* LayoutTests/media/wireless-playback-media-player/route-pauses-playback.html: Added.\n* LayoutTests/media/wireless-playback-media-player/route-playback-rate-change-expected.txt: Added.\n* LayoutTests/media/wireless-playback-media-player/route-playback-rate-change.html: Added.\n* LayoutTests/media/wireless-playback-media-player/route-stops-advancing-current-time-expected.txt: Added.\n* LayoutTests/media/wireless-playback-media-player/route-stops-advancing-current-time.html: Added.\n* LayoutTests/media/wireless-playback-media-player/route-volume-change-expected.txt: Added.\n* LayoutTests/media/wireless-playback-media-player/route-volume-change-locked-expected.txt: Added.\n* LayoutTests/media/wireless-playback-media-player/route-volume-change-locked.html: Added.\n* LayoutTests/media/wireless-playback-media-player/route-volume-change.html: Added.\n* Source/WebCore/platform/graphics/MediaPlayerPrivateWirelessPlayback.cpp:\n(WebCore::MediaPlayerPrivateWirelessPlayback::effectiveRate const):\n(WebCore::MediaPlayerPrivateWirelessPlayback::setMuted):\n(WebCore::MediaPlayerPrivateWirelessPlayback::playbackPositionDidChange):\n(WebCore::MediaPlayerPrivateWirelessPlayback::playingDidChange):\n(WebCore::MediaPlayerPrivateWirelessPlayback::playbackSpeedDidChange):\n(WebCore::MediaPlayerPrivateWirelessPlayback::mutedDidChange):\n(WebCore::MediaPlayerPrivateWirelessPlayback::volumeDidChange):\n* Source/WebCore/platform/graphics/MediaPlayerPrivateWirelessPlayback.h:\n* Source/WebCore/testing/MockMediaDeviceRoute.h:\n* Source/WebCore/testing/MockMediaDeviceRoute.idl:\n* Source/WebCore/testing/MockMediaDeviceRoute.mm:\n(WebCore::MockMediaDeviceRoute::muted const):\n(WebCore::MockMediaDeviceRoute::setMuted):\n\nCanonical link: https://commits.webkit.org/316924@main",
      "email": "aestes@apple.com",
      "hash": "13d509ea8a1a250ac12266f8ba6ccfd2b1c5bf0e",
      "subject": "[iOS] Playing, rate, and volume changes originating from a MediaDeviceRoute are not reflected in HTMLMediaElement"
    },
    "316926@main": {
      "author": "Marta Darbinyan",
      "avatar": "https://www.gravatar.com/avatar/6143b3673258642a8b75585c768ccf10?d=identicon\u0026s=64",
      "cl": "316926@main",
      "clUrl": "https://commits.webkit.org/316926@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319121\nrdar://181939216\n\nUnreviewed test gardening\n\n* LayoutTests/platform/mac-wk2/TestExpectations:\n\nCanonical link: https://commits.webkit.org/316926@main",
      "email": "darbinyan@apple.com",
      "hash": "3ac06a09a7f81a9a4c33c1fd7d6272f37c08d207",
      "subject": "[Gardening]: REGRESSION(316397@main): [macOS Release] imported/w3c/web-platform-tests/css/filter-effects/backdrop-filter-corner-shape-change.html is flaky image diff failure"
    },
    "316927@main": {
      "author": "Megan Gardner",
      "avatar": "https://www.gravatar.com/avatar/b466a5bcbfabf4d82a8ecc595db5a531?d=identicon\u0026s=64",
      "cl": "316927@main",
      "clUrl": "https://commits.webkit.org/316927@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=318398\nrdar://181188518\n\nReviewed by Abrar Rahman Protyasha and Wenson Hsieh.\n\nWhen invoking Writing Tools Proofreading directly,\nwe should remove the results and animations\nfrom Always On Proofreading. We do not want\nto have a collision between these results and the\nWriting Tools results do not have the same visual\ntreatment as the Always On Proofreading results,\nand so we should remove them to make sure we\nhave consistent styling.\n\n* Source/WebCore/page/writing-tools/WritingToolsController.mm:\n(WebCore::WritingToolsController::willBeginWritingToolsSession):\n\nCanonical link: https://commits.webkit.org/316927@main",
      "email": "megan_gardner@apple.com",
      "hash": "be5975e72568f296c5d15072fedd52af7863c312",
      "subject": "Remove Always On Proofreading results when invoking Writing Tools manually."
    },
    "316928@main": {
      "author": "Geoffrey Garen",
      "avatar": "https://www.gravatar.com/avatar/9f2ee1a184d00263dc68af055f15b697?d=identicon\u0026s=64",
      "cl": "316928@main",
      "clUrl": "https://commits.webkit.org/316928@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=313288\nrdar://175559104\n\nReviewed by Richard Robinson.\n\nReland of 316776@main with two build fixes:\n- audit-spi can only run when InstallAPI is enabled. Update its toggling\n  logic to reflect this. Since audit-spi does not currently run in EWS,\n  keep InstallAPI enabled in at-desk builds for iOS only.\n- Disable sandboxing for \"Work around rdar://109484516\" script\n  phases which delete stale tbds from the build directory.\n\nSkip slow verification steps in at-desk and LLM-driven builds;\nkeep them in CI and Production builds.\n\nThis is worth about 2 minutes in a clean build, or an incremental\nbuild that touches headers or project files, or a build in which\nXcode gets confused about its dependency tracking.\n\nReplace the old OVERRIDE_* variables to turn off module verification and\nInstallAPI locally; this mechanism serves the same purpose.\n\n* Configurations/CommonBase.xcconfig:\n* Source/JavaScriptCore/Configurations/JavaScriptCore.xcconfig:\n* Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj:\n* Source/ThirdParty/libwebrtc/libwebrtc.xcodeproj/project.pbxproj:\n* Source/WTF/Configurations/WTF.xcconfig:\n* Source/WTF/WTF.xcodeproj/project.pbxproj:\n* Source/WebCore/Configurations/WebCore.xcconfig:\n* Source/WebCore/PAL/Configurations/PAL.xcconfig:\n* Source/WebCore/PAL/PAL.xcodeproj/project.pbxproj:\n* Source/WebCore/WebCore.xcodeproj/project.pbxproj:\n* Source/WebGPU/Configurations/WebGPU.xcconfig:\n* Source/WebInspectorUI/Configurations/WebInspectorUIFramework.xcconfig:\n* Source/WebKit/Configurations/Base.xcconfig:\n* Source/WebKit/Configurations/WebKit.xcconfig:\n* Source/WebKit/WebKit.xcodeproj/project.pbxproj:\n* Source/WebKitLegacy/WebKitLegacy.xcodeproj/project.pbxproj:\n* Source/WebKitLegacy/mac/Configurations/WebKitLegacy.xcconfig:\n* Source/bmalloc/Configurations/bmalloc.xcconfig:\n* Source/bmalloc/bmalloc.xcodeproj/project.pbxproj:\n\nCo-authored-by: Elliott Williams \u003cemw@apple.com\u003e\nCanonical link: https://commits.webkit.org/316928@main",
      "email": "ggaren@apple.com",
      "hash": "0e65f82aa0acf16b9bdedeb52ce864f8e14fc203",
      "subject": "Add WK_ENABLE_SLOW_BUILD_VERIFICATION for slow build verification in CI and Production builds (2/2)"
    },
    "316929@main": {
      "author": "Claudio Saavedra",
      "avatar": "https://www.gravatar.com/avatar/376a6edb56b8e52de407ea171c869bcf?d=identicon\u0026s=64",
      "cl": "316929@main",
      "clUrl": "https://commits.webkit.org/316929@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=318621\n\nReviewed by Aakash Jain.\n\nRecognize the WebKitGTK/WPE stable branch naming convention\n(webkitglib/2.52) in ScmBase.PROD_BRANCHES so it is classified as a\nproduction branch alongside the safari-N-branch convention.\n\nThis fixes commits.webkit.org failing to resolve identifiers on those\nbranches (e.g. NNNN.M@webkitglib/2.52): reporelaypy's update_for() gates\nbranch tracking and identifier-cache population on prod_branches.match(),\nso pushes to webkitglib/N.N were never indexed. It also makes the tooling\napply production-branch semantics (such as the rebase ban) to them.\n\nA webkitglib-specific alternative is used rather than a generic word/N.N\npattern to avoid misclassifying dev branches.\n\nCanonical link: https://commits.webkit.org/316929@main",
      "email": "csaavedra@igalia.com",
      "hash": "9c9bb7fa5839861591e82988b141448efa3cb81b",
      "subject": "[webkitscmpy] Treat webkitglib/N.N stable branches as production branches"
    },
    "316930@main": {
      "author": "Ryosuke Niwa",
      "avatar": "https://www.gravatar.com/avatar/ed2c71248fe3ea15d9129f6e9a2a1e85?d=identicon\u0026s=64",
      "cl": "316930@main",
      "clUrl": "https://commits.webkit.org/316930@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319124\n\nUnreviewed. Update safer C++ expectations.\n\n* Source/JavaScriptCore/SaferCPPExpectations/NoUncountedMemberCheckerExpectations:\n* Source/JavaScriptCore/SaferCPPExpectations/UncountedCallArgsCheckerExpectations:\n* Source/WebCore/SaferCPPExpectations/NoDeleteCheckerExpectations:\n* Source/WebCore/SaferCPPExpectations/UncountedCallArgsCheckerExpectations:\n* Source/WebCore/SaferCPPExpectations/UncountedLocalVarsCheckerExpectations:\n* Source/WebKit/SaferCPPExpectations/UncountedCallArgsCheckerExpectations:\n* Source/WebKit/SaferCPPExpectations/UnretainedCallArgsCheckerExpectations:\n* Source/WebKitLegacy/SaferCPPExpectations/NoDeleteCheckerExpectations:\n\nCanonical link: https://commits.webkit.org/316930@main",
      "email": "rniwa@webkit.org",
      "hash": "1029c99e92ffa6735a57c79f0d436702f27e0e38",
      "subject": "Update safer C++ expectations for macOS"
    },
    "316931@main": {
      "author": "Elliott Williams",
      "avatar": "https://www.gravatar.com/avatar/4086acbe078d65242df929cb51298130?d=identicon\u0026s=64",
      "cl": "316931@main",
      "clUrl": "https://commits.webkit.org/316931@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=318982\nrdar://181838487\n\nUnreviewed. Reschedule the SwiftUI.crossimport copy command to run after\nWebKit, like it used to.\n\n* Source/WebKit/PlatformMac.cmake:\n\nCanonical link: https://commits.webkit.org/316931@main",
      "email": "emw@apple.com",
      "hash": "fa9edf2c78df2478a73dddb4d7662a7b1657f37a",
      "subject": "Build fix for \"[CMake][Swift] Use -import-underlying-module on Apple platforms\""
    },
    "316932@main": {
      "author": "Alan Baradlay",
      "avatar": "https://www.gravatar.com/avatar/788d66417db806c567552cfa1ae89f77?d=identicon\u0026s=64",
      "cl": "316932@main",
      "clUrl": "https://commits.webkit.org/316932@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=318465\n\nReviewed by Antti Koivisto.\n\nThe cross-axis alignment steps (adjustAlignmentForFlexItem and\nflipForRightToLeftColumn) each applied the flex item's new location to the\nrenderer as they went. Now that they compute onto item.flowAwareLocation, have\nthem just move the item, and flush every item's location to its renderer in one\npass at the end of performFlexLayout -- the legacy analog of FlexLayout::computeFlexItemRects.\n\nNo change in behavior: item.flowAwareLocation is computed exactly as before,\nonly written to the renderer later, and nothing reads the renderer's location\nbetween the alignment steps and the final flush. placeFlexItems and\nlayoutColumnReverse still apply eagerly, so the multi-line column re-layout in\ndistributeMainAxisFreeSpaceForMultilineColumnIfNeeded still sees each item at its\nplaced location.\n\n* Source/WebCore/rendering/RenderFlexibleBox.cpp:\n(WebCore::RenderFlexibleBox::performFlexLayout):\n(WebCore::RenderFlexibleBox::adjustAlignmentForFlexItem):\n(WebCore::RenderFlexibleBox::flipForRightToLeftColumn):\n\nCanonical link: https://commits.webkit.org/316932@main",
      "email": "zalan@apple.com",
      "hash": "898be46c29af657b82dab5b773edffa86e31715e",
      "subject": "[cleanup] Apply flex item cross-axis alignment in a single final pass"
    },
    "316933@main": {
      "author": "shierote",
      "avatar": "https://www.gravatar.com/avatar/82baf8deb3b5542e0c13f05bdf3c03ea?d=identicon\u0026s=64",
      "cl": "316933@main",
      "clUrl": "https://commits.webkit.org/316933@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=219735\n\nReviewed by Tim Nguyen.\n\nExpose ascent-override, descent-override, and line-gap-override through\nFontFace and CSSFontFaceDescriptors behind the existing testable feature\nflag. This is the API/storage step after parser support; metrics\napplication is intentionally left to a follow-up patch.\n\nTests: imported/w3c/web-platform-tests/css/css-font-loading/fontface-override-descriptor-getter-setter.sub.html\n       imported/w3c/web-platform-tests/css/css-font-loading/idlharness.https.html\n       imported/w3c/web-platform-tests/css/css-fonts/idlharness.html\n\n* LayoutTests/imported/w3c/web-platform-tests/css/css-font-loading/fontface-override-descriptor-getter-setter.sub-expected.txt:\nUpdate expectations for FontFace metric override descriptor getter/setter coverage.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-font-loading/idlharness.https-expected.txt:\nUpdate expectations for the newly exposed FontFace IDL attributes.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-fonts/idlharness-expected.txt:\nUpdate expectations for the newly exposed CSSFontFaceDescriptors IDL attributes.\n* Source/WebCore/css/CSSFontFace.cpp:\n(WebCore::CSSFontFace::setAscentOverride): Added.\n(WebCore::CSSFontFace::setDescentOverride): Added.\n(WebCore::CSSFontFace::setLineGapOverride): Added.\n(WebCore::CSSFontFace::ascentOverride): Added.\n(WebCore::CSSFontFace::descentOverride): Added.\n(WebCore::CSSFontFace::lineGapOverride): Added.\n* Source/WebCore/css/CSSFontFace.h:\nDeclare metric override descriptor accessors.\n* Source/WebCore/css/CSSFontFaceDescriptors.cpp:\n(WebCore::CSSFontFaceDescriptors::ascentOverride): Added.\n(WebCore::CSSFontFaceDescriptors::setAscentOverride): Added.\n(WebCore::CSSFontFaceDescriptors::descentOverride): Added.\n(WebCore::CSSFontFaceDescriptors::setDescentOverride): Added.\n(WebCore::CSSFontFaceDescriptors::lineGapOverride): Added.\n(WebCore::CSSFontFaceDescriptors::setLineGapOverride): Added.\n* Source/WebCore/css/CSSFontFaceDescriptors.h:\nDeclare metric override descriptor accessors.\n* Source/WebCore/css/CSSFontFaceDescriptors.idl:\nExpose metric override descriptors behind CSSFontFaceMetricOverrideDescriptorsEnabled.\n* Source/WebCore/css/CSSFontSelector.cpp:\n(WebCore::CSSFontSelector::addFontFaceRule): Preserve parsed metric override descriptors on CSSFontFace.\n* Source/WebCore/css/CSSProperties.json:\nExport generated parser entry points for the metric override descriptors.\n* Source/WebCore/css/FontFace.cpp:\n(WebCore::FontFace::create): Initialize metric override descriptors when the testable flag is enabled.\n(WebCore::FontFace::setAscentOverride): Added.\n(WebCore::FontFace::setDescentOverride): Added.\n(WebCore::FontFace::setLineGapOverride): Added.\n(WebCore::FontFace::ascentOverride): Added.\n(WebCore::FontFace::descentOverride): Added.\n(WebCore::FontFace::lineGapOverride): Added.\n* Source/WebCore/css/FontFace.h:\nAdd FontFace descriptor storage and accessors.\n* Source/WebCore/css/FontFace.idl:\nExpose FontFace descriptor dictionary members and attributes behind CSSFontFaceMetricOverrideDescriptorsEnabled.\n* Source/WebCore/css/parser/CSSPropertyParserConsumer+Font.cpp:\n(WebCore::CSSPropertyParserHelpers::parseFontFaceMetricOverride): Added.\n(WebCore::CSSPropertyParserHelpers::parseFontFaceAscentOverride): Added.\n(WebCore::CSSPropertyParserHelpers::parseFontFaceDescentOverride): Added.\n(WebCore::CSSPropertyParserHelpers::parseFontFaceLineGapOverride): Added.\n* Source/WebCore/css/parser/CSSPropertyParserConsumer+Font.h:\nDeclare metric override descriptor parser helpers.\n\nCanonical link: https://commits.webkit.org/316933@main",
      "email": "32413673+shierote@users.noreply.github.com",
      "hash": "db0ac8a9cb38503d756e987bddd865b0f3038fa5",
      "subject": "Expose @font-face metric override descriptors through FontFace APIs"
    },
    "316934@main": {
      "author": "Andrew Fryer",
      "avatar": "https://www.gravatar.com/avatar/693f8e74251268cad2daff9afdf907ca?d=identicon\u0026s=64",
      "cl": "316934@main",
      "clUrl": "https://commits.webkit.org/316934@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319123\nrdar://181941044\n\nReviewed by Dewei Zhu.\n\nAdd plan and patch files to run SP3 suites plus all experimental suites.\nPut all suites into query params in plan file to override only running\ndefault suites. To avoid overhead of __signpostStop + __signpostStart in\nscored time, grab another performance.now timestamp for asyncStartTime\nin the signpost patch instead of using syncEndTime.\n\nCombined changes:\n* Tools/Scripts/webkitpy/benchmark_runner/data/patches/signposts/Speedometer4.patch: Added.\n* Tools/Scripts/webkitpy/benchmark_runner/data/patches/webserver/Speedometer4.patch: Added.\n* Tools/Scripts/webkitpy/benchmark_runner/data/plans/speedometer4.plan: Added.\n\nCanonical link: https://commits.webkit.org/316934@main",
      "email": "a_fryer@apple.com",
      "hash": "3489b26dd844b8115f10e23f7d194fcd9055d6e2",
      "subject": "Add SP4 plan and patches for run-benchmark to run experimental suites"
    }
  },
  "date": "2026-07-10",
  "days": 1,
  "generatedAt": "2026-07-10T22:06:52Z",
  "markdown": "## Highlights\n- **Web Platform** `FontFace` now exposes `@font-face` metric override descriptors, making font metric inspection and adjustment scriptable. [commit 316933@main](https://commits.webkit.org/316933@main)\n- **Web Platform** `replaceChildren()` can now replace a document's children, closing a DOM behavior gap. [commit 316909@main](https://commits.webkit.org/316909@main)\n- **Networking** Speculation Rules prefetch is back on, restoring a meaningful web loading optimization path. [commit 316901@main](https://commits.webkit.org/316901@main)\n- **A11y** WebKit fixed an accessibility null dereference while rebuilding relations during node removal, cutting a real crash path. [commit 316915@main](https://commits.webkit.org/316915@main)\n- **A11y** `aria-labelledby` relations now rebuild correctly when the target arrives through `innerHTML`, fixing dynamic labeling. [commit 316913@main](https://commits.webkit.org/316913@main)\n- **Rendering** SVG transform flushing now coalesces into a single minimal repaint per container, reducing repaint churn. [commit 316880@main](https://commits.webkit.org/316880@main)\n- **V8** JavaScriptCore switched microtask calls to a polymorphic cache, a targeted runtime optimization in a hot path. [commit 316864@main](https://commits.webkit.org/316864@main)\n- **Media** iOS media elements now reflect play, rate, and volume changes coming from `MediaDeviceRoute`, fixing remote playback state drift. [commit 316924@main](https://commits.webkit.org/316924@main)\n- **Security** Certificate info is now sourced from the network process instead of web content, tightening process boundaries around connection metadata. [commit 316854@main](https://commits.webkit.org/316854@main)\n- **GPU** WebXR rendering on Android was fixed after a regression where nothing rendered at all. [commit 316903@main](https://commits.webkit.org/316903@main)\n\n## What landed by area\n\n### Layout and Rendering\n- **Rendering** Flex cross-axis alignment now runs in a single final pass, simplifying layout flow and reducing phase churn. [commit 316932@main](https://commits.webkit.org/316932@main)\n- **Refactor** Right-to-left column flipping is now routed through flex items instead of the renderer. [commit 316921@main](https://commits.webkit.org/316921@main)\n- **Refactor** Cross-axis alignment logic is now routed through flex items instead of the renderer. [commit 316905@main](https://commits.webkit.org/316905@main)\n- **Refactor** Flex cross-axis alignment phases were renamed to match `FlexLayout::layout`, making the pipeline easier to follow. [commit 316894@main](https://commits.webkit.org/316894@main)\n- **Refactor** Flex item stretch handling is now split from cross-axis alignment, cleaning up layout responsibilities. [commit 316892@main](https://commits.webkit.org/316892@main)\n- **Refactor** Grid layout now returns a dedicated result type instead of overloading existing plumbing. [commit 316911@main](https://commits.webkit.org/316911@main)\n- **Rendering** CSS `attr()` taint now propagates through `if()` conditions, tightening css-values-5 behavior. [commit 316878@main](https://commits.webkit.org/316878@main)\n- **Rendering** Evaluation-time zoom conversion finished for the remaining trivial convert properties. [commit 316863@main](https://commits.webkit.org/316863@main)\n\n### DOM, CSS, and Web Platform APIs\n- **Web Platform** HTML heading support gained `headingoffset` and `headingreset` attributes. [commit 316885@main](https://commits.webkit.org/316885@main)\n- **Web Platform** `DOMAsyncIterator` no longer stores `callNext` and `callReturn` in the same member, fixing callback bookkeeping. [commit 316874@main](https://commits.webkit.org/316874@main)\n- **Rendering** Math layout data now marks U+2016 DOUBLE VERTICAL LINE as symmetric in the operator dictionary. [commit 316867@main](https://commits.webkit.org/316867@main)\n\n### Accessibility and Text\n- **A11y** Video caption cues are now included in Find-in-Page navigation on iOS, making timed text discoverable. [commit 316858@main](https://commits.webkit.org/316858@main)\n- **UI** Manual Writing Tools invocation no longer shows Always On Proofreading results, avoiding mixed-result UI. [commit 316927@main](https://commits.webkit.org/316927@main)\n\n### Media, WebRTC, and Realtime\n- **Media** VideoToolbox encoders now check `kCMSampleAttachmentKey_NotSync` when present, improving sync-frame handling. [commit 316889@main](https://commits.webkit.org/316889@main)\n- **Media** PiP on Netflix episode-to-episode navigation was fixed, removing a real site compatibility break. [commit 316876@main](https://commits.webkit.org/316876@main)\n- **Networking** TURN server URL validation got stricter, hardening WebRTC configuration handling. [commit 316873@main](https://commits.webkit.org/316873@main)\n- **Web Platform** `RTCPeerConnection.getStats()` now rejects selectors reused across multiple senders or receivers, aligning behavior with spec intent. [commit 316872@main](https://commits.webkit.org/316872@main)\n- **Refactor** `MediaFragmentURIParser` dropped two dead branches in `parseNPTTime`. [commit 316859@main](https://commits.webkit.org/316859@main)\n- **Web Platform** WebTransport WPTs were re-imported, expanding standards coverage for the feature. [commit 316860@main](https://commits.webkit.org/316860@main)\n\n### JavaScriptCore and Engine Internals\n- **V8** JavaScriptCore fixed `Temporal.\u003cType\u003e.prototype.constructor` before first access, plugging an initialization bug. [commit 316898@main](https://commits.webkit.org/316898@main)\n- **V8** A GLib regression that made a JSC stress test hang was fixed. [commit 316902@main](https://commits.webkit.org/316902@main)\n- **Refactor** `WTF::HashMap` count incrementing was simplified by removing a redundant `isNewEntry` check. [commit 316895@main](https://commits.webkit.org/316895@main)\n\n### Graphics, SVG, GPU, and XR\n- **GPU** WebGPU dropped an unused `WebGPUTextureDescriptor.h` include from `WebGPUPresentationContextImpl`. [commit 316917@main](https://commits.webkit.org/316917@main)\n- **Rendering** SVG text layout dropped a dead `downcast\u003cSVGElement\u003e` in `layoutTextOnLineOrPath`. [commit 316918@main](https://commits.webkit.org/316918@main)\n- **Rendering** SVG text positioning removed redundant `x` and `y` presentation-hint overrides. [commit 316906@main](https://commits.webkit.org/316906@main)\n- **GPU** Coordinated Graphics with Skia no longer keeps code around to render layers on the main thread. [commit 316869@main](https://commits.webkit.org/316869@main)\n- **GPU** The WPE Skia compositor now uses `std::optional` for `GrDeferredDisplayListRecorder` in `CoordinatedTileBuffer`. [commit 316888@main](https://commits.webkit.org/316888@main)\n- **GPU** The WPE Skia compositor now disables a bug where `GL_BLEND` stayed enabled for opaque layers. [commit 316881@main](https://commits.webkit.org/316881@main)\n- **GPU** Older OpenXR SDK support on RPi4 was repaired after a build regression. [commit 316877@main](https://commits.webkit.org/316877@main)\n\n### Security, Process Boundaries, and Safer C++\n- **Security** WebAuthn now null-checks `m_pendingRequest` before dereferencing it in PIN callbacks, closing a crash edge case. [commit 316914@main](https://commits.webkit.org/316914@main)\n- **Build** Safer C++ expectations were updated for macOS as rollout work continued. [commit 316930@main](https://commits.webkit.org/316930@main) [bug 319124](https://bugs.webkit.org/show_bug.cgi?id=319124)\n- **Build** Safer C++ expectations were updated for iOS as well. [commit 316908@main](https://commits.webkit.org/316908@main) [bug 319103](https://bugs.webkit.org/show_bug.cgi?id=319103)\n- **Build** Safer C++ follow-up work fixed tests after the earlier landing. [commit 316910@main](https://commits.webkit.org/316910@main)\n- **Build** Additional macOS build fallout after the safer C++ landing got a speculative fix. [commit 316907@main](https://commits.webkit.org/316907@main)\n- **Build** Safety invariants and FIXMEs were documented in a follow-up to the safer C++ series. [commit 316865@main](https://commits.webkit.org/316865@main)\n- **Build** A safer C++ regression that broke builds was fixed. [commit 316861@main](https://commits.webkit.org/316861@main)\n\n### WebKit API, UI, and Apple Platform Behavior\n- **UI** `_doAfterNextPresentationUpdate` no longer hangs forever when a view uses `_relatedWebView`. [commit 316919@main](https://commits.webkit.org/316919@main)\n- **UI** Same-document JS navigation got another early return in `WebPageProxy`, tightening state handling. [commit 316899@main](https://commits.webkit.org/316899@main)\n- **UI** Going back to a page with a previously active web environment no longer leaves UI stuck showing an active state. [commit 316891@main](https://commits.webkit.org/316891@main)\n- **Mobile** Swift interop sources gained an IPC tester. [commit 316875@main](https://commits.webkit.org/316875@main)\n\n### Tooling, Benchmarks, and Infra\n- **Perf** `run-benchmark` gained an SP4 plan and patches to run experimental suites. [commit 316934@main](https://commits.webkit.org/316934@main) [bug 319123](https://bugs.webkit.org/show_bug.cgi?id=319123)\n- **Perf** `run-benchmark` now exposes the diagnose directory to browser drivers via benchmark config. [commit 316912@main](https://commits.webkit.org/316912@main) [bug 319015](https://bugs.webkit.org/show_bug.cgi?id=319015)\n- **Build** `WK_ENABLE_SLOW_BUILD_VERIFICATION` landed for slow build verification in CI and production builds. [commit 316928@main](https://commits.webkit.org/316928@main) [bug 313288](https://bugs.webkit.org/show_bug.cgi?id=313288)\n- **Build** Apple-platform CMake Swift builds got a fix for `-import-underlying-module`. [commit 316931@main](https://commits.webkit.org/316931@main) [bug 318982](https://bugs.webkit.org/show_bug.cgi?id=318982)\n- **Build** `webkitscmpy` now treats `webkitglib/N.N` stable branches as production branches. [commit 316929@main](https://commits.webkit.org/316929@main) [bug 318621](https://bugs.webkit.org/show_bug.cgi?id=318621)\n- **Build** EWS status-bubble tooltips now show a better message when exceptions happen. [commit 316886@main](https://commits.webkit.org/316886@main) [bug 318981](https://bugs.webkit.org/show_bug.cgi?id=318981)\n- **Build** Last-built tree selection on Mac now has sanitizer-aware tie-breaking, reducing wrong-tree picks. [commit 316853@main](https://commits.webkit.org/316853@main) [bug 319001](https://bugs.webkit.org/show_bug.cgi?id=319001)\n- **Build** Scripts using local build products can now auto-pick the last-built tree on Mac and accept `--xcode`. [commit 316853@main](https://commits.webkit.org/316853@main) [bug 315146](https://bugs.webkit.org/show_bug.cgi?id=315146)\n- **DevTools** PrettyPatch now handles git binary image diffs better. [commit 316862@main](https://commits.webkit.org/316862@main) [bug 317706](https://bugs.webkit.org/show_bug.cgi?id=317706)\n- **Build** CachedMatchFinder gained new unit tests. [commit 316920@main](https://commits.webkit.org/316920@main) [bug 318287](https://bugs.webkit.org/show_bug.cgi?id=318287)\n\n### Ports, Platform Fixes, and Test Gardening\n- **Mobile** iOS keyboard-related test timeouts were addressed. [commit 316922@main](https://commits.webkit.org/316922@main)\n- **Build** Windows build breakage was fixed. [commit 316896@main](https://commits.webkit.org/316896@main)\n- **Build** A speculative Windows build fix landed after 316781. [commit 316884@main](https://commits.webkit.org/316884@main) [bug 319085](https://bugs.webkit.org/show_bug.cgi?id=319085)\n- **Build** A Windows regression in `GeometryUtilities` caused by `std::atan2` was fixed. [commit 316882@main](https://commits.webkit.org/316882@main) [bug 319084](https://bugs.webkit.org/show_bug.cgi?id=319084)\n- **Build** WPE builds were fixed when `WPE_PLATFORM` is off. [commit 316893@main](https://commits.webkit.org/316893@main) [bug 319095](https://bugs.webkit.org/show_bug.cgi?id=319095)\n- **Build** WPE cross-toolchain helper was fixed after the `poky` repository path changed. [commit 316883@main](https://commits.webkit.org/316883@main) [bug 319082](https://bugs.webkit.org/show_bug.cgi?id=319082)\n- **Build** WPE environment variable docs were updated after the `WPE_DMABUF_BUFFER_FORMAT` rename. [commit 316887@main](https://commits.webkit.org/316887@main) [bug 319090](https://bugs.webkit.org/show_bug.cgi?id=319090)\n- **Build** GTK and WPE test gardening landed for the day. [commit 316879@main](https://commits.webkit.org/316879@main) [bug 319080](https://bugs.webkit.org/show_bug.cgi?id=319080)\n- **Build** GStreamer gardening landed to stabilize media-related coverage on that stack. [commit 316904@main](https://commits.webkit.org/316904@main) [bug 319101](https://bugs.webkit.org/show_bug.cgi?id=319101)\n- **Build** Windows layout test gardening also landed. [commit 316900@main](https://commits.webkit.org/316900@main)\n- **Build** A flaky `webkitcorepy` mutually exclusive group hang test was addressed. [commit 316871@main](https://commits.webkit.org/316871@main) [bug 319041](https://bugs.webkit.org/show_bug.cgi?id=319041)\n- **Build** A non-Cocoa `determineIsCMakeBuildXcode.pl` regression was fixed. [commit 316868@main](https://commits.webkit.org/316868@main) [bug 319037](https://bugs.webkit.org/show_bug.cgi?id=319037)\n- **Build** Cookie store API test flakiness on iOS was cleaned up. [commit 316857@main](https://commits.webkit.org/316857@main) [bug 319000](https://bugs.webkit.org/show_bug.cgi?id=319000)\n- **Build** Media source layout-test timeout gardening landed. [commit 316923@main](https://commits.webkit.org/316923@main) [bug 319018](https://bugs.webkit.org/show_bug.cgi?id=319018)\n- **Build** A macOS release image diff regression in a backdrop-filter WPT was gardened. [commit 316926@main](https://commits.webkit.org/316926@main) [bug 319121](https://bugs.webkit.org/show_bug.cgi?id=319121)\n- **Build** The `fast/mediastream/microphone-interruption-and-audio-session.html` constant text failure was investigated and gardened twice. [commit 316890@main](https://commits.webkit.org/316890@main) [bug 319086](https://bugs.webkit.org/show_bug.cgi?id=319086)\n- **Build** The same mediastream regression got a follow-up gardening fix on macOS. [commit 316855@main](https://commits.webkit.org/316855@main) [bug 319003](https://bugs.webkit.org/show_bug.cgi?id=319003)\n\n## Reverts \u0026 Reapplies\n\n- **Build** No explicit revert, reapply, or backed out commits landed in this slice.",
  "repo": "webkit",
  "repoDisplay": "WebKit",
  "rollGroups": [
    {
      "name": "Unreviewed",
      "count": 2
    }
  ],
  "since": "2026-07-10",
  "totals": {
    "commits": 82,
    "features": 80,
    "rolls": 2
  },
  "until": "2026-07-10"
}