{
  "commits": {
    "315633@main": {
      "author": "Alex Christensen",
      "avatar": "https://www.gravatar.com/avatar/b087c5dfcb1233e80cad9105fd5a1ac6?d=identicon\u0026s=64",
      "cl": "315633@main",
      "clUrl": "https://commits.webkit.org/315633@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=317605\nrdar://160964600\n\nReviewed by Andy Estes.\n\nWebFullScreenManager::requestExitFullScreen has some code that basically says\n\"if something has gone wrong, just close fullscreen\".  However, this code was\nhit during normal exiting of fullscreen driven by the UI process with site isolation\nenabled because topDocument was null because the main frame was a RemoteFrame.\nAdjust the condition to only hit if there is a top document and it has no fullscreen\nelement, instead of hitting if we haven't found a top document.\n\nTest: http/tests/site-isolation/exit-fullscreen-from-ui-process.html\n\n* LayoutTests/http/tests/site-isolation/exit-fullscreen-from-ui-process-expected.txt: Added.\n* LayoutTests/http/tests/site-isolation/exit-fullscreen-from-ui-process.html: Added.\n* LayoutTests/http/tests/site-isolation/resources/exit-fullscreen-from-ui-process.html: Added.\n* Source/WebKit/WebProcess/FullScreen/WebFullScreenManager.cpp:\n(WebKit::WebFullScreenManager::requestExitFullScreen):\n\nCanonical link: https://commits.webkit.org/315633@main",
      "email": "achristensen@apple.com",
      "hash": "2f229114ef117f39ba1445ed660aea69d7f7312f",
      "subject": "WebFullScreenManager::requestExitFullScreen should only call close if top document is present and has no fullscreen element"
    },
    "315634@main": {
      "author": "Josh Hernandez",
      "avatar": "https://www.gravatar.com/avatar/e268e9ba8d96006649c1745a48db2f73?d=identicon\u0026s=64",
      "cl": "315634@main",
      "clUrl": "https://commits.webkit.org/315634@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=317049\nrdar://179530437\n\nReviewed by Eric Carlson.\n\nIt adds Document::findCueMatches, which iterates the document's connected media elements, and for each showing subtitles, captions, or descriptions track matches the target string against every VTTCue's plain text, returning a CueMatch (the media element and the cue's start time) for each hit. Results are ordered by media element in composed-tree order, then by cue start time within each element. Cues whose start time is at or beyond the media's duration are skipped, and tracks that are not currently showing, or whose kind is chapters or metadata, are ignored.\u2028\u2028Page::findCueMatches is a thin walker that visits frames in document order, mirroring Page::findTextMatches, and aggregates each document's results. Searching one document at a time keeps cue ordering consistent with DOM text matches and avoids comparing media elements across documents.\u2028\u2028To support matching, VTTCue::plainText is added to expose a cue's flattened, markup-stripped text, so searches run against the rendered words rather than the raw WebVTT payload.\u2028\u2028Searching is currently limited to showing tracks, and this scope is subject to change as the feature evolves.\u2028\u2028This does not yet alter any find UI. The search is exposed to tests via internals.findCueMatches, and wiring cue matches into the find result list and seeking the video on navigation will follow in a later patch.\u2028\u2028A new layout test, media/track/text-track-find.html, loads a hundred-cue WebVTT track on a video and verifies that matching cues are returned with the correct timestamps, that cues past the media duration are excluded, and that a query with no matches returns nothing.\n\nTest: media/track/text-track-find.html\n\n* LayoutTests/media/track/text-track-find-expected.txt: Added.\n* LayoutTests/media/track/text-track-find.html: Added.\n* Source/WebCore/WebCore.xcodeproj/project.pbxproj:\n* Source/WebCore/dom/Document.cpp:\n(WebCore::Document::findCueMatches):\n* Source/WebCore/dom/Document.h:\n* Source/WebCore/page/CueMatch.h: Added.\n* Source/WebCore/page/Page.cpp:\n(WebCore::Page::findCueMatches):\n* Source/WebCore/page/Page.h:\n* Source/WebCore/testing/Internals.cpp:\n(WebCore::Internals::findCueMatches):\n* Source/WebCore/testing/Internals.h:\n* Source/WebCore/testing/Internals.idl:\n\nCanonical link: https://commits.webkit.org/315634@main",
      "email": "jhernandez89@apple.com",
      "hash": "893c5a47d056c499ee8fa876a8c4604b4aab564d",
      "subject": "Add support for searching text track cues for matching text"
    },
    "315635@main": {
      "author": "Mike Wyrzykowski",
      "avatar": "https://www.gravatar.com/avatar/4b1bc9e238714f95e22d5d2454c07066?d=identicon\u0026s=64",
      "cl": "315635@main",
      "clUrl": "https://commits.webkit.org/315635@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=316623\nradar://179066059\n\nReviewed by Ruthvik Konda.\n\nRealityKit engineers suggest we always use transparent backgrounds\n\n* LayoutTests/fast/webgpu/regression/repro_317110-expected.txt: Added.\n* LayoutTests/fast/webgpu/regression/repro_317110.html: Added.\n* Source/WebKit/GPUProcess/graphics/Model/MeshImpl.cpp:\n(WebKit::MeshImpl::setBackgroundColor): Deleted.\n* Source/WebKit/GPUProcess/graphics/Model/MeshImpl.h:\n* Source/WebKit/GPUProcess/graphics/Model/ModelRenderer.swift:\n(ImplicitFragmentInPlace.setFOV(_:)):\n(ImplicitFragmentInPlace.setBackgroundColor(_:)): Deleted.\n* Source/WebKit/GPUProcess/graphics/Model/ModelTypes.h:\n* Source/WebKit/GPUProcess/graphics/Model/RemoteMesh.cpp:\n(WebKit::RemoteMesh::setBackgroundColor): Deleted.\n* Source/WebKit/GPUProcess/graphics/Model/RemoteMesh.h:\n* Source/WebKit/GPUProcess/graphics/Model/RemoteMesh.messages.in:\n* Source/WebKit/GPUProcess/graphics/Model/USDModel.swift:\n(setBackgroundColor(_:)): Deleted.\n(WKBridgeReceiver.setBackgroundColor(_:)): Deleted.\n* Source/WebKit/GPUProcess/graphics/Model/WebKitMesh.h:\n* Source/WebKit/GPUProcess/graphics/Model/WebKitMesh.mm:\n(WebKit::WebMesh::setBackgroundColor): Deleted.\n* Source/WebKit/WebProcess/GPU/graphics/Model/RemoteMeshProxy.cpp:\n(WebKit::RemoteMeshProxy::setBackgroundColor): Deleted.\n* Source/WebKit/WebProcess/GPU/graphics/Model/RemoteMeshProxy.h:\n* Source/WebKit/WebProcess/Model/Mesh.h:\n(WebKit::Mesh::setFOV):\n(WebKit::Mesh::setBackgroundColor): Deleted.\n* Source/WebKit/WebProcess/Model/WebModelPlayer.h:\n* Source/WebKit/WebProcess/Model/WebModelPlayer.mm:\n(WebKit::WebModelPlayer::configureGraphicsLayer):\n(WebKit::WebModelPlayer::visibilityStateDidChange):\n\nCanonical link: https://commits.webkit.org/315635@main",
      "email": "mwyrzykowski@apple.com",
      "hash": "b3e6f0abd119aee7b4b2579434f9dfefa518b523",
      "subject": "RealityKit engineers suggest we always use transparent backgrounds"
    },
    "315636@main": {
      "author": "Phipson Lee",
      "avatar": "https://www.gravatar.com/avatar/8cbd3a1a983b7611a7c0492d86c4c610?d=identicon\u0026s=64",
      "cl": "315636@main",
      "clUrl": "https://commits.webkit.org/315636@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=317000\nrdar://179498356\n\nReviewed by Abrar Rahman Protyasha.\n\nThis PR separates the logic for the responsive live resize for _endLiveResize\nto make the code more readable and maintainable. The underlying logic should be\nthe same with no changes.\n\n* Source/WebKit/UIProcess/API/ios/WKWebViewIOS.mm:\n(-[WKWebView _endLiveResizeWithResponsiveRelayout]):\nAdd an internal function for the end live resize flow when we are responsively updating\nweb view layout\n\n(-[WKWebView _endLiveResizeDefault]):\nAdd an internal function for end live resize behavior in the general case without responsive\nrelayout\n\n(-[WKWebView _endLiveResize]):\nUpdate the function to call the above two internal functions rather than directly adding\nif-defs into the function.\n\nCanonical link: https://commits.webkit.org/315636@main",
      "email": "phipson_lee@apple.com",
      "hash": "18516999f3aaadfb069eb833799e73fe8719815c",
      "subject": "Refactor _endLiveResize to separate Responsive and Unresponsive Live-resize Updates"
    },
    "315637@main": {
      "author": "Vassili Bykov",
      "avatar": "https://www.gravatar.com/avatar/73ac31c69ff9a621b733e47253103b8a?d=identicon\u0026s=64",
      "cl": "315637@main",
      "clUrl": "https://commits.webkit.org/315637@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=317599\nrdar://180322283\n\nReviewed by Yusuke Suzuki.\n\nIn the existing code, Parser::parseSourceElements unconditionally creates a save point.\nA save point is only necessary if shouldCheckForUseStrict is true, and in the majority\nof cases (parsing statement blocks), that flag is false and the save point is unused.\nCreating a save point involves copying almost 100 bytes of parser and lexer state,\nso let's only do that when necessary.\n\nCovered by existing tests.\n\nCanonical link: https://commits.webkit.org/315637@main",
      "email": "v_bykov@apple.com",
      "hash": "fbc22bbf25c369ba0f730613b6956310bf2dabb3",
      "subject": "[JSC] Create a save point only if actually checking for \"use strict\""
    },
    "315638@main": {
      "author": "Andy Estes",
      "avatar": "https://www.gravatar.com/avatar/643f10f01b26fd94d03482a2013b2ea0?d=identicon\u0026s=64",
      "cl": "315638@main",
      "clUrl": "https://commits.webkit.org/315638@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=317600\nrdar://180306514\n\nReviewed by Jean-Yves Avenard.\n\nSoft-linked AVKit in WebCoreTestSupport to avoid a dependency cycle.\n\n* Source/WebCore/Configurations/WebCoreTestSupport.xcconfig:\n* Source/WebCore/testing/MockMediaDeviceRoute.mm:\n(WebCore::MockMediaDeviceRoute::setAudioOptions):\n* Source/WebCore/testing/cocoa/WebMockMediaDeviceRoute.mm:\n(-[WebMockMediaDeviceRoute seekToPosition:tolerance:]):\n\nCanonical link: https://commits.webkit.org/315638@main",
      "email": "aestes@apple.com",
      "hash": "a111b737af9b6c7007fc6b44a0650934339d03e2",
      "subject": "REGRESSION (315475@main): Linking AVKit in WebCoreTestSupport causes a dependency cycle"
    },
    "315639@main": {
      "author": "Lily Spiniolas",
      "avatar": "https://www.gravatar.com/avatar/b65cfeb51301399bd50e338bb2d7613e?d=identicon\u0026s=64",
      "cl": "315639@main",
      "clUrl": "https://commits.webkit.org/315639@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=316808\nrdar://179255418\n\nReviewed by Abrar Rahman Protyasha and Aditya Keerthi.\n\nUpstream support for `NSRefreshController` on macOS along with support\nfor the `refreshable` view modifier for both macOS and iOS in SwiftUI,\nand some refresh control tests.\n\nTest: Tools/TestWebKitAPI/Tests/WebKit/WKWebView/SampledPageTopColor.mm\n\n* Source/WTF/wtf/PlatformEnableCocoa.h:\n* Source/WTF/wtf/PlatformHave.h:\n* Source/WebCore/page/LocalFrameView.cpp:\n(WebCore::LocalFrameView::calculateExtendedBackgroundMode const):\n* Source/WebCore/page/Page.cpp:\n(WebCore::Page::setHasRefreshController):\n(WebCore::Page::setHasBannerViewOverlay): Deleted.\n* Source/WebCore/page/Page.h:\n(WebCore::Page::hasRefreshController const):\n(WebCore::Page::hasBannerViewOverlay const): Deleted.\n* Source/WebCore/page/scrolling/ScrollingStateFrameScrollingNode.cpp:\n(WebCore::ScrollingStateFrameScrollingNode::ScrollingStateFrameScrollingNode):\n(WebCore::ScrollingStateFrameScrollingNode::applicableProperties const):\n(WebCore::ScrollingStateFrameScrollingNode::setTopScrollStretchForRefreshController):\n(WebCore::ScrollingStateFrameScrollingNode::dumpProperties const):\n(WebCore::ScrollingStateFrameScrollingNode::setBannerViewHeight): Deleted.\n* Source/WebCore/page/scrolling/ScrollingStateFrameScrollingNode.h:\n* Source/WebCore/page/scrolling/ScrollingStateNode.h:\n* Source/WebCore/page/scrolling/ScrollingTree.h:\n(WebCore::ScrollingTree::topScrollStretchForRefreshController const):\n(WebCore::ScrollingTree::refreshControllerSnappingThreshold const):\n(WebCore::ScrollingTree::hasRefreshController const):\n(WebCore::ScrollingTree::bannerViewHeight const): Deleted.\n(WebCore::ScrollingTree::bannerViewMaximumHeight const): Deleted.\n(WebCore::ScrollingTree::hasBannerViewOverlay const): Deleted.\n* Source/WebCore/page/scrolling/ScrollingTreeFrameScrollingNode.cpp:\n(WebCore::ScrollingTreeFrameScrollingNode::commitStateBeforeChildren):\n(WebCore::ScrollingTreeFrameScrollingNode::dumpProperties const):\n* Source/WebCore/page/scrolling/ScrollingTreeFrameScrollingNode.h:\n* Source/WebCore/page/scrolling/mac/ScrollingTreeScrollingNodeDelegateMac.h:\n* Source/WebCore/page/scrolling/mac/ScrollingTreeScrollingNodeDelegateMac.mm:\n(WebCore::ScrollingTreeScrollingNodeDelegateMac::rubberBandTargetOffset const):\n(WebCore::ScrollingTreeScrollingNodeDelegateMac::refreshControllerSnappingThreshold const):\n(WebCore::ScrollingTreeScrollingNodeDelegateMac::hasRefreshController const):\n(WebCore::ScrollingTreeScrollingNodeDelegateMac::bannerViewMaximumHeight const): Deleted.\n(WebCore::ScrollingTreeScrollingNodeDelegateMac::hasBannerViewOverlay const): Deleted.\n* Source/WebCore/platform/ScrollingEffectsController.h:\n(WebCore::ScrollingEffectsControllerClient::hasRefreshController const):\n(WebCore::ScrollingEffectsControllerClient::refreshControllerSnappingThreshold const):\n(WebCore::ScrollingEffectsControllerClient::hasBannerViewOverlay const): Deleted.\n(WebCore::ScrollingEffectsControllerClient::bannerViewMaximumHeight const): Deleted.\n* Source/WebCore/platform/mac/ScrollAnimationRubberBand.h:\n* Source/WebCore/platform/mac/ScrollingEffectsController.mm:\n(WebCore::ScrollingEffectsController::deltaAdjustedForRefreshController):\n(WebCore::ScrollingEffectsController::shouldAttemptRubberbandingRestoration):\n(WebCore::ScrollingEffectsController::applyScrollDeltaWithStretching):\n(WebCore::ScrollingEffectsController::deltaWithAdditionalAdjustments): Deleted.\n* Source/WebCore/testing/Internals.cpp:\n(WebCore::Internals::resetToConsistentState):\n(WebCore::Internals::setPageHasRefreshControllerForTesting):\n(WebCore::Internals::setPageHasBannerViewOverlayForTesting): Deleted.\n* Source/WebCore/testing/Internals.h:\n* Source/WebCore/testing/Internals.idl:\n* Source/WebKit/Configurations/WebKit.xcconfig:\n* Source/WebKit/Configurations/_WebKit_SwiftUI.xcconfig:\n* Source/WebKit/DerivedSources.make:\n* Source/WebKit/Platform/spi/mac/AppKitSPI.h:\n* Source/WebKit/Shared/RemoteLayerTree/RemoteScrollingCoordinatorTransaction.serialization.in:\n* Source/WebKit/Shared/WebCoreArgumentCoders.serialization.in:\n* Source/WebKit/Shared/WebKit-Swift.h:\n* Source/WebKit/Shared/WebPageCreationParameters.h:\n* Source/WebKit/Shared/WebPageCreationParameters.serialization.in:\n* Source/WebKit/UIProcess/API/Cocoa/WKWebView+RefreshControl.swift: Added.\n(WKWebView.apply(_:animated:completion:)):\n(WKWebView.remove(_:animated:completion:)):\n(WKWebView.refreshControlVisibleHeight):\n(WKWebView.refreshControlHostBounds):\n* Source/WebKit/UIProcess/API/Cocoa/WKWebView.h:\n* Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm:\n(-[WKWebView setRefreshController:]):\n(-[WKWebView refreshController]):\n(-[WKWebView _updateRefreshControlAppearance]):\n(-[WKWebView _setPlatformRefreshControl:]):\n(-[WKWebView _platformRefreshControl]):\n(-[WKWebView _refreshControlVisibleHeight]):\n(-[WKWebView _setWebViewInformation:]): Deleted.\n(-[WKWebView _webViewInformation]): Deleted.\n(-[WKWebView _bannerViewOverlayHeight]): Deleted.\n* Source/WebKit/UIProcess/API/Cocoa/WKWebViewInternal.h:\n* Source/WebKit/UIProcess/API/Cocoa/WKWebViewPrivate.h:\n* Source/WebKit/UIProcess/PageClient.h:\n* Source/WebKit/UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.mm:\n(WebKit::RemoteLayerTreeDrawingAreaProxy::commitLayerTreeTransaction):\n* Source/WebKit/UIProcess/RemoteLayerTree/RemoteScrollingCoordinatorProxy.cpp:\n(WebKit::RemoteScrollingCoordinatorProxy::setTopScrollStretchForRefreshController):\n(WebKit::RemoteScrollingCoordinatorProxy::setRefreshControllerSnappingThreshold):\n(WebKit::RemoteScrollingCoordinatorProxy::setHasRefreshController):\n(WebKit::RemoteScrollingCoordinatorProxy::setBannerViewHeight): Deleted.\n(WebKit::RemoteScrollingCoordinatorProxy::setBannerViewMaximumHeight): Deleted.\n(WebKit::RemoteScrollingCoordinatorProxy::setHasBannerViewOverlay): Deleted.\n* Source/WebKit/UIProcess/RemoteLayerTree/RemoteScrollingCoordinatorProxy.h:\n* Source/WebKit/UIProcess/RemoteLayerTree/RemoteScrollingTree.h:\n(WebKit::RemoteScrollingTree::setTopScrollStretchForRefreshController):\n(WebKit::RemoteScrollingTree::setRefreshControllerSnappingThreshold):\n(WebKit::RemoteScrollingTree::setHasRefreshController):\n(WebKit::RemoteScrollingTree::setBannerViewHeight): Deleted.\n(WebKit::RemoteScrollingTree::setBannerViewMaximumHeight): Deleted.\n(WebKit::RemoteScrollingTree::setHasBannerViewOverlay): Deleted.\n* Source/WebKit/UIProcess/WebPageProxy.cpp:\n(WebKit::WebPageProxy::setHasRefreshController):\n(WebKit::WebPageProxy::creationParameters):\n(WebKit::WebPageProxy::setHasBannerViewOverlay): Deleted.\n* Source/WebKit/UIProcess/WebPageProxy.h:\n* Source/WebKit/UIProcess/WebPageProxyInternals.h:\n* Source/WebKit/UIProcess/mac/PageClientImplMac.h:\n* Source/WebKit/UIProcess/mac/PageClientImplMac.mm:\n* Source/WebKit/UIProcess/mac/WKAppKitGestureController.mm:\n(-[WKAppKitGestureController panGestureRecognized:]):\n* Source/WebKit/UIProcess/mac/WebViewImpl.h:\n* Source/WebKit/UIProcess/mac/WebViewImpl.mm:\n(WebKit::WebViewImpl::scrollingCoordinatorWasCreated):\n(WebKit::WebViewImpl::setFrameSize):\n(WebKit::WebViewImpl::setObscuredContentInsets):\n(WebKit::WebViewImpl::scrollWheel):\n(WebKit::WebViewImpl::setRefreshController):\n(WebKit::WebViewImpl::applyRefreshControllerHeight):\n(WebKit::WebViewImpl::topScrollStretchForRefreshController const):\n(WebKit::WebViewImpl::refreshControllerSnappingThreshold const):\n(WebKit::WebViewImpl::updateRefreshControllerFrame):\n(WebKit::WebViewImpl::topScrollStretchDidChange):\n(WebKit::WebViewImpl::updateRefreshControllerForWheelEvent):\n(WebKit::WebViewImpl::updateRefreshControllerForPanGesture):\n* Source/WebKit/WebKit.xcodeproj/project.pbxproj:\n* Source/WebKit/WebProcess/WebPage/WebPage.cpp:\n(WebKit::m_allowsImmersiveEnvironments):\n(WebKit::WebPage::setHasRefreshController):\n(WebKit::WebPage::setHasBannerViewOverlay): Deleted.\n* Source/WebKit/WebProcess/WebPage/WebPage.h:\n* Source/WebKit/WebProcess/WebPage/WebPage.messages.in:\n* Source/WebKit/_WebKit_SwiftUI/Implementation/WebViewRepresentable.swift:\n(WebViewRepresentable.updatePlatformView(_:context:)):\n(WebViewCoordinator.refreshAction):\n(WebViewCoordinator.update(_:configuration:context:)):\n(WebViewRepresentable.setupRefreshControl(_:)):\n(WebViewCoordinator.handleRefresh(_:)):\n(WebViewCoordinator.additionalInformation): Deleted.\n* Tools/TestWebKitAPI/Helpers/mac/AppKitSPI.h:\n* Tools/TestWebKitAPI/Tests/WebKit/WKWebView/SampledPageTopColor.mm:\n(TestWebKitAPI::createWebViewWithRefreshControl):\n(TestWebKitAPI::expectRefreshControlLightAppearance):\n(TestWebKitAPI::expectRefreshControlDarkAppearance):\n(TestWebKitAPI::waitForUnderPageBackgroundColorToChange):\n(TestWebKitAPI::testLightToDarkBackgroundColorChange):\n(TestWebKitAPI::TEST(SampledPageTopColor, RefreshControlAppearanceLightToDark)):\n(TestWebKitAPI::TEST(SampledPageTopColor, RefreshControlAppearanceLightToDarkIPad)):\n(TestWebKitAPI::testDarkToLightBackgroundColorChange):\n(TestWebKitAPI::TEST(SampledPageTopColor, RefreshControlAppearanceDarkToLight)):\n(TestWebKitAPI::TEST(SampledPageTopColor, RefreshControlAppearanceDarkToLightIPad)):\n(TestWebKitAPI::testLightToDarkPageNavigation):\n(TestWebKitAPI::TEST(SampledPageTopColor, RefreshControlAppearanceLightToDarkNavigation)):\n(TestWebKitAPI::TEST(SampledPageTopColor, RefreshControlAppearanceLightToDarkNavigationIPad)):\n(TestWebKitAPI::testDarkToLightPageNavigation):\n(TestWebKitAPI::TEST(SampledPageTopColor, RefreshControlAppearanceDarkToLightNavigation)):\n(TestWebKitAPI::TEST(SampledPageTopColor, RefreshControlAppearanceDarkToLightNavigationIPad)):\n(TestWebKitAPI::fixedHeaderPageHTML):\n(TestWebKitAPI::addObscuredTopContentInsets):\n(TestWebKitAPI::scrollPageDown):\n(TestWebKitAPI::testFixedHeaderWithInsetsLightHeader):\n(TestWebKitAPI::TEST(SampledPageTopColor, RefreshControlAppearanceWithInsetsLightHeader)):\n(TestWebKitAPI::TEST(SampledPageTopColor, RefreshControlAppearanceWithInsetsLightHeaderIPad)):\n(TestWebKitAPI::testFixedHeaderWithInsetsDarkHeader):\n(TestWebKitAPI::TEST(SampledPageTopColor, RefreshControlAppearanceWithInsetsDarkHeader)):\n(TestWebKitAPI::TEST(SampledPageTopColor, RefreshControlAppearanceWithInsetsDarkHeaderIPad)):\n(TestWebKitAPI::testFixedHeaderWithoutInsetsLightHeader):\n(TestWebKitAPI::TEST(SampledPageTopColor, RefreshControlAppearanceWithoutInsetsLightHeader)):\n(TestWebKitAPI::TEST(SampledPageTopColor, RefreshControlAppearanceWithoutInsetsLightHeaderIPad)):\n(TestWebKitAPI::testFixedHeaderWithoutInsetsDarkHeader):\n(TestWebKitAPI::TEST(SampledPageTopColor, RefreshControlAppearanceWithoutInsetsDarkHeader)):\n(TestWebKitAPI::TEST(SampledPageTopColor, RefreshControlAppearanceWithoutInsetsDarkHeaderIPad)):\n(TestWebKitAPI::testScrollViewBackgroundColorOverride):\n(TestWebKitAPI::TEST(SampledPageTopColor, RefreshControlAppearanceScrollViewBackgroundColor)):\n(TestWebKitAPI::TEST(SampledPageTopColor, RefreshControlAppearanceScrollViewBackgroundColorIPad)):\n(TestWebKitAPI::testScrollViewBackgroundColorOverrideWithInsets):\n(TestWebKitAPI::TEST(SampledPageTopColor, RefreshControlAppearanceScrollViewBGWithInsets)):\n(TestWebKitAPI::TEST(SampledPageTopColor, RefreshControlAppearanceScrollViewBGWithInsetsIPad)):\n(TestWebKitAPI::testScrollViewBackgroundColorOverrideWithoutInsets):\n(TestWebKitAPI::TEST(SampledPageTopColor, RefreshControlAppearanceScrollViewBGWithoutInsets)):\n(TestWebKitAPI::TEST(SampledPageTopColor, RefreshControlAppearanceScrollViewBGWithoutInsetsIPad)):\n\nCanonical link: https://commits.webkit.org/315639@main",
      "email": "lily_spiniolas@apple.com",
      "hash": "b121d4faa6d8fcfe4e477df3c6ec40d792934175",
      "subject": "Upstream support for `NSRefreshController` and updates to `UIRefreshControl`"
    },
    "315640@main": {
      "author": "Elliott Williams",
      "avatar": "https://www.gravatar.com/avatar/4086acbe078d65242df929cb51298130?d=identicon\u0026s=64",
      "cl": "315640@main",
      "clUrl": "https://commits.webkit.org/315640@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=317601\nrdar://180318376\n\nUnreviewed build fix.\n\n* Source/WebCore/Configurations/WebCoreTestSupport.xcconfig:\n\nCanonical link: https://commits.webkit.org/315640@main",
      "email": "emw@apple.com",
      "hash": "f3c0b5ec6edcd512b3ffe3912e0b819673ac1fcd",
      "subject": "Only build WebCoreTestSupport in production for tools-style builds"
    },
    "315641@main": {
      "author": "Abrar Rahman Protyasha",
      "avatar": "https://www.gravatar.com/avatar/fce5b3c4e9f3c59a4873e08c9f03c3b1?d=identicon\u0026s=64",
      "cl": "315641@main",
      "clUrl": "https://commits.webkit.org/315641@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=317501\nrdar://180071410\n\nReviewed by Aditya Keerthi.\n\n-[NSDraggingSession updateDragWithGesture:] is deprecated and no longer\nhas any effect; a gesture-initiated dragging session is now tracked by\nAppKit directly, so the explicit pump is unnecessary. This patch removes\nthe two call sites in -dragPressGestureRecognized:.\n\nFor the changed case, synthesized mouseDragged events are only needed\nbefore a drag begins, to drive WebCore past the drag-initiation\nthreshold, and once the session exists the drag is driven by the\nplatform's drag callbacks instead. The ended/cancelled/failed cases drop\nthe trailing updateDragWithGesture: and continue to send the balancing\nmouseUp.\n\n* Source/WebKit/UIProcess/mac/WKAppKitGestureController.mm:\n(-[WKAppKitGestureController _positionInformationRequestIsValidAtLocation:withRadius:]):\n(-[WKAppKitGestureController _dragPressShouldBeginAtLocation:]):\n\nCanonical link: https://commits.webkit.org/315641@main",
      "email": "a_protyasha@apple.com",
      "hash": "2bc779961bc9d265bb65e6bbd534e7f8f6371fd6",
      "subject": "Gesture recognizer-initiated dragging sessions need not be updated with -[NSDraggingSession updateDragWithGesture:]"
    },
    "315642@main": {
      "author": "Phipson Lee",
      "avatar": "https://www.gravatar.com/avatar/8cbd3a1a983b7611a7c0492d86c4c610?d=identicon\u0026s=64",
      "cl": "315642@main",
      "clUrl": "https://commits.webkit.org/315642@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=317417\nrdar://179974251\n\nReviewed by Abrar Rahman Protyasha.\n\nThe introduction of responsive live resizing on visionOS from 312437@main triggers additional\nrelayouts that conflict with the WKFullScreenViewController.viewDidLayoutSubviews when entering\nelement fullscreen. This causes issues where, while the fullscreen controller tries to layout\nits subviews, the web view is also committing additional updates to the layer tree.\n\nIn general, the responsive live resize behavior is not needed for element fullscreen, so this\npatch applies three changes:\n1. We separate the logic behind _endLiveResize for the general case (without responsive relayout)\nand the responsive relayout case. This also addresses the concerns raised in\nhttps://bugs.webkit.org/show_bug.cgi?id=317000\n\n2. We guard the `endLiveResizeHysteresis` change in `_rescheduleEndLiveResizeTimer` if we are\nin fullscreen. This prevents us from triggering resize relayouts while resizing the fullscreen\nwindow.\n\n3. We also guard the `_endLiveResizeWithResponsiveRelayout` path if we are in fullscreen. This\nprevents us from setting the liveResizeSnapshotState and the transactionIDForEndLiveResize\nduring fullscreen, which can cause issues with the rest of the layer tree commit flow.\n\nThe combination of these 3 changes result in us defaulting to the general, non-responsive live\nresize relayout machinery when we are in fullscreen, which is pre-existing behavior.\n\n* Source/WebKit/UIProcess/API/ios/WKWebViewIOS.mm:\n(-[WKWebView _rescheduleEndLiveResizeTimer]):\nAdd a guard to setting endLiveResizeHysteresis to 0ms if we are in fullscreen\n\n(-[WKWebView _endLiveResizeWithResponsiveRelayout]):\n(-[WKWebView _endLiveResizeDefault]):\nSeparate the \"default live resize\" logic from the \"responsive live resize\" logic\n_endLiveResizeWithResponsiveRelayout also calls _endLiveResizeDefault when we are\nin fullscreen\n\n(-[WKWebView _endLiveResize]):\nUpdate calls to use the helper functions as explained above\n\nCanonical link: https://commits.webkit.org/315642@main",
      "email": "phipson_lee@apple.com",
      "hash": "b2b580981c464483f2228f4da9b9981178424a7b",
      "subject": "[Fullscreen] Element Video resizing causes video to shift partly out of window or become smaller than window"
    },
    "315643@main": {
      "author": "Sosuke Suzuki",
      "avatar": "https://www.gravatar.com/avatar/e63b87350fe19bdd9a30c7234eda45af?d=identicon\u0026s=64",
      "cl": "315643@main",
      "clUrl": "https://commits.webkit.org/315643@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=317556\n\nReviewed by Yusuke Suzuki.\n\nWhen a StringBuilder is passed to tryMakeString/makeString via toString(),\ntoString() shrinks the buffer and reifies a fresh StringImpl, which the\ncaller immediately copies from and discards. Passing StringView { builder }\nlets the caller read directly from the builder's internal buffer.\n\nApply this in three places:\n\n- tryMakeReplacedString (String.prototype.replace with a string search and\n  a `$` substitution in the replacement). This matches what the RegExp path\n  already does in replaceOneWithStringUsingRegExpSearch.\n- resolveLocale, when stitching the supported -u- extension back into the\n  found locale.\n- IntlPluralRules::initializePluralRules, where the skeleton builder was\n  reified only to be viewed as a StringView.\n\nThe Intl changes are allocation-only cleanups; ICU formatter construction\ndominates those paths and the difference is below microbenchmark noise.\n\n                                          Baseline               Fix\n\nstring-replace-string-substitution   67.4923+-0.7067  ^  57.4668+-0.5274  ^ definitely 1.1745x faster\n\nTest: JSTests/microbenchmarks/string-replace-string-substitution.js\n\n* JSTests/microbenchmarks/string-replace-string-substitution.js: Added.\n(test):\n* Source/JavaScriptCore/runtime/IntlObject.cpp:\n(JSC::resolveLocale):\n* Source/JavaScriptCore/runtime/IntlPluralRules.cpp:\n(JSC::IntlPluralRules::initializePluralRules):\n* Source/JavaScriptCore/runtime/StringPrototypeInlines.h:\n(JSC::tryMakeReplacedString):\n\nCanonical link: https://commits.webkit.org/315643@main",
      "email": "sosuke@bun.sh",
      "hash": "fe4ff6d9c93646a9bdb7124a939ad0fe26451e98",
      "subject": "[JSC] Avoid intermediate `StringImpl` allocation when feeding `StringBuilder` into `makeString`"
    },
    "315644@main": {
      "author": "Sosuke Suzuki",
      "avatar": "https://www.gravatar.com/avatar/e63b87350fe19bdd9a30c7234eda45af?d=identicon\u0026s=64",
      "cl": "315644@main",
      "clUrl": "https://commits.webkit.org/315644@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=317555\n\nReviewed by Yusuke Suzuki.\n\nWhen regExpSplitSlow concatenates \"y\" to a user-supplied flags string, it\nused makeString, which calls WTFCrash on length overflow or allocation\nfailure. Since flags is obtained via Get(rx, \"flags\") and ToString, a\ncustom flags getter can return a string of String::MaxLength characters,\nmaking the concatenation crash the process instead of throwing.\n\nBefore 315243@main moved Symbol.split to C++, the JS builtin used\n`flags + \"y\"`, which threw a catchable RangeError. This is a regression\nfrom that migration.\n\nFix by using tryMakeString and throwing an out-of-memory error on failure,\nmatching the pattern used elsewhere in JSC for user-controlled string\nconcatenation.\n\nTest: JSTests/stress/regexp-symbol-split-huge-flags-string-overflow.js\n\n* JSTests/stress/regexp-symbol-split-huge-flags-string-overflow.js: Added.\n(shouldThrow):\n(shouldThrow.fakeRegExp.get flags):\n* Source/JavaScriptCore/runtime/RegExpPrototype.cpp:\n(JSC::regExpSplitSlow):\n\nCanonical link: https://commits.webkit.org/315644@main",
      "email": "sosuke@bun.sh",
      "hash": "fb8194b34646f00c7bbaec04c45f6944dd8b804c",
      "subject": "[JSC] `RegExp#@@split` should not crash on huge flags string"
    },
    "315645@main": {
      "author": "Sosuke Suzuki",
      "avatar": "https://www.gravatar.com/avatar/e63b87350fe19bdd9a30c7234eda45af?d=identicon\u0026s=64",
      "cl": "315645@main",
      "clUrl": "https://commits.webkit.org/315645@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=317554\n\nReviewed by Yusuke Suzuki.\n\nWhen the JSMap/JSSet storage fast paths in forEachInIterable materialize a\ntemporary iterator for IteratorClose after the callback throws, they were\ncreating it with the caller realm's mapIteratorStructure()/setIteratorStructure().\nHowever, the isIteratorProtocolFastAndNonObservable() guard only checks the\nMap/Set's own realm, so we can take the fast path with a cross-realm Map/Set\nand end up looking up `return` on the wrong realm's %MapIteratorPrototype% /\n%SetIteratorPrototype%.\n\nFix this by creating the materialized iterator with the Map/Set's own realm's\nstructure, matching what the spec's GetIterator would have produced.\n\nTest: JSTests/stress/for-each-in-iterable-cross-realm-iterator-close.js\n\n* JSTests/stress/for-each-in-iterable-cross-realm-iterator-close.js: Added.\n(shouldBe):\n(shouldBe.SetIteratorPrototype.return):\n(MapIteratorPrototype.return):\n* Source/JavaScriptCore/runtime/IteratorOperations.h:\n(JSC::forEachInIterable):\n\nCanonical link: https://commits.webkit.org/315645@main",
      "email": "sosuke@bun.sh",
      "hash": "b0d53a73d7eb053d4ad8228903d0298f6676459d",
      "subject": "[JSC] `IteratorClose` in `forEachInIterable` should use the Map/Set's own realm's iterator structure"
    },
    "315646@main": {
      "author": "Abrar Rahman Protyasha",
      "avatar": "https://www.gravatar.com/avatar/fce5b3c4e9f3c59a4873e08c9f03c3b1?d=identicon\u0026s=64",
      "cl": "315646@main",
      "clUrl": "https://commits.webkit.org/315646@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=317030\nrdar://179514707\n\nReviewed by Richard Robinson, Zak Ridouh, Tim Nguyen, Wenson Hsieh, Aditya Keerthi, Lily Spiniolas, Pascoe, Brandon Stewart, Megan Gardner, Charlie Wolfe, and Tim Horton.\n\nIn this patch, we use SwiftUI's .refreshable() modifier to teach\nSwiftBrowser about pull-to-refresh behavior. Our plumbing in\nwebkit.org/b/316808 makes it all work together.\n\n* Tools/SwiftBrowser/Source/ViewModel/BrowserViewModel.swift:\n(BrowserViewModel.reload):\n* Tools/SwiftBrowser/Source/Views/ContentView.swift:\n(ContentView.body):\n\nCanonical link: https://commits.webkit.org/315646@main",
      "email": "a_protyasha@apple.com",
      "hash": "4340681e70f5c11296f108b27ee0f9991a6f766b",
      "subject": "[macOS Golden Gate] Add pull-to-refresh functionality to SwiftBrowser"
    },
    "315647@main": {
      "author": "Chris Dumez",
      "avatar": "https://www.gravatar.com/avatar/a9f21fe3a8baf79b45f3c91572187bdc?d=identicon\u0026s=64",
      "cl": "315647@main",
      "clUrl": "https://commits.webkit.org/315647@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=317564\n\nReviewed by Darin Adler.\n\nHashTraits\u003cGCReachableRef\u003cP\u003e\u003e::peek() and take() were declared in terms of\nRef\u003cP\u003e instead of GCReachableRef\u003cP\u003e, a copy-paste leftover from RefHashTraits.\nThese members are not currently instantiated by any user of\nHashSet\u003cGCReachableRef\u003cNode\u003e\u003e (MutationObserver / MutationObserverRegistration\nonly add, iterate, move and swap the set), so the file compiles today, but any\nfuture call to take()/takeAny()/get() on such a container would fail to compile:\na GCReachableRef rvalue does not bind to a Ref\u003cP\u003e parameter, and the take()\nbody's isEmptyValue() check is declared for GCReachableRef\u003cP\u003e.\n\nFix the parameter and return types to use GCReachableRef\u003cP\u003e. TakeType is kept as\nstd::optional\u003cGCReachableRef\u003cP\u003e\u003e rather than RefPtr\u003cP\u003e so that taking a value out\nof the set preserves its GCReachableRefMap registration through the move.\n\nNo change in behavior; no new tests as the affected code was previously\nuninstantiated.\n\n* Source/WebCore/dom/GCReachableRef.h:\n(WTF::HashTraits\u003cWebCore::GCReachableRef\u003cP\u003e\u003e::peek):\n(WTF::HashTraits\u003cWebCore::GCReachableRef\u003cP\u003e\u003e::take):\n\nCanonical link: https://commits.webkit.org/315647@main",
      "email": "cdumez@apple.com",
      "hash": "645f9091db79c271b9a6706da6be254ed89850a7",
      "subject": "GCReachableRef's HashTraits peek()/take() use the wrong value type"
    },
    "315648@main": {
      "author": "Tyler Wilcock",
      "avatar": "https://www.gravatar.com/avatar/9545082e6bed96158a9f52dac6e4b869?d=identicon\u0026s=64",
      "cl": "315648@main",
      "clUrl": "https://commits.webkit.org/315648@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=317261\nrdar://179873618\n\nReviewed by Dominic Mazzoni and Andres Gonzalez.\n\nsetPendingRootNodeIDLocked() and the root object's append are queued under\nseparate acquisitions of m_changeLogLock (see createEmptyContent() and\nnodeChangeForObject()), so a pending-changes snapshot can carry the root ID\nbefore the snapshot that carries the root's append. Since 312765@main, the\napply path consumed rootNodeID from a single snapshot and, if the root object\nwasn't in m_readerThreadNodeMap yet, dropped it. m_rootNode then stayed null\nforever and VoiceOver reported \"empty web content\".\n\nTo fix this, store only the root ID (m_rootNodeID) and resolve rootNode() on\ndemand from m_readerThreadNodeMap, mirroring m_focusedNodeID / focusedNode().\n\nIn the future, we should apply tree updates entirely atomically. This is\ntracked by https://bugs.webkit.org/show_bug.cgi?id=316148.\n\n* Source/WebCore/accessibility/AXObjectCache.cpp:\n(WebCore::AXObjectCache::treeData):\n* Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.cpp:\n(WebCore::AXIsolatedTree::clearTreeContentsLocked):\n(WebCore::AXIsolatedTree::applyPendingChangesFromSnapshot):\n* Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.h:\n(WebCore::AXIsolatedTree::rootNode):\n(WebCore::AXIsolatedTree::unsafeRootNodeID const):\n\nCanonical link: https://commits.webkit.org/315648@main",
      "email": "tyler_w@apple.com",
      "hash": "96e5bdf065e0cd05046e9e2c5bcb41f99812edfe",
      "subject": "AX: Isolated tree left permanently rootless when the root's ID is applied before its node, causing VoiceOver to report \"empty web content\""
    },
    "315649@main": {
      "author": "Abrar Rahman Protyasha",
      "avatar": "https://www.gravatar.com/avatar/fce5b3c4e9f3c59a4873e08c9f03c3b1?d=identicon\u0026s=64",
      "cl": "315649@main",
      "clUrl": "https://commits.webkit.org/315649@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=317625\nrdar://180358861\n\nUnreviewed build fix.\n\nThis patch removes the ScrollingEffectsControllerAdditions include for\nUSE_APPLE_INTERNAL_SDK builds, now that we have upstreamed its content\nas part of 315639@main.\n\n* Source/WebCore/platform/mac/ScrollingEffectsController.mm:\n\nCanonical link: https://commits.webkit.org/315649@main",
      "email": "a_protyasha@apple.com",
      "hash": "745aab288f3b29ed94dfb54e8043ba40fabf2fbd",
      "subject": "REGRESSION(315639@main): Broke internal macOS builds"
    },
    "315650@main": {
      "author": "Abrar Rahman Protyasha",
      "avatar": "https://www.gravatar.com/avatar/fce5b3c4e9f3c59a4873e08c9f03c3b1?d=identicon\u0026s=64",
      "cl": "315650@main",
      "clUrl": "https://commits.webkit.org/315650@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=317016\nrdar://179508777\n\nReviewed by Lily Spiniolas, Megan Gardner, and Zak Ridouh.\n\nThis patch is a primitive adoption of NSRefreshController in MiniBrowser.\n\n* Tools/MiniBrowser/mac/WK2BrowserWindowController.m:\n(-[WK2BrowserWindowController awakeFromNib]):\n(-[WK2BrowserWindowController _refreshControllerActivated:]):\n(-[WK2BrowserWindowController webView:didFinishNavigation:]):\n\nCanonical link: https://commits.webkit.org/315650@main",
      "email": "a_protyasha@apple.com",
      "hash": "ea32ddc204f955300c0e2bb6cb8d4c728c0f71ea",
      "subject": "[macOS Golden Gate] Add pull-to-refresh functionality in MiniBrowser"
    },
    "315651@main": {
      "author": "Yusuke Suzuki",
      "avatar": "https://www.gravatar.com/avatar/3455d9081295e3e740c1ffa901217d9b?d=identicon\u0026s=64",
      "cl": "315651@main",
      "clUrl": "https://commits.webkit.org/315651@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=317621\nrdar://180352661\n\nReviewed by Dan Hecht.\n\nAdd DFG::BasicBlock::index() getter / setter and making index member to\nm_index and make it private member field. This makes DFG::BasicBlock\nmore similar to B3::BasicBlock, which allows sharing code easily. We\nwould like to unify DFG::SSACalculator and B3::SSACalculator as they are\nalmost the same.\n\nBy doing so, now we can use IndexMap for both DFG and B3. Use IndexMap\nand remove BlockMap.\n\n* Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj:\n* Source/JavaScriptCore/dfg/DFGArgumentsEliminationPhase.cpp:\n* Source/JavaScriptCore/dfg/DFGAtTailAbstractState.cpp:\n(JSC::DFG::AtTailAbstractState::AtTailAbstractState):\n* Source/JavaScriptCore/dfg/DFGAtTailAbstractState.h:\n* Source/JavaScriptCore/dfg/DFGBackwardsPropagationPhase.cpp:\n(JSC::DFG::BackwardsPropagationPhase::BackwardsPropagationPhase):\n* Source/JavaScriptCore/dfg/DFGBasicBlock.cpp:\n(JSC::DFG::BasicBlock::BasicBlock):\n(JSC::DFG::BasicBlock::dump const):\n* Source/JavaScriptCore/dfg/DFGBasicBlock.h:\n(JSC::DFG::BasicBlock::index const):\n(JSC::DFG::BasicBlock::setIndex):\n* Source/JavaScriptCore/dfg/DFGBlockInsertionSet.cpp:\n(JSC::DFG::BlockInsertionSet::insertBefore):\n(JSC::DFG::BlockInsertionSet::execute):\n* Source/JavaScriptCore/dfg/DFGBlockMap.h: Removed.\n* Source/JavaScriptCore/dfg/DFGBlockMapInlines.h: Removed.\n* Source/JavaScriptCore/dfg/DFGBlockSet.h:\n(JSC::DFG::BlockSet::add):\n(JSC::DFG::BlockSet::remove):\n(JSC::DFG::BlockSet::contains const):\n* Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:\n(JSC::DFG::ByteCodeParser::allocateUntargetableBlock):\n* Source/JavaScriptCore/dfg/DFGCFG.h:\n(JSC::DFG::CFG::newMap):\n(JSC::DFG::CFG::index const):\n* Source/JavaScriptCore/dfg/DFGCSEPhase.cpp:\n* Source/JavaScriptCore/dfg/DFGCombinedLiveness.cpp:\n(JSC::DFG::CombinedLiveness::CombinedLiveness):\n* Source/JavaScriptCore/dfg/DFGCombinedLiveness.h:\n* Source/JavaScriptCore/dfg/DFGGraph.cpp:\n(JSC::DFG::Graph::dumpBlockHeader):\n(JSC::DFG::Graph::dump):\n(JSC::DFG::Graph::appendIonGraphPass):\n* Source/JavaScriptCore/dfg/DFGGraph.h:\n* Source/JavaScriptCore/dfg/DFGIntegerRangeOptimizationPhase.cpp:\n* Source/JavaScriptCore/dfg/DFGJITCompiler.cpp:\n(JSC::DFG::JITCompiler::link):\n* Source/JavaScriptCore/dfg/DFGLivenessAnalysisPhase.cpp:\n* Source/JavaScriptCore/dfg/DFGMovHintRemovalPhase.cpp:\n* Source/JavaScriptCore/dfg/DFGOSRAvailabilityAnalysisPhase.cpp:\n(JSC::DFG::OSRAvailabilityAnalysisPhase::run):\n(JSC::DFG::OSRAvailabilityAnalysisPhase::validateNode):\n(JSC::DFG::validateOSRExitAvailability):\n* Source/JavaScriptCore/dfg/DFGObjectAllocationSinkingPhase.cpp:\n* Source/JavaScriptCore/dfg/DFGPutStackSinkingPhase.cpp:\n* Source/JavaScriptCore/dfg/DFGSSACalculator.cpp:\n(JSC::DFG::SSACalculator::SSACalculator):\n(JSC::DFG::SSACalculator::ensureDominanceFrontiers):\n* Source/JavaScriptCore/dfg/DFGSSACalculator.h:\n(JSC::DFG::SSACalculator::computePhis):\n* Source/JavaScriptCore/dfg/DFGSSAConversionPhase.cpp:\n* Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:\n(JSC::DFG::SpeculativeJIT::compileCurrentBlock):\n* Source/JavaScriptCore/dfg/DFGSpeculativeJIT.h:\n(JSC::DFG::SpeculativeJIT::nextBlock):\n* Source/JavaScriptCore/dfg/DFGStoreBarrierInsertionPhase.cpp:\n* Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:\n(JSC::FTL::DFG::LowerDFGToB3::compileBlock):\n(JSC::FTL::DFG::LowerDFGToB3::compileCompareStrictEq):\n\nCanonical link: https://commits.webkit.org/315651@main",
      "email": "ysuzuki@apple.com",
      "hash": "9b94cc71dc3c05bf6c49ce328b020e8e5e054f76",
      "subject": "[JSC] Add index() / setIndex() to DFG::BasicBlock"
    },
    "315652@main": {
      "author": "Chris Dumez",
      "avatar": "https://www.gravatar.com/avatar/a9f21fe3a8baf79b45f3c91572187bdc?d=identicon\u0026s=64",
      "cl": "315652@main",
      "clUrl": "https://commits.webkit.org/315652@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=317572\n\nReviewed by Ryosuke Niwa.\n\nTreeWalker::setCurrent() fails to grab the lock used for synchronization\nwith garbage collection in TreeWalker::opaqueRootForCurrentNodeInGCThread().\n\n* Source/WebCore/dom/TreeWalker.cpp:\n(WebCore::TreeWalker::setCurrent):\n\nCanonical link: https://commits.webkit.org/315652@main",
      "email": "cdumez@apple.com",
      "hash": "72d27fde656a1609517cad87173da3ea4b94b343",
      "subject": "TreeWalker::setCurrent() fails to grab the lock"
    },
    "315653@main": {
      "author": "Mike Wyrzykowski",
      "avatar": "https://www.gravatar.com/avatar/4b1bc9e238714f95e22d5d2454c07066?d=identicon\u0026s=64",
      "cl": "315653@main",
      "clUrl": "https://commits.webkit.org/315653@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=317110\nrdar://180267884\n\nReviewed by Dan Glastonbury.\n\nThe spec says to allow unused overrides.\n\nTest: fast/webgpu/regression/repro_317110.html\n\n* LayoutTests/fast/webgpu/regression/repro_317110-expected.txt: Added.\n* LayoutTests/fast/webgpu/regression/repro_317110.html: Added.\n* Source/WebGPU/WGSL/WGSLShaderModule.cpp:\n(WGSL::ShaderModule::containsOverride const):\n* Source/WebGPU/WGSL/WGSLShaderModule.h:\n* Source/WebGPU/WebGPU/Pipeline.mm:\n(WebGPU::createLibrary):\n\nCanonical link: https://commits.webkit.org/315653@main",
      "email": "mwyrzykowski@apple.com",
      "hash": "8acb03441a23a4a938d81df76ebc630d7e66013f",
      "subject": "[WebGPU] Render pipeline silently produces no draw output when given pipeline-overridable constants that its vertex/fragment entry points don't use"
    },
    "315654@main": {
      "author": "Lauro Moura",
      "avatar": "https://www.gravatar.com/avatar/6157f52d61e04c2c63fe7ff668ba69b3?d=identicon\u0026s=64",
      "cl": "315654@main",
      "clUrl": "https://commits.webkit.org/315654@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=273396\n\nUnreviewed test gardening.\n\nAdd back as FAIL two tests that are failing on GTK. They were passing\nuntil 315461@main, and the gardening landed right after, in 315463@main,\nso EWS did not pick it up.\n\n* LayoutTests/platform/glib/TestExpectations:\n* LayoutTests/platform/wpe/TestExpectations:\n\nCanonical link: https://commits.webkit.org/315654@main",
      "email": "lmoura@igalia.com",
      "hash": "0f307e93cf9eb941494046a829baf7dcb15f67c9",
      "subject": "[Skia] Several test fail with a few pixel differences only when run with swrast"
    },
    "315655@main": {
      "author": "Lauro Moura",
      "avatar": "https://www.gravatar.com/avatar/6157f52d61e04c2c63fe7ff668ba69b3?d=identicon\u0026s=64",
      "cl": "315655@main",
      "clUrl": "https://commits.webkit.org/315655@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=316719\n\nUnreviewed test gardening.\n\nThese tests are also frequently flaky crashing with the same signature\non arm64.\n\n* LayoutTests/platform/wpe/TestExpectations:\n\nCanonical link: https://commits.webkit.org/315655@main",
      "email": "lmoura@igalia.com",
      "hash": "04d05d9dc85e0af2c69000f04725baebb07dd39e",
      "subject": "[GTK][WPE][(ASSERTION FAILED: refCount)] fast/images/alt-text-with-right-to-left-inline-direction-reordering.html and fast/html/HTMLCollection-set-property.html are flaky crashes."
    },
    "315656@main": {
      "author": "BJ Burg",
      "avatar": "https://www.gravatar.com/avatar/7bba434e462e6f8d8c4d17f82699886e?d=identicon\u0026s=64",
      "cl": "315656@main",
      "clUrl": "https://commits.webkit.org/315656@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=165269\n\nReviewed by Richard Robinson.\n\nIntroduce a 3-valued NavigatorWebDriverActivePolicy preference (Auto,\nEnabled, Disabled) and a navigatorWebDriverEnabled BOOL on\n_WKAutomationSessionConfiguration. NavigatorWebDriver consults the\npolicy: Auto falls back to Page::isControlledByAutomation() (today's\nbehavior), Enabled forces true, Disabled forces false. The\nautomation-session BOOL carries the embedder's choice; the\nWKPreferences SPI _setNavigatorWebDriverActivePolicy lets a session\napply it per page.\n\nThe test is written against WebPage. To drive the automation-controlled\ninput without adding new public API, add an isControlledByAutomation\ntesting-only property to WebPage.Configuration (mirroring the existing\nprocessPool testing hook), forwarded to the underlying\nWKWebViewConfiguration; the active policy is applied through the page's\npreferences.\n\n* Source/WTF/Scripts/Preferences/UnifiedWebPreferences.yaml:\n* Source/WebCore/Modules/webdriver/NavigatorWebDriver.cpp:\n(WebCore::NavigatorWebDriver::isControlledByAutomation):\n* Source/WebCore/Modules/webdriver/NavigatorWebDriverActivePolicy.h: Added.\n* Source/WebCore/Headers.cmake:\n* Source/WebCore/WebCore.xcodeproj/project.pbxproj:\n* Source/WebCore/page/SettingsBase.h:\n* Source/WebKit/UIProcess/API/Cocoa/WKPreferences.mm:\n(-[WKPreferences _navigatorWebDriverActivePolicy]):\n(-[WKPreferences _setNavigatorWebDriverActivePolicy:]):\n* Source/WebKit/UIProcess/API/Cocoa/WKPreferencesPrivate.h:\n* Source/WebKit/UIProcess/API/Cocoa/WKWebViewConfiguration+Extras.swift:\n* Source/WebKit/UIProcess/API/Cocoa/_WKAutomationSessionConfiguration.h:\n* Source/WebKit/UIProcess/API/Cocoa/_WKAutomationSessionConfiguration.mm:\n(-[_WKAutomationSessionConfiguration init]):\n(-[_WKAutomationSessionConfiguration copyWithZone:]):\n* Source/WebKit/UIProcess/API/Swift/WebPage+Configuration.swift:\n* Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:\n* Tools/TestWebKitAPI/Tests/WebKit/WebPage/NavigatorWebDriverOverride.swift: Added.\n\nCanonical link: https://commits.webkit.org/315656@main",
      "email": "bburg@apple.com",
      "hash": "a8aac3e415410bdc261470177d0b098b8414055a",
      "subject": "Add an API test to exercise the behavior of navigator.webdriver"
    },
    "315657@main": {
      "author": "Chris Dumez",
      "avatar": "https://www.gravatar.com/avatar/a9f21fe3a8baf79b45f3c91572187bdc?d=identicon\u0026s=64",
      "cl": "315657@main",
      "clUrl": "https://commits.webkit.org/315657@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=317557\nrdar://179393966\n\nReviewed by Abrar Rahman Protyasha and Darin Adler.\n\nWebPage::firstRectForCharacterRangeAsync() computed the \"actual range\" it sends\nback to the UIProcess using unchecked 64-bit arithmetic. When the requested range\nhad a location near UINT64_MAX, location + length wrapped, and the resulting\nEditingRange had a location + length that overflowed. On the UIProcess side, the\ngenerated EditingRange decoder validated the range with Checked\u003cuint64_t\u003e, whose\ndefault OverflowHandler is CrashOnOverflow, so decoding the reply deliberately\ncrashed the UIProcess instead of rejecting the message.\n\nFix both sides:\n- The decode validator now uses CheckedUint64 (RecordOverflow), so an overflowing\n  range fails to decode gracefully rather than crashing the receiving process.\n- firstRectForCharacterRangeAsync() now clamps the first-line range with saturating\n  arithmetic (EditingRange::clampedFirstLineRange), so the WebProcess never produces\n  an overflowing range in the first place.\n\nShareableResourceHandle had the same latent bug (Checked\u003cunsigned\u003e in its m_size\nvalidator); fix it the same way and mark the type [WebKitPlatform] so its generated\ncoder is reachable from the API tests.\n\nTest: Tools/TestWebKitAPI/Tests/IPC/ArgumentCoderTests.cpp\n\n* Source/WebKit/Shared/EditingRange.cpp:\n(WebKit::EditingRange::clampedFirstLineRange):\n* Source/WebKit/Shared/EditingRange.h:\n* Source/WebKit/Shared/EditingRange.serialization.in:\n* Source/WebKit/Shared/WebCoreArgumentCodersPlatform.serialization.in:\n* Source/WebKit/WebProcess/WebPage/Cocoa/WebPageCocoa.mm:\n(WebKit::WebPage::firstRectForCharacterRangeAsync):\n* Tools/TestWebKitAPI/Tests/IPC/ArgumentCoderTests.cpp:\n(TestWebKitAPI::TEST(ArgumentCoderEditingRange, OverflowingRangeIsRejectedNotCrashed)):\n(TestWebKitAPI::TEST(EditingRangeFirstLineClamp, NeverProducesOverflowingRange)):\n(TestWebKitAPI::TEST(ArgumentCoderShareableResourceHandle, OverflowingOffsetAndSizeIsRejectedNotCrashed)):\n\nCanonical link: https://commits.webkit.org/315657@main",
      "email": "cdumez@apple.com",
      "hash": "5266b49c0b9d09b6770c72a35a513fb014013af7",
      "subject": "EditingRange with an overflowing location + length crashes the UIProcess on IPC decode"
    },
    "315658@main": {
      "author": "Marcos Caceres",
      "avatar": "https://www.gravatar.com/avatar/d31c9c6a3b0af558a2945682020e5b90?d=identicon\u0026s=64",
      "cl": "315658@main",
      "clUrl": "https://commits.webkit.org/315658@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=317541\nrdar://180236211\n\nReviewed by BJ Burg.\n\nUpstream commit: https://github.com/web-platform-tests/wpt/commit/fa3b32ced60d1099cd9dc4757ef43ce7e3df55ec\n\n* LayoutTests/TestExpectations:\n* LayoutTests/imported/w3c/web-platform-tests/digital-credentials/META.yml:\n* LayoutTests/imported/w3c/web-platform-tests/digital-credentials/concurrent-requests.https.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/digital-credentials/create.tentative.https.html:\n* LayoutTests/imported/w3c/web-platform-tests/digital-credentials/get.https.html:\n* LayoutTests/imported/w3c/web-platform-tests/digital-credentials/mdoc/encryption-info-validation.https-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/digital-credentials/mdoc/encryption-info-validation.https.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/digital-credentials/mdoc/malformed-requests.https-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/digital-credentials/mdoc/malformed-requests.https.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/digital-credentials/mdoc/mixed-requests.https-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/digital-credentials/mdoc/mixed-requests.https.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/digital-credentials/mdoc/origin-binding.https.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/digital-credentials/mdoc/response-handling.https.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/digital-credentials/mdoc/valid-roundtrip.https.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/digital-credentials/mdoc/w3c-import.log: Added.\n* LayoutTests/imported/w3c/web-platform-tests/digital-credentials/protocol-filtering-mdoc.https-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/digital-credentials/protocol-filtering-mdoc.https.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/digital-credentials/protocol-filtering-openid4vp.https.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/digital-credentials/support/helper.js:\n* LayoutTests/imported/w3c/web-platform-tests/digital-credentials/user-activation-create.tentative.https.html:\n* LayoutTests/imported/w3c/web-platform-tests/digital-credentials/user-activation-get.https-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/digital-credentials/user-activation-get.https.html:\n* LayoutTests/imported/w3c/web-platform-tests/digital-credentials/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/digital-credentials/webdriver/create.https.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/digital-credentials/webdriver/get.https.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/digital-credentials/webdriver/w3c-import.log: Added.\n* LayoutTests/imported/w3c/web-platform-tests/lint.ignore:\n* LayoutTests/platform/ios/imported/w3c/web-platform-tests/digital-credentials/get.https-expected.txt:\n* LayoutTests/platform/mac-wk2/TestExpectations:\n\nCanonical link: https://commits.webkit.org/315658@main",
      "email": "marcosc@apple.com",
      "hash": "ba944f4309541ac66b7eea048e23168ad2602be1",
      "subject": "Digital credentials: resync upstream WPT tests"
    },
    "315659@main": {
      "author": "Jer Noble",
      "avatar": "https://www.gravatar.com/avatar/6d2cde9be23b98223ca964cb3b7813a0?d=identicon\u0026s=64",
      "cl": "315659@main",
      "clUrl": "https://commits.webkit.org/315659@main",
      "description": "rdar://180334501\nhttps://bugs.webkit.org/show_bug.cgi?id=317607\n\nReviewed by Eric Carlson.\n\nAdd a third batch of TextTrack tests covering pending-list lifecycle, cross-origin in-band exposure,\nremoveCue list-mutation semantics, default mode and label fallback, and additional time-marches-on\nedge cases.\n\ntrack-removal-clears-pending-list.html records a FAIL baseline for a real spec deviation tracked by\nrdar://180330521: removing a loading \u003ctrack\u003e from its media element clears the gating list entry\nbut does not re-evaluate readyState, so the video stays clamped at HAVE_CURRENT_DATA until the\norphaned track's network fetch completes.\n\nThe cross-origin in-band test verifies that a media element exposes its in-band text tracks only\nwhen the media data is CORS-same-origin. The tracks-ready test verifies HAVE_FUTURE_DATA gating\nagainst a slow-served VTT (uses the existing load-and-stall.py infrastructure).\n\ntext-track-cue-mutation covers removeCue's NotFoundError throw path and order-preserving list\nmutation. text-track-label-defaults-and-mode covers the TextTrack.label getter behavior including\nthe empty-label / auto-generated-UI-label distinction (spec-mandated to not be exposed via the\nAPI). text-track-time-marches-on-edges covers three algorithm-edge cases: disabled-track cues never\nparticipating, missed-cues only on monotonic advance, and idempotent re-runs not duplicating\nevents.\n\n* LayoutTests/http/tests/media/track/text-track-cross-origin-in-band-expected.txt: Added.\n* LayoutTests/http/tests/media/track/text-track-cross-origin-in-band.html: Added.\n* LayoutTests/http/tests/media/track/track-removal-clears-pending-list-expected.txt: Added.\n* LayoutTests/http/tests/media/track/track-removal-clears-pending-list.html: Added.\n* LayoutTests/http/tests/media/track/tracks-ready-and-have-future-data-expected.txt: Added.\n* LayoutTests/http/tests/media/track/tracks-ready-and-have-future-data.html: Added.\n* LayoutTests/media/track/text-track-cue-mutation-expected.txt: Added.\n* LayoutTests/media/track/text-track-cue-mutation.html: Added.\n* LayoutTests/media/track/text-track-label-defaults-and-mode-expected.txt: Added.\n* LayoutTests/media/track/text-track-label-defaults-and-mode.html: Added.\n* LayoutTests/media/track/text-track-time-marches-on-edges-expected.txt: Added.\n* LayoutTests/media/track/text-track-time-marches-on-edges.html: Added.\n\nCanonical link: https://commits.webkit.org/315659@main",
      "email": "jer.noble@apple.com",
      "hash": "3c43301db2bf6f5476d55d2429bace12b5913be2",
      "subject": "[HTML Tracks] Additional tests for untested areas of the HTML TextTrack specification"
    },
    "315660@main": {
      "author": "Adrian Taylor",
      "avatar": "https://www.gravatar.com/avatar/d2acb8ad2e2670ff74ae0d65fb27014c?d=identicon\u0026s=64",
      "cl": "315660@main",
      "clUrl": "https://commits.webkit.org/315660@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=317391\n\nReviewed by Nikolas Zimmermann.\n\nWe have moved a core part of WebKit to Swift - the Back Forward List. So far,\nthis is enabled on Apple, GTK and WPE platforms. With this change we try to\nenable it on all remaining cmake platforms which use clang.\n\nCanonical link: https://commits.webkit.org/315660@main",
      "email": "adrian_taylor@apple.com",
      "hash": "1f425b1c78140410701b099ed80bfed07f7cbdbc",
      "subject": "Enable Swift back forward list on all clang platforms"
    },
    "315661@main": {
      "author": "Lauro Moura",
      "avatar": "https://www.gravatar.com/avatar/6157f52d61e04c2c63fe7ff668ba69b3?d=identicon\u0026s=64",
      "cl": "315661@main",
      "clUrl": "https://commits.webkit.org/315661@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=317604\n\nReviewed by Nikolas Zimmermann.\n\nEnsure we release the resources when abandoning the GrContext. Just\nabandoning the context would leave the resources to be reclaimed when\nthe EGL context is destroyed, which can hit an invalid driver state\nduring teardown on NVIDIA cards.\n\n* Source/WebCore/platform/graphics/skia/PlatformDisplaySkia.cpp:\n(WebCore::SkiaGLContext::~SkiaGLContext):\n\nCanonical link: https://commits.webkit.org/315661@main",
      "email": "lmoura@igalia.com",
      "hash": "c5b6ec5b34d7e53b6e5f2197d0a956efbe0df945",
      "subject": "REGRESSION(315027@main) [Skia] Crash deep inside nvidia EGL code during page teardown"
    },
    "315662@main": {
      "author": "Carlos Garcia Campos",
      "avatar": "https://www.gravatar.com/avatar/8393f7e76d83c8a147cb852d8fb1a959?d=identicon\u0026s=64",
      "cl": "315662@main",
      "clUrl": "https://commits.webkit.org/315662@main",
      "description": "* Source/WebKit/gtk/NEWS: Add release notes for 2.53.4.\n* Source/cmake/OptionsGTK.cmake: Bump version numbers.\n\nCanonical link: https://commits.webkit.org/315662@main",
      "email": "cgarcia@igalia.com",
      "hash": "048b008c106e0c248a98bcad2e198c7b60eb530d",
      "subject": "Unreviewed. Update OptionsGTK.cmake and NEWS for 2.53.4 release"
    },
    "315663@main": {
      "author": "Richard Robinson",
      "avatar": "https://www.gravatar.com/avatar/a0d2f862985ed0fd47887be66f5a3e4f?d=identicon\u0026s=64",
      "cl": "315663@main",
      "clUrl": "https://commits.webkit.org/315663@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=317638\nrdar://180383923\n\nUnreviewed project file fix.\n\n* Source/WebKit/WebKit.xcodeproj/project.pbxproj:\n\nCanonical link: https://commits.webkit.org/315663@main",
      "email": "richard_robinson2@apple.com",
      "hash": "9d89050eb884a7681b68de687cdf6d3d8359b04d",
      "subject": "Fix the WebKit Xcode project file after 315639@main"
    },
    "315664@main": {
      "author": "Youenn Fablet",
      "avatar": "https://www.gravatar.com/avatar/0a9886e582a7aee1eb908eb59af36da4?d=identicon\u0026s=64",
      "cl": "315664@main",
      "clUrl": "https://commits.webkit.org/315664@main",
      "description": "rdar://180240531\nhttps://bugs.webkit.org/show_bug.cgi?id=317634\n\nReviewed by Chris Dumez.\n\nReadableStream::createIterator can be called from a detached context.\nWe throw an InvalidStateError in that case.\nCovered by added test.\n\n* LayoutTests/streams/values-removed-iframe-crash-expected.txt: Added.\n* LayoutTests/streams/values-removed-iframe-crash.html: Added.\n\nCanonical link: https://commits.webkit.org/315664@main",
      "email": "youenn@apple.com",
      "hash": "0a87f67fd066cd35ac7bba9f22788277fde01ac6",
      "subject": "Nullptr dereference in ReadableStream::createIterator"
    },
    "315665@main": {
      "author": "Sergio Villar Senin",
      "avatar": "https://www.gravatar.com/avatar/2d83fda649cd4acc99663f5ce5aaedee?d=identicon\u0026s=64",
      "cl": "315665@main",
      "clUrl": "https://commits.webkit.org/315665@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=317134\n\nReviewed by Dan Glastonbury.\n\nThis implements the required changes to create cube layers on UIProcess\nside and share them with the WebProcess so that web authors could use\nthem in their WebXR experiences.\n\nBoth mono and stereo cube layers are supported. This commit also\nprovides support for cube layers implemented with texture arrays.\n\nThis adds the platform implementation using OpenXR via the\nXR_KHR_composition_layer_cube extension.\n\nThe cube layer is a bit special because it does not use regular textures\nbut texture cube maps. Those cannot be shared via DMABuf so we have to\n\"serialize\" the faces of the cube in large side by side regular\ntextures. What's more, two texture cube maps cannot be concatenated as\nwe do with quad layers for example for the stereo case. We need to\ncreate two different cube maps, and that requires slight changes to the\ncurrent code. In that sense this layer is a bit different to other\ncomposition layers.\n\nCube layers can be backed by texture arrays too. In that case we need to\ncreate a texture array with 6 slices or with 12 for the stereo case as\ndescribed by specs.\n\nThere are several similarities between the texture arrays and the\ntexture cube maps, both are composed by multiple slices/faces. That's\nwhy we decided to generalize that common behaviour in a new abstract\nMultiTextureSwapchain which is the new parent of the texture array\nswapchain and also the cube swapchain.\n\n* Source/WebCore/Modules/webxr/WebXRWebGLLayer.cpp:\n(WebCore::WebXRWebGLLayer::endFrame):\n* Source/WebCore/Modules/webxr/WebXRWebGLSwapchain.cpp:\n(WebCore::WebXRWebGLStaticImageSwapchain::currentTexture):\n(WebCore::WebXRWebGLStaticImageSwapchain::currentTextureAtIndex):\n(WebCore::WebXRWebGLStaticImageSwapchain::bindCompositorTexturesForDisplay):\n(WebCore::WebXRWebGLStaticImageSwapchain::clearTextureRegion):\n(WebCore::WebXRWebGLStaticImageSwapchain::allTexturesAreBound const):\n(WebCore::WebXRWebGLMultiTextureSwapchain::WebXRWebGLMultiTextureSwapchain):\n(WebCore::WebXRWebGLMultiTextureSwapchain::~WebXRWebGLMultiTextureSwapchain):\n(WebCore::WebXRWebGLMultiTextureSwapchain::TextureSet::release):\n(WebCore::WebXRWebGLMultiTextureSwapchain::TextureSet::leakObject):\n(WebCore::WebXRWebGLMultiTextureSwapchain::currentTexture):\n(WebCore::WebXRWebGLMultiTextureSwapchain::currentTextureAtIndex):\n(WebCore::WebXRWebGLMultiTextureSwapchain::releaseTexturesAtIndex):\n(WebCore::WebXRWebGLMultiTextureSwapchain::reusableTextures const):\n(WebCore::WebXRWebGLMultiTextureSwapchain::startFrame):\n(WebCore::WebXRWebGLMultiTextureSwapchain::endFrame):\n(WebCore::WebXRWebGLMultiTextureSwapchain::allTexturesAreBound const):\n(WebCore::WebXRWebGLTextureArraySwapchain::create):\n(WebCore::WebXRWebGLTextureArraySwapchain::WebXRWebGLTextureArraySwapchain):\n(WebCore::WebXRWebGLTextureArraySwapchain::bindCompositorTexturesForDisplay):\n(WebCore::WebXRWebGLTextureArraySwapchain::blitToSharedImage):\n(WebCore::WebXRWebGLCubeSwapchain::create):\n(WebCore::WebXRWebGLCubeSwapchain::WebXRWebGLCubeSwapchain):\n(WebCore::WebXRWebGLCubeSwapchain::bindCompositorTexturesForDisplay):\n(WebCore::WebXRWebGLCubeSwapchain::blitToSharedImage):\n(WebCore::WebXRWebGLCubeSwapchain::clearTextureRegion):\n(WebCore::WebXRWebGLTextureArraySwapchain::~WebXRWebGLTextureArraySwapchain): Deleted.\n(WebCore::WebXRWebGLTextureArraySwapchain::TextureSet::release): Deleted.\n(WebCore::WebXRWebGLTextureArraySwapchain::TextureSet::leakObject): Deleted.\n(WebCore::WebXRWebGLTextureArraySwapchain::currentTexture): Deleted.\n(WebCore::WebXRWebGLTextureArraySwapchain::releaseTexturesAtIndex): Deleted.\n(WebCore::WebXRWebGLTextureArraySwapchain::reusableTextures const): Deleted.\n(WebCore::WebXRWebGLTextureArraySwapchain::blitTextureArrayToSharedImage): Deleted.\n(WebCore::WebXRWebGLTextureArraySwapchain::startFrame): Deleted.\n(WebCore::WebXRWebGLTextureArraySwapchain::endFrame): Deleted.\n(WebCore::WebXRWebGLTextureArraySwapchain::allTexturesAreBound const): Deleted.\n* Source/WebCore/Modules/webxr/WebXRWebGLSwapchain.h:\n(WebCore::WebXRWebGLSwapchain::currentTextureAtIndex):\n(WebCore::WebXRWebGLMultiTextureSwapchain::TextureSet::operator bool const):\n* Source/WebCore/Modules/webxr/XRCubeLayer.cpp:\n(WebCore::XRCubeLayer::XRCubeLayer):\n(WebCore::XRCubeLayer::setOrientation):\n(WebCore::XRCubeLayer::fillInTypeSpecificDeviceLayerData const):\n* Source/WebCore/Modules/webxr/XRCubeLayer.h:\n(WebCore::XRCubeLayer::create):\n(WebCore::XRCubeLayer::orientation const):\n(WebCore::XRCubeLayer::space const): Deleted.\n(WebCore::XRCubeLayer::setSpace): Deleted.\n(WebCore::XRCubeLayer::setOrientation): Deleted.\n* Source/WebCore/Modules/webxr/XRWebGLBinding.cpp:\n(WebCore::XRWebGLBinding::allocateColorTexturesForLayer):\n(WebCore::XRWebGLBinding::allocateDepthTexturesForLayer):\n(WebCore::XRWebGLBinding::createCubeLayer):\n(WebCore::XRWebGLBinding::getSubImage):\n* Source/WebCore/Modules/webxr/XRWebGLBinding.h:\n(WebCore::XRWebGLBinding::createCubeLayer): Deleted.\n* Source/WebCore/Modules/webxr/XRWebGLBinding.idl:\n* Source/WebCore/Modules/webxr/XRWebGLCubeLayerBacking.cpp: Copied from Source/WebCore/Modules/webxr/XRCubeLayer.h.\n(WebCore::XRWebGLCubeLayerBacking::create):\n(WebCore::XRWebGLCubeLayerBacking::XRWebGLCubeLayerBacking):\n* Source/WebCore/Modules/webxr/XRWebGLCubeLayerBacking.h: Copied from Source/WebCore/Modules/webxr/XRCubeLayer.cpp.\n* Source/WebCore/Modules/webxr/XRWebGLLayerBacking.cpp:\n(WebCore::XRWebGLLayerBacking::currentColorTexture const):\n(WebCore::XRWebGLLayerBacking::requiresPerViewColorTextures const):\n(WebCore::XRWebGLLayerBacking::currentDepthTexture const):\n(WebCore::XRWebGLLayerBacking::createCompositionLayerSwapchains):\n(WebCore::XRWebGLLayerBacking::createColorAndDepthSwapchains):\n* Source/WebCore/Modules/webxr/XRWebGLLayerBacking.h:\n* Source/WebCore/Modules/webxr/XRWebGLSubImage.cpp:\n(WebCore::XRWebGLSubImage::create):\n* Source/WebCore/Modules/webxr/XRWebGLSubImage.h:\n* Source/WebCore/Sources.txt:\n* Source/WebCore/platform/graphics/gbm/GraphicsContextGLTextureMapperGBM.cpp:\n(WebCore::GraphicsContextGLTextureMapperGBM::enableRequiredWebXRExtensionsImpl):\n* Source/WebCore/platform/graphics/texmap/GraphicsContextGLTextureMapperANGLE.cpp:\n(WebCore::GraphicsContextGLTextureMapperANGLE::enableRequiredWebXRExtensions):\n* Source/WebCore/platform/xr/PlatformXR.h:\n* Source/WebKit/Shared/XR/PlatformXR.serialization.in:\n* Source/WebKit/UIProcess/XR/openxr/OpenXRLayer.cpp:\n(WebKit::OpenXRLayer::exportOpenXRTextureAndroid):\n(WebKit::OpenXRLayer::exportOpenXRTexture):\n(WebKit::OpenXRCubeLayer::create):\n(WebKit::OpenXRCubeLayer::OpenXRCubeLayer):\n(WebKit::OpenXRCubeLayer::~OpenXRCubeLayer):\n(WebKit::OpenXRCubeLayer::startFrame):\n(WebKit::OpenXRCubeLayer::reconstructCubeFaces):\n* Source/WebKit/UIProcess/XR/openxr/OpenXRLayer.h:\n* Source/WebKit/UIProcess/XR/openxr/OpenXRSwapchain.cpp:\n(WebKit::OpenXRSwapchain::create):\n* Source/WebKit/UIProcess/XR/openxr/PlatformXROpenXR.cpp:\n(WebKit::OpenXRCoordinator::createSwapchain const):\n(WebKit::OpenXRCoordinator::createCompositionLayer):\n(WebKit::OpenXRCoordinator::createInstance):\n* Source/WebKit/UIProcess/XR/openxr/PlatformXROpenXR.h:\n\nCanonical link: https://commits.webkit.org/315665@main",
      "email": "svillar@igalia.com",
      "hash": "bccc4656ae3a49244121bd612f08e5dacff7ac64",
      "subject": "[WebXR Layers] Implement Cube layer"
    },
    "315666@main": {
      "author": "Xabier Rodriguez-Calvar",
      "avatar": "https://www.gravatar.com/avatar/3257b1e0e799244d58c3da816e44db00?d=identicon\u0026s=64",
      "cl": "315666@main",
      "clUrl": "https://commits.webkit.org/315666@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=317630\n\nReviewed by Philippe Normand.\n\nPatch by Krishna Priya Kanagaraj \u003ckrishnapriya_kanagaraj@comcast.com\u003e on 2026-06-23\n\nPreviously the GStreamer-based WebRTC encoder factory only advertised a\nsingle Constrained Baseline (level 3.1) H.264 format, which limited\nnegotiation to the most basic profile, while the decoder factory already\nexposed the full set.\n\nMake the encoder factory reuse the shared supportedH264Formats() helper\n(already used by the decoder factory) instead of pushing a lone\nSdpVideoFormat::H264(), so both ends advertise the same Baseline,\nConstrained Baseline, Main, Constrained High, High and Predictive High\n4:4:4 profiles, each at levels 3.1 and 4, and can negotiate\nhigher-quality H.264 streams.\n\nThe profile-level-id strings are derived from the webrtc H264Profile and\nH264Level enums via H264ProfileLevelIdToString(), so no changes to the\nimported libwebrtc sources are needed and the patch survives a libwebrtc\nresync.\n\n* Source/WebCore/platform/mediastream/libwebrtc/gstreamer/GStreamerVideoCommon.cpp:\n(WebCore::supportedH264Formats):\n* Source/WebCore/platform/mediastream/libwebrtc/gstreamer/GStreamerVideoEncoderFactory.cpp:\n(WebCore::GStreamerVideoEncoderFactory::GetSupportedFormats const):\n\nCanonical link: https://commits.webkit.org/315666@main",
      "email": "calvaris@igalia.com",
      "hash": "fbd28f975e493904d6b5de1e4531a8993a396c5f",
      "subject": "[GStreamer][WebRTC] Advertise additional H.264 profiles and levels for encoding"
    },
    "315667@main": {
      "author": "Youenn Fablet",
      "avatar": "https://www.gravatar.com/avatar/0a9886e582a7aee1eb908eb59af36da4?d=identicon\u0026s=64",
      "cl": "315667@main",
      "clUrl": "https://commits.webkit.org/315667@main",
      "description": "rdar://180017669\nhttps://bugs.webkit.org/show_bug.cgi?id=317394\n\nReviewed by Jean-Yves Avenard.\n\nSource/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx: Resynced.\n\nCanonical link: https://commits.webkit.org/315667@main",
      "email": "youenn@apple.com",
      "hash": "c9cb0107107d8eb08f3e5c72011851e700d96456",
      "subject": "Resync libwebrtc/libvpx up to M150"
    },
    "315668@main": {
      "author": "Jean-Yves Avenard",
      "avatar": "https://www.gravatar.com/avatar/509313899deeb9262fad8f5e04093f5b?d=identicon\u0026s=64",
      "cl": "315668@main",
      "clUrl": "https://commits.webkit.org/315668@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=317587\nrdar://180297140\n\nReviewed by Youenn Fablet.\n\nOriginally, the MediaSource object was the source of truth object to\ndetermine the buffered ranges as contained by all the SourceBuffers.\nBefore a seek could proceeed we had to ensure buffered content was present\nat the seek target.\nThe MediaSourcePrivate is now the source of truth for buffered range\ncalculations, we no longer need to jump back to the MediaSource and its\nrunning thread (main or worker). We can directly handle the waitForTarget\non the MediaSourcePrivate and remove now uncessary code.\n\nNo observable changes, covered by existing tests.\n\n* Source/WebCore/Modules/mediasource/MediaSource.cpp:\n(WebCore::MediaSource::currentTime const):\n(WebCore::MediaSource::monitorSourceBuffers):\n(WebCore::MediaSource::stop):\n(WebCore::MediaSource::onReadyStateChange):\n(WebCore::MediaSource::waitForTarget): Deleted.\n(WebCore::MediaSource::completeSeek): Deleted.\n* Source/WebCore/Modules/mediasource/MediaSource.h:\n(WebCore::MediaSource::isSeeking const): Deleted.\n* Source/WebCore/Modules/mediasource/SourceBuffer.cpp:\n(WebCore::SourceBuffer::computeSeekTime): Deleted.\n* Source/WebCore/Modules/mediasource/SourceBuffer.h:\n* Source/WebCore/platform/graphics/MediaSourcePrivate.cpp:\n(WebCore::MediaSourcePrivate::waitForTarget):\n(WebCore::MediaSourcePrivate::cancelPendingWaitForTarget):\n(WebCore::MediaSourcePrivate::canCompleteWaitForTarget const):\n(WebCore::MediaSourcePrivate::completeWaitForTarget):\n(WebCore::MediaSourcePrivate::tryCompleteWaitForTarget):\n(WebCore::MediaSourcePrivate::updateBufferedRanges):\n(WebCore::MediaSourcePrivate::currentTime const):\n* Source/WebCore/platform/graphics/MediaSourcePrivate.h:\n* Source/WebCore/platform/graphics/MediaSourcePrivateClient.h:\n* Source/WebCore/platform/graphics/SourceBufferPrivate.cpp:\n(WebCore::SourceBufferPrivate::computeSeekTime):\n* Source/WebCore/platform/graphics/SourceBufferPrivate.h:\n* Source/WebKit/CMakeLists.txt:\n* Source/WebKit/DerivedSources-input.xcfilelist:\n* Source/WebKit/DerivedSources-output.xcfilelist:\n* Source/WebKit/DerivedSources.make:\n* Source/WebKit/GPUProcess/media/RemoteMediaSourceProxy.cpp:\n(WebKit::RemoteMediaSourceProxy::cancelPendingWaitForTarget):\n(WebKit::RemoteMediaSourceProxy::waitForTarget): Deleted.\n* Source/WebKit/GPUProcess/media/RemoteMediaSourceProxy.h:\n* Source/WebKit/GPUProcess/media/RemoteMediaSourceProxy.messages.in:\n* Source/WebKit/GPUProcess/media/RemoteSourceBufferProxy.cpp:\n(WebKit::RemoteSourceBufferProxy::computeSeekTime): Deleted.\n* Source/WebKit/GPUProcess/media/RemoteSourceBufferProxy.h:\n* Source/WebKit/GPUProcess/media/RemoteSourceBufferProxy.messages.in:\n* Source/WebKit/SourcesCocoa.txt:\n* Source/WebKit/WebKit.xcodeproj/project.pbxproj:\n* Source/WebKit/WebProcess/GPU/GPUProcessConnection.cpp:\n(WebKit::GPUProcessConnection::dispatchMessage):\n* Source/WebKit/WebProcess/GPU/media/MediaSourcePrivateRemote.cpp:\n(WebKit::MediaSourcePrivateRemote::MediaSourcePrivateRemote):\n(WebKit::MediaSourcePrivateRemote::~MediaSourcePrivateRemote):\n(WebKit::MediaSourcePrivateRemote::cancelPendingWaitForTarget):\n(WebKit::MediaSourcePrivateRemote::MessageReceiver::client const): Deleted.\n(WebKit::MediaSourcePrivateRemote::MessageReceiver::proxyWaitForTarget): Deleted.\n(WebKit::MediaSourcePrivateRemote::MessageReceiver::MessageReceiver): Deleted.\n* Source/WebKit/WebProcess/GPU/media/MediaSourcePrivateRemote.h:\n* Source/WebKit/WebProcess/GPU/media/MediaSourcePrivateRemoteMessageReceiver.h: Removed.\n* Source/WebKit/WebProcess/GPU/media/MediaSourcePrivateRemoteMessageReceiver.messages.in: Removed.\n* Source/WebKit/WebProcess/GPU/media/SourceBufferPrivateRemote.cpp:\n(WebKit::SourceBufferPrivateRemote::computeSeekTime): Deleted.\n* Source/WebKit/WebProcess/GPU/media/SourceBufferPrivateRemote.h:\n\nCanonical link: https://commits.webkit.org/315668@main",
      "email": "jya@apple.com",
      "hash": "6c89fdb56e0a2fad75f5cf3fbf55da9e32229144",
      "subject": "[MSE] Move MediaSourceClient::waitForTarget to MediaSourcePrivate only"
    },
    "315669@main": {
      "author": "Tadeu Zagallo",
      "avatar": "https://www.gravatar.com/avatar/d517fd5480efde083cc7b6af36c73ced?d=identicon\u0026s=64",
      "cl": "315669@main",
      "clUrl": "https://commits.webkit.org/315669@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=317338\nrdar://179964276\n\nReviewed by Mike Wyrzykowski.\n\nUpdate TestExpectations to unskip as many shader tests as possible. The remaining\nskipped tests are either timing out or contain failures that make them flaky.\n\n* LayoutTests/http/tests/webgpu/webgpu/shader/execution/expression/binary/f16_matrix_matrix_multiplication-expected.txt:\n* LayoutTests/http/tests/webgpu/webgpu/shader/execution/expression/call/builtin/textureSampleBaseClampToEdge-expected.txt:\n* LayoutTests/http/tests/webgpu/webgpu/shader/execution/memory_layout-expected.txt:\n* LayoutTests/http/tests/webgpu/webgpu/shader/validation/expression/call/builtin/mix-expected.txt:\n* LayoutTests/platform/mac-wk2/TestExpectations:\n\nCanonical link: https://commits.webkit.org/315669@main",
      "email": "tzagallo@apple.com",
      "hash": "b1051ca1b5e901513c5521aa4533dc8fee91cd24",
      "subject": "[WebGPU] Unskip as many tests as possible"
    },
    "315670@main": {
      "author": "Youenn Fablet",
      "avatar": "https://www.gravatar.com/avatar/0a9886e582a7aee1eb908eb59af36da4?d=identicon\u0026s=64",
      "cl": "315670@main",
      "clUrl": "https://commits.webkit.org/315670@main",
      "description": "rdar://180101209\nhttps://bugs.webkit.org/show_bug.cgi?id=317476\n\nReviewed by Jean-Yves Avenard.\n\nWe resync up to libaom M150 version.\nWe also disable the aom decoder as it is not actualled used by WebKit.\n\n* Source/ThirdParty/libwebrtc/Source/third_party/libaom/source: Resynced.\n* Source/ThirdParty/libwebrtc/Configurations/BaseTarget-libaom.xcconfig:\n* Source/ThirdParty/libwebrtc/Source/webrtc/webkit_sdk/objc/api/video_codec/RTCVideoDecoderAV1.h: Removed.\n* Source/ThirdParty/libwebrtc/Source/webrtc/webkit_sdk/objc/api/video_codec/RTCVideoDecoderAV1.mm: Removed.\n* Source/ThirdParty/libwebrtc/Source/webrtc/webkit_sdk/objc/components/video_codec/RTCDefaultVideoDecoderFactory.m:\n(-[RTCDefaultVideoDecoderFactory createDecoder:]):\n* Source/ThirdParty/libwebrtc/libwebrtc.xcodeproj/project.pbxproj:\n    hirdParty/libwebrtc/Source/third_party/libaom/source/libaom:\n\nCanonical link: https://commits.webkit.org/315670@main",
      "email": "youenn@apple.com",
      "hash": "4915364aa76402d80037222809cfdfb92f8eeb1d",
      "subject": "Resync libwebrtc/libaom up to M150"
    },
    "315671@main": {
      "author": "Abrar Rahman Protyasha",
      "avatar": "https://www.gravatar.com/avatar/fce5b3c4e9f3c59a4873e08c9f03c3b1?d=identicon\u0026s=64",
      "cl": "315671@main",
      "clUrl": "https://commits.webkit.org/315671@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=317647\nrdar://180396220\n\nUnreviewed build fix.\n\nWK_API_AVAILABLE(...) needs to be followed by the platform identifier\n(macos, ios, visionos) as well as a platform version where said API is\nintroduced. As such, WK_API_AVAILABLE(WK_MAC_TBA) is not a valid\nannotation. This patch fixes the issue by prefixing with `macos(...)`,\nalleviating this build failure:\n\n```\nWKWebView.h:748:69: error: pasting formed '__API_AVAILABLE_PLATFORM_26.0', an invalid preprocessing token\n  748 | @property (strong, nullable) NSRefreshController *refreshController API_AVAILABLE(26.0);\n```\n\n* Source/WebKit/UIProcess/API/Cocoa/WKWebView.h:\n\nCanonical link: https://commits.webkit.org/315671@main",
      "email": "a_protyasha@apple.com",
      "hash": "3b557ac625a08ae75c3ea41bcbabbe5e816adb10",
      "subject": "REGRESSION(315639@main): Broke internal macOS builds (invalid preprocessing token in refreshController API declaration)"
    },
    "315672@main": {
      "author": "Michael Catanzaro",
      "avatar": "https://www.gravatar.com/avatar/213b4484d2078dbdd03dcd3256564c2c?d=identicon\u0026s=64",
      "cl": "315672@main",
      "clUrl": "https://commits.webkit.org/315672@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=317606\n\nReviewed by Carlos Garcia Campos.\n\nTesting for -Werror is extremely likely to fail because configure tests\noften trigger warnings, and, well, this is -Werror, after all. This\nparticular flag just inherently requires special handling. Since we are\nalready manually testing the compiler in order to choose the correct\nflag to use, just get rid of the test for -Werror.\n\nAlso, fix some warnings. Remove an unused OpenSSLHelper function, and\nbuild with -fno-strict-aliasing for all ports because WTFString.h\ncontains type punning code that requires it.\n\nCanonical link: https://commits.webkit.org/315672@main",
      "email": "mcatanzaro@gnome.org",
      "hash": "69d26bab209f29f7ae25706c5d78aae791d08210",
      "subject": "DEVELOPER_MODE_FATAL_WARNINGS is broken on EWS"
    },
    "315673@main": {
      "author": "Wenson Hsieh",
      "avatar": "https://www.gravatar.com/avatar/c8fba82556fd4988c78bd3a0aee2a44e?d=identicon\u0026s=64",
      "cl": "315673@main",
      "clUrl": "https://commits.webkit.org/315673@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=317612\nrdar://180343820\n\nReviewed by Abrar Rahman Protyasha.\n\nUpstream a couple of codepaths from WebKitAdditions:\n1. `HAVE_SAFARI_SAFE_BROWSING_NAMESPACED_LISTS` and associated codepaths.\n2. The text extraction filtering CoreML model.\n\n* Source/WTF/wtf/PlatformEnableCocoa.h:\n* Source/WebKit/Configurations/WebKit.xcconfig:\n* Source/WebKit/PlatformIOS.cmake:\n* Source/WebKit/PlatformMac.cmake:\n* Source/WebKit/Resources/TextExtractionFilter.mlmodel: Added.\n* Source/WebKit/UIProcess/Cocoa/SafeBrowsingUtilities.h:\n* Source/WebKit/UIProcess/Cocoa/SafeBrowsingUtilities.mm:\n(WebKit::SafeBrowsingUtilities::namespacedCollectionForTextExtraction): Deleted.\n* Source/WebKit/UIProcess/Cocoa/TextExtraction/WKTextExtractionUtilities.h:\n* Source/WebKit/UIProcess/Cocoa/TextExtraction/WKTextExtractionUtilities.mm:\n(WebKit::requestTextExtractionFilterRuleData):\n* Source/WebKit/WebKit.xcodeproj/project.pbxproj:\n* Tools/TestWebKitAPI/Tests/WebKit/WKWebView/TextExtractionTests.mm:\n\nCanonical link: https://commits.webkit.org/315673@main",
      "email": "wenson_hsieh@apple.com",
      "hash": "9903df3c16330e59d8d2b35cf0e3e1c1e72b3443",
      "subject": "[Text Extraction] Upstream some support for Automatic Password Change from WebKitAdditions"
    },
    "315674@main": {
      "author": "Nikolas Zimmermann",
      "avatar": "https://www.gravatar.com/avatar/83cbd636495835720e369cd589e3ca5e?d=identicon\u0026s=64",
      "cl": "315674@main",
      "clUrl": "https://commits.webkit.org/315674@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=317592\n\nReviewed by Simon Fraser.\n\nIn the layer-based SVG engine a layered SVG container paints its children from a\nsingle flat list in DOM order, which is also SVG paint order. Most children paint\nstraight into the container's own backing store. Some children are composited and\nown a GraphicsLayer of their own, for reasons like will-change, a 3D transform, or\ncertain opacity cases. We call such a composited child an anchor.\n\nThe hard part is the plain, non-composited children that sit between two anchors in\npaint order, or after the last anchor. The compositor draws each anchor as a separate\nsibling GraphicsLayer, so if every such child painted into the container's one backing\nstore they would all end up either behind or in front of the anchors and lose their\nDOM order.\n\nTo keep the order correct, the flat child list is divided into contiguous paint-order\nsegments at the anchor boundaries. The leading run, meaning everything up to and\nincluding the first anchor, is painted by the container's own primary layer. Each\nlater run of non-composited children gets its own overlay GraphicsLayer named\n\"(svg segment N)\", placed in the compositor's child list right after the anchor it\nfollows - to ensure it draws at the correct depth. Each overlay paints only its own\npart of the list, described as a half-open [begin, end) range of indices into the flat\nlist. That range is passed down the SVG paint path as an argument to the relevant paint\nmethods, so a child layer painted through its own paint call never inherits it and\ncannot paint the wrong slice.\n\nTo illustrate the functionality, let's dissect this example:\n\n  \u003cg style=\"will-change: transform\"\u003e        container, owns a backing store\n    \u003crect id=\"r1\"/\u003e                          leading run\n    \u003crect id=\"a1\" style=\"will-change: ...\"/\u003e anchor (own GraphicsLayer)\n    \u003crect id=\"r2\"/\u003e                          between anchors\n    \u003crect id=\"r3\"/\u003e\n    \u003crect id=\"a2\" style=\"will-change: ...\"/\u003e anchor (own GraphicsLayer)\n    \u003crect id=\"r4\"/\u003e                          after last anchor\n  \u003c/g\u003e\n\nThe flat list is [r1, a1, r2, r3, a2, r4]. The compositor then emits, in this order:\nthe primary layer painting slice [0, 1), which is r1, then a1's own layer, then an\n\"overlay\" painting slice [2, 4), which is r2 and r3, then a2's own layer, and finally\nan overlay painting slice [4, 6), which is r4. Every child keeps its DOM order, and\nno trailing sibling needs a RenderLayer (or backing store) of its own. A container with\nno composited children produces no segments and no overlays at all, so the common\ncase costs nothing, which is an important design goal -- we never want to penalize\nthe non-composited painting paths, or introduce performance pitfalls.\n\nThe segment set is recomputed from the post-compositing state, and the overlay layers\nare matched to it again whenever the flat list or the compositing state changes. A\nhandful of details follow from this design:\n\nAn anchor can be _derived_, meaning it anchors only because it hosts a composited\ndescendant and has no backing store of its own. A derived anchor paints inline, so the\nsegment that ends at it must be emitted even when the run before it is empty, otherwise\nits own content would never be drawn by any layer.\n\nRenderSVGForeignObject is special: it's an SVG layer, but it paints its HTML subtree\nwith HTML-style z-order list painting (not using the paintChildrenInDOMOrderForSVG path)\nso it does not contribute to segment building.\n\nAn SVG layer is made a stacking context once, at style time. This keeps a composited\nchild inside the container's own paint-order lists instead of letting it escape to an\nancestor, which is what the segmentation relies on. Doing it at style time keeps it\naway from the compositing traversal, where mutating the z-order lists is not allowed.\n\nFor an untransformed container, each overlay's backing store is cropped on all sides\nto the bounds of the slice it paints, so a small slice in a large container does not\nallocate a full-container backing. A transformed container keeps the full\nforeground-sized backing instead, because shifting the overlay's origin under a\ntransform makes the compositor misplace it. This will be addressed in a follow-up PR.\nInvalidation is scoped the same way, so a repaint redraws only the overlays whose\nslice it actually touches.\n\nA new svg/compositing test suite covers anchors with non-composited siblings, leading\nand trailing runs, nested and mixed cases, adjacent and derived anchors,\nforeignObject handling, the stacking-context property, and dynamic insert, remove,\nand reparent updates, along with the matching layer-tree rebaselines....\n\nThe pre-existing foreground-layer-*.svg tests are renamed to segment-*.svg and their\ncomments corrected to describe the overlay-segment mechanism they actually exercise: a\nforeground layer is never built for non-foreignObject SVG content, so these always went\nthrough segmentation.\n\n* LayoutTests/TestExpectations:\n* LayoutTests/platform/glib/svg/compositing/transform-change-repainting-no-viewBox-repaintRects-expected.txt: Removed.\n* LayoutTests/platform/glib/svg/compositing/transform-change-repainting-viewBox-repaintRects-expected.txt: Removed.\n* LayoutTests/platform/mac-tahoe-wk2-lbse-text/TestExpectations:\n* LayoutTests/svg/compositing/adjacent-derived-composited-anchors-expected.html: Added.\n* LayoutTests/svg/compositing/adjacent-derived-composited-anchors-with-trailing-expected.html: Added.\n* LayoutTests/svg/compositing/adjacent-derived-composited-anchors-with-trailing.html: Added.\n* LayoutTests/svg/compositing/adjacent-derived-composited-anchors.html: Added.\n* LayoutTests/svg/compositing/child-between-derived-composited-anchors-expected.html: Added.\n* LayoutTests/svg/compositing/child-between-derived-composited-anchors-layer-tree-expected.txt: Added.\n* LayoutTests/svg/compositing/child-between-derived-composited-anchors-layer-tree.html: Added.\n* LayoutTests/svg/compositing/child-between-derived-composited-anchors.html: Added.\n* LayoutTests/svg/compositing/filtered-container-with-composited-child-expected.svg: Added.\n* LayoutTests/svg/compositing/filtered-container-with-composited-child.svg: Added.\n* LayoutTests/svg/compositing/foreground-layer-noncomposited-overlapping-later-composited.svg: Removed.\n* LayoutTests/svg/compositing/foreign-object-composited-children-no-segments-expected.html: Added.\n* LayoutTests/svg/compositing/foreign-object-composited-children-no-segments.html: Added.\n* LayoutTests/svg/compositing/g-container-between-composited-siblings-expected.html: Added.\n* LayoutTests/svg/compositing/g-container-between-composited-siblings-layer-tree-expected.txt: Added.\n* LayoutTests/svg/compositing/g-container-between-composited-siblings-layer-tree.html: Added.\n* LayoutTests/svg/compositing/g-container-between-composited-siblings.html: Added.\n* LayoutTests/svg/compositing/g-with-multiple-children-between-composited-siblings-expected.html: Added.\n* LayoutTests/svg/compositing/g-with-multiple-children-between-composited-siblings-layer-tree-expected.txt: Added.\n* LayoutTests/svg/compositing/g-with-multiple-children-between-composited-siblings-layer-tree.html: Added.\n* LayoutTests/svg/compositing/g-with-multiple-children-between-composited-siblings.html: Added.\n* LayoutTests/svg/compositing/multiple-children-between-composited-siblings-expected.html: Added.\n* LayoutTests/svg/compositing/multiple-children-between-composited-siblings-layer-tree-expected.txt: Added.\n* LayoutTests/svg/compositing/multiple-children-between-composited-siblings-layer-tree.html: Added.\n* LayoutTests/svg/compositing/multiple-children-between-composited-siblings.html: Added.\n* LayoutTests/svg/compositing/multiple-children-with-mixed-anchor-types-expected.html: Added.\n* LayoutTests/svg/compositing/multiple-children-with-mixed-anchor-types-layer-tree-expected.txt: Added.\n* LayoutTests/svg/compositing/multiple-children-with-mixed-anchor-types-layer-tree.html: Added.\n* LayoutTests/svg/compositing/multiple-children-with-mixed-anchor-types.html: Added.\n* LayoutTests/svg/compositing/nested-segments-at-multiple-depths-expected.html: Added.\n* LayoutTests/svg/compositing/nested-segments-at-multiple-depths-layer-tree-expected.txt: Added.\n* LayoutTests/svg/compositing/nested-segments-at-multiple-depths-layer-tree.html: Added.\n* LayoutTests/svg/compositing/nested-segments-at-multiple-depths.html: Added.\n* LayoutTests/svg/compositing/non-composited-child-after-last-composited-sibling-expected.html: Added.\n* LayoutTests/svg/compositing/non-composited-child-after-last-composited-sibling-layer-tree-expected.txt: Added.\n* LayoutTests/svg/compositing/non-composited-child-after-last-composited-sibling-layer-tree.html: Added.\n* LayoutTests/svg/compositing/non-composited-child-after-last-composited-sibling.html: Added.\n* LayoutTests/svg/compositing/non-composited-child-between-composited-siblings-expected.html: Added.\n* LayoutTests/svg/compositing/non-composited-child-between-composited-siblings-layer-tree-expected.txt: Added.\n* LayoutTests/svg/compositing/non-composited-child-between-composited-siblings-layer-tree.html: Added.\n* LayoutTests/svg/compositing/non-composited-child-between-composited-siblings.html: Added.\n* LayoutTests/svg/compositing/non-rect-shape-between-composited-siblings-expected.html: Added.\n* LayoutTests/svg/compositing/non-rect-shape-between-composited-siblings-layer-tree-expected.txt: Added.\n* LayoutTests/svg/compositing/non-rect-shape-between-composited-siblings-layer-tree.html: Added.\n* LayoutTests/svg/compositing/non-rect-shape-between-composited-siblings.html: Added.\n* LayoutTests/svg/compositing/paint-order-in-nested-transformed-groups-expected.html: Added.\n* LayoutTests/svg/compositing/paint-order-in-nested-transformed-groups.html: Added.\n* LayoutTests/svg/compositing/paint-order-in-offset-viewbox-expected.html: Added.\n* LayoutTests/svg/compositing/paint-order-in-offset-viewbox.html: Added.\n* LayoutTests/svg/compositing/paint-order-in-scaled-group-expected.html: Added.\n* LayoutTests/svg/compositing/paint-order-in-scaled-group.html: Added.\n* LayoutTests/svg/compositing/paint-order-in-scaled-viewbox-expected.html: Added.\n* LayoutTests/svg/compositing/paint-order-in-scaled-viewbox.html: Added.\n* LayoutTests/svg/compositing/paint-order-in-scaled-willchange-group-expected.html: Added.\n* LayoutTests/svg/compositing/paint-order-in-scaled-willchange-group.html: Added.\n* LayoutTests/svg/compositing/paint-order-in-transformed-group-willchange-inner-expected.html: Added.\n* LayoutTests/svg/compositing/paint-order-in-transformed-group-willchange-inner.html: Added.\n* LayoutTests/svg/compositing/paint-order-in-translated-group-expected.html: Added.\n* LayoutTests/svg/compositing/paint-order-in-translated-group.html: Added.\n* LayoutTests/svg/compositing/paint-order-in-willchange-group-expected.html: Added.\n* LayoutTests/svg/compositing/paint-order-in-willchange-group.html: Added.\n* LayoutTests/svg/compositing/rect-between-composited-anchors-expected.html: Added.\n* LayoutTests/svg/compositing/rect-between-composited-anchors-layer-tree-expected.txt: Added.\n* LayoutTests/svg/compositing/rect-between-composited-anchors-layer-tree.html: Added.\n* LayoutTests/svg/compositing/rect-between-composited-anchors.html: Added.\n* LayoutTests/svg/compositing/segment-added-after-anchor-element-inserted-expected.html: Added.\n* LayoutTests/svg/compositing/segment-added-after-anchor-element-inserted-layer-tree-expected.txt: Added.\n* LayoutTests/svg/compositing/segment-added-after-anchor-element-inserted-layer-tree.html: Added.\n* LayoutTests/svg/compositing/segment-added-after-anchor-element-inserted.html: Added.\n* LayoutTests/svg/compositing/segment-all-children-composited-expected.svg: Renamed from LayoutTests/svg/compositing/foreground-layer-all-children-composited-expected.svg.\n* LayoutTests/svg/compositing/segment-all-children-composited.svg: Renamed from LayoutTests/svg/compositing/foreground-layer-all-children-composited.svg.\n* LayoutTests/svg/compositing/segment-composited-group-expected.svg: Renamed from LayoutTests/svg/compositing/foreground-layer-composited-group-expected.svg.\n* LayoutTests/svg/compositing/segment-composited-group.svg: Renamed from LayoutTests/svg/compositing/foreground-layer-composited-group.svg.\n* LayoutTests/svg/compositing/segment-composited-rect-with-svg-transform-expected.svg: Renamed from LayoutTests/svg/compositing/foreground-layer-composited-rect-with-svg-transform-expected.svg.\n* LayoutTests/svg/compositing/segment-composited-rect-with-svg-transform.svg: Renamed from LayoutTests/svg/compositing/foreground-layer-composited-rect-with-svg-transform.svg.\n* LayoutTests/svg/compositing/segment-composited-transformed-group-between-rects-expected.svg: Renamed from LayoutTests/svg/compositing/foreground-layer-composited-transformed-group-between-rects-expected.svg.\n* LayoutTests/svg/compositing/segment-composited-transformed-group-between-rects.svg: Renamed from LayoutTests/svg/compositing/foreground-layer-composited-transformed-group-between-rects.svg.\n* LayoutTests/svg/compositing/segment-composited-with-css-transform-expected.svg: Renamed from LayoutTests/svg/compositing/foreground-layer-composited-with-css-transform-expected.svg.\n* LayoutTests/svg/compositing/segment-composited-with-css-transform.svg: Renamed from LayoutTests/svg/compositing/foreground-layer-composited-with-css-transform.svg.\n* LayoutTests/svg/compositing/segment-composited-with-opacity-expected.svg: Renamed from LayoutTests/svg/compositing/foreground-layer-composited-with-opacity-expected.svg.\n* LayoutTests/svg/compositing/segment-composited-with-opacity.svg: Renamed from LayoutTests/svg/compositing/foreground-layer-composited-with-opacity.svg.\n* LayoutTests/svg/compositing/segment-composited-with-z-index-expected.svg: Renamed from LayoutTests/svg/compositing/foreground-layer-composited-with-z-index-expected.svg.\n* LayoutTests/svg/compositing/segment-composited-with-z-index.svg: Renamed from LayoutTests/svg/compositing/foreground-layer-composited-with-z-index.svg.\n* LayoutTests/svg/compositing/segment-consecutive-composited-children-expected.svg: Renamed from LayoutTests/svg/compositing/foreground-layer-consecutive-composited-children-expected.svg.\n* LayoutTests/svg/compositing/segment-consecutive-composited-children.svg: Renamed from LayoutTests/svg/compositing/foreground-layer-consecutive-composited-children.svg.\n* LayoutTests/svg/compositing/segment-content-between-composited-children-expected.svg: Renamed from LayoutTests/svg/compositing/foreground-layer-content-between-composited-children-expected.svg.\n* LayoutTests/svg/compositing/segment-content-between-composited-children.svg: Renamed from LayoutTests/svg/compositing/foreground-layer-content-between-composited-children.svg.\n* LayoutTests/svg/compositing/segment-content-far-from-origin-expected.html: Added.\n* LayoutTests/svg/compositing/segment-content-far-from-origin.html: Added.\n* LayoutTests/svg/compositing/segment-first-child-composited-expected.svg: Renamed from LayoutTests/svg/compositing/foreground-layer-first-child-composited-expected.svg.\n* LayoutTests/svg/compositing/segment-first-child-composited.svg: Renamed from LayoutTests/svg/compositing/foreground-layer-first-child-composited.svg.\n* LayoutTests/svg/compositing/segment-invalidation-updates-one-slice-expected.html: Added.\n* LayoutTests/svg/compositing/segment-invalidation-updates-one-slice.html: Added.\n* LayoutTests/svg/compositing/segment-last-child-composited-expected.svg: Renamed from LayoutTests/svg/compositing/foreground-layer-last-child-composited-expected.svg.\n* LayoutTests/svg/compositing/segment-last-child-composited.svg: Renamed from LayoutTests/svg/compositing/foreground-layer-last-child-composited.svg.\n* LayoutTests/svg/compositing/segment-mixed-composited-elements-expected.svg: Renamed from LayoutTests/svg/compositing/foreground-layer-mixed-composited-elements-expected.svg.\n* LayoutTests/svg/compositing/segment-mixed-composited-elements.svg: Renamed from LayoutTests/svg/compositing/foreground-layer-mixed-composited-elements.svg.\n* LayoutTests/svg/compositing/segment-nested-group-with-composited-child-expected.svg: Renamed from LayoutTests/svg/compositing/foreground-layer-nested-group-with-composited-child-expected.svg.\n* LayoutTests/svg/compositing/segment-nested-group-with-composited-child.svg: Renamed from LayoutTests/svg/compositing/foreground-layer-nested-group-with-composited-child.svg.\n* LayoutTests/svg/compositing/segment-no-composited-children-expected.svg: Renamed from LayoutTests/svg/compositing/foreground-layer-no-composited-children-expected.svg.\n* LayoutTests/svg/compositing/segment-no-composited-children.svg: Renamed from LayoutTests/svg/compositing/foreground-layer-no-composited-children.svg.\n* LayoutTests/svg/compositing/segment-noncomposited-overlapping-later-composited-expected.svg: Renamed from LayoutTests/svg/compositing/foreground-layer-noncomposited-overlapping-later-composited-expected.svg.\n* LayoutTests/svg/compositing/segment-noncomposited-overlapping-later-composited.svg: Added.\n* LayoutTests/svg/compositing/segment-only-composited-child-expected.svg: Renamed from LayoutTests/svg/compositing/foreground-layer-only-composited-child-expected.svg.\n* LayoutTests/svg/compositing/segment-only-composited-child.svg: Renamed from LayoutTests/svg/compositing/foreground-layer-only-composited-child.svg.\n* LayoutTests/svg/compositing/segment-overlapping-composited-children-expected.svg: Renamed from LayoutTests/svg/compositing/foreground-layer-overlapping-composited-children-expected.svg.\n* LayoutTests/svg/compositing/segment-overlapping-composited-children.svg: Renamed from LayoutTests/svg/compositing/foreground-layer-overlapping-composited-children.svg.\n* LayoutTests/svg/compositing/segment-overlay-in-rotated-container-expected.html: Added.\n* LayoutTests/svg/compositing/segment-overlay-in-rotated-container.html: Added.\n* LayoutTests/svg/compositing/segment-overlay-in-scaled-container-expected.html: Added.\n* LayoutTests/svg/compositing/segment-overlay-in-scaled-container-layer-tree-expected.txt: Added.\n* LayoutTests/svg/compositing/segment-overlay-in-scaled-container-layer-tree.html: Added.\n* LayoutTests/svg/compositing/segment-overlay-in-scaled-container-with-transformed-leaf-expected.html: Added.\n* LayoutTests/svg/compositing/segment-overlay-in-scaled-container-with-transformed-leaf.html: Added.\n* LayoutTests/svg/compositing/segment-overlay-in-scaled-container.html: Added.\n* LayoutTests/svg/compositing/segment-overlay-in-svg-transformed-container-expected.html: Added.\n* LayoutTests/svg/compositing/segment-overlay-in-svg-transformed-container.html: Added.\n* LayoutTests/svg/compositing/segment-overlay-in-translated-container-expected.html: Added.\n* LayoutTests/svg/compositing/segment-overlay-in-translated-container-layer-tree-expected.txt: Added.\n* LayoutTests/svg/compositing/segment-overlay-in-translated-container-layer-tree.html: Added.\n* LayoutTests/svg/compositing/segment-overlay-in-translated-container.html: Added.\n* LayoutTests/svg/compositing/segment-overlay-in-untransformed-container-expected.html: Added.\n* LayoutTests/svg/compositing/segment-overlay-in-untransformed-container-layer-tree-expected.txt: Added.\n* LayoutTests/svg/compositing/segment-overlay-in-untransformed-container-layer-tree.html: Added.\n* LayoutTests/svg/compositing/segment-overlay-in-untransformed-container.html: Added.\n* LayoutTests/svg/compositing/segment-overlay-with-transformed-leaf-expected.html: Added.\n* LayoutTests/svg/compositing/segment-overlay-with-transformed-leaf.html: Added.\n* LayoutTests/svg/compositing/segment-reassociated-after-trailing-child-moved-expected.html: Added.\n* LayoutTests/svg/compositing/segment-reassociated-after-trailing-child-moved.html: Added.\n* LayoutTests/svg/compositing/segment-removed-after-anchor-decomposited-expected.html: Added.\n* LayoutTests/svg/compositing/segment-removed-after-anchor-decomposited-layer-tree-expected.txt: Added.\n* LayoutTests/svg/compositing/segment-removed-after-anchor-decomposited-layer-tree.html: Added.\n* LayoutTests/svg/compositing/segment-removed-after-anchor-decomposited.html: Added.\n* LayoutTests/svg/compositing/segment-removed-after-anchor-element-removed-expected.html: Added.\n* LayoutTests/svg/compositing/segment-removed-after-anchor-element-removed-layer-tree-expected.txt: Added.\n* LayoutTests/svg/compositing/segment-removed-after-anchor-element-removed-layer-tree.html: Added.\n* LayoutTests/svg/compositing/segment-removed-after-anchor-element-removed.html: Added.\n* LayoutTests/svg/compositing/segment-removed-after-derived-anchor-decomposited-expected.html: Added.\n* LayoutTests/svg/compositing/segment-removed-after-derived-anchor-decomposited-layer-tree-expected.txt: Added.\n* LayoutTests/svg/compositing/segment-removed-after-derived-anchor-decomposited-layer-tree.html: Added.\n* LayoutTests/svg/compositing/segment-removed-after-derived-anchor-decomposited.html: Added.\n* LayoutTests/svg/compositing/segment-removed-after-reparenting-expected.html: Added.\n* LayoutTests/svg/compositing/segment-removed-after-reparenting-layer-tree-expected.txt: Added.\n* LayoutTests/svg/compositing/segment-removed-after-reparenting-layer-tree.html: Added.\n* LayoutTests/svg/compositing/segment-removed-after-reparenting.html: Added.\n* LayoutTests/svg/compositing/segment-single-composited-child-expected.svg: Renamed from LayoutTests/svg/compositing/foreground-layer-single-composited-child-expected.svg.\n* LayoutTests/svg/compositing/segment-single-composited-child.svg: Renamed from LayoutTests/svg/compositing/foreground-layer-single-composited-child.svg.\n* LayoutTests/svg/compositing/segment-three-composited-children-expected.svg: Renamed from LayoutTests/svg/compositing/foreground-layer-three-composited-children-expected.svg.\n* LayoutTests/svg/compositing/segment-three-composited-children.svg: Renamed from LayoutTests/svg/compositing/foreground-layer-three-composited-children.svg.\n* LayoutTests/svg/compositing/small-segment-in-large-container-expected.html: Added.\n* LayoutTests/svg/compositing/small-segment-in-large-container.html: Added.\n* LayoutTests/svg/compositing/svg-container-decomposite-no-stacking-context-mutation-expected.html: Added.\n* LayoutTests/svg/compositing/svg-container-decomposite-no-stacking-context-mutation.html: Added.\n* LayoutTests/svg/compositing/text-after-composited-anchor-slice-bounds-expected.svg: Added.\n* LayoutTests/svg/compositing/text-after-composited-anchor-slice-bounds-layer-tree-expected.txt: Added.\n* LayoutTests/svg/compositing/text-after-composited-anchor-slice-bounds-layer-tree.html: Added.\n* LayoutTests/svg/compositing/text-after-composited-anchor-slice-bounds.svg: Added.\n* LayoutTests/svg/compositing/three-adjacent-derived-composited-anchors-expected.html: Added.\n* LayoutTests/svg/compositing/three-adjacent-derived-composited-anchors.html: Added.\n* LayoutTests/svg/compositing/transform-change-repainting-no-viewBox-repaintRects-expected.txt:\n* Source/WebCore/SaferCPPExpectations/UncheckedCallArgsCheckerExpectations:\n* Source/WebCore/SaferCPPExpectations/UncheckedLocalVarsCheckerExpectations:\n* Source/WebCore/SaferCPPExpectations/UncountedCallArgsCheckerExpectations:\n* Source/WebCore/SaferCPPExpectations/UncountedLocalVarsCheckerExpectations:\n* Source/WebCore/Sources.txt:\n* Source/WebCore/WebCore.xcodeproj/project.pbxproj:\n* Source/WebCore/rendering/RenderLayer.cpp:\n(WebCore::RenderLayer::paintLayerContents):\n(WebCore::RenderLayer::calculateClipRects const):\n* Source/WebCore/rendering/RenderLayer.h:\n* Source/WebCore/rendering/RenderLayerBacking.cpp:\n(WebCore::RenderLayerBacking::~RenderLayerBacking):\n(WebCore::RenderLayerBacking::updateDebugIndicators):\n(WebCore::RenderLayerBacking::destroyGraphicsLayers):\n(WebCore::RenderLayerBacking::updateAllowsBackingStoreDetaching):\n(WebCore::RenderLayerBacking::updateConfiguration):\n(WebCore::RenderLayerBacking::updateGeometry):\n(WebCore::RenderLayerBacking::updateDrawsContent):\n(WebCore::RenderLayerBacking::updateEventRegion):\n(WebCore::RenderLayerBacking::clearInteractionRegions):\n(WebCore::RenderLayerBacking::updatePaintingPhases):\n(WebCore::RenderLayerBacking::setRequiresOwnBackingStore):\n(WebCore::RenderLayerBacking::setContentsNeedDisplay):\n(WebCore::RenderLayerBacking::setContentsNeedDisplayInRect):\n(WebCore::RenderLayerBacking::paintIntoLayer):\n(WebCore::RenderLayerBacking::paintContents):\n(WebCore::RenderLayerBacking::backingStoreMemoryEstimate const):\n* Source/WebCore/rendering/RenderLayerBacking.h:\n* Source/WebCore/rendering/RenderLayerBackingSVGAdditions.cpp: Added.\n(WebCore::RenderLayerBacking::updateSVGSegmentLayers):\n(WebCore::RenderLayerBacking::clearSVGSegmentLayers):\n(WebCore::RenderLayerBacking::svgSegmentLayerAfterCompositedChild const):\n(WebCore::RenderLayerBacking::svgSegmentRangeForGraphicsLayer const):\n(WebCore::RenderLayerBacking::computeSVGSegmentBounds):\n(WebCore::RenderLayerBacking::updateSVGSegmentLayerGeometry):\n(WebCore::RenderLayerBacking::svgSegmentHasInlineContent):\n(WebCore::RenderLayerBacking::updateSVGSegmentLayersDrawsContent):\n(WebCore::RenderLayerBacking::setSVGSegmentLayersNeedDisplayInRect):\n* Source/WebCore/rendering/RenderLayerCompositor.cpp:\n(WebCore::RenderLayerCompositor::updateRepaintRectsAfterCompositingChange):\n(WebCore::RenderLayerCompositor::computeCompositingRequirements):\n(WebCore::RenderLayerCompositor::updateBackingAndHierarchy):\n(WebCore::RenderLayerCompositor::updateBacking):\n(WebCore::RenderLayerCompositor::canBeComposited const):\n(WebCore::RenderLayerCompositor::requiresCompositingForTransform const):\n(WebCore::RenderLayerCompositor::needsContentsCompositingLayer const):\n(WebCore::RenderLayerCompositor::layerHas3DContent const):\n(WebCore::styleHas3DTransformOperation): Deleted.\n* Source/WebCore/rendering/RenderLayerCompositor.h:\n* Source/WebCore/rendering/RenderLayerModelObject.cpp:\n(WebCore::RenderLayerModelObject::createLayerIfAllowed):\n(WebCore::RenderLayerModelObject::removeOnlyThisLayerWithRepaint):\n(WebCore::RenderLayerModelObject::styleDidChange):\n* Source/WebCore/rendering/RenderLayerModelObject.h:\n* Source/WebCore/rendering/RenderLayerSVGAdditions.cpp:\n(WebCore::RenderLayer::paintForegroundChildrenForSVG):\n(WebCore::RenderLayer::isCompositedSVGPaintOrderChild const):\n(WebCore::RenderLayer::paintsInlineInSVGContainer const):\n(WebCore::RenderLayer::isFlattenedByEnclosingSVGReferenceFilter const):\n(WebCore::RenderLayer::dirtyChildrenInDOMOrderForSVG):\n(WebCore::RenderLayer::invalidateEnclosingSVGContainerSegmentation):\n(WebCore::RenderLayer::paintChildrenInDOMOrderForSVG):\n* Source/WebCore/rendering/svg/RenderSVGBlock.h:\n* Source/WebCore/rendering/svg/RenderSVGViewportContainer.cpp:\n(WebCore::RenderSVGViewportContainer::updateFromStyle):\n(WebCore::RenderSVGViewportContainer::overflowClipRect const):\n* Source/WebCore/style/computed/StyleComputedStyle+GettersInlines.h:\n(WebCore::Style::ComputedStyle::has3DTransformOperation const):\n* Source/WebCore/style/computed/StyleComputedStyle.h:\n\nCanonical link: https://commits.webkit.org/315674@main",
      "email": "nzimmermann@igalia.com",
      "hash": "ea0009db79e2559f0ec5de2f5b70ac10299b6b2d",
      "subject": "[LBSE] Preserve paint order of non-composited children around composited SVG siblings"
    },
    "315675@main": {
      "author": "Sam Weinig",
      "avatar": "https://www.gravatar.com/avatar/354b409240f9fb3357f498c547423d96?d=identicon\u0026s=64",
      "cl": "315675@main",
      "clUrl": "https://commits.webkit.org/315675@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=317415\n\nReviewed by Tim Nguyen.\n\nUpdates WPT tests to expect the standard serialization for coordinated value lists\nas implemented in 314242@main.\n\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/animations/background-position-composition-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/animations/background-position-composition.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/animations/background-size-composition-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/animations/background-size-composition.html:\n\nCanonical link: https://commits.webkit.org/315675@main",
      "email": "sam@webkit.org",
      "hash": "6d161b817f6ea269ee9be8b1145b3d7f8558dee7",
      "subject": "[css-backgrounds] Two animation tests started failing with STP 246 after 314242@main"
    },
    "315676@main": {
      "author": "Kimmo Kinnunen",
      "avatar": "https://www.gravatar.com/avatar/7f063a2c9e40666bfe998109608180b7?d=identicon\u0026s=64",
      "cl": "315676@main",
      "clUrl": "https://commits.webkit.org/315676@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=317581\nrdar://problem/180286828\n\nReviewed by Dan Glastonbury.\n\nReset the READ_FRAMEBUFFER binding point only if the framebuffer object\nwas bound to it.\n\nTest: webgl/delete-draw-framebuffer-preserves-read-binding.html\n\n* LayoutTests/webgl/delete-draw-framebuffer-preserves-read-binding-expected.txt: Added.\n* LayoutTests/webgl/delete-draw-framebuffer-preserves-read-binding.html: Added.\n* Source/WebCore/html/canvas/WebGL2RenderingContext.cpp:\n(WebCore::WebGL2RenderingContext::deleteFramebuffer):\n\nCanonical link: https://commits.webkit.org/315676@main",
      "email": "kkinnunen@apple.com",
      "hash": "bfb5f5089189759d16ee77fd878d85dad0db7070",
      "subject": "WebGL: Deleting draw framebuffer modifies read framebuffer binding"
    },
    "315677@main": {
      "author": "Alexey Proskuryakov",
      "avatar": "https://www.gravatar.com/avatar/c66a0fa7958ae738ab34d596994091a4?d=identicon\u0026s=64",
      "cl": "315677@main",
      "clUrl": "https://commits.webkit.org/315677@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=168961\nrdar://problem/72058122\n\nReviewed by Jonathan Bedard.\n\nMigrate manual-case js-tests from testRunner.waitUntilDone()/notifyDone() to\njsTestIsAsync + finishJSTest(); rebaseline where the standard completion footer\nis now emitted.\n\nCanonical link: https://commits.webkit.org/315677@main",
      "email": "ap@apple.com",
      "hash": "b0ca2a318f7cd9f9d78c0807523698ea2204a183",
      "subject": "[Part 2] Many js-tests use waitUntilDone"
    },
    "315678@main": {
      "author": "David Quesada",
      "avatar": "https://www.gravatar.com/avatar/52cabcc487cee293ceb3baae7808cae7?d=identicon\u0026s=64",
      "cl": "315678@main",
      "clUrl": "https://commits.webkit.org/315678@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=317608\nrdar://180334423\n\nReviewed by Wenson Hsieh.\n\nIn some flows, WKColorExtensionView can stay retained for the lifetime of\nthe process, long after its owning WKWebView has deallocated. In this state,\nthe view is retained by CoreAnimation since it serves as the delegate for\nthe \"WKColorExtensionViewFade\" animation, which doesn't get explicitly\nremoved in all cases.\n\nPrevent this eternal retain cycle by restoring the CAAnimation default\nbehavior of \"removedOnCompletion\" == YES, ensuring that the cycle is broken\nwhen the animation completes (or when the view is removed from the hierarchy\nwhen tearing down a web view). This class doesn't refer to the animation\nafter its completion (and would just create a new animation instance when\nthe color changes again), so there was no value in retaining it.\n\nWhile here, remove a redundant usage of kCAFillModeForwards. This ensured\nthat after the animation had completed, the layer would keep the backgroundColor\nas specified by the \"to value\" of the animation, instead of reverting to the\ncolor from the model layer. But since the code to set up the animation already\nsets the backgroundColor of the model layer to same color as the animation,\nexplicitly requesting to keep that \"to value\" makes no visual difference.\nFurthermore, this fill mode becomes inconsequential with this change -- it\ndoesn't matter what post-completion effect the animation would have on the\nlayer's appearance if the animation gets removed upon its completion.\n\nTest: Tools/TestWebKitAPI/Tests/WebKit/WKWebView/SampledPageTopColor.mm\n\n* Source/WebKit/UIProcess/Cocoa/WKColorExtensionView.mm:\n(-[WKColorExtensionView _updateColor:visible:]):\n* Tools/TestWebKitAPI/Tests/WebKit/WKWebView/SampledPageTopColor.mm:\n(TestWebKitAPI::TEST(SampledPageTopColor, ColorExtensionViewDeallocatesWithWebView)):\n\nCanonical link: https://commits.webkit.org/315678@main",
      "email": "david_quesada@apple.com",
      "hash": "374db8069358c8c82eb223f460a6ed91b1bfaab1",
      "subject": "WKColorExtensionView can outlive its WKWebView"
    },
    "315679@main": {
      "author": "Charlie Wolfe",
      "avatar": "https://www.gravatar.com/avatar/857b3b5ff3394c31fa2689310a93dbab?d=identicon\u0026s=64",
      "cl": "315679@main",
      "clUrl": "https://commits.webkit.org/315679@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=316978\nrdar://179452630\n\nReviewed by Mike Wyrzykowski.\n\nInvoke the handler on the early-exit path, as the base ModelPlayer and the ModelProcess player do.\n\n* Source/WebCore/Modules/model-element/PlaceholderModelPlayer.cpp:\n(WebCore::PlaceholderModelPlayer::setPlaybackRate):\n(WebCore::PlaceholderModelPlayer::setPaused):\n\nCanonical link: https://commits.webkit.org/315679@main",
      "email": "charliew@apple.com",
      "hash": "ae89c4e34f715bdf721db61e71c52bf49b9c171e",
      "subject": "PlaceholderModelPlayer::setPlaybackRate()/setPaused() do not call their completion handler on early return"
    },
    "315680@main": {
      "author": "Simon Fraser",
      "avatar": "https://www.gravatar.com/avatar/3763324aa0cdfa93be751c6081b8006a?d=identicon\u0026s=64",
      "cl": "315680@main",
      "clUrl": "https://commits.webkit.org/315680@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=311900\nrdar://174463636\n\nReviewed by Anne van Kesteren.\n\nUpstream commit: https://github.com/web-platform-tests/wpt/commit/38a4d4f3ab2ddee69f2c14597d02bfe94c0af0e3\n\n* LayoutTests/TestExpectations:\n* LayoutTests/imported/w3c/resources/resource-files.json:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/WEB_FEATURES.yml:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/background-attachment-local/WEB_FEATURES.yml: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/background-attachment-local/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/background-clip-border-area-and-blend-mode-expected.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/background-clip-border-area-and-blend-mode.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/background-clip-content-box-with-border-radius-002-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/background-clip-content-box-with-border-radius-002.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/background-clip-content-box-with-border-radius-003-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/background-clip-content-box-with-border-radius-003.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/background-clip-padding-box-with-border-radius-002-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/background-clip-padding-box-with-border-radius-002.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/background-clip-padding-box-with-border-radius-003-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/background-clip-padding-box-with-border-radius-003.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/background-clip-text-and-blend-mode-expected.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/background-clip-text-and-blend-mode.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/background-clip/WEB_FEATURES.yml:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/background-clip/clip-border-area-border-shape-background-position-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/background-clip/clip-border-area-border-shape-background-position-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/background-clip/clip-border-area-border-shape-background-position.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/background-clip/clip-border-area-border-shape-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/background-clip/clip-border-area-border-shape-overflow-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/background-clip/clip-border-area-border-shape-overflow-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/background-clip/clip-border-area-border-shape-overflow.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/background-clip/clip-border-area-border-shape-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/background-clip/clip-border-area-border-shape.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/background-clip/clip-border-area-complex-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/background-clip/clip-border-area-complex-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/background-clip/clip-border-area-complex.html: Copied from LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/background-clip/clip-border-area.html.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/background-clip/clip-border-area-corner-shape-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/background-clip/clip-border-area-corner-shape-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/background-clip/clip-border-area-corner-shape.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/background-clip/clip-border-area-double-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/background-clip/clip-border-area-double-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/background-clip/clip-border-area-double.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/background-clip/clip-border-area-expected.html: Removed.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/background-clip/clip-border-area-inset-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/background-clip/clip-border-area-inset-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/background-clip/clip-border-area-inset.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/background-clip/clip-border-area-missing-border-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/background-clip/clip-border-area-missing-border-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/background-clip/clip-border-area-missing-border.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/background-clip/clip-border-area-on-body-not-propagated-to-root-expected.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/background-clip/clip-border-area-on-body-not-propagated-to-root-ref.html: Copied from LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/background-clip/clip-border-area-on-body-not-propagated-to-root-expected.html.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/background-clip/clip-border-area-on-body-not-propagated-to-root.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/background-clip/clip-border-area-ref.html: Removed.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/background-clip/clip-border-area-rounded-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/background-clip/clip-border-area-rounded-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/background-clip/clip-border-area-rounded.html: Renamed from LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/background-clip/clip-border-area.html.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/background-clip/clip-border-area-solid-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/background-clip/clip-border-area-solid-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/background-clip/clip-border-area-solid.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/background-clip/clip-border-area-text-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/background-clip/clip-border-area-text-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/background-clip/clip-border-area-text.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/background-clip/clip-border-shape-table-part-background-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/background-clip/clip-border-shape-table-part-background-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/background-clip/clip-border-shape-table-part-background.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/background-clip/clip-text-background-table-cell-expected.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/background-clip/clip-text-background-table-cell-ref.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/background-clip/clip-text-background-table-cell.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/background-clip/clip-text-blend-mode-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/background-clip/clip-text-blend-mode-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/background-clip/clip-text-blend-mode.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/background-clip/clip-text-composited-descendant-with-bg-color-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/background-clip/clip-text-composited-descendant-with-bg-color-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/background-clip/clip-text-composited-descendant-with-bg-color.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/background-clip/clip-text-constrain-geometry-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/background-clip/clip-text-constrain-geometry-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/background-clip/clip-text-constrain-geometry.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/background-clip/clip-text-descendants-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/background-clip/clip-text-descendants-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/background-clip/clip-text-descendants.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/background-clip/clip-text-dynamic-text-change-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/background-clip/clip-text-dynamic-text-change-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/background-clip/clip-text-dynamic-text-change.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/background-clip/clip-text-flex.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/background-clip/clip-text-fragmentation-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/background-clip/clip-text-fragmentation-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/background-clip/clip-text-fragmentation.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/background-clip/clip-text-inline-block-child-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/background-clip/clip-text-inline-block-child-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/background-clip/clip-text-inline-block-child.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/background-clip/clip-text-inline-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/background-clip/clip-text-inline-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/background-clip/clip-text-inline.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/background-clip/clip-text-multiline-background-image-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/background-clip/clip-text-multiline-background-image-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/background-clip/clip-text-multiline-background-image.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/background-clip/clip-text-multiline-linebreak-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/background-clip/clip-text-multiline-linebreak-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/background-clip/clip-text-multiline-linebreak.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/background-clip/clip-text-on-body-scroll-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/background-clip/clip-text-on-body-scroll-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/background-clip/clip-text-on-body-scroll.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/background-clip/clip-text-out-of-flow-child-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/background-clip/clip-text-out-of-flow-child-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/background-clip/clip-text-out-of-flow-child.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/background-clip/clip-text-relative-child-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/background-clip/clip-text-relative-child-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/background-clip/clip-text-relative-child.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/background-clip/clip-text-scaled-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/background-clip/clip-text-scaled-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/background-clip/clip-text-scaled.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/background-clip/clip-text-stacking-context-child-002-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/background-clip/clip-text-stacking-context-child-002-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/background-clip/clip-text-stacking-context-child-002.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/background-clip/clip-text-stacking-context-child-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/background-clip/clip-text-stacking-context-child-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/background-clip/clip-text-stacking-context-child.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/background-clip/clip-text-text-align-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/background-clip/clip-text-text-align-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/background-clip/clip-text-text-align.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/background-clip/clip-text-transform-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/background-clip/clip-text-transform-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/background-clip/clip-text-transform.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/background-clip/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/background-gradient-interpolation-003.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/background-image-table-cells-straddling-no-repeat.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/background-multiple-layers-table-cell-expected.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/background-multiple-layers-table-cell-ref.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/background-multiple-layers-table-cell.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/background-origin/WEB_FEATURES.yml: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/background-origin/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/background-position/WEB_FEATURES.yml: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/background-position/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/background-repeat-round-empty-crash.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/background-repeat-space-10.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/background-repeat-space-2.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/background-repeat-space-6.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/background-repeat-space-7.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/background-repeat-space-9.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/background-repeat/WEB_FEATURES.yml: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/background-repeat/background-repeat-image-larger-than-positioning-area-crash.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/background-repeat/background-repeat-space.xht:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/background-repeat/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/background-size/WEB_FEATURES.yml: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/background-size/vector/empty/reftest.list: Removed.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/background-size/vector/empty/w3c-import.log: Removed.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/background-size/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/border-image-021-expected.xht: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/border-image-021.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/border-image-outset-004-expected.xht: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/border-image-outset-004.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/border-image-repeat-002.htm:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/border-image-repeat-round.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/border-image-space-001.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/border-image-width-005.xht:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/border-image-width-006.xht:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/border-image-width-007.xht:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/border-image-width-009.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/box-shadow-radius-000-expected.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/box-shadow-radius-000-ref.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/box-shadow-radius-000.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/box-shadow-radius-002-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/box-shadow-radius-002-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/box-shadow-radius-002.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/box-shadow-radius-generated-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/box-shadow-radius-generated-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/box-shadow-radius-generated.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/box-shadow-table-row-display-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/box-shadow-table-row-display-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/box-shadow-table-row-display.html: Copied from LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/box-shadow/box-shadow-table-row-display.html.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/box-shadow/WEB_FEATURES.yml: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/box-shadow/box-shadow-table-row-display.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/box-shadow/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/css3-border-image-repeat-repeat.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/hidpi/WEB_FEATURES.yml: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/hidpi/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/local-attachment-flex-column-reverse-scroll-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/local-attachment-flex-column-reverse-scroll-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/local-attachment-flex-column-reverse-scroll.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/local-attachment-flex-row-reverse-scroll-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/local-attachment-flex-row-reverse-scroll-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/local-attachment-flex-row-reverse-scroll.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/local-attachment-rtl-and-flex-row-reverse-scroll-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/local-attachment-rtl-and-flex-row-reverse-scroll-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/local-attachment-rtl-and-flex-row-reverse-scroll.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/local-attachment-rtl-scroll-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/local-attachment-rtl-scroll-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/local-attachment-rtl-scroll.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/parsing/WEB_FEATURES.yml:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/parsing/background-clip-computed-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/parsing/background-clip-computed.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/parsing/background-clip-valid-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/parsing/background-clip-valid.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/parsing/background-computed-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/parsing/background-computed.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/parsing/background-image-computed.sub-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/parsing/background-image-computed.sub.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/parsing/background-image-valid-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/parsing/background-image-valid.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/parsing/background-shorthand-serialization-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/parsing/background-shorthand-serialization.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/parsing/background-size-valid.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/parsing/background-valid-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/parsing/background-valid.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/parsing/border-image-source-computed.sub-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/parsing/border-image-source-computed.sub.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/parsing/support/parsing-testcommon.js: Removed.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/parsing/support/w3c-import.log: Removed.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/reference/background-clip-border-area-and-blend-mode-ref.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/reference/background-clip-content-box-with-border-radius-002-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/reference/background-clip-content-box-with-border-radius-003-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/reference/background-clip-padding-box-with-border-radius-002-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/reference/background-clip-padding-box-with-border-radius-003-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/reference/background-clip-text-and-blend-mode-ref.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/reference/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/support/bgimg1x50.png: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/support/border-image-round-result-backup.png: Removed.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/support/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/table-cell-background-local-003.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/w3c-import.log:\n* LayoutTests/platform/glib/TestExpectations:\n* LayoutTests/platform/gtk/TestExpectations:\n* LayoutTests/platform/ios/TestExpectations:\n\nCanonical link: https://commits.webkit.org/315680@main",
      "email": "simon.fraser@apple.com",
      "hash": "21e2a0218f901728e8ef2db7eef334e7b7b4694f",
      "subject": "Sync css/css-backgrounds"
    },
    "315681@main": {
      "author": "Megan Gardner",
      "avatar": "https://www.gravatar.com/avatar/b466a5bcbfabf4d82a8ecc595db5a531?d=identicon\u0026s=64",
      "cl": "315681@main",
      "clUrl": "https://commits.webkit.org/315681@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=317631\nrdar://179242654\n\nReviewed by Wenson Hsieh.\n\nCompositionType::Other (e.g. Siri's PresentWritingToolsResult fallback) doesn't\nreliably complete the iOS text animation, so the destination TransparentContent\nmarker is never removed and the inserted text stays invisible. Skip the source/\ndestination animation for \"Other\" sessions and replace the text directly.\n\n* Source/WebCore/page/writing-tools/WritingToolsController.mm:\n(WebCore::WritingToolsController::compositionSessionDidReceiveTextWithReplacementRange):\n\nCanonical link: https://commits.webkit.org/315681@main",
      "email": "megan_gardner@apple.com",
      "hash": "c93e82b9b00de5fc1c5259f04850f9de73187520",
      "subject": "When using Siri AI to respond to emails, the text is invisible."
    },
    "315682@main": {
      "author": "Tim Horton",
      "avatar": "https://www.gravatar.com/avatar/a04261df168177f0d816f3c7276f6183?d=identicon\u0026s=64",
      "cl": "315682@main",
      "clUrl": "https://commits.webkit.org/315682@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=317591\nrdar://180311337\n\nReviewed by Abrar Rahman Protyasha and Wenson Hsieh.\n\nI often reorder and group blocks of changes in the commit message.\nSince 295625@main, upon amending, these changes are lost.\n\nMake the reconciliation a bit smarter, keeping the user-generated ordering and grouping.\nNew files are added at the end, old files are still deleted, and lose their\nper-file comments, but do not remove block comments (since there's a good chance\nthe block comment is still relevant to earlier listed files, and if that's not\ntrue, it's better for the user to fix it up themselves).\n\n* Tools/Scripts/hooks/prepare-commit-msg:\n* Tools/Scripts/libraries/webkitscmpy/webkitscmpy/commit_parser.py:\n(CommitMessageParser._file_identity):\n(CommitMessageParser):\n(CommitMessageParser._group_into_blocks):\n(CommitMessageParser.reconcile_with_changed_files):\n(CommitMessageParser._function_identity):\n(CommitMessageParser._trailing_notes):\n(CommitMessageParser._add_new_functions):\n* Tools/Scripts/libraries/webkitscmpy/webkitscmpy/test/commit_parser_unittest.py:\n(TestCommitParser):\n(TestCommitParser.lines):\n(TestCommitParser.assert_reconcile):\n\nCanonical link: https://commits.webkit.org/315682@main",
      "email": "thorton@apple.com",
      "hash": "c7abfe63cd86b0c7b3daf6555eaaa0849085cfaa",
      "subject": "git commit --amend keeps reordering my carefully-crafted commit messages"
    },
    "315684@main": {
      "author": "Youenn Fablet",
      "avatar": "https://www.gravatar.com/avatar/0a9886e582a7aee1eb908eb59af36da4?d=identicon\u0026s=64",
      "cl": "315684@main",
      "clUrl": "https://commits.webkit.org/315684@main",
      "description": "rdar://180414349\nhttps://bugs.webkit.org/show_bug.cgi?id=317658\n\nReviewed by Eric Carlson.\n\nWe define FUZZER_DISABLE_NALLOC to short circuit nalloc.h for fuzzers.\n\nCanonical link: https://commits.webkit.org/315684@main",
      "email": "youenn@apple.com",
      "hash": "d8b81e75b434da1c7b30cb58efd02efc040ce4b2",
      "subject": "___interceptor_malloc is undefined in ASAN builds"
    },
    "315685@main": {
      "author": "Basuke Suzuki",
      "avatar": "https://www.gravatar.com/avatar/5192a1151c7575317affb7a4633f8d63?d=identicon\u0026s=64",
      "cl": "315685@main",
      "clUrl": "https://commits.webkit.org/315685@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=317623\nrdar://180282129\n\nReviewed by Per Arne Vollan.\n\nNavigation::dispatchTraversalNavigateEvent constructs a NavigationDestination\nwhose key() returns a null String when the destination has no associated\nNavigationHistoryEntry, or when the entry's document is no longer fully\nactive. innerDispatchNavigateEvent then forwards that null key into\nMethodTrackerRegistry::promoteUpcomingTraverseToOngoing(), which calls\nHashMap\u003cString, ...\u003e::take() with it. HashTraits\u003cString\u003e::isEmptyValue(s)\nis defined as s.isNull(), so a null String is the HashTable empty-value\nsentinel; passing it to take() violates the HashTable invariant and ends\nup running StringHash::hash() on a null StringImpl*, producing a null\nderef reading m_hashAndFlags at offset 16 (ASan SEGV at 0x10).\n\nGuard the MethodTrackerRegistry boundary so a null key never reaches the\nHashMap, mirroring the existing null-key guard in unregister(). Returning\nnullptr is the correct semantic: callers in innerDispatchNavigateEvent\nalready handle apiMethodTracker == nullptr.\n\nCovered by existing tests.\n\n* Source/WebCore/page/Navigation.cpp:\n(WebCore::Navigation::MethodTrackerRegistry::upcomingTraverse const):\n(WebCore::Navigation::MethodTrackerRegistry::promoteUpcomingTraverseToOngoing):\n\nCanonical link: https://commits.webkit.org/315685@main",
      "email": "basuke@apple.com",
      "hash": "984f3c499a525b20dec24480796813d87ee665f7",
      "subject": "[Navigation API] Crash in MethodTrackerRegistry::promoteUpcomingTraverseToOngoing with null destination key"
    },
    "315687@main": {
      "author": "Per Arne Vollan",
      "avatar": "https://www.gravatar.com/avatar/644dde5b61925a175f4bdea3f0f00bda?d=identicon\u0026s=64",
      "cl": "315687@main",
      "clUrl": "https://commits.webkit.org/315687@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=317616\nrdar://180342936\n\nReviewed by Sihui Liu.\n\nUse the _set_user_dir_suffix function on macOS, since this is preferred over setting an env var.\n\n* Source/WebKit/Shared/mac/AuxiliaryProcessMac.mm:\n(WebKit::populateSandboxInitializationParameters):\n\nCanonical link: https://commits.webkit.org/315687@main",
      "email": "pvollan@apple.com",
      "hash": "ba8993e6201f8010e61146c134b7ba916784749d",
      "subject": "It's preferrable to use a function to set user dir suffix instead of an env var"
    },
    "315688@main": {
      "author": "Tim Nguyen",
      "avatar": "https://www.gravatar.com/avatar/208c05ac2decdf818a4a08ada568328e?d=identicon\u0026s=64",
      "cl": "315688@main",
      "clUrl": "https://commits.webkit.org/315688@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=317593\nrdar://180313431\n\nReviewed by Simon Fraser.\n\nA few micro-optimizations to the flow.\n\n* Source/WebCore/style/StyleAdjuster.cpp:\n(WebCore::Style::Adjuster::adjust const):\n\nCanonical link: https://commits.webkit.org/315688@main",
      "email": "ntim@apple.com",
      "hash": "06f07393db1b7398c957c5279979c550c72d08d7",
      "subject": "Clean up Adjuster::adjust"
    },
    "315689@main": {
      "author": "Mike Wyrzykowski",
      "avatar": "https://www.gravatar.com/avatar/4b1bc9e238714f95e22d5d2454c07066?d=identicon\u0026s=64",
      "cl": "315689@main",
      "clUrl": "https://commits.webkit.org/315689@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=317598\nrdar://179426174\n\nReviewed by Charlie Wolfe.\n\nIf there is no page then we don't need to observe for model load changes.\n\n* Source/WebCore/Modules/model-element/HTMLModelElement.cpp:\n(WebCore::HTMLModelElement::insertionSteps):\n\nCanonical link: https://commits.webkit.org/315689@main",
      "email": "mwyrzykowski@apple.com",
      "hash": "a3edd05ce448e58fcac66da1eb760293c2564891",
      "subject": "WebCore::HTMLModelElement::insertionSteps crashes more frequently"
    },
    "315690@main": {
      "author": "Anne van Kesteren",
      "avatar": "https://www.gravatar.com/avatar/09bb44ac3625a121017cd98d0a7dc52c?d=identicon\u0026s=64",
      "cl": "315690@main",
      "clUrl": "https://commits.webkit.org/315690@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=317539\n\nReviewed by Alex Christensen.\n\nA potential roundtripping issue surfaced in\nhttps://github.com/whatwg/url/pull/914 that we did not have test\ncoverage for. In particular because after 314820@main to ASCII succeeds\nmore often, there's a risk that ToUnicode returns something that does\nnot roundtrip.\n\nWe do not have this issue because when to Unicode records an error, we\nreturn the input as-is. Document this with a test so we won't\naccidentally regress it.\n\nThis is an API test because to Unicode is not exposed to the web at\nthe moment.\n\nCanonical link: https://commits.webkit.org/315690@main",
      "email": "annevk@annevk.nl",
      "hash": "ab38c23be42b9326eebf262fea403151aa380a32",
      "subject": "Add test coverage for valid Punycode but invalid UTS46"
    },
    "315691@main": {
      "author": "Jean-Yves Avenard",
      "avatar": "https://www.gravatar.com/avatar/509313899deeb9262fad8f5e04093f5b?d=identicon\u0026s=64",
      "cl": "315691@main",
      "clUrl": "https://commits.webkit.org/315691@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=317642\nrdar://180389872\n\nReviewed by Youenn Fablet.\n\nWe move all the buffered ranges check in MediaSourcePrivate as it's the\nsource of truth.\n\nNo functional changes.\n\n* Source/WebCore/Modules/mediasource/ManagedMediaSource.cpp:\n(WebCore::ManagedMediaSource::monitorSourceBuffers):\n* Source/WebCore/Modules/mediasource/MediaSource.cpp:\n(WebCore::MediaSource::monitorSourceBuffers):\n(WebCore::MediaSource::hasBufferedTime): Deleted.\n(WebCore::MediaSource::hasCurrentTime): Deleted.\n(WebCore::MediaSource::hasFutureTime): Deleted.\n(WebCore::MediaSource::isBuffered const): Deleted.\n* Source/WebCore/Modules/mediasource/MediaSource.h:\n* Source/WebCore/platform/graphics/MediaSourcePrivate.cpp:\n(WebCore::MediaSourcePrivate::hasFutureTime const):\n(WebCore::MediaSourcePrivate::hasBufferedTime const):\n(WebCore::MediaSourcePrivate::hasCurrentTime const):\n(WebCore::MediaSourcePrivate::isBuffered const): Original method was returning true when the MediaSource was closed.\n* Source/WebCore/platform/graphics/MediaSourcePrivate.h:\n\nCanonical link: https://commits.webkit.org/315691@main",
      "email": "jya@apple.com",
      "hash": "36c254f935945ad99802874254c6c1013719470b",
      "subject": "[MSE] MediaSource::hasCurrentTime/hasBufferedTime/hasFutureTime should be done through MediaSourcePrivate"
    },
    "315692@main": {
      "author": "Marta Darbinyan",
      "avatar": "https://www.gravatar.com/avatar/6143b3673258642a8b75585c768ccf10?d=identicon\u0026s=64",
      "cl": "315692@main",
      "clUrl": "https://commits.webkit.org/315692@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=317667\nrdar://180425187\n\nUnreviewed test gardening\n\nUpdating test expectation for iOS.\n\n* LayoutTests/platform/ios/TestExpectations:\n\nCanonical link: https://commits.webkit.org/315692@main",
      "email": "darbinyan@apple.com",
      "hash": "7472e8fe46d23453a2bc539e3616090f26f5737a",
      "subject": "[Gardening]: [iOS] imported/w3c/web-platform-tests/css/css-view-transitions/navigation/with-types/at-rule-with-types-parsing.html is failing with test diff"
    },
    "315693@main": {
      "author": "Charlie Wolfe",
      "avatar": "https://www.gravatar.com/avatar/857b3b5ff3394c31fa2689310a93dbab?d=identicon\u0026s=64",
      "cl": "315693@main",
      "clUrl": "https://commits.webkit.org/315693@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=317666\nrdar://179426764\n\nReviewed by Anne van Kesteren.\n\nThe loop over configuration-\u003erelatedPage() added the current page to the visited set with\n`visitedPages.add(page.releaseNonNull())`. releaseNonNull() empties the RefPtr, so `page` was null\nwhen the for-loop increment ran `page = page-\u003econfiguration().relatedPage()`.\n\nAdd a non-destructive `visitedPages.add(*page)` so `page` stays valid for the loop increment.\n\n* Source/WebKit/UIProcess/Cocoa/WebPageProxyCocoa.mm:\n(WebKit::WebPageProxy::useGPUProcessForDOMRenderingEnabled const):\n\nCanonical link: https://commits.webkit.org/315693@main",
      "email": "charliew@apple.com",
      "hash": "68455aeaffedb9a042196b90473f82bac4bba85f",
      "subject": "REGRESSION(309131@main): Null dereference in `WebPageProxy::useGPUProcessForDOMRenderingEnabled()`"
    },
    "315694@main": {
      "author": "Taher Ali",
      "avatar": "https://www.gravatar.com/avatar/e104800647d8c98b8c9dbe736b5e1751?d=identicon\u0026s=64",
      "cl": "315694@main",
      "clUrl": "https://commits.webkit.org/315694@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=317653\nrdar://180414239\n\nReviewed by Simon Fraser.\n\nsetValueAsString() ran two separate MetaConsumer passes over the same token\nrange: it first tried MetaConsumer\u003cCSS::Number\u003c\u003e\u003e, and on failure reset the\nrange and tried MetaConsumer\u003cCSS::LengthPercentage\u003c\u003e\u003e.\n\nReplace the two-pass into a single MetaConsumer\u003cCSS::Number\u003c\u003e, CSS::LengthPercentage\u003c\u003e\u003e\npass, which tries \u003cnumber\u003e then \u003clength-percentage\u003e in one walk.\n\nThere is now exactly one tokenization and one parse pass instead of up to two.\n\n* Source/WebCore/svg/SVGLengthValue.cpp:\n(WebCore::SVGLengthValue::setValueAsString):\n\nCanonical link: https://commits.webkit.org/315694@main",
      "email": "taher_ali@apple.com",
      "hash": "686eb0601bfc18e2476ea13e3af2d424a54e60c4",
      "subject": "SVGLengthValue::setValueAsString should parse in a single MetaConsumer pass"
    },
    "315695@main": {
      "author": "Robert Jenner",
      "avatar": "https://www.gravatar.com/avatar/05a1bd874251a1f64c7b6a0ed8120640?d=identicon\u0026s=64",
      "cl": "315695@main",
      "clUrl": "https://commits.webkit.org/315695@main",
      "description": "rdar://180431096\n\nUnreviewed test gardening.\n\n* LayoutTests/platform/ios-site-isolation/TestExpectations:\n\nCanonical link: https://commits.webkit.org/315695@main",
      "email": "jenner@apple.com",
      "hash": "20db78ef64c61c18312d7e826d4eeca81593a301",
      "subject": "[GARDENING]Batch mark tests only failing on iOS Site-Isolation"
    },
    "315696@main": {
      "author": "Jean-Yves Avenard",
      "avatar": "https://www.gravatar.com/avatar/509313899deeb9262fad8f5e04093f5b?d=identicon\u0026s=64",
      "cl": "315696@main",
      "clUrl": "https://commits.webkit.org/315696@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=317652\nrdar://175430748\n\nReviewed by Eric Carlson.\n\nPer CMFormatDescription documentation:\n```\nThe extension is a CFDictionary mapping CFStrings of the four-char-code atom types\nto either CFDatas containing the atom payload or (to represent multiple atoms of a\nspecific type) to CFArrays of CFData containing those payloads.\n```\n\nThe conversion from CMVideoFormatDescription to VideoTrackInfo only handled\nthe first case, leading to a crash if the latter was used.\n\nTest: Tools/TestWebKitAPI/Tests/WebCore/cocoa/CoreMediaUtilities.mm\n\n* Source/WebCore/platform/graphics/cocoa/CMUtilities.mm:\n(WebCore::parseExtensionAtomsDictionary):\n(WebCore::createExtensionAtomsDictionary):\n(WebCore::getEncryptionDataCollection):\n(WebCore::createVideoInfoFromFormatDescription):\n* Tools/TestWebKitAPI/Tests/WebCore/cocoa/CoreMediaUtilities.mm:\n(TestWebKitAPI::makeVideoFormatDescriptionWithAtoms):\n(TestWebKitAPI::TEST(CMUtilities, ExtensionAtomsCFArrayValueDoesNotCrash)):\n(TestWebKitAPI::TEST(CMUtilities, ExtensionAtomsCFDataValueIngest)):\n(TestWebKitAPI::makeVideoInfoWithAtoms):\n(TestWebKitAPI::TEST(CMUtilities, CreateFormatDescriptionEmitsCFDataForSingleAtom)):\n(TestWebKitAPI::TEST(CMUtilities, CreateFormatDescriptionEmitsCFArrayForMultipleAtomsSameFourCC)):\n(TestWebKitAPI::TEST(CMUtilities, CreateFormatDescriptionGroupsNonContiguousDuplicates)):\n(TestWebKitAPI::TEST(CMUtilities, ExtensionAtomsRoundTripPreservesMultipleSameFourCC)):\n\nCanonical link: https://commits.webkit.org/315696@main",
      "email": "jya@apple.com",
      "hash": "4e40f7fd190ba09f4a5b7fecd32631f743ab710b",
      "subject": "com.apple.WebKit.WebContent at com.apple.WebCore:  WebCore::createVideoInfoFromFormatDescription"
    },
    "315697@main": {
      "author": "Marta Darbinyan",
      "avatar": "https://www.gravatar.com/avatar/6143b3673258642a8b75585c768ccf10?d=identicon\u0026s=64",
      "cl": "315697@main",
      "clUrl": "https://commits.webkit.org/315697@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=317676\nrdar://180432846\n\nUnreviewed test gardening\n\n* TestExpectations/apitests:\n\nCanonical link: https://commits.webkit.org/315697@main",
      "email": "darbinyan@apple.com",
      "hash": "0993187160909d408d2cf8e39082b1b806e263b5",
      "subject": "[ Gardening]: REGRESSION(315516@main): [iOS] TestWebKitAPI.SiteIsolation tests are flaky timeout"
    },
    "315698@main": {
      "author": "Anuj Panta",
      "avatar": "https://www.gravatar.com/avatar/f795b7daddea5f93c9cbb5a4a8f0db14?d=identicon\u0026s=64",
      "cl": "315698@main",
      "clUrl": "https://commits.webkit.org/315698@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=315590\nrdar://177974230\n\nReviewed by Qianlang Chen.\n\nPort nine DOM editing commands from InspectorDOMAgent onto FrameDOMAgent\n— setNodeName, setNodeValue, removeNode, setAttributeValue,\nsetAttributesAsText, removeAttribute, setOuterHTML, insertAdjacentHTML,\nand moveTo. Each operates on the frame's local Document via the DOMEditor\n+ InspectorHistory, so cross-origin iframe edits\nare recorded on the frame's per-process undo stack and reversed by the\nexisting undo/redo commands. setOuterHTML with nodeId == 0 patches the\nframe's whole document via DOMPatchSupport. CSS notifications after\nattribute edits are skipped until FrameCSSAgent exists.\n\nOn the frontend, the cross-origin guards are removed\nfrom the editing methods on DOMNode. Each routes through `owningTarget\n|| WI.assumingMainTarget()` with `backendNodeId`, matching the pattern\nused for querySelector. moveTo rejects cross-target moves up front since\nnodeIds cannot resolve across processes.\n\nTest: http/tests/site-isolation/inspector/dom/editing-commands-frame-target.html\n\n* LayoutTests/http/tests/site-isolation/inspector/dom/editing-commands-frame-target-expected.txt: Added.\n* LayoutTests/http/tests/site-isolation/inspector/dom/editing-commands-frame-target.html: Added.\n* Source/JavaScriptCore/inspector/protocol/DOM.json:\n* Source/WebCore/inspector/agents/frame/FrameDOMAgent.cpp:\n(WebCore::FrameDOMAgent::assertEditableNode):\n(WebCore::FrameDOMAgent::assertEditableElement):\n(WebCore::FrameDOMAgent::setAttributeValue):\n(WebCore::FrameDOMAgent::setAttributesAsText):\n(WebCore::FrameDOMAgent::removeAttribute):\n(WebCore::FrameDOMAgent::removeNode):\n(WebCore::FrameDOMAgent::setNodeName):\n(WebCore::FrameDOMAgent::setOuterHTML):\n(WebCore::FrameDOMAgent::insertAdjacentHTML):\n(WebCore::FrameDOMAgent::setNodeValue):\n(WebCore::FrameDOMAgent::moveTo):\n* Source/WebCore/inspector/agents/frame/FrameDOMAgent.h:\n* Source/WebCore/inspector/agents/frame/FrameDOMAgentStubs.cpp:\n(WebCore::FrameDOMAgent::setNodeName): Deleted.\n(WebCore::FrameDOMAgent::setNodeValue): Deleted.\n(WebCore::FrameDOMAgent::removeNode): Deleted.\n(WebCore::FrameDOMAgent::setAttributeValue): Deleted.\n(WebCore::FrameDOMAgent::setAttributesAsText): Deleted.\n(WebCore::FrameDOMAgent::removeAttribute): Deleted.\n(WebCore::FrameDOMAgent::setOuterHTML): Deleted.\n(WebCore::FrameDOMAgent::insertAdjacentHTML): Deleted.\n(WebCore::FrameDOMAgent::moveTo): Deleted.\n* Source/WebInspectorUI/UserInterface/Models/DOMNode.js:\n(WI.DOMNode.prototype.setNodeName):\n(WI.DOMNode.prototype.setNodeValue):\n(WI.DOMNode.prototype.setAttribute):\n(WI.DOMNode.prototype.setAttributeValue):\n(WI.DOMNode.prototype.removeAttribute):\n(WI.DOMNode.prototype.setOuterHTML):\n(WI.DOMNode.prototype.insertAdjacentHTML):\n(WI.DOMNode.prototype.removeNode):\n(WI.DOMNode.prototype.moveTo):\n\nCanonical link: https://commits.webkit.org/315698@main",
      "email": "a_panta@apple.com",
      "hash": "d46f6b0d75a462477d10ccff33b3efa6aa27db6c",
      "subject": "Web Inspector: [SI] implement DOM editing commands for FrameDOMAgent"
    },
    "315699@main": {
      "author": "Wenson Hsieh",
      "avatar": "https://www.gravatar.com/avatar/c8fba82556fd4988c78bd3a0aee2a44e?d=identicon\u0026s=64",
      "cl": "315699@main",
      "clUrl": "https://commits.webkit.org/315699@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=317670\nrdar://180426301\n\nReviewed by Abrar Rahman Protyasha.\n\nAdd a missing `null` check, with an API test to exercise the fix.\n\nTest: TextExtractionTests.RequestJSHandleForStaleNodeIdentifier\n\n* Source/WebCore/page/text-extraction/TextExtraction.cpp:\n(WebCore::TextExtraction::rangeForExtractedText):\n* Tools/TestWebKitAPI/Tests/WebKit/WKWebView/TextExtractionTests.mm:\n(TestWebKitAPI::RequestJSHandleForStaleNodeIdentifier)):\n\nCanonical link: https://commits.webkit.org/315699@main",
      "email": "wenson_hsieh@apple.com",
      "hash": "c141bdce88585a10859778eeba49f6af5530885a",
      "subject": "[Text Extraction] Web process can crash if the client requests a JS handle for a stale node ID"
    },
    "315700@main": {
      "author": "Antti Koivisto",
      "avatar": "https://www.gravatar.com/avatar/07965eed55d4b41ea2b394599b17f7cd?d=identicon\u0026s=64",
      "cl": "315700@main",
      "clUrl": "https://commits.webkit.org/315700@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=317655\nrdar://179178234\n\nReviewed by Alan Baradlay.\n\nIntroduce RefCountedCSSSelectorList and use it for InvalidationRuleSet::scopeSelector.\n\n* Source/WebCore/css/CSSSelectorList.h:\n(WebCore::RefCountedCSSSelectorList::create):\n(WebCore::RefCountedCSSSelectorList::RefCountedCSSSelectorList):\n* Source/WebCore/style/RuleSet.h:\n* Source/WebCore/style/StyleInvalidator.cpp:\n(WebCore::Style::Invalidator::invalidateStyleWithMatchElement):\n(WebCore::Style::Invalidator::addToMatchElementRuleSets):\n(WebCore::Style::Invalidator::addToMatchElementRuleSetsRespectingNegation):\n* Source/WebCore/style/StyleScopeRuleSets.cpp:\n(WebCore::Style::ensureInvalidationRuleSets):\n* Source/WebCore/style/StyleScopeRuleSets.h:\n\nCanonical link: https://commits.webkit.org/315700@main",
      "email": "antti@apple.com",
      "hash": "0ae43a84f47d2676357870e1266e7a6e5fd13299",
      "subject": "Introduce RefCountedCSSSelectorList"
    },
    "315701@main": {
      "author": "Pascoe",
      "avatar": "https://www.gravatar.com/avatar/7a6e50b09dba6a185f45250268683d71?d=identicon\u0026s=64",
      "cl": "315701@main",
      "clUrl": "https://commits.webkit.org/315701@main",
      "description": "rdar://180435566\nhttps://bugs.webkit.org/show_bug.cgi?id=317679\n\nReviewed by Charlie Wolfe and Geoffrey Garen.\n\nNeed new source files after 315667@main.\n\n* Source/ThirdParty/libwebrtc/CMakeLists.txt:\n* Source/WebKit/Platform/spi/mac/AppKitSPI.h:\n* Source/WebKit/PlatformMac.cmake:\n* Tools/TestWebKitAPI/Helpers/mac/AppKitSPI.h:\n\nCanonical link: https://commits.webkit.org/315701@main",
      "email": "pascoe@apple.com",
      "hash": "044da5ed2362d317fd3b7351c17356ec8672c423",
      "subject": "Fix build after 315667@main"
    },
    "315702@main": {
      "author": "Charlie Wolfe",
      "avatar": "https://www.gravatar.com/avatar/857b3b5ff3394c31fa2689310a93dbab?d=identicon\u0026s=64",
      "cl": "315702@main",
      "clUrl": "https://commits.webkit.org/315702@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=317436\nrdar://180062669\n\nReviewed by Ryan Reno.\n\n`sandbox` is required to be removed from CSP delivered via \u003cmeta http-equiv\u003e before enforcement:\nhttps://html.spec.whatwg.org/multipage/semantics.html#attr-meta-http-equiv-content-security-policy\n\nWe ignored the directive for the meta-hosting document, but preserved it in the serialized policy.\nWhen inherited by about:blank, it was reparsed and enforced, incorrectly giving the child an opaque\norigin.\n\nDrop the sandbox directive when reparsing an inherited policy. So a header-delivered sandbox is\nstill inherited, carry the parent's already-resolved sandbox flags forward in copyStateFrom(),\nmirroring upgrade-insecure-requests.\n\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/sandbox/meta-element.sub-expected.txt:\n* Source/WebCore/page/csp/ContentSecurityPolicyDirectiveList.cpp:\n(WebCore::ContentSecurityPolicyDirectiveList::parse):\n* Source/WebCore/page/csp/ContentSecurityPolicy.cpp:\n(WebCore::ContentSecurityPolicy::copyStateFrom):\n\nCanonical link: https://commits.webkit.org/315702@main",
      "email": "charliew@apple.com",
      "hash": "08a2933c1c9bfd9a1e0a51700620bebc2a87ad96",
      "subject": "Inherited policy should not re-apply a meta-delivered sandbox directive"
    },
    "315703@main": {
      "author": "Qianlang Chen",
      "avatar": "https://www.gravatar.com/avatar/0fd54e904334f604739d0205aa6e2130?d=identicon\u0026s=64",
      "cl": "315703@main",
      "clUrl": "https://commits.webkit.org/315703@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=314424\n\nReviewed by BJ Burg.\n\nImplement getComputedStyleForNode, getFontDataForNode,\ngetInlineStylesForNode, getMatchedStylesForNode, and forcePseudoState in\nFrameCSSAgent. These commands resolve DOM nodeIds through FrameDOMAgent\nand compute CSS information using the frame's local StyleResolver. No\ncross-process communication is needed since styles are computed locally\nwithin the frame's WebContent process.\n\nThe helper methods (buildObjectForRule, buildArrayForMatchedRuleList,\netc.) are intentionally duplicated from InspectorCSSAgent rather than\nshared, following the same standalone-agent pattern as FrameDOMAgent.\nThis keeps the two agents fully decoupled, as InspectorCSSAgent will\neventually be silenced under site isolation when the frontend switches\nto frame targets.\n\nTest: http/tests/site-isolation/inspector/css/css-node-commands-frame-target.html\n\n* Source/WebCore/Scripts/generate-unified-sources.sh:\n* Source/WebCore/Sources.txt:\n* Source/WebCore/UnifiedSources-output.xcfilelist:\n* Source/WebCore/WebCore.xcodeproj/project.pbxproj:\nThese changes were needed in place of adding `#include \"StyleComputedStyle+GettersInlines.h\"`\nin FrameCSSAgent. Adding the #include runs into the style bot error:\n  Source/WebCore/inspector/agents/frame/FrameCSSAgent.cpp:63: error:\n    [build/include/computed-style-inlines] StyleComputedStyle+GettersInlines.h adds 6\n    seconds of compile time per translation unit, and should only be used in core rendering\n    engine code. Consider an out of line helper function instead.\n\n* LayoutTests/http/tests/site-isolation/inspector/css/css-node-commands-frame-target-expected.txt: Added.\n* LayoutTests/http/tests/site-isolation/inspector/css/css-node-commands-frame-target.html: Added.\n* LayoutTests/http/tests/site-isolation/inspector/css/resources/frame-with-stylesheet.html:\n* Source/JavaScriptCore/inspector/protocol/CSS.json:\n* Source/WebCore/inspector/InspectorInstrumentation.cpp:\n(WebCore::InspectorInstrumentation::forcePseudoStateImpl):\n* Source/WebCore/inspector/agents/frame/FrameCSSAgent.cpp:\n(WebCore::protocolValueForPseudoElementType):\n(WebCore::FrameCSSAgent::getComputedStyleForNode):\n(WebCore::FrameCSSAgent::getFontDataForNode):\n(WebCore::FrameCSSAgent::getInlineStylesForNode):\n(WebCore::FrameCSSAgent::getMatchedStylesForNode):\n(WebCore::FrameCSSAgent::forcePseudoState):\n(WebCore::FrameCSSAgent::reset):\n(WebCore::FrameCSSAgent::elementForId):\n(WebCore::FrameCSSAgent::asInspectorStyleSheet):\n(WebCore::FrameCSSAgent::buildObjectForAttributesStyle):\n(WebCore::FrameCSSAgent::buildObjectForRule):\n(WebCore::FrameCSSAgent::buildArrayForMatchedRuleList):\n* Source/WebCore/inspector/agents/frame/FrameCSSAgent.h:\n\nCanonical link: https://commits.webkit.org/315703@main",
      "email": "qianlangchen@apple.com",
      "hash": "55ede1c42fd15bcd9b846e5d0282bd73ae6cc150",
      "subject": "[Site Isolation] Web Inspector: Implement nodeId-dependent CSS commands for frame targets"
    },
    "315704@main": {
      "author": "Charlie Wolfe",
      "avatar": "https://www.gravatar.com/avatar/857b3b5ff3394c31fa2689310a93dbab?d=identicon\u0026s=64",
      "cl": "315704@main",
      "clUrl": "https://commits.webkit.org/315704@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=317345\nrdar://179966498\n\nReviewed by Pascoe.\n\n* Source/WebKit/Shared/LogStream.mm:\n(WebKit::LogStream::create):\n\nCanonical link: https://commits.webkit.org/315704@main",
      "email": "charliew@apple.com",
      "hash": "d0f6a3d24490883120851c05db52757652618d06",
      "subject": "LogStream::create fails to call its completion handler when StreamServerConnection creation fails"
    },
    "315705@main": {
      "author": "Charlie Wolfe",
      "avatar": "https://www.gravatar.com/avatar/857b3b5ff3394c31fa2689310a93dbab?d=identicon\u0026s=64",
      "cl": "315705@main",
      "clUrl": "https://commits.webkit.org/315705@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=317176\nrdar://179766868\n\nReviewed by Pascoe.\n\nStringView::substring(start, length) takes a length as its second argument. After detecting a\n\"//# sourceURL=\" prefix (14 characters), the code started the substring at offset 14 but passed pos\n(the newline index) as the length, reading indices [14, 14 + pos) and overshooting the newline by 14\ncharacters. As a result debugDescription() returned the sourceURL value plus the newline and the\nfollowing script body instead of just the sourceURL. The length must be pos - 14, mirroring the\nelse-branch's substring(0, pos).\n\n* Source/WebCore/page/UserScript.cpp:\n(WebCore::UserScript::debugDescription const):\n\nCanonical link: https://commits.webkit.org/315705@main",
      "email": "charliew@apple.com",
      "hash": "3b126365d9119fdd039d50acf2c0bcf76a348484",
      "subject": "UserScript::debugDescription mishandles the substring length for the sourceURL prefix"
    },
    "315706@main": {
      "author": "Chris Dumez",
      "avatar": "https://www.gravatar.com/avatar/a9f21fe3a8baf79b45f3c91572187bdc?d=identicon\u0026s=64",
      "cl": "315706@main",
      "clUrl": "https://commits.webkit.org/315706@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=317629\nrdar://180280584\n\nReviewed by Per Arne Vollan.\n\nNetworkBroadcastChannelRegistry uses the IPC-supplied channel name as a\nHashMap\u003cString, ...\u003e key in registerChannel() (via ensure()) and in\nunregisterChannel() / postMessage() (via find()). A compromised or\nmalformed WebProcess could send a null String for the name. Looking up a\nnull String key dereferences a null StringImpl while hashing the key\n(StringHash::hash() calls key.impl()-\u003ehash()), crashing the network\nprocess before HashTable::validateKey() ever runs.\n\nReject a null name with a MESSAGE_CHECK in all three endpoints, matching\nthe existing origin validation.\n\nTest: ipc/register-broadcast-channel-malformed-client-origin-crash.html\n\n* LayoutTests/ipc/coreipc.js:\n(export.ArgumentSerializer):\n* LayoutTests/ipc/register-broadcast-channel-malformed-client-origin-crash-expected.txt: Added.\n* LayoutTests/ipc/register-broadcast-channel-malformed-client-origin-crash.html: Added.\n* Source/WebKit/NetworkProcess/NetworkBroadcastChannelRegistry.cpp:\n(WebKit::NetworkBroadcastChannelRegistry::registerChannel):\n(WebKit::NetworkBroadcastChannelRegistry::unregisterChannel):\n(WebKit::NetworkBroadcastChannelRegistry::postMessage):\n\nCanonical link: https://commits.webkit.org/315706@main",
      "email": "cdumez@apple.com",
      "hash": "e85a1ea1850262cda430f44560768619cbd3f2be",
      "subject": "NetworkBroadcastChannelRegistry crashes on a BroadcastChannel message with a null name"
    },
    "315707@main": {
      "author": "Charlie Wolfe",
      "avatar": "https://www.gravatar.com/avatar/857b3b5ff3394c31fa2689310a93dbab?d=identicon\u0026s=64",
      "cl": "315707@main",
      "clUrl": "https://commits.webkit.org/315707@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=317343\nrdar://179966362\n\nReviewed by Pascoe.\n\nFileHandle::write() returns std::optional\u003cuint64_t\u003e and yields std::nullopt on a non-EINTR write\nfailure. The error path compared `writtenBytes != rawData-\u003esize()` (a disengaged optional never\ncompares equal, so the branch is taken) and then logged `*writtenBytes`, dereferencing the\ndisengaged optional. Use writtenBytes.value_or(0).\n\n* Source/WebKit/Shared/PersistencyUtils.cpp:\n(WebKit::writeToDisk):\n\nCanonical link: https://commits.webkit.org/315707@main",
      "email": "charliew@apple.com",
      "hash": "2ac36ae17d1f1af96b9613399b6843441caf236e",
      "subject": "writeToDisk dereferences a disengaged std::optional when a disk write fails"
    },
    "315708@main": {
      "author": "Abrar Rahman Protyasha",
      "avatar": "https://www.gravatar.com/avatar/fce5b3c4e9f3c59a4873e08c9f03c3b1?d=identicon\u0026s=64",
      "cl": "315708@main",
      "clUrl": "https://commits.webkit.org/315708@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=317673\nrdar://180430953\n\nReviewed by Richard Robinson and Megan Gardner.\n\nThis is a mechanical upstream of HAVE_DC_ISSUER_IDENTIFIER_SUPPORT.\n\nAs a drive-by, we also drop the IdentityDocumentServices version check,\ngiven macOS 27 SDKs have shipped with newer versions for a while now.\n\n* Source/WTF/wtf/PlatformHave.h:\n* Source/WebKit/WebKitSwift/IdentityDocumentServices/ISO18013MobileDocumentRequest+Extras.swift:\n* Source/WebKit/WebKitSwift/IdentityDocumentServices/WKIdentityDocumentPresentmentMobileDocumentRequest+Extras.swift:\n\nCanonical link: https://commits.webkit.org/315708@main",
      "email": "a_protyasha@apple.com",
      "hash": "0057184f284893feffb81c0feb281cb39405afe1",
      "subject": "Upstream platform guard for DC issuer identifier support"
    },
    "315709@main": {
      "author": "Franco Vieira de Souza",
      "avatar": "https://www.gravatar.com/avatar/14ed77684c1591a07649be8495cc0ddb?d=identicon\u0026s=64",
      "cl": "315709@main",
      "clUrl": "https://commits.webkit.org/315709@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=317242\nrdar://168247413\n\nReviewed by Chris Dumez.\n\nA path that does not involve IPC nor thread-hopping was added to\nMessagePort::postMessage(). It is only used when both the sending and\nreceiving ends have never been shipped. This use case is not uncommon\nbecause using a port pair simply for scheduling reasons is a known\nworkaround for nested setTimeout() timing restrictions.\n\nWhen any of the ends is disentangled, all unhandled messages are\ndrained to the MessagePortChannelProvider, and the local path is\nnever used again.\n\nOne new test verifying the correctness of port transfer, for an\nalready started local port:\n* LayoutTests/fast/events/message-port-transfer-preserves-pending-message.html\n\nThree microbenchmarks were added:\n* PerformanceTests/DOM/MessagePort/throughput-same-context-batch.html\n* PerformanceTests/DOM/MessagePort/throughput-same-context-new-ports.html\n* PerformanceTests/DOM/MessagePort/throughput-same-context.html\n\nthroughput-same-context-new-ports.html is of extra relevance because\nit is analogous to a real requestIdleCallback() polyfill.\n\nCanonical link: https://commits.webkit.org/315709@main",
      "email": "franco_vieira@apple.com",
      "hash": "f7a7c2332942260c44489ff33acecbd87a1152e4",
      "subject": "Short circuit same-realm MessagePort message delivery"
    }
  },
  "date": "2026-06-23",
  "days": 1,
  "generatedAt": "2026-06-24T21:44:46Z",
  "markdown": "## Highlights\n- **Security** WebKit tightened sandbox inheritance so meta-delivered sandbox directives are not accidentally re-applied, reducing policy confusion in embedded content. [commit 315702@main](https://commits.webkit.org/315702@main)\n- **Web Platform** MessagePort now short-circuits same-realm delivery, trimming overhead on a hot messaging path used by modern app architectures. [commit 315709@main](https://commits.webkit.org/315709@main)\n- **DevTools** Site Isolation work landed for frame-targeted CSS inspection and editing in Web Inspector, a key step toward fully capable cross-frame debugging. [commit 315703@main](https://commits.webkit.org/315703@main)\n- **Media** WebKit fixed a crash in video format-description handling, improving robustness in media playback setup. [commit 315696@main](https://commits.webkit.org/315696@main)\n- **GPU** WebXR Layers gained cube layer support, expanding immersive rendering primitives for XR content. [commit 315665@main](https://commits.webkit.org/315665@main)\n- **A11y** An isolated accessibility tree bug that could leave VoiceOver seeing \"empty web content\" was fixed, restoring reliable root attachment. [commit 315648@main](https://commits.webkit.org/315648@main)\n- **Mobile** Pull-to-refresh support landed across Golden Gate MiniBrowser and SwiftBrowser, backed by upstream refresh-controller support. [commit 315650@main](https://commits.webkit.org/315650@main) [commit 315646@main](https://commits.webkit.org/315646@main) [commit 315639@main](https://commits.webkit.org/315639@main)\n- **V8** Several JavaScriptCore correctness and performance fixes landed, including iterator-realm correctness, large RegExp flag crash handling, and less string allocation churn. [commit 315645@main](https://commits.webkit.org/315645@main) [commit 315644@main](https://commits.webkit.org/315644@main) [commit 315643@main](https://commits.webkit.org/315643@main)\n- **GPU** WebGPU kept moving fast with a render-pipeline correctness fix and a broad test unskip pass that should improve conformance signal. [commit 315653@main](https://commits.webkit.org/315653@main) [commit 315669@main](https://commits.webkit.org/315669@main)\n\n## What landed by area\n\n### Crash fixes and correctness\n- **Security** A disk write failure path no longer dereferences a disengaged std::optional in writeToDisk. [commit 315707@main](https://commits.webkit.org/315707@main)\n- **Security** BroadcastChannel message handling no longer crashes when a null channel name reaches NetworkBroadcastChannelRegistry. [commit 315706@main](https://commits.webkit.org/315706@main)\n- **Security** LogStream::create now always fires its completion handler even when StreamServerConnection setup fails. [commit 315704@main](https://commits.webkit.org/315704@main)\n- **Security** Text Extraction no longer crashes when a client asks for a JS handle for a stale node ID. [commit 315699@main](https://commits.webkit.org/315699@main)\n- **Security** A null dereference in useGPUProcessForDOMRenderingEnabled() was fixed after a regression. [commit 315693@main](https://commits.webkit.org/315693@main)\n- **Security** HTMLModelElement insertion got a crash fix for a path that had become more frequent. [commit 315689@main](https://commits.webkit.org/315689@main)\n- **Security** Navigation API traversal promotion now handles a null destination key without crashing. [commit 315685@main](https://commits.webkit.org/315685@main)\n- **Security** PlaceholderModelPlayer early returns now still call completion handlers for playback-rate and pause updates. [commit 315679@main](https://commits.webkit.org/315679@main)\n- **Security** ReadableStream iterator creation no longer null-dereferences. [commit 315664@main](https://commits.webkit.org/315664@main)\n- **Security** EditingRange IPC decode now rejects overflowing location plus length instead of crashing the UI process. [commit 315657@main](https://commits.webkit.org/315657@main)\n- **Security** TreeWalker::setCurrent() now takes the required lock, fixing a thread-safety bug. [commit 315652@main](https://commits.webkit.org/315652@main)\n- **Security** GCReachableRef HashTraits peek() and take() now use the right value type. [commit 315647@main](https://commits.webkit.org/315647@main)\n- **UI** Fullscreen exit now only closes when the top document exists and has no fullscreen element, preventing a bad close path. [commit 315633@main](https://commits.webkit.org/315633@main)\n\n### Web Inspector, Site Isolation, and automation\n- **DevTools** Web Inspector implemented nodeId-dependent CSS commands for frame targets under Site Isolation. [commit 315703@main](https://commits.webkit.org/315703@main)\n- **DevTools** DOM editing commands were added for FrameDOMAgent, another chunk of Site Isolation inspector parity. [commit 315698@main](https://commits.webkit.org/315698@main)\n- **DevTools** WebDriver behavior got an API test specifically exercising navigator.webdriver. [commit 315656@main](https://commits.webkit.org/315656@main)\n\n### Media, WebRTC, and tracks\n- **Media** MSE time-state queries were pushed through MediaSourcePrivate, cleaning up layering around current, buffered, and future time checks. [commit 315691@main](https://commits.webkit.org/315691@main)\n- **Media** MediaSourceClient::waitForTarget moved to MediaSourcePrivate only, continuing the MSE cleanup. [commit 315668@main](https://commits.webkit.org/315668@main)\n- **Media** GStreamer WebRTC now advertises more H.264 profiles and levels for encoding. [commit 315666@main](https://commits.webkit.org/315666@main)\n- **Media** HTML TextTrack coverage expanded with more tests for previously untested spec areas. [commit 315659@main](https://commits.webkit.org/315659@main)\n- **Media** Text tracks can now be searched for matching cue text. [commit 315634@main](https://commits.webkit.org/315634@main)\n- **Media** libwebrtc and libaom were resynced up to M150. [commit 315670@main](https://commits.webkit.org/315670@main)\n- **Media** libwebrtc and libvpx were resynced up to M150. [commit 315667@main](https://commits.webkit.org/315667@main)\n\n### GPU, graphics, and rendering\n- **GPU** WebGL framebuffer deletion no longer corrupts the read-framebuffer binding when deleting the draw framebuffer. [commit 315676@main](https://commits.webkit.org/315676@main)\n- **Rendering** Layer-based SVG rendering now preserves paint order for non-composited children around composited SVG siblings. [commit 315674@main](https://commits.webkit.org/315674@main)\n- **GPU** WebGPU unskipped as many tests as possible, improving day-to-day signal on implementation progress. [commit 315669@main](https://commits.webkit.org/315669@main)\n- **GPU** WebXR Layers implemented cube layers. [commit 315665@main](https://commits.webkit.org/315665@main)\n- **GPU** A Skia regression causing crashes deep in Nvidia EGL during page teardown was fixed. [commit 315661@main](https://commits.webkit.org/315661@main)\n- **Rendering** Skia software-raster test failures with small pixel diffs were adjusted. [commit 315654@main](https://commits.webkit.org/315654@main)\n- **GPU** WebGPU render pipelines now handle unused pipeline-overridable constants correctly instead of silently drawing nothing. [commit 315653@main](https://commits.webkit.org/315653@main)\n- **Rendering** RealityKit integration now consistently uses transparent backgrounds. [commit 315635@main](https://commits.webkit.org/315635@main)\n\n### CSS, DOM, and parser internals\n- **Rendering** RefCountedCSSSelectorList was introduced, likely reducing selector-list copying and ownership friction. [commit 315700@main](https://commits.webkit.org/315700@main)\n- **Rendering** SVGLengthValue::setValueAsString now parses in a single MetaConsumer pass. [commit 315694@main](https://commits.webkit.org/315694@main)\n- **Refactor** Adjuster::adjust got a cleanup pass. [commit 315688@main](https://commits.webkit.org/315688@main)\n- **Rendering** css-backgrounds WPT content was synced forward. [commit 315680@main](https://commits.webkit.org/315680@main)\n- **Rendering** Two css-backgrounds animation regressions after STP 246 were fixed. [commit 315675@main](https://commits.webkit.org/315675@main)\n\n### JavaScriptCore\n- **V8** DFG::BasicBlock gained explicit index() and setIndex() accessors. [commit 315651@main](https://commits.webkit.org/315651@main)\n- **V8** IteratorClose in forEachInIterable now uses the Map or Set realm's own iterator structure, fixing cross-realm correctness. [commit 315645@main](https://commits.webkit.org/315645@main)\n- **V8** RegExp#@@split no longer crashes on a huge flags string. [commit 315644@main](https://commits.webkit.org/315644@main)\n- **Perf** makeString now avoids an intermediate StringImpl allocation when fed from StringBuilder. [commit 315643@main](https://commits.webkit.org/315643@main)\n- **Perf** The parser now creates a save point only when it is actually checking for \"use strict\". [commit 315637@main](https://commits.webkit.org/315637@main)\n\n### UI, app surfaces, and platform integration\n- **Mobile** Golden Gate MiniBrowser gained pull-to-refresh. [commit 315650@main](https://commits.webkit.org/315650@main)\n- **Mobile** Golden Gate SwiftBrowser gained pull-to-refresh. [commit 315646@main](https://commits.webkit.org/315646@main)\n- **UI** WKColorExtensionView lifetime is now safe when it outlives its WKWebView. [commit 315678@main](https://commits.webkit.org/315678@main)\n- **UI** Siri AI email replies no longer render invisible text. [commit 315681@main](https://commits.webkit.org/315681@main)\n- **UI** Fullscreen video resizing was fixed so video no longer shifts partly out of the window or shrinks below it. [commit 315642@main](https://commits.webkit.org/315642@main)\n- **UI** Gesture recognizer initiated drag sessions no longer get unnecessary updateDragWithGesture calls. [commit 315641@main](https://commits.webkit.org/315641@main)\n- **UI** Live resize code was refactored to split responsive and unresponsive update handling. [commit 315636@main](https://commits.webkit.org/315636@main)\n- **Mobile** Upstream support landed for NSRefreshController and related UIRefreshControl updates. [commit 315639@main](https://commits.webkit.org/315639@main)\n\n### Accessibility, credentials, and security-adjacent platform work\n- **A11y** The isolated accessibility tree no longer gets stuck rootless when the root ID arrives before the root node. [commit 315648@main](https://commits.webkit.org/315648@main)\n- **Privacy** Platform guards for digital credentials issuer identifier support were upstreamed. [commit 315708@main](https://commits.webkit.org/315708@main)\n- **Privacy** WebKit added coverage for valid Punycode that is invalid under UTS46. [commit 315690@main](https://commits.webkit.org/315690@main)\n- **Privacy** Digital credentials WPTs were resynced upstream. [commit 315658@main](https://commits.webkit.org/315658@main)\n- **Privacy** Text Extraction upstreamed support needed for Automatic Password Change from WebKitAdditions. [commit 315673@main](https://commits.webkit.org/315673@main)\n\n### Build, tooling, and test infrastructure\n- **Build** A build break after 315667@main was fixed. [commit 315701@main](https://commits.webkit.org/315701@main)\n- **Build** ASAN builds now resolve ___interceptor_malloc correctly. [commit 315684@main](https://commits.webkit.org/315684@main)\n- **Build** commit-message preservation tooling was fixed so git commit --amend stops reordering crafted messages. [commit 315682@main](https://commits.webkit.org/315682@main)\n- **Build** DEVELOPER_MODE_FATAL_WARNINGS was fixed on EWS. [commit 315672@main](https://commits.webkit.org/315672@main)\n- **Build** An internal macOS build break from an invalid preprocessing token in the refreshController API declaration was fixed. [commit 315671@main](https://commits.webkit.org/315671@main)\n- **Build** The WebKit Xcode project file was repaired after the refresh-controller work. [commit 315663@main](https://commits.webkit.org/315663@main)\n- **Build** WebCoreTestSupport is now only built in production for tools-style builds. [commit 315640@main](https://commits.webkit.org/315640@main)\n- **Build** A dependency cycle from linking AVKit in WebCoreTestSupport was fixed. [commit 315638@main](https://commits.webkit.org/315638@main)\n- **Build** A function-based user dir suffix setter replaced an environment-variable based approach. [commit 315687@main](https://commits.webkit.org/315687@main)\n\n### Test gardening and harness cleanup\n- **Refactor** Many js-tests were migrated away from waitUntilDone in part 2 of the cleanup. [commit 315677@main](https://commits.webkit.org/315677@main)\n- **Refactor** iOS Site Isolation timeout flakiness in TestWebKitAPI was worked around with gardening. [commit 315697@main](https://commits.webkit.org/315697@main)\n- **Refactor** A failing iOS css-view-transitions WPT got a gardening update for test-diff issues. [commit 315692@main](https://commits.webkit.org/315692@main)\n- **Refactor** Tests failing only on iOS Site Isolation were batch-marked in a gardening pass. [commit 315695@main](https://commits.webkit.org/315695@main)\n- **Refactor** Two GTK and WPE flaky crash tests were gardened around an assertion failure. [commit 315655@main](https://commits.webkit.org/315655@main)\n\n## Reverts \u0026 Reapplies\n- **Build** Two follow-up fixes cleaned up regressions from the refresh-controller series that broke internal macOS builds. [commit 315649@main](https://commits.webkit.org/315649@main) [commit 315671@main](https://commits.webkit.org/315671@main)",
  "repo": "webkit",
  "repoDisplay": "WebKit",
  "rollGroups": [
    {
      "name": "Unreviewed",
      "count": 2
    }
  ],
  "since": "2026-06-23",
  "totals": {
    "commits": 77,
    "features": 75,
    "rolls": 2
  },
  "until": "2026-06-23"
}