{
  "commits": {
    "317194@main": {
      "author": "Antoine Quint",
      "avatar": "https://www.gravatar.com/avatar/9b3ef1e754f8d994f21ff67c660cbbe6?d=identicon\u0026s=64",
      "cl": "317194@main",
      "clUrl": "https://commits.webkit.org/317194@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319239\nrdar://182085495\n\nReviewed by Sam Weinig.\n\nThe animation-triggers spec adds a new shorthand property: `timeline-trigger-activation-range`.\n\n* LayoutTests/platform/glib/imported/w3c/web-platform-tests/css/css-cascade/all-prop-initial-xml-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::consumeTimelineTriggerActivationRangeShorthand):\n* Source/WebCore/style/StyleExtractorCustom.h:\n(WebCore::Style::ExtractorCustom::extractTimelineTriggerActivationRangeShorthand):\n(WebCore::Style::ExtractorCustom::extractTimelineTriggerActivationRangeShorthandSerialization):\n* Source/WebCore/style/values/animation-triggers/StyleTimelineTrigger.h:\n(WebCore::Style::TimelineTrigger::initialActivationRange):\n(WebCore::Style::TimelineTrigger::activationRange const):\n(WebCore::Style::TimelineTrigger::setActivationRange):\n(WebCore::Style::TimelineTrigger::fillActivationRange):\n(WebCore::Style::TimelineTrigger::clearActivationRange):\n(WebCore::Style::TimelineTrigger::isActivationRangeUnset const):\n(WebCore::Style::TimelineTrigger::isActivationRangeSet const):\n(WebCore::Style::TimelineTrigger::isActivationRangeFilled const):\n\nCanonical link: https://commits.webkit.org/317194@main",
      "email": "graouts@webkit.org",
      "hash": "ef6ba36394db2dfa43b2f4b4ccc8ec2a2867752b",
      "subject": "[animation-triggers] add parsing support for the `timeline-trigger-activation-range` shorthand"
    },
    "317195@main": {
      "author": "Jean-Yves Avenard",
      "avatar": "https://www.gravatar.com/avatar/509313899deeb9262fad8f5e04093f5b?d=identicon\u0026s=64",
      "cl": "317195@main",
      "clUrl": "https://commits.webkit.org/317195@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319383\nrdar://181834735\n\nReviewed by Jer Noble and Eric Carlson.\n\nIn an environment where AVFoundation/CoreMedia are not available (such as\nrecoveryOS), loading any page with a media element repeatedly killed the\nWebContent process with:\n\n    Received an invalid message RemoteMediaPlayerManagerProxy_CreateMediaPlayer\n    from WebContent process N, requesting for it to be terminated.\n\nWebContent registers a remote AVFoundation factory whenever GPU-media is\nenabled, without regard to whether the framework is actually present, and ends\nup sending CreateMediaPlayer(AVFoundation) to the GPU process. This path is\nlong-standing and, on its own, harmless.\n\n315905@main replaced the identifier allowlist in\nRemoteMediaPlayerManagerProxy::createMediaPlayer() with\nMESSAGE_CHECK(playbackEngineForConnection(engineIdentifier)), turning the guard\ninto a registration-existence test. That conflates two distinct cases where the\nlookup returns null:\n\n- a contained engine (WebM/MSE) registered in the GPU process for capability\n    queries only (Supports scope) — a genuine containment bypass that must\n    terminate WebContent, and\n- an engine that is entirely unregistered because its platform framework is\n    unavailable (AVFoundation in recoveryOS) — which previously fell through and\n    degraded to a null player.\n\nThe latter now fails the MESSAGE_CHECK and terminates WebContent, which respawns\nand is killed again, surfacing as \"a problem repeatedly occurred\".\n\nOnly terminate for the containment-bypass case: when playbackEngineForConnection()\nreturns null, terminate only if the engine is registered at Supports scope.\nAn entirely-absent engine falls through to RemoteMediaPlayerProxy::create(),\nwhose MediaPlayer resolves the identifier to a NullMediaPlayerPrivate and reports\n\"not supported\" back to WebContent, as it did before 315905@main.\n\nAs a follow-up, WebContent should not register a remote player factory for an\nengine whose underlying framework is unavailable, so that no doomed\nCreateMediaPlayer message is sent to the GPU process in the first place (e.g. by\nchecking isAvailable() before RemoteMediaPlayerSupport::registerRemoteEngineIfAvailable()\nin the Cocoa engines' registerMediaEngine()).\n\n* Source/WebKit/GPUProcess/media/RemoteMediaPlayerManagerProxy.cpp:\n(WebKit::RemoteMediaPlayerManagerProxy::createMediaPlayer):\n\nCanonical link: https://commits.webkit.org/317195@main",
      "email": "jya@apple.com",
      "hash": "14878d1cdcb1713e69fb3d037ea878cbc0fb2218",
      "subject": "(315905@main) Unable to access apple.com in Safari in recoveryOS RemoteMediaPlayerManagerProxy_CreateMediaPlayer"
    },
    "317196@main": {
      "author": "Marcos Caceres",
      "avatar": "https://www.gravatar.com/avatar/d31c9c6a3b0af558a2945682020e5b90?d=identicon\u0026s=64",
      "cl": "317196@main",
      "clUrl": "https://commits.webkit.org/317196@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=318290\nrdar://168941907\n\nReviewed by Abrar Rahman Protyasha.\n\nAdd a run-webkit-tests path to drive the Digital Credentials virtual\nwallet via test_driver.set_virtual_wallet_behavior(), so the WPT\ndigital-credentials tests can run under WebKitTestRunner and not only\nrun-webdriver-tests. This is the WebKitTestRunner half of bug 306292 and\nbuilds on the WebDriver BiDi digitalCredentials module.\n\nAlso fix WKDigitalCredentialsPicker leaking its completion handler: on\nteardown without completion the handler was destroyed unrun, hitting the\nCompletionHandler assert. It is now settled with an OperationError,\nmatching the spec's \"otherwise\" platform-error mapping.\n\nIgnore a chooser response that arrives when the coordinator is no longer\nin the Requesting state (e.g. after the request was already aborted), so\na late or stale response cannot trip the InteractionStateGuard assertion.\n\nThe concurrent-requests test now sets a \"wait\" virtual wallet behavior so\nthe first request stays pending, letting the concurrency guard reject the\nsecond request; without a wallet the request fails before the guard runs.\n\n* LayoutTests/TestExpectations:\n* LayoutTests/http/wpt/identity/formats/ISO18013/response-handling.https-expected.txt: Added.\n* LayoutTests/http/wpt/identity/formats/ISO18013/valid-roundtrip.https-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/digital-credentials/concurrent-requests.https-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/digital-credentials/concurrent-requests.https.html:\n* LayoutTests/imported/w3c/web-platform-tests/digital-credentials/webdriver/get-mdoc.https-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/digital-credentials/webdriver/get-mdoc.https.html: Copied from LayoutTests/imported/w3c/web-platform-tests/digital-credentials/webdriver/get.https.html.\n* LayoutTests/imported/w3c/web-platform-tests/digital-credentials/webdriver/get-openid4vp.https.html: Renamed from LayoutTests/imported/w3c/web-platform-tests/digital-credentials/webdriver/get.https.html.\n* LayoutTests/imported/w3c/web-platform-tests/digital-credentials/webdriver/w3c-import.log:\n* LayoutTests/resources/testdriver-vendor.js:\n* Source/WebCore/Modules/identity/CredentialRequestCoordinator.cpp:\n(WebCore::CredentialRequestCoordinator::processCredentialChooserResponse):\n* Source/WebKit/UIProcess/API/C/WKPage.cpp:\n(WKPageSetVirtualWalletBehaviorForTesting):\n* Source/WebKit/UIProcess/API/C/WKPagePrivate.h:\n* Source/WebKit/UIProcess/DigitalCredentials/WKDigitalCredentialsPicker.mm:\n(-[WKDigitalCredentialsPicker dealloc]):\n(-[WKDigitalCredentialsPicker dismiss]):\n* Source/WebKit/UIProcess/WebPageProxy.cpp:\n(WebKit::WebPageProxy::close):\n(WebKit::WebPageProxy::showDigitalCredentialsChooser):\n(WebKit::WebPageProxy::settlePendingTestingDigitalCredentialHandler):\n(WebKit::WebPageProxy::abortPendingDigitalCredentialWaitHandlers):\n(WebKit::WebPageProxy::setVirtualWalletBehaviorForTesting):\n(WebKit::WebPageProxy::dismissDigitalCredentialsChooser):\n(WebKit::WebPageProxy::resetState):\n(WebKit::applyVirtualWalletBehavior):\n* Source/WebKit/UIProcess/WebPageProxy.h:\n* Source/WebKit/UIProcess/WebPageProxyInternals.h:\n* Tools/WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl:\n* Tools/WebKitTestRunner/InjectedBundle/TestRunner.cpp:\n(WTR::TestRunner::setVirtualWalletBehavior):\n* Tools/WebKitTestRunner/InjectedBundle/TestRunner.h:\n* Tools/WebKitTestRunner/TestController.cpp:\n(WTR::TestController::setVirtualWalletBehavior):\n* Tools/WebKitTestRunner/TestController.h:\n* Tools/WebKitTestRunner/TestInvocation.cpp:\n(WTR::TestInvocation::didReceiveSynchronousMessageFromInjectedBundle):\n\nCanonical link: https://commits.webkit.org/317196@main",
      "email": "marcosc@apple.com",
      "hash": "73c1e36647e4ce1c512d24ebf50c9c4cf2a29fbd",
      "subject": "Digital Credentials: Add WebKitTestRunner support for the virtual wallet"
    },
    "317197@main": {
      "author": "Richard Robinson",
      "avatar": "https://www.gravatar.com/avatar/a0d2f862985ed0fd47887be66f5a3e4f?d=identicon\u0026s=64",
      "cl": "317197@main",
      "clUrl": "https://commits.webkit.org/317197@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319227\nrdar://181274217\n\nReviewed by Abrar Rahman Protyasha.\n\nClicking and dragging to grab the scroll bar in Safari wasn't working for three reasons:\n\n1. AppKit's internal mechanism prevented any gestures reaching WKAppKitGestureController in the\nfirst place in the case where the click's location was very close to the window edge. Fix this\nby telling AppKit if a point is located atop WebKit's custom scrollbar.\n\n2. In the case where the click's location was close or near the inner edge of the scrollbar, the\nscrollbar hit testing threshold range was too narrow. Fix this by expanding the range where applicable.\n\n3. In WKAppKitGestureController, other gestures were preventing the mouse tracking gesture when\nclicking over the scrollbar in some cases. Fix this by preventing all gestures when the click is\nabove the scrollbar (except the mouse tracking one).\n\nTest: Tools/TestWebKitAPI/Tests/WebKit/WebPage/AppKit Gesture Tests/BasicAppKitGesturesTests.swift\n\n* Source/WebCore/page/EventHandler.cpp:\n(WebCore::scrollbarForMouseEvent):\n* Source/WebCore/platform/ScrollTypes.h:\n* Source/WebCore/platform/ScrollView.cpp:\n(WebCore::ScrollView::scrollbarAtPoint):\n* Source/WebCore/platform/ScrollView.h:\n* Source/WebCore/platform/Scrollbar.cpp:\n(WebCore::Scrollbar::mouseDown):\n(WebCore::Scrollbar::expandedHitTestToleranceThreshold const):\n* Source/WebCore/platform/Scrollbar.h:\n* Source/WebCore/platform/ScrollbarTheme.h:\n(WebCore::ScrollbarTheme::hitTest):\n* Source/WebCore/platform/ScrollbarThemeComposite.cpp:\n(WebCore::ScrollbarThemeComposite::hitTest):\n* Source/WebCore/platform/ScrollbarThemeComposite.h:\n\nFix (2).\n\n* Source/WebKit/UIProcess/mac/WKAppKitGestureController.mm:\n(-[WKAppKitGestureController deferringGestureRecognizer:shouldDeferGesturesForEventThatWillBeginAction:]):\n(-[WKAppKitGestureController _isPointOverScrollbar:]):\n(-[WKAppKitGestureController gestureRecognizerShouldBegin:]):\n\nFix (3).\n\n* Tools/TestWebKitAPI/Tests/WebKit/WebPage/AppKit Gesture Tests/BasicAppKitGesturesTests.swift:\n(AppKitGesturesTests.scrollingOnScrollBarChangesScrollPosition(_:pressAndWait:)):\n\nA test, with parameterized combinations for all the potential failure cases that were a result\nof any of the three failing issues.\n\nCanonical link: https://commits.webkit.org/317197@main",
      "email": "richard_robinson2@apple.com",
      "hash": "8b21bb68c6fbc325572bb23189e9948b14dd740d",
      "subject": "[AppKit Gestures] Unable to grab scroll bar in Safari"
    },
    "317198@main": {
      "author": "Mike Wyrzykowski",
      "avatar": "https://www.gravatar.com/avatar/4b1bc9e238714f95e22d5d2454c07066?d=identicon\u0026s=64",
      "cl": "317198@main",
      "clUrl": "https://commits.webkit.org/317198@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319392\nrdar://182222544\n\nReviewed by Ruthvik Konda.\n\nPass along missing step-rate and step function.\n\n* Source/WebKit/GPUProcess/graphics/Model/ModelBridge.swift:\n(webLayoutsFromLayouts(_:)):\n* Source/WebKit/GPUProcess/graphics/Model/ModelTypes.h:\n* Source/WebKit/GPUProcess/graphics/Model/ModelUtils.swift:\n(LowLevelMeshResource.fromLlmDescriptor(_:)):\n* Source/WebKit/GPUProcess/graphics/Model/WebKitMesh.mm:\n(WebModel::toMetal):\n* Source/WebKit/Shared/Model.serialization.in:\n* Source/WebKit/WebProcess/Model/ModelInlineConverters.h:\n(WebKit::toStepFunction):\n(WebKit::convert):\n\nCanonical link: https://commits.webkit.org/317198@main",
      "email": "mwyrzykowski@apple.com",
      "hash": "dc654cc764a152af178c0d685087afc3f26d8c76",
      "subject": "Adopt USDKit change to avoid large memory allocations"
    },
    "317199@main": {
      "author": "Taher Ali",
      "avatar": "https://www.gravatar.com/avatar/e104800647d8c98b8c9dbe736b5e1751?d=identicon\u0026s=64",
      "cl": "317199@main",
      "clUrl": "https://commits.webkit.org/317199@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=318229\nrdar://181031373\n\nReviewed by Simon Fraser.\n\nSVG paint servers referenced via data: or external URLs need to resolve a\ngradient/pattern that lives in a different document. Unlike the frameless\ndocument from CachedSVGDocument (used by \u003cuse\u003e and filters, which only read\nattributes), such a resource must be laid out before it can be referenced.\n\nIntroduce IsolatedSVGDocumentContext, a thin wrapper over the SVGImage infrastructure.\nThe referenced SVG is fetched as a CachedImage and built into an SVGImage, which\nalready owns an isolated Page laid out.\n\nNotes and follow-ups:\n\n- Style::loadPendingResources fetches a non-local fill/stroke url() through the\nloader layer, so external and data: references are handled uniformly and\nCSP-checked. Going through the loader also means these documents are treated\nas subresources and participate in the window.onload event.\n\n- An IsolatedSVGDocumentContext's lifetime is currently scoped to the host document.\nFollow-up: move ownership onto the style value (as Style::FilterReference\ndoes) so an unreferenced document is evicted once no element paints with it.\n\n- The API surface is intentionally minimal, enough to serve paint servers in a\nstatic form. Animated (SMIL) paint servers render a single frame: the isolated\ntimeline runs, but there is no cross-document invalidation to repaint the\nhost. Extending to animation/mutation is a follow-up.\n\n* LayoutTests/svg/paint-servers/external-paint-server-css-expected.html: Added.\n* LayoutTests/svg/paint-servers/external-paint-server-css.html: Added.\n* LayoutTests/svg/paint-servers/external-paint-server-gradient-expected.html: Added.\n* LayoutTests/svg/paint-servers/external-paint-server-gradient.html: Added.\n* LayoutTests/svg/paint-servers/external-paint-server-pattern-expected.html: Added.\n* LayoutTests/svg/paint-servers/external-paint-server-pattern.html: Added.\n* LayoutTests/svg/paint-servers/resources/paint-servers.svg: Added.\n\n* Source/WTF/Scripts/GeneratePreferences.rb:\n* Source/WTF/Scripts/Preferences/UnifiedWebPreferences.yaml:\n* Source/WebCore/Scripts/GenerateSettings.rb:\n\nTreat \"SVG\" as an acronym so the generated accessor is svg...(), not sVG...().\n\n* Source/WebCore/Sources.txt:\n* Source/WebCore/WebCore.xcodeproj/project.pbxproj:\n* Source/WebCore/rendering/svg/legacy/SVGResources.cpp:\n(WebCore::paintingResourceFromTreeScopeAndId):\n(WebCore::paintingResourceFromSVGPaint):\n* Source/WebCore/style/StylePendingResources.cpp:\n(WebCore::Style::loadPendingExternalSVGPaint):\n(WebCore::Style::loadPendingResources):\n* Source/WebCore/svg/IsolatedSVGDocumentContext.cpp: Added.\n(WebCore::IsolatedSVGDocumentContext::create):\n(WebCore::IsolatedSVGDocumentContext::IsolatedSVGDocumentContext):\n(WebCore::IsolatedSVGDocumentContext::~IsolatedSVGDocumentContext):\n(WebCore::IsolatedSVGDocumentContext::document const):\n(WebCore::IsolatedSVGDocumentContext::imageChanged):\n* Source/WebCore/svg/IsolatedSVGDocumentContext.h: Added.\n* Source/WebCore/svg/SVGDocumentExtensions.cpp:\n(WebCore::SVGDocumentExtensions::hasExternalSVGPaintResource const):\n(WebCore::SVGDocumentExtensions::addExternalSVGPaintResource):\n(WebCore::SVGDocumentExtensions::isolatedSVGPaintDocument const):\n* Source/WebCore/svg/SVGDocumentExtensions.h:\n\nCanonical link: https://commits.webkit.org/317199@main",
      "email": "taher_ali@apple.com",
      "hash": "c2ced939fa425c189b0427f0acb5061b2627efac",
      "subject": "Introduce IsolatedSVGDocumentContext"
    },
    "317200@main": {
      "author": "Jessica Cheung",
      "avatar": "https://www.gravatar.com/avatar/5c102f093ce6bc01424466a4cfdf1d1f?d=identicon\u0026s=64",
      "cl": "317200@main",
      "clUrl": "https://commits.webkit.org/317200@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=297473\nrdar://158431078\n\nReviewed by Wenson Hsieh, Abrar Rahman Protyasha, Aditya Keerthi, and Richard Robinson.\n\nAdd support for the overlays-content value for interactive-widgets.\nTo do so, the virtual keyboard should not contribute to the visual\nviewport calculations and simply overlay the page. So, create a new\nhelper `_inputViewBoundsForViewportCalculations` that returns CGRectZero\nif the value is overlays-content and `_inputViewBoundsInWindow` otherwise.\nThe value of `_computeUnobscuredContentRectRespectingInputViewBounds` is\nnow in respect to `_inputViewBoundsForViewportCalculations`.\n\nAdditionally when the virtual keyboard is up, it is possible that the page\nis adjusted via scrolling + clamping (`_adjustForAutomaticKeyboardInfo`). If\noverlays-content, the keyboard should not contribute to scrollable extent which\nwill change the visual viewport, so gate this based on the interactive-widget\nvalue.\n\nAdd layout tests that ensure the visual viewport does not change and test that\nthey fail without overlays-content mode.\n\nAlternatives tried and considered before include directly altering `_inputViewBoundsInWindow`.\nWhile it worked and prevented the visual viewport from resizing, it broke context menus and\nother calculations that relied on `_inputViewBoundsInWindow`. In those cases, WebKit still\nneeds to know the size of and factor in the virtual keyboard being up.\n\n* LayoutTests/fast/visual-viewport/ios/interactive-widget-overlays-content-keyboard-scroll-expected.txt: Added.\n* LayoutTests/fast/visual-viewport/ios/interactive-widget-overlays-content-keyboard-scroll.html: Added.\n* LayoutTests/fast/visual-viewport/ios/interactive-widget-overlays-content-obscured-insets-expected.txt: Added.\n* LayoutTests/fast/visual-viewport/ios/interactive-widget-overlays-content-obscured-insets.html: Added.\n* LayoutTests/fast/visual-viewport/ios/interactive-widget-overlays-content-zoom-disabled-expected.txt: Added.\n* LayoutTests/fast/visual-viewport/ios/interactive-widget-overlays-content-zoom-disabled.html: Added.\n* LayoutTests/fast/visual-viewport/ios/interactive-widget-overlays-content-zoom-enabled-expected.txt: Added.\n* LayoutTests/fast/visual-viewport/ios/interactive-widget-overlays-content-zoom-enabled.html: Added.\n* Source/WebKit/UIProcess/API/ios/WKWebViewIOS.mm:\n(-[WKWebView _inputViewBoundsForViewportCalculations]):\n(-[WKWebView _createVisibleContentRectUpdate]):\n(-[WKWebView _keyboardChangedWithInfo:adjustScrollView:]):\n\nCanonical link: https://commits.webkit.org/317200@main",
      "email": "jcheung23@apple.com",
      "hash": "80c3a241b03b8d60167b12567351a2c9a8cd75b7",
      "subject": "[interactive-widget] Implement logic to support overlays-content"
    },
    "317201@main": {
      "author": "Phinehas Fuachie",
      "avatar": "https://www.gravatar.com/avatar/900d85de8c325e38975f39115c36bb75?d=identicon\u0026s=64",
      "cl": "317201@main",
      "clUrl": "https://commits.webkit.org/317201@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319291\nrdar://181186791\n\nReviewed by Jer Noble.\n\nThe media controls stop propagation of touchstart/touchmove/touchend so that scrubbing the timeline\nisn't misinterpreted as a page gesture. Those listeners were attached to the full-surface\n.media-controls element, which swallowed all touch events over the entire video area — including\nswipes over the bare video body. This broke sites like pr0gramm.com that install their own\ntouch/swipe handlers on an ancestor of the \u003cvideo\u003e to navigate between posts.\n\nOnly stop propagation when the touch actually lands on an interactive control (a descendant of the\ncontrols element) rather than on the bare video surface. A touch on the video body targets\n.media-controls itself (its faded children have pointer-events: none), so it now propagates to\nthe page; a touch that scrubs the timeline or hits a button targets a descendant and is still\nswallowed.\n\n* LayoutTests/media/modern-media-controls/ios-inline-media-controls/touch/ios-inline-media-controls-timeline-scrub-stops-propagation-expected.txt:\n* LayoutTests/media/modern-media-controls/ios-inline-media-controls/touch/ios-inline-media-controls-timeline-scrub-stops-propagation.html:\n* Source/WebCore/Modules/modern-media-controls/media/media-controller.js:\n(MediaController.prototype._stopPropagationOnTouchEvents):\n\nCanonical link: https://commits.webkit.org/317201@main",
      "email": "pfuachie2@apple.com",
      "hash": "6de5dd7b71a8e2e554a795b25f01ff411d5a6a8b",
      "subject": "Can't swipe between videos on pr0gramm.com while a video is playing"
    },
    "317202@main": {
      "author": "Taher Ali",
      "avatar": "https://www.gravatar.com/avatar/e104800647d8c98b8c9dbe736b5e1751?d=identicon\u0026s=64",
      "cl": "317202@main",
      "clUrl": "https://commits.webkit.org/317202@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=318997\nrdar://181848321\n\nReviewed by Simon Fraser.\n\nThe per-iteration loop recomputed strokeWidth() and the cap-style check,\nboth are loop-invariant. We hoist these invariants above the loop and switch to a\nrange-based for-loop.\n\nNo behavior change.\n\n* Source/WebCore/rendering/svg/legacy/LegacyRenderSVGPath.cpp:\n(WebCore::LegacyRenderSVGPath::shapeDependentStrokeContains):\n\nCanonical link: https://commits.webkit.org/317202@main",
      "email": "taher_ali@apple.com",
      "hash": "68273ed84537c3de713bae06fdfc10a55557f181",
      "subject": "Hoist loop-invariant strokeWidth out of LegacyRenderSVGPath::shapeDependentStrokeContains"
    },
    "317203@main": {
      "author": "Basuke Suzuki",
      "avatar": "https://www.gravatar.com/avatar/5192a1151c7575317affb7a4633f8d63?d=identicon\u0026s=64",
      "cl": "317203@main",
      "clUrl": "https://commits.webkit.org/317203@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=311968\nrdar://174350133\n\nReviewed by Rupin Mittal.\n\nThe Navigation API spec settles intercept handler promises with #wait-for-all\n(WebIDL 3.2.24.1), which invokes the success/failure steps directly from the\nhandler promises' reactions. PromiseSettlementObserver instead resolved a\nwrapper DeferredPromise and had the caller react to it, which is\nnavigatesuccess was dispatched after the committed promise's reactions instead\nof before, breaking the event/promise ordering for push, replace and reload\nsame-document navigations.\n\nRefactor PromiseSettlementObserver to take success/failure callbacks and invoke\nthem directly, matching #wait-for-all. The observer's lifetime is kept by the\nRef captures in the per-promise reaction handlers (and the empty-list\nmicrotask).\n\nFor traverse navigations the committed-to entry is notified earlier, so its\ncommitted promise reactions must run before navigatesuccess. Delay only the\nnavigatesuccess dispatch (and the finished-promise resolution that follows it)\nby one microtask for traverse; the focus reset and scroll restoration in\nNavigateEvent::finish() still run promptly.\n\nThis fixes the ordering for the imported WPT navigation-api ordering-and-transition\ntests, so their baselines are updated to all-PASS, and reload-no-popstate.html is\nunskipped.\n\n* Source/WebCore/page/Navigation.cpp:\n(WebCore::PromiseSettlementObserver::create):\n(WebCore::PromiseSettlementObserver::waitForAll):\n(WebCore::PromiseSettlementObserver::PromiseSettlementObserver):\n(WebCore::PromiseSettlementObserver::resolve):\n(WebCore::PromiseSettlementObserver::reject):\n(WebCore::PromiseSettlementObserver::handleResult):\n(WebCore::PromiseSettlementObserver::waitForAllPromises): Deleted.\n(WebCore::PromiseSettlementObserver::isSettled): Deleted.\n(WebCore::PromiseSettlementObserver::consumeWrapper): Deleted.\n(WebCore::Navigation::handleSameDocumentNavigation):\n(WebCore::PromiseSettlementObserver::registerPromises):\n(WebCore::PromiseSettlementObserver::wait):\n(WebCore::PromiseSettlementObserver::isSettled const): Deleted.\n* LayoutTests/TestExpectations:\n* LayoutTests/imported/w3c/web-platform-tests/navigation-api/focus-reset/autofocus_same-checkpoint-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/navigation-api/ordering-and-transition/anchor-download-intercept_currententrychange-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/navigation-api/ordering-and-transition/anchor-download-intercept_no-currententrychange-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/navigation-api/ordering-and-transition/anchor-download-intercept-reject_currententrychange-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/navigation-api/ordering-and-transition/anchor-download-intercept-reject_no-currententrychange-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/navigation-api/ordering-and-transition/location-href-intercept_currententrychange-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/navigation-api/ordering-and-transition/location-href-intercept_no-currententrychange-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/navigation-api/ordering-and-transition/location-href-intercept-reject_currententrychange-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/navigation-api/ordering-and-transition/location-href-intercept-reject_no-currententrychange-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/navigation-api/ordering-and-transition/navigate-204-205-download-then-same-document-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/navigation-api/ordering-and-transition/navigate-in-transition-finished_currententrychange-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/navigation-api/ordering-and-transition/navigate-in-transition-finished_no-currententrychange-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/navigation-api/ordering-and-transition/navigate-intercept_currententrychange-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/navigation-api/ordering-and-transition/navigate-intercept_no-currententrychange-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/navigation-api/ordering-and-transition/navigate-same-document_currententrychange-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/navigation-api/ordering-and-transition/navigate-same-document_no-currententrychange-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/navigation-api/ordering-and-transition/navigate-same-document-intercept-reject_currententrychange-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/navigation-api/ordering-and-transition/navigate-same-document-intercept-reject_no-currententrychange-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/navigation-api/ordering-and-transition/reload-intercept_currententrychange-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/navigation-api/ordering-and-transition/reload-intercept_no-currententrychange-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/navigation-api/ordering-and-transition/reload-intercept-reject_currententrychange-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/navigation-api/ordering-and-transition/reload-intercept-reject_no-currententrychange-expected.txt:\n\nCanonical link: https://commits.webkit.org/317203@main",
      "email": "basuke@apple.com",
      "hash": "38c5d28581eaffca013a946062c56e0bf8f5f5f1",
      "subject": "[Navigation API] Fix wait-for-all implementation to not use wrapper promise"
    },
    "317204@main": {
      "author": "Richard Robinson",
      "avatar": "https://www.gravatar.com/avatar/a0d2f862985ed0fd47887be66f5a3e4f?d=identicon\u0026s=64",
      "cl": "317204@main",
      "clUrl": "https://commits.webkit.org/317204@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319436\nrdar://182252243\n\nReviewed by Abrar Rahman Protyasha.\n\n* Source/WebKit/UIProcess/mac/WKAppKitGestureController.mm:\n(-[WKAppKitGestureController gestureRecognizer:shouldRecognizeSimultaneouslyWithGestureRecognizer:]):\n\nCanonical link: https://commits.webkit.org/317204@main",
      "email": "richard_robinson2@apple.com",
      "hash": "a9f23dfefd4558a94088288eac0a31a8a7a43801",
      "subject": "[AppKit Gestures] Update logic for handling the scrollbar"
    },
    "317205@main": {
      "author": "Adrian Perez de Castro",
      "avatar": "https://www.gravatar.com/avatar/30ffea8cf404586741a8f5f7110c0914?d=identicon\u0026s=64",
      "cl": "317205@main",
      "clUrl": "https://commits.webkit.org/317205@main",
      "description": "Unreviewed gardening.\n\n* LayoutTests/platform/glib/TestExpectations: Mark tests that are\npassing consistently since 316722@main and 317045@main accordingly.\n\nCanonical link: https://commits.webkit.org/317205@main",
      "email": "aperez@igalia.com",
      "hash": "7af8d32993fe1de8d1bc92fe8619edc307e21f39",
      "subject": "[GLib] Add test expectations for passing corner-shape tests"
    },
    "317206@main": {
      "author": "Hysu Xiong",
      "avatar": "https://www.gravatar.com/avatar/ecfded559f81d5d495c592f3f76939d2?d=identicon\u0026s=64",
      "cl": "317206@main",
      "clUrl": "https://commits.webkit.org/317206@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319441\nrdar://problem/182254455\n\nReviewed by Dewei Zhu.\n\nThe flag disabled for non-stable Chrome channels should be ThrottleRepeatedNoDamageFrames, not ThrottleConsecutiveNoDamageMainFrames. Follow-up to 316751@main.\n\n* Tools/Scripts/webkitpy/benchmark_runner/browser_driver/osx_chrome_driver.py:\n(OSXChromeCanaryDriver.launch_args_with_url):\n(OSXChromeBetaDriver.launch_args_with_url):\n(OSXChromeDevDriver.launch_args_with_url):\n(OSXChromeForTestingDriver.launch_args_with_url):\n\nCanonical link: https://commits.webkit.org/317206@main",
      "email": "hysu@apple.com",
      "hash": "42be825315e2f127a763859c60e772b52b05d25b",
      "subject": "Use the correct feature name when disabling Chrome frame throttling in the benchmark runner"
    },
    "317207@main": {
      "author": "Lily Spiniolas",
      "avatar": "https://www.gravatar.com/avatar/b65cfeb51301399bd50e338bb2d7613e?d=identicon\u0026s=64",
      "cl": "317207@main",
      "clUrl": "https://commits.webkit.org/317207@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=318641\nrdar://174548304\n\nReviewed by Abrar Rahman Protyasha and Richard Robinson.\n\nUpdate WebKit's scroll stretch behavior to more closely resemble NSScrollView.\nIn the normal scroll-stretch path, there should be no observable change for\nuser-driven scrolling. In scroll-stretch path when a refresh control is present,\nthe scroll deltas are no longer dampened whatsoever until the stretch surpasses\nthe full activation height of the refresh control.\n\nFor automation-driven scrolling, the hyperbolic coefficient used during rubberband\nanimations is altered in order to align with AppKit.\n\nTest: Tools/TestWebKitAPI/Tests/WebKit/WebPage/AppKit Gesture Tests/BasicAppKitGesturesTests.swift\n\n* Source/WebCore/PAL/pal/spi/mac/NSScrollViewSPI.h:\n* Source/WebCore/page/scrolling/ScrollingTree.cpp:\n(WebCore::ScrollingTree::rubberbandHyperbolicCoefficientForTesting):\n* Source/WebCore/page/scrolling/ScrollingTree.h:\n* Source/WebCore/page/scrolling/ScrollingTreeScrollingNode.cpp:\n(WebCore::ScrollingTreeScrollingNode::rubberbandHyperbolicCoefficientForTesting const):\n* Source/WebCore/page/scrolling/ScrollingTreeScrollingNode.h:\n* Source/WebCore/page/scrolling/ScrollingTreeScrollingNodeDelegate.h:\n(WebCore::ScrollingTreeScrollingNodeDelegate::rubberbandHyperbolicCoefficientForTesting const):\n* Source/WebCore/page/scrolling/ThreadedScrollingTreeScrollingNodeDelegate.h:\n* Source/WebCore/platform/PlatformWheelEvent.h:\n(WebCore::PlatformWheelEvent::inputSource const):\n(WebCore::PlatformWheelEvent::setInputSource):\n* Source/WebCore/platform/ScrollingEffectsController.h:\n(WebCore::ScrollingEffectsController::rubberbandHyperbolicCoefficientForTesting const):\n* Source/WebCore/platform/mac/ScrollingEffectsController.mm:\n(WebCore::hyperbolicReboundDeltaForElasticDelta):\n(WebCore::ScrollingEffectsController::handleWheelEvent):\n(WebCore::ScrollingEffectsController::deltaAdjustedForRefreshController):\n(WebCore::ScrollingEffectsController::computeDampedStretchDelta):\n(WebCore::ScrollingEffectsController::applyScrollDeltaWithStretching):\n* Source/WebKit/Shared/WebEventConversion.cpp:\n(WebKit::WebKit2PlatformWheelEvent::WebKit2PlatformWheelEvent):\n* Source/WebKit/UIProcess/API/Cocoa/WKWebViewPrivateForTesting.h:\n* Source/WebKit/UIProcess/API/Cocoa/WKWebViewTesting.mm:\n(-[WKWebView _rubberbandHyperbolicCoefficientForTesting]):\n* Source/WebKit/UIProcess/RemoteLayerTree/RemoteScrollingCoordinatorProxy.cpp:\n(WebKit::RemoteScrollingCoordinatorProxy::rubberbandHyperbolicCoefficientForTesting const):\n* Source/WebKit/UIProcess/RemoteLayerTree/RemoteScrollingCoordinatorProxy.h:\n* Tools/TestWebKitAPI/Helpers/cocoa/WebPage+Extras.swift:\n(rubberbandHyperbolicCoefficient):\n(scrollWheel(at:delta:)):\n* Tools/TestWebKitAPI/Tests/WebKit/WebPage/AppKit Gesture Tests/BasicAppKitGesturesTests.swift:\n(AppKitGesturesTests.scrollInputSourceUpdatesrubberbandHyperbolicCoefficient):\n\nCanonical link: https://commits.webkit.org/317207@main",
      "email": "lily_spiniolas@apple.com",
      "hash": "ce76e2b79384d3b751287f8c8da007d3c7fd9fc4",
      "subject": "[macOS] Scroll stretch behavior should more closely match NSScrollView"
    },
    "317208@main": {
      "author": "Sosuke Suzuki",
      "avatar": "https://www.gravatar.com/avatar/e63b87350fe19bdd9a30c7234eda45af?d=identicon\u0026s=64",
      "cl": "317208@main",
      "clUrl": "https://commits.webkit.org/317208@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=317624\n\nReviewed by Yusuke Suzuki.\n\ncomputeAdjustDateTimeStyleFormat and computeGetDateTimeFormat call\nudatpg_open directly every time a Temporal-specific UDateFormat is\ncreated. udatpg_open loads the full set of CLDR patterns for the\nlocale and is one of the most expensive ICU calls.\n\ninitializeDateTimeFormat already uses vm.intlCache().getBestDateTimePattern\nfor the same purpose, which keeps a per-VM single-slot\nUDateTimePatternGenerator cache. This patch makes the Temporal path\nuse the same helper.\n\nBecause IntlCache is a single-slot cache keyed by locale string, the\nkey built here must match the one used in initializeDateTimeFormat to\nget a hit. m_calendar / m_numberingSystem are mutable and may be\nfilled in lazily by resolvedOptions() (since 312029@main), so\nrebuilding the locale string at format time can produce a different\nkey and cause the cache to thrash. To avoid this, store the\ndataLocaleWithExtensions CString computed in initializeDateTimeFormat\nand reuse it as-is.\n\n                                                   Baseline                  Patched\n\nintl-datetimeformat-format-temporal-style\n                                              102.6755+-1.6859     ^     34.4036+-0.4870        ^ definitely 2.9844x faster\nintl-datetimeformat-format-temporal-plain-date\n                                               92.4857+-1.0609     ^     24.7306+-0.3581        ^ definitely 3.7397x faster\nintl-datetimeformat-format-temporal-instant\n                                               95.9066+-0.9344     ^     28.4459+-0.3793        ^ definitely 3.3715x faster\nintl-datetimeformat-format-temporal-plain-date-time\n                                               96.6132+-1.8707     ^     29.0148+-0.1834        ^ definitely 3.3298x faster\nintl-datetimeformat-format-temporal-plain-time\n                                               92.9727+-0.5586     ^     24.8714+-0.2904        ^ definitely 3.7381x faster\n\nTests: JSTests/microbenchmarks/intl-datetimeformat-format-temporal-instant.js\n       JSTests/microbenchmarks/intl-datetimeformat-format-temporal-plain-date-time.js\n       JSTests/microbenchmarks/intl-datetimeformat-format-temporal-plain-date.js\n       JSTests/microbenchmarks/intl-datetimeformat-format-temporal-plain-time.js\n       JSTests/microbenchmarks/intl-datetimeformat-format-temporal-style.js\n\n* JSTests/microbenchmarks/intl-datetimeformat-format-temporal-instant.js: Added.\n* JSTests/microbenchmarks/intl-datetimeformat-format-temporal-plain-date-time.js: Added.\n* JSTests/microbenchmarks/intl-datetimeformat-format-temporal-plain-date.js: Added.\n* JSTests/microbenchmarks/intl-datetimeformat-format-temporal-plain-time.js: Added.\n* JSTests/microbenchmarks/intl-datetimeformat-format-temporal-style.js: Added.\n* Source/JavaScriptCore/runtime/IntlDateTimeFormat.cpp:\n(JSC::IntlDateTimeFormat::initializeDateTimeFormat):\n(JSC::IntlDateTimeFormat::getTemporalFormatter const):\n(JSC::IntlDateTimeFormat::computeTemporalFormatter const):\n(JSC::IntlDateTimeFormat::computeAdjustDateTimeStyleFormat const):\n(JSC::IntlDateTimeFormat::computeGetDateTimeFormat const):\n* Source/JavaScriptCore/runtime/IntlDateTimeFormat.h:\n\nCanonical link: https://commits.webkit.org/317208@main",
      "email": "sosuke@bun.sh",
      "hash": "cde1f2154e51f70ec57fdbda493f10af88a7e291",
      "subject": "[JSC] Use `IntlCache` for Temporal pattern generation in `Intl.DateTimeFormat`"
    },
    "317210@main": {
      "author": "Alan Baradlay",
      "avatar": "https://www.gravatar.com/avatar/788d66417db806c567552cfa1ae89f77?d=identicon\u0026s=64",
      "cl": "317210@main",
      "clUrl": "https://commits.webkit.org/317210@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319173\nrdar://182010222\n\nReviewed by Antti Koivisto.\n\nImplement the 'discard-inner' value of the CSS Text 4 'white-space-trim' property\n(https://drafts.csswg.org/css-text-4/#white-space-trim) in the modern inline layout\npath, behind the existing CSSWhiteSpaceTrimEnabled setting. This builds on the\n'discard-before' / 'discard-after' support.\n\n'discard-inner' removes the collapsible white space at the start and end of the\nelement's own content -- i.e. immediately inside its edges. It maps onto the same\nsingle forward pass over the inline items that already implements discard-before /\ndiscard-after: a discard-inner inline box start arms the \"discard the following\ncollapsible white space\" state (like discard-after does at an end edge), and a\ndiscard-inner inline box end discards the collapsible white space accumulated since\nthe last piece of real content (like discard-before does at a start edge). Inline\nbox boundaries remain transparent, so the trimming reaches across nested empty\nboxes. As with the other values, only collapsible white space is affected:\npreserved white space and non-collapsible characters (e.g. the ideographic space\nU+3000) are left untouched.\n\nThis covers discard-inner on inline boxes. The block-level facet of the spec --\ntrimming the collapsible white space at the start and end of each line of a block\ncontainer -- is a line-layout-time concern and is left as a follow-up.\n\n* LayoutTests/TestExpectations: The imported white-space-trim-discard-inner-001.xht\nnow passes; remove its ImageOnlyFailure expectation.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-text/white-space/white-space-trim-discard-inner.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-text/white-space/white-space-trim-discard-inner-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-text/white-space/reference/white-space-trim-discard-inner-ref.html: Added.\n* Source/WebCore/layout/formattingContexts/inline/InlineItemsBuilder.cpp:\n(WebCore::Layout::InlineItemsBuilder::adjustInlineItemsForWhiteSpaceTrim): Discard the\ncollapsible white space at the start and end of a discard-inner box's content, reusing\nthe discard-after / discard-before mechanisms at the box's start / end edges.\n\nCanonical link: https://commits.webkit.org/317210@main",
      "email": "zalan@apple.com",
      "hash": "08cf556acd493da21586d7b8e81c7bf7671eb7de",
      "subject": "[CSS] Support the white-space-trim: discard-inner value"
    },
    "317211@main": {
      "author": "Alan Baradlay",
      "avatar": "https://www.gravatar.com/avatar/788d66417db806c567552cfa1ae89f77?d=identicon\u0026s=64",
      "cl": "317211@main",
      "clUrl": "https://commits.webkit.org/317211@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319211\n\u003crdar://problem/182066124\u003e\n\nReviewed by Antti Koivisto.\n\nPer css-lists-3 §3.3, when `content` on a ::marker is not `normal` the marker box\ncontents are generated from the `content` property \"exactly as for ::before\" — an\nanonymous sequence of strings, images, counters and quotes — taking precedence\nover both list-style-image and list-style-type. WebCore already parsed `content`\non ::marker (it is in the marker property allowlist) but ignored it at layout and\npaint time, always rendering the list-style marker instead.\n\nRenderListMarker stays a childless RenderBox for the common bullet/number case.\nWhen the computed ::marker style carries content data, RenderTreeBuilder::List\ngives the marker a single anonymous inline-block RenderBlockFlow child that holds\nthe generated content, built by reusing\n\nRenderTreeUpdater::GeneratedContent::createContentRenderers — the same machinery\n::before/::after use. The marker lays that box out at its max-content width,\noffsets it so its first-line baseline lands on the marker's primary-font baseline\n(so the content sits on the list item's baseline, like a text marker), paints it\nas an atomic inline across all phases, and records its visual/layout overflow.\n\nBecause `content` supersedes list-style, a content marker is never treated as an\nimage (isImage) or a bullet (widthUsesMetricsOfPrimaryFont), and its inline\nmargins follow the text path. `content: none` on ::marker suppresses the marker\nbox entirely. The marker is a text-decoration boundary, so a list's\ntext-decoration no longer propagates into generated marker content. `quotes` is\nadded to the ::marker property allowlist so open-quote/close-quote resolve against\nper-marker quotes (without this, enabling `content` regresses marker-quotes.html).\n\nThe feature is gated behind the CSSMarkerContent preference (status: preview):\nenabled in preview builds and layout tests, off by default in shipping. When\ndisabled, `content` on ::marker is ignored, exactly as before.\n\nStill-failing related tests:\nPre-existing bugs:\n\n  — the inside marker's max-content width is not propagated into the float's intrinsic width, so the item wraps.\n  Pre-existing inside-marker-in-float behavior, not content.\n  so it gets no marker and does not count in the list ordinal. Pre-existing, unrelated to content generation.\nNeeds work:\n\n* Source/WTF/Scripts/Preferences/UnifiedWebPreferences.yaml: Add the CSSMarkerContent\n  preference (status: preview) gating the feature.\n* Source/WebCore/rendering/RenderBlockFlow.h: Make firstLineBaseline() and lastLineBaseline() public so RenderListMarker can query its content container's baseline.\n* Source/WebCore/rendering/RenderListItem.cpp:\n(WebCore::RenderListItem::computeMarkerStyle): Reset textDecorationLineInEffect,\n(WebCore::RenderListItem::computeMarkerStyle const):\n  text-align and text-align-last so the originating element's text-decoration and\n  text-align do not propagate into generated marker content (the marker is a\n  boundary for both).\n* Source/WebCore/rendering/RenderListMarker.h:\n* Source/WebCore/rendering/RenderListMarker.cpp:\n(WebCore::RenderListMarker::isImage const): False when the marker has generated\n  content.\n(WebCore::RenderListMarker::hasContent const): Added; gated on the CSSMarkerContent\n  setting.\n(WebCore::RenderListMarker::contentContainer const): Added.\n(WebCore::RenderListMarker::paint): Paint the generated-content subtree as an\n  atomic inline; let Selection/EventRegion/TextClip phases through.\n(WebCore::RenderListMarker::layout): Lay out the content container when present.\n(WebCore::RenderListMarker::layoutContentContainer): Added; shrink-to-fit the\n  content, align its baseline, and record overflow.\n(WebCore::RenderListMarker::updateContent): Content supersedes list-style.\n(WebCore::RenderListMarker::computeIntrinsicLogicalWidthContributions): Derive the\n  marker's widths from the content container.\n(WebCore::RenderListMarker::updateInlineMargins): Treat content markers like text\n  markers for outside margins.\n(WebCore::RenderListMarker::widthUsesMetricsOfPrimaryFont const): False for content\n  markers.\n* Source/WebCore/rendering/updating/RenderTreeBuilderList.h:\n* Source/WebCore/rendering/updating/RenderTreeBuilderList.cpp:\n(WebCore::RenderTreeBuilder::List::updateItemMarker): Generate the marker when\n  `content` requires it (gated on CSSMarkerContent) and suppress it on\n  `content: none`; tear the content subtree down before restyling, then rebuild it\n  (or restyle image/quote content) as the marker's content changes.\n(WebCore::RenderTreeBuilder::List::buildMarkerContentRenderers): Added; builds the\n  anonymous inline-block content subtree.\n* Source/WebCore/style/PropertyAllowlist.cpp:\n(WebCore::isValidMarkerStyleProperty): Allow the `quotes` property on ::marker.\n(WebCore::Style::isValidMarkerStyleProperty):\n* Source/WebCore/style/computed/StyleComputedStyle.cpp:\n(WebCore::Style::ComputedStyle::createStyleInheritingFromPseudoStyle): Allow the\n  Marker pseudo type (generated image/quote content inherits from the marker\n  style).\n* LayoutTests/TestExpectations: Unmark the now-passing marker-content tests,\n  marker-quotes.html, marker-word-spacing.html and list-style-type-decimal-line-height.html;\n  add marker-font-variant-numeric-default/normal.html; keep the still-failing ones listed above.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-pseudo/marker-computed-size-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-pseudo/marker-intrinsic-contribution-001-expected.txt:\n  Rebaseline: the custom-string/image ::marker width and inside-content-marker\n  intrinsic-contribution subtests now pass.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-pseudo/marker-content-002.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-pseudo/marker-content-003.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-pseudo/marker-content-003b.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-pseudo/marker-content-006.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-pseudo/marker-content-008.tentative.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-pseudo/marker-content-015.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-pseudo/marker-content-016.html:\n  Add a `fuzzy` annotation for sub-pixel antialiasing between inline-box generated\n  content and the single-string reference.\n* LayoutTests/imported/w3c/web-platform-tests/accname/name/comp_name_from_pseudo_content_marker.tentative-expected.txt:\n\nCanonical link: https://commits.webkit.org/317211@main",
      "email": "zalan@apple.com",
      "hash": "88ab2ffaecd34c20e45e33a26b2a62c2e2f75ece",
      "subject": "[CSS] Support the content property on the ::marker pseudo-element"
    },
    "317212@main": {
      "author": "Alan Baradlay",
      "avatar": "https://www.gravatar.com/avatar/788d66417db806c567552cfa1ae89f77?d=identicon\u0026s=64",
      "cl": "317212@main",
      "clUrl": "https://commits.webkit.org/317212@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319108\nrdar://problem/181926245\n\nReviewed by Antti Koivisto.\n\n    \u003cdiv style=\"width: 500px\"\u003e\n        \u003cdiv style=\"justify-self: center\"\u003ehi\u003c/div\u003e\n    \u003c/div\u003e\n\nThe inner block should shrink to its contents and be centered in the 500px\ncontainer. Instead justify-self was ignored: the block stretched to fill the\ncontainer and stayed at the inline-start edge.\n\njustify-self and justify-items were only honored for grid and flex items, so a\nblock-level box always kept its normal auto-width stretch behavior and never\nmoved from the start.\n\nSize a block-level box whose justify-self is not normal or stretch as\nfit-content, skip the CSS2.1 over-constrained margin fill so its used margins\nkeep their specified values, and apply the resolved alignment as a separate\ninline offset when placing the child, which also supersedes the legacy\n-webkit-* text-align values.\n\n(See https://drafts.csswg.org/css-align-3/#justify-block)\n\n* LayoutTests/TestExpectations:\n* LayoutTests/fast/css/justify-items-legacy-not-modern-alignment-expected.txt: Added.\n* LayoutTests/fast/css/justify-items-legacy-not-modern-alignment.html: Added.\n* LayoutTests/fast/repaint/justify-items-legacy-change-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-align/blocks/justify-self-block-in-inline-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-align/blocks/justify-self-htb-ltr-htb-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-align/blocks/justify-self-htb-ltr-vlr-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-align/blocks/justify-self-htb-ltr-vrl-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-align/blocks/justify-self-htb-rtl-htb-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-align/blocks/justify-self-htb-rtl-vlr-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-align/blocks/justify-self-htb-rtl-vrl-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-align/blocks/justify-self-text-align-2-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-align/blocks/justify-self-vlr-ltr-htb-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-align/blocks/justify-self-vlr-ltr-vlr-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-align/blocks/justify-self-vlr-ltr-vrl-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-align/blocks/justify-self-vlr-rtl-htb-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-align/blocks/justify-self-vlr-rtl-vlr-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-align/blocks/justify-self-vlr-rtl-vrl-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-align/blocks/justify-self-vrl-ltr-htb-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-align/blocks/justify-self-vrl-ltr-vlr-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-align/blocks/justify-self-vrl-ltr-vrl-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-align/blocks/justify-self-vrl-rtl-htb-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-align/blocks/justify-self-vrl-rtl-vlr-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-align/blocks/justify-self-vrl-rtl-vrl-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-align/blocks/safe-justify-self-htb-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-align/blocks/safe-justify-self-vlr-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-align/blocks/safe-justify-self-vrl-expected.txt:\n* Source/WebCore/rendering/RenderBlockFlow.cpp:\n(WebCore::RenderBlockFlow::determineLogicalLeftPositionForChild):\n* Source/WebCore/rendering/RenderBox.cpp:\n(WebCore::RenderBox::computeLogicalWidth const):\n(WebCore::RenderBox::sizesLogicalWidthToFitContent const):\n(WebCore::RenderBox::computeInlineDirectionMargins const):\n* Source/WebCore/rendering/style/StyleSelfAlignmentData.h:\n(WebCore::StyleSelfAlignmentData::isNormalStretchOrLegacy const):\n\nCanonical link: https://commits.webkit.org/317212@main",
      "email": "zalan@apple.com",
      "hash": "a26dd722fd134bfcafda90f1166e30142163c652",
      "subject": "[css-align] Support justify-self for block-level boxes"
    },
    "317213@main": {
      "author": "Alex Christensen",
      "avatar": "https://www.gravatar.com/avatar/b087c5dfcb1233e80cad9105fd5a1ac6?d=identicon\u0026s=64",
      "cl": "317213@main",
      "clUrl": "https://commits.webkit.org/317213@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319331\n\nReviewed by Richard Robinson.\n\nThis responds to API review feedback.  \"Serialized\" is an odd implementation detail,\nand this object does not conform to NSCoding.  \"Snapshot\" is more clear,\nand not limited to the same script execution context.  I therefore also rename the\nworld configuration and JavaScript entry points.\n\nTests: Tools/TestWebKitAPI/Tests/WebKit/WKWebView/SerializedNode.mm\n       Tools/TestWebKitAPI/Tests/WebKit/WKWebView/UserContentController.mm\n\n* Source/WebCore/CMakeLists.txt:\n* Source/WebCore/DerivedSources-input.xcfilelist:\n* Source/WebCore/DerivedSources-output.xcfilelist:\n* Source/WebCore/DerivedSources.make:\n* Source/WebCore/Headers.cmake:\n* Source/WebCore/Sources.txt:\n* Source/WebCore/WebCore.xcodeproj/project.pbxproj:\n* Source/WebCore/bindings/js/DOMWrapperWorld.h:\n(WebCore::DOMWrapperWorld::setAllowNodeSnapshotCreation):\n(WebCore::DOMWrapperWorld::allowNodeSnapshotCreation const):\n(WebCore::DOMWrapperWorld::setAllowNodeSerialization): Deleted.\n(WebCore::DOMWrapperWorld::allowNodeSerialization const): Deleted.\n* Source/WebCore/bindings/js/WebCoreBuiltinNames.h:\n* Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:\n(IsPrivateHeader):\n* Source/WebCore/page/LocalDOMWindow.cpp:\n(WebCore::LocalDOMWindow::shouldHaveWebKitNamespaceForWorld):\n* Source/WebCore/page/WebKitNamespace.cpp:\n(WebCore::WebKitNamespace::createNodeSnapshot):\n(WebCore::WebKitNamespace::serializeNode): Deleted.\n* Source/WebCore/page/WebKitNamespace.h:\n* Source/WebCore/page/WebKitNamespace.idl:\n* Source/WebCore/page/WebKitNodeSnapshot.cpp: Renamed from Source/WebCore/page/WebKitSerializedNode.cpp.\n(WebCore::WebKitNodeSnapshot::WebKitNodeSnapshot):\n* Source/WebCore/page/WebKitNodeSnapshot.h: Renamed from Source/WebCore/page/WebKitSerializedNode.h.\n(WebCore::WebKitNodeSnapshot::create):\n* Source/WebCore/page/WebKitNodeSnapshot.idl: Renamed from Source/WebCore/page/WebKitSerializedNode.idl.\n* Source/WebKit/Headers.cmake:\n* Source/WebKit/PlatformIOS.cmake:\n* Source/WebKit/Shared/API/Cocoa/WebKit.h:\n* Source/WebKit/Shared/Cocoa/APIObject.mm:\n(API::Object::newObject):\n* Source/WebKit/Shared/ContentWorldData.serialization.in:\n* Source/WebKit/Shared/ContentWorldShared.h:\n* Source/WebKit/Shared/JavaScriptEvaluationResult.cpp:\n(WebKit::JavaScriptEvaluationResult::JSExtractor::jsValueToExtractedValue):\n* Source/WebKit/Shared/JavaScriptEvaluationResult.mm:\n(WebKit::JavaScriptEvaluationResult::ObjCExtractor::toValue):\n* Source/WebKit/SourcesCocoa.txt:\n* Source/WebKit/UIProcess/API/APIContentWorld.h:\n* Source/WebKit/UIProcess/API/APIContentWorldConfiguration.cpp:\n(API::ContentWorldConfiguration::optionSet const):\n(API::ContentWorldConfiguration::allowNodeSnapshotCreation const):\n(API::ContentWorldConfiguration::setAllowNodeSnapshotCreation):\n(API::ContentWorldConfiguration::allowNodeSerialization const): Deleted.\n(API::ContentWorldConfiguration::setAllowNodeSerialization): Deleted.\n* Source/WebKit/UIProcess/API/APIContentWorldConfiguration.h:\n* Source/WebKit/UIProcess/API/Cocoa/WKContentWorldConfiguration.h:\n* Source/WebKit/UIProcess/API/Cocoa/WKContentWorldConfiguration.mm:\n(-[WKContentWorldConfiguration encodeWithCoder:]):\n(-[WKContentWorldConfiguration initWithCoder:]):\n(-[WKContentWorldConfiguration isNodeSnapshotCreationEnabled]):\n(-[WKContentWorldConfiguration setNodeSnapshotCreationEnabled:]):\n(-[_WKContentWorldConfiguration allowNodeSnapshotCreation]):\n(-[_WKContentWorldConfiguration setAllowNodeSnapshotCreation:]):\n(-[WKContentWorldConfiguration isNodeSerializationEnabled]): Deleted.\n(-[WKContentWorldConfiguration setNodeSerializationEnabled:]): Deleted.\n(-[_WKContentWorldConfiguration allowNodeSerialization]): Deleted.\n(-[_WKContentWorldConfiguration setAllowNodeSerialization:]): Deleted.\n* Source/WebKit/UIProcess/API/Cocoa/WKDOMNodeSnapshot.h: Renamed from Source/WebKit/UIProcess/API/Cocoa/WKJSSerializedNode.h.\n* Source/WebKit/UIProcess/API/Cocoa/WKDOMNodeSnapshot.mm: Renamed from Source/WebKit/UIProcess/API/Cocoa/WKJSSerializedNode.mm.\n(-[WKDOMNodeSnapshot dealloc]):\n* Source/WebKit/UIProcess/API/Cocoa/WKDOMNodeSnapshotInternal.h: Renamed from Source/WebKit/UIProcess/API/Cocoa/WKJSSerializedNodeInternal.h.\n* Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm:\n(-[WKWebView _evaluateJavaScript:asAsyncFunction:withSourceURL:withArguments:forceUserGesture:inFrame:inWorld:completionHandler:]):\n* Source/WebKit/UIProcess/API/Cocoa/_WKContentWorldConfiguration.h:\n* Source/WebKit/WebKit.xcodeproj/project.pbxproj:\n* Source/WebKit/WebProcess/InjectedBundle/InjectedBundleScriptWorld.cpp:\n(WebKit::InjectedBundleScriptWorld::setAllowNodeSnapshotCreation):\n(WebKit::InjectedBundleScriptWorld::setAllowNodeSerialization): Deleted.\n* Source/WebKit/WebProcess/InjectedBundle/InjectedBundleScriptWorld.h:\n* Source/WebKit/WebProcess/UserContent/WebUserContentController.cpp:\n(WebKit::WebUserContentController::addContentWorldIfNecessary):\n* Source/WebKit/WebProcess/WebPage/WebPage.cpp:\n(WebKit::WebPage::clearContentWorld):\n* Tools/TestWebKitAPI/Tests/WebKit/WKWebView/SerializedNode.mm:\n(TestWebKitAPI::TEST(SerializedNode, Basic)):\n* Tools/TestWebKitAPI/Tests/WebKit/WKWebView/UserContentController.mm:\n(-[SerializedNodeReplyHandler userContentController:didReceiveScriptMessage:replyHandler:]):\n(TEST(WKUserContentController, MessageHandlerReplyWithSerializedNode)):\n(TEST(WKUserContentController, MessageHandlerInjectsWebKitNamespace)):\n* Tools/TestWebKitAPI/Tests/WebKit/WebPage/UserContentControllerTests.swift:\n(UserContentControllerTests.jsBufferInjectsWebKitNamespace):\n* Tools/TestWebKitAPI/Tests/WebKit/WebPage/WebPageTests.swift:\n(WebPageTests.clearContentWorld):\n\nCanonical link: https://commits.webkit.org/317213@main",
      "email": "achristensen@apple.com",
      "hash": "b804b0e920ae5fd253517bb97f9a70bff06803c0",
      "subject": "Rename WKJSSerializedNode to WKDOMNodeSnapshot"
    },
    "317214@main": {
      "author": "Yijia Huang",
      "avatar": "https://www.gravatar.com/avatar/5bc95a5f0a5fdfc107bbdec6979dae89?d=identicon\u0026s=64",
      "cl": "317214@main",
      "clUrl": "https://commits.webkit.org/317214@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319397\nrdar://182225399\n\nReviewed by Sosuke Suzuki.\n\nAdds a new runtime option --useIntlEraMonthcode (default: off) implementing\npart of Intl.Era-monthcode (Stage 4, advanced March 10, 2026).\n\nAlso introduces intlAvailableCalendarIndex() — an O(1) case-insensitive\nname-to-CalendarID lookup (mirrors intlAvailableTimeZoneIndex) — and\nrewrites isBuiltinCalendar to use it. Legacy CLDR aliases (islamicc,\nethiopic-amete-alem) are pre-populated in the index.\n\nTests: JSTests/stress/temporal-calendar-canonical-set.js\n       Source/JavaScriptCore/API/tests/TemporalCoreTest.cpp\n\nCanonical link: https://commits.webkit.org/317214@main",
      "email": "yijia_huang@apple.com",
      "hash": "6ea58a42a90953702692b60e2347b63075394968",
      "subject": "[JSC][Temporal][Intl.Era] Add useIntlEraMonthcode option and narrow AvailableCalendars"
    },
    "317215@main": {
      "author": "Ryosuke Niwa",
      "avatar": "https://www.gravatar.com/avatar/ed2c71248fe3ea15d9129f6e9a2a1e85?d=identicon\u0026s=64",
      "cl": "317215@main",
      "clUrl": "https://commits.webkit.org/317215@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319388\n\nReviewed by Chris Dumez.\n\nThe failure was caused by a built-in element (e.g. div) parsed inside an declarative\nshadow root with null registry (e.g. declared with shadowrootcustomelementregistry\ncontent attribute on template) not getting the usesNullCustomElementRegistry flag -\nonly custom elements and unknown elements did (in HTMLConstructionSite's\ncreateHTMLElementOrFindCustomElementInterface inside the \"if (!element)\" block).\nThe built-in element merely resolved to null via its tree scope.\n\nThat worked for the original (parsed before any global registry was ensured), but\nbroke on cloning: once the global registry exists, cloning the subtree runs\nElement::insertionSteps on the cloned nodes which pins the cloned element with\nthe global registry in the scoped map. Once pinned, registry.initialize(shadowRoot)\ncould no longer hand it the scoped registry - hence the failures.\n\nThis PR applies two fixes to address the failures.\n\n1. HTMLConstructionSite.cpp - set usesNullCustomElementRegistry on all elements\n   (built-in included) parsed inside a null-registry tree scope, so an element\n   behaves identically to its clones and keeps resolving to null across mutations.\n   This unifies the previously separate custom-element and fragment-parsing branches.\n2. Element::attachShadow - an imperative attachShadow() with no explicit registry\n   now always defaults to the document's registry, instead of null when the host\n   carries the null-registry flag. The host stays null; only the new shadow root uses\n   the global registry.\n\n(2) is required because (1) gives built-in elements the flag, and without it their\nattachShadow default would flip to null. As a bonus, it also fixes the pre-existing\nShadowRoot-init-declarative.html custom-element FAIL, which failed for this exact\nreason.\n\nFinally, this PR also addresses a bug that we weren't propagating the parent node's\nnull-registry-ness to a child node during non-fragment parsing by generalizing\nthe condition (no longer checks m_isParsingFragment).\n\nTest: imported/w3c/web-platform-tests/custom-elements/registries/element-mutation.html\n\n* LayoutTests/imported/w3c/web-platform-tests/custom-elements/registries/ShadowRoot-init-declarative-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/custom-elements/registries/element-mutation-expected.txt:\n* Source/WebCore/dom/Element.cpp:\n* Source/WebCore/html/parser/HTMLConstructionSite.cpp:\n(WebCore::HTMLConstructionSite::createHTMLElementOrFindCustomElementInterface):\n\nCanonical link: https://commits.webkit.org/317215@main",
      "email": "rniwa@webkit.org",
      "hash": "8b4bcb5752d08f72fca8ca9c4a44264b2faa6e4c",
      "subject": "[WPT] Various test cases in custom-elements/registries/element-mutation.html fail"
    },
    "317216@main": {
      "author": "Yulun Wu",
      "avatar": "https://www.gravatar.com/avatar/9e34d6632f4d926cdf6fe8dce07f9cb7?d=identicon\u0026s=64",
      "cl": "317216@main",
      "clUrl": "https://commits.webkit.org/317216@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=318844\nrdar://181615895\n\nReviewed by Alan Baradlay.\n\n309188@main (reverted) introduced two regressions when it broke\nlist marker parenting for multi-column and position: relative.\n\nhttps://bugs.webkit.org/show_bug.cgi?id=318928\n\nhttps://bugs.webkit.org/show_bug.cgi?id=318844\n\nThis PR adds regression tests to prevent these regressions from coming back.\n\n* LayoutTests/imported/w3c/web-platform-tests/css/css-lists/outside-marker-in-multicol-relpos-content-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-lists/outside-marker-in-multicol-relpos-content-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-lists/outside-marker-in-multicol-relpos-content.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-lists/outside-marker-with-relpos-block-content-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-lists/outside-marker-with-relpos-block-content-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-lists/outside-marker-with-relpos-block-content.html: Added.\n\nCanonical link: https://commits.webkit.org/317216@main",
      "email": "yulun_wu@apple.com",
      "hash": "dc0b697b5b7d323c573873e5bdfdc48ea753460a",
      "subject": "[list-marker] Add regression tests"
    },
    "317217@main": {
      "author": "Ahmad Saleem",
      "avatar": "https://www.gravatar.com/avatar/38445f84fe28aa19bfeb1f59f6559532?d=identicon\u0026s=64",
      "cl": "317217@main",
      "clUrl": "https://commits.webkit.org/317217@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319403\nrdar://182231038\n\nReviewed by Devin Rousso.\n\nTimelineManager.processJSON() reports every import failure through\nWI.TimelineManager.synthesizeImportError(), which prefixes the message\nwith \"Timeline Recording Import Error:\". The unsupported-version path\nmistakenly called WI.NetworkManager.synthesizeImportError() instead,\nwhich prefixes with \"HAR Import Error:\". As a result, importing a\ntimeline recording with an unsupported serialization version surfaced a\nmisleading \"HAR Import Error: unsupported version\" message.\n\nRoute the version-mismatch error through WI.TimelineManager like the\nother error paths in processJSON().\n\n* Source/WebInspectorUI/UserInterface/Controllers/TimelineManager.js:\n(WI.TimelineManager.prototype.async processJSON):\n* LayoutTests/inspector/timeline/import-errors-expected.txt: Added.\n* LayoutTests/inspector/timeline/import-errors.html: Added.\n\nCanonical link: https://commits.webkit.org/317217@main",
      "email": "ahmad.saleem792+github@gmail.com",
      "hash": "b709f9a52609ca525c10eaeda0cc0ff9c8c9f52b",
      "subject": "Web Inspector: Timeline recording import reports \"unsupported version\" as a HAR Import Error"
    },
    "317218@main": {
      "author": "Chris Dumez",
      "avatar": "https://www.gravatar.com/avatar/a9f21fe3a8baf79b45f3c91572187bdc?d=identicon\u0026s=64",
      "cl": "317218@main",
      "clUrl": "https://commits.webkit.org/317218@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319372\n\nReviewed by Darin Adler.\n\ncalculateBase64EncodedSize() took an unsigned inputLength, but its callers\npass a size_t span size (base64EncodeInternal() at Base64.cpp:162 and the\nStringTypeAdapter\u003cBase64Specification\u003e constructor at Base64.h:189). On\n64-bit, an input span whose size() exceeds 2^32 was silently truncated to\n32 bits at the call boundary. A size that is small once truncated (e.g.\n2^32 + 100 -\u003e 100) but is actually far above maximumBase64EncoderInputBufferSize\nslipped past the \"\u003e maximumBase64EncoderInputBufferSize\" guard and returned\na tiny non-zero encoded size. The full multi-gigabyte input span was then\nhanded to simdutf::binary_to_base64(), which writes ~size * 4 / 3 bytes into\nthe undersized destination buffer, overflowing it.\n\nThe decode path already guards this exact case (base64Decode() rejects\ninput.size() \u003e numeric_limits\u003cunsigned\u003e::max()); the encode path did not.\nThis is a latent defect rather than a practically reachable one: it requires\na single contiguous input buffer larger than 4 GB, and the String-based\nentry points (e.g. btoa) are bounded by String::MaxLength (2^31 - 1).\n\nFix it by taking a size_t inputLength so the cap check runs on the full\nlength before any narrowing, matching the decode path. The result still fits\nin unsigned because maximumBase64EncoderInputBufferSize is chosen so its\npadded encoded size is below 2^32.\n\nTest: Base64.EncodedSizeRejectsInputAboveUnsignedRange\n\n* Source/WTF/wtf/text/Base64.cpp:\n(WTF::calculateBase64EncodedSize):\n* Source/WTF/wtf/text/Base64.h:\n* Tools/TestWebKitAPI/Tests/WTF/Base64.cpp:\n(TestWebKitAPI::TEST(Base64, EncodedSizeRejectsInputAboveUnsignedRange)):\n\nCanonical link: https://commits.webkit.org/317218@main",
      "email": "cdumez@apple.com",
      "hash": "39dc095e8f0e31f06cee8a5f7af31bdb041dc422",
      "subject": "calculateBase64EncodedSize() truncates its input length to unsigned, undersizing the output buffer for inputs larger than 4 GB"
    },
    "317219@main": {
      "author": "Chris Dumez",
      "avatar": "https://www.gravatar.com/avatar/a9f21fe3a8baf79b45f3c91572187bdc?d=identicon\u0026s=64",
      "cl": "317219@main",
      "clUrl": "https://commits.webkit.org/317219@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319350\n\nReviewed by Darin Adler.\n\nIn catch_mach_exception_raise_state(), the CPU(ARM) (32-bit ARM) branch\npassed a pointer type (arm_unified_thread_state*) as the template argument\nto reinterpretCastSpanStartTo\u003c\u003e() instead of the value type, unlike every\nsibling branch (X86_64, X86, ARM64). Since reinterpretCastSpanStartTo\u003cT\u003e()\nreturns T\u0026, this produced a reference to a pointer, and applying .ts_32\n(which expands to .uts.ts_32) to a pointer is ill-formed; it would also\nhave used sizeof(pointer) rather than the size of the thread-state struct.\n\nThis branch is only compiled for 32-bit ARM with Mach exceptions, which is\nnot a shipping WebKit configuration, so it was never caught by the build.\nThe typo was introduced during the span-based refactor of this function.\nCorrect it to use the value type, matching the ARM64 branch.\n\n* Source/WTF/wtf/threads/Signals.cpp:\n\nCanonical link: https://commits.webkit.org/317219@main",
      "email": "cdumez@apple.com",
      "hash": "458f187c01a96486f45a2eed1cf1fe1e96dd14a4",
      "subject": "Fix incorrect template argument in Signals.cpp CPU(ARM) exception handling path"
    },
    "317220@main": {
      "author": "Chris Dumez",
      "avatar": "https://www.gravatar.com/avatar/a9f21fe3a8baf79b45f3c91572187bdc?d=identicon\u0026s=64",
      "cl": "317220@main",
      "clUrl": "https://commits.webkit.org/317220@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319349\nrdar://181691990\n\nReviewed by Ben Nham.\n\n316617@main added incomingMessagesLocker.unlockEarly() / waitForMessagesLocker.unlockEarly()\nto the async-reply-with-dispatcher branch of Connection::processIncomingMessage() so the reply\nhandler would run without the locks held (matching the other branches and avoiding\nre-entrancy). However, the `RefPtr syncState = m_syncState` local declared earlier in the\nfunction is destroyed *before* those lockers at the return (reverse declaration order), so this\nchange moved the final SyncMessageState deref -- and the ~SyncMessageState() it can trigger --\nout from under m_incomingMessagesLock on a hot path (every async reply, including GPUProcess\nsendWithAsyncReply replies).\n\nSyncMessageState is shared per-SerialFunctionDispatcher (SyncMessageState::getOrCreate()), so a\nsingle instance is kept alive by the m_syncState of every Connection bound to that dispatcher\n(e.g. the main UIProcess connection and the RemoteRenderingBackendProxy GPUProcess connection).\nConnection::invalidate() drops its m_syncState reference under m_incomingMessagesLock on the\ndispatcher thread. That lock is what serialized the \"read m_syncState, use it, drop it\" section\non the connection work queue against invalidate(). With the last deref now running unlocked, the\nwork-queue thread's ~SyncMessageState() can race invalidate()'s teardown of the same shared\nobject, producing the heap-use-after-free reported by ASan during WebPage teardown\n(~WebPage -\u003e ~RemoteRenderingBackendProxy -\u003e disconnectGPUProcess -\u003e Connection::invalidate).\n\nFix this by dropping our SyncMessageState reference (syncState = nullptr) while still holding\nm_incomingMessagesLock, before unlockEarly(), in both async-reply branches. This preserves\n316617@main's intent of running the reply handler unlocked while restoring the pre-regression\nordering. The completion handler does not need syncState.\n\n* Source/WebKit/Platform/IPC/Connection.cpp:\n(IPC::Connection::processIncomingMessage):\n\nCanonical link: https://commits.webkit.org/317220@main",
      "email": "cdumez@apple.com",
      "hash": "89d4e73db3539c113f7a055eb95652dd83795ec0",
      "subject": "REGRESSION(316617@main): Use-after-free in IPC::Connection::SyncMessageState::~SyncMessageState()"
    },
    "317221@main": {
      "author": "Abrar Rahman Protyasha",
      "avatar": "https://www.gravatar.com/avatar/fce5b3c4e9f3c59a4873e08c9f03c3b1?d=identicon\u0026s=64",
      "cl": "317221@main",
      "clUrl": "https://commits.webkit.org/317221@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319468\nrdar://182277728\n\nUnreviewed build fix.\n\nThere are two build breaks post-317213@main. First, we correctly refer\nto `nodeSnapshotCreator` instead of the extant `cloneNode`. Second, we\nreturn the script results in the expected type (`Bool`, not `Void?`).\n\n* Tools/TestWebKitAPI/Tests/WebKit/WebPage/UserContentControllerTests.swift:\n(UserContentControllerTests.jsBufferInjectsWebKitNamespace):\n\nCanonical link: https://commits.webkit.org/317221@main",
      "email": "a_protyasha@apple.com",
      "hash": "dc2c4a57ed42c77e26d9f5379c84e9c872d5151c",
      "subject": "REGRESSION(317213@main): Broke some internal builds (various errors under UserContentControllerTests.swift)"
    },
    "317222@main": {
      "author": "Zak Ridouh",
      "avatar": "https://www.gravatar.com/avatar/d9b65ef530b9cbbfc6dff1ca158faace?d=identicon\u0026s=64",
      "cl": "317222@main",
      "clUrl": "https://commits.webkit.org/317222@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319464\nrdar://182275985\n\nReviewed by Tim Nguyen.\n\nThe checker added in 313204@main never ran: every LayoutTests/ file is\nskipped before a checker is dispatched, so the .html tests that carry these\nincludes were never linted. The unit tests passed only by calling the\nchecker directly.\n\nUn-skip non-imported LayoutTests HTML/XHTML markup and route it to the\nDeprecatedJSTestIncludesChecker. Also require the include to be a whole path\nsegment so custom-js-test-pre.js isn't flagged, and allow a trailing\n\n* Tools/Scripts/webkitpy/style/checker.py:\n(CheckerDispatcher._is_lintable_layout_test_markup):\n(CheckerDispatcher.should_skip_without_warning):\n(CheckerDispatcher._create_checker):\n* Tools/Scripts/webkitpy/style/checker_unittest.py:\n(CheckerDispatcherSkipTest.test_should_skip_without_warning__true):\n(CheckerDispatcherSkipTest.test_should_skip_without_warning__false):\n(CheckerDispatcherDispatchTest.assert_checker_deprecated_js_test_includes):\n(CheckerDispatcherDispatchTest.test_deprecated_js_test_includes_paths):\n* Tools/Scripts/webkitpy/style/checkers/deprecated_js_test_includes.py:\n(DeprecatedJSTestIncludesChecker):\n* Tools/Scripts/webkitpy/style/checkers/deprecated_js_test_includes_unittest.py:\n(DeprecatedJSTestIncludesCheckerTest.test_flags_pre_include_deep_relative):\n(DeprecatedJSTestIncludesCheckerTest.test_does_not_flag_similarly_named_helper):\n(DeprecatedJSTestIncludesCheckerTest):\n(DeprecatedJSTestIncludesCheckerTest.test_flags_with_fragment):\n\nCanonical link: https://commits.webkit.org/317222@main",
      "email": "zakr@apple.com",
      "hash": "9c88a404d6b27394838342bd15dbade0b4f9cfa8",
      "subject": "[check-webkit-style] Run the deprecated js-test include checker on LayoutTests"
    },
    "317223@main": {
      "author": "Ahmad Saleem",
      "avatar": "https://www.gravatar.com/avatar/38445f84fe28aa19bfeb1f59f6559532?d=identicon\u0026s=64",
      "cl": "317223@main",
      "clUrl": "https://commits.webkit.org/317223@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319456\nrdar://182268053\n\nReviewed by Devin Rousso.\n\nIn willSendRequest(), the local `url` was declared as `String`, copying the\nstring returned by `DocumentLoader::url().string()` / `ResourceRequest::url().string()`.\nBoth accessors return a `const URL\u0026` (LIFETIME_BOUND) and `URL::string()` returns\na `const String\u0026`, so the value can be bound directly to a reference. Both the\nloader and the request outlive the requestWillBeSent() dispatch, and the frontend\ndispatcher takes `const String\u0026 documentURL`, so no copy is required.\n\nBind `url` with `auto\u0026` (deduces to `const String\u0026`) to drop the gratuitous\nref-count churn.\n\n* Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp:\n(WebCore::InspectorNetworkAgent::willSendRequest):\n\nCanonical link: https://commits.webkit.org/317223@main",
      "email": "ahmad.saleem792+github@gmail.com",
      "hash": "836e1d17c4ea38f965511d9d13acf983d50760e5",
      "subject": "[Web Inspector] Avoid redundant String copy of request URL in InspectorNetworkAgent::willSendRequest"
    },
    "317224@main": {
      "author": "Kiet Ho",
      "avatar": "https://www.gravatar.com/avatar/d9058b37006dce1f55f91b8ccc82f9a3?d=identicon\u0026s=64",
      "cl": "317224@main",
      "clUrl": "https://commits.webkit.org/317224@main",
      "description": "rdar://181487491\nhttps://bugs.webkit.org/show_bug.cgi?id=319009\n\nReviewed by Ryosuke Niwa.\n\nIn ResizeObserver, an observation in m_observations should exist in m_observationMap\nand vice versa. But this invariant is broken if an element is observed twice with\ndifferent box options:\n\nvoid ResizeObserver::observeInternal(Element\u0026 target, const ResizeObserverBoxOptions boxOptions)\n{\n    ASSERT(!m_JSOrNativeCallback.valueless_by_exception());\n\n    auto addResult = m_observationMap.ensure(target, [\u0026]() {\n        return ResizeObservation::create(target, boxOptions);\n    });     \u003c-- (a)\n    Ref observation = addResult.iterator-\u003evalue;\n    if (!addResult.isNewEntry) {\n        // The spec suggests unconditionally unobserving here, but that causes a test failure:\n        // https://github.com/web-platform-tests/wpt/issues/30708\n        if (observation-\u003eobservedBox() == boxOptions)\n            return;\n        unobserve(target);     \u003c-- (b)\n    }\n\n    // (c)\n    auto\u0026 observerData = target.ensureResizeObserverData();\n    observerData.observers.append(*this);\n    m_observations.add(WTF::move(observation));\n    [...]\n}\n\n(a) adds the element to m_observationMap if one doesn't exist, (b) unobserves\nif the element is already being observed but the new observation requests\ndifferent box options, and (c) adds the element to m_observations.\n\nIf an element is observed twice like this:\n\n    observer.observe(input);\n    observer.observe(input, { box: \"border-box\" });\n\nOn the second observation: (a) does not add anything to m_observationMap\nbecause it's already observed. (b) unobserve() removes the element from both\nm_observationMap and m_observations, and (c) adds it to m_observations, but\ncrucially, it does not add it back to m_observationMap. This breaks the\ninvariant between m_observation and m_observationMap.\n\nFix this by first testing if the element is observed first. If it is,\nunobserve it before adding the element to m_observationMap and m_observation.\n\nAdditionally, harden ResizeObserverData::observers by making it a WeakHashSet,\nso iterating through it would skip already freed observers.\n\nTest: imported/w3c/web-platform-tests/resize-observer/observe-015.html\n      imported/w3c/web-platform-tests/resize-observer/observe-018.html\n      resize-observer/resize-observer-observe-multiple-then-gc.html\n\n* LayoutTests/imported/w3c/web-platform-tests/resize-observer/observe-015-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/resize-observer/observe-018-expected.txt:\n    - Test progression.\n\n* LayoutTests/resize-observer/resize-observer-observe-multiple-then-gc-expected.txt: Added.\n* LayoutTests/resize-observer/resize-observer-observe-multiple-then-gc.html: Added.\n    - Added test. The crash is during when an observed element is freed, so it\n      needs to call the internal GC method and can't be upstreamed to WPT.\n\n* Source/WebCore/dom/Element.cpp:\n(WebCore::Element::disconnectFromResizeObserversSlow):\n* Source/WebCore/page/ResizeObserver.cpp:\n(WebCore::ResizeObserver::observeInternal):\n(WebCore::ResizeObserver::removeTarget):\n* Source/WebCore/page/ResizeObserver.h:\n\nCanonical link: https://commits.webkit.org/317224@main",
      "email": "kiet.ho@apple.com",
      "hash": "bd130fc5376dc79334604292566f3073f46dc5a4",
      "subject": "[resize-observer] Crash when observing an element multiple times"
    },
    "317225@main": {
      "author": "Ahmad Saleem",
      "avatar": "https://www.gravatar.com/avatar/38445f84fe28aa19bfeb1f59f6559532?d=identicon\u0026s=64",
      "cl": "317225@main",
      "clUrl": "https://commits.webkit.org/317225@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=317992\nrdar://180779865\n\nReviewed by Simon Fraser.\n\nWhen several snap areas are aligned at the same offset, the re-snap algorithm\n(https://drafts.csswg.org/css-scroll-snap-1/#multiple-aligned) selects, per axis,\nthe focused box, then the targeted box, then the innermost box, then the first in\ntree order. WebCore had no notion of \"innermost\" and applied a single chosen box\nto both axes, so it could not follow a nested snap area and a box tied only in the\nother axis could drag an axis off its snap position.\n\nSelect a snap target per axis among the boxes aligned at the active offset:\n\n- selectSnapTargetForAxis() returns the focused/targeted representative, else the\n  innermost box (one whose snap area does not enclose another aligned area), else\n  the first in tree order; recorded per axis in updateCurrentlySnappedBoxes().\n- resnapAfterLayout() follows each axis's target independently. Focused and\n  targeted boxes are re-evaluated fresh at re-snap (they can change after the\n  snap); otherwise the box recorded before the layout change is used.\n- preserveCurrentTargetForAxis() matches the target against all areas contributing\n  to an offset, so a box sharing its post-layout offset with another is still found.\n\n* LayoutTests/imported/w3c/web-platform-tests/css/css-scroll-snap/snap-after-relayout/multiple-aligned-targets/nested-supercedes-common-to-both-axes-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-scroll-snap/snap-after-relayout/multiple-aligned-targets/prefer-inner-target-expected.txt:\n* Source/WebCore/platform/ScrollSnapAnimatorState.cpp:\n(WebCore::ScrollSnapAnimatorState::preserveCurrentTargetForAxis):\n(WebCore::ScrollSnapAnimatorState::selectSnapTargetForAxis const):\n(WebCore::ScrollSnapAnimatorState::updateCurrentlySnappedBoxes):\n(WebCore::focusedOrTargetedBox):\n(WebCore::ScrollSnapAnimatorState::resnapAfterLayout):\n(WebCore::preferredSnapTarget): Deleted.\n(WebCore::chooseBoxToResnapTo): Deleted.\n* Source/WebCore/platform/ScrollSnapAnimatorState.h:\n\nCanonical link: https://commits.webkit.org/317225@main",
      "email": "ahmad.saleem792+github@gmail.com",
      "hash": "a30df7ba2f8b4f0c90f96d2170b5dd1997f8ee73",
      "subject": "[CSS Scroll Snap] Re-snap should select the innermost aligned snap area per axis"
    },
    "317226@main": {
      "author": "Claudio Saavedra",
      "avatar": "https://www.gravatar.com/avatar/376a6edb56b8e52de407ea171c869bcf?d=identicon\u0026s=64",
      "cl": "317226@main",
      "clUrl": "https://commits.webkit.org/317226@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319460\n\nReviewed by Carlos Garcia Campos.\n\nCurrently the uploaded results include the port name in the full test\nname, so\n\n- WPE/TestWebKitWebView:/webkit/WebKitWebView/is-web-process-responsive\n- WebKitGTK/TestWebKitWebView:/webkit/WebKitWebView/is-web-process-responsive\n\nare reported as two different tests even though they are the same test\nrun on different ports, making analysis of cross-port failures harder.\n\nStripping out the port prefix normalizes the test name and simplifies\nanalysis.\n\n* Tools/glib/api_test_runner.py:\n(TestRunner._get_test_name_for_upload):\n(TestRunner.run_tests):\n\nCanonical link: https://commits.webkit.org/317226@main",
      "email": "csaavedra@igalia.com",
      "hash": "9a5c798a823ee80752f2f3e2bb39710a3f537e9a",
      "subject": "[GLIB] Strip port name from API test results before upload to resultsdb"
    },
    "317227@main": {
      "author": "Pawel Lampe",
      "avatar": "https://www.gravatar.com/avatar/3c9bf19417c230eff7ade252118deb7a?d=identicon\u0026s=64",
      "cl": "317227@main",
      "clUrl": "https://commits.webkit.org/317227@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=318856\n\nReviewed by Antoine Quint.\n\nCurrently, if JS wrappers of regular CSS animations are crated e.g. due\nto getAnimations() call, they will retain CSSAnimations forever as they\nare never GC-able due to WebAnimation::virtualHasPendingActivity()\nformula.\n\nThis change modifies the formula to take into account that on a\nmonotonic timeline, a canceled (idle) animation cannot become relevant\nagain unless a script holds a reference to it. This way, under that\ncircumstances, the JS wrappers may be allowed to be GC-ed and hence\nthe CSSAnimation objects can be freed thus not leading to unbounded\nmemory growth.\n\nThis change also adds a test case that verifies the above.\n\nCo-authored with Claude.\n\nCanonical link: https://commits.webkit.org/317227@main",
      "email": "plampe@igalia.com",
      "hash": "02706b24ebb2968054e8e15002cc0345f22a4502",
      "subject": "Unbounded memory growth due to CSSAnimation object retention cycle"
    },
    "317228@main": {
      "author": "Marcos Caceres",
      "avatar": "https://www.gravatar.com/avatar/d31c9c6a3b0af558a2945682020e5b90?d=identicon\u0026s=64",
      "cl": "317228@main",
      "clUrl": "https://commits.webkit.org/317228@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=312458\nrdar://174908839\n\nReviewed by Pascoe.\n\nA compromised WebContent process could bypass the transient activation check\nin DigitalCredential::discoverFromExternalSource() and send the\nShowDigitalCredentialsChooser IPC directly, presenting a credential chooser\nwith no user gesture.\n\nHave the UI process independently verify that a genuine user activation\noccurred recently before presenting the chooser, by comparing its own\nlastActivationTimestamp against the transient activation window.\nlastActivationTimestamp is written only when the UI process processes real\ninput events, so it cannot be forged by the WebContent process.\n\nAlso consume that activation once the chooser is presented, by recording the\nserviced activation timestamp and rejecting any later request that does not\ncarry a newer one, so a single user gesture cannot authorize more than one\nchooser.\n\nCanonical link: https://commits.webkit.org/317228@main",
      "email": "marcosc@apple.com",
      "hash": "ed0fee7700f543f507e824bdede4da19b8414dc9",
      "subject": "Digital Credentials: UI process should independently verify user activation"
    },
    "317229@main": {
      "author": "Alan Baradlay",
      "avatar": "https://www.gravatar.com/avatar/788d66417db806c567552cfa1ae89f77?d=identicon\u0026s=64",
      "cl": "317229@main",
      "clUrl": "https://commits.webkit.org/317229@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=318601\n\nReviewed by Antti Koivisto.\n\nThe flex-base and content-based-min sizing helpers already take a FlexLayoutItem, but\nthe leaves they call still took the RenderBox directly. Route those last leaves through\nthe struct too, so the entire core-sizing subgraph reached from performFlexLayout accesses\nflex-item renderers only through FlexLayoutItem.\n\ncomputeMainAxisExtentForFlexItem, flexItemIntrinsicLogicalHeight, flexItemIntrinsicLogicalWidth,\nflexItemCrossSizeIsDefinite, and flexItemHasComputableAspectRatioAndCrossSizeIsConsideredDefinite\nnow take a const FlexLayoutItem\u0026 and pull the renderer out only where they hand it to\nFlexLayoutUtils, a renderer method, or the percentage-resolution query. canComputePercentageFlexBasis\nand flexItemMainSizeIsDefinite keep taking a RenderBox: they are the public percentage-resolution\nquery, reached during a flex item's own layout where no FlexLayoutItem exists.\n\nNo new field; no change in behavior.\n\n* Source/WebCore/rendering/RenderFlexibleBox.cpp:\n* Source/WebCore/rendering/RenderFlexibleBox.h:\n\nCanonical link: https://commits.webkit.org/317229@main",
      "email": "zalan@apple.com",
      "hash": "3cd5e888a22018b0e47f98fcffc476e5eb1e77e8",
      "subject": "[cleanup] Route the remaining flex item core-sizing leaves through FlexLayoutItem"
    },
    "317230@main": {
      "author": "Alan Baradlay",
      "avatar": "https://www.gravatar.com/avatar/788d66417db806c567552cfa1ae89f77?d=identicon\u0026s=64",
      "cl": "317230@main",
      "clUrl": "https://commits.webkit.org/317230@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319178\n\u003crdar://problem/182019037\u003e\n\nReviewed by Antti Koivisto.\n\nAdd the CSS Text Decoration Level 4 'text-decoration-inset' property\n(auto | \u003clength\u003e{1,2}), gated behind the cssTextDecorationInsetEnabled setting.\n\nThe property adjusts the start and end endpoints of the line decorations drawn by\na decorating box (underline, overline, line-through). A positive \u003clength\u003e moves\nan endpoint inward, trimming the decoration; a negative \u003clength\u003e moves it outward,\nextending it. A single value applies to both endpoints; two values are the start\nand the end. 'auto' lets the UA choose an inset so that two adjacent identical\nunderlined elements do not appear to share a single continuous underline (e.g.\nfor Chinese, where underlining is a form of punctuation); it is distinct from 0.\n\n1. It is stored as a new Style::TextDecorationInset value type (a keyword-or-length-\npair) in NonInheritedRareData, parsed grammar-driven, and animated by computed\nvalue.\n2. The inset is applied at paint time in TextBoxPainter, which shifts the\ndecoration's inline origin and shrinks/grows its length (because text-decoration-\ninset and box-decoration-break are not inherited, a decoration that propagates\nfrom an ancestor box down to the (root inline) box that paints it)\n3. box-decoration-break is then honored via the inline box's closed edges: with 'slice' the start\ninset only affects the first fragment's start edge and the end inset the last\nfragment's end edge; with 'clone' both edges of every fragment are inset.\n4. Endpoints are also gated on the marked-text piece that actually reaches the box's\nlogical start/end, so a decoration split into several marked texts (selection,\ndocument markers, highlights) stays continuous instead of being trimmed at the\ninterior boundaries.\n5. Because a negative inset extends the decoration past the text\nbox, decoration ink overflow is expanded by the outward amount, and StyleDifference\ntreats an inset change as affecting repaint and visual overflow so dynamic/animated\nchanges invalidate correctly.\n\nHorizontal and vertical writing modes (including sideways-rl/lr and orthogonal\nblocks), in both inline directions, are supported, as is the text-decoration-skip-\nink interaction (its skip gaps are measured against the underline's bounding box,\nwhich already tracks the inset-shifted origin, so they stay aligned to the glyphs).\nAcross a bidi direction boundary the decoration is painted one segment per run; the\ncomponent of the inset that shifts the decoration as a whole is applied to every\nsegment (so the seam between runs moves with it rather than being pinned), while the\nextend/trim overhang is applied only at the segment reaching the decoration's visual\nstart/end.\n\n* LayoutTests/TestExpectations: Un-skip the now-passing upstream WPT conformance\ntests (text-decoration-inset-001..008, 010..013, 015..024, and\northogonal-block-001); 009/014 (sub-pixel endpoint rounding) and the unrelated 025\n(multicol) remain ImageOnlyFailure on follow-up bugs.\n* LayoutTests/platform/ios/TestExpectations: Mark text-decoration-inset-marked-text-gap\nWontFix on iOS - it splits the decoration with a ::selection color, but iOS draws\nselection via UIKit and does not paint ::selection styling, so the reference (which\nuses a \u003cspan\u003e) cannot match.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-cascade/all-prop-initial-xml-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-text-decor/parsing/text-decoration-inset-computed-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-text-decor/parsing/text-decoration-inset-valid-expected.txt: Rebaseline the upstream parsing tests, which still carried the pre-implementation \"not supported\" baseline.\n* Source/WTF/Scripts/Preferences/UnifiedWebPreferences.yaml: Add CSSTextDecorationInsetEnabled.\n* Source/WebCore/Headers.cmake:\n* Source/WebCore/Sources.txt:\n* Source/WebCore/WebCore.xcodeproj/project.pbxproj: Build StyleTextDecorationInset.\n* Source/WebCore/css/CSSProperties.json: Add the text-decoration-inset property.\n* Source/WebCore/rendering/TextBoxPainter.cpp:\n(WebCore::autoTextDecorationInset):\n(WebCore::TextBoxPainter::insetAdjustedDecorationLocationAndWidth): Apply the\ninset (and box-decoration-break) carried on the decoration styles to the decoration\ngeometry, honoring box-decoration-break and marked-text sub-ranges.\n(WebCore::TextBoxPainter::paintBackgroundDecorations):\n(WebCore::TextBoxPainter::paintForegroundDecorations):\n(WebCore::TextBoxPainter::insetAdjustedDecorationLocationAndWidth const):\n* Source/WebCore/rendering/TextBoxPainter.h:\n* Source/WebCore/rendering/TextDecorationPainter.cpp:\n(WebCore::collectStylesForRenderer): Also resolve the non-inherited\ntext-decoration-inset and box-decoration-break from the box that introduces the\ndecoration, alongside its color/thickness/style.\n(WebCore::TextDecorationPainter::Styles::operator==):\n(WebCore::TextDecorationPainter::Styles::operator== const):\n* Source/WebCore/rendering/TextDecorationPainter.h: Carry the resolved inset and\nbox-decoration-break on Styles.\n* Source/WebCore/style/InlineTextBoxStyle.cpp:\n(WebCore::computedInkOverflowForDecorations): Expand ink overflow for a negative\n(outward) inset.\n* Source/WebCore/style/PropertyAllowlist.cpp: Allow text-decoration-inset in the\n(WebCore::Style::isValidHighlightStyleProperty):\n(WebCore::Style::isValidCueStyleProperty):\n(WebCore::Style::isValidCueSelectorStyleProperty):\nhighlight and cue property allowlists.\n* Source/WebCore/style/StyleDifference.cpp:\n(WebCore::...::changeAffectsVisualOverflow):\n(WebCore::...::rareDataChangeRequiresRepaint): Repaint/recompute overflow when\nthe inset changes.\n* Source/WebCore/style/computed/data/StyleNonInheritedRareData.cpp:\n(WebCore::Style::NonInheritedRareData::NonInheritedRareData):\n(WebCore::Style::NonInheritedRareData::operator== const):\n(WebCore::Style::NonInheritedRareData::dumpDifferences const):\n* Source/WebCore/style/computed/data/StyleNonInheritedRareData.h: Store the inset.\n* Source/WebCore/style/computed/StyleComputedStyleBase.h:\n* LayoutTests/imported/w3c/web-platform-tests/html/rendering/widgets/shadow-dom-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-text-decor/text-decoration-inset-008.html:\n* LayoutTests/platform/glib/imported/w3c/web-platform-tests/css/css-cascade/all-prop-initial-xml-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-text-decor/text-decoration-inset-auto-expected-mismatch.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-text-decor/text-decoration-inset-auto.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-text-decor/text-decoration-inset-line-through-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-text-decor/text-decoration-inset-line-through.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-text-decor/text-decoration-inset-marked-text-gap-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-text-decor/text-decoration-inset-marked-text-gap.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-text-decor/text-decoration-inset-negative-expected-mismatch.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-text-decor/text-decoration-inset-negative.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-text-decor/text-decoration-inset-not-inherited-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-text-decor/text-decoration-inset-not-inherited.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-text-decor/text-decoration-inset-one-value-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-text-decor/text-decoration-inset-one-value.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-text-decor/text-decoration-inset-overline-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-text-decor/text-decoration-inset-overline.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-text-decor/text-decoration-inset-trims-underline-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-text-decor/text-decoration-inset-trims-underline-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-text-decor/text-decoration-inset-trims-underline.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-text-decor/text-decoration-inset-zero-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-text-decor/text-decoration-inset-zero.html: Added.\n* Source/WebCore/style/values/text-decoration/StyleTextDecorationInset.cpp: Added.\n(WebCore::Style::TextDecorationInset::resolvedStart const):\n(WebCore::Style::TextDecorationInset::resolvedEnd const):\n(WebCore::Style::CSSValueConversion\u003cTextDecorationInsetPair\u003e::operator):\n* Source/WebCore/style/values/text-decoration/StyleTextDecorationInset.h: Added.\n(WTF::MarkableTraits\u003cWebCore::Style::TextDecorationInsetPair\u003e::isEmptyValue):\n(WTF::MarkableTraits\u003cWebCore::Style::TextDecorationInsetPair\u003e::emptyValue):\n(WebCore::Style::TextDecorationInset::TextDecorationInset):\n(WebCore::Style::TextDecorationInset::isAuto const):\n* LayoutTests/css3/text-decoration/text-decoration-inset-auto-cjk-expected.html: Added.\n* LayoutTests/css3/text-decoration/text-decoration-inset-auto-cjk.html: Added.\n* LayoutTests/css3/text-decoration/text-decoration-inset-box-decoration-break-expected-mismatch.html: Added.\n* LayoutTests/css3/text-decoration/text-decoration-inset-box-decoration-break.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-text-decor/text-decoration-inset-bidi-seam-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-text-decor/text-decoration-inset-bidi-seam.html: Added.\n\nCanonical link: https://commits.webkit.org/317230@main",
      "email": "zalan@apple.com",
      "hash": "bb5b3e0e809d3a5eec63d6016a1e89bfd027f9d4",
      "subject": "[css-text-decor-4] Implement the text-decoration-inset property"
    },
    "317231@main": {
      "author": "Sosuke Suzuki",
      "avatar": "https://www.gravatar.com/avatar/e63b87350fe19bdd9a30c7234eda45af?d=identicon\u0026s=64",
      "cl": "317231@main",
      "clUrl": "https://commits.webkit.org/317231@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319452\n\nReviewed by Yusuke Suzuki.\n\n313689@main made RegExp bytecode compilation mutator-only: when Yarr JIT code returns\nJITCodeFailure on a compiler thread and no bytecode exists, matchInline bails out with\n-1 / MatchResult::failed().\n\nThat bail is indistinguishable from a real no-match. If a RegExp only ever runs via the\nYarr JIT (so bytecode is never compiled) and the JIT stack check fails against the small\ncompiler-thread stack, matchConcurrently reports an authoritative no-match and DFG\nstrength reduction permanently folds exec to null and test to false, even though the\nmutator matches successfully.\n\nThis patch keeps the JITCodeFailure sentinel on the bail path and makes matchConcurrently\nreturn false for it, so strength reduction gives up folding and defers to runtime.\n\n    const re = new RegExp(\"^\" + \"a?\".repeat(30000) + \"$\");\n    function f() { return re.test(\"a\"); }\n    // After DFG tier-up, f() returns false forever; direct re.test(\"a\") is true.\n\nTest: JSTests/stress/dfg-strength-reduction-regexp-jit-code-failure-not-no-match.js\n\n* JSTests/stress/dfg-strength-reduction-regexp-jit-code-failure-not-no-match.js: Added.\n(foldableTest):\n(foldableExec):\n* Source/JavaScriptCore/runtime/RegExp.cpp:\n(JSC::RegExp::matchConcurrently):\n* Source/JavaScriptCore/runtime/RegExpInlines.h:\n(JSC::RegExp::matchInline):\n\nCanonical link: https://commits.webkit.org/317231@main",
      "email": "sosuke@bun.sh",
      "hash": "338e02c8838aed9c72f9244a53c928a1e6a969e5",
      "subject": "[JSC] DFG strength reduction folds a compiler-thread RegExp execution failure into a definite no-match"
    },
    "317232@main": {
      "author": "Chris Dumez",
      "avatar": "https://www.gravatar.com/avatar/a9f21fe3a8baf79b45f3c91572187bdc?d=identicon\u0026s=64",
      "cl": "317232@main",
      "clUrl": "https://commits.webkit.org/317232@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319369\nrdar://182132498\n\nReviewed by Jean-Yves Avenard.\n\nSince 312187@main made AudioNode's ref-counting thread-safe, an AudioNode can be\nderef'd and marked for deletion on the audio rendering thread. When a node (e.g. a\nScriptProcessorNode) that is connected to an AudioParam gets deleted this way, the\nteardown path AudioNode::deref() -\u003e markNodeForDeletionIfNecessary() -\u003e\nAudioNodeOutput::disconnectAll() -\u003e disconnectAllParams() ref's and deref's the\nconnected AudioParam on the audio thread. AudioParam was still a plain\nRefCounted\u003cAudioParam\u003e, so this tripped the ref/deref threading assertion\n(applyRefDerefThreadingCheck) and crashed.\n\nMake AudioParam's ref-counting thread-safe, matching AudioNodeInput which is\nprocessed on the same audio-thread teardown path. AudioParam owns non-thread-safe\nmembers (e.g. its String name), so it must never be destroyed off the main thread;\nuse ThreadSafeRefCounted\u003cAudioParam, DestructionThread::Main\u003e so that a final deref\non the audio thread defers destruction to the main thread.\n\nAlso avoid the INFO_LOG() call in AudioParam::disconnect() when running on the audio\nthread, since building the log string allocates and heap allocations are forbidden\non the audio thread.\n\nTest: webaudio/scriptprocessornode-connected-to-audioparam-crash.html\n\n* LayoutTests/webaudio/scriptprocessornode-connected-to-audioparam-crash-expected.txt: Added.\n* LayoutTests/webaudio/scriptprocessornode-connected-to-audioparam-crash.html: Added.\n* Source/WebCore/Modules/webaudio/AudioParam.cpp:\n(WebCore::AudioParam::disconnect):\n* Source/WebCore/Modules/webaudio/AudioParam.h:\n\nCanonical link: https://commits.webkit.org/317232@main",
      "email": "cdumez@apple.com",
      "hash": "e3b8f2b9b9b2f02d71510c5bf9045e51b687e0a9",
      "subject": "REGRESSION(312187@main) AudioParam ref-counting is not thread-safe, causing a crash when a node connected to it is destroyed on the audio thread"
    },
    "317233@main": {
      "author": "Claudio Saavedra",
      "avatar": "https://www.gravatar.com/avatar/376a6edb56b8e52de407ea171c869bcf?d=identicon\u0026s=64",
      "cl": "317233@main",
      "clUrl": "https://commits.webkit.org/317233@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319481\n\nReviewed by Adrian Perez de Castro.\n\nGoogle Test based API tests (TestWTF, TestWebCore, TestWebKit and\nTestJavaScriptCore) were uploaded to results.webkit.org using a colon\nbetween the binary and the test case (e.g. TestWTF:Base64.Decode), while\nthe other ports use a dot (TestWTF.Base64.Decode). As a result the same\ntest was indexed under two different names depending on the port, which\ndefeats cross-port analysis for the tests that are shared across all of\nthem.\n\nReport Google Test cases using the dot separator so they match the name\nused by the other ports. GLib tests keep the \"\u003cbinary\u003e:\u003csubtest\u003e\" form,\nsince their subtest is a /path and they have no counterpart on the other\nports. Additionally, teach the test runner to accept the dotted form on\nthe command line, so a name copied from results.webkit.org can be run\ndirectly with run-gtk-tests and run-wpe-tests.\n\n* Tools/glib/api_test_runner.py:\n(TestRunner._get_tests):\n(TestRunner._get_test_name_for_upload):\n(TestRunner._binary_and_subtest):\n(TestRunner._getsubtests_to_run_for_test):\n(TestRunner.run_tests):\n\nCanonical link: https://commits.webkit.org/317233@main",
      "email": "csaavedra@igalia.com",
      "hash": "fc767a874967a8d29ab09dc42e7638af6e338202",
      "subject": "[GLIB] Report Google Test API test results with the same name as other ports"
    },
    "317234@main": {
      "author": "Sosuke Suzuki",
      "avatar": "https://www.gravatar.com/avatar/e63b87350fe19bdd9a30c7234eda45af?d=identicon\u0026s=64",
      "cl": "317234@main",
      "clUrl": "https://commits.webkit.org/317234@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319465\n\nReviewed by Yusuke Suzuki.\n\nWhen rounding a duration relative to a ZonedDateTime whose nudge window ends on a\ncalendar day entirely skipped by a time zone transition (Pacific/Apia skipped\n2011-12-30 when it crossed the date line), both window bounds in NudgeToCalendarUnit\nresolve to the same instant. Computing the progress fraction then divides by zero:\nx86_64 Release crashes with SIGFPE, arm64 Release returns Infinity or self-inconsistent\nvalues, and Debug hits the step 13 assertion. The assertion is known to be violable in\nthe spec itself [1]; throw a RangeError instead, matching the observable behavior of\n@js-temporal/polyfill.\n\nThe bounds assertion after the ComputeNudgeWindow retry is violable the same way, even\nby ordinary one-hour DST transitions; remove it and keep computing, which produces the\nsame result as the polyfill.\n\n    const relativeTo = Temporal.ZonedDateTime.from('2012-01-01T12:00:00[Pacific/Apia]');\n    Temporal.Duration.from({ days: -1 }).total({ unit: 'days', relativeTo });  // SIGFPE on x86_64\n\n[1]: https://github.com/tc39/proposal-temporal/issues/3310\n\n* JSTests/stress/temporal-duration-round-zero-length-nudge-window.js: Added.\n(shouldBe):\n(shouldThrowRangeError):\n(throw.new.Error):\n* Source/JavaScriptCore/runtime/temporal/core/DurationArithmetic.cpp:\n(JSC::TemporalCore::nudgeToCalendarUnit):\n\nCanonical link: https://commits.webkit.org/317234@main",
      "email": "sosuke@bun.sh",
      "hash": "170ee738c6f19a9f81f398e2fa0752b9ac234cd4",
      "subject": "[JSC] `Temporal.Duration` rounding divides by zero when a time zone transition skips an entire day"
    },
    "317235@main": {
      "author": "Alan Baradlay",
      "avatar": "https://www.gravatar.com/avatar/788d66417db806c567552cfa1ae89f77?d=identicon\u0026s=64",
      "cl": "317235@main",
      "clUrl": "https://commits.webkit.org/317235@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=318602\n\nReviewed by Antti Koivisto.\n\nFlexLayoutItem now snapshots whether the flex container's main axis is the item's inline\naxis, mirroring the mainAxisBorderAndPadding / crossAxisBorderAndPadding fields. It is\npopulated at construction from the same comparison the FlexLayoutUtils query makes (the\ncontainer's flow horizontal-ness against the item's writing mode), so it is a pure immutable\nper-item fact with no layout-state dependency. This is the positive sense of the flag FFC\nbakes onto LogicalFlexItem as isOrthogonal.\n\nThe twelve core-sizing sites that reach the item now read the field instead of calling\nflexLayoutUtils().mainAxisIsFlexItemInlineAxis(renderer). The other callers keep the util\nquery: they run against a bare renderer with no FlexLayoutItem (the baseline candidates, the\npublic percentage-resolution query, setOverridingMainSizeForFlexItem, and the\nScopedCrossAxisOverrideForFlexItem constructor / performBaselineAlignment lambda).\n\nNo change in behavior.\n\n* Source/WebCore/rendering/RenderFlexibleBox.cpp:\n* Source/WebCore/rendering/RenderFlexibleBox.h:\n\nCanonical link: https://commits.webkit.org/317235@main",
      "email": "zalan@apple.com",
      "hash": "7e86f405c777ba9e632c23261cf2af96a40b5c60",
      "subject": "[cleanup] Snapshot the flex item's main-axis-is-inline-axis flag on FlexLayoutItem"
    },
    "317236@main": {
      "author": "Karl Rackler",
      "avatar": "https://www.gravatar.com/avatar/809e306d02face15d5e29b561026f7c2?d=identicon\u0026s=64",
      "cl": "317236@main",
      "clUrl": "https://commits.webkit.org/317236@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319501\n\nUnreviewed test gardening.\n\nAdd test expectation.\n\n* LayoutTests/platform/mac-wk2/TestExpectations:\n\nCanonical link: https://commits.webkit.org/317236@main",
      "email": "rackler@apple.com",
      "hash": "1a902d669538b46bddaaaaddb365218a037dcc20",
      "subject": "[Gardening]: ([Tahoe] fast/animation/request-animation-frame-throttle-subframe.html is a flaky TIMEOUT)"
    },
    "317237@main": {
      "author": "Marcos Caceres",
      "avatar": "https://www.gravatar.com/avatar/d31c9c6a3b0af558a2945682020e5b90?d=identicon\u0026s=64",
      "cl": "317237@main",
      "clUrl": "https://commits.webkit.org/317237@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319450\nrdar://182259354\n\nReviewed by Ryosuke Niwa.\n\nThe virtual wallet behavior handling in showDigitalCredentialsChooser passed\nthis-capturing lambdas to applyVirtualWalletBehavior to store the pending\ncompletion handler, which the UncountedLambdaCapturesChecker flagged. Replace\nthe callback with a VirtualWalletDisposition return value so each caller stores\nthe handler inline, removing the lambda capture entirely.\n\nCanonical link: https://commits.webkit.org/317237@main",
      "email": "marcosc@apple.com",
      "hash": "c2aac863a62f189a0ca1690a55315d81c1149075",
      "subject": "Digital Credentials: Fix UncountedLambdaCapturesChecker failure in WebPageProxy"
    },
    "317238@main": {
      "author": "Youenn Fablet",
      "avatar": "https://www.gravatar.com/avatar/0a9886e582a7aee1eb908eb59af36da4?d=identicon\u0026s=64",
      "cl": "317238@main",
      "clUrl": "https://commits.webkit.org/317238@main",
      "description": "rdar://181801756\nhttps://bugs.webkit.org/show_bug.cgi?id=318950\n\nReviewed by Jean-Yves Avenard.\n\nTo align with the spec, instead of using undefined we use null when we obfuscate IceCandidate address member.\nWe rebase some WPT tests and update some layout tests accordingly.\n\nWe rebase in particular LayoutTests/imported/w3c/web-platform-tests/webrtc-stats/getStats-remote-candidate-address-expected.txt, one test changes to PASS and one to FAIL.\nThe first one changes to PASS as the test expects null and WebKit was previously exposing undefined.\nThe second ones changes to FAIL as the test expects a value not null and WebKit was exposing undefined (and now null).\nA follow-up PR should allow exposing remote candidates whose address has been given by the web page, whether an IP or a mDNS address.\n\n* LayoutTests/imported/w3c/web-platform-tests/webrtc-stats/getStats-remote-candidate-address-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/webrtc/RTCPeerConnection-mandatory-getStats.https-expected.txt:\n* LayoutTests/platform/mac-wk2/TestExpectations:\n* LayoutTests/webrtc/candidate-stats.html:\n* LayoutTests/webrtc/datachannel/getStats-no-prflx-remote-candidate.html:\n* Source/WebCore/Modules/mediastream/gstreamer/GStreamerStatsCollector.cpp:\n(WebCore::RTCStatsReport::IceCandidateStats::convert):\n* Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCStatsCollector.cpp:\n(WebCore::RTCStatsReport::IceCandidateStats::convert):\n\nCanonical link: https://commits.webkit.org/317238@main",
      "email": "youenn@apple.com",
      "hash": "4633fbc5a77475f264df74ea208e0018c321c1d1",
      "subject": "ICECandidate stats address member should be null when obfuscated"
    },
    "317239@main": {
      "author": "Basuke Suzuki",
      "avatar": "https://www.gravatar.com/avatar/5192a1151c7575317affb7a4633f8d63?d=identicon\u0026s=64",
      "cl": "317239@main",
      "clUrl": "https://commits.webkit.org/317239@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=317229\nrdar://179857636\n\nReviewed by Charlie Wolfe.\n\nRe-land of 316426@main, reverted as 316667@main\n(https://bugs.webkit.org/show_bug.cgi?id=318806) for making\nSiteIsolation.CrossProcessHistoryTraversalCoalesce flaky. The coalescing\nitself was correct; the flakiness came from the cross-process\nback/forward-cache lifecycle a split traversal exercises, fixed by the four\nchanges described under \"Stabilization\" below (test now 60/60 in debug, no\ncrash, no hang).\n\nFollow-up to https://bugs.webkit.org/show_bug.cgi?id=317077.\n\nPer HTML's \"traverse the history by a delta\" algorithm, history.back/\nforward/go(n) appends a task to the top-level traversable's session\nhistory traversal queue. The previous fix (bug 317077) implemented\nper-WebProcess coalescing by forwarding to the top frame's\nNavigationScheduler when reachable in this WebProcess. Under Site\nIsolation, when the top frame is a RemoteFrame (a cross-site iframe\ninitiates the traversal), the queue lives above any single WebProcess\nand the originating scheduler can't see traversals from other\nprocesses targeting the same traversable.\n\nSymptom: two cross-site iframes in different WebProcesses each call\nhistory.back() in the same task; both navigations execute and the\nuser sees an extra intermediate document load that the spec says\nshould not occur.\n\nIntroduce SessionHistoryTraversalQueue (defined in its own\nUIProcess/SessionHistoryTraversalQueue.{h,cpp} rather than nested in\nWebPageProxy), owned by WebPageProxy (top-level traversable proxy).\nThe queue accumulates pending delta across all WebProcesses targeting\nthis page and flushes on a 0-delay timer, calling\ngoToBackForwardItemAtIndex with the net delta (no-op when delta == 0,\nmatching \"going nowhere\"). NavigationScheduler's existing\nper-WebProcess aggregation in scheduleHistoryNavigation now gains a\nsecond branch: when the top frame is in another process (top frame\ndowncasts to RemoteFrame), forward via a new LocalFrameLoaderClient\nhook (dispatchEnqueueHistoryTraversalDelta) that posts\nWebPageProxy::EnqueueHistoryTraversalDelta to the UIProcess.\n\nTrust model note: EnqueueHistoryTraversalDelta accepts an int32_t\ndelta from any WebProcess and forwards it to goToBackForwardItemAtIndex\non flush. This is the same trust boundary as the existing\nGoToBackForwardItemAtIndex IPC; Site Isolation does not introduce a new\nattack vector here. The eventual WebBackForwardList lookup clamps to\nthe available range, so an out-of-range delta degrades to a no-op\nrather than memory unsafety.\n\nStabilization (new since 316426@main): the flakiness was in the\ncross-process back/forward-cache lifecycle a coalesced (and, more\nimportantly, a SPLIT) traversal exercises. Two back() calls arriving in\nseparate tasks cannot coalesce into one go(-2); the queue serializes them\ninto two legs (c-\u003eb, then b-\u003ea), and that split path had four independent\ndefects, each fixed and covered here:\n\n1. Intermediate-entry restore hang / lost split traversal. An iframe\n   (cross-site subframe) WebProcess hosts one WebPage with a single\n   m_isSuspended flag, so it could cache only the first BFCache entry;\n   a later SuspendWithFrameItem for an intermediate entry early-returned\n   completionHandler(true) (a false success), so the UIProcess recorded\n   iframe children it never had and the back navigation hung. And the\n   queue released the next leg while the previous one was still settling,\n   so the second back could resolve against a stale current index and be\n   lost. suspendWithFrameItem now returns whether the frame item is\n   actually cached (isInBackForwardCache), and the queue holds further\n   deltas until the in-flight traversal settles.\n\n2. LocalFrame::frameWasDisconnectedFromOwner asserted when tearing down\n   a back/forward-cached subframe: it called willBeRemovedFromFrame()\n   unconditionally, unlike its siblings (setView/setDocument/\n   FrameLoader::clear) which skip it while the document is in the\n   back/forward cache. Guarded to match.\n\n3. A stale/duplicate BackForwardGoToItem from an earlier split leg could\n   arrive after the current index had already advanced to a later leg's\n   destination and clobber it backward (WebBackForwardList::goToItem\n   moves the current index unconditionally), so the main frame committed\n   the destination while the back/forward list still reported the\n   intermediate entry -- the second back appeared lost. The queue now\n   records the in-flight traversal's direction and\n   backForwardGoToItemShared ignores an index move opposite to it (a\n   legitimate leg always moves the index in the traversal direction).\n   The same guard is mirrored in the ENABLE(BACK_FORWARD_LIST_SWIFT) path.\n\n4. URL=\"\" hang: during the split traversal a subframe could be detached\n   while an UpdateScrollingMode IPC for it was in flight; by the time it\n   reached the UIProcess the frame's parent was gone, so the MESSAGE_CHECK\n   in updateScrollingMode terminated the process, resetStateAfterProcessExited\n   reset PageLoadState to an empty active URL, and the navigation hung.\n   updateScrollingMode now ignores an update for a frame whose parent is\n   already gone (a benign straggler for a detached frame); the message\n   check is kept for the case where the parent still exists.\n\nThis is the observable-coalescing approximation; the spec-faithful\n\"sequential apply + synchronous queue jumping\" is left for a future\nepic. The class name (SessionHistoryTraversalQueue) leaves room for\nthat evolution.\n\nTest plan: SiteIsolation.CrossProcessHistoryTraversalCoalesce builds a\n3-entry main-frame history (a, b, c) where each page hosts two\ncross-site iframes (webkit.org and apple.com) in distinct WebProcesses,\nthen issues two history.back() from the iframes. New coverage:\nCrossProcessHistoryTraversalGoMinus2 (the single-traversal go(-2) form)\nand CrossProcessHistoryTraversalSameFrameBackTwice (two back() from one\niframe -- the most reliable split reproducer). All are 60/60 in debug;\nthe MultiProcessBFCache*, GoBackToPageWithIframe and\nCrossProcessSameDocumentHistoryTraversalDoesNotStall regression sets do\nnot regress.\n\n* Source/WebCore/loader/EmptyClients.cpp:\n(WebCore::EmptyFrameLoaderClient::dispatchEnqueueHistoryTraversalDelta):\n* Source/WebCore/loader/EmptyFrameLoaderClient.h:\n* Source/WebCore/loader/LocalFrameLoaderClient.h:\n* Source/WebCore/loader/NavigationScheduler.cpp:\n(WebCore::NavigationScheduler::scheduleHistoryNavigation): Forward cross-process traversal deltas to the UIProcess queue.\n* Source/WebCore/page/LocalFrame.cpp:\n(WebCore::LocalFrame::frameWasDisconnectedFromOwner const): Skip willBeRemovedFromFrame() while the document is in the back/forward cache.\n* Source/WebKit/Sources.txt:\n* Source/WebKit/UIProcess/API/APINavigation.h:\n* Source/WebKit/UIProcess/SessionHistoryTraversalQueue.cpp: Added.\n(WebKit::SessionHistoryTraversalQueue::enqueueDelta):\n(WebKit::SessionHistoryTraversalQueue::cancel):\n(WebKit::SessionHistoryTraversalQueue::traversalDidSettle): Release held deltas once the in-flight traversal settles.\n(WebKit::SessionHistoryTraversalQueue::flush): Record the in-flight traversal direction.\n* Source/WebKit/UIProcess/SessionHistoryTraversalQueue.h: Added.\n(WebKit::SessionHistoryTraversalQueue::inFlightDirection const):\n* Source/WebKit/UIProcess/WebBackForwardList.cpp:\n(WebKit::WebBackForwardList::backForwardGoToItemShared): Ignore a stale index move opposite to the in-flight traversal direction.\n* Source/WebKit/UIProcess/WebBackForwardList.swift:\n(backForwardGoToItemShared): Mirror the stale-index-move guard for the ENABLE(BACK_FORWARD_LIST_SWIFT) path.\n* Source/WebKit/UIProcess/WebPageProxy.cpp:\n(WebKit::WebPageProxy::goToBackForwardItemAtIndex):\n(WebKit::WebPageProxy::enqueueHistoryTraversalDelta):\n(WebKit::WebPageProxy::inFlightTraversalDirection const):\n(WebKit::WebPageProxy::updateScrollingMode): Ignore an UpdateScrollingMode straggler for a detached frame; keep the message check when the parent still exists.\n(WebKit::WebPageProxy::didCommitLoadForFrame): Settle the traversal queue on the main-frame commit.\n(WebKit::WebPageProxy::didFailProvisionalLoadForFrameShared): Settle the traversal queue on a failed main-frame provisional load.\n(WebKit::WebPageProxy::didSameDocumentNavigationForFrame): Settle the traversal queue on a same-document main-frame traversal.\n* Source/WebKit/UIProcess/WebPageProxy.h:\n* Source/WebKit/UIProcess/WebPageProxy.messages.in:\n* Source/WebKit/WebKit.xcodeproj/project.pbxproj:\n* Source/WebKit/WebProcess/WebCoreSupport/WebLocalFrameLoaderClient.cpp:\n(WebKit::WebLocalFrameLoaderClient::dispatchEnqueueHistoryTraversalDelta):\n* Source/WebKit/WebProcess/WebCoreSupport/WebLocalFrameLoaderClient.h:\n* Source/WebKitLegacy/mac/WebCoreSupport/WebFrameLoaderClient.h:\n* Source/WebKitLegacy/mac/WebCoreSupport/WebFrameLoaderClient.mm:\n(WebFrameLoaderClient::dispatchEnqueueHistoryTraversalDelta):\n* Tools/TestWebKitAPI/Tests/WebKit/WKWebView/SiteIsolation.mm:\n(TEST(SiteIsolation, CrossProcessHistoryTraversalCoalesce)):\n(TEST(SiteIsolation, CrossProcessHistoryTraversalGoMinus2)):\n(TEST(SiteIsolation, CrossProcessHistoryTraversalSameFrameBackTwice)):\n\nCanonical link: https://commits.webkit.org/317239@main",
      "email": "basuke@apple.com",
      "hash": "e566e1134bd0182a0a7cb0ca4f782bb95dc66719",
      "subject": "[Re-land] [NavigationScheduler] history.back/forward/go(n) coalescing across processes via UIProcess session history traversal queue"
    },
    "317240@main": {
      "author": "Ithril",
      "avatar": "https://www.gravatar.com/avatar/fe2334cb59663d7d45fdcb65e19cc89e?d=identicon\u0026s=64",
      "cl": "317240@main",
      "clUrl": "https://commits.webkit.org/317240@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319305\n\nReviewed by Yijia Huang.\n\nTemporal dayOfYear currently returns the ISO ordinal day for every calendar.\nRead UCAL_DAY_OF_YEAR through CalendarICUBridge for non-ISO calendars and use\nthe existing proleptic Gregorian arithmetic path where required. This fixes\nPlainDate, PlainDateTime, and ZonedDateTime for non-ISO calendars.\n\nTest: JSTests/stress/temporal-non-iso-dayofyear.js\n\n* JSTests/stress/temporal-non-iso-dayofyear.js:\nAdded coverage for non-ISO calendar dayOfYear values and Gregorian arithmetic\nboundaries.\n\n* Source/JavaScriptCore/runtime/TemporalPlainDatePrototype.cpp:\n(JSC::temporalPlainDatePrototypeGetterDayOfYear):\n* Source/JavaScriptCore/runtime/TemporalPlainDateTimePrototype.cpp:\n(JSC::temporalPlainDateTimePrototypeGetterDayOfYear):\n* Source/JavaScriptCore/runtime/TemporalZonedDateTimePrototype.cpp:\n(JSC::temporalZonedDateTimePrototypeGetterDayOfYear):\nUse CalendarICUBridge for non-ISO calendar dayOfYear values.\n\n* Source/JavaScriptCore/runtime/temporal/core/CalendarICUBridge.cpp:\n(JSC::TemporalCore::japaneseCalendarGregorianTransitionYear):\n(JSC::TemporalCore::calendarDayOfYear):\nAdd the day-of-year bridge and name the Japanese Gregorian transition year.\n\n* Source/JavaScriptCore/runtime/temporal/core/CalendarICUBridge.h:\n(JSC::TemporalCore::calendarDayOfYear):\nDeclare the bridge.\n\nCanonical link: https://commits.webkit.org/317240@main",
      "email": "ithril.laydec@gmail.com",
      "hash": "cfda643c04c033a07680a3afe4574cadb8f64451",
      "subject": "[JSC][Temporal] Fix non-ISO calendar dayOfYear"
    },
    "317241@main": {
      "author": "lilly",
      "avatar": "https://www.gravatar.com/avatar/d0533d52eeb271270df480f37629a407?d=identicon\u0026s=64",
      "cl": "317241@main",
      "clUrl": "https://commits.webkit.org/317241@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319395\nrdar://182224926\n\nReviewed by Simon Fraser.\n\nAdd two small geometry helpers to GeometryUtilities that will be used to help support corner-shape\n\nNew tests unnecessary for these helpers\n\n* Source/WebCore/platform/graphics/GeometryUtilities.cpp:\n(WebCore::linearInterpolation):\n(WebCore::signedDistanceToLine):\n* Source/WebCore/platform/graphics/GeometryUtilities.h:\n\nCanonical link: https://commits.webkit.org/317241@main",
      "email": "173393835+cupidsity@users.noreply.github.com",
      "hash": "20608175315e317e0b56a685cc738022ab9264c5",
      "subject": "[GeometryUtilities] Add signedDistanceToLine() and linearInterpolation() helpers"
    },
    "317242@main": {
      "author": "Nipun Shukla",
      "avatar": "https://www.gravatar.com/avatar/9a13a8579ea8334d608108813da41a71?d=identicon\u0026s=64",
      "cl": "317242@main",
      "clUrl": "https://commits.webkit.org/317242@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=318980\nrdar://181837153\n\nReviewed by Yusuke Suzuki.\n\nOn machines with lower P-core counts we may be thermally constrained\nor see contention for P-cores with the main WebContent process under\ncertain loads which do not benefit from that.\n\nThis is a mechanical change to increase JIT tier-up thresholds for\nDFG and FTL when we are on Macs which have \u003c= 2 P-cores, which should\nlead to performance improvement.\n\nThere is no behavioral change associated with this commit.\n\n* Source/JavaScriptCore/assembler/CPU.cpp:\n(JSC::hwNumberOfP0Cores):\n* Source/JavaScriptCore/runtime/Options.cpp:\n(JSC::overrideDefaults):\n* Source/JavaScriptCore/runtime/OptionsList.h:\n\nCanonical link: https://commits.webkit.org/317242@main",
      "email": "nipun_shukla@apple.com",
      "hash": "ebe71899e1702e2a6831137466308293324a2b33",
      "subject": "Modify JIT tier-up thresholds for Macs with lower P-core counts"
    },
    "317243@main": {
      "author": "lilly",
      "avatar": "https://www.gravatar.com/avatar/d0533d52eeb271270df480f37629a407?d=identicon\u0026s=64",
      "cl": "317243@main",
      "clUrl": "https://commits.webkit.org/317243@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319419\nrdar://182243334\n\nReviewed by Simon Fraser.\n\nbuildBevelCorners() uses local names that don't line up with the CSS Borders\nand Box Decorations Level 4 \"border-aligned corner clip-out path\" algorithm,\nmaking it hard to check the code against the spec. Also considering some variables\nrepresent the same thing in adjustCornerforInset so this change syncs them\n\nRename and restructure for clarity, with no behavior change:\n- inwardNormal -\u003e strokeDirection\n- innerStart / innerEnd -\u003e adjustedCornerStart / adjustedCornerEnd\n- Compute the intersection lines through an explicit midpoint controlPoint\n(midPoint(adjustedCornerStart, adjustedCornerEnd)) rather than the raw\nstart/end pair. The midpoint lies on the start-\u003eend line, so the intersection\nis identical; this just names the construct the way the spec does.\n\nNo functional change; this is a readability / spec-alignment cleanup. New tests\nare not necessary here\n\n* Source/WebCore/platform/graphics/CornerShapeUtilities.cpp:\n\nCanonical link: https://commits.webkit.org/317243@main",
      "email": "173393835+cupidsity@users.noreply.github.com",
      "hash": "92f6bcd1fd07c46ffc7bdfef2342768926615145",
      "subject": "corner-shape: Clean up buildBevelCorners to match spec terminology"
    },
    "317244@main": {
      "author": "Sam Weinig",
      "avatar": "https://www.gravatar.com/avatar/354b409240f9fb3357f498c547423d96?d=identicon\u0026s=64",
      "cl": "317244@main",
      "clUrl": "https://commits.webkit.org/317244@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319259\n\nReviewed by Darin Adler and Alan Baradlay.\n\nSwitches to using unzoomed length for font related cases.\n\nFor uses of deprecatedToStyleFromCSSValue() or when passing no\nconversion data it is fine a no-op to change to passing no zoom\nfactor explicitly.\n\nTo allow the unzoomed value to be accessed at computed value time\nduring animations, ComputedStyleProperties::setFontSize was fixed\nto ensure the usedZoom was maintained when setting the size.\n\n* Source/WebCore/css/parser/CSSPropertyParserConsumer+Font.cpp:\n* Source/WebCore/css/parser/CSSPropertyParserConsumer+Font.h:\n* Source/WebCore/editing/ApplyStyleCommand.cpp:\n* Source/WebCore/editing/EditingStyle.cpp:\n* Source/WebCore/editing/cocoa/NodeHTMLConverter.mm:\n* Source/WebCore/html/canvas/CanvasRenderingContext2DBase.cpp:\n* Source/WebCore/style/StyleBuilderCustom.h:\n* Source/WebCore/style/StyleExtractorCustom.h:\n* Source/WebCore/style/StyleResolveForFont.cpp:\n* Source/WebCore/style/computed/StyleComputedStyleProperties+SettersCustomInlines.h:\n\nCanonical link: https://commits.webkit.org/317244@main",
      "email": "sam@webkit.org",
      "hash": "3231b507df562bd14ce7499b9b3c151136936bbe",
      "subject": "[EvaluationTimeZoom] Convert remaining font related uses to use unzoomed lengths"
    },
    "317245@main": {
      "author": "lilly",
      "avatar": "https://www.gravatar.com/avatar/d0533d52eeb271270df480f37629a407?d=identicon\u0026s=64",
      "cl": "317245@main",
      "clUrl": "https://commits.webkit.org/317245@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319421\nrdar://182245613\n\nReviewed by Simon Fraser.\n\nper the \"compute a contoured path\" algorithm in CSS Borders 4 (§3.9.4.2,\nadjustedRadius), the opposite-corner scale factor is only applied when a\ncorner has a positive inset (i.e. the inner contours). When both of a\ncorner's insets are zero, the outer contour adjustedRadius returns the\nradius unscaled. Since buildScaledCornerInputs() is also the code path\nfor the outer contour (addOuterCornerShapeToPath calls it with zero insets),\nscaling it unconditionally would shrink the outer border radius along with\nthe inner one, which is not what the spec specifies. Also update addOuterCornerShapeToPath()\nto build the outer contour directly with buildCornerInputs() instead of\nbuildScaledCornerInputs(), since with the early-out above the latter would\nonly compute and discard the scalefactor for the outer contour.\n\nNew tests are uneccesary for this change\n\n* Source/WebCore/rendering/BorderShape.cpp:\n(WebCore::buildScaledCornerInputs):\n(WebCore::addOuterCornerShapeToPath):\n\nCanonical link: https://commits.webkit.org/317245@main",
      "email": "173393835+cupidsity@users.noreply.github.com",
      "hash": "15dbc5a83d163fe4c3d7be4cdd2d3756a4133e18",
      "subject": "corner-shape: add early return for when there is no startInset or endInset"
    },
    "317246@main": {
      "author": "Yulun Wu",
      "avatar": "https://www.gravatar.com/avatar/9e34d6632f4d926cdf6fe8dce07f9cb7?d=identicon\u0026s=64",
      "cl": "317246@main",
      "clUrl": "https://commits.webkit.org/317246@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319428\n\u003crdar://182249529\u003e\n\nReviewed by Sammy Gill.\n\nGFC does not have subgrid support, we should add it as an avoidance reason.\n\n* LayoutTests/fast/css-grid-layout/subgrid-item-in-modern-grid-crash-expected.txt: Added.\n* LayoutTests/fast/css-grid-layout/subgrid-item-in-modern-grid-crash.html: Added.\n* Source/WebCore/layout/integration/grid/LayoutIntegrationGridCoverage.cpp:\n(WebCore::LayoutIntegration::gridLayoutAvoidanceReason):\n(WebCore::LayoutIntegration::printReason):\n\nCanonical link: https://commits.webkit.org/317246@main",
      "email": "yulun_wu@apple.com",
      "hash": "841dac3a342101bd8b1e0f03ee26bc60bfc12765",
      "subject": "[GFC] Add subgrid as avoidance reason."
    },
    "317247@main": {
      "author": "Nikolas Zimmermann",
      "avatar": "https://www.gravatar.com/avatar/83cbd636495835720e369cd589e3ca5e?d=identicon\u0026s=64",
      "cl": "317247@main",
      "clUrl": "https://commits.webkit.org/317247@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319472\n\nReviewed by Alejandro G. Castro.\n\nAdd SkiaDamageRegion, a frame's damage in device space, as the rects that a draw\nis split by and as the same rects in a region, for the draws that have to clip and\nfor culling. It is built once per frame, so no draw site rebuilds the region.\n\nTeach the tile and image draws to restrict themselves to it. planDraw() says how a\nsingle draw is narrowed: skipped when nothing touches the damage, split into one\ndraw per damage rect it touches, or, when the transform is rotated or skewed and\nrects cannot be narrowed, drawn under a device-space clip.\n\nSplitting is deliberately uncapped, the sub-quads share a paint, so Skia batches\nthem into one op, while a clip of more than one rect cannot be a scissor and so\ncosts a stencil buffer or a mask texture and breaks batching. A full-viewport layer\nis touched by every rect in the frame, so a cap would send exactly the biggest draws\ndown the expensive path - we want to avoid that.\n\nNothing passes a damage region yet, so every draw still paints in full.\n\n* Source/WebCore/platform/Skia.cmake:\n* Source/WebCore/platform/graphics/skia/SkiaBackingStore.cpp:\n(WebCore::SkiaBackingStore::paintToCanvas):\n(WebCore::SkiaBackingStore::appendImageSetEntries const):\n(WebCore::SkiaBackingStore::buildImageSet const): Deleted.\n* Source/WebCore/platform/graphics/skia/SkiaBackingStore.h:\n(WebCore::SkiaBackingStore::size const):\n* Source/WebCore/platform/graphics/skia/SkiaCompositingLayer.cpp:\n(WebCore::SkiaCompositingLayer::paintContents):\n(WebCore::SkiaCompositingLayer::collectFrameDamage):\n(WebCore::SkiaCompositingLayer::paintDebugIndicators):\n(WebCore::SkiaCompositingLayer::combinedTransform const):\n* Source/WebCore/platform/graphics/skia/SkiaCompositingLayer.h:\n* Source/WebCore/platform/graphics/skia/SkiaCompositingLayerImageSetBatch.cpp:\n(WebCore::SkiaCompositingLayerImageSetBatch::samplingOptionsForImage const):\n(WebCore::SkiaCompositingLayerImageSetBatch::matrixIndexForDraw):\n(WebCore::SkiaCompositingLayerImageSetBatch::addImageSet):\n(WebCore::SkiaCompositingLayerImageSetBatch::addImage):\n(WebCore::SkiaCompositingLayerImageSetBatch::flushIfNeeded):\n* Source/WebCore/platform/graphics/skia/SkiaCompositingLayerImageSetBatch.h:\n(WebCore::SkiaCompositingLayerImageSetBatch::planRestrictedDraw):\n* Source/WebCore/platform/graphics/skia/SkiaDamageRegion.h: Added.\n(WebCore::SkiaDamageRegion::create):\n(WebCore::SkiaDamageRegion::isEmpty const):\n(WebCore::SkiaDamageRegion::intersects const):\n(WebCore::SkiaDamageRegion::planDraw const):\n(WebCore::SkiaDamageRegion::forEachDamagedSubRect const):\n(WebCore::SkiaDamageRegion::clipCanvasInDeviceSpace const):\n\nCanonical link: https://commits.webkit.org/317247@main",
      "email": "nzimmermann@igalia.com",
      "hash": "174d4885ac9e5be47c68de22fbd7987f1e6ba21e",
      "subject": "[Damage][Skia] Teach the tile and image draws to split themselves by damage rect"
    },
    "317248@main": {
      "author": "Yusuke Suzuki",
      "avatar": "https://www.gravatar.com/avatar/3455d9081295e3e740c1ffa901217d9b?d=identicon\u0026s=64",
      "cl": "317248@main",
      "clUrl": "https://commits.webkit.org/317248@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319484\nrdar://182290046\n\nReviewed by Keith Miller.\n\nThreading MicrotaskCallCache* to more microtask functions like\nasync-generator related ones when we call callMicrotask.\n\n* Source/JavaScriptCore/runtime/JSMicrotask.cpp:\n(JSC::promiseResolveThenableJob):\n(JSC::asyncFromSyncIteratorContinueOrDone):\n(JSC::asyncGeneratorBodyCall):\n(JSC::asyncGeneratorUnwrapYieldResumption):\n(JSC::asyncGeneratorResume):\n(JSC::asyncGeneratorYield):\n(JSC::asyncGeneratorYieldAwaited):\n(JSC::asyncGeneratorDispatchSuspend):\n(JSC::asyncGeneratorBodyCallNormal):\n(JSC::asyncGeneratorBodyCallReturn):\n(JSC::promiseFinallyReactionJob):\n(JSC::asyncGeneratorDriverResume):\n(JSC::runInternalMicrotask):\n* Source/JavaScriptCore/runtime/JSMicrotask.h:\n\nCanonical link: https://commits.webkit.org/317248@main",
      "email": "ysuzuki@apple.com",
      "hash": "3ac446bb73b32adf32379c2aca7332c30db2aedc",
      "subject": "[JSC] Threading MicrotaskCallCache* in more microtask functions"
    },
    "317249@main": {
      "author": "Yusuke Suzuki",
      "avatar": "https://www.gravatar.com/avatar/3455d9081295e3e740c1ffa901217d9b?d=identicon\u0026s=64",
      "cl": "317249@main",
      "clUrl": "https://commits.webkit.org/317249@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319514\nrdar://182322728\n\nReviewed by Keith Miller.\n\nCLoop was not appropriately adding loadh / storeh handlings. This patch\nadds them.\n\n* Source/JavaScriptCore/llint/LowLevelInterpreter.cpp:\n(JSC::CLoopRegister::i16 const):\n(JSC::CLoopRegister::u16 const):\n* Source/JavaScriptCore/offlineasm/cloop.rb:\n\nCanonical link: https://commits.webkit.org/317249@main",
      "email": "ysuzuki@apple.com",
      "hash": "69ab6c6330aa30cd7c4be60840d926a5e763aaca",
      "subject": "[JSC] CLoop is broken with loadh / storeh"
    },
    "317250@main": {
      "author": "Sammy Gill",
      "avatar": "https://www.gravatar.com/avatar/715a3cfee5d85ee90ccfdaa2a4a7a5a3?d=identicon\u0026s=64",
      "cl": "317250@main",
      "clUrl": "https://commits.webkit.org/317250@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319406\nrdar://182233113\n\nReviewed by Alan Baradlay.\n\nIn the attached testcase we have a grid with a grid item that is\npositioned offscreen via a negative margin on the grid. The container\nthat the grid is in has overflow: hidden and is positioned inside the\nbody. The following diagram shows what this content is like:\n\n    (-150,-100)          (-50,-100)\n        +--------------------+\n        |  grid container    |   border box 100x50, pushed off the\n        |  + grid item       |   top-left with negative margins so it\n        +--------------------+   lies entirely outside the clip region\n    (-150,-50)           (-50,-50)\n        :                              (0,0)             (100,0)\n        :  green item content            +-----------------+\n        :  (250x200) overflows           |                 |\n        :  down/right into the           |  visible green  |\n        :  clip region .................|.  (fills box)    |\n        :                                |                 |\n        +--------------------------------+-----------------+\n    (-150,100)                        (0,100)           (100,100)\n                                     overflow:hidden container (100x100)\n\nCurrently the overflowing content does not get painted because in\nRenderBlock:paint we bail since the grid, which is the visual content,\nis clipped out. This is similar to the bug that we fixed in 316668@main\nbut in this case the overflowing content comes from the grid item's\ncontent and not the grid item itself.\n\nSo, to fix it we expand upon the fix we applied in the previous patch\nand also take into consideration any visual overflow that comes from\nwithin the grid item.\n\nCanonical link: https://commits.webkit.org/317250@main",
      "email": "sammy.gill@apple.com",
      "hash": "965adbc7f1f4db86a27a2e14de308abd2da61fdc",
      "subject": "[GFC] Grid item's overflowing content may not get painted"
    },
    "317251@main": {
      "author": "Ryosuke Niwa",
      "avatar": "https://www.gravatar.com/avatar/ed2c71248fe3ea15d9129f6e9a2a1e85?d=identicon\u0026s=64",
      "cl": "317251@main",
      "clUrl": "https://commits.webkit.org/317251@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319463\n\nReviewed by Chris Dumez.\n\nWhen a node, which uses the global registry of a document, gets adopted to another document that\nis associated with a scoped custom element registry (i.e. it didn't have a browsing context so\nthere was no global registry), it must use null registry after the adoption.\n\nTest: imported/w3c/web-platform-tests/custom-elements/registries/adoption.window.html\n\n* LayoutTests/imported/w3c/web-platform-tests/custom-elements/registries/adoption.window-expected.txt:\n* Source/WebCore/dom/Node.cpp:\n(WebCore::Node::adoptCustomElementRegistryIntoScopedRegistryDocument): Added.\n(WebCore::Node::moveNodeToNewDocumentFastCase):\n(WebCore::Node::moveNodeToNewDocumentSlowCase):\n* Source/WebCore/dom/Node.h:\n\nCanonical link: https://commits.webkit.org/317251@main",
      "email": "rniwa@webkit.org",
      "hash": "3fa5dd557fcbe80731eea7cf7d65b23ff1e5c4f8",
      "subject": "Some tests in custom-elements/registries/adoption.window.html fail"
    },
    "317252@main": {
      "author": "Ryosuke Niwa",
      "avatar": "https://www.gravatar.com/avatar/ed2c71248fe3ea15d9129f6e9a2a1e85?d=identicon\u0026s=64",
      "cl": "317252@main",
      "clUrl": "https://commits.webkit.org/317252@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319462\n\nReviewed by Chris Dumez.\n\nThe bug was caused by the missing call to didAssociateWithDocument in CustomElementRegistry::initialize.\n\nTest: imported/w3c/web-platform-tests/custom-elements/registries/scoped-registry-initialize-upgrades.html\n\n* LayoutTests/imported/w3c/web-platform-tests/custom-elements/registries/scoped-registry-initialize-upgrades-expected.txt:\n* Source/WebCore/dom/CustomElementRegistry.cpp:\n(WebCore::CustomElementRegistry::initialize):\n\nCanonical link: https://commits.webkit.org/317252@main",
      "email": "rniwa@webkit.org",
      "hash": "4b5b7934b22c10c01a7e475e51162816476b3811",
      "subject": "CustomElementRegistry.prototype.initialize does not upgrade custom element in a declarative shadow root"
    },
    "317253@main": {
      "author": "Yusuke Suzuki",
      "avatar": "https://www.gravatar.com/avatar/3455d9081295e3e740c1ffa901217d9b?d=identicon\u0026s=64",
      "cl": "317253@main",
      "clUrl": "https://commits.webkit.org/317253@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319483\nrdar://182289152\n\nReviewed by Keith Miller.\n\nWe apply the same change in 316327@main to SlotVisitor::performIncrementOfDraining.\nLet's perform prefetching onto the next cell. We factor the pop + software prefetch\ninto MarkStackArray::popAndPrefetch so both draining loops share it.\n\n* Source/JavaScriptCore/heap/MarkStack.h:\n(JSC::MarkStackArray::popAndPrefetch):\n* Source/JavaScriptCore/heap/SlotVisitor.cpp:\n(JSC::SlotVisitor::drain):\n(JSC::SlotVisitor::performIncrementOfDraining):\n\nCanonical link: https://commits.webkit.org/317253@main",
      "email": "ysuzuki@apple.com",
      "hash": "6fddaa00b61499746a1ae20695da6841ed2c7911",
      "subject": "[JSC] Do prefetching in SlotVisitor::performIncrementOfDraining too"
    },
    "317255@main": {
      "author": "Yusuke Suzuki",
      "avatar": "https://www.gravatar.com/avatar/3455d9081295e3e740c1ffa901217d9b?d=identicon\u0026s=64",
      "cl": "317255@main",
      "clUrl": "https://commits.webkit.org/317255@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319477\nrdar://182284961\n\nReviewed by Keith Miller.\n\nThis patch rearrange YarrJIT registers so that we can have regT3.\n\n1. `initialStart` register is only used for dot-star-enclosure loop.\n   Let's not preserve one register for all-the-time. We save\n   initialStart in the *already* preserved stack frame. And then load it\n   before the loop of dot-star-enclosure.\n2. In ARM64, we simply assign x14 to regT3, which is unused caller-save\n   register.\n3. In x64, we assign r8 to regT3, which is caller-save register. Then we\n   instead use ebx for matchingContext register, because we would like\n   to make sure that all of regTX registers are caller-save registers in\n   YarrJIT to make prologue / epilogue handling simplified.\n\n* Source/JavaScriptCore/yarr/YarrJIT.cpp:\n* Source/JavaScriptCore/yarr/YarrJITRegisters.h:\n\nCanonical link: https://commits.webkit.org/317255@main",
      "email": "ysuzuki@apple.com",
      "hash": "e13280f56c44e96d8f923cc4828a31cb84ade68e",
      "subject": "[YARR] Rearrange YarrJIT registers to have regT3"
    },
    "317256@main": {
      "author": "Nikolas Zimmermann",
      "avatar": "https://www.gravatar.com/avatar/83cbd636495835720e369cd589e3ca5e?d=identicon\u0026s=64",
      "cl": "317256@main",
      "clUrl": "https://commits.webkit.org/317256@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319379\n\nReviewed by Alejandro G. Castro.\n\nThe Skia compositor collects the frame damage in the same walk that draws, so the\ndamage is only complete once everything has already been painted. A compositor that\npaints only what changed has to know the damage before it draws anything.\n\nSplit the walk in two: a damage pass walks the tree without drawing, into an\nSkNoDrawCanvas, and gathers the frame damage, then a paint pass draws. Both passes\nrun from a single paint(), which first applies the animations and computes the\ntransforms once, so the two passes see the same tree, and returns whether any\nanimation is still running. When paint() is given no frame damage it just draws.\n\nPaintContext says which pass is running by whether it carries a frame damage, and\nthe damage-collecting pass skips the work that only exists to composite a group:\nthe overlap-region splitting in paintWithOpacity() and paintWithBlendMode(), and\nthe intermediate surfaces, none of which change the rects it collects.\n\nThe debug indicators split the same way: the border is a content draw, so it\nmoves into the content stream where content above hides it and it shares the group's\nopacity, filter and mask. The repaint counter is a device-space overlay and stays\none, drawn after the layer's subtree.\n\n* Source/WebCore/platform/graphics/skia/SkiaCompositingLayer.cpp:\n(WebCore::SkiaCompositingLayer::paint):\n(WebCore::SkiaCompositingLayer::paintSelf):\n(WebCore::SkiaCompositingLayer::combinedTransform const):\n(WebCore::SkiaCompositingLayer::paintDebugBorder):\n(WebCore::SkiaCompositingLayer::paintRepaintCounter):\n(WebCore::SkiaCompositingLayer::paintWithIntermediateSurface):\n(WebCore::SkiaCompositingLayer::paintWithMaskAndBackdrop):\n(WebCore::SkiaCompositingLayer::paintWithFilterAndMask):\n(WebCore::SkiaCompositingLayer::recursivePaint):\n(WebCore::SkiaCompositingLayer::computeOverlapRegions):\n(WebCore::SkiaCompositingLayer::paintWithOpacity):\n(WebCore::SkiaCompositingLayer::paintWithBlendMode):\n(WebCore::SkiaCompositingLayer::paintDebugIndicators): Deleted.\n(WebCore::SkiaCompositingLayer::hasVisualContent const): Deleted.\n* Source/WebCore/platform/graphics/skia/SkiaCompositingLayer.h:\n* Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/ThreadedCompositor.cpp:\n(WebKit::ThreadedCompositor::paintToSkiaCanvas):\n\nCanonical link: https://commits.webkit.org/317256@main",
      "email": "nzimmermann@igalia.com",
      "hash": "271c923387563e1a51c21d2f4f1662d2c3af57b6",
      "subject": "[Damage][Skia] Split the compositing walk into a damage pass and a paint pass"
    },
    "317257@main": {
      "author": "Sammy Gill",
      "avatar": "https://www.gravatar.com/avatar/715a3cfee5d85ee90ccfdaa2a4a7a5a3?d=identicon\u0026s=64",
      "cl": "317257@main",
      "clUrl": "https://commits.webkit.org/317257@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319512\nrdar://182319810\n\nReviewed by Alan Baradlay.\n\nThe grid formatting context integration cannot produce a baseline for a\ngrid yet, so grid layout coverage already bails out of GFC for\ninline-grid, which needs to contribute a baseline to its parent's inline\nlayout.\n\nA grid is also asked for its baseline when it is itself an item whose\nresolved self-alignment is a baseline value (first or last). Extend the\ncoverage check to avoid GFC when the grid's resolved justify-self (inline\naxis) or align-self (block axis) is a baseline position.\n\nCanonical link: https://commits.webkit.org/317257@main",
      "email": "sammy.gill@apple.com",
      "hash": "956aa60e55335b75a3d3968936750ee20a35be8e",
      "subject": "[GFC][Integration] Grids cannot contribute baselines currently"
    },
    "317258@main": {
      "author": "Alan Baradlay",
      "avatar": "https://www.gravatar.com/avatar/788d66417db806c567552cfa1ae89f77?d=identicon\u0026s=64",
      "cl": "317258@main",
      "clUrl": "https://commits.webkit.org/317258@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=318604\n\nReviewed by Antti Koivisto.\n\nThe flex layout pipeline lived entirely inside RenderFlexibleBox. Move performFlexLayout and\nthe pipeline it drives into a dedicated FlexLayout class (rendering/RenderFlexLayout.{h,cpp}),\nmirroring the LFC Layout::FlexLayout that drives the flex formatting context, so the legacy\npipeline can converge on that shape.\n\nRenderFlexibleBox::layoutBlock still collects the flex items and handles the empty case, then\nhands the FlexLayoutItems and a FlexLayoutConstraints (the container's flow properties and fixed\nborder/padding, snapshotted from the formatting-context root) into\nFlexLayout::performFlexLayout(). FlexLayout runs the rest: lines / main-size / cross-size /\nalignment / placement, the flex-base and content-based-min sizing subgraph, margin trimming,\nauto-margin and stretch handling, and it owns the FlexLayoutItem / FlexLines / FlexSign types. It\nreaches back through the RenderFlexibleBox\u0026 for the container's still-live layout state and\ngeometry (as Layout::FlexLayout reaches through its formatting context) and reads the snapshotted\nproperties from the constraints.\n\nWhat stays on RenderFlexibleBox is what the rest of the engine reaches directly: the public API\nand virtuals (baselines, allowedLayoutOverflow, willStretchItem, isChildEligibleForMarginTrim),\nthe percentage-resolution query descendants call during their own layout\n(canUseFlexItemForPercentageResolution and its helpers), layoutBlock's own setup and teardown,\nthe shared layout-phase state, the flex-formatting-context fallback, the public scope guards, and\nthe cross-layout block-axis-size cache. FlexLayout does not read or write that cache directly:\neach item's previous value comes in on its FlexLayoutItem and the value computed this layout is\nreturned in FlexLayout::Result for RenderFlexibleBox to store. computeGap moves to FlexLayoutUtils\nsince InspectorOverlay uses it too, and canSetFlexItemContentLogicalHeight becomes a static member\nsince both sides use it.\n\nNo change in behavior: the moved bodies are unchanged except for reaching container state and\ngeometry through the back-reference and constraints.\n\n* Source/WebCore/Sources.txt:\n* Source/WebCore/WebCore.xcodeproj/project.pbxproj:\n* Source/WebCore/inspector/InspectorOverlay.cpp:\n* Source/WebCore/rendering/FlexLayoutUtils.cpp:\n* Source/WebCore/rendering/FlexLayoutUtils.h:\n* Source/WebCore/rendering/RenderFlexLayout.cpp: Added.\n* Source/WebCore/rendering/RenderFlexLayout.h: Added.\n* Source/WebCore/rendering/RenderFlexibleBox.cpp:\n* Source/WebCore/rendering/RenderFlexibleBox.h:\n\nCanonical link: https://commits.webkit.org/317258@main",
      "email": "zalan@apple.com",
      "hash": "41c6e8317ac1b6caf2629383b0d382be714b2c5e",
      "subject": "[cleanup] Move RenderFlexibleBox::performFlexLayout into a new FlexLayout class"
    },
    "317259@main": {
      "author": "Joanne Pan",
      "avatar": "https://www.gravatar.com/avatar/5cbbf578426a0c98cb5c977ca2dd88fc?d=identicon\u0026s=64",
      "cl": "317259@main",
      "clUrl": "https://commits.webkit.org/317259@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319297\nrdar://182133406\n\nReviewed by Elika Etemad.\n\nrandom() and random-item() each had their own copy of the \u003crandom-key\u003e parsing\n(the auto / \u003cdashed-ident\u003e / element-scoped / fixed \u003cnumber\u003e sharing key). Per\nreview discussion on PR #68097, factor that logic into a single shared consumer\nso the two stay in sync.\n\nAdd CSSPropertyParserHelpers::consumeUnresolvedRandomKey(), which parses\n\u003crandom-key\u003e and returns a CSSCalc::Random::Sharing. A makeAuto callback supplies\nthe RandomSharingOptions::Auto key, so each caller keeps its own auto-index source.\nrandom() drops its private consumeOptionalRandomSharingFixed /\nconsumeOptionalRandomSharingOptions and calls the shared consumer (no behavior\nchange). random-item()'s randomItemBaseValue() drops its hand-rolled parsing, calls\nthe shared consumer, and resolves the parsed Sharing to a base value mirroring\nrandom()'s evaluation.\n\nSince random-item() now parses \u003crandom-key\u003e identically to random(), two\npreviously-divergent random-item() behaviors change to match random() and the\nspec: a bare `element-scoped` key is now a null-named \u003crandom-cache-key\u003e shared\nacross instances (rather than a per-instance auto key, so it no longer consumes a\nper-declaration auto index), and a \u003cdashed-ident\u003e as short as `--` is now accepted.\n\n* LayoutTests/imported/w3c/web-platform-tests/css/css-values/random-item-computed-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-values/random-item-computed.html:\n* Source/WebCore/Sources.txt:\n* Source/WebCore/WebCore.xcodeproj/project.pbxproj:\n* Source/WebCore/css/CSSRandomKeyParser.cpp: Added.\n(WebCore::CSSPropertyParserHelpers::consumeUnresolvedRandomKey):\n* Source/WebCore/css/CSSRandomKeyParser.h: Added.\n* Source/WebCore/css/calc/CSSCalcTree+Parser.cpp:\n(WebCore::CSSCalc::consumeOptionalRandomSharing):\n(WebCore::CSSCalc::consumeOptionalRandomSharingFixed): Deleted.\n(WebCore::CSSCalc::consumeOptionalRandomSharingOptions): Deleted.\n* Source/WebCore/style/StyleSubstitutionResolver.cpp:\n(WebCore::Style::SubstitutionResolver::randomItemBaseValue):\n\nCanonical link: https://commits.webkit.org/317259@main",
      "email": "jpan0917@gmail.com",
      "hash": "306d64a3ebf767b8467315d6b7eefa7383445c36",
      "subject": "[css-values-5 random-item()] Share \u003crandom-key\u003e parsing between random() and random-item()"
    },
    "317260@main": {
      "author": "Gerald Squelart",
      "avatar": "https://www.gravatar.com/avatar/894904f08d85651bf2a76868a4d2f1b3?d=identicon\u0026s=64",
      "cl": "317260@main",
      "clUrl": "https://commits.webkit.org/317260@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319455\nrdar://179479689\n\nReviewed by Mike Wyrzykowski.\n\nWhen a `maxWidth` is provided, and is smaller than the actual text width,\nthe text is shrunk by translating and scaling the context.\nHowever the computed `textRect` is not changed accordingly, so its\nintersection with the updated context clip is now incorrect, leading to\nsome texts not being drawn at all.\n\nThe fix here is never to optimize out `maxWidth`-shortened texts.\n\n* LayoutTests/fast/canvas/fillText-maxWidth-edge-clip-expected.html: Added.\n* LayoutTests/fast/canvas/fillText-maxWidth-edge-clip.html: Added.\n* Source/WebCore/html/canvas/CanvasRenderingContext2DBase.cpp:\n(WebCore::CanvasRenderingContext2DBase::drawTextUnchecked):\n\nCanonical link: https://commits.webkit.org/317260@main",
      "email": "g_squelart@apple.com",
      "hash": "4a04a6e57b9fec788b0b26fbfd601125906108c9",
      "subject": "Canvas drawTextUnchecked does't always draw when using maxWidth"
    },
    "317261@main": {
      "author": "Stephan Szabo",
      "avatar": "https://www.gravatar.com/avatar/6f85e18256dcd6717adc36241025cb51?d=identicon\u0026s=64",
      "cl": "317261@main",
      "clUrl": "https://commits.webkit.org/317261@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319517\n\nUnreviewed Build Fix\n\nMake mediaGestureReasonString not get compiled when\nRELEASE_LOG_DISABLE is set since it's only used from\nan ALWAYS_LOG.\n\n* Source/WebCore/html/MediaElementSession.cpp:\n\nCanonical link: https://commits.webkit.org/317261@main",
      "email": "stephan.szabo@sony.com",
      "hash": "41f12f469cebe52298bcaacf8ed967f588efaa7a",
      "subject": "REGRESSION(317159@main): Broken PlayStation-Build-EWS"
    },
    "317262@main": {
      "author": "Adrian Taylor",
      "avatar": "https://www.gravatar.com/avatar/d2acb8ad2e2670ff74ae0d65fb27014c?d=identicon\u0026s=64",
      "cl": "317262@main",
      "clUrl": "https://commits.webkit.org/317262@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=318675\nrdar://164560176\n\nReviewed by Ryosuke Niwa.\n\nPAL has some code to interface with platform Swift crypto APIs marked with a\ncrucial FIXME showing that a large number of 'unsafe' statements need to be\nremoved. Those statements genuinely show a risk that present or future mistakes\nin Swift or C++ code could have resulted in exploitable memory safety bugs.\n\nThis change adds suitable new primitives to allow buffers of bytes to be passed\nsafely across the C++/Swift boundary. It aims to do this with no extra\ncopying beyond the pre-existing state, so it should be performance-neutral.\n\nThis change adheres to the principle that we may need carefully human-reviewed\n`unsafe` statements within WTF, in order to allow higher layers of the stack\nto be entirely free of `unsafe`.\n\nSpecifically, we:\n- introduce a Swift initializer for WTF::Vector\u003cuint8_t\u003e which can\n  construct such a vector from any Swift ContiguousBytes\n- introduce a BorrowedBytes type which is a borrow of some C++ bytes\n  and in Swift complies with ContiguousBytes, thus can be passed to\n  the crypto APIs as-is. This new type achieves memory safety by\n  communicating with a couple of different BorrowScope types in C++ which\n  mark the allowable lifetime of the use of the bytes. If the\n  borrow scope is destroyed while Swift may still want to use the bytes,\n  a clean runtime crash will occur rather than an exploitable bug.\n- adapt PAL to use these, removing all 'unsafe' statements from PAL's\n  Swift code.\n- add a test for BorrowedBytes.\n\nIf the bytes are being borrowed from a Vector, this mechanism interacts\nwith the existing CanBorrow mechanism, so this should guard against\nreallocations or resizes of the vector as well as destruction of the\nvector overall. This result required an additional change to WTF::Vector,\nraised as https://github.com/WebKit/WebKit/pull/68737.\n\nAt present, WTF cannot support Swift, for reasons explained in the following\nbugs. The WTF Swift code is therefore temporarily alongside the crypto\ncode in PAL in a file called WTFExtras.swift.\nhttps://bugs.webkit.org/show_bug.cgi?id=315629\nrdar://178003865\n\nTest: Tools/TestWebKitAPI/Tests/WTF/BorrowedBytes.cpp\n\n* Source/WTF/WTF.xcodeproj/project.pbxproj:\n* Source/WTF/wtf/BorrowedBytes.h: Added.\n(WTF::BorrowedBytes::size const):\n(WTF::BorrowedBytes::ref const):\n(WTF::BorrowedBytes::deref const):\n(WTF::BorrowedBytes::create):\n(WTF::BorrowedBytes::BorrowedBytes):\n(WTF::BorrowedBytes::revoke):\n(WTF::BorrowedBytesScopeBase::BorrowedBytesScopeBase):\n(WTF::BorrowedBytesScopeBase::~BorrowedBytesScopeBase):\n* Source/WTF/wtf/CMakeLists.txt:\n* Source/WTF/wtf/module.modulemap:\n* Source/WebCore/PAL/PAL.xcodeproj/project.pbxproj:\n* Source/WebCore/PAL/pal/CMakeLists.txt:\n* Source/WebCore/PAL/pal/crypto/CryptoAlgorithmAESGCMCocoa.cpp:\n(PAL::Crypto::encryptCryptoKitAESGCM):\n* Source/WebCore/PAL/pal/crypto/CryptoAlgorithmAESKWCocoaBridging.cpp:\n(PAL::Crypto::wrapKeyAESKWCryptoKit):\n(PAL::Crypto::unwrapKeyAESKWCryptoKit):\n* Source/WebCore/PAL/pal/crypto/CryptoAlgorithmEd25519CocoaBridging.cpp:\n(PAL::Crypto::signEd25519CryptoKit):\n(PAL::Crypto::verifyEd25519CryptoKit):\n* Source/WebCore/PAL/pal/crypto/CryptoAlgorithmHKDFCocoaBridging.cpp:\n(PAL::Crypto::deriveBitsHKDFCryptoKit):\n* Source/WebCore/PAL/pal/crypto/CryptoAlgorithmHMACCocoaBridging.cpp:\n(PAL::Crypto::signHMACCryptoKit):\n(PAL::Crypto::verifyHMACCryptoKit):\n* Source/WebCore/PAL/pal/crypto/CryptoAlgorithmX25519CocoaBridging.cpp:\n(PAL::Crypto::deriveBitsX25519CryptoKit):\n* Source/WebCore/PAL/pal/crypto/CryptoEDKeyBridging.cpp:\n(PAL::Crypto::EdKey::privateToPublic):\n(PAL::Crypto::EdKey::privateToPublicKeyAgreement):\n(PAL::Crypto::EdKey::validateKeyPair):\n(PAL::Crypto::EdKey::validateKeyPairKeyAgreement):\n* Source/WebCore/PAL/pal/crypto/CryptoKit+UnsafeOverlays.swift: Removed.\n* Source/WebCore/PAL/pal/crypto/CryptoKitShim.swift:\n(Digest.update(_:)):\n(Digest.finalize):\n(Digest.sha1(_:)):\n(Digest.sha256(_:)):\n(Digest.sha384(_:)):\n(Digest.sha512(_:)):\n(ECKey.importX963Pub(_:curve:)):\n(ECKey.exportX963Pub):\n(ECKey.importCompressedPub(_:curve:)):\n(ECKey.importX963Private(_:curve:)):\n(ECKey.exportX963Private):\n(ECKey.deriveBits(_:)):\n(EdKey.generatePrivateKey(_:)):\n(EdKey.generatePrivateKeyKeyAgreement(_:)):\n(WTF.requireNonEmpty):\n(Curve25519.signature(_:)):\n(Curve25519.isValidSignature(_:data:)):\n(Curve25519.sharedSecretFromKeyAgreement(_:)):\n* Source/WebCore/PAL/pal/crypto/CryptoTypes.h:\n* Source/WebCore/PAL/pal/crypto/CryptoTypes.swift: Removed.\n* Source/WebCore/PAL/pal/crypto/PlatformECKey.cpp:\n(PAL::Crypto::PlatformECKey::sign const):\n(PAL::Crypto::PlatformECKey::doVerify const):\n(PAL::Crypto::PlatformECKey::importX963Pub):\n(PAL::Crypto::PlatformECKey::importX963Private):\n(PAL::Crypto::PlatformECKey::importCompressedPub):\n* Source/WebCore/PAL/pal/crypto/WTFExtras.swift: Added.\n(WTF.startIndex):\n(WTF.endIndex):\n(WTF.regions):\n(NonNullBytes.placeholder):\n(NonNullBytes.regions):\n(NonNullBytes.startIndex):\n(NonNullBytes.endIndex):\n(WTF.asNonNullBytes):\n(makeVectorUInt8(copying:)):\n* Source/WebCore/PAL/pal/crypto/commoncrypto/CryptoDigestCommonCrypto.cpp:\n(PAL::Crypto::CryptoDigest::addBytes):\n* Tools/TestWebKitAPI/CMakeLists.txt:\n* Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:\n* Tools/TestWebKitAPI/Tests/WTF/BorrowedBytes.cpp: Added.\n(TestWebKitAPI::TEST(WTF_BorrowedBytes, SpanScopeExposesBytes)):\n(TestWebKitAPI::TEST(WTF_BorrowedBytes, SpanScopeOverSubspan)):\n(TestWebKitAPI::TEST(WTF_BorrowedBytes, VectorScopeExposesBytes)):\n(TestWebKitAPI::TEST(WTF_BorrowedBytes, EmptySpan)):\n(TestWebKitAPI::TEST(WTF_BorrowedBytes, EmptyVector)):\n(TestWebKitAPI::TEST(WTF_BorrowedBytes, ScopeHoldsSoleReference)):\n(TestWebKitAPI::TEST(WTF_BorrowedBytes, NestedVectorScopes)):\n(TestWebKitAPI::TEST(WTF_BorrowedBytesDeathTest, MAYBE_ASSERT_ENABLED_DEATH_TEST(StashedViewCrashesAtScopeEnd)):\n\nCanonical link: https://commits.webkit.org/317262@main",
      "email": "adrian_taylor@apple.com",
      "hash": "a8541f866cac72ada61072660e9ca678c6295e94",
      "subject": "[Swift] Add BorrowedBytes and use from PAL"
    },
    "317263@main": {
      "author": "Jessica Lee",
      "avatar": "https://www.gravatar.com/avatar/fc717c99321d09f31fb9187418a8ffc5?d=identicon\u0026s=64",
      "cl": "317263@main",
      "clUrl": "https://commits.webkit.org/317263@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=305846\nrdar://168467484\n\nReviewed by Abrar Rahman Protyasha.\n\nIf a window comes into focus, the focus controller may dispatch excess events currently. We should only dispatch\nevents when a window either becomes both focused \u0026 active or when a window transition out of being both focused\nand active.\n\nThis commit relands 316735@main after fixing its consequent test flakiness in 317177@main.\n\nTest: Tools/TestWebKitAPI/Tests/WebKit/WKWebView/FocusWebView.mm\n\n* Source/WebCore/page/FocusController.cpp:\n(WebCore::FocusController::setFocusedInternal):\n(WebCore::FocusController::setActivityState):\n(WebCore::FocusController::setActiveInternal):\n* Source/WebCore/page/FocusController.h:\n* Tools/TestWebKitAPI/Tests/WebKit/WKWebView/FocusWebView.mm:\n(TestWebKitAPI::NoFocusEventsForBackgroundWindow)):\n(TestWebKitAPI::SingleBlurEventWhenNoLongerActiveAndFocused)):\n\nCanonical link: https://commits.webkit.org/317263@main",
      "email": "jlee53@apple.com",
      "hash": "deb08bf571fcc65fa3c3982fe59fff757ddd5043",
      "subject": "Blur and Focus events should only be dispatched if the window is both active and focused."
    },
    "317264@main": {
      "author": "Dominic Mazzoni",
      "avatar": "https://www.gravatar.com/avatar/f76643c44a7ee3be45148e66d97ed8e4?d=identicon\u0026s=64",
      "cl": "317264@main",
      "clUrl": "https://commits.webkit.org/317264@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319402\nrdar://182229891\n\nReviewed by Tyler Wilcock.\n\nA selection/caret change inside an in-process (local) iframe was\nposted only on the child frame's own web area, never on an ancestor's,\nso VoiceOver never associated it with the document and stayed\nsilent. After posting on the child frame, walk up the ancestor local\nframes and repost AXSelectedTextChanged on each one's web area\n(reusing the same userInfo), so the change reaches the main web area\nVoiceOver tracks.\n\nTest: accessibility/mac/local-frame-input-selection-notification.html\n\n* LayoutTests/accessibility/mac/local-frame-input-selection-notification-expected.txt: Added.\n* LayoutTests/accessibility/mac/local-frame-input-selection-notification.html: Added.\n* Source/WebCore/accessibility/mac/AXObjectCacheMac.mm:\n(WebCore::AXObjectCache::postTextSelectionChangePlatformNotification):\n\nCanonical link: https://commits.webkit.org/317264@main",
      "email": "dm_mazzoni@apple.com",
      "hash": "20461c7e4d144c9c1f4e229034df982eac5fea44",
      "subject": "AX: VoiceOver is silent during character navigation inside a local iframe"
    },
    "317265@main": {
      "author": "Adrian Perez de Castro",
      "avatar": "https://www.gravatar.com/avatar/30ffea8cf404586741a8f5f7110c0914?d=identicon\u0026s=64",
      "cl": "317265@main",
      "clUrl": "https://commits.webkit.org/317265@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=317831\n\nReviewed by Claudio Saavedra.\n\nA number of source files in WebKit include headers from the gio-unix-2.0\npackage, which CMake checks for; but the corresponding imported target\nwas missing from the list needed by the WebKit target. This may cause\nbuild failures in some configurations, and the issue has gone unnoticed\nbecause typical builds will end up anyway using the needed compiler\nflags due to gio-unix-2.0 being a transitive dependency of other modules\n(like GStreamer).\n\nFix suggested by Artur Wiebe (thanks!) in the bug report.\n\n* Source/WebKit/PlatformWPE.cmake: List the GLib::GioUnix imported\ntarget explicitly as a dependency of the WebKit target.\n\nCanonical link: https://commits.webkit.org/317265@main",
      "email": "aperez@igalia.com",
      "hash": "1616afe3c2c67afe01b579ba281981dc5bc6465d",
      "subject": "[WPE] PlatformWPE.cmake: missing GLib::GioUnix dependency on WebKit target breaks cross-compilation"
    },
    "317266@main": {
      "author": "Cameron McCormack",
      "avatar": "https://www.gravatar.com/avatar/b2bb1b369be938a743e50f595bfa0798?d=identicon\u0026s=64",
      "cl": "317266@main",
      "clUrl": "https://commits.webkit.org/317266@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319473\nrdar://problem/182283234\n\nReviewed by Simon Fraser.\n\ncss/css-view-transitions/scroller.html and scroller-child.html fail on\nwpt.fyi because the View Transitions snapshot does not include the\nscrollbars of the element with scrollable overflow.\n\nOn the wpt.fyi bots, Always On Scrollbars are used, which take layout\nspace and render scrollbars with two rounded rectangles (one for the\ntrack, one for the thumb). This is rendered in the UI process by getting\nAppKit to create layers for the scrollbar parts. During snapshotting,\nwe currently skip drawing scollbars if we know that they are being\nrendered by the UI process.\n\nAlso, the existing scrollbar drawing code, which uses drawKnobSlotInRect:\nand drawKnob:, results in a legacy appearance that does not match the\nAlways On Scrollbars appearance that AppKit creates via layers.\n\nSo, we change paintScrollbar to allow painting the scrollbar during\nsnapshotting, even when the UI process is handling scrollbar rendering,\nand add a new method to render the scrollbar via NSScrollerImp's layer-\ngenerating path.\n\nA custom NSScrollerImpDelegate is needed to:\n\n1. opt in to the layer-based rendering (through\n   shouldUseLayerPerPartForScrollerImp:)\n\n2. ensure that the ScrollableArea's appearance (dark or light)\n   propagates to the scrollbar\n\n3. work around an issue where the CALayers created by the NSScrollerImp\n   have corner radii set to NaN, which the window server interprets as\n   \"maximum radius given the size of the layer\", but which renderInContext:\n   does not seem to handle.\n\n(And WebScrollerImpDelegateMac, which is what the UI process uses, is tied\ntoo closely to a ScrollerMac, so cannot be directly used here.)\n\nThe rendering of the rounded corners of the scrollbars differs a little\nbetween the window server and renderInContext:, so the fuzz values for\nthe WPTs are increased.\n\nWhen these WPTs are run in WebKit's CI, they use mock scrollbars and\nhave async overflow scrolling disabled, which causes the test to pass\ndespite having this issue. So we add an equivalent (almost identical) test as\na regular layout test so that we can force mock scrollbars off and async\nscrolling on, which allows us to test that the Always On Scrollbar\nrendering in the viewport matches UI process rendered scrollbars.\n\n* LayoutTests/fast/scrolling/mac/view-transition-captures-composited-scrollbars-expected.html: Added.\n* LayoutTests/fast/scrolling/mac/view-transition-captures-composited-scrollbars.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/scroller-child.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/scroller.html:\n* Source/WebCore/platform/Scrollbar.h:\n(WebCore::Scrollbar::paintingIntoSnapshot const):\n(WebCore::Scrollbar::setPaintingIntoSnapshot):\n* Source/WebCore/platform/mac/ScrollbarThemeMac.mm:\n(-[WebSnapshotScrollerImpDelegate convertRectToBacking:]):\n(-[WebSnapshotScrollerImpDelegate convertRectFromBacking:]):\n(-[WebSnapshotScrollerImpDelegate shouldUseLayerPerPartForScrollerImp:]):\n(-[WebSnapshotScrollerImpDelegate effectiveAppearanceForScrollerImp:]):\n(-[WebSnapshotScrollerImpDelegate displayLayer:]):\n(-[WebSnapshotScrollerImpDelegate scrollerImp:animateKnobAlphaTo:duration:]):\n(-[WebSnapshotScrollerImpDelegate scrollerImp:animateTrackAlphaTo:duration:]):\n(-[WebSnapshotScrollerImpDelegate scrollerImp:overlayScrollerStateChangedTo:]):\n(WebCore::paintScrollbarUsingLayersForSnapshot):\n(WebCore::paintScrollbarUsingLegacyAppearance):\n(WebCore::paintScrollbar):\n(WebCore::ScrollbarThemeMac::paint):\n* Source/WebCore/rendering/RenderLayerScrollableArea.cpp:\n(WebCore::RenderLayerScrollableArea::paintOverflowControls):\n\nCanonical link: https://commits.webkit.org/317266@main",
      "email": "heycam@apple.com",
      "hash": "34b552ef6263497a52db44d5cb38278f0b776530",
      "subject": "Capture always-on scrollbars in View Transitions snapshots"
    },
    "317267@main": {
      "author": "Yusuke Suzuki",
      "avatar": "https://www.gravatar.com/avatar/3455d9081295e3e740c1ffa901217d9b?d=identicon\u0026s=64",
      "cl": "317267@main",
      "clUrl": "https://commits.webkit.org/317267@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319513\nrdar://182321958\n\nReviewed by Yijia Huang.\n\nOccasional test failure is happening in stress/async-iterator-fast-consumer-vs-generic-equivalence.js.dfg-eager.\nThis is because of missing ExitOK (so fixup phase will insert Checks\neven before the node is inserted). This patch fixes it.\n\n* Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:\n(JSC::DFG::ByteCodeParser::handleAsyncIteratorOpen):\n\nCanonical link: https://commits.webkit.org/317267@main",
      "email": "ysuzuki@apple.com",
      "hash": "793fd5461d93f00dd4b0738b10235a4213303b2a",
      "subject": "[JSC] async-generator fast consume should insert ExitOK"
    },
    "317268@main": {
      "author": "Sergey Rubanov",
      "avatar": "https://www.gravatar.com/avatar/d04164fa4e06ce85533085f24c766e17?d=identicon\u0026s=64",
      "cl": "317268@main",
      "clUrl": "https://commits.webkit.org/317268@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=316985\n\nReviewed by Yusuke Suzuki.\n\nStreamingCompiler records [globalObject, importObject?] as deferred-work\ndependencies; DeferredWorkTimer then appends the result promise. FullCompile\ncompletion always treated dependencies()[1] as the import object, so when\nimports were omitted that slot was the result promise. Script could then\nsatisfy import modules via Promise.prototype.\n\nOnly read an import object when dependencies include one (size \u003e 2);\notherwise pass nullptr into instantiateForStreaming.\n\n* Source/JavaScriptCore/wasm/WasmStreamingCompiler.cpp:\n(StreamingCompiler::didComplete):\n* JSTests/wasm/stress/streaming-instantiate-omitted-imports.js: Added.\nRegression for the bug PoC plus a positive path with real imports.\n\nCanonical link: https://commits.webkit.org/317268@main",
      "email": "chi187@gmail.com",
      "hash": "7f065ab4abdb982cbf80de24d8a7fde95d8306de",
      "subject": "WebAssembly streaming instantiation uses the result promise as the import object when imports are omitted"
    },
    "317269@main": {
      "author": "Abrar Rahman Protyasha",
      "avatar": "https://www.gravatar.com/avatar/fce5b3c4e9f3c59a4873e08c9f03c3b1?d=identicon\u0026s=64",
      "cl": "317269@main",
      "clUrl": "https://commits.webkit.org/317269@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319458\nrdar://176573401\n\nReviewed by Richard Robinson.\n\nIn this patch, we add a macOS-only WKUIDelegatePrivate interface that\nlets a client customize a WebKit-initiated drag while WebKit keeps\nownership of the NSDraggingSource, session, and gesture. This is the\nmacOS analogue for the UIDragSession-based delegate methods on iOS.\n\nWebViewImpl::startDrag() consults the draggingItem: method before\ncommitting to its own item, while dragSourceOperationMask and the\ndraggingSession* methods simply forward to the namesake delegate methods.\n\nWe also teach DragAndDropSimulator about these new delegate methods to\nget test coverage.\n\nTests: DragAndDropTests.DraggingItemsForDraggingItemReplacesDragData\n       DragAndDropTests.DraggingItemsForDraggingItemFallsBackWhenDelegateDeclines\n       DragAndDropTests.DraggingItemForDraggingItemUsesDragOriginLocation\n       DragAndDropTests.SourceOperationMaskDefaultsWithinApplication\n       DragAndDropTests.SourceOperationMaskOutsideApplicationDefaultsToCopy\n       DragAndDropTests.SourceOperationMaskDelegateOverride\n       DragAndDropTests.DraggingSessionLifecycleIsForwardedToDelegate\n       DragAndDropTests.DraggingItemsForDraggingItemClearsPromisedImageStateAfterSubstitution\n\n* Source/WTF/wtf/PlatformEnableCocoa.h:\n* Source/WebCore/page/DragController.cpp:\n(WebCore::DragController::startDrag):\n* Source/WebCore/platform/DragItem.h:\n* Source/WebKit/Shared/WebCoreArgumentCoders.serialization.in:\n* Source/WebKit/UIProcess/API/Cocoa/WKUIDelegatePrivate.h:\n* Source/WebKit/UIProcess/API/mac/WKView.mm:\n(-[WKView _web_draggingItemsForDraggingItem:atLocation:completionHandler:]):\n(-[WKView _web_dragSourceOperationMaskForDraggingContext:defaultMask:]):\n(-[WKView _web_draggingSession:willBeginAtPoint:]):\n(-[WKView _web_draggingSession:endedAtPoint:operation:]):\n* Source/WebKit/UIProcess/API/mac/WKWebViewMac.mm:\n(-[WKWebView draggingSession:willBeginAtPoint:]):\n(-[WKWebView _web_draggingItemsForDraggingItem:atLocation:completionHandler:]):\n(-[WKWebView _web_dragSourceOperationMaskForDraggingContext:defaultMask:]):\n(-[WKWebView _web_draggingSession:willBeginAtPoint:]):\n(-[WKWebView _web_draggingSession:endedAtPoint:operation:]):\n* Source/WebKit/UIProcess/mac/WebViewImpl.h:\n* Source/WebKit/UIProcess/mac/WebViewImpl.mm:\n(WebKit::WebViewImpl::dragSourceOperationMask):\n(WebKit::WebViewImpl::draggingSessionWillBegin):\n(WebKit::WebViewImpl::draggingSessionEnded):\n(WebKit::WebViewImpl::startDrag):\n* Tools/TestWebKitAPI/Helpers/cocoa/DragAndDropSimulator.h:\n* Tools/TestWebKitAPI/Helpers/mac/DragAndDropSimulatorMac.mm:\n(-[DragAndDropSimulator initWithWebViewFrame:configuration:]):\n(-[DragAndDropSimulator beginDraggingSessionInWebView:withItems:source:]):\n(-[DragAndDropSimulator draggingItemsForDraggingItemBlock]):\n(-[DragAndDropSimulator setDraggingItemsForDraggingItemBlock:]):\n(-[DragAndDropSimulator sourceOperationMaskBlock]):\n(-[DragAndDropSimulator setSourceOperationMaskBlock:]):\n(-[DragAndDropSimulator _webView:draggingItemsForDraggingItem:atLocation:completionHandler:]):\n(-[DragAndDropSimulator _webView:sourceOperationMaskForDraggingContext:defaultOperationMask:]):\n(-[DragAndDropSimulator _webView:draggingSession:willBeginAtPoint:]):\n(-[DragAndDropSimulator _webView:draggingSession:endedAtPoint:operation:]):\n* Tools/TestWebKitAPI/Tests/WebKit/WKWebView/mac/DragAndDropTestsMac.mm:\n(TEST(DragAndDropTests, DraggingItemsForDraggingItemReplacesDragData)):\n(TEST(DragAndDropTests, DraggingItemsForDraggingItemFallsBackWhenDelegateDeclines)):\n(TEST(DragAndDropTests, DraggingItemForDraggingItemUsesDragOriginLocation)):\n(TEST(DragAndDropTests, SourceOperationMaskDefaultsWithinApplication)):\n(TEST(DragAndDropTests, SourceOperationMaskOutsideApplicationDefaultsToCopy)):\n(TEST(DragAndDropTests, SourceOperationMaskDelegateOverride)):\n(TEST(DragAndDropTests, DraggingSessionLifecycleIsForwardedToDelegate)):\n(TEST(DragAndDropTests, DraggingItemsForDraggingItemClearsPromisedImageStateAfterSubstitution)):\n\nCanonical link: https://commits.webkit.org/317269@main",
      "email": "a_protyasha@apple.com",
      "hash": "39fbd5d520cf8db87522a3a24c94ce3561c3d1ea",
      "subject": "[macOS] Add a drag-source customization SPI to WKUIDelegatePrivate"
    },
    "317270@main": {
      "author": "Chris Gibb",
      "avatar": "https://www.gravatar.com/avatar/21e1ccb3ee5fcd9c69984a012e22b1db?d=identicon\u0026s=64",
      "cl": "317270@main",
      "clUrl": "https://commits.webkit.org/317270@main",
      "description": "rdar://182255207\nhttps://bugs.webkit.org/show_bug.cgi?id=319442\n\nReviewed by Elliott Williams.\n\nWhen changing base branchs on the same bot, clean WebKitBuild to prevent stale build artifacts from accumulating.\n\n* Tools/CISupport/clean-webkitbuild-if-base-changed: Added.\n(marker_path):\n(remove_webkit_build_directory):\n(main):\n* Tools/CISupport/ews-build/factories.py:\n(Factory.__init__):\n(MergeQueueFactoryBase.__init__):\n* Tools/CISupport/ews-build/factories_unittest.py:\n(TestExpectedBuildSteps):\n* Tools/CISupport/ews-build/steps.py:\n(CleanWebKitBuildIfBaseChanged):\n(CleanWebKitBuildIfBaseChanged.__init__):\n(CleanWebKitBuildIfBaseChanged.run):\n(CleanWebKitBuildIfBaseChanged.getResultSummary):\n* Tools/CISupport/ews-build/steps_unittest.py:\n\nCanonical link: https://commits.webkit.org/317270@main",
      "email": "cgibb2@apple.com",
      "hash": "c189120468e0a643cc583bd43d6fba49179ba441",
      "subject": "Clean Build When Base Branch Changes"
    },
    "317271@main": {
      "author": "Alan Baradlay",
      "avatar": "https://www.gravatar.com/avatar/788d66417db806c567552cfa1ae89f77?d=identicon\u0026s=64",
      "cl": "317271@main",
      "clUrl": "https://commits.webkit.org/317271@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=318610\n\nReviewed by Antti Koivisto.\n\nFlexLayout::ensureBlockAxisContentSizeForFlexItemIfNeeded laid a flex item out and measured it\nitself: the percentage-resolution-disabling scope, setChildNeedsLayout/layoutIfNeeded, and\nreading the item's logical height, border+padding, scrollbar and content height. That is\nrender-tree work the flex algorithm should not own; it should just ask the container for the\nvalue, the way the LFC flex formatting context asks its integration layer to lay a box out.\n\nMove it into RenderFlexibleBox::computeBlockAxisContentSizeForFlexItem, which owns the whole\noperation: reuse the size cached in a previous layout while the item stays clean, otherwise lay\nthe item out, measure its block-axis content size, cache it, and record that the item was laid\nout this iteration. FlexLayout::ensureBlockAxisContentSizeForFlexItemIfNeeded is left with just\nthe gate that decides whether the item's flex base needs this, plus the call.\n\nRenderFlexibleBox already owned the block-axis size cache (m_blockAxisSize); this also moves the\nlaid-out-this-iteration set (m_flexItemsWithCompletedLayout) onto it, reached from FlexLayout via\nmarkFlexItemLayoutComplete/hasFlexItemCompletedLayout, and drops the plumbing that had carried the\ncached size in on FlexLayoutItem and back out on FlexLayout::Result.\n\nNo change in behavior: the reuse check, layout, measurement, caching and marking are the same\noperations in the same order, moved to the render object.\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/317271@main",
      "email": "zalan@apple.com",
      "hash": "6d6a25129627252e2066737dbc60245174ade259",
      "subject": "[cleanup] FlexLayout should ask RenderFlexibleBox for a flex item's block-axis content size"
    },
    "e5adcca0c200": {
      "author": "Brandon Stewart",
      "avatar": "https://www.gravatar.com/avatar/45486b1975b15070ee6159b6630385e9?d=identicon\u0026s=64",
      "cl": "",
      "clUrl": "",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319301\nrdar://182135371\n\nReviewed by Elika Etemad.\n\nUpdate to the upstream css/css-grid WPT tests.\n\nUpstream commit: https://github.com/web-platform-tests/wpt/commit/f72776a299652fb30626f24533fccd4b3bb3550f\n\nTestExpectations updated for the new results:\n- Removed 8 stale expectations for tests that now pass (computed-grid-column,\nalignment/grid-gutters-explicit-placement, grid-lanes/animation/grid-template-columns-001,\nand 5 subgrid track-sizing reftests).\n- Added 50 [ ImageOnlyFailure ] for grid-lanes alignment/overflow and subgrid reftests.\n- Added 4 [ Crash ] for subgrid alignment/track-sizing tests.\n- Added 2 [ Failure ] for parsing/grid-auto-{columns,rows}-invalid.\n- Removed now-redundant [ Pass ] overrides in platform/glib/TestExpectations.\n\n* LayoutTests/TestExpectations:\n* LayoutTests/imported/w3c/resources/resource-files.json:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/abspos/positioned-grid-descendant-containing-block-005-expected.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/abspos/positioned-grid-descendant-containing-block-011-expected.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/abspos/positioned-grid-descendant-containing-block-014-expected.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/abspos/positioned-grid-descendant-containing-block-015-expected.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/abspos/positioned-grid-descendant-containing-block-016-expected.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/abspos/support/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/abspos/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/alignment/references/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/alignment/self-baseline/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/alignment/support/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/alignment/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/animation/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/chrome-521184744-crash.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-definition/support/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-definition/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-items/grid-item-min-height-overrides-fixed-height-001-expected.xht: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-items/grid-item-min-width-overrides-fixed-width-001-expected.xht: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-items/support/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-items/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/abspos/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/alignment/column-align-items-008-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/alignment/column-align-items-008-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/alignment/column-align-items-008.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/alignment/column-align-items-009-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/alignment/column-align-items-009-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/alignment/column-align-items-009.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/alignment/column-align-items-010-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/alignment/column-align-items-010-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/alignment/column-align-items-010.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/alignment/column-align-items-011-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/alignment/column-align-items-011-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/alignment/column-align-items-011.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/alignment/column-align-items-012-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/alignment/column-align-items-012-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/alignment/column-align-items-012.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/alignment/column-align-items-013-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/alignment/column-align-items-013-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/alignment/column-align-items-013.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/alignment/column-align-items-014-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/alignment/column-align-items-014-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/alignment/column-align-items-014.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/alignment/column-align-items-015-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/alignment/column-align-items-015-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/alignment/column-align-items-015.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/alignment/column-align-items-016-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/alignment/column-align-items-016.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/alignment/column-fill-reverse-align-content-001-expected.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/alignment/column-fill-reverse-align-content-001-ref.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/alignment/column-fill-reverse-align-content-002-expected.html: Copied from LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/alignment/column-fill-reverse-align-content-001-ref.html.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/alignment/column-fill-reverse-align-content-002.html: Copied from LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/alignment/row-fill-reverse-justify-content-001.html.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/alignment/column-fill-reverse-align-content-safe-001-expected.html: Copied from LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/alignment/column-fill-reverse-align-content-001-ref.html.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/alignment/column-fill-reverse-align-content-safe-001-ref.html: Copied from LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/alignment/column-fill-reverse-align-content-001-ref.html.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/alignment/column-fill-reverse-align-content-safe-001.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/alignment/row-fill-reverse-justify-content-001-expected.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/alignment/row-fill-reverse-justify-content-001-ref.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/alignment/row-fill-reverse-justify-content-001.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/alignment/row-fill-reverse-justify-content-002-expected.html: Copied from LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/alignment/row-fill-reverse-justify-content-001-expected.html.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/alignment/row-fill-reverse-justify-content-002.html: Copied from LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/alignment/row-fill-reverse-justify-content-001.html.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/alignment/row-fill-reverse-justify-content-indefinite-size-001-expected.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/alignment/row-fill-reverse-justify-content-indefinite-size-001-ref.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/alignment/row-fill-reverse-justify-content-indefinite-size-001.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/alignment/row-fill-reverse-justify-content-indefinite-size-002-expected.html: Copied from LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/alignment/row-fill-reverse-justify-content-indefinite-size-001-expected.html.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/alignment/row-fill-reverse-justify-content-indefinite-size-002.html: Copied from LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/alignment/row-fill-reverse-justify-content-indefinite-size-001.html.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/alignment/row-fill-reverse-justify-content-safe-001-expected.html: Copied from LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/alignment/column-fill-reverse-align-content-001-ref.html.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/alignment/row-fill-reverse-justify-content-safe-001-ref.html: Copied from LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/alignment/column-fill-reverse-align-content-001-ref.html.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/alignment/row-fill-reverse-justify-content-safe-001.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/alignment/row-justify-items-007-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/alignment/row-justify-items-007-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/alignment/row-justify-items-007.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/alignment/row-justify-items-008-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/alignment/row-justify-items-008-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/alignment/row-justify-items-008.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/alignment/row-justify-items-009-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/alignment/row-justify-items-009-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/alignment/row-justify-items-009.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/alignment/row-justify-items-010-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/alignment/row-justify-items-010-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/alignment/row-justify-items-010.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/alignment/row-justify-items-011-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/alignment/row-justify-items-011-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/alignment/row-justify-items-011.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/alignment/row-justify-items-012-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/alignment/row-justify-items-012-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/alignment/row-justify-items-012.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/alignment/row-justify-items-013-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/alignment/row-justify-items-013-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/alignment/row-justify-items-013.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/alignment/row-justify-items-014-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/alignment/row-justify-items-014-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/alignment/row-justify-items-014.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/alignment/row-justify-items-015-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/alignment/row-justify-items-015.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/alignment/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/animation/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/baseline/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/fragmentation/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/gap/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/grid-placement/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/intrinsic-sizing/support/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/intrinsic-sizing/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/invalidation/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/item-placement/dense-packing/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/item-placement/flow-tolerance/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/item-placement/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/items/support/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/items/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/order/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/overflow/grid-lanes-overflowing-container-007-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/overflow/grid-lanes-overflowing-container-007.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/overflow/grid-lanes-overflowing-container-008-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/overflow/grid-lanes-overflowing-container-008.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/overflow/grid-lanes-overflowing-container-009-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/overflow/grid-lanes-overflowing-container-009.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/overflow/grid-lanes-overflowing-container-010-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/overflow/grid-lanes-overflowing-container-010.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/overflow/grid-lanes-overflowing-container-011-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/overflow/grid-lanes-overflowing-container-011-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/overflow/grid-lanes-overflowing-container-011.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/overflow/grid-lanes-overflowing-container-012-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/overflow/grid-lanes-overflowing-container-012-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/overflow/grid-lanes-overflowing-container-012.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/overflow/grid-lanes-overflowing-container-013-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/overflow/grid-lanes-overflowing-container-013-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/overflow/grid-lanes-overflowing-container-013.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/overflow/grid-lanes-overflowing-container-014-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/overflow/grid-lanes-overflowing-container-014-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/overflow/grid-lanes-overflowing-container-014.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/overflow/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/resources/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-lanes-subgridded-to-grid-lanes/track-sizing/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/alignment/column-subgrid-alignment-in-subgridded-axis-001-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/alignment/column-subgrid-alignment-in-subgridded-axis-001-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/alignment/column-subgrid-alignment-in-subgridded-axis-001.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/alignment/column-subgrid-alignment-in-subgridded-axis-002-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/alignment/column-subgrid-alignment-in-subgridded-axis-002-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/alignment/column-subgrid-alignment-in-subgridded-axis-002.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/alignment/column-subgrid-stretch-001-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/alignment/column-subgrid-stretch-001-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/alignment/column-subgrid-stretch-001.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/alignment/row-subgrid-alignment-in-subgridded-axis-001-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/alignment/row-subgrid-alignment-in-subgridded-axis-001.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/alignment/row-subgrid-alignment-in-subgridded-axis-002-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/alignment/row-subgrid-alignment-in-subgridded-axis-002-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/alignment/row-subgrid-alignment-in-subgridded-axis-002.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/alignment/row-subgrid-stretch-001-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/alignment/row-subgrid-stretch-001.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/alignment/w3c-import.log: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/column-item-percentage-width-001-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/column-item-percentage-width-001-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/column-item-percentage-width-001.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/column-scrollbar-gutter-001-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/column-scrollbar-gutter-001.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/column-scrollbar-gutter-002-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/column-scrollbar-gutter-002.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/column-subgrid-abs-pos-001-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/column-subgrid-abs-pos-001-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/column-subgrid-abs-pos-001.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/column-subgrid-abs-pos-002-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/column-subgrid-abs-pos-002-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/column-subgrid-abs-pos-002.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/column-subgrid-orthogonal-writing-mode-001-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/column-subgrid-orthogonal-writing-mode-001-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/column-subgrid-orthogonal-writing-mode-001.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/column-subgrid-orthogonal-writing-mode-002-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/column-subgrid-orthogonal-writing-mode-002-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/column-subgrid-orthogonal-writing-mode-002.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/column-subgrid-orthogonal-writing-mode-003-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/column-subgrid-orthogonal-writing-mode-003-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/column-subgrid-orthogonal-writing-mode-003.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/column-subgrid-orthogonal-writing-mode-004-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/column-subgrid-orthogonal-writing-mode-004.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/column-subgrid-placement-invalidation-001-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/column-subgrid-placement-invalidation-001.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/column-subgrid-scroller-padding-001-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/column-subgrid-scroller-padding-001-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/column-subgrid-scroller-padding-001.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/column-subgrid-writing-direction-001-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/column-subgrid-writing-direction-001-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/column-subgrid-writing-direction-001.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/column-subgrid-writing-direction-002-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/column-subgrid-writing-direction-002-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/column-subgrid-writing-direction-002.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/column-subgrid-writing-direction-003-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/column-subgrid-writing-direction-003.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/column/independent-formatting-context-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/column/independent-formatting-context-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/column/independent-formatting-context.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/column/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/dynamic-min-content-001-expected.xht: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/dynamic-min-content-001.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/dynamic-min-content-002-expected.xht: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/dynamic-min-content-002.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/dynamic-min-content-003-expected.xht: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/dynamic-min-content-003.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/dynamic-subgridded-item-height-expected.xht: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/dynamic-subgridded-item-height.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/gap/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/line-names/column-line-names-001-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/line-names/column-line-names-001-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/line-names/column-line-names-001.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/line-names/column-line-names-002-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/line-names/column-line-names-002-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/line-names/column-line-names-002.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/line-names/column-line-names-003-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/line-names/column-line-names-003.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/line-names/column-line-names-004-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/line-names/column-line-names-004-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/line-names/column-line-names-004.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/line-names/column-line-names-005-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/line-names/column-line-names-005-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/line-names/column-line-names-005.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/line-names/column-line-names-006-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/line-names/column-line-names-006-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/line-names/column-line-names-006.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/line-names/column-line-names-007-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/line-names/column-line-names-007-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/line-names/column-line-names-007.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/line-names/column-line-names-008-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/line-names/column-line-names-008-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/line-names/column-line-names-008.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/line-names/column-line-names-009-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/line-names/column-line-names-009-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/line-names/column-line-names-009.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/line-names/column-line-names-010-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/line-names/column-line-names-010-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/line-names/column-line-names-010.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/line-names/column-line-names-011-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/line-names/column-line-names-011-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/line-names/column-line-names-011.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/line-names/column-line-names-012-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/line-names/column-line-names-012-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/line-names/column-line-names-012.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/line-names/column-line-names-013-expected.xht: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/line-names/column-line-names-013.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/line-names/column-line-names-014-expected.xht: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/line-names/column-line-names-014.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/line-names/column-line-names-015-expected.xht: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/line-names/column-line-names-015.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/line-names/column-line-names-016-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/line-names/column-line-names-016-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/line-names/column-line-names-016.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/line-names/column-line-names-017-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/line-names/column-line-names-017-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/line-names/column-line-names-017.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/line-names/row-line-names-001-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/line-names/row-line-names-001-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/line-names/row-line-names-001.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/line-names/row-line-names-002-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/line-names/row-line-names-002-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/line-names/row-line-names-002.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/line-names/row-line-names-003-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/line-names/row-line-names-003.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/line-names/row-line-names-004-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/line-names/row-line-names-004-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/line-names/row-line-names-004.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/line-names/row-line-names-005-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/line-names/row-line-names-005-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/line-names/row-line-names-005.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/line-names/row-line-names-006-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/line-names/row-line-names-006-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/line-names/row-line-names-006.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/line-names/row-line-names-007-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/line-names/row-line-names-007-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/line-names/row-line-names-007.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/line-names/row-line-names-008-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/line-names/row-line-names-008-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/line-names/row-line-names-008.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/line-names/row-line-names-009-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/line-names/row-line-names-009-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/line-names/row-line-names-009.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/line-names/row-line-names-010-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/line-names/row-line-names-010-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/line-names/row-line-names-010.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/line-names/row-line-names-011-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/line-names/row-line-names-011-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/line-names/row-line-names-011.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/line-names/row-line-names-012-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/line-names/row-line-names-012-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/line-names/row-line-names-012.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/line-names/row-line-names-013-expected.xht: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/line-names/row-line-names-013.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/line-names/row-line-names-014-expected.xht: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/line-names/row-line-names-014.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/line-names/row-line-names-015-expected.xht: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/line-names/row-line-names-015.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/line-names/row-line-names-016-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/line-names/row-line-names-016-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/line-names/row-line-names-016.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/line-names/row-line-names-017-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/line-names/row-line-names-017-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/line-names/row-line-names-017.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/line-names/w3c-import.log: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/overflow-hidden-does-not-prohibit-subgrid-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/overflow-hidden-does-not-prohibit-subgrid.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/row-item-percentage-height-001-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/row-item-percentage-height-001-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/row-item-percentage-height-001.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/row-scrollbar-gutter-001-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/row-scrollbar-gutter-001-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/row-scrollbar-gutter-001.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/row-scrollbar-gutter-002-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/row-scrollbar-gutter-002-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/row-scrollbar-gutter-002.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/row-subgrid-abs-pos-001-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/row-subgrid-abs-pos-001-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/row-subgrid-abs-pos-001.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/row-subgrid-abs-pos-002-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/row-subgrid-abs-pos-002-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/row-subgrid-abs-pos-002.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/row-subgrid-orthogonal-writing-mode-001-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/row-subgrid-orthogonal-writing-mode-001-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/row-subgrid-orthogonal-writing-mode-001.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/row-subgrid-orthogonal-writing-mode-002-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/row-subgrid-orthogonal-writing-mode-002-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/row-subgrid-orthogonal-writing-mode-002.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/row-subgrid-orthogonal-writing-mode-003-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/row-subgrid-orthogonal-writing-mode-003-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/row-subgrid-orthogonal-writing-mode-003.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/row-subgrid-orthogonal-writing-mode-004-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/row-subgrid-orthogonal-writing-mode-004-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/row-subgrid-orthogonal-writing-mode-004.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/row-subgrid-placement-invalidation-001-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/row-subgrid-placement-invalidation-001.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/row-subgrid-scroller-padding-001-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/row-subgrid-scroller-padding-001-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/row-subgrid-scroller-padding-001.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/row/independent-formatting-context-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/row/independent-formatting-context-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/row/independent-formatting-context.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/row/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/sibling-nested-subgrids-overflow-hidden-contribution-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/sibling-nested-subgrids-overflow-hidden-contribution.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/subgrid-in-wrong-axis-with-atuo-repeat-crash.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/track-sizing/auto-track-sizing-001-expected.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/track-sizing/auto-track-sizing-001-ref.html: Copied from LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/track-sizing/auto-track-sizing-001.html.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/track-sizing/auto-track-sizing-001.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/track-sizing/column-auto-placed-subgrid-nested-subgrid-inherited-tracks-001-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/track-sizing/column-auto-placed-subgrid-nested-subgrid-inherited-tracks-001.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/track-sizing/column-auto-placed-subgrid-nested-subgrid-inherited-tracks-002-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/track-sizing/column-auto-placed-subgrid-nested-subgrid-inherited-tracks-002.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/track-sizing/column-auto-placed-subgrid-nested-subgrid-inherited-tracks-003-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/track-sizing/column-auto-placed-subgrid-nested-subgrid-inherited-tracks-003.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/track-sizing/column-subgrid-auto-fill-001-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/track-sizing/column-subgrid-auto-fill-001-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/track-sizing/column-subgrid-auto-fill-001.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/track-sizing/column-subgrid-auto-fill-002-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/track-sizing/column-subgrid-auto-fill-002-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/track-sizing/column-subgrid-auto-fill-002.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/track-sizing/column-subgrid-auto-fill-003-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/track-sizing/column-subgrid-auto-fill-003-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/track-sizing/column-subgrid-auto-fill-003.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/track-sizing/column-subgrid-auto-fill-004-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/track-sizing/column-subgrid-auto-fill-004-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/track-sizing/column-subgrid-auto-fill-004.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/track-sizing/column-subgrid-auto-fill-005-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/track-sizing/column-subgrid-auto-fill-005-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/track-sizing/column-subgrid-auto-fill-005.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/track-sizing/column-subgrid-auto-fill-006-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/track-sizing/column-subgrid-auto-fill-006.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/track-sizing/column-subgrid-auto-fill-007-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/track-sizing/column-subgrid-auto-fill-007-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/track-sizing/column-subgrid-auto-fill-007.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/track-sizing/column-subgrid-auto-fill-008-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/track-sizing/column-subgrid-auto-fill-008-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/track-sizing/column-subgrid-auto-fill-008.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/track-sizing/column-subgrid-auto-fit-001-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/track-sizing/column-subgrid-auto-fit-001-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/track-sizing/column-subgrid-auto-fit-001.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/track-sizing/column-subgrid-auto-fit-002-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/track-sizing/column-subgrid-auto-fit-002.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/track-sizing/column-subgrid-auto-fit-003-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/track-sizing/column-subgrid-auto-fit-003.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/track-sizing/column-subgrid-auto-repeat-auto-001-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/track-sizing/column-subgrid-auto-repeat-auto-001.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/track-sizing/column-subgrid-auto-repeat-auto-002-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/track-sizing/column-subgrid-auto-repeat-auto-002.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/track-sizing/column-subgrid-auto-repeat-auto-003-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/track-sizing/column-subgrid-auto-repeat-auto-003.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/track-sizing/column-subgrid-auto-repeat-auto-004-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/track-sizing/column-subgrid-auto-repeat-auto-004.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/track-sizing/column-subgrid-with-row-standalone-axis-size-006.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/track-sizing/column-subgrid-with-row-standalone-axis-size-007.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/track-sizing/column-subgrid-with-row-standalone-axis-size-008.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/track-sizing/column-subgrid-with-row-standalone-axis-size-009.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/track-sizing/row-auto-placed-subgrid-nested-subgrid-inherited-tracks-001-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/track-sizing/row-auto-placed-subgrid-nested-subgrid-inherited-tracks-001.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/track-sizing/row-auto-placed-subgrid-nested-subgrid-inherited-tracks-002-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/track-sizing/row-auto-placed-subgrid-nested-subgrid-inherited-tracks-002.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/track-sizing/row-auto-placed-subgrid-nested-subgrid-inherited-tracks-003-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/track-sizing/row-auto-placed-subgrid-nested-subgrid-inherited-tracks-003.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/track-sizing/row-subgrid-auto-fill-001-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/track-sizing/row-subgrid-auto-fill-001-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/track-sizing/row-subgrid-auto-fill-001.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/track-sizing/row-subgrid-auto-fill-002-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/track-sizing/row-subgrid-auto-fill-002-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/track-sizing/row-subgrid-auto-fill-002.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/track-sizing/row-subgrid-auto-fill-003-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/track-sizing/row-subgrid-auto-fill-003-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/track-sizing/row-subgrid-auto-fill-003.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/track-sizing/row-subgrid-auto-fill-004-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/track-sizing/row-subgrid-auto-fill-004-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/track-sizing/row-subgrid-auto-fill-004.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/track-sizing/row-subgrid-auto-fill-005-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/track-sizing/row-subgrid-auto-fill-005-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/track-sizing/row-subgrid-auto-fill-005.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/track-sizing/row-subgrid-auto-fill-006-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/track-sizing/row-subgrid-auto-fill-006.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/track-sizing/row-subgrid-auto-fill-007-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/track-sizing/row-subgrid-auto-fill-007-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/track-sizing/row-subgrid-auto-fill-007.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/track-sizing/row-subgrid-auto-fill-008-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/track-sizing/row-subgrid-auto-fill-008-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/track-sizing/row-subgrid-auto-fill-008.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/track-sizing/row-subgrid-auto-fit-001-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/track-sizing/row-subgrid-auto-fit-001-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/track-sizing/row-subgrid-auto-fit-001.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/track-sizing/row-subgrid-auto-fit-002-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/track-sizing/row-subgrid-auto-fit-002.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/track-sizing/row-subgrid-auto-fit-003-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/track-sizing/row-subgrid-auto-fit-003.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/track-sizing/row-subgrid-auto-repeat-auto-001-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-lanes/subgrid/grid-subgridded-to-grid-lanes/track-sizing/row-subgrid-auto-repeat-auto-001.html: Added.\n* …",
      "email": "brandonstewart@apple.com",
      "hash": "e5adcca0c2009c2034a5f8c890e80ebbb0b31a93",
      "subject": "[css-grid] Import css/css-grid WPT tests"
    }
  },
  "date": "2026-07-15",
  "days": 1,
  "generatedAt": "2026-07-15T22:06:50Z",
  "markdown": "## Highlights\n- **Rendering** Grid and flex work landed in a cluster: block-level `justify-self`, marker content, text decoration inset, and ongoing FlexLayout extraction all move layout closer to spec and make tricky pages render more predictably. [commit 317212@main](https://commits.webkit.org/317212@main) [commit 317211@main](https://commits.webkit.org/317211@main) [commit 317230@main](https://commits.webkit.org/317230@main) [commit 317258@main](https://commits.webkit.org/317258@main)\n- **Security** WebKit fixed a real use-after-free in sync IPC teardown and a 4 GB+ Base64 sizing bug that could undersize buffers on huge inputs. [commit 317220@main](https://commits.webkit.org/317220@main) [commit 317218@main](https://commits.webkit.org/317218@main)\n- **Privacy** Digital Credentials now re-checks user activation in the UI process, tightening enforcement around wallet flows instead of trusting renderer-side state alone. [commit 317228@main](https://commits.webkit.org/317228@main)\n- **Perf** Skia damage tracking was split into explicit damage and paint passes, with tiles and images able to split on damage rects for less unnecessary repaint work. [commit 317256@main](https://commits.webkit.org/317256@main) [commit 317247@main](https://commits.webkit.org/317247@main)\n- **A11y** VoiceOver character navigation inside local iframes speaks again, fixing a sharp accessibility regression in embedded content. [commit 317264@main](https://commits.webkit.org/317264@main)\n- **Web Platform** Custom elements got several fixes around declarative shadow roots, adoption, and mutation behavior, plus blur and focus dispatch is now gated on the window being both active and focused. [commit 317252@main](https://commits.webkit.org/317252@main) [commit 317251@main](https://commits.webkit.org/317251@main) [commit 317215@main](https://commits.webkit.org/317215@main) [commit 317263@main](https://commits.webkit.org/317263@main)\n- **V8** JavaScriptCore tightened Temporal correctness and JIT stability with fixes for non-ISO calendars, skipped-day duration rounding, RegExp miscompilation, and async generator lowering. [commit 317240@main](https://commits.webkit.org/317240@main) [commit 317234@main](https://commits.webkit.org/317234@main) [commit 317231@main](https://commits.webkit.org/317231@main) [commit 317267@main](https://commits.webkit.org/317267@main)\n- **UI** macOS scrolling and gestures got user-visible polish: better NSScrollView-style stretch behavior, fixes for grabbing scrollbars, and correct scrollbar handling in AppKit gesture paths. [commit 317207@main](https://commits.webkit.org/317207@main) [commit 317197@main](https://commits.webkit.org/317197@main) [commit 317204@main](https://commits.webkit.org/317204@main)\n- **Media** A thread-safety fix in AudioParam ref counting removes a crash when audio-thread teardown races destruction, and recoveryOS got a Safari media-player path fix that restores apple.com access. [commit 317232@main](https://commits.webkit.org/317232@main) [commit 317195@main](https://commits.webkit.org/317195@main)\n\n## What landed by area\n\n### Rendering and layout\n- **Rendering** Flex layout cleanup keeps moving core sizing logic into `FlexLayoutItem`, making the new layout path more self-contained. [commit 317229@main](https://commits.webkit.org/317229@main)\n- **Refactor** Flex layout now snapshots whether the main axis is inline on each item, reducing dependence on ambient state during layout. [commit 317235@main](https://commits.webkit.org/317235@main)\n- **Refactor** Flex layout now asks `RenderFlexibleBox` for block-axis content size, another step in separating algorithm code from renderer plumbing. [commit 317271@main](https://commits.webkit.org/317271@main)\n- **Rendering** Grid items with overflowing content paint correctly again. [commit 317250@main](https://commits.webkit.org/317250@main)\n- **Rendering** Grid avoids unsupported subgrid cases explicitly instead of stumbling into incorrect behavior. [commit 317246@main](https://commits.webkit.org/317246@main)\n- **Rendering** Grid baseline contribution gaps were addressed in the GFC integration path. [commit 317257@main](https://commits.webkit.org/317257@main)\n- **Rendering** Font-related evaluation-time zoom code now uses unzoomed lengths more consistently, reducing double-zoom style errors. [commit 317244@main](https://commits.webkit.org/317244@main)\n- **Rendering** `corner-shape` bails out early when there is no inset work to do. [commit 317245@main](https://commits.webkit.org/317245@main)\n- **Refactor** `corner-shape` internals were cleaned up to match spec terminology. [commit 317243@main](https://commits.webkit.org/317243@main)\n- **Rendering** Geometry helpers for signed distance to line and linear interpolation landed to support shape and corner math. [commit 317241@main](https://commits.webkit.org/317241@main)\n- **Rendering** SVG hit testing got a small hot-path cleanup by hoisting loop-invariant `strokeWidth`. [commit 317202@main](https://commits.webkit.org/317202@main)\n- **Refactor** `IsolatedSVGDocumentContext` was introduced, likely groundwork for safer isolated SVG processing. [commit 317199@main](https://commits.webkit.org/317199@main)\n\n### CSS and visual effects\n- **Web Platform** `white-space-trim: discard-inner` is now supported. [commit 317210@main](https://commits.webkit.org/317210@main)\n- **Web Platform** `::marker` can now use the `content` property. [commit 317211@main](https://commits.webkit.org/317211@main)\n- **Web Platform** `justify-self` now works for block-level boxes. [commit 317212@main](https://commits.webkit.org/317212@main)\n- **Web Platform** `text-decoration-inset` is implemented. [commit 317230@main](https://commits.webkit.org/317230@main)\n- **Web Platform** `random-item()` now shares `\u003crandom-key\u003e` parsing with `random()`, reducing parser divergence. [commit 317259@main](https://commits.webkit.org/317259@main)\n- **Web Platform** `timeline-trigger-activation-range` shorthand parsing landed for animation triggers. [commit 317194@main](https://commits.webkit.org/317194@main)\n- **Web Platform** `interactive-widget: overlays-content` got implementation logic, improving virtual keyboard and viewport behavior for opted-in pages. [commit 317200@main](https://commits.webkit.org/317200@main)\n- **Rendering** View Transitions snapshots now capture always-on scrollbars instead of dropping them from transition imagery. [commit 317266@main](https://commits.webkit.org/317266@main)\n- **Rendering** CSS Scroll Snap re-snap now prefers the innermost aligned snap area per axis. [commit 317225@main](https://commits.webkit.org/317225@main)\n- **Perf** A CSSAnimation retention cycle causing unbounded memory growth was fixed. [commit 317227@main](https://commits.webkit.org/317227@main)\n- **Rendering** List marker regressions got fresh tests to lock behavior down. [commit 317216@main](https://commits.webkit.org/317216@main)\n- **Rendering** WebKit imported more CSS Grid WPT coverage. [commit e5adcca0c200](https://commits.webkit.org/e5adcca0c200)\n\n### DOM, events, and web APIs\n- **Web Platform** `blur` and `focus` only dispatch now when the window is both active and focused, matching expected browsing-context semantics. [commit 317263@main](https://commits.webkit.org/317263@main)\n- **Web Platform** `CustomElementRegistry.prototype.initialize` now upgrades custom elements inside declarative shadow roots. [commit 317252@main](https://commits.webkit.org/317252@main)\n- **Web Platform** Custom-element adoption tests were fixed, tightening registry behavior when nodes move across documents. [commit 317251@main](https://commits.webkit.org/317251@main)\n- **Web Platform** More custom-element mutation WPT failures were fixed. [commit 317215@main](https://commits.webkit.org/317215@main)\n- **Web Platform** `ResizeObserver` no longer crashes when the same element is observed multiple times. [commit 317224@main](https://commits.webkit.org/317224@main)\n- **Web Platform** Navigation API `wait-for-all` no longer uses a wrapper promise, fixing semantics around navigation completion. [commit 317203@main](https://commits.webkit.org/317203@main)\n- **UI** Session history traversal coalescing across processes was re-landed through a UIProcess queue, which should smooth multi-process `history.back()`, `forward()`, and `go(n)`. [commit 317239@main](https://commits.webkit.org/317239@main)\n- **Web Platform** WebAssembly streaming instantiation now uses the result promise as the import object when imports are omitted, matching the specified edge case. [commit 317268@main](https://commits.webkit.org/317268@main)\n\n### JavaScriptCore and WebAssembly\n- **V8** Async-generator fast consume now inserts `ExitOK`, fixing JSC pipeline correctness in optimized paths. [commit 317267@main](https://commits.webkit.org/317267@main)\n- **V8** YarrJIT register allocation was rearranged to make room for `regT3`. [commit 317255@main](https://commits.webkit.org/317255@main)\n- **Perf** `SlotVisitor::performIncrementOfDraining` now does prefetching too, which should help GC throughput on draining work. [commit 317253@main](https://commits.webkit.org/317253@main)\n- **V8** The CLoop backend was fixed for `loadh` and `storeh`. [commit 317249@main](https://commits.webkit.org/317249@main)\n- **Refactor** More microtask functions now thread `MicrotaskCallCache*`, continuing cleanup of the microtask call path. [commit 317248@main](https://commits.webkit.org/317248@main)\n- **Perf** JIT tier-up thresholds were tuned for Macs with fewer performance cores. [commit 317242@main](https://commits.webkit.org/317242@main)\n- **V8** Temporal fixed `dayOfYear` for non-ISO calendars. [commit 317240@main](https://commits.webkit.org/317240@main)\n- **V8** `Temporal.Duration` rounding no longer divides by zero when a time zone transition skips an entire day. [commit 317234@main](https://commits.webkit.org/317234@main)\n- **V8** DFG strength reduction no longer folds compiler-thread RegExp execution failure into a guaranteed no-match. [commit 317231@main](https://commits.webkit.org/317231@main)\n- **V8** Temporal `Intl.Era` gained `useIntlEraMonthcode` and a narrower `AvailableCalendars` set. [commit 317214@main](https://commits.webkit.org/317214@main)\n- **Perf** Temporal pattern generation in `Intl.DateTimeFormat` now uses `IntlCache`. [commit 317208@main](https://commits.webkit.org/317208@main)\n\n### Media, graphics, and canvas\n- **Media** `CanvasRenderingContext` text drawing now reliably paints when `maxWidth` is used. [commit 317260@main](https://commits.webkit.org/317260@main)\n- **Perf** Skia compositing now separates damage computation from painting. [commit 317256@main](https://commits.webkit.org/317256@main)\n- **Perf** Tile and image draws can now split themselves by damage rect, reducing overpaint. [commit 317247@main](https://commits.webkit.org/317247@main)\n- **Media** AudioParam ref counting is now thread-safe when nodes are torn down on the audio thread. [commit 317232@main](https://commits.webkit.org/317232@main)\n- **Media** Safari on recoveryOS regains access to apple.com by fixing the `RemoteMediaPlayerManagerProxy_CreateMediaPlayer` path. [commit 317195@main](https://commits.webkit.org/317195@main)\n- **Perf** A USDKit-side change was adopted to avoid large memory allocations. [commit 317198@main](https://commits.webkit.org/317198@main)\n\n### Accessibility, privacy, and security\n- **A11y** VoiceOver character navigation inside a local iframe announces correctly again. [commit 317264@main](https://commits.webkit.org/317264@main)\n- **Privacy** ICE candidate stats now return `null` for `address` when the value is obfuscated. [commit 317238@main](https://commits.webkit.org/317238@main)\n- **Privacy** Digital Credentials now independently verifies user activation in the UI process. [commit 317228@main](https://commits.webkit.org/317228@main)\n- **Refactor** Digital Credentials fixed an `UncountedLambdaCapturesChecker` failure in `WebPageProxy`. [commit 317237@main](https://commits.webkit.org/317237@main)\n- **Web Platform** Digital Credentials gained WebKitTestRunner support for a virtual wallet. [commit 317196@main](https://commits.webkit.org/317196@main)\n- **Security** A use-after-free in `IPC::Connection::SyncMessageState` teardown was fixed. [commit 317220@main](https://commits.webkit.org/317220@main)\n- **Security** `calculateBase64EncodedSize()` no longer truncates huge input lengths to unsigned. [commit 317218@main](https://commits.webkit.org/317218@main)\n- **Build** ARM exception handling in `Signals.cpp` was fixed by correcting a template argument. [commit 317219@main](https://commits.webkit.org/317219@main)\n\n### UI, platform, and embedders\n- **UI** macOS gained a drag-source customization SPI on `WKUIDelegatePrivate`. [commit 317269@main](https://commits.webkit.org/317269@main)\n- **UI** Scroll stretch on macOS now behaves more like `NSScrollView`. [commit 317207@main](https://commits.webkit.org/317207@main)\n- **UI** Safari scrollbar grabbing was fixed in AppKit gesture handling. [commit 317197@main](https://commits.webkit.org/317197@main)\n- **UI** AppKit gesture logic for scrollbar handling got another follow-up update. [commit 317204@main](https://commits.webkit.org/317204@main)\n- **Mobile** A site compatibility fix restores swiping between videos on pr0gramm.com while playback is active. [commit 317201@main](https://commits.webkit.org/317201@main)\n- **Refactor** `WKJSSerializedNode` was renamed to `WKDOMNodeSnapshot`, which is much clearer API naming. [commit 317213@main](https://commits.webkit.org/317213@main)\n- **Swift** PAL gained `BorrowedBytes`, extending the Swift-side zero-copy or low-copy data plumbing. [commit 317262@main](https://commits.webkit.org/317262@main)\n\n### DevTools, build, and ports\n- **DevTools** Inspector network request handling avoids a redundant URL string copy. [commit 317223@main](https://commits.webkit.org/317223@main)\n- **DevTools** Timeline recording import now reports \"unsupported version\" as a HAR import error instead of a vague failure. [commit 317217@main](https://commits.webkit.org/317217@main)\n- **Build** Build products are now cleaned when the base branch changes. [commit 317270@main](https://commits.webkit.org/317270@main)\n- **Build** WPE cross-compilation was fixed by adding the missing `GLib::GioUnix` dependency to the WebKit target. [commit 317265@main](https://commits.webkit.org/317265@main)\n- **Build** GLib API test result naming now matches other ports. [commit 317233@main](https://commits.webkit.org/317233@main)\n- **Build** GLib upload now strips the port name from API test results before sending to resultsdb. [commit 317226@main](https://commits.webkit.org/317226@main)\n- **Build** `check-webkit-style` now runs the deprecated js-test include checker on LayoutTests. [commit 317222@main](https://commits.webkit.org/317222@main)\n- **Build** The benchmark runner now disables Chrome frame throttling using the correct feature name. [commit 317206@main](https://commits.webkit.org/317206@main)\n- **Build** GLib added expectations for newly passing `corner-shape` tests. [commit 317205@main](https://commits.webkit.org/317205@main)\n- **Build** A flaky Tahoe animation timeout was gardened. [commit 317236@main](https://commits.webkit.org/317236@main)\n- **Build** A PlayStation EWS regression was fixed quickly. [commit 317261@main](https://commits.webkit.org/317261@main)\n- **Build** Internal build errors under `UserContentControllerTests.swift` were fixed after the DOM snapshot rename. [commit 317221@main](https://commits.webkit.org/317221@main)\n\n## Reverts \u0026 Reapplies\n- **UI** Session history traversal coalescing across processes was re-landed after earlier trouble, so this feature is back with a revised UIProcess queue approach. [commit 317239@main](https://commits.webkit.org/317239@main)",
  "repo": "webkit",
  "repoDisplay": "WebKit",
  "rollGroups": [
    {
      "name": "Unreviewed",
      "count": 1
    }
  ],
  "since": "2026-07-15",
  "totals": {
    "commits": 78,
    "features": 77,
    "rolls": 1
  },
  "until": "2026-07-15"
}