{
  "commits": {
    "300189@main": {
      "author": "Wenson Hsieh",
      "avatar": "https://www.gravatar.com/avatar/c8fba82556fd4988c78bd3a0aee2a44e?d=identicon\u0026s=64",
      "cl": "300189@main",
      "clUrl": "https://commits.webkit.org/300189@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319423\nrdar://176590191\n\nReviewed by Abrar Rahman Protyasha.\n\nWhen copying content that includes cross-origin subframes, content in those subframes is missing\nupon pasting into native apps like TextEdit or Notes, which attempt to read `NSAttributedString`s\nfrom the pasteboard.\n\nWhile there's an existing solution added in https://commits.webkit.org/300189@main to ensure that\nweb archives capture cross-origin content under site isolation, there's currently no similar\narchitecture in place for attributed strings, which means we currently just skip over content in\ncross-origin subframes.\n\nTo fix this, we apply the same approach taken in 300189@main to attributed string conversion; see\ncomments below for more details.\n\nTest: SiteIsolation.ReadAttributedStringFromPasteboardAfterCopyWithCrossSiteIframe\n\n* Source/WebCore/editing/cocoa/EditorCocoa.mm:\n(WebCore::selectionAsAttributedString):\n\nAdd a `remoteFrameContent` argument here, that represents `AttributedString`s collected from remote\nframes.\n\n(WebCore::populateRichTextDataIfNeeded):\n\nWhen serializing attributed strings, collect all remote frame IDs that represent frames where we\nneed to recursively convert into attributed strings.\n\n(WebCore::Editor::writeSelectionToPasteboard):\n* Source/WebCore/editing/cocoa/NodeHTMLConverter.h:\n(WebCore::attributedString):\n* Source/WebCore/editing/cocoa/NodeHTMLConverter.mm:\n(HTMLConverter::HTMLConverter):\n(HTMLConverter::_processElement):\n\nSlot in attributed strings collected from remote subframes.\n\n(WebCore::attributedString):\n* Source/WebCore/page/EditorClient.h:\n* Source/WebKit/UIProcess/Cocoa/WebPageProxyCocoa.mm:\n(WebKit::WebPageProxy::getAttributedStringsForRemoteFrames):\n* Source/WebKit/UIProcess/WebPageProxy.h:\n* Source/WebKit/UIProcess/WebPageProxy.messages.in:\n* Source/WebKit/WebProcess/WebCoreSupport/WebEditorClient.cpp:\n(WebKit::WebEditorClient::collectAttributedStringsForRemoteFrames):\n\nAdd a new client hook that takes a list of remote frame IDs, and calls into the UI process to fan\nout to all remote frames and convert their content into attributed strings.\n\n* Source/WebKit/WebProcess/WebCoreSupport/WebEditorClient.h:\n* Source/WebKit/WebProcess/WebPage/Cocoa/WebPageCocoa.mm:\n(WebKit::WebPage::getAttributedStringsForRemoteFrames):\n(WebKit::WebPage::getContentsAsAttributedStringForFrames):\n* Source/WebKit/WebProcess/WebPage/WebPage.h:\n* Source/WebKit/WebProcess/WebPage/WebPage.messages.in:\n* Tools/TestWebKitAPI/Tests/WebKit/WKWebView/SiteIsolation.mm:\n(TestWebKitAPI::(SiteIsolation, ReadAttributedStringFromPasteboardAfterCopyWithCrossSiteIframe)):\n\nAdd an API test to exercise the fix.\n\nCanonical link: https://commits.webkit.org/317283@main",
      "email": "wenson_hsieh@apple.com",
      "hash": "2b157dbbd4053751d8fcf196f2056a7e66e71697",
      "subject": "[Site Isolation] Content in cross-origin subframes is missing when copying and pasting"
    },
    "317272@main": {
      "author": "Chris Dumez",
      "avatar": "https://www.gravatar.com/avatar/a9f21fe3a8baf79b45f3c91572187bdc?d=identicon\u0026s=64",
      "cl": "317272@main",
      "clUrl": "https://commits.webkit.org/317272@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=196596\nrdar://49631053\n\nReviewed by Nikolas Zimmermann.\n\nWhen several SMIL animations target the same element/attribute (a \"sandwich\"),\nSMILTimeContainer::updateAnimations() sorts them by priority and applies their results in that\norder, so the highest-priority (latest begin time) animation wins. The priority sort ran before\neach animation's progress() advanced its current interval to the current time. An animation whose\ninterval only restarts at (or before) the current time — e.g. a sync-base dependent that just\ngained a new, later begin time — was therefore sorted using its stale, earlier interval begin,\nlost the sandwich to a lower-priority animation, and its result was overwritten. This is why, after\ntoggling minimize/maximize twice, the element failed to re-appear.\n\nFix this by resolving every scheduled animation's current interval (and active state) up front, in\na new updateIntervalForProgress() pass that runs before the priority sort, and having progress()\napply the value and fire events against that already-resolved state. progress() is now driven by a\nProgressDisposition recorded during that pass, which preserves each of the original early-outs via\ntwo dispositions: NotContributing (an unresolved interval, or a seek landing before the interval)\nand BeforeInterval (an interval not yet begun). The remaining Resolved disposition still fires\nbegin/end events for an interval that ends into a frozen state mid-frame.\n\nThe animation percent is now computed in progress(), after the interval has been resolved, rather\nthan before checkRestart(). Previously, on the frame an interval restarted, the percent was\ncomputed against the just-ended interval (clamping to 1, i.e. the destination value), so the\nrestarting animation briefly painted its end value for one frame before correcting. Computing the\npercent against the resolved interval yields ~0 (the interval's start) on that frame.\n\nTests: imported/w3c/web-platform-tests/svg/animations/syncbases-with-tangled-dependencies.html\n       svg/animations/restarted-interval-does-not-flash-end-value.html\n\n* LayoutTests/imported/w3c/web-platform-tests/svg/animations/scripted/onhover-syncbases-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/svg/animations/syncbases-with-tangled-dependencies-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/svg/animations/syncbases-with-tangled-dependencies.html: Added.\n* LayoutTests/svg/animations/restarted-interval-does-not-flash-end-value-expected.txt: Added.\n* LayoutTests/svg/animations/restarted-interval-does-not-flash-end-value.html: Added.\n* Source/WebCore/svg/animation/SMILTimeContainer.cpp:\n(WebCore::SMILTimeContainer::updateAnimations):\n* Source/WebCore/svg/animation/SVGSMILElement.cpp:\n(WebCore::SVGSMILElement::reset):\n(WebCore::SVGSMILElement::checkRestart):\n(WebCore::SVGSMILElement::updateIntervalForProgress):\n(WebCore::SVGSMILElement::progress):\n* Source/WebCore/svg/animation/SVGSMILElement.h:\n\nCanonical link: https://commits.webkit.org/317272@main",
      "email": "cdumez@apple.com",
      "hash": "1e92d3b75ea2374dd1343c066f82dbe719d80bec",
      "subject": "After two runs of a SMIL SVG animation, an SVG item doesn't re-appear"
    },
    "317273@main": {
      "author": "Chris Dumez",
      "avatar": "https://www.gravatar.com/avatar/a9f21fe3a8baf79b45f3c91572187bdc?d=identicon\u0026s=64",
      "cl": "317273@main",
      "clUrl": "https://commits.webkit.org/317273@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319474\n\nReviewed by Anne van Kesteren.\n\nIn 310593@main, constructTree() was updated to use the adjusted current node\n(instead of the current node) for the integration point checks that compute the\ntokenizer's shouldAllowCDATA and forceNullCharacterReplacement flags. That change\ncorrectly fixed a normal-vs-fragment-parsing inconsistency, but it preserved a\nlong-standing deviation from the specification: it kept both flags coupled to a\nsingle \"in foreign content\" condition that excludes integration points.\n\nPer the tokenizer's \"markup declaration open state\"\n(https://html.spec.whatwg.org/multipage/parsing.html#markup-declaration-open-state),\nCDATA sections are switched into whenever \"there is an adjusted current node and\nit is not an element in the HTML namespace\". Integration points are NOT a\nconsideration there. Since integration points (MathML mi/mo/mn/ms/mtext and SVG\nforeignObject/desc/title) are themselves in the MathML/SVG namespace, CDATA\nsections should be allowed when the adjusted current node is an integration\npoint. This matches Firefox and Edge; Chrome and shipping Safari incorrectly\ndisallow CDATA there due to shared WebKit heritage. See the discussion in\nwhatwg/html#4016 (https://github.com/whatwg/html/issues/4016), where the spec was\nconfirmed to intentionally key only off the adjusted current node's namespace.\n\nThe forceNullCharacterReplacement flag is different: it follows the tree\nconstruction dispatcher's notion of foreign content\n(https://html.spec.whatwg.org/multipage/parsing.html#tree-construction), which\ntreats integration points as HTML content and thus must continue to exclude them.\n\nThis patch decouples the two flags so each matches its respective specification:\nshouldAllowCDATA now depends only on whether the adjusted current node is in a\nnon-HTML namespace, while forceNullCharacterReplacement retains the integration\npoint exclusions.\n\nThe web platform test added in 310593@main asserted the previous (incorrect)\nbehavior and failed in spec-compliant Firefox; it has been updated to assert that\nCDATA is allowed at integration points, with an HTML context element added as a\ncontrol for the disallowed case.\n\nNo new tests, updated existing test.\n\n* LayoutTests/imported/w3c/web-platform-tests/html/syntax/parsing/cdata-in-integration-point-fragment-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/html/syntax/parsing/cdata-in-integration-point-fragment.html:\n* Source/WebCore/html/parser/HTMLTreeBuilder.cpp:\n(WebCore::HTMLTreeBuilder::constructTree):\n\nCanonical link: https://commits.webkit.org/317273@main",
      "email": "cdumez@apple.com",
      "hash": "e4bf39e5584a482937da4019d5e7bc7a15822580",
      "subject": "CDATA sections should be allowed at integration points during fragment parsing"
    },
    "317274@main": {
      "author": "Chris Dumez",
      "avatar": "https://www.gravatar.com/avatar/a9f21fe3a8baf79b45f3c91572187bdc?d=identicon\u0026s=64",
      "cl": "317274@main",
      "clUrl": "https://commits.webkit.org/317274@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319407\nrdar://182233814\n\nReviewed by Abrar Rahman Protyasha and Aditya Keerthi.\n\nThe ViewScaleFactorAfterShrinkToFit test added in 314774@main is flaky and\nfails on some bots with \"Expected: ([webView _viewScale]) \u003c (1.0), actual:\n1 vs 1\", meaning the cached view scale was still the default 1.0 when\nchecked.\n\nThe test used a single JavaScript round-trip (document.body.clientWidth) as\nan indirect signal that the WebProcess-side auto-scale had completed and\nbeen reported to the UIProcess. However, that sequence is asynchronous with\nrespect to navigation and JavaScript execution: the WebProcess scales the\nview during a compositing flush (DrawingArea::scaleViewToFitDocumentIfNeeded)\nand only then sends ViewScaleFactorDidChange back to the UIProcess. Since the\nIPC is not ordered against the JavaScript reply, on some bots [webView\n_viewScale] was read before the scale factor update arrived.\n\nPoll the actual condition under test with Util::waitFor() instead of relying\non an unrelated round-trip as a proxy for completion.\n\n* Tools/TestWebKitAPI/Tests/WebKit/WKWebView/ShrinkToFit.mm:\n(TEST(WebKit, ViewScaleFactorAfterShrinkToFit)):\n\nCanonical link: https://commits.webkit.org/317274@main",
      "email": "cdumez@apple.com",
      "hash": "2e0ec50936e2c9a299cc9383043d06425d61ac1a",
      "subject": "[macOS] TestWebKitAPI.WebKit.ViewScaleFactorAfterShrinkToFit is constant failure on safari-7625-branch"
    },
    "317275@main": {
      "author": "Marcos Caceres",
      "avatar": "https://www.gravatar.com/avatar/d31c9c6a3b0af558a2945682020e5b90?d=identicon\u0026s=64",
      "cl": "317275@main",
      "clUrl": "https://commits.webkit.org/317275@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=318947\n\nReviewed by Anne van Kesteren.\n\nReject navigator.credentials.get({ digital }) with a SecurityError when the\ncalling document has an opaque origin, implementing the restriction from\nhttps://github.com/w3c-fedid/digital-credentials/pull/535.\n\nWeb platform tests: https://github.com/web-platform-tests/wpt/pull/61188\n\n* LayoutTests/imported/w3c/web-platform-tests/digital-credentials/get-opaque-origin-combinations.https-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/digital-credentials/get-opaque-origin-combinations.https.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/digital-credentials/get-opaque-origin-top-level-allow-same-origin.https-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/digital-credentials/get-opaque-origin-top-level-allow-same-origin.https.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/digital-credentials/get-opaque-origin-top-level-allow-same-origin.https.html.headers: Added.\n* LayoutTests/imported/w3c/web-platform-tests/digital-credentials/get-opaque-origin-top-level.https-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/digital-credentials/get-opaque-origin-top-level.https.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/digital-credentials/get-opaque-origin-top-level.https.html.headers: Added.\n* LayoutTests/imported/w3c/web-platform-tests/digital-credentials/support/dc-nest.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/digital-credentials/support/dc-report-get-blob-in-sandbox.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/digital-credentials/support/dc-report-get-csp-sandbox.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/digital-credentials/support/dc-report-get-csp-sandbox.html.headers: Added.\n* LayoutTests/imported/w3c/web-platform-tests/digital-credentials/support/dc-report-get.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/digital-credentials/support/dc-report-get.js: Added.\n(async const):\n(catch):\n* Source/WebCore/Modules/identity/DigitalCredential.cpp:\n(WebCore::DigitalCredential::discoverFromExternalSource):\n* LayoutTests/imported/w3c/web-platform-tests/digital-credentials/support/dc-nest-csp-sandbox.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/digital-credentials/support/dc-nest-csp-sandbox.html.headers: Added.\n\nCanonical link: https://commits.webkit.org/317275@main",
      "email": "marcosc@apple.com",
      "hash": "5da0c4f201f52aad8e9afd76a3acdf6ed66e5039",
      "subject": "Digital Credentials: reject get() from opaque origins"
    },
    "317276@main": {
      "author": "Marcos Caceres",
      "avatar": "https://www.gravatar.com/avatar/d31c9c6a3b0af558a2945682020e5b90?d=identicon\u0026s=64",
      "cl": "317276@main",
      "clUrl": "https://commits.webkit.org/317276@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=314382\nrdar://176536555\n\nReviewed by Anne van Kesteren.\n\nPer the Digital Credentials spec's \"prepare credential requests\" algorithm, if the\nvalidated requests list is empty (all requests filtered out during validation),\nreject with a TypeError before presenting the picker. Implement this guard in\nCredentialRequestCoordinator::prepareCredentialRequests, immediately after the\nvalidation step, matching the spec rather than guarding at the WebProcess boundary.\n\nTest: http/tests/digital-credentials/digital-credential-all-invalid-requests.https.html\n\n* LayoutTests/http/tests/digital-credentials/digital-credential-all-invalid-requests.https-expected.txt: Added.\n* LayoutTests/http/tests/digital-credentials/digital-credential-all-invalid-requests.https.html: Added.\n* Source/WebCore/Modules/identity/CredentialRequestCoordinator.cpp:\n(WebCore::CredentialRequestCoordinator::prepareCredentialRequests):\n* LayoutTests/http/wpt/identity/formats/ISO18013/mixed-requests.https-expected.txt:\n* LayoutTests/http/wpt/identity/formats/ISO18013/mixed-requests.https.html:\n\nCanonical link: https://commits.webkit.org/317276@main",
      "email": "marcosc@apple.com",
      "hash": "fa01ab0b2a9ca21b9a8228e9da5bf3d58d9283f7",
      "subject": "Digital Credentials: Missing empty-vector guard after request validation allows empty picker presentation"
    },
    "317277@main": {
      "author": "Sihui Liu",
      "avatar": "https://www.gravatar.com/avatar/fea095a2fb34b599fa6e7d581666903b?d=identicon\u0026s=64",
      "cl": "317277@main",
      "clUrl": "https://commits.webkit.org/317277@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319448\nrdar://182258579\n\nReviewed by Alexey Proskuryakov.\n\nTestWebKitAPI.NetworkProcess.TerminateWhenNoDefaultWebsiteDataStore hits this assertion on debug builds. The test calls\n[WKWebsiteDataStore _deleteDefaultDataStoreForTesting] to release the last strong reference to the default\nWebsiteDataStore, which runs WebsiteDataStore::~WebsiteDataStore() and unconditionally sends DestroySession for whatever\nsessionID that WebsiteDataStore had, including the default one, to NetworkProcess.\n\nThis assertion was added in 205434@main, before _deleteDefaultDataStoreForTesting was repurposed by 251983@main to also\nexercise NetworkProcess's session/process lifetime logic. At the time the assertion was introduced, the default\nWebsiteDataStore held the last reference to NetworkProcessProxy for the whole lifetime of the process, so\ndestroySession() was never expected to run for the default session on Cocoa. That assumption no longer holds: it is\nlegitimate for the default session to be destroyed while NetworkProcessProxy stays alive, since all WebsiteDataStores\n(default, ephemeral, custom persistent) share a single NetworkProcessProxy on Cocoa, so destroying the default session\ndoes not necessarily mean the process is going away.\n\ndestroySession()'s cleanup itself (removing the session from m_networkSessions and m_networkStorageSessions) has no\nspecial dependency on the sessionID not being the default one, so removing the assertion does not change behavior for\nany port; it only stops a stale invariant from firing on a legitimate code path.\n\n* Source/WebKit/NetworkProcess/NetworkProcess.cpp:\n(WebKit::NetworkProcess::destroySession):\n\nCanonical link: https://commits.webkit.org/317277@main",
      "email": "sihui_liu@apple.com",
      "hash": "7461d46a642d423be04d82011c5c548322024672",
      "subject": "Remove stale assertion in NetworkProcess::destroySession"
    },
    "317278@main": {
      "author": "Alan Baradlay",
      "avatar": "https://www.gravatar.com/avatar/788d66417db806c567552cfa1ae89f77?d=identicon\u0026s=64",
      "cl": "317278@main",
      "clUrl": "https://commits.webkit.org/317278@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=318611\n\nReviewed by Antti Koivisto.\n\nFlexLayout computed the flex container's main-axis available space itself: contentBoxLogicalWidth\nfor row flow, and for column flow the specified logical height via computeLogicalHeight (clearing\nand restoring the flex-basis override so it sees the specified height rather than the parent\nflex's sizing). That is a container property, and unlike the cross size (which grows as lines\nstack) it is fixed before the algorithm runs, so FlexLayout should be handed it rather than reach\nback into the container for it.\n\nMove the computation to RenderFlexibleBox and snapshot the result into FlexLayoutConstraints\nalongside the flow flags and border/padding; FlexLayout reads m_constraints.mainAxisAvailableSpace\nwhen collecting lines. flexLayoutConstraints() becomes non-const because the column path mutates\nthe container's override while reading its specified height.\n\nNo change in behavior: the value is computed the same way and does not depend on item layout, so\ncomputing it up front (before the flex-base sizing pass) rather than during line collection yields\nthe same result.\n\n* Source/WebCore/rendering/RenderFlexLayout.cpp:\n* Source/WebCore/rendering/RenderFlexLayout.h:\n* Source/WebCore/rendering/RenderFlexibleBox.cpp:\n* Source/WebCore/rendering/RenderFlexibleBox.h:\n\nCanonical link: https://commits.webkit.org/317278@main",
      "email": "zalan@apple.com",
      "hash": "f12ce46ea2dd37e4bcd2e8e2d93980fa6a8c228a",
      "subject": "[cleanup] Pass the flex container's main-axis available space into FlexLayout as a constraint"
    },
    "317279@main": {
      "author": "Richard Robinson",
      "avatar": "https://www.gravatar.com/avatar/a0d2f862985ed0fd47887be66f5a3e4f?d=identicon\u0026s=64",
      "cl": "317279@main",
      "clUrl": "https://commits.webkit.org/317279@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319470\nrdar://182278712\n\nReviewed by Abrar Rahman Protyasha.\n\nThis makes things a lot more organized.\n\n* Source/WebKit/SourcesCocoa.txt:\n* Source/WebKit/UIProcess/mac/PositionInformationManager.cpp: Added.\n(WebKit::PositionInformationManager::PositionInformationManager):\n(WebKit::PositionInformationManager::~PositionInformationManager):\n(WebKit::PositionInformationManager::doAfterUpdate):\n(WebKit::PositionInformationManager::didChange):\n(WebKit::PositionInformationManager::invalidate):\n(WebKit::PositionInformationManager::reset):\n(WebKit::PositionInformationManager::abandonOutstandingRequest):\n(WebKit::PositionInformationManager::requestUpdate):\n(WebKit::PositionInformationManager::currentIsValid const):\n(WebKit::PositionInformationManager::currentIsApproximatelyValid const):\n(WebKit::PositionInformationManager::hasValidOutstandingRequest const):\n(WebKit::PositionInformationManager::invokeAndRemovePendingHandlers):\n* Source/WebKit/UIProcess/mac/PositionInformationManager.h: Added.\n(WebKit::PositionInformationManager::hasValidCurrentInformation const):\n(WebKit::PositionInformationManager::currentInformation const):\n* Source/WebKit/UIProcess/mac/WKAppKitGestureController.mm:\n(-[WKAppKitGestureController initWithPage:viewImpl:]):\n(-[WKAppKitGestureController deferringGestureRecognizer:shouldDeferGesturesForEventThatWillBeginAction:]):\n(-[WKAppKitGestureController deferringGestureRecognizer:didEndActionWithEvent:]):\n(-[WKAppKitGestureController didCommitLoadForMainFrame]):\n(-[WKAppKitGestureController positionInformationDidChange:]):\n(-[WKAppKitGestureController _secondaryClickShouldBeginAtLocation:]):\n(-[WKAppKitGestureController _positionInformationRequestIsValidAtLocation:withRadius:]):\n(-[WKAppKitGestureController _dragPressShouldBeginAtLocation:]):\n(-[WKAppKitGestureController _panShouldBeginAtLocation:]):\n(-[WKAppKitGestureController reset]):\n(-[WKAppKitGestureController _invalidateCurrentPositionInformation]): Deleted.\n(-[WKAppKitGestureController requestAsynchronousPositionInformationUpdate:]): Deleted.\n(-[WKAppKitGestureController doAfterPositionInformationUpdate:forRequest:]): Deleted.\n(-[WKAppKitGestureController _currentPositionInformationIsValidForRequest:]): Deleted.\n(-[WKAppKitGestureController _hasValidOutstandingPositionInformationRequest:]): Deleted.\n(-[WKAppKitGestureController _invokeAndRemovePendingHandlersValidForCurrentPositionInformation]): Deleted.\n* Source/WebKit/WebKit.xcodeproj/project.pbxproj:\n\nCanonical link: https://commits.webkit.org/317279@main",
      "email": "richard_robinson2@apple.com",
      "hash": "cb7a261712e72393e153e80f34fb5828885610e3",
      "subject": "[AppKit Gestures] Refactor position information controlling logic out of WKAppKitGestureController"
    },
    "317280@main": {
      "author": "Carlos Alberto Lopez Perez",
      "avatar": "https://www.gravatar.com/avatar/05326c1dbe06f486e884975e73f25179?d=identicon\u0026s=64",
      "cl": "317280@main",
      "clUrl": "https://commits.webkit.org/317280@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319511\n\nReviewed by Adrian Perez de Castro.\n\nWhen executing the script run-benchmark outside of the container SDK but with\nthe auto-entering mechanism enabled it happens that the script first sets a\ntemporal random homedir and then calls run-minibrowser script. Then the script\nrun-minibrowser tries to auto-enter into the container, but since it has been\nstarted with a temporal random empty home it can't find the podman image, so\nit has to re-download again the huge image on a temporal dir. And it has to\ndo that anytime is invoked because the homedir changes from one invocation\nto the next one.\n\nTo avoid this problem we can auto-enter into the container in run-benchmark\nbefore executing the script run-minibrowser. But we should do this only when\nthe browser to run is minibrowser-gtk or minibrowser-wpe. Otherwise we would be\nentering into the container to execute browsers like chrome or firefox which\nare not available in the container SDK.\n\n* Tools/Scripts/webkitpy/benchmark_runner/run_benchmark.py:\n(start):\n\nCanonical link: https://commits.webkit.org/317280@main",
      "email": "clopez@igalia.com",
      "hash": "47787efa0f7b00c022835d1ed3f03e70b42e1f43",
      "subject": "[run-benchmark][GTK][WPE] Add support for auto-entering container SDK when running minibrowser"
    },
    "317281@main": {
      "author": "Dan Glastonbury",
      "avatar": "https://www.gravatar.com/avatar/fb7cb28bf9f1bc9fc0c3bbf65566efdc?d=identicon\u0026s=64",
      "cl": "317281@main",
      "clUrl": "https://commits.webkit.org/317281@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=317853\nrdar://181244580\n\nReviewed by Simon Fraser.\n\nWhen drawing a non-sRGB gradient in a hue interpolation space (HSL, LCH, OKLCH,\n...), coarseSampleStops() bakes the hue rotation into a set of coarse samples\nwhose hue components are stored in [0, 360). evaluateLinearOS() then\ninterpolates each adjacent pair of coarse samples with a plain component-wise\nlerp. When the rotation crosses the 0/360 boundary, the two samples bracketing\nthe crossing sit on opposite sides of the wrap (e.g. 0.5 and 359.5), so lerping\nthe hue directly sweeps ~360 degrees the long way around the wheel and paints a\nband of unrelated colour in the middle of the gradient.\n\nFix this by unwrapping stop1's hue to within 180 degrees of stop0's before the\nlerp, so interpolation follows the intended short step, then renormalizing the\nresult into [0, 360) before conversion to the output color space. The unwrap is\nkept local to the interpolation step rather than applied to the stored coarse\nsamples, because HSL-\u003esRGB conversion is only defined for hue in [0, 360) (it\nuses fmod, which is not wrap-safe for negative angles), and those samples are\nalso converted directly by toColorTypeResolvingNone().\n\nTest: fast/gradients/oklch-shorter-hue-wrap.html\n\n* LayoutTests/fast/gradients/oklch-shorter-hue-wrap-expected.html: Added.\n* LayoutTests/fast/gradients/oklch-shorter-hue-wrap.html: Added.\n* LayoutTests/platform/glib/TestExpectations:\n* LayoutTests/platform/win/TestExpectations:\n* Source/WebCore/platform/graphics/SampledGradientBuilder.h:\n(WebCore::evaluateLinearOS):\n\nCanonical link: https://commits.webkit.org/317281@main",
      "email": "djg@apple.com",
      "hash": "430a1af268a49ad83203e80e137af6a02dba85b7",
      "subject": "REGRESSION (310405@main): Oklch gradients sometimes have random bands of colour in them"
    },
    "317282@main": {
      "author": "Sosuke Suzuki",
      "avatar": "https://www.gravatar.com/avatar/e63b87350fe19bdd9a30c7234eda45af?d=identicon\u0026s=64",
      "cl": "317282@main",
      "clUrl": "https://commits.webkit.org/317282@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319023\n\nReviewed by Yusuke Suzuki.\n\nFor a global RegExp replace with a single match (rangeCount == 2, separatorCount == 1),\nwe create two substring StringImpls and concatenate them with jsString(). But when the\nresult is short, jsString() flattens it via tryMakeString() anyway, so this costs three\nallocations and a double copy — strictly slower than the generic single-allocation path\nbelow. This hits the common thousands-separator idiom\n`String(n).replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\")` for 4-6 digit numbers.\n\nTake the special case only when jsString() would actually make a rope. The threshold is\nextracted into shouldMakeRope() in JSString.h and shared with the jsString() overloads.\n\n                                                   Baseline                  Patched\n\nstring-replace-generic                         19.7240+-0.6320     ^     14.7327+-0.3753        ^ definitely 1.3388x faster\nstring-replace-regexp-global-thousands-separator\n                                              153.5817+-1.6965     ^    120.7386+-1.0667        ^ definitely 1.2720x faster\nstring-replace-regexp-global-single-match\n                                              152.1385+-0.4575     ^    102.3380+-0.7269        ^ definitely 1.4866x faster\n\nTests: JSTests/microbenchmarks/string-replace-regexp-global-single-match.js\n       JSTests/microbenchmarks/string-replace-regexp-global-thousands-separator.js\n\n* JSTests/microbenchmarks/string-replace-regexp-global-single-match.js: Added.\n(test):\n* JSTests/microbenchmarks/string-replace-regexp-global-thousands-separator.js: Added.\n(test):\n* Source/JavaScriptCore/runtime/JSString.h:\n(JSC::shouldMakeRope):\n* Source/JavaScriptCore/runtime/OperationsInlines.h:\n(JSC::jsString):\n* Source/JavaScriptCore/runtime/StringPrototypeInlines.h:\n(JSC::jsSpliceSubstringsWithSeparators):\n(JSC::jsSpliceSubstringsWithSeparator):\n\nCanonical link: https://commits.webkit.org/317282@main",
      "email": "sosuke@bun.sh",
      "hash": "3130bd507b02a77372bf2365ddf0164e546c6605",
      "subject": "[JSC] Use the generic path in `jsSpliceSubstringsWithSeparator(s)` for short two-range results"
    },
    "317284@main": {
      "author": "Chris Dumez",
      "avatar": "https://www.gravatar.com/avatar/a9f21fe3a8baf79b45f3c91572187bdc?d=identicon\u0026s=64",
      "cl": "317284@main",
      "clUrl": "https://commits.webkit.org/317284@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319466\n\nReviewed by Ben Nham.\n\nAdd logging to facilitate debugging of MACH_SEND_TOO_LARGE IPC errors\nsuch as rdar://175591770.\n\n* Source/WebKit/Platform/IPC/cocoa/ConnectionCocoa.mm:\n(IPC::Connection::sendMessage):\n(IPC::Connection::sendOutgoingMessage):\n(IPC::Connection::retrySendMessageWithSharedMemory):\n* Source/WebKit/UIProcess/WebPageProxy.cpp:\n(WebKit::WebPageProxy::creationParameters):\n\nCanonical link: https://commits.webkit.org/317284@main",
      "email": "cdumez@apple.com",
      "hash": "71159f6313f754dea5af9fb0a198d34d4f21cae2",
      "subject": "Add logging to facilitate debugging of MACH_SEND_TOO_LARGE IPC errors"
    },
    "317285@main": {
      "author": "Tyler Wilcock",
      "avatar": "https://www.gravatar.com/avatar/9545082e6bed96158a9f52dac6e4b869?d=identicon\u0026s=64",
      "cl": "317285@main",
      "clUrl": "https://commits.webkit.org/317285@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319459\nrdar://179279930\n\nReviewed by Chris Fleizach.\n\nWith ENABLE(ACCESSIBILITY_LOCAL_FRAME), each frame gets its own AXObjectCache and\nan iframe's root AccessibilityScrollView reports isRoot() == true, so its\nparentObject() returns null. On iOS, -[WebAccessibilityObjectWrapper\naccessibilityContainer] climbed the tree with the non-cross-frame\nparentObjectUnignored(), which therefore dead-ended at the iframe root\n\nThis broken link means it can neither advance past the last iframe element\nnor resolve the view/window needed to draw its focus cursor.\n\nFix accessibilityContainer to ascend with crossFrameParentObjectUnignored(),\nmatching macOS. It crosses the local frame boundary at the iframe root and\nbehaves identically to parentObjectUnignored() elsewhere and when the flag is\noff.\n\n* LayoutTests/accessibility/ios-simulator/iframe-exit-traversal-expected.txt: Added.\n* LayoutTests/accessibility/ios-simulator/iframe-exit-traversal.html: Added.\n* Source/WebCore/accessibility/ios/WebAccessibilityObjectWrapperIOS.mm:\n(-[WebAccessibilityObjectWrapper accessibilityContainer]):\n\nCanonical link: https://commits.webkit.org/317285@main",
      "email": "tyler_w@apple.com",
      "hash": "a90848164db6573df50ccfbb8e145f8e03c3c216",
      "subject": "AX: iOS VoiceOver can't swipe past the last element inside iframes or render a cursor for iframe content"
    },
    "317286@main": {
      "author": "Alan Baradlay",
      "avatar": "https://www.gravatar.com/avatar/788d66417db806c567552cfa1ae89f77?d=identicon\u0026s=64",
      "cl": "317286@main",
      "clUrl": "https://commits.webkit.org/317286@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=318612\n\nReviewed by Antti Koivisto.\n\nFlexLayout determined the flex container's used cross size itself: it grew the container's logical\nheight line by line during content sizing (row flow), then at the \"determine the used cross size\"\nstep applied the line-if-empty floor, added the inter-line gaps, and called updateLogicalHeight.\nThat last step is the container resolving its own border-box height (specified vs content, min/max,\nbox-sizing), which is RenderBox's job rather than the item-layout algorithm's.\n\nAccumulate the row-flow content extent into a local instead of writing the container, and hand it\nto a new RenderFlexibleBox::updateLogicalHeightForFlexContent that applies the floor, adds the\ninter-line gaps, and calls updateLogicalHeight. FlexLayout no longer writes the container's height\nat the cross-size step; it reads crossAxisContentExtent() for the following alignment as before.\n\nColumn flow's logical height is its main size, which is still set while placing the items (column\nreverse needs it finalized mid-placement to position from the end), so the new method seeds the\nheight only for row flow and leaves column flow's as placed.\n\nNo change in behavior: the same content extent, floor, gaps and height resolution run in the same\norder; only the ownership of writing the container's height moved.\n\n* Source/WebCore/rendering/RenderFlexLayout.cpp:\n* Source/WebCore/rendering/RenderFlexibleBox.cpp:\n* Source/WebCore/rendering/RenderFlexibleBox.h:\n\nCanonical link: https://commits.webkit.org/317286@main",
      "email": "zalan@apple.com",
      "hash": "3e5698d4a039fc548710cf48eefcc66fe41d161f",
      "subject": "[cleanup] Resolve the flex container's logical height in RenderFlexibleBox instead of FlexLayout"
    },
    "317287@main": {
      "author": "Marcos Caceres",
      "avatar": "https://www.gravatar.com/avatar/d31c9c6a3b0af558a2945682020e5b90?d=identicon\u0026s=64",
      "cl": "317287@main",
      "clUrl": "https://commits.webkit.org/317287@main",
      "description": "rdar://165737231\nhttps://bugs.webkit.org/show_bug.cgi?id=303448\n\nReviewed by Wenson Hsieh.\n\ntest_driver.click() computes an element's click point in the element's own\nframe-local coordinates, but WebKitTestRunner's synthetic click is hit-tested\nfrom the top window. For a button in an offset or cross-origin iframe the two\nspaces differ, so bless()'s click missed its target and the test timed out.\n\nResolve the click point into top-window (root-view) coordinates before\ndispatching: add Internals.boundingBoxInRootViewCoordinates(element) and, in\ntestdriver-vendor.js, shift testdriver.js's frame-local point by the element's\nframe-to-root-view offset. For a top-level element the offset is zero, so\ntop-level clicks are unchanged; only subframe clicks move. This replaces the\nearlier interim shim that granted activation directly via internals.\n\nBecause test_driver.click() now lands in subframes, several replace-before-load\ntests that relied on a click into a subframe navigating the frame now pass, and\ntheir stale FAIL baselines are updated to PASS. On the iOS WPT bot the same\nsubframe clicks make three user-activation tests pass (their stale iPad\nexpectations are removed), and the Digital Credentials default-permissions-policy\ntest now runs to completion producing its DC-on output on iOS (which enables the\nfeature), so an iOS baseline is added for it.\n\nTwo follow-ups are tracked and their affected cases contained rather than fixed\nhere: one bless-nested subtest expects the spec-correct result but currently\nfails because WebKit over-activates a same-origin frame nested below a clicked\ncross-origin frame (webkit.org/b/318749); its committed baseline records that\nfailure. Under site isolation the coordinate resolution cannot cross a\nRemoteFrame (cross-process) boundary, so the cross-origin bless tests are\nskipped on mac-site-isolation (webkit.org/b/318763). The same-process mapping\nalso does not yet account for CSS transforms on an ancestor iframe\n(webkit.org/b/318752).\n\n* Source/WebCore/testing/Internals.idl:\n* Source/WebCore/testing/Internals.h:\n* Source/WebCore/testing/Internals.cpp:\n(WebCore::Internals::boundingBoxInRootViewCoordinates): Return an element's\nborder-box in root-view (top window) coordinates, for the test-driver click path.\n* LayoutTests/resources/testdriver-vendor.js:\n(window.test_driver_internal.click): For an element in a subframe, shift testdriver's\nframe-local click point to root-view coordinates via internals.boundingBoxInRootViewCoordinates();\ntop-level elements need no shift. Remove the interim internals-withUserGesture bless shim.\n* LayoutTests/http/wpt/user-activation/bless.html: Added.\n* LayoutTests/http/wpt/user-activation/bless-expected.txt: Added.\n* LayoutTests/http/wpt/user-activation/bless-nested.sub.html: Added.\n* LayoutTests/http/wpt/user-activation/bless-nested.sub-expected.txt: Added.\n* LayoutTests/http/wpt/user-activation/bless-edge-cases.sub.html: Added.\n* LayoutTests/http/wpt/user-activation/bless-edge-cases.sub-expected.txt: Added.\n* LayoutTests/http/wpt/user-activation/resources/bless-relay.sub.html: Added.\n* LayoutTests/http/wpt/user-activation/resources/click-target.html: Added.\n* LayoutTests/http/wpt/user-activation/resources/iframe.html: Added.\n* LayoutTests/http/wpt/user-activation/click-offset-subframe-scrolled.html: Added.\n* LayoutTests/http/wpt/user-activation/click-offset-subframe-scrolled-expected.txt: Added.\nRegression test: test_driver.click lands on a target inside an offset subframe while the top\ndocument is scrolled, exercising the frame-to-root-view coordinate shift. Fails without the\nshift and passes with it, on both macOS and iOS.\n* LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/replace-before-load/a-user-click-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/replace-before-load/a-user-click-during-pageshow-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/replace-before-load/location-assign-user-click-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/replace-before-load/location-setter-user-click-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/replace-before-load/location-setter-user-mouseup-expected.txt:\nRebaseline to PASS: the subframe click now lands, so the expected navigation occurs.\n* LayoutTests/platform/mac-site-isolation/TestExpectations:\nSkip the bless tests under site isolation pending the cross-process coordinate path (webkit.org/b/318763).\n* LayoutTests/imported/w3c/web-platform-tests/digital-credentials/create.disabled-by-permissions-policy.https.sub-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/digital-credentials/default-permissions-policy.https.sub-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/digital-credentials/get.disabled-by-permissions-policy.https.sub-expected.txt:\nReset baselines now that these tests run to completion instead of timing out.\n* LayoutTests/platform/ios/imported/w3c/web-platform-tests/digital-credentials/default-permissions-policy.https.sub-expected.txt: Added.\niOS enables Digital Credentials, so get() is available there; add an iOS baseline with\nthe DC-on output (get() passes) instead of falling back to the DC-off generic baseline.\n* LayoutTests/platform/glib/TestExpectations:\nSkip the screen-orientation subframe tests that now run to completion but\nfail on features not supported there.\n* LayoutTests/platform/mac-wk2/TestExpectations:\nSkip the screen-orientation and storage-access-beyond-cookies subframe tests\nthat now run to completion but fail on features not supported there, and mark\nthe digital-credentials default-permissions-policy test [ Debug ] [ Failure ]:\nDigitalCredentials is enabled in debug Cocoa builds but not release, so it\ndiverges from the DC-off baseline only on debug.\n* LayoutTests/platform/ipad/TestExpectations:\nRemove the stale [ Failure ] expectations for the user-activation\nconsumption-sameorigin, propagation-sameorigin, and propagation-crossorigin\ntests, which now pass because test_driver.click() lands in the subframe.\n\nCanonical link: https://commits.webkit.org/317287@main",
      "email": "marcosc@apple.com",
      "hash": "ad6fed49234ba17515e45f0c8d283f52cd464a15",
      "subject": "testharness.js bless() method not working for cross-origin iframes"
    },
    "317288@main": {
      "author": "Ian Grunert",
      "avatar": "https://www.gravatar.com/avatar/6a676cf1bcb9ff83c6cd867a0e3a0fa4?d=identicon\u0026s=64",
      "cl": "317288@main",
      "clUrl": "https://commits.webkit.org/317288@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319505\n\nReviewed by Adrian Taylor.\n\nWhen Swift is available (as it now is in the Windows EWS Docker image),\nthe Swift codepath enables the \"Generate Swift platform args\" step, which\npreprocesses wtf/Platform.h to record the enabled platform macros into a\n.resp file passed to later Swift compilations.\n\n_webkit_generate_platform_swift_args builds that clang preprocess command\nusing GCC-driver syntax (-std=c++2b -E -P -dM -MD -MF ... -include). On\nWindows CMAKE_CXX_COMPILER is clang-cl, which defaults to the MSVC (cl)\ndriver and silently ignores those flags (-Wunknown-argument), then treats\ntheir operands as input files, failing with:\n\n    clang-cl: error: no such file or directory: 'cmakeconfig.h'\n\nPrepend --driver-mode=gcc when COMPILER_IS_CLANG_CL so clang-cl honors the\nGCC-style flags. This mirrors the inverse --driver-mode=cl already used for\nthe include-what-you-use invocation in this file, and keeps -MD/-MF\nemitting a gcc-format depfile, which the build's cmake_transform_depfile\nNinja gccdepfile step expects.\n\n* Source/cmake/WebKitMacros.cmake:\n(_webkit_generate_platform_swift_args):\n\nCanonical link: https://commits.webkit.org/317288@main",
      "email": "ian.grunert@gmail.com",
      "hash": "2b32d77f379c2f8a9422c8003b8cf5648975e0ec",
      "subject": "[Win] Fix build when Swift is present"
    },
    "317289@main": {
      "author": "Jer Noble",
      "avatar": "https://www.gravatar.com/avatar/6d2cde9be23b98223ca964cb3b7813a0?d=identicon\u0026s=64",
      "cl": "317289@main",
      "clUrl": "https://commits.webkit.org/317289@main",
      "description": "rdar://182253584\nhttps://bugs.webkit.org/show_bug.cgi?id=319438\n\nReviewed by Eric Carlson.\n\nAdd Logging to WebAVPlayerLayerView by using logger information from WebAVPlayerLayer.\n\nBut to do so with LoggerHelper, each C-style method implementation needs to have a `self`\nvariable which the LoggerHelper macros can use to construct the log statement. Update all\nthe methods signatures in WebAVPlayerLayerView.mm to declare a `self` parameter for the\nfirst parameter, whose type is the type of the underlying class. This makes the code much\ncleaner and easier to reason about, in addition to making LoggerHelper work.\n\n* Source/WebCore/Configurations/AllowedSPI-legacy.toml:\n* Source/WebCore/platform/cocoa/WebAVPlayerLayer.h:\n* Source/WebCore/platform/cocoa/WebAVPlayerLayer.mm:\n* Source/WebCore/platform/cocoa/WebAVPlayerLayerView.h:\n* Source/WebCore/platform/cocoa/WebAVPlayerLayerView.mm:\n(WebCore::WebAVPlayerLayerView_webPlayerLayer):\n(WebCore::WebAVPlayerLayerView_transferVideoViewTo):\n(WebCore::WebAVPlayerLayerView_playerController):\n(WebCore::WebAVPlayerLayerView_setPlayerController):\n(WebCore::WebAVPlayerLayerView_playerLayer):\n(WebCore::WebAVPlayerLayerView_videoView):\n(WebCore::WebAVPlayerLayerView_setVideoView):\n(WebCore::WebAVPlayerLayerView_startRoutingVideoToPictureInPicturePlayerLayerView):\n(WebCore::WebAVPlayerLayerView_stopRoutingVideoToPictureInPicturePlayerLayerView):\n(WebCore::WebAVPlayerLayerView_pictureInPicturePlayerLayerView):\n(WebCore::WebAVPlayerLayerView_dealloc):\n(WebCore::WebAVPlayerLayerView_logIdentifier):\n(WebCore::WebAVPlayerLayerView_loggerPtr):\n(WebCore::WebAVPlayerLayerView_logChannel):\n(WebCore::allocWebAVPlayerLayerViewInstance):\n(WebCore::WebAVPictureInPicturePlayerLayerView_dealloc):\n\nCanonical link: https://commits.webkit.org/317289@main",
      "email": "jer.noble@apple.com",
      "hash": "081c4c12c5c5e20776b38bcd53856dfa9d248644",
      "subject": "[Cleanup] Add logging to WebAVPlayerLayerView"
    },
    "317290@main": {
      "author": "Antoine Quint",
      "avatar": "https://www.gravatar.com/avatar/9b3ef1e754f8d994f21ff67c660cbbe6?d=identicon\u0026s=64",
      "cl": "317290@main",
      "clUrl": "https://commits.webkit.org/317290@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319499\nrdar://182303168\n\nReviewed by Alan Baradlay and Tim Nguyen.\n\nUpstream commit: https://github.com/web-platform-tests/wpt/commit/5ef40c7e6f0328764731e64882efa446c739b9d3\n\n* LayoutTests/TestExpectations:\n* LayoutTests/imported/w3c/web-platform-tests/scroll-animations/animation-trigger/animation-trigger-addAnimation.tentative.html:\n* LayoutTests/imported/w3c/web-platform-tests/scroll-animations/animation-trigger/animation-trigger-multiple-triggers.tentative.html:\n* LayoutTests/imported/w3c/web-platform-tests/scroll-animations/animation-trigger/animation-trigger-play-forwards-backwards.tentative-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/scroll-animations/animation-trigger/animation-trigger-play-forwards-backwards.tentative.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/scroll-animations/animation-trigger/animation-trigger-play.tentative-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/scroll-animations/animation-trigger/animation-trigger-play.tentative.html:\n* LayoutTests/imported/w3c/web-platform-tests/scroll-animations/animation-trigger/animation-trigger-repeat.tentative.html:\n* LayoutTests/imported/w3c/web-platform-tests/scroll-animations/animation-trigger/animation-trigger-replay.tentative.html:\n* LayoutTests/imported/w3c/web-platform-tests/scroll-animations/animation-trigger/animation-trigger-timeline-subject-removed.tentative.html:\n* LayoutTests/imported/w3c/web-platform-tests/scroll-animations/animation-trigger/crashtests/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/scroll-animations/animation-trigger/parsing/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/scroll-animations/animation-trigger/support/support.js:\n* LayoutTests/imported/w3c/web-platform-tests/scroll-animations/animation-trigger/support/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/scroll-animations/animation-trigger/timeline-trigger-source-starts-in-trigger-range.tentative.html:\n* LayoutTests/imported/w3c/web-platform-tests/scroll-animations/animation-trigger/timeline-trigger-toggle.tentative.html:\n* LayoutTests/imported/w3c/web-platform-tests/scroll-animations/animation-trigger/trigger-scope-scoped-tree-order.tentative.html:\n* LayoutTests/imported/w3c/web-platform-tests/scroll-animations/animation-trigger/trigger-scope-tree-order-ancestor-chain.tentative.html:\n* LayoutTests/imported/w3c/web-platform-tests/scroll-animations/animation-trigger/trigger-scope-unscoped-tree-order.tentative.html:\n* LayoutTests/imported/w3c/web-platform-tests/scroll-animations/animation-trigger/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/scroll-animations/crashtests/change-timeline-from-finite-to-monotonic-crash.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/scroll-animations/crashtests/keyframe-offset-out-of-range-crash.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/scroll-animations/crashtests/scroll-timeline-becomes-scrollable-after-sampling.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/scroll-animations/crashtests/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/scroll-animations/css/animation-timeline-deferred-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/scroll-animations/css/animation-timeline-deferred.html:\n* LayoutTests/imported/w3c/web-platform-tests/scroll-animations/css/printing/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/scroll-animations/css/scroll-timeline-shorthand-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/scroll-animations/css/scroll-timeline-shorthand.html:\n* LayoutTests/imported/w3c/web-platform-tests/scroll-animations/css/support/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/scroll-animations/css/timeline-scope-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/scroll-animations/css/timeline-scope.html:\n* LayoutTests/imported/w3c/web-platform-tests/scroll-animations/css/view-timeline-dynamic-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/scroll-animations/css/view-timeline-dynamic.html:\n* LayoutTests/imported/w3c/web-platform-tests/scroll-animations/css/view-timeline-lookup-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/scroll-animations/css/view-timeline-lookup.html:\n* LayoutTests/imported/w3c/web-platform-tests/scroll-animations/css/view-timeline-shorthand-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/scroll-animations/css/view-timeline-shorthand.html:\n* LayoutTests/imported/w3c/web-platform-tests/scroll-animations/css/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/scroll-animations/scroll-timelines/animation-with-root-scroller-expected.html:\n* LayoutTests/imported/w3c/web-platform-tests/scroll-animations/scroll-timelines/animation-with-root-scroller-ref.html:\n* LayoutTests/imported/w3c/web-platform-tests/scroll-animations/scroll-timelines/animation-with-root-scroller.html:\n* LayoutTests/imported/w3c/web-platform-tests/scroll-animations/scroll-timelines/scroll-animation-effect-phases.tentative-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/scroll-animations/scroll-timelines/scroll-animation-effect-phases.tentative.html:\n* LayoutTests/imported/w3c/web-platform-tests/scroll-animations/scroll-timelines/scroll-timeline-snapshotting.html:\n* LayoutTests/imported/w3c/web-platform-tests/scroll-animations/scroll-timelines/scroll-timeline-source-single-axis-inactive-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/scroll-animations/scroll-timelines/scroll-timeline-source-single-axis-inactive.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/scroll-animations/scroll-timelines/scroll-timeline-source-single-axis-inner-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/scroll-animations/scroll-timelines/scroll-timeline-source-single-axis-inner.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/scroll-animations/scroll-timelines/scroll-timeline-source-single-axis-outer-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/scroll-animations/scroll-timelines/scroll-timeline-source-single-axis-outer.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/scroll-animations/scroll-timelines/scroll-timeline-source-single-axis-progress-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/scroll-animations/scroll-timelines/scroll-timeline-source-single-axis-progress.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/scroll-animations/scroll-timelines/scroll-timeline-source-single-axis-viewport-writing-mode-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/scroll-animations/scroll-timelines/scroll-timeline-source-single-axis-viewport-writing-mode.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/scroll-animations/scroll-timelines/setting-scroll-timeline-with-null-source-crash.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/scroll-animations/scroll-timelines/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/scroll-animations/view-timelines/block-view-timeline-current-time-vertical-rl.tentative-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/scroll-animations/view-timelines/block-view-timeline-current-time-vertical-rl.tentative.html:\n* LayoutTests/imported/w3c/web-platform-tests/scroll-animations/view-timelines/block-view-timeline-current-time.tentative-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/scroll-animations/view-timelines/block-view-timeline-current-time.tentative.html:\n* LayoutTests/imported/w3c/web-platform-tests/scroll-animations/view-timelines/block-view-timeline-nested-subject.tentative-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/scroll-animations/view-timelines/block-view-timeline-nested-subject.tentative.html:\n* LayoutTests/imported/w3c/web-platform-tests/scroll-animations/view-timelines/inline-view-timeline-current-time.tentative-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/scroll-animations/view-timelines/inline-view-timeline-current-time.tentative.html:\n* LayoutTests/imported/w3c/web-platform-tests/scroll-animations/view-timelines/intermediate-transform.html:\n* LayoutTests/imported/w3c/web-platform-tests/scroll-animations/view-timelines/range-boundary.tentative-expected.html: Renamed from LayoutTests/imported/w3c/web-platform-tests/scroll-animations/view-timelines/range-boundary-expected.html.\n* LayoutTests/imported/w3c/web-platform-tests/scroll-animations/view-timelines/range-boundary.tentative.html: Renamed from LayoutTests/imported/w3c/web-platform-tests/scroll-animations/view-timelines/range-boundary.html.\n* LayoutTests/imported/w3c/web-platform-tests/scroll-animations/view-timelines/sticky/view-timeline-sticky-offscreen-7-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/scroll-animations/view-timelines/sticky/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/scroll-animations/view-timelines/svg-graphics-element-003.html:\n* LayoutTests/imported/w3c/web-platform-tests/scroll-animations/view-timelines/testcommon.js:\n* LayoutTests/imported/w3c/web-platform-tests/scroll-animations/view-timelines/view-timeline-inset.html:\n* LayoutTests/imported/w3c/web-platform-tests/scroll-animations/view-timelines/view-timeline-snapport-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/scroll-animations/view-timelines/view-timeline-snapport.html:\n* LayoutTests/imported/w3c/web-platform-tests/scroll-animations/view-timelines/view-timeline-source-single-axis-inner-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/scroll-animations/view-timelines/view-timeline-source-single-axis-inner.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/scroll-animations/view-timelines/view-timeline-source-single-axis-outer-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/scroll-animations/view-timelines/view-timeline-source-single-axis-outer.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/scroll-animations/view-timelines/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/scroll-animations/w3c-import.log:\n\nCanonical link: https://commits.webkit.org/317290@main",
      "email": "graouts@webkit.org",
      "hash": "64d66cf04b85627851266c821369e76858134c86",
      "subject": "[scroll-animations] update WPT snapshot"
    },
    "317291@main": {
      "author": "Antoine Quint",
      "avatar": "https://www.gravatar.com/avatar/9b3ef1e754f8d994f21ff67c660cbbe6?d=identicon\u0026s=64",
      "cl": "317291@main",
      "clUrl": "https://commits.webkit.org/317291@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319418\nrdar://182243126\n\nReviewed by Brent Fulgham.\n\nThe animation-triggers spec adds a new shorthand property: `timeline-trigger-active-range`.\n\n* LayoutTests/imported/w3c/web-platform-tests/scroll-animations/animation-trigger/parsing/timeline-trigger-active-range-shorthand.tentative-expected.txt:\n* Source/WebCore/css/CSSProperties.json:\n* Source/WebCore/css/ShorthandSerializer.cpp:\n(WebCore::ShorthandSerializer::serialize):\n* Source/WebCore/css/parser/CSSPropertyParserCustom.h:\n(WebCore::CSS::PropertyParserCustom::consumeTimelineTriggerActiveRangeShorthand):\n* Source/WebCore/style/StyleExtractorCustom.h:\n(WebCore::Style::ExtractorCustom::extractTimelineTriggerActiveRangeShorthand):\n(WebCore::Style::ExtractorCustom::extractTimelineTriggerActiveRangeShorthandSerialization):\n* Source/WebCore/style/values/animation-triggers/StyleTimelineTrigger.h:\n(WebCore::Style::TimelineTrigger::initialActiveRange):\n(WebCore::Style::TimelineTrigger::activeRange const):\n(WebCore::Style::TimelineTrigger::setActiveRange):\n(WebCore::Style::TimelineTrigger::fillActiveRange):\n(WebCore::Style::TimelineTrigger::clearActiveRange):\n(WebCore::Style::TimelineTrigger::isActiveRangeUnset const):\n(WebCore::Style::TimelineTrigger::isActiveRangeSet const):\n(WebCore::Style::TimelineTrigger::isActiveRangeFilled const):\n\nCanonical link: https://commits.webkit.org/317291@main",
      "email": "graouts@webkit.org",
      "hash": "c7c7bc6765f51e6b0fcac564efbd0e42688d491f",
      "subject": "[animation-triggers] add parsing support for the `timeline-trigger-active-range` shorthand"
    },
    "317292@main": {
      "author": "Ahmad Saleem",
      "avatar": "https://www.gravatar.com/avatar/38445f84fe28aa19bfeb1f59f6559532?d=identicon\u0026s=64",
      "cl": "317292@main",
      "clUrl": "https://commits.webkit.org/317292@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319520\nrdar://182336325\n\nReviewed by Chris Dumez.\n\ndivideRoundedUp(a, b) computed (a + b - 1) / b, whose intermediate\na + b - 1 overflows when a is close to the maximum representable value\nof T. All callers use size_t, so this wraps silently: for example\ndivideRoundedUp\u003cuint8_t\u003e(255, 2) computes 255 + 2 - 1 = 256, which\nwraps to 0, yielding 0 instead of the correct 128.\n\nRewrite it in the overflow-safe form a / b + !!(a % b), which is\nmathematically equivalent for non-negative operands (the ceil-division\ndomain) and cannot overflow: a / b \u003c= a, and the +1 is never added when\na / b is already at the maximum (b == 1 implies a % b == 0).\n\nTest: Tools/TestWebKitAPI/Tests/WTF/MathExtras.cpp\n\n* Source/WTF/wtf/MathExtras.h:\n(divideRoundedUp):\n* Tools/TestWebKitAPI/Tests/WTF/MathExtras.cpp:\n(TestWebKitAPI::TEST(WTF, divideRoundedUp)):\n\nCanonical link: https://commits.webkit.org/317292@main",
      "email": "ahmad.saleem792+github@gmail.com",
      "hash": "3aa0615a5649159574e60d2f003887557a9108eb",
      "subject": "WTF::divideRoundedUp can overflow for dividends near the type's maximum"
    },
    "317293@main": {
      "author": "Ryosuke Niwa",
      "avatar": "https://www.gravatar.com/avatar/ed2c71248fe3ea15d9129f6e9a2a1e85?d=identicon\u0026s=64",
      "cl": "317293@main",
      "clUrl": "https://commits.webkit.org/317293@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319549\n\nUnreviewed. Update safer C++ expectations to match the latest results on the bots.\n\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\nCanonical link: https://commits.webkit.org/317293@main",
      "email": "rniwa@webkit.org",
      "hash": "93f2cadf3db76824f0735c7138658e0f3ec8c0d4",
      "subject": "Update WebCore safer C++ expectations"
    },
    "317294@main": {
      "author": "Ahmad Saleem",
      "avatar": "https://www.gravatar.com/avatar/38445f84fe28aa19bfeb1f59f6559532?d=identicon\u0026s=64",
      "cl": "317294@main",
      "clUrl": "https://commits.webkit.org/317294@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319478\nrdar://182285397\n\nReviewed by Simon Fraser.\n\nPer CSS Scroll Snap \"Selecting between multiple aligned snap areas\" [1], after\nfocused and targeted areas and ancestor removal (innermost wins), if the block\nand inline sets of aligned areas overlap they are replaced with their\nintersection before falling back to first in tree order. We stopped at first in\ntree order and evaluated each axis independently, so we picked each axis's\nfirst-in-tree box instead of the box common to both axes. Blink and Gecko both\nselect the common box; WebKit was the only engine that did not. We also\nre-derived the target on every layout change, letting a box that became common\n(or first in tree) after a layout shift steal selection from the tracked box.\n\nSelection now intersects the two axes' innermost-level candidate lists and\nprefers the common box over tree order; since snap area indices are in tree\norder, both axes converge on the same box. Re-snap keeps the box it actually\nfollowed as the recorded target so a later layout shift does not abandon it.\n\n[1] https://drafts.csswg.org/css-scroll-snap/#multiple-aligned-snap-areas\n\n* Source/WebCore/platform/ScrollSnapAnimatorState.cpp:\n(WebCore::ScrollSnapAnimatorState::selectSnapTargetForAxis): Prefer a candidate\nalso aligned in the other axis before first in tree order.\n(WebCore::ScrollSnapAnimatorState::innermostAlignedAreaIndicesForAxis): Added;\naligned areas at the axis's active offset with ancestors removed, in tree order.\n(WebCore::ScrollSnapAnimatorState::resnapAfterLayout): Keep the followed target\nas the recorded target across layout changes.\n* Source/WebCore/platform/ScrollSnapAnimatorState.h:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-scroll-snap/snap-after-relayout/multiple-aligned-targets/prefer-common-to-both-axes-expected.txt: Progression\n* LayoutTests/imported/w3c/web-platform-tests/css/css-scroll-snap/snap-after-relayout/multiple-aligned-targets/common-to-both-axes-supercedes-first-in-tree-order-expected.txt: Ditto\n* LayoutTests/platform/mac/TestExpectations: Unskip Passing test now\n\nCanonical link: https://commits.webkit.org/317294@main",
      "email": "ahmad.saleem792+github@gmail.com",
      "hash": "0445b6c42fa52f5d4ca8e9a2f655a2faa7a81089",
      "subject": "[CSS Scroll Snap] Re-snap should select the snap area aligned in both axes among multiple aligned targets"
    },
    "317295@main": {
      "author": "Chris Dumez",
      "avatar": "https://www.gravatar.com/avatar/a9f21fe3a8baf79b45f3c91572187bdc?d=identicon\u0026s=64",
      "cl": "317295@main",
      "clUrl": "https://commits.webkit.org/317295@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319546\n\n* Source/WebKit/UIProcess/WebPageProxy.cpp:\n(WebKit::WebPageProxy::creationParameters):\n\nCanonical link: https://commits.webkit.org/317295@main",
      "email": "cdumez@apple.com",
      "hash": "0424321c96863f40e96379ab4ce0d50321a86c4f",
      "subject": "Unreviewed Windows build fix after 317284@main"
    },
    "317296@main": {
      "author": "Ahmad Saleem",
      "avatar": "https://www.gravatar.com/avatar/38445f84fe28aa19bfeb1f59f6559532?d=identicon\u0026s=64",
      "cl": "317296@main",
      "clUrl": "https://commits.webkit.org/317296@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319189\nrdar://182035805\n\nReviewed by Youenn Fablet.\n\nIn byteStreamTee(), TeeBYOBReadRequest::runCloseSteps() correctly derived\nbyobCanceled/otherCanceled from m_forBranch2, but then performed the actual\nclose(), respondWithNewView(), and respond() calls against hardcoded branch1\nand branch2 instead of the byobBranch/otherBranch pair implied by m_forBranch2\n(as runChunkStepsInMicrotask() already does, and as the spec requires).\n\nWhen a byte stream is teed and branch2 is drained through a BYOB reader while\nbranch1 has been canceled, the read-into request runs with m_forBranch2 == true.\nThe close steps then operated on branch1 (byobBranch should be branch2): they\nskipped closing branch2 and, on end-of-stream, called\nReadableByteStreamControllerRespondWithNewView() on the canceled branch1, which\nhas no pending pull-into. That trips the RELEASE_ASSERT inside\nrespondWithNewView() and crashes the WebContent process:\n\n      ReadableByteStreamController::respondWithNewView(...)\n        TeeBYOBReadRequest::runCloseSteps(JSC::JSValue)\n        ReadableByteStreamController::pullInto(...)\n        ReadableStreamBYOBReader::read(...)\n        pullWithBYOBReader(..., forBranch2=true)\n        pull2Steps(...)\n\nRoute all four operations through byobBranch/otherBranch locals, matching the\nchunk-steps path and the WHATWG \"readable byte stream tee\" close steps.\n\nThe new test (canceling branch1 while branch2 reads with a BYOB reader until\nend of stream) crashes reliably without this change and passes with it.\n\n* LayoutTests/imported/w3c/web-platform-tests/streams/readable-byte-streams/tee.any-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/streams/readable-byte-streams/tee.any.js:\n(promise_test.async let):\n(promise_test):\n* LayoutTests/imported/w3c/web-platform-tests/streams/readable-byte-streams/tee.any.serviceworker-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/streams/readable-byte-streams/tee.any.sharedworker-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/streams/readable-byte-streams/tee.any.worker-expected.txt:\n* Source/WebCore/Modules/streams/StreamTeeUtilities.cpp:\n\nCanonical link: https://commits.webkit.org/317296@main",
      "email": "ahmad.saleem792+github@gmail.com",
      "hash": "c2c736166c9aee873409f5fef1b2ffc635131f3a",
      "subject": "ReadableStream byte-source tee: BYOB close steps target the wrong branch"
    },
    "317297@main": {
      "author": "Dan Glastonbury",
      "avatar": "https://www.gravatar.com/avatar/fb7cb28bf9f1bc9fc0c3bbf65566efdc?d=identicon\u0026s=64",
      "cl": "317297@main",
      "clUrl": "https://commits.webkit.org/317297@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319538\nrdar://134998122\n\nReviewed by Mike Wyrzykowski.\n\nRemoving the SPI check for cp_drawable_set_write_forward_depth since the\ndependent change landed in August 2024.\n\nNo change in functionality.\n\n* Source/WebCore/PAL/pal/cocoa/CompositorServicesSoftLink.h:\n* Source/WebCore/PAL/pal/cocoa/CompositorServicesSoftLink.mm:\n* Source/WebCore/platform/xr/PlatformXR.h:\n* Source/WebKit/UIProcess/XR/xros/PlatformXRCompositor.h:\n* Source/WebKit/UIProcess/XR/xros/PlatformXRCompositor.mm:\n(WebKit::CompositorCoordinator::CompositorCoordinator):\n(WebKit::CompositorCoordinator::render):\n\nCanonical link: https://commits.webkit.org/317297@main",
      "email": "djg@apple.com",
      "hash": "2455c5c4a1f05995bab616819587931f74cdaa64",
      "subject": "[WebXR] Remove check for CompositorServices support of forward-Z"
    },
    "317298@main": {
      "author": "Youenn Fablet",
      "avatar": "https://www.gravatar.com/avatar/0a9886e582a7aee1eb908eb59af36da4?d=identicon\u0026s=64",
      "cl": "317298@main",
      "clUrl": "https://commits.webkit.org/317298@main",
      "description": "rdar://181694014\nhttps://bugs.webkit.org/show_bug.cgi?id=318859\n\nReviewed by Brandon Stewart.\n\nWe also update LibWebRTCDav1dDecoder.cpp as done in Chrome.\n\n* Source/WebCore/PAL/ThirdParty/dav1d/dav1d.xcodeproj/project.pbxproj:\n* Source/WebCore/platform/mediastream/libwebrtc/LibWebRTCDav1dDecoder.cpp: we align Dav1dDecoder with its webrtc counterpart.\n\nCanonical link: https://commits.webkit.org/317298@main",
      "email": "youenn@apple.com",
      "hash": "ae0687bd0d7cfc287f1e2638acbb6debaa061165",
      "subject": "Resync dav1d support to M150"
    },
    "317299@main": {
      "author": "Youenn Fablet",
      "avatar": "https://www.gravatar.com/avatar/0a9886e582a7aee1eb908eb59af36da4?d=identicon\u0026s=64",
      "cl": "317299@main",
      "clUrl": "https://commits.webkit.org/317299@main",
      "description": "rdar://181852376\nhttps://bugs.webkit.org/show_bug.cgi?id=319003\n\nReviewed by Jer Noble.\n\nLike we are exiting early in BaseAudioCaptureUnit::resume if not suspended,we also exit early in BaseAudioCaptureUnit::suspend if already suspended.\nThis ensures that we would not reset the canResumeAdterInterruption flag back to false in case of two suspends\nThis is a speculative fix as I was not able to reproduce.\n\nAs a fly-by fix, we no longer set m_producingCount to 0 in suspend/captureFailed since m_producingCount is also updated asynchronously in BaseAudioCaptureUnit::stopProducingData, and this can trigger a DEBUG assert in BaseAudioCaptureUnit::stopProducingData. This was sometimes triggered when running LayoutTests/fast/mediastream/microphone-change-while-muted.html, which runs just before LayoutTests/fast/mediastream/microphone-interruption-and-audio-session.html.\n\n* Source/WebCore/platform/mediastream/cocoa/BaseAudioCaptureUnit.cpp:\n(WebCore::BaseAudioCaptureUnit::captureFailed):\n(WebCore::BaseAudioCaptureUnit::resume):\n(WebCore::BaseAudioCaptureUnit::suspend):\n* Source/WebCore/platform/mediastream/cocoa/CoreAudioCaptureSource.cpp:\n(WebCore::CoreAudioCaptureSource::stopProducingData):\n* Source/WebCore/platform/mediastream/cocoa/CoreAudioCaptureSource.h:\n(WebCore::CoreAudioCaptureSource::setCanResumeAfterInterruption):\n\nCanonical link: https://commits.webkit.org/317299@main",
      "email": "youenn@apple.com",
      "hash": "a450ebfaf60acf22583f90cddc23e407578f40cd",
      "subject": "REGRESSION(316360@main):[macOS] fast/mediastream/microphone-interruption-and-audio-session.html is a constant TEXT failure"
    },
    "317300@main": {
      "author": "Anne van Kesteren",
      "avatar": "https://www.gravatar.com/avatar/09bb44ac3625a121017cd98d0a7dc52c?d=identicon\u0026s=64",
      "cl": "317300@main",
      "clUrl": "https://commits.webkit.org/317300@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319488\nrdar://182295059\n\nReviewed by Tim Horton.\n\nThis has been stable for several years and there is no known SPI usage,\nexcept a singular redundant internal call.\n\nCanonical link: https://commits.webkit.org/317300@main",
      "email": "annevk@annevk.nl",
      "hash": "494da5ce131e461a4e1e7b946ce6db25a03e1e2f",
      "subject": "Remove ShouldDeferAsynchronousScriptsUntilAfterDocumentLoadOrFirstPaint preference"
    },
    "317301@main": {
      "author": "Youenn Fablet",
      "avatar": "https://www.gravatar.com/avatar/0a9886e582a7aee1eb908eb59af36da4?d=identicon\u0026s=64",
      "cl": "317301@main",
      "clUrl": "https://commits.webkit.org/317301@main",
      "description": "rdar://182144718\nhttps://bugs.webkit.org/show_bug.cgi?id=319559\n\nReviewed by Cameron McCormack.\n\nTo address the potential rendering difference at the boundary between the top gray block and the white block below it, we add a fuzzy meta tag.\nThis added flexibility is small enough that it would capture regressions in how the pdfs would be rendered in iframes.\n\n* LayoutTests/http/tests/cache/disk-cache/shattered-deduplication.html:\n\nCanonical link: https://commits.webkit.org/317301@main",
      "email": "youenn@apple.com",
      "hash": "a8b8808f39f629f3ef472ba52c3266c4cf313dd8",
      "subject": "Add a fuzzy meta to http/tests/cache/disk-cache/shattered-deduplication.html"
    },
    "317302@main": {
      "author": "Vitaly Dyachkov",
      "avatar": "https://www.gravatar.com/avatar/ab950c52088e289585a5a01580ec66a4?d=identicon\u0026s=64",
      "cl": "317302@main",
      "clUrl": "https://commits.webkit.org/317302@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=317852\n\nReviewed by Devin Rousso.\n\nCurrently, the `Layout Invalidated` event is emitted only when layout is\nscheduled, with the layout root element set as the associated node. This\nevent does not reflect the number of subnodes that actually require\nrelayout.\n\nIf we have the following node tree:\n```\n  A\n / \\\nB   C\n```\nWhere both `B` and `C` require relayout, the timeline will show:\n```\nLayout Invalidated: B (layout root)\nLayout Invalidated: A (layout root - common ancestor for B and C)\nLayout:             A (layout root)\n```\n\nThis is indistinguishable from a case where many more subnodes of `A`\nrequire relayout:\n```\n  A\n/ | \\ \\\nB C D...Z\n```\n\nThe timeline will look the same, but layout will take much longer.\n\nThis patch makes the `Layout Invalidated` event fire on every\n`setNeedsLayout*` call of each `RenderElement`, using its element as the\nassociated node. The original `Layout Invalidated` event is renamed to\n`Layout Scheduled` to better reflect the actual logic.\n\nTo avoid event flooding, `Layout Invalidated` is only emitted the first\ntime an element is marked as needing layout within a given layout cycle.\nSubsequent `setNeedsLayout*` calls on the same element before layout\nruns are silently skipped.\n\nWith this patch, the timeline will look like this:\n```\nLayout Invalidated: B\nLayout Scheduled:   B (layout root)\nLayout Invalidated: C\nLayout Scheduled:   A (layout root - common ancestor for B and C)\nLayout Invalidated: D\nLayout Invalidated: ...\nLayout Invalidated: Z\nLayout:             A (layout root)\n```\n\nWhile more verbose, this provides much more detailed insight into the\nengine internals, making it easier for web developers to debug layout\nissues.\n\n* LayoutTests/inspector/timeline/timeline-layout-events-expected.txt:\n* LayoutTests/inspector/timeline/timeline-layout-events-iframe-expected.txt:\n* LayoutTests/inspector/timeline/timeline-layout-events-iframe.html:\n* LayoutTests/inspector/timeline/timeline-layout-events.html:\n* Source/JavaScriptCore/inspector/protocol/Timeline.json:\n* Source/WebCore/inspector/InspectorInstrumentation.cpp:\n(WebCore::InspectorInstrumentation::willInvalidateLayoutImpl):\n(WebCore::InspectorInstrumentation::didScheduleLayoutImpl):\n(WebCore::InspectorInstrumentation::didInvalidateLayoutImpl):\n* Source/WebCore/inspector/InspectorInstrumentation.h:\n(WebCore::InspectorInstrumentation::willInvalidateLayout):\n(WebCore::InspectorInstrumentation::didScheduleLayout):\n(WebCore::InspectorInstrumentation::didInvalidateLayout):\n* Source/WebCore/inspector/agents/InspectorTimelineAgent.cpp:\n(WebCore::toProtocol):\n* Source/WebCore/inspector/agents/InspectorTimelineAgent.h:\n* Source/WebCore/inspector/agents/page/PageTimelineAgent.cpp:\n(WebCore::PageTimelineAgent::willInvalidateLayout):\n(WebCore::PageTimelineAgent::didScheduleLayout):\n(WebCore::PageTimelineAgent::didInvalidateLayout):\n* Source/WebCore/inspector/agents/page/PageTimelineAgent.h:\n* Source/WebCore/page/LocalFrameViewLayoutContext.cpp:\n(WebCore::LocalFrameViewLayoutContext::scheduleLayout):\n(WebCore::LocalFrameViewLayoutContext::scheduleSubtreeLayout):\n* Source/WebCore/rendering/RenderElement.cpp:\n(WebCore::RenderElement::setNeedsOutOfFlowMovementLayout):\n(WebCore::RenderElement::setNeedsLayoutForOverflowChange):\n(WebCore::RenderElement::setOutOfFlowChildNeedsStaticPositionLayout):\n* Source/WebCore/rendering/RenderElement.h:\n* Source/WebCore/rendering/RenderObject.cpp:\n(WebCore::RenderObject::notifyInspectorOfLayoutInvalidate):\n* Source/WebCore/rendering/RenderObject.h:\n* Source/WebCore/rendering/RenderObjectInlines.h:\n(WebCore::RenderObject::setNeedsLayout):\n* Source/WebInspectorUI/Localizations/en.lproj/localizedStrings.js:\n* Source/WebInspectorUI/UserInterface/Controllers/TimelineManager.js:\n(WI.TimelineManager.prototype._processRecord):\n* Source/WebInspectorUI/UserInterface/Models/LayoutTimelineRecord.js:\n(WI.LayoutTimelineRecord.displayNameForEventType):\n* Source/WebInspectorUI/UserInterface/Views/CPUTimelineView.js:\n(WI.CPUTimelineView.prototype._attemptSelectIndicatatorTimelineRecord):\n* Source/WebInspectorUI/UserInterface/Views/TimelineTabContentView.js:\n(WI.TimelineTabContentView.iconClassNameForRecord):\n\nCanonical link: https://commits.webkit.org/317302@main",
      "email": "vitaly@igalia.com",
      "hash": "7af6d5a321879450ab6d21f113e233e957caf14f",
      "subject": "Web Inspector: Emit per-element `Layout Invalidated` events"
    },
    "317303@main": {
      "author": "Yoav Weiss",
      "avatar": "https://www.gravatar.com/avatar/228600d5a1cfae576e64ee92e46f6a1e?d=identicon\u0026s=64",
      "cl": "317303@main",
      "clUrl": "https://commits.webkit.org/317303@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319548\n\nReviewed by Anne van Kesteren.\n\nhttps://github.com/whatwg/html/pull/10327 had WPT changes related to it: https://github.com/web-platform-tests/wpt/pull/55505 and https://github.com/web-platform-tests/wpt/pull/61305.\nThis PR imports them.\n\n* LayoutTests/imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/css-module/repeated-import-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/css-module/repeated-import.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/css-module/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/json-module/repeated-imports.any-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/json-module/repeated-imports.any.js:\n(promise_test.async test.set const):\n(promise_test.async test):\n(promise_test.async test.set await):\n* LayoutTests/imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/json-module/repeated-imports.any.sharedworker-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/json-module/repeated-imports.any.worker-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/module-fetch-tester.py: Added.\n(main):\n* LayoutTests/imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/module/concurrent-failed-imports-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/module/concurrent-failed-imports.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/module/dynamic-import/concurrent-failed-imports.any-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/module/dynamic-import/concurrent-failed-imports.any.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/module/dynamic-import/concurrent-failed-imports.any.js: Added.\n(promise_test.async test):\n* LayoutTests/imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/module/dynamic-import/concurrent-failed-imports.any.sharedworker-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/module/dynamic-import/concurrent-failed-imports.any.sharedworker.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/module/dynamic-import/concurrent-failed-imports.any.worker-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/module/dynamic-import/concurrent-failed-imports.any.worker.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/module/dynamic-import/dynamic-imports-fetch-error.sub-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/module/dynamic-import/dynamic-imports-fetch-error.sub.html:\n* LayoutTests/imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/module/dynamic-import/repeated-imports.any-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/module/dynamic-import/repeated-imports.any.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/module/dynamic-import/repeated-imports.any.js: Added.\n(promise_test.async test.set await):\n(promise_test.async test.set const):\n(promise_test.async test):\n(promise_test.async test.set for):\n* LayoutTests/imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/module/dynamic-import/repeated-imports.any.sharedworker-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/module/dynamic-import/repeated-imports.any.sharedworker.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/module/dynamic-import/repeated-imports.any.worker-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/module/dynamic-import/repeated-imports.any.worker.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/module/dynamic-import/resources/status-changing-script.py: Removed.\n* LayoutTests/imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/module/dynamic-import/resources/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/module/dynamic-import/shared-dependency-repeated-import-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/module/dynamic-import/shared-dependency-repeated-import.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/module/dynamic-import/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/module/shared-dependency-a.js: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/module/shared-dependency-b.js: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/module/shared-dependency-repeated-import-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/module/shared-dependency-repeated-import.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/module/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/serve-custom-response.py: Added.\n(main):\n* LayoutTests/imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/serve-json-then-js.py: Removed.\n* LayoutTests/imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/w3c-import.log:\n* LayoutTests/TestExpectations:\n\nCanonical link: https://commits.webkit.org/317303@main",
      "email": "yoav.weiss@shopify.com",
      "hash": "8070ffc310852813769240771aaabc5213c20049",
      "subject": "Import module failure caching tests"
    },
    "317304@main": {
      "author": "Franco Vieira de Souza",
      "avatar": "https://www.gravatar.com/avatar/14ed77684c1591a07649be8495cc0ddb?d=identicon\u0026s=64",
      "cl": "317304@main",
      "clUrl": "https://commits.webkit.org/317304@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319526\nrdar://182351333\n\nReviewed by Alan Baradlay.\n\nLinks in the offending test (css/css-ui/text-overflow-with-selection.html)\nare fixed, which should allow for a clean export - the WPT linter won't\ntrip on MISSING-LINK or NON-EXISTENT-REF anymore.\n\n* LayoutTests/imported/w3c/web-platform-tests/css/css-ui/text-overflow-with-selection.html:\n\nCanonical link: https://commits.webkit.org/317304@main",
      "email": "franco_vieira@apple.com",
      "hash": "03c6534fd80e622c8f47a51500147398602286e2",
      "subject": "[WPT] Fix linter errors before exporting: css/css-ui/text-overflow-with-selection.html"
    },
    "317305@main": {
      "author": "Alan Baradlay",
      "avatar": "https://www.gravatar.com/avatar/788d66417db806c567552cfa1ae89f77?d=identicon\u0026s=64",
      "cl": "317305@main",
      "clUrl": "https://commits.webkit.org/317305@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=318613\n\nReviewed by Antti Koivisto.\n\nFlexLayout laid flex items out directly during stretch alignment: in applyStretchAlignmentToFlexItem\n(both the block and inline axes) and in applyStretchMinMaxCrossSize it set an overriding cross size\non the item, marked it for layout, and called layoutIfNeeded. Laying a flex item out is render-tree\nwork that belongs to the container, not to the item-layout algorithm.\n\nMove the relayouts into RenderFlexibleBox: stretchFlexItemLogicalHeight for the block-axis case\n(the conditional overriding-height plus the relayout that preserves the item's content logical\nheight and dirties its percentage-height descendants), and relayoutFlexItemForStretchedCrossSize\nfor the inline-axis case and the min/max clamp case (set the overriding cross size and relay out).\ndirtyPercentHeightDescendantsWithinFlexItem moves with them; flexItemHasPercentHeightDescendants\nstays in FlexLayout, since that is the query the relayout decision reads.\n\nFlexLayout keeps computing the stretched cross size and deciding whether a relayout is needed;\nRenderFlexibleBox performs it.\n\nNo change in behavior: the moved bodies are unchanged, run under the same conditions, and in the\nsame order.\n\n* Source/WebCore/rendering/RenderFlexLayout.cpp:\n* Source/WebCore/rendering/RenderFlexLayout.h:\n* Source/WebCore/rendering/RenderFlexibleBox.cpp:\n* Source/WebCore/rendering/RenderFlexibleBox.h:\n\nCanonical link: https://commits.webkit.org/317305@main",
      "email": "zalan@apple.com",
      "hash": "efc8ff315639f043bf39e026cee189dce285886d",
      "subject": "[cleanup] Have RenderFlexibleBox lay out a flex item for stretch alignment instead of FlexLayout"
    },
    "317306@main": {
      "author": "Keith Miller",
      "avatar": "https://www.gravatar.com/avatar/bddc1595b29098429a6ce7c8bf4aced2?d=identicon\u0026s=64",
      "cl": "317306@main",
      "clUrl": "https://commits.webkit.org/317306@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319384\nrdar://182210113\n\nReviewed by Ben Nham.\n\nJSC's feature-flag options (e.g. useTemporal, useJSPI, and the wasm feature\nflags) were declared standalone in OptionsList.h, separate from the web\npreferences tracking other features. Move them into UnifiedWebPreferences.yaml.\nEach is declared as a web preference with a jscOptionName tying it to its\nJSC::Options option. GeneratePreferences.rb emits\nFOR_EACH_JSC_WEB_PREFERENCE_OPTION, which is spliced into FOR_EACH_JSC_OPTION\nin OptionsList.h, so the options are still declared there but are now sourced\nfrom the yaml. It also generates, in SharedPreferencesForWebProcess.h, a\ncompact JSCOptionsForWebProcess struct with only the JSC options and a\nFOR_EACH_JSC_OPTION_SHARED_PREFERENCE pairing macro.\n\nJSC::Options freeze on first VM creation (and are made read-only in production),\nso the launching page's values must reach the web process beforehand. They are\ncarried in WebProcessCreationParameters and applied in\nWebProcess::initializeWebProcess ahead of commonVM(). A prewarmed process freezes\nat the option defaults, so it is only reused for a page whose options match those\ndefaults. WebKitLegacy has no web process, so DumpRenderTree applies the options\nin-process.\n\nAlso, re-baseline wasm WPT tests now that the JSC experimental options are\nvisible to the tests.\n\nCanonical link: https://commits.webkit.org/317306@main",
      "email": "keith_miller@apple.com",
      "hash": "3af9d4073d75a9b44668cebc03a41223dbef5745",
      "subject": "JSC feature flags should be driven by UnifiedWebPreferences.yaml"
    },
    "317307@main": {
      "author": "Antoine Quint",
      "avatar": "https://www.gravatar.com/avatar/9b3ef1e754f8d994f21ff67c660cbbe6?d=identicon\u0026s=64",
      "cl": "317307@main",
      "clUrl": "https://commits.webkit.org/317307@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319471\nrdar://182282309\n\nReviewed by Sam Weinig.\n\nAdd parsing support for the `animation-trigger` property as specified by\nhttps://drafts.csswg.org/animation-triggers-1/#animation-trigger-shorthand.\n\n* LayoutTests/imported/w3c/web-platform-tests/css/css-cascade/all-prop-initial-xml-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/html/rendering/widgets/shadow-dom-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/scroll-animations/animation-trigger/animation-trigger-alternate.tentative-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/scroll-animations/animation-trigger/animation-trigger-calc-with-zoom.tentative-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/scroll-animations/animation-trigger/animation-trigger-late-attached-timeline.tentative-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/scroll-animations/animation-trigger/animation-trigger-once-play-state.tentative-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/scroll-animations/animation-trigger/animation-trigger-once.tentative-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/scroll-animations/animation-trigger/animation-trigger-repeat.tentative-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/scroll-animations/animation-trigger/animation-trigger-state.tentative-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/scroll-animations/animation-trigger/parsing/animation-trigger-parsing.tentative-expected.txt:\n* LayoutTests/platform/glib/imported/w3c/web-platform-tests/css/css-cascade/all-prop-initial-xml-expected.txt:\n* Source/WebCore/Headers.cmake:\n* Source/WebCore/Sources.txt:\n* Source/WebCore/WebCore.xcodeproj/project.pbxproj:\n* Source/WebCore/css/CSSProperties.json:\n* Source/WebCore/css/CSSValueKeywords.in:\n* Source/WebCore/style/values/animations/StyleAnimation.cpp:\n(WebCore::Style::Animation::Data::operator== const):\n(WebCore::Style::operator\u003c\u003c):\n* Source/WebCore/style/values/animations/StyleAnimation.h:\n(WebCore::Style::Animation::initialTrigger):\n* Source/WebCore/style/values/animations/StyleSingleAnimationTrigger.cpp: Added.\n(WebCore::Style::CSSValueConversion\u003cNamedAnimationTrigger\u003e::operator):\n(WebCore::Style::CSSValueConversion\u003cAnimationAction\u003e::operator):\n* Source/WebCore/style/values/animations/StyleSingleAnimationTrigger.h: Added.\n(WebCore::Style::get):\n\nCanonical link: https://commits.webkit.org/317307@main",
      "email": "graouts@webkit.org",
      "hash": "f82ca57ad9b7224c783cac937d15415af50d380f",
      "subject": "[animation-triggers] add parsing support for the `animation-trigger` CSS property"
    },
    "317308@main": {
      "author": "Yoav Weiss",
      "avatar": "https://www.gravatar.com/avatar/228600d5a1cfae576e64ee92e46f6a1e?d=identicon\u0026s=64",
      "cl": "317308@main",
      "clUrl": "https://commits.webkit.org/317308@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319150\n\nReviewed by Alex Christensen.\n\nThis imports the Early Hints tests.\n\nUpstream commit: https://github.com/web-platform-tests/wpt/commit/509e6fa4bc34de46802aae59ff103b87caa426a0\n\n* LayoutTests/TestExpectations:\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/404-with-early-hints.h2.window-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/404-with-early-hints.h2.window.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/404-with-early-hints.h2.window.js: Added.\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/arbitrary-header-in-early-hints.h2.window-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/arbitrary-header-in-early-hints.h2.window.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/arbitrary-header-in-early-hints.h2.window.js: Added.\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/coep-early-hints-none-final-require-corp.h2.window-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/coep-early-hints-none-final-require-corp.h2.window.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/coep-early-hints-none-final-require-corp.h2.window.js: Added.\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/coep-early-hints-require-corp-final-none.h2.window-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/coep-early-hints-require-corp-final-none.h2.window.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/coep-early-hints-require-corp-final-none.h2.window.js: Added.\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/csp-early-hints-absent-final-absent.h2.window-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/csp-early-hints-absent-final-absent.h2.window.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/csp-early-hints-absent-final-absent.h2.window.js: Added.\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/csp-early-hints-absent-final-allowed.h2.window-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/csp-early-hints-absent-final-allowed.h2.window.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/csp-early-hints-absent-final-allowed.h2.window.js: Added.\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/csp-early-hints-absent-final-disallowed.h2.window-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/csp-early-hints-absent-final-disallowed.h2.window.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/csp-early-hints-absent-final-disallowed.h2.window.js: Added.\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/csp-early-hints-allowed-final-absent.h2.window-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/csp-early-hints-allowed-final-absent.h2.window.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/csp-early-hints-allowed-final-absent.h2.window.js: Added.\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/csp-early-hints-allowed-final-allowed.h2.window-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/csp-early-hints-allowed-final-allowed.h2.window.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/csp-early-hints-allowed-final-allowed.h2.window.js: Added.\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/csp-early-hints-allowed-final-disallowed.h2.window-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/csp-early-hints-allowed-final-disallowed.h2.window.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/csp-early-hints-allowed-final-disallowed.h2.window.js: Added.\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/csp-early-hints-disallowed-final-absent.h2.window-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/csp-early-hints-disallowed-final-absent.h2.window.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/csp-early-hints-disallowed-final-absent.h2.window.js: Added.\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/csp-early-hints-disallowed-final-allowed.h2.window-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/csp-early-hints-disallowed-final-allowed.h2.window.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/csp-early-hints-disallowed-final-allowed.h2.window.js: Added.\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/csp-early-hints-disallowed-final-disallowed.h2.window-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/csp-early-hints-disallowed-final-disallowed.h2.window.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/csp-early-hints-disallowed-final-disallowed.h2.window.js: Added.\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/early-hints-response-time.h2-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/early-hints-response-time.h2.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/embed-object.h2.window-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/embed-object.h2.window.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/embed-object.h2.window.js: Added.\n(promise_test.async t):\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/iframe-coep-disallow.h2-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/iframe-coep-disallow.h2.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/iframe-coep-disallow.h2.html.headers: Added.\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/iframe-pdf.h2.window-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/iframe-pdf.h2.window.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/iframe-pdf.h2.window.js: Added.\n(promise_test.async t):\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/iframe-x-frame-options-deny.h2.window-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/iframe-x-frame-options-deny.h2.window.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/iframe-x-frame-options-deny.h2.window.js: Added.\n(promise_test.async t):\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/invalid-headers-in-early-hints.h2.window-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/invalid-headers-in-early-hints.h2.window.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/invalid-headers-in-early-hints.h2.window.js: Added.\n(async testInvalidHeader):\n(promise_test.async t):\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/modulepreload-as-worker-cross-origin.h2.window-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/modulepreload-as-worker-cross-origin.h2.window.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/modulepreload-as-worker-cross-origin.h2.window.js: Added.\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/modulepreload-as-worker.h2.window-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/modulepreload-as-worker.h2.window.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/modulepreload-as-worker.h2.window.js: Added.\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/modulepreload-cross-origin.h2.window-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/modulepreload-cross-origin.h2.window.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/modulepreload-cross-origin.h2.window.js: Added.\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/modulepreload-in-early-hints.h2.window-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/modulepreload-in-early-hints.h2.window.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/modulepreload-in-early-hints.h2.window.js: Added.\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/multiple-early-hints-responses.h2.window-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/multiple-early-hints-responses.h2.window.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/multiple-early-hints-responses.h2.window.js: Added.\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/preconnect-in-early-hints.h2.window-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/preconnect-in-early-hints.h2.window.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/preconnect-in-early-hints.h2.window.js: Added.\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/preload-fetch.h2.window-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/preload-fetch.h2.window.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/preload-fetch.h2.window.js: Added.\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/preload-fetchpriority.h2.window-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/preload-fetchpriority.h2.window.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/preload-fetchpriority.h2.window.js: Added.\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/preload-finished-before-final-response.h2.window-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/preload-finished-before-final-response.h2.window.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/preload-finished-before-final-response.h2.window.js: Added.\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/preload-finished-while-receiving-final-response-body.h2.window-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/preload-finished-while-receiving-final-response-body.h2.window.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/preload-finished-while-receiving-final-response-body.h2.window.js: Added.\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/preload-in-flight-when-consumed.h2.window-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/preload-in-flight-when-consumed.h2.window.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/preload-in-flight-when-consumed.h2.window.js: Added.\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/preload-initiator-type.h2.window-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/preload-initiator-type.h2.window.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/preload-initiator-type.h2.window.js: Added.\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/preload-integrity-mismatch.h2.window-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/preload-integrity-mismatch.h2.window.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/preload-integrity-mismatch.h2.window.js: Added.\n(test):\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/preload-integrity.h2.window-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/preload-integrity.h2.window.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/preload-integrity.h2.window.js: Added.\n(test):\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/preload-with-csp-document-disallow.h2.window-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/preload-with-csp-document-disallow.h2.window.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/preload-with-csp-document-disallow.h2.window.js: Added.\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/preload-with-invalid-as.h2.window-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/preload-with-invalid-as.h2.window.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/preload-with-invalid-as.h2.window.js: Added.\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/preload-without-as.h2.window-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/preload-without-as.h2.window.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/preload-without-as.h2.window.js: Added.\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/preload-without-csp-document-disallow.h2.window-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/preload-without-csp-document-disallow.h2.window.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/preload-without-csp-document-disallow.h2.window.js: Added.\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/redirect-cross-origin-between-early-hints.h2.window-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/redirect-cross-origin-between-early-hints.h2.window.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/redirect-cross-origin-between-early-hints.h2.window.js: Added.\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/redirect-cross-origin.h2.window-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/redirect-cross-origin.h2.window.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/redirect-cross-origin.h2.window.js: Added.\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/redirect-same-origin-between-early-hints.h2.window-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/redirect-same-origin-between-early-hints.h2.window.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/redirect-same-origin-between-early-hints.h2.window.js: Added.\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/redirect-same-origin.h2.window-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/redirect-same-origin.h2.window.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/redirect-same-origin.h2.window.js: Added.\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/referrer-policy-no-referrer.h2.window-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/referrer-policy-no-referrer.h2.window.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/referrer-policy-no-referrer.h2.window.js: Added.\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/referrer-policy-origin-when-cross-origin.h2.window-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/referrer-policy-origin-when-cross-origin.h2.window.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/referrer-policy-origin-when-cross-origin.h2.window.js: Added.\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/referrer-policy-origin.h2.window-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/referrer-policy-origin.h2.window.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/referrer-policy-origin.h2.window.js: Added.\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/referrer-policy-same-origin.h2.window-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/referrer-policy-same-origin.h2.window.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/referrer-policy-same-origin.h2.window.js: Added.\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/referrer-policy-unsafe-url.h2.window-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/referrer-policy-unsafe-url.h2.window.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/referrer-policy-unsafe-url.h2.window.js: Added.\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/resources/404-with-early-hints.h2.py: Added.\n(handle_headers):\n(main):\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/resources/404-with-early-hints.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/resources/arbitrary-header-in-early-hints.h2.py: Added.\n(handle_headers):\n(main):\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/resources/arbitrary-header-in-early-hints.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/resources/coep-mismatch.h2.py: Added.\n(handle_headers):\n(main):\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/resources/coep-mismatch.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/resources/csp-basic-loader.h2.py: Added.\n(_calculate_csp_value):\n(handle_headers):\n(main):\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/resources/csp-basic.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/resources/csp-document-disallow-loader.h2.py: Added.\n(handle_headers):\n(main):\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/resources/csp-document-disallow.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/resources/delayed-js.h2.py: Added.\n(main):\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/resources/early-hints-delay.h2.py: Added.\n(handle_headers):\n(main):\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/resources/early-hints-helpers.sub.js: Added.\n(openWindow):\n(navigateToTestWithEarlyHints):\n(getPreloadsFromSearchParams):\n(navigateToTestWithEarlyHintsPreconnects):\n(getPreconnectsFromSearchParams):\n(async fetchResource):\n(async fetchScript):\n(async fetchImage):\n(isPreloadedByEarlyHints):\n(testReferrerPolicy):\n(navigateToContentSecurityPolicyBasicTest):\n(navigateToContentSecurityPolicyDocumentDisallowTest):\n(navigateToCrossOriginEmbedderPolicyMismatchTest):\n(ehLog):\n(window.opener.typeof.add_completion_callback.string_appeared_here.add_completion_callback):\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/resources/early-hints-test-loader.h2.py: Added.\n(_remove_relative_resources_prefix):\n(handle_headers):\n(main):\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/resources/empty-corp-absent.js: Added.\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/resources/empty-corp-absent.js.headers: Added.\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/resources/empty.css: Added.\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/resources/empty.js: Added.\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/resources/empty.js.headers: Added.\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/resources/empty.json: Added.\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/resources/empty.json.headers: Added.\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/resources/fetch-and-record-js.h2.py: Added.\n(main):\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/resources/get-fetch-timing-and-headers.h2.py: Added.\n(main):\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/resources/html-with-early-hints.h2.py: Added.\n(handle_headers):\n(main):\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/resources/invalid-headers-in-early-hints.h2.py: Added.\n(handle_headers):\n(main):\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/resources/modulepreload-in-early-hints.h2.py: Added.\n(handle_headers):\n(main):\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/resources/modulepreload-in-early-hints.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/resources/multiple-early-hints-preconnects.h2.py: Added.\n(handle_headers):\n(main):\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/resources/multiple-early-hints-preconnects.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/resources/multiple-early-hints-responses.h2.py: Added.\n(handle_headers):\n(main):\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/resources/multiple-early-hints-responses.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/resources/pdf-with-early-hints.h2.py: Added.\n(handle_headers):\n(main):\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/resources/png-with-early-hints.h2.py: Added.\n(handle_headers):\n(main):\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/resources/preconnect-in-early-hints.h2.py: Added.\n(handle_headers):\n(main):\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/resources/preconnect-in-early-hints.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/resources/preload-as-test.h2.py: Added.\n(handle_headers):\n(main):\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/resources/preload-as-test.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/resources/preload-fetch.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/resources/preload-fetchpriority.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/resources/preload-finished-before-final-response.h2.py: Added.\n(handle_headers):\n(main):\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/resources/preload-finished-before-final-response.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/resources/preload-finished-while-receiving-final-response-body.h2.py: Added.\n(handle_headers):\n(main):\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/resources/preload-finished-while-receiving-final-response-body.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/resources/preload-in-flight-when-consumed.h2.py: Added.\n(handle_headers):\n(main):\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/resources/preload-in-flight-when-consumed.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/resources/preload-initiator-type.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/resources/preload-integrity-mismatch.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/resources/preload-integrity.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/resources/redirect-between-early-hints.h2.py: Added.\n(_send_early_hints):\n(handle_headers):\n(main):\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/resources/redirect-cross-origin-between-early-hints.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/resources/redirect-cross-origin.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/resources/redirect-same-origin-between-early-hints.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/resources/redirect-same-origin.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/resources/redirect-with-early-hints.h2.py: Added.\n(handle_headers):\n(main):\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/resources/referrer-policy-test-loader.h2.py: Added.\n(handle_headers):\n(main):\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/resources/referrer-policy-test.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/resources/resume-delayed-js.h2.py: Added.\n(main):\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/resources/speculation-measurement-early-hints-preconnect.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/resources/speculation-measurement-early-hints.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/resources/square.png: Added.\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/resources/square.png.headers: Added.\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/resources/utils.py: Added.\n(_url_dir):\n(store_request_timing_and_headers):\n(get_request_timing_and_headers):\n(wait_for_preload_to_finish):\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/resources/w3c-import.log: Added.\n* LayoutTests/imported/w3c/web-platform-tests/loading/early-hints/w3c-import.log: Added.\n* LayoutTests/platform/glib/TestExpectations:\n* LayoutTests/platform/wpe/TestExpectations:\n* LayoutTests/tests-options.json:\n\nCanonical link: https://commits.webkit.org/317308@main",
      "email": "yoav.weiss@shopify.com",
      "hash": "99f15e15e219f672b8d97754fbe7512819f51719",
      "subject": "Import the Early Hints WPT tests"
    },
    "317309@main": {
      "author": "Sergey Rubanov",
      "avatar": "https://www.gravatar.com/avatar/d04164fa4e06ce85533085f24c766e17?d=identicon\u0026s=64",
      "cl": "317309@main",
      "clUrl": "https://commits.webkit.org/317309@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=269744\n\nReviewed by Keith Miller.\n\nWhen BBQ sees a constant divisor that is a power of two, it turns\ndiv/rem into shifts and masks. That path only ran for positive\ndivisors, so values like -2 or -32 always took the slow general case.\n\nThis extends the same path to negative signed divisors by working\nwith the absolute value. Remainder does not depend on the sign of\nthe divisor, so it can reuse the positive case as-is. Division by a\nnegative power of two is just the positive result with the sign\nflipped. Taking the magnitude of INT_MIN needs a bit of care since\nit is not representable as a signed integer.\n\n* Source/JavaScriptCore/wasm/WasmBBQJIT64.h:\n(JSC::Wasm::BBQJIT::emitModOrDiv):\n* JSTests/wasm/stress/divide-rem-by-negative-constant-power-of-two.js: Added.\n\nCanonical link: https://commits.webkit.org/317309@main",
      "email": "chi187@gmail.com",
      "hash": "bccb52eace5ba6706ce9d44c7dadd1b1a8b9055c",
      "subject": "[JSC] BBQ: strength-reduce signed div/rem by negative power-of-two constants"
    },
    "317310@main": {
      "author": "Cameron McCormack",
      "avatar": "https://www.gravatar.com/avatar/b2bb1b369be938a743e50f595bfa0798?d=identicon\u0026s=64",
      "cl": "317310@main",
      "clUrl": "https://commits.webkit.org/317310@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=315908\nrdar://problem/178316558\n\nReviewed by Dan Glastonbury and Tim Nguyen.\n\nChanging view-transition-name can change whether the element forms a\nstacking context, which can reorder painting. Ensure we repaint the\nelement when it changes.\n\nThis fixes view-transition-name-stacking-context-dynamic.html when run\nwith wptrunner.\n\n* Source/WebCore/style/StyleDifference.cpp:\n(WebCore::Style::DifferenceFunctions::rareDataChangeRequiresRepaint):\n* LayoutTests/fast/repaint/view-transition-name-dynamic.html: Added.\n* LayoutTests/fast/repaint/view-transition-name-dynamic-expected.txt: Added.\n\nCanonical link: https://commits.webkit.org/317310@main",
      "email": "heycam@apple.com",
      "hash": "f30aa1e23991cb7a6b8cd04d9954934ee51fece3",
      "subject": "A dynamic view-transition-name change does not repaint the affected element."
    },
    "317311@main": {
      "author": "Alan Baradlay",
      "avatar": "https://www.gravatar.com/avatar/788d66417db806c567552cfa1ae89f77?d=identicon\u0026s=64",
      "cl": "317311@main",
      "clUrl": "https://commits.webkit.org/317311@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=318614\n\u003crdar://problem/182019677\u003e\n\nReviewed by Antti Koivisto.\n\nFlexLayout::layoutFlexItemAfterMainSizing laid each flex item out once its flexed main size was\nresolved: it applied that main size, decided whether the item needed a relayout, and called\nlayoutIfNeeded (plus the pagination and repaint bookkeeping). Laying a flex item out is render-tree\nwork that belongs to the container, not the item-layout algorithm.\n\nMove it and its exclusively-used helpers (setOverridingMainSizeForFlexItem,\nresetAutoMarginsAndLogicalTopInCrossAxis, and the updateFlexItemDirtyBitsBeforeLayout file-static)\ninto RenderFlexibleBox. flexItemHasPercentHeightDescendants moves too, since the stretch relayout\ndecision also reads it. FlexLayout::layoutFlexItems now calls\nm_flexBox.layoutFlexItemAfterMainSizing per item; resetAutoMarginsAndLogicalTopInCrossAxis reads\nits flow direction from flexLayoutUtils() rather than the constraints it no longer has.\n\nWith this, FlexLayout no longer lays out any flex item directly: it computes the sizes and\npositions and decides whether a relayout is needed, and RenderFlexibleBox performs every layout\n(the block-axis measure, the main-axis layout here, and the stretch relayouts).\n\nNo change in behavior: the moved bodies are unchanged, run under the same conditions, and in the\nsame order.\n\n* Source/WebCore/rendering/RenderFlexLayout.cpp:\n* Source/WebCore/rendering/RenderFlexLayout.h:\n* Source/WebCore/rendering/RenderFlexibleBox.cpp:\n* Source/WebCore/rendering/RenderFlexibleBox.h:\n\nCanonical link: https://commits.webkit.org/317311@main",
      "email": "zalan@apple.com",
      "hash": "c8b6308aaa691fa0dd3f84bdcbf2d15a2f97b01e",
      "subject": "[cleanup] Have RenderFlexibleBox lay out a flex item after main sizing instead of FlexLayout"
    },
    "317312@main": {
      "author": "Ahmad Saleem",
      "avatar": "https://www.gravatar.com/avatar/38445f84fe28aa19bfeb1f59f6559532?d=identicon\u0026s=64",
      "cl": "317312@main",
      "clUrl": "https://commits.webkit.org/317312@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319552\nrdar://182381359\n\nReviewed by Alan Baradlay.\n\nsetStaticInlinePositionForChild adjusted the inline position with\n`startOffsetForContent() - startOffsetForContent()`, which is\nunconditionally 0. This originated from a fragment-aware overload\n(startOffsetForContent(blockOffset)) that was deleted in 288342@main\nonce content offsets were established to be fragment-independent;\nthe collapse left both terms identical and the enclosing\nfragmented-flow branch as pure dead code.\n\nRemove the no-op branch. No behavior change.\n\n* Source/WebCore/rendering/RenderBlockFlow.cpp:\n(WebCore::RenderBlockFlow::setStaticInlinePositionForChild):\n\nCanonical link: https://commits.webkit.org/317312@main",
      "email": "ahmad.saleem792+github@gmail.com",
      "hash": "064fdb41a68c28d74e22fd409627d38736464526",
      "subject": "Remove dead no-op fragment-offset shift in RenderBlockFlow::setStaticInlinePositionForChild"
    },
    "317313@main": {
      "author": "Ahmad Saleem",
      "avatar": "https://www.gravatar.com/avatar/38445f84fe28aa19bfeb1f59f6559532?d=identicon\u0026s=64",
      "cl": "317313@main",
      "clUrl": "https://commits.webkit.org/317313@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319563\nrdar://182391543\n\nReviewed by Alan Baradlay.\n\nThe trailing `bool hasWhiteSpaceTrim` sat after `size_t inlineBoxCount`,\nforcing padding before the size_t and tail padding after the bool\n(sizeof == 24). Grouping all four bools ahead of inlineBoxCount packs\nthe struct to 16 bytes with no behavioral change.\n\n* Source/WebCore/layout/formattingContexts/inline/InlineContentCache.h:\n* Source/WebCore/layout/formattingContexts/inline/InlineItemsBuilder.cpp:\n(WebCore::Layout::InlineItemsBuilder::build): Match the reordered\nContentAttributes aggregate-initializer.\n\nCanonical link: https://commits.webkit.org/317313@main",
      "email": "ahmad.saleem792+github@gmail.com",
      "hash": "cd3726cb55b50cd95abe606c951d18a0fe052efb",
      "subject": "Reduce sizeof InlineContentCache::InlineItems::ContentAttributes by reordering members"
    },
    "317314@main": {
      "author": "Ahmad Saleem",
      "avatar": "https://www.gravatar.com/avatar/38445f84fe28aa19bfeb1f59f6559532?d=identicon\u0026s=64",
      "cl": "317314@main",
      "clUrl": "https://commits.webkit.org/317314@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319550\nrdar://182380648\n\nReviewed by Alan Baradlay.\n\nIn setIntegrationBaseline(), the fieldset branch guarded a return on\nisWritingModeRoot || shouldApplyLayoutContainment(), returning the raw\nmarginBoxLogicalHeight in that case and an integer-snapped value\notherwise. When the subpixelInlineLayoutEnabled setting was removed\n(now that subpixel inline layout is always enabled), the snapToInt()\ncall was replaced by plain marginBoxLogicalHeight, leaving both arms of\nthe if identical and the guard dead.\n\nCollapse the branch to a single return. No behavior change; the raw\nsubpixel value is now always the intended result.\n\n* Source/WebCore/layout/integration/LayoutIntegrationBoxGeometryUpdater.cpp:\n(WebCore::LayoutIntegration::setIntegrationBaseline):\n\nCanonical link: https://commits.webkit.org/317314@main",
      "email": "ahmad.saleem792+github@gmail.com",
      "hash": "040e525dd9bdf8d0ce85934483f948b48e0cabf5",
      "subject": "Dead if in fieldset baseline computation after subpixel-inline-layout cleanup"
    },
    "317315@main": {
      "author": "Ahmad Saleem",
      "avatar": "https://www.gravatar.com/avatar/38445f84fe28aa19bfeb1f59f6559532?d=identicon\u0026s=64",
      "cl": "317315@main",
      "clUrl": "https://commits.webkit.org/317315@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319565\nrdar://182394518\n\nReviewed by Alan Baradlay.\n\nLine::Run interleaved 8-byte-aligned members with 4-byte InlineLayoutUnits\nand 1-byte enums, leaving three interior padding holes. Reorder by\ndescending alignment to pack them tightly, shrinking sizeof(Line::Run)\nfrom 88 to 80 bytes.\n\nConstructor initializer lists are reordered to match, keeping -Wreorder\nclean. No behavior change.\n\n* Source/WebCore/layout/formattingContexts/inline/InlineLine.cpp:\n(WebCore::Layout::Line::Run::Run):\n(WebCore::Layout::m_bidiLevel):\n* Source/WebCore/layout/formattingContexts/inline/InlineLine.h:\n\nCanonical link: https://commits.webkit.org/317315@main",
      "email": "ahmad.saleem792+github@gmail.com",
      "hash": "3adf5e1fc4ba8a43de378c957bceb50f30582a12",
      "subject": "Reduce sizeof Line::Run by reordering members"
    },
    "317316@main": {
      "author": "Sammy Gill",
      "avatar": "https://www.gravatar.com/avatar/715a3cfee5d85ee90ccfdaa2a4a7a5a3?d=identicon\u0026s=64",
      "cl": "317316@main",
      "clUrl": "https://commits.webkit.org/317316@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319527\nrdar://182352789\n\nReviewed by Vitor Roriz.\n\nThe current eligibility code is supposed to allow items with certain\nposition values (start and normal) along with an overflow alignment of\ndefault and position type of non-legacy. Unfortunately, there was a\nsmall logic error and we were letting items through that had a\nnon-default overflow alignment and legacy position type. So here we just\nrework it to make sure we early return (i.e. not run GFC) instead for\nthose cases.\n\nCanonical link: https://commits.webkit.org/317316@main",
      "email": "sammy.gill@apple.com",
      "hash": "fb365d67854d220a1a3e21a1a5993efd9606616a",
      "subject": "[GFC][Integration] Certain alignment is accidentally let through"
    },
    "317317@main": {
      "author": "Fady Farag",
      "avatar": "https://www.gravatar.com/avatar/0ac5127c69f90d0c57054173ae4c3108?d=identicon\u0026s=64",
      "cl": "317317@main",
      "clUrl": "https://commits.webkit.org/317317@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319532\nrdar://182360378\n\nReviewed by Chris Dumez.\n\nThis lets the compiler see the constant values for better optimization.\n\n* Source/WebCore/platform/Pasteboard.h:\n* Source/WebCore/platform/gamepad/GamepadConstants.cpp:\n* Source/WebCore/platform/gamepad/GamepadConstants.h:\n* Source/WebCore/platform/mac/PasteboardMac.mm:\n* Source/WebCore/platform/network/ResourceErrorBase.cpp:\n* Source/WebCore/platform/network/ResourceErrorBase.h:\n\nCanonical link: https://commits.webkit.org/317317@main",
      "email": "com.webkit.iidmsa@gmail.com",
      "hash": "fecef8215e3584312bd6957686c644d5a891b3aa",
      "subject": "Use C++17 `inline constexpr` variables instead of `extern const` in WebCore"
    },
    "317318@main": {
      "author": "Ahmad Saleem",
      "avatar": "https://www.gravatar.com/avatar/38445f84fe28aa19bfeb1f59f6559532?d=identicon\u0026s=64",
      "cl": "317318@main",
      "clUrl": "https://commits.webkit.org/317318@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319519\n\nReviewed by Chris Dumez.\n\nTwo copy/paste typos in HashFunctions.h:\n\n- IntPairHash\u003cT, U\u003e::equal delegated to PairHash\u003cT, T\u003e instead of\n  PairHash\u003cT, U\u003e, inconsistent with hash() and\n  safeToCompareToEmptyOrDeleted, which both use \u003cT, U\u003e. When T != U this\n  forced an implicit conversion of the pair's second element to T before\n  comparing.\n\n- DefaultHash\u003cstd::pair\u003cint, unsigned\u003e\u003e specialized IntPairHash\u003cunsigned,\n  unsigned\u003e rather than IntPairHash\u003cint, unsigned\u003e, the odd one out among\n  the integer-pair specializations that otherwise forward the pair's own\n  element types.\n\n* Source/WTF/wtf/HashFunctions.h:\n(WTF::IntPairHash::equal):\n\nCanonical link: https://commits.webkit.org/317318@main",
      "email": "ahmad.saleem792+github@gmail.com",
      "hash": "c432d408c1757a45d4cdb53c2f1a7ab134ebd4c0",
      "subject": "[WTF] IntPairHash::equal and DefaultHash\u003cpair\u003cint, unsigned\u003e\u003e use wrong template arguments"
    },
    "317319@main": {
      "author": "Diego Pino Garcia",
      "avatar": "https://www.gravatar.com/avatar/e8cce88637f1a6e79155e8371e24b2e8?d=identicon\u0026s=64",
      "cl": "317319@main",
      "clUrl": "https://commits.webkit.org/317319@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=272224\n\nReviewed by Ryosuke Niwa.\n\nSelection directionality is platform-dependent: GTK/WPE and Windows treat\nselections as directional, while macOS and iOS do not. This is exposed\nthrough 'EditingBehavior::shouldConsiderSelectionAsDirectional()', and\n'HTMLInputElement::updateType()', which already accounted for it when\ncaching the initial selection of a newly-selectable input.\n\nOther call sites that cache a \"no selection\" state, such as\n'HTMLTextAreaElement::setValueCommon()' and\n'HTMLInputElement::cacheSelectionInResponseToSetValue()', instead hardcoded\n'SelectionHasNoDirection' regardless of platform.\n\nOn GTK/WPE this mismatched the direction computed once an actual selection\nwas made, so restoring the same collapsed selection (e.g. via 'setSelectionRange(0, 0))'\nlooked like a direction change and fired a spurious 'selectionchange' event.\n\nExtract the platform-aware logic from 'updateType()' into\n'HTMLTextFormControlElement::normalizeSelectionDirection()', which maps\n'SelectionHasNoDirection' to 'SelectionHasForwardDirection' on platforms where\nselections are directional, and use it from every call site that was\npreviously hardcoding 'SelectionHasNoDirection'.\n\n* Source/WebCore/html/HTMLInputElement.cpp:\n(WebCore::HTMLInputElement::updateType):\n* Source/WebCore/html/HTMLInputElement.h:\n* Source/WebCore/html/HTMLTextAreaElement.cpp:\n(WebCore::HTMLTextAreaElement::setValueCommon):\n* Source/WebCore/html/HTMLTextFormControlElement.cpp:\n(WebCore::HTMLTextFormControlElement::normalizeSelectionDirection):\n* Source/WebCore/html/HTMLTextFormControlElement.h:\n* LayoutTests/platform/glib/imported/w3c/web-platform-tests/selection/textcontrols/selectionchange-expected.txt: Removed.\n\nCanonical link: https://commits.webkit.org/317319@main",
      "email": "dpino@igalia.com",
      "hash": "f22fb0973e728cf1ab06ed5bd217cd2360f71967",
      "subject": "[WPE] imported/w3c/web-platform-tests/selection/textcontrols/selectionchange.html is a text failure"
    },
    "317320@main": {
      "author": "Yusuke Suzuki",
      "avatar": "https://www.gravatar.com/avatar/3455d9081295e3e740c1ffa901217d9b?d=identicon\u0026s=64",
      "cl": "317320@main",
      "clUrl": "https://commits.webkit.org/317320@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319530\nrdar://182353926\n\nReviewed by Yijia Huang.\n\nFastAsyncGenerator fast path should skip promise creation only when\npromise watchpoint is not fired since PromiseResolve accesses promise.constructor,\nso if we are setting a getter in Promise.prototype.constructor etc.,\nskipping this is observable.\n\n1. LLInt and Baseline checks this watchpoint. And going to the slow path\n   when it is already fired.\n2. In DFG / FTL, subscribing this watchpoint and calling a fast path. If\n   this watchpoint is already fired, going to the slow path code.\n\nTest: JSTests/stress/async-generator-fast-consumer-species-tamper-during.js\n\n* JSTests/stress/async-generator-fast-consumer-species-tamper-during.js: Added.\n(assert):\n(armReadCounter):\n(get restoreCtor):\n(async asyncGeneratorTamperDuring.async g):\n(async asyncGeneratorTamperDuring):\n(async main):\n* Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:\n(JSC::DFG::ByteCodeParser::handleAsyncIteratorOpen):\n* Source/JavaScriptCore/jit/JITCall.cpp:\n(JSC::JIT::emit_op_async_iterator_next):\n* Source/JavaScriptCore/jit/JITOperations.cpp:\n(JSC::JSC_DEFINE_JIT_OPERATION):\n* Source/JavaScriptCore/jit/JITOperations.h:\n* Source/JavaScriptCore/llint/LLIntSlowPaths.cpp:\n(JSC::LLInt::LLINT_SLOW_PATH_DECL):\n* Source/JavaScriptCore/runtime/AsyncGeneratorPrototype.cpp:\n(JSC::asyncGeneratorNext):\n(JSC::JSC_DEFINE_HOST_FUNCTION):\n* Source/JavaScriptCore/runtime/CommonSlowPaths.cpp:\n(JSC::asyncIteratorOpenTryFastImpl):\n* Source/JavaScriptCore/runtime/JSAsyncGenerator.h:\n* Source/JavaScriptCore/runtime/JSMicrotask.cpp:\n(JSC::asyncIteratorNextWithDriver):\n* Source/JavaScriptCore/runtime/JSMicrotask.h:\n\nCanonical link: https://commits.webkit.org/317320@main",
      "email": "ysuzuki@apple.com",
      "hash": "605bd7edf69445e082f71fc5b288b68b28c36045",
      "subject": "[JSC] for-await fast consumer must re-check the Promise species watchpoint"
    },
    "317321@main": {
      "author": "Yusuke Suzuki",
      "avatar": "https://www.gravatar.com/avatar/3455d9081295e3e740c1ffa901217d9b?d=identicon\u0026s=64",
      "cl": "317321@main",
      "clUrl": "https://commits.webkit.org/317321@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319528\nrdar://182353166\n\nReviewed by Yijia Huang.\n\nWe observed that significant bloating of JIT code when YarrJIT is having\nhuge amount of nested paren contexts. The reason is that we need to save\nand restore state, and it becomes sequence of store / load, and\ngenerating entire code sequentially and making code size large. This\npatch adds a threshold and generating a loop when it exceeds a\nthreshold. We use newly introduced regT3 to cleanly and efficiently do this.\n\nTest: JSTests/microbenchmarks/regexp-deep-nested-paren-context.js\n\n* JSTests/microbenchmarks/regexp-deep-nested-paren-context.js: Added.\n(ipv6):\n(0.9.1.9.0.9.1.0.9.0.9.2.0.4.0.9.25.0.5):\n* Source/JavaScriptCore/assembler/MacroAssemblerARM64.h:\n(JSC::MacroAssemblerARM64::transfer64):\n(JSC::MacroAssemblerARM64::transferPair64):\n* Source/JavaScriptCore/yarr/YarrJIT.cpp:\n\nCanonical link: https://commits.webkit.org/317321@main",
      "email": "ysuzuki@apple.com",
      "hash": "4a3ab620c332b169ab7a2487a0e3100fd12d68ca",
      "subject": "[YARR] Use loop for massive save and restore of subpattern captures"
    },
    "317322@main": {
      "author": "Simon Fraser",
      "avatar": "https://www.gravatar.com/avatar/3763324aa0cdfa93be751c6081b8006a?d=identicon\u0026s=64",
      "cl": "317322@main",
      "clUrl": "https://commits.webkit.org/317322@main",
      "description": "rdar://182242396\nhttps://bugs.webkit.org/show_bug.cgi?id=319417\n\nReviewed by Brandon Stewart.\n\nUpstream commit: https://github.com/web-platform-tests/wpt/commit/496ad2c19813ba0c217b188d7422f1bf302045eb\n\n* LayoutTests/TestExpectations:\n* LayoutTests/imported/w3c/resources/resource-files.json:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-shapes/animation/shape-outside-composition-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-shapes/animation/shape-outside-composition.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-shapes/animation/shape-outside-interpolation-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-shapes/animation/shape-outside-interpolation.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-shapes/animation/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-shapes/crashtests/shape-outside-extreme-percent.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-shapes/crashtests/w3c-import.log: Copied from LayoutTests/imported/w3c/web-platform-tests/css/css-shapes/test-plan/w3c-import.log.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-shapes/parsing/shape-outside-computed-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-shapes/parsing/shape-outside-computed.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-shapes/parsing/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-shapes/shape-functions/WEB_FEATURES.yml:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-shapes/shape-functions/polygon-function-round-computed-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-shapes/shape-functions/polygon-function-round-computed.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-shapes/shape-functions/polygon-function-round-invalid-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-shapes/shape-functions/polygon-function-round-invalid.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-shapes/shape-functions/polygon-function-round-valid-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-shapes/shape-functions/polygon-function-round-valid.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-shapes/shape-functions/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-shapes/shape-outside/assorted/reference/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-shapes/shape-outside/assorted/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-shapes/shape-outside/formatting-context/reference/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-shapes/shape-outside/formatting-context/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-shapes/shape-outside/shape-box/reference/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-shapes/shape-outside/shape-box/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-shapes/shape-outside/shape-image/gradients/reference/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-shapes/shape-outside/shape-image/gradients/shape-outside-linear-gradient-001.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-shapes/shape-outside/shape-image/gradients/shape-outside-linear-gradient-002.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-shapes/shape-outside/shape-image/gradients/shape-outside-linear-gradient-003.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-shapes/shape-outside/shape-image/gradients/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-shapes/shape-outside/shape-image/reference/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-shapes/shape-outside/shape-image/support/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-shapes/shape-outside/shape-image/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-shapes/shape-outside/supported-shapes/circle/reference/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-shapes/shape-outside/supported-shapes/circle/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-shapes/shape-outside/supported-shapes/ellipse/reference/shape-outside-ellipse-053-ref.html: Renamed from LayoutTests/imported/w3c/web-platform-tests/css/css-shapes/shape-outside/supported-shapes/ellipse/shape-outside-ellipse-053-ref.html.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-shapes/shape-outside/supported-shapes/ellipse/reference/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-shapes/shape-outside/supported-shapes/ellipse/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-shapes/shape-outside/supported-shapes/inset/reference/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-shapes/shape-outside/supported-shapes/inset/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-shapes/shape-outside/supported-shapes/path/reference/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-shapes/shape-outside/supported-shapes/path/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-shapes/shape-outside/supported-shapes/polygon/reference/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-shapes/shape-outside/supported-shapes/polygon/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-shapes/shape-outside/supported-shapes/shape/reference/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-shapes/shape-outside/supported-shapes/shape/shape-outside-shape-vertical-writing-mode-crash.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-shapes/shape-outside/supported-shapes/shape/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-shapes/shape-outside/supported-shapes/support/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-shapes/shape-outside/values/support/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-shapes/shape-outside/values/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-shapes/shape-outside/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-shapes/spec-examples/reference/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-shapes/spec-examples/support/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-shapes/spec-examples/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-shapes/support/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-shapes/test-plan/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-shapes/w3c-import.log:\n\nCanonical link: https://commits.webkit.org/317322@main",
      "email": "simon.fraser@apple.com",
      "hash": "7949d4703391bd18678095512753cb9d15fc2a31",
      "subject": "Resync `css/css-shapes` from WPT upstream"
    },
    "317323@main": {
      "author": "Ryosuke Niwa",
      "avatar": "https://www.gravatar.com/avatar/ed2c71248fe3ea15d9129f6e9a2a1e85?d=identicon\u0026s=64",
      "cl": "317323@main",
      "clUrl": "https://commits.webkit.org/317323@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319591\n\nReviewed by Antoine Quint.\n\nProtect arguments before calling a function.\n\n* Source/WebCore/style/values/animations/StyleSingleAnimationTrigger.cpp:\n(WebCore::Style::CSSValueConversion\u003cNamedAnimationTrigger\u003e::operator):\n\nCanonical link: https://commits.webkit.org/317323@main",
      "email": "rniwa@webkit.org",
      "hash": "a60e8b00e5e7efe696134f398daa70c8988313e0",
      "subject": "Fix safer C++ failures after 317307@main"
    },
    "317324@main": {
      "author": "Alan Baradlay",
      "avatar": "https://www.gravatar.com/avatar/788d66417db806c567552cfa1ae89f77?d=identicon\u0026s=64",
      "cl": "317324@main",
      "clUrl": "https://commits.webkit.org/317324@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=318617\n\nReviewed by Antti Koivisto.\n\ncomputeMainAxisExtentForFlexItem reached into the container for the main-axis size a flex item's\nmain-axis length resolves against: contentBoxLogicalWidth for row flow, availableLogicalHeight for\ncolumn flow. That is a fixed container property, like the flow flags and border/padding already in\nFlexLayoutConstraints.\n\nSnapshot it into FlexLayoutConstraints as mainAxisSizeForLengthResolution, computed in\nRenderFlexibleBox; FlexLayout reads it rather than reaching back through the container. It is kept\nseparate from mainAxisAvailableSpace on purpose: that one carries the indefinite LayoutUnit::max()\nmarker used for line-breaking, whereas a percentage main-size must resolve against a real size, so\nthis one is always the concrete availableLogicalHeight rather than the specified-height-or-max\ncomputation.\n\nNo change in behavior: it is the same value. For a flex container availableLogicalHeight reads only\nstable inputs (the parent flex's override, the style height, or the containing block) and does not\nmove across the flex-base pass, so computing it up front matches what the per-item reads saw.\n\n* Source/WebCore/rendering/RenderFlexLayout.cpp:\n* Source/WebCore/rendering/RenderFlexLayout.h:\n* Source/WebCore/rendering/RenderFlexibleBox.cpp:\n\nCanonical link: https://commits.webkit.org/317324@main",
      "email": "zalan@apple.com",
      "hash": "819bb29cc5a817cc33f75eaa58dee26ef0f91d45",
      "subject": "[cleanup] Pass the flex item main-axis length-resolution size into FlexLayout as a constraint"
    },
    "317325@main": {
      "author": "Adrian Perez de Castro",
      "avatar": "https://www.gravatar.com/avatar/30ffea8cf404586741a8f5f7110c0914?d=identicon\u0026s=64",
      "cl": "317325@main",
      "clUrl": "https://commits.webkit.org/317325@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319567\n\nReviewed by Carlos Garcia Campos.\n\n* Source/WebKit/UIProcess/wpe/AcceleratedBackingStore.cpp: Remove one of\n  the two OS(ANDROID) guards used to determine whether the drm_fourcc.h\n  header should be included.\n\nCanonical link: https://commits.webkit.org/317325@main",
      "email": "aperez@igalia.com",
      "hash": "d120eb707d5ffc2f67dee1453e87ad23c7c09cca",
      "subject": "[WPE] Remove redundant OS(ANDROID) guard in AcceleratedBackingStore.cpp"
    },
    "317326@main": {
      "author": "Sergey Rubanov",
      "avatar": "https://www.gravatar.com/avatar/d04164fa4e06ce85533085f24c766e17?d=identicon\u0026s=64",
      "cl": "317326@main",
      "clUrl": "https://commits.webkit.org/317326@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=293340\n\nReviewed by Keith Miller.\n\nImporting an immutable (ref null exn) global called Global::get(), which\nrejects exnref for the JS API. Wasm-to-wasm linking only needs the stored\nreference, not a JS-visible value.\n\nAdd Global::getReference() and use it when linking immutable exnref imports.\nJS Global.value still rejects exnref.\n\n* Source/JavaScriptCore/wasm/WasmGlobal.h:\n(JSC::Wasm::Global::getReference): Added.\n* Source/JavaScriptCore/wasm/js/WebAssemblyModuleRecord.cpp:\n(JSC::WebAssemblyModuleRecord::initializeImports): Copy exnref via getReference().\n* JSTests/wasm/stress/exnref-global-get-segv.js: Assert successful import and null value.\n\nCanonical link: https://commits.webkit.org/317326@main",
      "email": "chi187@gmail.com",
      "hash": "e1171d7da90fa90cbec9c2881007361fa6516660",
      "subject": "[WASM] Allow linking immutable exnref global imports"
    },
    "317327@main": {
      "author": "Alan Baradlay",
      "avatar": "https://www.gravatar.com/avatar/788d66417db806c567552cfa1ae89f77?d=identicon\u0026s=64",
      "cl": "317327@main",
      "clUrl": "https://commits.webkit.org/317327@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319587\n\nUnreviewed test change.\n\n    \u003cstyle\u003e div { color: blue; } \u003c/style\u003e vs. \u003cstyle\u003e span { color: blue; } \u003c/style\u003e\n\n    \u003cdiv\u003e[\u003cspan\u003e1 2\u003c/span\u003e]\u003c/div\u003e\n\n* LayoutTests/imported/w3c/web-platform-tests/css/css-text/white-space/white-space-trim-discard-inner-001.xht:\n\nCanonical link: https://commits.webkit.org/317327@main",
      "email": "zalan@apple.com",
      "hash": "fd47d73a5b457e963e902c110d7b5a01093311c5",
      "subject": "[WPT] white-space-trim-discard-inner-001.xht colors the brackets blue but its reference leaves them black"
    },
    "317328@main": {
      "author": "Matthew Finkel",
      "avatar": "https://www.gravatar.com/avatar/656f8950aefb56f553c899418e06b351?d=identicon\u0026s=64",
      "cl": "317328@main",
      "clUrl": "https://commits.webkit.org/317328@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=317703\nrdar://180007937\n\nReviewed by Alex Christensen.\n\nThis patch fixes two issues.\n\n1) A recent change in the Cooca cookie implementation now requires that `SameSite=None`\nis explicitly specified along with the `Partitioned` cookie attribute. This\npatch updates the test and expectations to reflect this change.\n\n2) A recent change within WebKit broke how the preference controlling opt-in\ncookie partitioning is propagated to the web content processes. There is a race\ncondition within which a newly launched web content process may not receive an\nupdated value when the setting is enabled.\n\nThe setting propagation mechanism probably needs to be redesigned, but as a\nworkaround this patch invalidates the cached preference value whenever we\nregister a new web process with a datastore.\n\n* LayoutTests/http/tests/cookies/multiple-cookies-iframes.https-expected.txt:\n* LayoutTests/http/tests/cookies/multiple-cookies.https-expected.txt:\n* LayoutTests/http/tests/cookies/multiple-cookies.https.html:\n* Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp:\n(WebKit::WebsiteDataStore::registerProcess):\n\nCanonical link: https://commits.webkit.org/317328@main",
      "email": "m_finkel@apple.com",
      "hash": "588319957d0f360b5269bd35febab95bf871e6f7",
      "subject": "[cocoa] multiple-cookies partitioned cookies test is a constant failure"
    },
    "317329@main": {
      "author": "Yury Semikhatsky",
      "avatar": "https://www.gravatar.com/avatar/d0aee26d9689e84bd1a7f0ed8f262fe1?d=identicon\u0026s=64",
      "cl": "317329@main",
      "clUrl": "https://commits.webkit.org/317329@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319275\n\nReviewed by Claudio Saavedra.\n\nWiden the drag guards from PLATFORM(GTK) to PLATFORM(GTK) || PLATFORM(WPE)\n(and their complements) so WPE uses the same SelectionData drag IPC as\nGTK. No behavior change for GTK.\n\nWPE has no platform drag-and-drop backend, so PageClientImpl::startDrag\nstores the drag SelectionData on the view and the view drives the drag\nfrom the mouse events it already receives: dragUpdated() while the mouse\nmoves, then performDragOperation() and dragEnded() on mouse up. While a\ndrag is in flight the mouse events are consumed by the drag, like a\nplatform pointer grab would, so the page does not see them and the\ndragged selection is preserved. dragEnded() is passed the resolved drag\noperation rather than the source operation mask, which would trip an\nassertion in DataTransfer::setDestinationOperationMask(). The pending\ndrag data is dropped on navigation.\n\nUnskip the drag-and-drop tests that now pass. Move the expectation\nentries for tests that pass on WPE but still fail on GTK from the glib\nexpectations to the gtk ones. Similarly, move the baselines of three\ntests to the gtk directory and land the correct results in glib: WPE's\noutput now matches the Cocoa ports' now that the drop actually lands,\nwhile the old glib baselines captured GTK WebKitTestRunner runs where it\nnever did. The remaining skipped tests need features this path does not\nimplement yet (autoscroll, subframes, drag images) or are Cocoa-specific\n(data detectors).\n\n* LayoutTests/platform/glib/TestExpectations:\n* LayoutTests/platform/glib/editing/selection/contains-boundaries-expected.txt:\n* LayoutTests/platform/glib/fast/events/standalone-image-drag-to-editable-expected.txt:\n* LayoutTests/platform/glib/fast/lists/drag-into-marker-expected.txt:\n* LayoutTests/platform/gtk/TestExpectations:\n* LayoutTests/platform/gtk/editing/selection/contains-boundaries-expected.txt: Copied from LayoutTests/platform/glib/editing/selection/contains-boundaries-expected.txt.\n* LayoutTests/platform/gtk/fast/events/standalone-image-drag-to-editable-expected.txt: Copied from LayoutTests/platform/glib/fast/events/standalone-image-drag-to-editable-expected.txt.\n* LayoutTests/platform/gtk/fast/lists/drag-into-marker-expected.txt: Copied from LayoutTests/platform/glib/fast/lists/drag-into-marker-expected.txt.\n* LayoutTests/platform/wpe/TestExpectations:\n* LayoutTests/platform/wpe/editing/selection/4895428-1-expected.txt: Removed.\n* LayoutTests/platform/wpe/editing/selection/4895428-4-expected.txt: Removed.\n* Source/WebKit/UIProcess/API/wpe/PageClientImpl.cpp:\n(WebKit::PageClientImpl::startDrag):\n* Source/WebKit/UIProcess/API/wpe/PageClientImpl.h:\n* Source/WebKit/UIProcess/API/wpe/WPEWebView.cpp:\n(WKWPE::View::willStartLoad):\n(WKWPE::View::setDragData):\n(WKWPE::View::updateDrag):\n* Source/WebKit/UIProcess/API/wpe/WPEWebView.h:\n* Source/WebKit/UIProcess/API/wpe/WPEWebViewLegacy.cpp:\n(WKWPE::ViewLegacy::ViewLegacy):\n* Source/WebKit/UIProcess/API/wpe/WPEWebViewPlatform.cpp:\n(WKWPE::ViewPlatform::handleEvent):\n* Source/WebKit/UIProcess/PageClient.h:\n* Source/WebKit/UIProcess/WebPageProxy.cpp:\n(WebKit::WebPageProxy::performDragOperation):\n(WebKit::WebPageProxy::performDragControllerAction):\n(WebKit::WebPageProxy::startDrag):\n* Source/WebKit/WebProcess/WebPage/WebPage.cpp:\n* Source/WebKit/WebProcess/WebPage/WebPage.h:\n* Source/WebKit/WebProcess/WebPage/WebPage.messages.in:\n\nCanonical link: https://commits.webkit.org/317329@main",
      "email": "yurys@chromium.org",
      "hash": "e0ad2634cfa503cf233cb1358d9677c0e3142361",
      "subject": "[WPE] Route drag-and-drop through the GLib SelectionData IPC path"
    },
    "317330@main": {
      "author": "Antoine Quint",
      "avatar": "https://www.gravatar.com/avatar/9b3ef1e754f8d994f21ff67c660cbbe6?d=identicon\u0026s=64",
      "cl": "317330@main",
      "clUrl": "https://commits.webkit.org/317330@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319575\nrdar://182405676\n\nReviewed by Sam Weinig and Anne van Kesteren.\n\nThe CSS WG resolved [0] to \"change timeline clash resolution to use last in tree order\".\n\n[0] https://github.com/w3c/csswg-drafts/issues/12581\n\n* LayoutTests/imported/w3c/web-platform-tests/scroll-animations/css/animation-timeline-deferred-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/scroll-animations/css/timeline-scope-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/scroll-animations/css/view-timeline-dynamic-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/scroll-animations/css/view-timeline-lookup-expected.txt:\n* Source/WebCore/animation/StyleOriginatedTimelinesController.cpp:\n(WebCore::StyleOriginatedTimelinesController::determineTreeOrder):\n\nCanonical link: https://commits.webkit.org/317330@main",
      "email": "graouts@webkit.org",
      "hash": "925fa1f8d9b9d79b212008d83065b99c2c7a9def",
      "subject": "[scroll-animations] use the last matching timeline when `animation-timeline` matches multiple timelines"
    },
    "317331@main": {
      "author": "Basuke Suzuki",
      "avatar": "https://www.gravatar.com/avatar/5192a1151c7575317affb7a4633f8d63?d=identicon\u0026s=64",
      "cl": "317331@main",
      "clUrl": "https://commits.webkit.org/317331@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319008\nrdar://181853035\n\nReviewed by Sam Sneddon and Alex Christensen.\n\nReland of 316945@main (reverted in 319139), reworked per review feedback.\n\nThe WPT webtransport/ tests could not connect because the layout-test harness never launched the\nWPT WebTransport-over-HTTP/3 (webtransport-h3) QUIC server. The vendored aioquic-based server exists\nunder tools/webtransport/h3/ and upstream's `wpt serve` supports it, but it is opt-in and the harness\ndid not declare the port, pass the flag, check its liveness, or provision aioquic.\n\nWire the harness to launch the server and provision its dependency:\n\n- Declare a webtransport-h3 UDP port in the WPT config and pass --webtransport-h3 to `wpt serve`.\n- Provision aioquic through webkitpy's AutoInstall so a fresh checkout / CI bot needs no manual pip\n  install. aioquic is the one dependency the h3 server needs that wpt does not vendor under\n  tools/third_party, so it is registered alongside every other package in webkitpy/__init__.py.\n  aioquic 1.2.0 needs a newer crypto stack than webkitpy pinned and AutoInstall keeps one version per\n  package name, so this bumps the shared pins (pyOpenSSL -\u003e 24.3.0, cryptography -\u003e 44.0.3 -- the highest\n  under pyOpenSSL's cryptography\u003c45 pin that still ships prebuilt wheels for every arch). AutoInstall only\n  mutates the in-process sys.path, so WebPlatformTestServer imports aioquic to trigger provisioning and\n  appends AutoInstall.directory to the `wpt serve` subprocess PYTHONPATH.\n- Add a UDP-listener liveness check (QUIC is UDP; the inherited TCP connect() check never sees it) and\n  exclude UDP ports from TCP device-forwarding. Both live in the HttpServerBase superclass, keyed off a\n  per-mapping 'udp' flag, so WebPlatformTestServer no longer overrides ports_to_forward.\n\nWith the server running, un-skip the WebTransport tests that pass on Cocoa (connect, constructor,\ncongestion-control, csp, datagram-bad-chunk, incoming-multiple-streams, sendstream-bad-chunk,\nserver-certificate-hashes, in-removed-iframe) and add their expectations. The remaining tests stay\nskipped, grouped by reason. Skip the Cocoa-only suite on platform/glib (GTK/WPE have no QUIC/HTTP-3\nbackend; Windows already skips it) and on platform/mac-sequoia (the tests need the Network.framework\nQUIC SPI that ships on Tahoe but not Sequoia; open-source CI runs Tahoe).\n\nThis reland differs from 316945@main per review: aioquic is registered like any other webkitpy\nautoinstall package rather than in a bespoke autoinstalled/aioquic.py; the graceful-degrade probe and\nits helpers are dropped in favor of a plain import; and the UDP liveness/forwarding logic moved to the\nsuperclass instead of being overridden.\n\n* LayoutTests/imported/w3c/resources/config.json: Add the webtransport-h3 port.\n* LayoutTests/TestExpectations: Un-skip the passing WebTransport tests; group the remaining skips by reason.\n* LayoutTests/platform/glib/TestExpectations: Skip the Cocoa-only WebTransport suite on GTK/WPE.\n* LayoutTests/platform/mac-sequoia/TestExpectations: Skip the WebTransport suite on Sequoia (QUIC SPI is Tahoe-only).\n* LayoutTests/imported/w3c/web-platform-tests/webtransport/*-expected.txt: Baselines for the un-skipped tests.\n* Tools/Scripts/libraries/webkitcorepy/webkitcorepy/__init__.py: Bump pyOpenSSL to 24.3.0 and collapse the\nper-Python cryptography branch into a single 44.0.3 pin to satisfy aioquic 1.2.0.\n* Tools/Scripts/libraries/resultsdbpy/resultsdbpy/__init__.py: Bump pyasn1_modules to 0.4.2 and\nservice_identity to 24.2.0 to match webkitpy's shared pins (both are imported in the same interpreter).\n* Tools/Scripts/webkitpy/__init__.py: Register aioquic 1.2.0 and its deps (pylsqpack, pyasn1,\npyasn1_modules, service_identity).\n* Tools/Scripts/webkitpy/layout_tests/servers/http_server_base.py:\n(HttpServerBase.ports_to_forward): Exclude UDP-flagged ports from TCP device forwarding.\n(HttpServerBase._is_server_running_on_all_ports): Validate UDP ports via the new listener probe.\n(HttpServerBase._is_udp_port_listening): Added.\n* Tools/Scripts/webkitpy/layout_tests/servers/http_server_base_unittest.py:\n(TestHttpServerBase.test_is_udp_port_listening): Added.\n* Tools/Scripts/webkitpy/layout_tests/servers/web_platform_test_server.py:\n(WebPlatformTestServer.__init__): Append the aioquic autoinstall directory to the serve PYTHONPATH, pass\n--webtransport-h3, and flag the h3 mapping as UDP.\n(WebPlatformTestServer.ports_to_forward): Deleted.\n(WebPlatformTestServer._is_udp_port_listening): Deleted.\n(WebPlatformTestServer._is_server_running_on_all_ports): Deleted.\n(WebPlatformTestServer._spawn_process): Pass the aioquic-provisioned env to the wpt serve process.\n* Tools/Scripts/webkitpy/layout_tests/servers/web_platform_test_server_unittest.py:\n(TestWebPlatformTestServer.setUp): Deleted; the test harness already installs registered packages.\n\nCanonical link: https://commits.webkit.org/317331@main",
      "email": "basuke@apple.com",
      "hash": "003de9b1e25a497a93110b2ef9d6914afcf9b3a0",
      "subject": "[WebTransport] Run the WPT webtransport-h3 server in the layout test harness and enable the passing tests"
    },
    "317332@main": {
      "author": "Ryosuke Niwa",
      "avatar": "https://www.gravatar.com/avatar/ed2c71248fe3ea15d9129f6e9a2a1e85?d=identicon\u0026s=64",
      "cl": "317332@main",
      "clUrl": "https://commits.webkit.org/317332@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319547\n\nReviewed by Anne van Kesteren.\n\nThe failures are caused by not respecting null custom element registry flag set in context nodes:\n\n1. insertAdjacentHTML (afterend into a null-registry shadow root): For beforebegin/afterend,\n   the context node is the parent - here a shadow root created with shadowrootcustomelementregistry\n   (null registry). Since a shadow root isn't an Element, contextElementForInsertion synthesizes\n   an HTMLBodyElement for parsing, but that fresh body didn't carry the null-registry flag, so\n   registryForElement erroneously returned the window registry.\n2. createContextualFragment on a range inside a template: The context element is the template\n   element itself, so registryForElement(template) returned the template's scoped registry. But\n   parsing goes into the template contents owner document (which uses a null registry), so the\n   fragment should use the contents' registry, not the template element's.\n\nTest: imported/w3c/web-platform-tests/custom-elements/registries/Element-innerHTML.html\n\n* LayoutTests/imported/w3c/web-platform-tests/custom-elements/registries/Element-innerHTML-expected.txt:\n* Source/WebCore/dom/Element.cpp:\n(WebCore::contextElementForInsertion):\n* Source/WebCore/editing/markup.cpp:\n(WebCore::createContextualFragment):\n\nCanonical link: https://commits.webkit.org/317332@main",
      "email": "rniwa@webkit.org",
      "hash": "e02b5154b40cd2aa151b02eba109400a6dfed69a",
      "subject": "Fix two remaining failures in custom-elements/registries/Element-innerHTML.html"
    },
    "317333@main": {
      "author": "Simon Fraser",
      "avatar": "https://www.gravatar.com/avatar/3763324aa0cdfa93be751c6081b8006a?d=identicon\u0026s=64",
      "cl": "317333@main",
      "clUrl": "https://commits.webkit.org/317333@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319416\nrdar://182242084\n\nReviewed by Vitor Roriz.\n\nUpstream commit: https://github.com/web-platform-tests/wpt/commit/f1edb4256750e48b757044f9aef085f87270ec13\n\n* LayoutTests/TestExpectations:\n* LayoutTests/imported/w3c/resources/resource-files.json:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/META.yml:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/animations/WEB_FEATURES.yml:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/animations/clip-composition.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/animations/clip-path-composition.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/animations/clip-path-geometry-box-interpolation.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/animations/clip-path-interpolation-001.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/animations/clip-path-interpolation-shape-arc-direction-agnostic-radius-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/animations/clip-path-interpolation-shape-arc-direction-agnostic-radius-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/animations/clip-path-interpolation-shape-arc-direction-agnostic-radius.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/animations/clip-path-interpolation-shape-control-points.html: Renamed from LayoutTests/imported/w3c/web-platform-tests/css/css-masking/animations/clip-path-interpolation-shape-control-points.tentative.html.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/animations/clip-path-interpolation-shape.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/animations/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path-svg-content/WEB_FEATURES.yml: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path-svg-content/reference/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path-svg-content/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/WEB_FEATURES.yml: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/animations/WEB_FEATURES.yml: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation-circle-0-percent-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation-circle-0-percent-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation-circle-0-percent.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation-custom-property-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation-custom-property-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation-custom-property.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation-custom-timing-function.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation-forward-fill-positive-delay-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation-forward-fill-positive-delay-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation-forward-fill-positive-delay.html: Copied from LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation-svg-zoom.html.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation-fragmented-inline-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation-fragmented-inline-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation-fragmented-inline.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation-geometry-box-delay-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation-geometry-box-delay.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation-inset-50-percent-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation-inset-50-percent-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation-inset-50-percent.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation-mixed-calc-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation-mixed-calc-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation-mixed-calc.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation-neutral-keyframe-svg-smil-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation-neutral-keyframe-svg-smil-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation-neutral-keyframe-svg-smil.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation-no-inherit-clip-after-remove-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation-no-inherit-clip-after-remove-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation-no-inherit-clip-after-remove.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation-non-shape-delay-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation-none-backdrop-filter-subpixel-offset-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation-none-backdrop-filter-subpixel-offset-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation-none-backdrop-filter-subpixel-offset.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation-offset-position-not-stuck-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation-offset-position-not-stuck.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation-reference-delay-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation-reference-delay.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation-retarget-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation-retarget-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation-retarget.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation-set-currenttime-forward-finish-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation-set-currenttime-forward-finish.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation-set-currenttime-negative-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation-set-currenttime-negative.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation-set-currenttime-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation-set-duration-animation-finish-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation-set-duration-animation-finish.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation-set-effect-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation-set-effect.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation-start-time-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation-start-time-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation-start-time.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation-svg-zoom.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation-view-transition-mixed-change-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation-view-transition-mixed-change-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation-view-transition-mixed-change.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation-zero-duration-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation-zero-duration-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation-zero-duration.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/animations/clip-path-path-interpolation-001-expected.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/animations/clip-path-path-interpolation-001-ref.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/animations/clip-path-path-interpolation-002-expected.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/animations/clip-path-path-interpolation-002-ref.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/animations/clip-path-shape-arc-interpolation-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/animations/clip-path-shape-arc-interpolation-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/animations/clip-path-shape-arc-interpolation.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/animations/clip-path-shape-interpolation-001-expected.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/animations/clip-path-shape-interpolation-002-expected.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/animations/clip-path-shape-interpolation-003-expected.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/animations/clip-path-shape-interpolation-004-expected.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/animations/clip-path-shape-transition-with-zoom-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/animations/clip-path-shape-transition-with-zoom-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/animations/clip-path-shape-transition-with-zoom.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/animations/clip-path-transition-allow-discrete-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/animations/clip-path-transition-allow-discrete-shape-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/animations/clip-path-transition-allow-discrete-shape.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/animations/clip-path-transition-allow-discrete.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/animations/clip-path-transition-crash.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/animations/clip-path-transition-custom-timing-function.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/animations/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/clip-path-borderBox-1b.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/clip-path-borderBox-1c.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/clip-path-circle-001.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/clip-path-circle-002.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/clip-path-circle-003.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/clip-path-circle-004.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/clip-path-circle-005.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/clip-path-circle-006.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/clip-path-circle-007.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/clip-path-circle-008.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/clip-path-circle-009-expected.html: Copied from LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip/clip-not-absolute-positioned-003-expected.html.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/clip-path-circle-009.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/clip-path-circle-010-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/clip-path-circle-010.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/clip-path-circle-closest-corner-expected.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/clip-path-circle-closest-corner.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/clip-path-circle-farthest-corner-expected.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/clip-path-circle-farthest-corner.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/clip-path-columns-shape-002.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/clip-path-descendant-text-mutated-001.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/clip-path-element-userSpaceOnUse-001.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/clip-path-element-userSpaceOnUse-002.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/clip-path-element-userSpaceOnUse-003.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/clip-path-element-userSpaceOnUse-004.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/clip-path-ellipse-001.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/clip-path-ellipse-002.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/clip-path-ellipse-003.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/clip-path-ellipse-004.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/clip-path-ellipse-005.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/clip-path-ellipse-006.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/clip-path-ellipse-007.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/clip-path-ellipse-008.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/clip-path-ellipse-closest-farthest-corner-expected.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/clip-path-ellipse-closest-farthest-corner.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/clip-path-fillBox-1b.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/clip-path-foreignobject-non-zero-xy.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/clip-path-localRef-1-expected.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/clip-path-localRef-1-ref.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/clip-path-localRef-1.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/clip-path-mix-blend-mode-1.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/clip-path-polygon-014-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/clip-path-polygon-014.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/clip-path-rect-004-expected.html: Copied from LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/clip-path-shape-hline-vline-keywords.tentative-expected.html.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/clip-path-rect-004.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/clip-path-reference-restore.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/clip-path-restyle-crash.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/clip-path-round-zero-size.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/clip-path-scaled-video.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/clip-path-shape-007-expected.html: Renamed from LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/clip-path-shape-007.tentative-expected.html.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/clip-path-shape-007.html: Renamed from LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/clip-path-shape-007.tentative.html.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/clip-path-shape-008-expected.html: Renamed from LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/clip-path-shape-008.tentative-expected.html.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/clip-path-shape-008.html: Renamed from LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/clip-path-shape-008.tentative.html.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/clip-path-shape-009-expected.html: Renamed from LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/clip-path-shape-009.tentative-expected.html.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/clip-path-shape-009.html: Renamed from LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/clip-path-shape-009.tentative.html.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/clip-path-shape-010-expected.html: Renamed from LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/clip-path-shape-010.tentative-expected.html.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/clip-path-shape-010.html: Renamed from LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/clip-path-shape-010.tentative.html.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/clip-path-shape-011-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/clip-path-shape-011.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/clip-path-shape-foreignobject-non-zero-xy.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/clip-path-shape-hline-vline-keywords-expected.html: Copied from LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/clip-path-shape-hline-vline-keywords.tentative-expected.html.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/clip-path-shape-hline-vline-keywords.html: Renamed from LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/clip-path-shape-hline-vline-keywords.tentative.html.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/clip-path-shape-winding-expected.html: Copied from LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/reference/clip-path-path-002-ref.html.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/clip-path-shape-winding.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/clip-path-stacking-context-001-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/clip-path-stacking-context-001.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/clip-path-strokeBox-1a.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/clip-path-svg-invalidate-expected.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/clip-path-svg-invalidate-ref.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/clip-path-svg-invalidate.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/clip-path-svg-text-backdrop-filter.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/clip-path-svg-text-css.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/clip-path-svg-text-font-loading.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/clip-path-transform-mutated-001.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/clip-path-transform-mutated-002.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/clip-path-url-reference-change-from-empty.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/clip-path-url-reference-change.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/clip-path-url-reference-empty-while-loading.tentative-expected.html: Copied from LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/clip-path-shape-hline-vline-keywords.tentative-expected.html.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/clip-path-url-reference-empty-while-loading.tentative.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/clip-path-url-reference-external-expected.html: Renamed from LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/clip-path-shape-hline-vline-keywords.tentative-expected.html.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/clip-path-url-reference-external.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/clip-path-url-reference-svg-foreignobject-zoomed.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/clip-path-url-reference-text-clip-no-inherit-after-remove-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/clip-path-url-reference-text-clip-no-inherit-after-remove-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/clip-path-url-reference-text-clip-no-inherit-after-remove.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/clip-path-viewBox-1c.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/clip-path-viewBox-1d.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/crashtests/clip-path-shape-arc-animation-crash.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/crashtests/w3c-import.log: Copied from LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-rule/reference/w3c-import.log.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/reference-local-url-with-base-001.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/reference-mutated.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/reference-nonexisting-existing-local.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/reference/clip-path-circle-4-ref.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/reference/clip-path-ellipse-2-ref.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/reference/clip-path-path-001-ref.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/reference/clip-path-path-002-ref.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/reference/clip-path-path-winding-ref.html: Copied from LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/reference/clip-path-path-002-ref.html.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/reference/clip-path-polygon-014-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/reference/clip-path-semicircle-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/reference/clip-path-shape-arc-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/reference/clip-path-svg-text-css-ref.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/reference/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/support/resources.svg: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/support/w3c-import.log: Copied from LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-rule/reference/w3c-import.log.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/svg-clip-path-fixed-values.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-rule/clip-rule-001.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-rule/clip-rule-002.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-rule/reference/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-rule/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip/WEB_FEATURES.yml: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip/clip-negative-values-003.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip/clip-negative-values-004.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip/clip-not-absolute-positioned-003-expected.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip/clip-not-absolute-positioned-003.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip/reference/clip-no-clipping-no-text-ref.html: Copied from LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip/clip-not-absolute-positioned-003-expected.html.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip/reference/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/hit-test/WEB_FEATURES.yml: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/hit-test/clip-path-element-objectboundingbox-001.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/hit-test/clip-path-element-objectboundingbox-002.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/hit-test/clip-path-element-userspaceonuse-001.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/hit-test/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/idlharness.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/backdrop-filter-bad-mask-image.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/backdrop-filter-good-and-bad-mask-image-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/backdrop-filter-good-and-bad-mask-image-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/backdrop-filter-good-and-bad-mask-image.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/backdrop-filter-mask-image-while-loading.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/bad-mask-image-svg-2-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/bad-mask-image-svg-2.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/bad-mask-image-svg-3-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/bad-mask-image-svg-3.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/bad-mask-image-svg.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/bad-mask-image.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/firefox-bug-1928736-crash.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-clip-1.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-clip-3.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-clip-5.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-clip-6.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-clip-8-expected.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-clip-8-ref.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-clip-8.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-composite-1-ref.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-composite-1a-expected.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-composite-1a.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-composite-1b-expected.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-composite-1b.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-composite-1c-expected.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-composite-1d-expected.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-composite-1d.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-composite-2-ref.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-composite-2a-expected.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-composite-2a.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-composite-2b-expected.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-composite-2b.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-composite-2c-expected.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-composite-2d-expected.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-composite-2d.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-image-1a.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-image-1b.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-image-4b.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-image-6-expected.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-image-6-ref.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-image-6.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-image-after-backdrop-filter-removal-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-image-after-backdrop-filter-removal-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-image-after-backdrop-filter-removal.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-image-backdrop-filter-with-border-radius-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-image-backdrop-filter-with-border-radius-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-image-backdrop-filter-with-border-radius.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-image-cors-001-frame.sub.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-image-cors-001-image.png: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-image-cors-001-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-image-cors-001-styles.sub.css: Added.\n(#mask-allowed):\n(:):\n(/css/css-masking/mask-image/mask-image-cors-001-image.png?pipe=header(Access-Control-Allow-Origin,https://):\n()\");):\n(#mask-disallowed):\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-image-cors-001.sub-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-image-cors-001.sub.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-image-inline-sliced-1.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-image-svg-foreignobject-zoomed.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-image-svg-loading-error-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-image-svg-loading-error.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-mode-a-expected.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-mode-a.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-mode-b-expected.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-mode-b.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-mode-c-expected.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-mode-d-expected.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-mode-e-expected.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-mode-luminance-with-mask-size.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-mode-ref.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-opacity-1a.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-opacity-1b.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-opacity-1e.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-size-percent-percent-stretch.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-under-border-radius-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-under-border-radius.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/reference/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/support/blue-100x100.png: Removed.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/support/blue-100x100.svg: Removed.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/support/blue-100x50-transparent-100x50.png: Removed.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/support/blue-100x50-transparent-100x50.svg: Removed.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/support/green-100x100.png: Removed.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/support/green-100x100.svg: Removed.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/support/red-100x100.png: Removed.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/support/red-100x100.svg: Removed.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/support/transparent-100x50-blue-100x50.png: Removed.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/support/transparent-100x50-blue-100x50.svg: Removed.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/support/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-svg-content/WEB_FEATURES.yml: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-svg-content/reference/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-svg-content/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/parsing/clip-path-computed.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/parsing/clip-path-invalid.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/parsing/clip-path-valid.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/parsing/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/resources/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/animations/clip-path-composition-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/animations/clip-path-interpolation-001-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/animations/clip-path-interpolation-shape-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/parsing/clip-path-computed-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/parsing/clip-path-invalid-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/parsing/clip-path-valid-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/animations/clip-composition-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/animations/clip-path-geometry-box-interpolation-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/animations/clip-path-interpolation-shape-control-points-expected.txt: Renamed from LayoutTests/imported/w3c/web-platform-tests/css/css-masking/animations/clip-path-interpolation-shape-control-points.tentative-expected.txt.\n* LayoutTests/platform/glib/TestExpectations:\n\nCanonical link: https://commits.webkit.org/317333@main",
      "email": "simon.fraser@apple.com",
      "hash": "5f09520776060c727fd36f5fb1a3334e77a869a6",
      "subject": "Resync `css-masking` from WPT upstream"
    },
    "317334@main": {
      "author": "Devin Rousso",
      "avatar": "https://www.gravatar.com/avatar/c9e757d973342c773f107a94b70cb9cd?d=identicon\u0026s=64",
      "cl": "317334@main",
      "clUrl": "https://commits.webkit.org/317334@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=207306\n\u003crdar://problem/59205827\u003e\n\nReviewed by Antoine Quint.\n\n* Source/WebCore/inspector/agents/InspectorAnimationAgent.cpp:\n(WebCore::buildObjectForKeyframes):\n* LayoutTests/inspector/animation/lifecycle-css-animation-expected.txt:\nSort properties by name before serializing style-originated keyframes so they're consistent.\n\n* LayoutTests/inspector/animation/lifecycle-web-animation.html:\n* LayoutTests/inspector/animation/lifecycle-web-animation-expected.txt:\nDrive-by: animations created via `@keyframes` are CSS Animations not Web Animations.\n\n* LayoutTests/inspector/animation/resources/lifecycle-utilities.js:\n(InspectorTest.AnimationLifecycleUtilities.awaitAnimationCreated):\nDrive-by: a call frame can be both `programCode` and `nativeCode` when its source cannot be resolved so match the UI by preferring `programCode` when logging its type.\n\n* LayoutTests/platform/mac/TestExpectations:\n\nCanonical link: https://commits.webkit.org/317334@main",
      "email": "hi@devinrousso.com",
      "hash": "b98102852edf39cd8651956ac89d7855f808b458",
      "subject": "REGRESSION(313224@main): inspector/animation/lifecycle-css-animation.html fails on Apple ports"
    },
    "317335@main": {
      "author": "Charlie Wolfe",
      "avatar": "https://www.gravatar.com/avatar/857b3b5ff3394c31fa2689310a93dbab?d=identicon\u0026s=64",
      "cl": "317335@main",
      "clUrl": "https://commits.webkit.org/317335@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319600\nrdar://182372273\n\nUnreviewed.\n\nIt renamed public API.\n\nTests: Tools/TestWebKitAPI/Tests/WebKit/WKWebView/WebsitePolicies.mm\n       Tools/TestWebKitAPI/Tests/WebKit/WebPage/WebPageTests.swift\n\n* Source/WTF/Scripts/Preferences/UnifiedWebPreferences.yaml:\n* Source/WebCore/page/NavigatorGlobalPrivacyControl.cpp:\n(WebCore::NavigatorGlobalPrivacyControl::globalPrivacyControlEnabled):\n(WebCore::NavigatorGlobalPrivacyControl::globalPrivacyControlStatus): Deleted.\n* Source/WebCore/page/NavigatorGlobalPrivacyControl.h:\n* Source/WebCore/page/NavigatorGlobalPrivacyControl.idl:\n* Source/WebKit/NetworkProcess/NetworkResourceLoadParameters.h:\n* Source/WebKit/NetworkProcess/NetworkResourceLoadParameters.serialization.in:\n* Source/WebKit/NetworkProcess/NetworkResourceLoader.cpp:\n(WebKit::NetworkResourceLoader::startNetworkLoad):\n* Source/WebKit/Shared/WebsitePoliciesData.cpp:\n(WebKit::WebsitePoliciesData::applyToDocumentLoader):\n* Source/WebKit/Shared/WebsitePoliciesData.h:\n* Source/WebKit/Shared/WebsitePoliciesData.serialization.in:\n* Source/WebKit/UIProcess/API/APIWebsitePolicies.h:\n* Source/WebKit/UIProcess/API/Cocoa/WKWebpagePreferences+Extras.swift:\n* Source/WebKit/UIProcess/API/Cocoa/WKWebpagePreferences.h:\n* Source/WebKit/UIProcess/API/Cocoa/WKWebpagePreferences.mm:\n(-[WKWebpagePreferences setGlobalPrivacyControlEnabled:]):\n(-[WKWebpagePreferences globalPrivacyControlEnabled]):\n(-[WKWebpagePreferences setGlobalPrivacyControlStatus:]): Deleted.\n(-[WKWebpagePreferences globalPrivacyControlStatus]): Deleted.\n* Source/WebKit/UIProcess/API/Swift/WebPage+NavigationPreferences.swift:\n(isGlobalPrivacyControlEnabled):\n(globalPrivacyControlStatus): Deleted.\n* Source/WebKit/WebProcess/Network/WebLoaderStrategy.cpp:\n(WebKit::addParametersShared):\n* Tools/TestWebKitAPI/Tests/WebKit/WKWebView/WebsitePolicies.mm:\n* Tools/TestWebKitAPI/Tests/WebKit/WebPage/WebPageTests.swift:\n(WebPageTests.globalPrivacyControlEnabledForNavigation(_:)):\n(WebPageTests.globalPrivacyControlStatusForNavigation(_:)): Deleted.\n* Tools/WebKitTestRunner/TestController.cpp:\n(WTR::TestController::resetPreferencesToConsistentValues):\n* Tools/WebKitTestRunner/TestInvocation.cpp:\n(WTR::TestInvocation::didReceiveSynchronousMessageFromInjectedBundle):\n\nCanonical link: https://commits.webkit.org/317335@main",
      "email": "charliew@apple.com",
      "hash": "25ba66d2fe02bff2155ae87164fc68091c8c83b1",
      "subject": "Revert 315959@main"
    },
    "317336@main": {
      "author": "Dan Hecht",
      "avatar": "https://www.gravatar.com/avatar/080f47d912b1b34d0be8293f825d132d?d=identicon\u0026s=64",
      "cl": "317336@main",
      "clUrl": "https://commits.webkit.org/317336@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319599\nrdar://182424502\n\nReviewed by Marcus Plutowski.\n\nAdd a functional test file that drives the real bmalloc public zeroing API\nend to end and verifies the zeroed allocation path always returns\nfully-zeroed memory, including when a freed region is reused.\n\nEach case does zeroed-alloc / verify-zero / dirty / free /\nreallocate-same-size / verify-zero, run across several axes:\n\n- Size: representative points for every regime of the zeroed-malloc path --\n    small- and medium-segregated, medium- and marge-bitfit, and the large\n    heap's memset and virtual-memory zeroing paths. Sizes are derived from\n    the config's page-size and threshold constants, so the run keeps hitting\n    the interesting boundaries if a config changes.\n- Alignment: the natural minimum plus a range of explicit alignments.\n- Variant: the untagged and tagged zeroed entry points.\n- Reuse: both immediate free-list reuse and forced decommit/recommit (a\n    synchronous scavenge between free and reuse).\n\nRegisters the suite in TestHarness.cpp, the Xcode project, and the xctest\nsuite list.\n\nTest: Source/bmalloc/libpas/src/test/AllocationZeroingTests.cpp\n\n* Source/bmalloc/libpas/libpas.xcodeproj/project.pbxproj:\n* Source/bmalloc/libpas/src/test/AllocationZeroingTests.cpp: Added.\n(std::dirtyBuffer):\n(std::firstNonZeroByte):\n(std::variantName):\n(std::alignmentApiName):\n(std::allocateZeroed):\n(std::deallocateVariant):\n(std::reportParameters):\n(std::checkIsZeroed):\n(std::checkIsAligned):\n(std::zeroingReuse):\n(std::runZeroingReuse):\n(std::segregatedRegimeSizes):\n(std::bitfitRegimeSizes):\n(std::largeMemsetRegimeSizes):\n(std::largeVirtualMemoryRegimeSizes):\n(std::testZeroingReuseSegregatedSizes):\n(std::testZeroingReuseBitfitSizes):\n(std::testZeroingReuseLargeMemsetSizes):\n(std::testZeroingReuseLargeVirtualMemorySizes):\n(std::testZeroingReuseWithScavengeSegregatedSizes):\n(std::testZeroingReuseWithScavengeBitfitSizes):\n(std::testZeroingReuseWithScavengeLargeMemsetSizes):\n(std::testZeroingReuseWithScavengeLargeVirtualMemorySizes):\n(addAllocationZeroingTests):\n* Source/bmalloc/libpas/src/test/TestHarness.cpp:\n(main):\n* Source/bmalloc/libpas/src/test/xctest/LibpasTests.mm:\n\nCanonical link: https://commits.webkit.org/317336@main",
      "email": "dan.hecht@apple.com",
      "hash": "ca5e69e829722666caa292025996d15c3fa077aa",
      "subject": "[libpas] Add AllocationZeroingTests: functional zeroed-reuse tests"
    },
    "317337@main": {
      "author": "Alan Baradlay",
      "avatar": "https://www.gravatar.com/avatar/788d66417db806c567552cfa1ae89f77?d=identicon\u0026s=64",
      "cl": "317337@main",
      "clUrl": "https://commits.webkit.org/317337@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=318624\n\nReviewed by Antti Koivisto.\n\nThe legacy resolve-flexible-lengths step (CSS Flexbox 9.7) had drifted in shape from the LFC\nLayout::FlexLayout::computeMainSizeForFlexItems it is meant to converge on: a FlexSign enum, a\nVector\u003cbool\u003e frozen set with incrementally maintained flex-factor totals, and sizing fields named\nflexBaseContentSize / hypotheticalMainContentSize.\n\nRebuild resolveFlexibleLengthsForLineItems as the four spec steps in Layout::FlexLayout's shape and\nnaming: an OrderedHashSet nonFrozenSet, a free space recomputed each pass, shouldUseFlexGrowFactor,\nand minimum/maximum violation lists. Rename the FlexBaseAndHypotheticalMainSize fields to flexBase /\nhypotheticalMainSize, delete the now-unused FlexSign enum, and drop the dead remaining-free-space\nreturn (the function is now void). computeMainSizeForFlexItems stays a thin per-line loop because the\nmulti-line column re-resolve reuses the per-line function, which the formatting context does not need.\n\nThe arithmetic deliberately keeps the legacy numerics (double flex-factor accumulators, and\nLayoutUnit::fromFloatRound of each distributed share) so the result is provably 1-to-1: the freeze\ncondition is equivalent because the hypothetical main size is exactly the flex base clamped by min\nand max, the recomputed free space is bit-identical to the old incremental value because LayoutUnit\nis exact fixed-point, and the distribution rounds each share the same way.\n\nAlign the pipeline's list vocabulary with the formatting context throughout, since these are the spec\nterms: the per-item flex base and hypothetical main sizes become flexBaseAndHypotheticalMainSizeList\n(rather than sizingList), per-item size lists take a flexItems prefix (flexItemsMainSizeList,\nflexItemsCrossSizeList, flexItemsHypotheticalCrossSizeList, flexItemsCrossOffsetList) and per-line\nlists a flexLines prefix (flexLinesCrossSizeList, flexLinesCrossPositionList), and each line's cross\nplacement is named a position rather than an offset.\n\nNo change in behavior.\n\n* Source/WebCore/rendering/RenderFlexLayout.cpp:\n* Source/WebCore/rendering/RenderFlexLayout.h:\n\nCanonical link: https://commits.webkit.org/317337@main",
      "email": "zalan@apple.com",
      "hash": "5c731d46be1287633906c6e49d9fe9079d53cad9",
      "subject": "[cleanup] Reshape the flex length resolution (9.7) to mirror Layout::FlexLayout"
    },
    "317338@main": {
      "author": "Basuke Suzuki",
      "avatar": "https://www.gravatar.com/avatar/5192a1151c7575317affb7a4633f8d63?d=identicon\u0026s=64",
      "cl": "317338@main",
      "clUrl": "https://commits.webkit.org/317338@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319427\nrdar://182181803\n\nReviewed by Chris Dumez.\n\nOption-clicking a cross-origin link with target=\"_blank\" (for example the \"Full logs\"\nlink on an ews-build.webkit.org results page, which points to an S3 URL) reliably\nterminates the Network process.\n\nPolicyChecker::checkNewWindowPolicy() handles new-window (target=\"_blank\") navigations. Its\nPolicyAction::Download case called FrameLoaderClient::startDownload() without first calling\nFrameLoader::setOriginalURLForDownloadRequest(), unlike the same-frame path in\ncheckNavigationPolicy(). As a result the download request kept the firstPartyForCookies that\nFrameLoader sets for a willOpenInNewWindow main-resource load, which is the destination URL\nitself (the cross-origin URL). The StartDownload IPC is then sent from the source page's web\nprocess, whose allowed-first-parties set only contains the source site, so the CSRF\nfirst-party-for-cookies MESSAGE_CHECK in NetworkConnectionToWebProcess::startDownload()\nrejected the message and terminated the process.\n\nCall setOriginalURLForDownloadRequest() in checkNewWindowPolicy()'s download case, matching\ncheckNavigationPolicy(). Because m_frame is the source frame, firstPartyForCookies becomes the\noriginating page, which is in the process's allowed set.\n\n* Source/WebCore/loader/PolicyChecker.cpp:\n(WebCore::PolicyChecker::checkNewWindowPolicy):\n* Tools/TestWebKitAPI/Tests/WebKit/WKWebView/Download.mm:\n(TestWebKitAPI::TEST): Added CrossSiteTargetBlankDownloadDoesNotCrashNetworkProcess.\n* Tools/TestWebKitAPI/Tests/WebKit/WKWebView/SiteIsolation.mm:\n(TestWebKitAPI::TEST): Added CrossSiteTargetBlankDownloadDoesNotCrashNetworkProcess.\n\nCanonical link: https://commits.webkit.org/317338@main",
      "email": "basuke@apple.com",
      "hash": "7935a51ec31047310970afdf9c0a73765686058d",
      "subject": "[Page Loading] Network process crashes when downloading a cross-origin target=_blank link"
    },
    "317340@main": {
      "author": "Marta Darbinyan",
      "avatar": "https://www.gravatar.com/avatar/6143b3673258642a8b75585c768ccf10?d=identicon\u0026s=64",
      "cl": "317340@main",
      "clUrl": "https://commits.webkit.org/317340@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319606\nrdar://182434983\n\nUnreviewed test gardening\n\n* LayoutTests/platform/ios/TestExpectations:\n* LayoutTests/platform/mac-wk2/TestExpectations:\n\nCanonical link: https://commits.webkit.org/317340@main",
      "email": "darbinyan@apple.com",
      "hash": "da6bed9bb5c973b56ed6ef78128ef253834db009",
      "subject": "[Gardening]: NEW TEST(316388@main): [macOS iOS debug]: http/tests/ipc/createnewpage-file-body-sandbox-extension.html is constant failure"
    },
    "317341@main": {
      "author": "Andres Gonzalez",
      "avatar": "https://www.gravatar.com/avatar/4e49c1280c6711bf7da7c7c121e013f6?d=identicon\u0026s=64",
      "cl": "317341@main",
      "clUrl": "https://commits.webkit.org/317341@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319503\n\u003crdar://problem/182309215\u003e\n\nReviewed by Dominic Mazzoni.\n\nWhen VoiceOver reads by line (arrow navigation) with the accessibility\nisolated tree OFF, a line whose only content is an out-of-flow\n(position:absolute or floated) decorative image (e.g. \u003cimg alt=\"\"\u003e whose\naccessible name lives on an ancestor) is announced as nothing. With the\nisolated tree ON the same line is correctly announced as \"image\".\n\nRoot cause: the two code paths disagree about whether such an element has\na line. VoiceOver asks for the caret's line via\nkAXLineTextMarkerRangeForTextMarker, which on the main thread calls\nAccessibilityObject::lineRangeForPosition(). That function computes\nstartOfLine(visiblePosition); for a caret at an out-of-flow replaced\nelement startOfLine is null, because startPositionForLine() finds\nRenderedPosition(c).lineBox() == null (an out-of-flow RenderReplaced /\nRenderBox generates no inline line box) and its only null-line-box rescue\nrequires isRenderBlock(), which a RenderReplaced is not. lineRangeForPosition\ntherefore returns an empty range, which becomes an AXTextMarkerRange with\nnull boundary points, so simpleRange() is nullopt and\nattributedStringForTextMarkerRange() returns nil -- VoiceOver receives no\ntext and speaks nothing. contentForRange() is never reached, so this is a\nline-range failure, not a string-extraction one.\n\nThe isolated tree avoids this because AccessibilityRenderObject::textRuns()\nemits an objectReplacementCharacter run for any isReplacedElement() and, in\nits isFloatingOrOutOfFlowPositioned() branch, gives the element its own\nsynthetic single-object line; lineRange() over those runs then yields a\nvalid range that resolves to an attachment (\"image\").\n\nFix: mirror that behavior on the main thread. In lineRangeForPosition(),\nwhen startOfLine is null and the object is an out-of-flow replaced element,\nfall back to a range that spans the element's own node. Use\nmakeRangeSelectingNode() (the {parent, index}..{parent, index+1} span), not\nsimpleRange()/rangeForNodeContents(): for an accessibility-ignored replaced\nelement rangeForNodeContents() collapses to an empty {(node,0),(node,0)}\nrange (it only selects the node itself when replacedNodeNeedsCharacter() is\ntrue, which is false for an ignored image), and TextIterator over a\ncollapsed range short-circuits before handleReplacedElement(). A\nnode-selecting range makes TextIterator descend into the image and emit the\nzero-length replaced stop, which contentForRange() turns into the object\nwrapper attachment, so line reading announces \"image\".\n\nThe new code runs only in the previously-dead start.isNull() branch and is\nfurther gated on isReplacedElement() \u0026\u0026 isRendererReplacedElement() \u0026\u0026\nisFloatingOrOutOfFlowPositioned(), so in-flow decorative images (which sit\non a real line box and have a non-null startOfLine) are unaffected, and\nthere is no impact on text-offset math, selection, or editing.\n\nThe test uses a labeled out-of-flow image so it is reachable from the AX\ntree in the test harness; the fix branch it exercises is gated on the\nelement being out-of-flow and replaced, independent of the image's name,\nand the test passes with the accessibility isolated tree both on and off.\n\n* Source/WebCore/accessibility/AccessibilityObject.cpp:\n(WebCore::AccessibilityObject::lineRangeForPosition):\n* LayoutTests/accessibility/mac/line-text-marker-range-for-out-of-flow-image.html: Added.\n* LayoutTests/accessibility/mac/line-text-marker-range-for-out-of-flow-image-expected.txt: Added.\n\nCanonical link: https://commits.webkit.org/317341@main",
      "email": "andresg_22@apple.com",
      "hash": "61766a5e91da5358a559eef454ebca0f86ac4b1f",
      "subject": "AX: VoiceOver reads nothing for a line containing only an out-of-flow decorative image"
    },
    "317342@main": {
      "author": "Nikolas Zimmermann",
      "avatar": "https://www.gravatar.com/avatar/83cbd636495835720e369cd589e3ca5e?d=identicon\u0026s=64",
      "cl": "317342@main",
      "clUrl": "https://commits.webkit.org/317342@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319581\n\nReviewed by Alejandro G. Castro.\n\nA compositor that repaints only what changed this frame is only correct if it draws\ninto the target that holds the previous frame. That is rarely the case: the swap chain\nhands back whichever target is free, and that one is a frame or more behind. So every\ntarget needs its own record of what changed since it was last current.\n\nThe old code built that record on read. damageForTarget() added the pending frame\ndamage to every target and returned the one asked for, so a record only grew if someone\nread it that frame. The optional it took meant two things at once, because a nullopt\ndropped every record. Together with setFrameDamage() skipping empty damage, reading the\ndamage on a frame that changed nothing wiped the whole chain. The target being drawn got\na fresh record when it was presented, so the others paid the price and repainted in full\non their next use. The rectangle threshold went to the record instead of to the rects\nhanded to the platform, which did nothing on the composited path: the record is a\nbounding box, and the frame damage the platform got was built without a threshold.\n\nThe new code keeps those steps apart. recordFrameDamage() adds the frame's damage to\nevery target right when it is recorded, unless the damage is only meant for the\nplatform, so every frame counts even if nobody reads it. didPresent() clears the record\nof the target that just became current, and takes a TargetContents telling whether the\ntarget really holds what it should, dropping the record when it does not. Reads are now\na plain lookup, and SwapChainDamageTracker is the only writer, which turns \"everything\nthat changed since this target was last current\" into a real invariant.\n\nA record now uses Damage's default grid instead of the threshold's, which on a wide,\nshort surface would collapse into a few full-height cells. The threshold now applies in\ntakeFrameDamageRects(), bounding the rects handed to the platform. How much detail a\nrecord keeps is up to its consumer: no GL consumer walks the rects, they only read the\nbounds, so those records stay bounding boxes.\n\nClearing can take the damage rects too, drawn as a region rather than clipped, because a\nregion of more than one rect cannot be a scissor and Skia would build a clip mask for it.\n\n* Source/WebCore/platform/graphics/skia/SkiaDamageRegion.h:\n(WebCore::SkiaDamageRegion::fillCanvasInDeviceSpace const):\n* Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/AcceleratedSurface.cpp:\n(WebKit::AcceleratedSurface::AcceleratedSurface):\n(WebKit::AcceleratedSurface::SwapChainDamageTracker::recordFrameDamage):\n(WebKit::AcceleratedSurface::SwapChainDamageTracker::takeFrameDamageRects):\n(WebKit::AcceleratedSurface::SwapChainDamageTracker::didPresent):\n(WebKit::clearCanvas):\n(WebKit::AcceleratedSurface::clear):\n(WebKit::AcceleratedSurface::didRenderFrame):\n(WebKit::AcceleratedSurface::renderTargetDamage):\n(WebKit::AcceleratedSurface::RenderTarget::addDamage): Deleted.\n(WebKit::AcceleratedSurface::SwapChainDamageTracker::damageForTarget): Deleted.\n* Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/AcceleratedSurface.h:\n\nCanonical link: https://commits.webkit.org/317342@main",
      "email": "nzimmermann@igalia.com",
      "hash": "98318f4fd93d26c39dd554961608fe1852bb4264",
      "subject": "[Damage] Track each swap-chain target's damage since it was last current"
    },
    "317343@main": {
      "author": "Nikolas Zimmermann",
      "avatar": "https://www.gravatar.com/avatar/83cbd636495835720e369cd589e3ca5e?d=identicon\u0026s=64",
      "cl": "317343@main",
      "clUrl": "https://commits.webkit.org/317343@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319568\n\nReviewed by Alejandro G. Castro.\n\nThe damage-collecting walk is meant to end up with every pixel that changes from one frame to the\nnext. It missed a good few of them, which wasn't noticed so far, because we had damage-restriction\nin the composition turned off by default. Since we want to change that we have to ensure the damage\ncollection algorithm doesn't miss a single case - otherwise we'll end up with rendering artifacts.\n\nEach layer used to keep the rect it had painted, and handed that rect to a Damage shared by the\nwhole tree the moment it changed: when it was resized, when its transform changed, ..., when it was\ndetached, which walked the subtree and handed over every rect in it. That only works if the layer is\nstill around to hand anything over. A hidden layer never did, and a destroyed one took its rect with\nit, so whatever it had painted was left on screen.\n\nThe root layer now keeps those rects instead, one per layer, under an id the layer is given the first\ntime it paints, and nothing is handed over anymore. Every layer the walk reaches writes down where it\nis painting, and once the walk is done the root looks at what it got. A layer whose rect changed has\nmoved, so both the old place and the new one are repainted. A layer the walk never reached is\nhidden, detached or destroyed, so the place it used to paint is repainted and its rect is dropped.\nThe root asks every frame rather than waiting to be told, so a layer no longer has to be alive, or\nto notice anything, for the place it left behind to be repainted.\n\nSome damage is not accessible via a simple tree walk: A mask is not part of the tree walk, so a\nchanged mask is picked up where the mask is applied, and it damages the whole masked subtree, since\nthe mask applies to descendants that need not paint within the layer's bounds. A backdrop filter paints\nnothing of its own, and changes as a whole whenever anything under it does, including the place a\nlayer moved away from, which is only known once the walk has finished. A contents rect may reach\noutside the layer bounds, and a filter such as a blur paints outside them too, so what the layer\nreally paints is damaged rather than its bounds...\n\nCovered by new glib-specific damage tests and specific API tests, where constructing a layout test\nwas hard.\n\n* LayoutTests/platform/glib/damage/layer-addition-expected.txt: Added.\n* LayoutTests/platform/glib/damage/layer-addition.html: Added.\n* LayoutTests/platform/glib/damage/layer-backdrop-filter-above-backdrop-expected.txt: Added.\n* LayoutTests/platform/glib/damage/layer-backdrop-filter-above-backdrop.html: Added.\n* LayoutTests/platform/glib/damage/layer-backdrop-filter-damage-underneath-expected.txt: Added.\n* LayoutTests/platform/glib/damage/layer-backdrop-filter-damage-underneath.html: Added.\n* LayoutTests/platform/glib/damage/layer-backdrop-filter-layer-moves-away-expected.txt: Added.\n* LayoutTests/platform/glib/damage/layer-backdrop-filter-layer-moves-away.html: Added.\n* LayoutTests/platform/glib/damage/layer-backdrop-filter-unrelated-change-expected.txt: Added.\n* LayoutTests/platform/glib/damage/layer-backdrop-filter-unrelated-change.html: Added.\n* LayoutTests/platform/glib/damage/layer-clip-to-bounds-child-fully-outside-expected.txt: Added.\n* LayoutTests/platform/glib/damage/layer-clip-to-bounds-child-fully-outside.html: Added.\n* LayoutTests/platform/glib/damage/layer-clip-to-bounds-expected.txt: Added.\n* LayoutTests/platform/glib/damage/layer-clip-to-bounds.html: Added.\n* LayoutTests/platform/glib/damage/layer-filter-removal-expected.txt: Added.\n* LayoutTests/platform/glib/damage/layer-filter-removal.html: Added.\n* LayoutTests/platform/glib/damage/layer-mask-change-expected.txt: Added.\n* LayoutTests/platform/glib/damage/layer-mask-change.html: Added.\n* LayoutTests/platform/glib/damage/layer-mask-on-moving-layer-expected.txt: Added.\n* LayoutTests/platform/glib/damage/layer-mask-on-moving-layer.html: Added.\n* LayoutTests/platform/glib/damage/layer-mask-removal-expected.txt: Added.\n* LayoutTests/platform/glib/damage/layer-mask-removal.html: Added.\n* LayoutTests/platform/glib/damage/layer-mask-with-overflowing-child-expected.txt: Added.\n* LayoutTests/platform/glib/damage/layer-mask-with-overflowing-child.html: Added.\n* LayoutTests/platform/glib/damage/layer-multiple-movement-expected.txt: Added.\n* LayoutTests/platform/glib/damage/layer-multiple-movement.html: Added.\n* LayoutTests/platform/glib/damage/layer-nested-clip-expected.txt: Added.\n* LayoutTests/platform/glib/damage/layer-nested-clip.html: Added.\n* LayoutTests/platform/glib/damage/layer-recomposition-expected.txt: Added.\n* LayoutTests/platform/glib/damage/layer-recomposition.html: Added.\n* LayoutTests/platform/glib/damage/layer-removal-expected.txt: Added.\n* LayoutTests/platform/glib/damage/layer-removal.html: Added.\n* LayoutTests/platform/glib/damage/layer-replica-color-change-expected.txt: Added.\n* LayoutTests/platform/glib/damage/layer-replica-color-change.html: Added.\n* LayoutTests/platform/glib/damage/layer-replica-movement-expected.txt: Added.\n* LayoutTests/platform/glib/damage/layer-replica-movement.html: Added.\n* LayoutTests/platform/glib/damage/layer-replica-removal-expected.txt: Added.\n* LayoutTests/platform/glib/damage/layer-replica-removal.html: Added.\n* LayoutTests/platform/glib/damage/layer-replica-with-mask-expected.txt: Added.\n* LayoutTests/platform/glib/damage/layer-replica-with-mask.html: Added.\n* LayoutTests/platform/glib/damage/layer-size-to-empty-expected.txt: Added.\n* LayoutTests/platform/glib/damage/layer-size-to-empty.html: Added.\n* LayoutTests/platform/glib/damage/layer-subtree-hidden-expected.txt: Added.\n* LayoutTests/platform/glib/damage/layer-subtree-hidden.html: Added.\n* LayoutTests/platform/glib/damage/layer-transform-with-replica-expected.txt: Added.\n* LayoutTests/platform/glib/damage/layer-transform-with-replica.html: Added.\n* Source/WebCore/platform/graphics/skia/SkiaCompositingLayer.cpp:\n(WebCore::SkiaCompositingLayer::setSize):\n(WebCore::SkiaCompositingLayer::setOpacity):\n(WebCore::SkiaCompositingLayer::removeFromParent):\n(WebCore::SkiaCompositingLayer::setContentsSolidColor):\n(WebCore::SkiaCompositingLayer::setMask):\n(WebCore::SkiaCompositingLayer::paintedLayerRect const):\n(WebCore::SkiaCompositingLayer::LayerRectTracker::recordVisit):\n(WebCore::SkiaCompositingLayer::LayerRectTracker::damageStaleLayerRectsAndAdvanceEntries):\n(WebCore::SkiaCompositingLayer::trackLayerRect):\n(WebCore::SkiaCompositingLayer::resolveBackdropDamage):\n(WebCore::SkiaCompositingLayer::syncAnimations):\n(WebCore::SkiaCompositingLayer::computeTransformsAndAnimations):\n(WebCore::SkiaCompositingLayer::paint):\n(WebCore::SkiaCompositingLayer::paintSelf):\n(WebCore::SkiaCompositingLayer::collectFrameDamage):\n(WebCore::SkiaCompositingLayer::collectBackdropDamage):\n(WebCore::SkiaCompositingLayer::collectMaskDamage):\n(WebCore::SkiaCompositingLayer::paintWithIntermediateSurface):\n(WebCore::SkiaCompositingLayer::paintBackdrop):\n(WebCore::SkiaCompositingLayer::paintWithMaskAndBackdrop):\n(WebCore::SkiaCompositingLayer::paintWithFilterAndMask):\n(WebCore::SkiaCompositingLayer::recursivePaint):\n(WebCore::SkiaCompositingLayer::paintWithOpacity):\n(WebCore::SkiaCompositingLayer::paintWithBlendMode):\n(WebCore::SkiaCompositingLayer::recursiveCleanUpAfterPaint):\n(WebCore::SkiaCompositingLayer::addPreviousRectToSharedFrameDamage): Deleted.\n(WebCore::SkiaCompositingLayer::recursiveAddPreviousRectToSharedFrameDamage): Deleted.\n* Source/WebCore/platform/graphics/skia/SkiaCompositingLayer.h:\n* Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedPlatformLayer.cpp:\n(WebCore::CoordinatedPlatformLayer::ensureSkiaTarget):\n* Tools/TestWebKitAPI/PlatformGTK.cmake:\n* Tools/TestWebKitAPI/PlatformWPE.cmake:\n* Tools/TestWebKitAPI/Tests/WebCore/glib/SkiaCompositingLayerDamage.cpp: Added.\n(TestWebKitAPI::TEST(SkiaCompositingLayerDamage, CollectsDamageBeyondTheRootLayerSize)):\n(TestWebKitAPI::createMaskedTree):\n(TestWebKitAPI::paintAndCollect):\n(TestWebKitAPI::TEST(SkiaCompositingLayerDamage, MovedMaskDamagesTheMaskedLayer)):\n(TestWebKitAPI::TEST(SkiaCompositingLayerDamage, ChangedMaskDamagesChildrenOutsideTheLayerBounds)):\n(TestWebKitAPI::TEST(SkiaCompositingLayerDamage, RemovedMaskDamagesChildrenOutsideTheLayerBounds)):\n(TestWebKitAPI::createSolidColorLayer):\n(TestWebKitAPI::createSettledTree):\n(TestWebKitAPI::TEST(SkiaCompositingLayerDamage, RemovedLayerIsDamagedOnce)):\n(TestWebKitAPI::TEST(SkiaCompositingLayerDamage, DestroyedLayerIsDamagedWhereItPainted)):\n(TestWebKitAPI::TEST(SkiaCompositingLayerDamage, HiddenLayerComingBackIsDamagedWhereItPaintsNow)):\n(TestWebKitAPI::TEST(SkiaCompositingLayerDamage, MovedLayerIsDamagedInBothPlaces)):\n(TestWebKitAPI::TEST(SkiaCompositingLayerDamage, ReplicatedLayerIsDamagedWithItsReplica)):\n\nCanonical link: https://commits.webkit.org/317343@main",
      "email": "nzimmermann@igalia.com",
      "hash": "ea01c03eb4ed9183cc36b479fc29ed3ec1bce18f",
      "subject": "[Damage][Skia] Make the collected frame damage cover every pixel the frame changes"
    },
    "317344@main": {
      "author": "Keith Miller",
      "avatar": "https://www.gravatar.com/avatar/bddc1595b29098429a6ce7c8bf4aced2?d=identicon\u0026s=64",
      "cl": "317344@main",
      "clUrl": "https://commits.webkit.org/317344@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319595\nrdar://182423847\n\nReviewed by Alan Baradlay.\n\n* Source/ThirdParty/dav1d/CMakeLists.txt: Add missing files.\n\nCanonical link: https://commits.webkit.org/317344@main",
      "email": "keith_miller@apple.com",
      "hash": "476d03568ce4cae4821adb89ee3ace5cc380fa6b",
      "subject": "[CMake] 317298@main didn't add ctx.c and pal.c to CMakeLists.txt"
    },
    "317345@main": {
      "author": "Dana Estra",
      "avatar": "https://www.gravatar.com/avatar/bb57a3e383fc407cd4b341aeef87d877?d=identicon\u0026s=64",
      "cl": "317345@main",
      "clUrl": "https://commits.webkit.org/317345@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319387\nrdar://180740366\n\nReviewed by Jer Noble.\n\n314324@main added \"VisibleInFullscreen\" and\n\"VisibleInPictureInPicture\" to enum MediaPlayerViewportVisibility but\ndidn't update MediaPlayerPrivateMediaStreamAVFObjC::setViewportVisibility\nto know that these values indicate that m_isVisibleInViewPort should\nbe set to true.\n\nAlso, now that viewport visibility can change when the fullscreen mode changes,\nwe should call setViewportVisibility when the fullscreen mode changes to keep\nm_isVisibleInViewPort up to date.\n\nNew test: LayoutTests/media/picture-in-picture/picture-in-picture-media-stream-frames.html\n\n* LayoutTests/media/picture-in-picture/picture-in-picture-media-stream-frames-expected.txt: Added.\n* LayoutTests/media/picture-in-picture/picture-in-picture-media-stream-frames.html: Added.\n* Source/WebCore/html/HTMLMediaElement.cpp:\n(WebCore::HTMLMediaElement::setFullscreenMode):\n* Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.mm:\n(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::setViewportVisibility):\n\nCanonical link: https://commits.webkit.org/317345@main",
      "email": "destra@apple.com",
      "hash": "f2396869a1715c1e06b0b3a9bb9644cd5271c20a",
      "subject": "Picture-in-Picture stops updating MediaStream video frames"
    },
    "317346@main": {
      "author": "Anne van Kesteren",
      "avatar": "https://www.gravatar.com/avatar/09bb44ac3625a121017cd98d0a7dc52c?d=identicon\u0026s=64",
      "cl": "317346@main",
      "clUrl": "https://commits.webkit.org/317346@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=314919\nrdar://177742288\n\nReviewed by Alex Christensen.\n\napplyHostNameFunctionToURLString found the host name's terminator (the\nfirst \":\", \"/\", \"?\", or \"#\") before looking for the userinfo \"@\". For a\nURL like \"https://user:pass@münchen.de/\" the \":\" in the userinfo was\ntaken as the port separator, so the \"@\" fell outside the searched range\nand \"user\" was mapped as the host instead of \"münchen.de\", leaving the\nreal host without IDN processing.\n\nFind the authority end (\"/\", \"?\", \"#\", or end of string) first, then the\nlast \"@\" within it, and only then the \":\" port separator. This also lets\nIPv6 literals with a port or userinfo pass through correctly.\n\nTest: Tools/TestWebKitAPI/Tests/WTF/cocoa/URLExtras.mm\nCanonical link: https://commits.webkit.org/317346@main",
      "email": "annevk@annevk.nl",
      "hash": "bff1e092438a6e16c0304ec50a6f7517f8bc54bb",
      "subject": "mapHostNames misparses a colon in userinfo as the port separator"
    },
    "317347@main": {
      "author": "Dan Hecht",
      "avatar": "https://www.gravatar.com/avatar/080f47d912b1b34d0be8293f825d132d?d=identicon\u0026s=64",
      "cl": "317347@main",
      "clUrl": "https://commits.webkit.org/317347@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319614\nrdar://182442861\n\nReviewed by Marcus Plutowski.\n\nSmall objects are batched many-per-page: a segregated page holds at least\nPAS_MIN_OBJECTS_PER_PAGE objects, so one page's backing serves many\nallocations, and those objects are zeroed per object rather than per page.\nThe size-regime reuse tests mostly keep one object live at a time and so\ndo not exercise many co-resident objects on a shared page.\n\nAdd a test that fills several pages with small zeroed objects and checks\neach is independently zero, then frees them all and refills so the freed\nobjects are recycled, checking each reallocated object is zero. It runs\nover both heap variants and two sizes bracketing the per-page object\ndensity.\n\n* Source/bmalloc/libpas/src/test/AllocationZeroingTests.cpp:\n(addAllocationZeroingTests):\n\nCanonical link: https://commits.webkit.org/317347@main",
      "email": "dan.hecht@apple.com",
      "hash": "68abd570b559737b6ecedc0a69747fe4215e9b06",
      "subject": "[libpas] Add small-object page-batching zeroing to AllocationZeroingTests"
    },
    "317348@main": {
      "author": "Ahmad Saleem",
      "avatar": "https://www.gravatar.com/avatar/38445f84fe28aa19bfeb1f59f6559532?d=identicon\u0026s=64",
      "cl": "317348@main",
      "clUrl": "https://commits.webkit.org/317348@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=288913\nrdar://146546693\n\nReviewed by Antoine Quint.\n\nA view-timeline subject taller than the scrollport is simultaneously entering\nand exiting while it covers the scrollport, but computeSubjectStickinessLocation()\nclassified both anchors as DuringEntry (that check ran first), so\nexitDistanceAdjustment() returned 0 and the contain/entry/exit-crossing ranges\nwere unadjusted for stickiness.\n\nAdd a WhileCovering location (checked before DuringEntry) that contributes to\nboth the entry and exit distance adjustments. Only an oversized subject can\nsatisfy it, so other cases are unaffected.\n\n* LayoutTests/imported/w3c/web-platform-tests/scroll-animations/view-timelines/sticky/view-timeline-sticky-offscreen-7-expected.txt: Progression\n* Source/WebCore/animation/ViewTimeline.cpp:\n(WebCore::StickinessAdjustmentData::computeStickinessAdjustmentData):\n(WebCore::StickinessAdjustmentData::entryDistanceAdjustment const):\n(WebCore::StickinessAdjustmentData::exitDistanceAdjustment const):\n(WebCore::operator\u003c\u003c):\n* Source/WebCore/animation/ViewTimeline.h:\n\nCanonical link: https://commits.webkit.org/317348@main",
      "email": "ahmad.saleem792+github@gmail.com",
      "hash": "1e9c4e439f91b540db00407136c9b9b9c30959cb",
      "subject": "[scroll-animations] View timeline sticky adjustment wrong for subject taller than the scrollport"
    },
    "317349@main": {
      "author": "Alan Baradlay",
      "avatar": "https://www.gravatar.com/avatar/788d66417db806c567552cfa1ae89f77?d=identicon\u0026s=64",
      "cl": "317349@main",
      "clUrl": "https://commits.webkit.org/317349@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319534\nrdar://problem/182362366\n\nReviewed by Antti Koivisto.\n\n    \u003cdiv style=\"position: relative; width: 500px\"\u003e\n        \u003cdiv style=\"position: absolute; justify-self: center\"\u003ehi\u003c/div\u003e\n    \u003c/div\u003e\n\nThe absolutely-positioned inner block has auto insets, so it is placed at its\nstatic position and should be centered within the 500px containing block. Instead\njustify-self was ignored: the box stayed pinned to the inline-start edge.\n\nWhen both inline-axis insets are auto, an out-of-flow box is placed at its static\nposition. Per css-align-3, justify-self then aligns its margin box within the box's\nstatic-position rectangle, resolving against the containing block's writing mode; a\njustify-self of auto resolves to the parent's justify-items. (See\nhttps://drafts.csswg.org/css-align-3/#justify-abspos and Appendix A.)\n\nAlign the box within the remaining inline space at the static position when\njustify-self asks for it, gating the behavior with\nshouldAlignStaticPositionInInlineAxis() so it applies only where it is both correct\nand covered by tests:\n\n  - the box's own inline axis (non-orthogonal); orthogonal / block-axis static\n    positioning keeps the existing static-position path,\n  - justify-self resolves (against the parent) to something other than normal;\n    normal / auto-resolving-to-normal keeps the box at its static position,\n  - the static-position containing block is a plain block container -- flex and grid\n    containers place their abspos children with their own alignment rules, and\n    alignment does not apply to out-of-flow children of inline boxes.\n\nEverything else falls back to the existing static-position placement, which already\nresolves the correct edge for every writing-mode / direction / orthogonal\ncombination via the parent-relative static inset. This gating matters because the\nexisting path anchors to that parent-relative edge while resolveAlignmentShift()\nreasons in the containing block's writing mode; the two diverge whenever the\nparent's inline direction differs from the containing block's, so aligning\nunconditionally mispositioned ordinary (justify-self: auto) abspos boxes. The\nblock-axis / align-self behavior is unchanged.\n\n* Source/WebCore/rendering/PositionedLayoutConstraints.cpp:\n(WebCore::PositionedLayoutConstraints::shouldAlignStaticPositionInInlineAxis const):\n(WebCore::PositionedLayoutConstraints::resolvePosition const):\n(WebCore::PositionedLayoutConstraints::resolveAlignmentValue const):\n* Source/WebCore/rendering/PositionedLayoutConstraints.h:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-align/abspos/justify-self-static-position-htb-ltr-htb.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-align/abspos/justify-self-static-position-htb-ltr-htb-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-align/abspos/justify-self-static-position-htb-rtl-htb.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-align/abspos/justify-self-static-position-htb-rtl-htb-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-align/abspos/justify-self-static-position-vlr-ltr-vlr.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-align/abspos/justify-self-static-position-vlr-ltr-vlr-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-align/abspos/justify-self-static-position-vrl-ltr-vrl.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-align/abspos/justify-self-static-position-vrl-ltr-vrl-expected.txt: Added.\n\nCanonical link: https://commits.webkit.org/317349@main",
      "email": "zalan@apple.com",
      "hash": "843759a5e680f823f6407133148a56abe6b0d96a",
      "subject": "[css-align] Support justify-self for out-of-flow boxes at the static position"
    },
    "317350@main": {
      "author": "Yijia Huang",
      "avatar": "https://www.gravatar.com/avatar/5bc95a5f0a5fdfc107bbdec6979dae89?d=identicon\u0026s=64",
      "cl": "317350@main",
      "clUrl": "https://commits.webkit.org/317350@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319531\nrdar://182355686\n\nReviewed by Sosuke Suzuki.\n\nExtract the spec's InterpretTemporalDateTimeFields abstract operation\ninto JSC::interpretTemporalDateTimeFields and route all four spec\ncallers through it: PlainDateTime.from, ZonedDateTime.from,\nZonedDateTime.with, and Duration.relativeTo. Prior to this patch each\ncaller open-coded the three steps (CalendarDateFromFields + RegulateTime\n+ CombineISODateAndTimeRecord) inline.\n\nDeletes the legacy TemporalDuration::resolvePlainDateFromFields helper\nnow that Duration.relativeTo routes through the shared implementation.\nIntroduces TemporalCore::TimeFieldsIn to mirror CalendarFieldsIn's\noptional pattern.\n\nAlso restores the month-or-monthCode required-field check that the\npre-refactor callers open-coded — matches CalendarResolveFields for the\nISO branch and NonISOResolveFields for the non-ISO branch.\n\nTests: temporal-zoned-date-time-with-era-calendar.js\nCanonical link: https://commits.webkit.org/317350@main",
      "email": "yijia_huang@apple.com",
      "hash": "bc5f4aa81ce3e901e9a8314049a86b230bd5159c",
      "subject": "[JSC][Temporal] Consolidate InterpretTemporalDateTimeFields into one implementation"
    },
    "317351@main": {
      "author": "Aleksei Marchenko",
      "avatar": "https://www.gravatar.com/avatar/9a469093291c12531caccfcaa6ab73b1?d=identicon\u0026s=64",
      "cl": "317351@main",
      "clUrl": "https://commits.webkit.org/317351@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319304\nrdar://181856284\n\nReviewed by Mike Wyrzykowski.\n\nRe-allow log services; WebContent denies these under LOGD_BLOCKING_IN_WEBCONTENT.\n\n* Source/WebKit/Resources/SandboxProfiles/ios/com.apple.WebKit.Model.sb.in:\n\nCanonical link: https://commits.webkit.org/317351@main",
      "email": "aleksei@apple.com",
      "hash": "e29a2e04b3671938598e903523af630c9b9e26a9",
      "subject": "rdar://181856284 ([REGRESSION] Model Process logging is broken on visionOS - logd denied with no forwarding fallback)"
    },
    "317352@main": {
      "author": "Alan Baradlay",
      "avatar": "https://www.gravatar.com/avatar/788d66417db806c567552cfa1ae89f77?d=identicon\u0026s=64",
      "cl": "317352@main",
      "clUrl": "https://commits.webkit.org/317352@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=318625\n\nReviewed by Antti Koivisto.\n\nThe legacy flex layout computed the two gaps once at the top of performFlexLayout and threaded them\nthrough seven functions, and it open-coded the \"container inner size minus the inter-item or\ninter-line gaps\" arithmetic at five sites. The LFC Layout::FlexLayout it converges on instead exposes\nmainAxisAvailableSpaceForItemAlignment and crossAxisAvailableSpaceForLineSizingAndAlignment and\ncomputes the gap at the point of use.\n\nAdd those two helpers (each returns the available size for a single item or line, otherwise the size\nless (n - 1) gaps, computing the gap internally), route the five available-space sites through them,\nand drop the gapBetweenItems / gapBetweenLines parameters. The remaining sites that need the gap\nvalue itself (line collection, justify-content and align-content spacing, the inter-line total)\ncompute it locally at use, the way computeFlexLines already did.\n\nNo change in behavior. The gap is a container invariant across the flex container's own layout: a\npercentage gap resolves against availableLogicalHeightForPercentageComputation, which reads style,\nthe parent-set flex or grid override and aspect ratio rather than the live logical height that layout\nmutates, so computing it at use matches the old top-of-layout snapshot. The distribute short-line\nrestructure is the same comparison with the gap term moved to the other side.\n\n* Source/WebCore/rendering/RenderFlexLayout.cpp:\n(WebCore::FlexLayout::performFlexLayout):\n(WebCore::FlexLayout::computeMainSizeForFlexItems):\n(WebCore::FlexLayout::resolveFlexibleLengthsForLineItems):\n(WebCore::FlexLayout::mainAxisAvailableSpaceForItemAlignment const):\n(WebCore::FlexLayout::crossAxisAvailableSpaceForLineSizingAndAlignment const):\n(WebCore::FlexLayout::distributeMainAxisFreeSpaceForMultilineColumnIfNeeded):\n(WebCore::FlexLayout::handleMainAxisAlignment):\n(WebCore::FlexLayout::handleCrossAxisAlignmentForFlexLines):\n(WebCore::FlexLayout::placeFlexItems):\n(WebCore::FlexLayout::layoutColumnReverse):\n* Source/WebCore/rendering/RenderFlexLayout.h:\n\nCanonical link: https://commits.webkit.org/317352@main",
      "email": "zalan@apple.com",
      "hash": "b3fb9c003b43f4ab24d2e8aaea5862166ed6ae86",
      "subject": "[cleanup] Add FlexLayout available-space helpers mirroring Layout::FlexLayout and compute the flex gaps at use instead of threading them"
    },
    "317353@main": {
      "author": "Fady Farag",
      "avatar": "https://www.gravatar.com/avatar/0ac5127c69f90d0c57054173ae4c3108?d=identicon\u0026s=64",
      "cl": "317353@main",
      "clUrl": "https://commits.webkit.org/317353@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319533\nrdar://182361481\n\nReviewed by Chris Dumez.\n\nThis lets the compiler see the constant values for better optimization.\n\n* Source/WebKit/Shared/Authentication/cocoa/ClientCertificateAuthenticationXPCConstants.cpp: Removed.\n* Source/WebKit/Shared/Authentication/cocoa/ClientCertificateAuthenticationXPCConstants.h:\n* Source/WebKit/SourcesCocoa.txt:\n* Source/WebKit/WebKit.xcodeproj/project.pbxproj:\n\nCanonical link: https://commits.webkit.org/317353@main",
      "email": "com.webkit.iidmsa@gmail.com",
      "hash": "b6c47bef2faf1d63d7d501b044767c8dbc1e6124",
      "subject": "Use C++17 `inline constexpr` variables instead of `extern const` in WebKit"
    },
    "317354@main": {
      "author": "Mike Wyrzykowski",
      "avatar": "https://www.gravatar.com/avatar/4b1bc9e238714f95e22d5d2454c07066?d=identicon\u0026s=64",
      "cl": "317354@main",
      "clUrl": "https://commits.webkit.org/317354@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319620\nrdar://182441329\n\nUnreviewed, fix build for certain SDK variants.\n\n* Source/WebKit/GPUProcess/graphics/Model/USDModel.swift:\n(rootJointIndices(forMeshAt:in:)):\n\nCanonical link: https://commits.webkit.org/317354@main",
      "email": "mwyrzykowski@apple.com",
      "hash": "b37d8988b56e99d7da27cfab42fbc303b148fc4c",
      "subject": "Fix source breaking SDK change"
    },
    "317355@main": {
      "author": "lilly",
      "avatar": "https://www.gravatar.com/avatar/d0533d52eeb271270df480f37629a407?d=identicon\u0026s=64",
      "cl": "317355@main",
      "clUrl": "https://commits.webkit.org/317355@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319432\nrdar://182250385\n\nReviewed by Simon Fraser.\n\nUpdate TestExpectations to reflect tests that now pass with added corner-shape\nimplementation for corner shapes notch, bevel, and scoop\n\n* LayoutTests/TestExpectations:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-borders/corner-shape/corner-shape-scoop.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-borders/corner-shape/corner-shape-superellipse-bevel.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-borders/corner-shape/corner-shape-superellipse-scoop.html:\n\nCanonical link: https://commits.webkit.org/317355@main",
      "email": "173393835+cupidsity@users.noreply.github.com",
      "hash": "d2bd8df2d58bc6fbdec79b1b7cfdea5bb0e6f23e",
      "subject": "corner-shape: update corner-shape TestExpectations"
    },
    "317356@main": {
      "author": "Ryan Haddad",
      "avatar": "https://www.gravatar.com/avatar/b7d8cd2dec546cac2524e4b58181f9d5?d=identicon\u0026s=64",
      "cl": "317356@main",
      "clUrl": "https://commits.webkit.org/317356@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=318965\nrdar://problem/181820853\n\nReviewed by Aakash Jain.\n\nWhen git-webkit revert creates its tracking bug, the --reason is used verbatim as the Bugzilla\nsummary. A reason longer than Bugzilla's 255-character summary results in a HTTP 400 response,\nwhich Tracker.create() teated as the same as no response and printed a hard-coded \"Login\nattempts exhausted\" fallback even though authentication had succeeded.\n\nDistinguish \"no response\" from \"a response with an error status\" with more explicit checks,\nand cap the summary at Bugzilla's limit so an over-length reason no longer fails. The full\nreason is preserved in the bug description.\n\n* Tools/Scripts/libraries/webkitbugspy/webkitbugspy/bugzilla.py:\n(Tracker): Add MAX_SUMMARY_LENGTH.\n(Tracker.cc_radar): Check \"response is None\" / \"response is not None\" so a 4xx response is\nnot mistaken for a missing response.\n(Tracker.create): Ditto. Also surface the server's error message on failure, and truncate the\nsummary to MAX_SUMMARY_LENGTH.\n* Tools/Scripts/libraries/webkitbugspy/webkitbugspy/mocks/bugzilla.py:\n(Bugzilla._create): Return Bugzilla's HTTP 400 for an over-length summary.\n* Tools/Scripts/libraries/webkitbugspy/webkitbugspy/tests/bugzilla_unittest.py:\n(TestBugzilla.test_create_surfaces_server_error): Added.\n(TestBugzilla.test_create_truncates_summary): Added.\n\nCanonical link: https://commits.webkit.org/317356@main",
      "email": "ryanhaddad@apple.com",
      "hash": "9a70448e1bbd9e55645755168287fdfa2d8384b3",
      "subject": "[webkitbot] Revert failed with error \"Failed to create bug: Login attempts exhausted\""
    }
  },
  "date": "2026-07-16",
  "days": 1,
  "generatedAt": "2026-07-16T22:06:15Z",
  "markdown": "## Highlights\n- **Web Platform** WebKit picked up core pieces of CSS animation triggers and tightened scroll animation behavior, pushing several in-flight animation specs closer to usable interop. [commit 317307@main](https://commits.webkit.org/317307@main) [commit 317291@main](https://commits.webkit.org/317291@main) [commit 317348@main](https://commits.webkit.org/317348@main) [commit 317330@main](https://commits.webkit.org/317330@main)\n- **Security** Digital Credentials now rejects opaque origins and avoids presenting an empty picker after validated-but-empty requests, closing off bad edge cases in a sensitive API surface. [commit 317275@main](https://commits.webkit.org/317275@main) [commit 317276@main](https://commits.webkit.org/317276@main)\n- **Networking** A crash in the network process when downloading a cross-origin target=\"_blank\" link got fixed, which should remove a nasty page-load failure mode. [commit 317338@main](https://commits.webkit.org/317338@main)\n- **Media** Picture-in-Picture stopped dropping live MediaStream video updates, fixing a visible regression for camera and screen-share style content. [commit 317345@main](https://commits.webkit.org/317345@main)\n- **DevTools** Web Inspector now emits per-element \"Layout Invalidated\" events, a useful low-level signal for tracking layout churn and debugging rendering regressions. [commit 317302@main](https://commits.webkit.org/317302@main)\n- **A11y** Two VoiceOver fixes land at once: decorative out-of-flow images no longer silence an entire line, and iframe content on iOS no longer traps swipe navigation at the end. [commit 317341@main](https://commits.webkit.org/317341@main) [commit 317285@main](https://commits.webkit.org/317285@main)\n- **Rendering** Damage tracking got more conservative and correct in the Skia path, ensuring frame damage covers every changed pixel and tracks per swap-chain target history. [commit 317343@main](https://commits.webkit.org/317343@main) [commit 317342@main](https://commits.webkit.org/317342@main)\n- **V8** JSC landed a solid batch of engine work: Temporal cleanup, a Promise species correctness fix for for-await, regex capture save/restore tuning, and signed div/rem strength reduction in BBQ. [commit 317350@main](https://commits.webkit.org/317350@main) [commit 317320@main](https://commits.webkit.org/317320@main) [commit 317321@main](https://commits.webkit.org/317321@main) [commit 317309@main](https://commits.webkit.org/317309@main)\n- **Build** WebKit continues its C++17 cleanup with inline constexpr migrations in both WebKit and WebCore, plus a few fast follow build fixes across CMake, Windows, and SDK fallout. [commit 317353@main](https://commits.webkit.org/317353@main) [commit 317317@main](https://commits.webkit.org/317317@main) [commit 317344@main](https://commits.webkit.org/317344@main) [commit 317354@main](https://commits.webkit.org/317354@main)\n\n## What landed by area\n\n### CSS and layout\n- **Web Platform** `justify-self` now works for out-of-flow boxes at the static position, filling in a long-missing CSS Align behavior. [commit 317349@main](https://commits.webkit.org/317349@main)\n- **Rendering** Dynamic `view-transition-name` changes now repaint the affected element instead of leaving stale visuals behind. [commit 317310@main](https://commits.webkit.org/317310@main)\n- **Web Platform** CSS Scroll Snap re-snap logic now prefers a snap area aligned in both axes when several candidates line up. [commit 317294@main](https://commits.webkit.org/317294@main)\n- **Rendering** Oklch gradients no longer pick up random bands of color in some cases, fixing a visible rendering regression. [commit 317281@main](https://commits.webkit.org/317281@main)\n- **Refactor** Flex layout cleanup continued with available-space helpers that mirror Layout::FlexLayout more closely. [commit 317352@main](https://commits.webkit.org/317352@main)\n- **Refactor** Flex length resolution was reshaped to track the Layout::FlexLayout structure more directly. [commit 317337@main](https://commits.webkit.org/317337@main)\n- **Refactor** Flex item main-axis length-resolution size is now passed into FlexLayout as a constraint. [commit 317324@main](https://commits.webkit.org/317324@main)\n- **Refactor** RenderFlexibleBox now lays out a flex item after main sizing instead of delegating that part to FlexLayout. [commit 317311@main](https://commits.webkit.org/317311@main)\n- **Refactor** RenderFlexibleBox now handles flex item layout for stretch alignment itself. [commit 317305@main](https://commits.webkit.org/317305@main)\n- **Refactor** Flex container logical height resolution moved into RenderFlexibleBox. [commit 317286@main](https://commits.webkit.org/317286@main)\n- **Refactor** Flex container main-axis available space is now passed into FlexLayout as a constraint. [commit 317278@main](https://commits.webkit.org/317278@main)\n- **Refactor** A dead fieldset baseline path got removed after subpixel inline layout cleanup. [commit 317314@main](https://commits.webkit.org/317314@main)\n- **Refactor** A no-op fragment-offset shift in static inline positioning got deleted. [commit 317312@main](https://commits.webkit.org/317312@main)\n- **Perf** `Line::Run` got smaller through member reordering. [commit 317315@main](https://commits.webkit.org/317315@main)\n- **Perf** `InlineContentCache::InlineItems::ContentAttributes` also shrank via member reordering. [commit 317313@main](https://commits.webkit.org/317313@main)\n- **Web Platform** The Grid Formatting Context integration tightened alignment validation that was previously slipping through. [commit 317316@main](https://commits.webkit.org/317316@main)\n- **Web Platform** `corner-shape` expectations were updated as that feature keeps moving toward stable test coverage. [commit 317355@main](https://commits.webkit.org/317355@main)\n- **Web Platform** A WPT mismatch in `white-space-trim` bracket coloring was fixed before export. [commit 317327@main](https://commits.webkit.org/317327@main)\n\n### Animations, SVG, and scrolling\n- **Web Platform** `animation-trigger` property parsing landed, adding one of the main entry points for animation triggers. [commit 317307@main](https://commits.webkit.org/317307@main)\n- **Web Platform** Parsing support for the `timeline-trigger-active-range` shorthand also landed. [commit 317291@main](https://commits.webkit.org/317291@main)\n- **Web Platform** Sticky view timeline adjustment got fixed for subjects taller than the scrollport. [commit 317348@main](https://commits.webkit.org/317348@main)\n- **Web Platform** When `animation-timeline` matches multiple timelines, WebKit now uses the last matching one. [commit 317330@main](https://commits.webkit.org/317330@main)\n- **Refactor** Scroll animations WPT snapshots were updated to match current behavior. [commit 317290@main](https://commits.webkit.org/317290@main)\n- **UI** A regression in Inspector animation lifecycle testing on Apple ports was fixed. [commit 317334@main](https://commits.webkit.org/317334@main)\n- **Rendering** After two runs of an SMIL SVG animation, SVG items now re-appear correctly instead of staying gone. [commit 317272@main](https://commits.webkit.org/317272@main)\n\n### Networking, loading, and fetch\n- **Networking** Hostname mapping no longer misparses a colon in userinfo as a port separator, matching URL reality better. [commit 317346@main](https://commits.webkit.org/317346@main)\n- **Networking** WebTransport tests now run an h3 WPT server in the layout test harness, enabling a meaningful block of passing tests. [commit 317331@main](https://commits.webkit.org/317331@main)\n- **Networking** Early Hints WPT coverage was imported, which should raise pressure on 103 handling and preload correctness. [commit 317308@main](https://commits.webkit.org/317308@main)\n- **Networking** Import module failure caching tests landed, covering an area where loaders and module graphs can go subtly wrong. [commit 317303@main](https://commits.webkit.org/317303@main)\n- **Refactor** The old `ShouldDeferAsynchronousScriptsUntilAfterDocumentLoadOrFirstPaint` preference was removed. [commit 317300@main](https://commits.webkit.org/317300@main)\n- **Networking** A stale assertion in `NetworkProcess::destroySession` was removed. [commit 317277@main](https://commits.webkit.org/317277@main)\n- **Web Platform** `testharness.js` `bless()` now works for cross-origin iframes, fixing a rough edge in web-platform testing infrastructure. [commit 317287@main](https://commits.webkit.org/317287@main)\n- **Web Platform** CDATA sections are now allowed at integration points during fragment parsing. [commit 317273@main](https://commits.webkit.org/317273@main)\n- **Web Platform** ReadableStream byte-source tee now targets the right branch during BYOB close steps. [commit 317296@main](https://commits.webkit.org/317296@main)\n- **Web Platform** Custom element registry `innerHTML` failures were cleaned up with two remaining test failures fixed. [commit 317332@main](https://commits.webkit.org/317332@main)\n\n### Media, graphics, and GPU\n- **Media** dav1d was resynced to M150, keeping AV1 decode support current. [commit 317298@main](https://commits.webkit.org/317298@main)\n- **Media** Extra logging landed in `WebAVPlayerLayerView` to help debug media-layer issues. [commit 317289@main](https://commits.webkit.org/317289@main)\n- **GPU** WebXR dropped a check for CompositorServices forward-Z support. [commit 317297@main](https://commits.webkit.org/317297@main)\n- **Media** A microphone interruption text regression on macOS got fixed in test coverage. [commit 317299@main](https://commits.webkit.org/317299@main)\n- **Rendering** A fuzzy expectation was added for disk-cache shattered deduplication output in cache testing. [commit 317301@main](https://commits.webkit.org/317301@main)\n\n### JavaScriptCore, Wasm, and runtime\n- **V8** WASM can now link immutable `exnref` global imports. [commit 317326@main](https://commits.webkit.org/317326@main)\n- **V8** YARR now uses a loop for massive save and restore of subpattern captures, a tidy regex engine optimization. [commit 317321@main](https://commits.webkit.org/317321@main)\n- **V8** `for await` fast consumption now re-checks the Promise species watchpoint for correctness. [commit 317320@main](https://commits.webkit.org/317320@main)\n- **V8** `jsSpliceSubstringsWithSeparator(s)` now takes the generic path for short two-range results. [commit 317282@main](https://commits.webkit.org/317282@main)\n- **V8** JSC feature flags are now driven by `UnifiedWebPreferences.yaml`, centralizing runtime preference wiring. [commit 317306@main](https://commits.webkit.org/317306@main)\n\n### Accessibility, editing, and user interaction\n- **A11y** Copy and paste from cross-origin subframes under Site Isolation now preserves the missing content. [commit 300189@main](https://commits.webkit.org/300189@main)\n- **UI** AppKit gesture position-control logic was refactored out of `WKAppKitGestureController`. [commit 317279@main](https://commits.webkit.org/317279@main)\n\n### Platform ports, build, and infrastructure\n- **Build** A source-breaking SDK change got patched up. [commit 317354@main](https://commits.webkit.org/317354@main)\n- **Build** `ctx.c` and `pal.c` were added to CMakeLists after being missed in an earlier landing. [commit 317344@main](https://commits.webkit.org/317344@main)\n- **Build** Safer C++ fallout after `317307@main` was fixed. [commit 317323@main](https://commits.webkit.org/317323@main)\n- **Build** `IntPairHash::equal` and `DefaultHash\u003cpair\u003cint, unsigned\u003e\u003e` had wrong template arguments and now compile correctly. [commit 317318@main](https://commits.webkit.org/317318@main)\n- **Build** `WTF::divideRoundedUp` no longer risks overflow near max-value dividends. [commit 317292@main](https://commits.webkit.org/317292@main)\n- **Build** Windows got an unreviewed build fix after `317284@main`. [commit 317295@main](https://commits.webkit.org/317295@main)\n- **Build** Windows builds now behave when Swift is present. [commit 317288@main](https://commits.webkit.org/317288@main)\n- **Refactor** GTK and WPE benchmark runs can now auto-enter the container SDK when launching MiniBrowser. [commit 317280@main](https://commits.webkit.org/317280@main)\n- **UI** WPE drag and drop is now routed through the GLib `SelectionData` IPC path. [commit 317329@main](https://commits.webkit.org/317329@main)\n- **Refactor** WPE removed a redundant `OS(ANDROID)` guard in `AcceleratedBackingStore.cpp`. [commit 317325@main](https://commits.webkit.org/317325@main)\n- **Build** WPE fixed a text failure in `selectionchange.html`. [commit 317319@main](https://commits.webkit.org/317319@main)\n- **UI** Model Process logging on visionOS now has the right fallback path when `logd` denies direct logging. [commit 317351@main](https://commits.webkit.org/317351@main)\n- **Build** Extra logging was added to debug `MACH_SEND_TOO_LARGE` IPC failures. [commit 317284@main](https://commits.webkit.org/317284@main)\n\n### Testing and imported expectations\n- **Refactor** `css-masking` was resynced from upstream WPT. [commit 317333@main](https://commits.webkit.org/317333@main)\n- **Refactor** `css/css-shapes` was resynced from upstream WPT. [commit 317322@main](https://commits.webkit.org/317322@main)\n- **Refactor** WebCore safer C++ expectations were updated. [commit 317293@main](https://commits.webkit.org/317293@main)\n- **Refactor** A constant failure in an IPC sandbox-extension test was marked and tracked. [commit 317340@main](https://commits.webkit.org/317340@main)\n- **Refactor** A partitioned-cookies test on Cocoa was marked as a constant failure. [commit 317328@main](https://commits.webkit.org/317328@main)\n- **Refactor** A linter issue in a `text-overflow-with-selection` WPT file was fixed before export. [commit 317304@main](https://commits.webkit.org/317304@main)\n- **Refactor** A macOS `ViewScaleFactorAfterShrinkToFit` API test was marked as a constant failure on the Safari branch. [commit 317274@main](https://commits.webkit.org/317274@main)\n\n### Memory and allocator work\n- **Perf** `libpas` gained functional zeroed-reuse tests. [commit 317336@main](https://commits.webkit.org/317336@main)\n- **Perf** `libpas` also added page-batching zeroing coverage in `AllocationZeroingTests`. [commit 317347@main](https://commits.webkit.org/317347@main)\n\n## Reverts \u0026 Reapplies\n- **Refactor** Revert of `315959@main`, with no extra context in the title beyond backing out the earlier change. [commit 317335@main](https://commits.webkit.org/317335@main)\n- **Build** A webkitbot revert failed because it could not create the bug during automation, so the revert attempt itself was recorded. [commit 317356@main](https://commits.webkit.org/317356@main)",
  "repo": "webkit",
  "repoDisplay": "WebKit",
  "rollGroups": [
    {
      "name": "Unreviewed",
      "count": 1
    }
  ],
  "since": "2026-07-16",
  "totals": {
    "commits": 85,
    "features": 84,
    "rolls": 1
  },
  "until": "2026-07-16"
}