{
  "commits": {
    "251332@main": {
      "author": "Enrique Ocaña González",
      "avatar": "https://www.gravatar.com/avatar/7c82fa40774dd34b018c3361f990a045?d=identicon\u0026s=64",
      "cl": "251332@main",
      "clUrl": "https://commits.webkit.org/251332@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=231019\n\nReviewed by Alicia Boya Garcia and Xabier Rodriguez-Calvar.\n\nThis patch reintroduces https://commits.webkit.org/251332@main with\neven more corrections (basically, keeping the original time fudge factor),\nwhich motivated the last patch revert in bug 231019.\n\nOriginal author: Alicia Boya Garcia \u003caboya@igalia.com\u003e\n\nSource/WebCore:\n\nThis patch takes into consideration the GstSegment attached to a sample to offset the PTS and DTS.\nThis ensures accurate timestamps are obtained for MP4 files containing edit lists (commonly\nnecessary for files containing video with B frames to have PTS starting at zero).\n\nBefore this was implemented, a workaround was in place based on a heuristic (DTS = 0 \u0026\u0026 PTS \u003e 0 \u0026\u0026\nPTS \u003c 0.1). The workaround has been removed and replaced by a GStreamer log warning, because we no\nlonger believe it to be needed, but we would like to notice about any video having required it in\ntheory and failing because of this removal. The heuristic now uses the old fudge factor (2002/24000\n= ~0.083).\n\nThe time fudge factor has been centralized to PlatformTimeRanges, so now it's easier to change in\ncase of need, but it remains untouched because the old 0.083 value was good enough to pass the empty\nedit in test.mp4 used by Web Platform Tests.\n\nThis test fixes improves expectation results and fixes two subtests in\nimported/w3c/web-platform-tests/media-source/mediasource-remove.html.\n\nThis is a reworked version that fixes an issue where frames that would get a negative DTS were not\nbeing enqueued properly.\n\nLayoutTests:\n\nUpdate expectations for mediasource-remove.html in the GStreamer ports, as a 3 subtests get\nfixed.\n\nCanonical link: https://commits.webkit.org/317765@main",
      "email": "eocanha@igalia.com",
      "hash": "554e6641135858b62758e095cf7157533d9052ae",
      "subject": "[MSE][GStreamer] Honor MP4 edit lists"
    },
    "317735@main": {
      "author": "Cole Carley",
      "avatar": "https://www.gravatar.com/avatar/091dd5641909acc46e581355f491ed34?d=identicon\u0026s=64",
      "cl": "317735@main",
      "clUrl": "https://commits.webkit.org/317735@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319936\nrdar://182817126\n\nReviewed by David Kilzer.\n\nThe original fix: 316114@main, did not catch all the crashes.\n\nThe crash happens when a zero-length text match is added to\nm_cachedFoundRanges in WebFoundTextRangeController. The zero-length\ntext match matches the emptyValue() of the HashMap of WebFoundTextRange\nas it's key type. This trips the RELEASE_ASSERT that checks if the key\nis valid.\n\nTo fix this issue, I changed definition of the WebFoundTextRange empty\nvalue to be a DOM text match that would be impossible to create.\n\nTest: Tools/TestWebKitAPI/Tests/IPC/WebFoundTextRangeTests.cpp\n\n* Source/WebKit/Shared/WebFoundTextRange.h:\n(WTF::HashTraits\u003cWebKit::WebFoundTextRange\u003e::emptyValue):\n* Tools/TestWebKitAPI/CMakeLists.txt:\n* Tools/TestWebKitAPI/PlatformMac.cmake:\n* Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:\n* Tools/TestWebKitAPI/Tests/IPC/WebFoundTextRangeTests.cpp: Added.\n(TestWebKitAPI::zeroLengthMainFrameMatch):\n(TestWebKitAPI::TEST(WebFoundTextRange, EmptyValueDoesNotAliasZeroLengthMainFrameMatch)):\n(TestWebKitAPI::TEST(WebFoundTextRange, InsertingZeroLengthMainFrameMatchDoesNotCrash)):\n(TestWebKitAPI::TEST(WebFoundTextRange, ValidatedMapSupportsMultipleDOMMatches)):\n\nCanonical link: https://commits.webkit.org/317735@main",
      "email": "ccarley2@apple.com",
      "hash": "736e0acd848563c6bd895a7d37de7900355bbbf8",
      "subject": "Fix iOS Find in Page Crash"
    },
    "317736@main": {
      "author": "Mike Wyrzykowski",
      "avatar": "https://www.gravatar.com/avatar/4b1bc9e238714f95e22d5d2454c07066?d=identicon\u0026s=64",
      "cl": "317736@main",
      "clUrl": "https://commits.webkit.org/317736@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319980\nrdar://182926317\n\nReviewed by Taher Ali.\n\nCorrect validation of depth only passes in render bundles, which are allowed\nper the spec but we rejected them.\n\nTest: fast/webgpu/render-bundle-depth-only-pipeline.html\n\n* LayoutTests/fast/webgpu/render-bundle-depth-only-pipeline-expected.txt: Added.\n* LayoutTests/fast/webgpu/render-bundle-depth-only-pipeline.html: Added.\n* Source/WebGPU/WebGPU/RenderPipeline.mm:\n(WebGPU::RenderPipeline::validateRenderBundle const):\n\nCanonical link: https://commits.webkit.org/317736@main",
      "email": "mwyrzykowski@apple.com",
      "hash": "eefdc13c0e17cb0f37b0b272b482ed598f0b8c61",
      "subject": "[WebGPU] setPipeline fails for depth-only pipeline in a render bundle"
    },
    "317737@main": {
      "author": "Chris Dumez",
      "avatar": "https://www.gravatar.com/avatar/a9f21fe3a8baf79b45f3c91572187bdc?d=identicon\u0026s=64",
      "cl": "317737@main",
      "clUrl": "https://commits.webkit.org/317737@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319970\n\nReviewed by Carlos Garcia Campos.\n\n* Source/WebKit/UIProcess/Automation/BidiBrowsingContextAgent.cpp:\n(WebKit::BidiBrowsingContextAgent::create):\n(WebKit::BidiBrowsingContextAgent::getNextTree):\n* Source/WebKit/UIProcess/Automation/BidiBrowsingContextAgent.h:\n* Source/WebKit/UIProcess/Automation/WebDriverBidiProcessor.cpp:\n(WebKit::WebDriverBidiProcessor::WebDriverBidiProcessor):\n* Source/WebKit/UIProcess/Automation/WebDriverBidiProcessor.h:\n\nCanonical link: https://commits.webkit.org/317737@main",
      "email": "cdumez@apple.com",
      "hash": "a940837c2710a5ba880273867679d38f8b6353f3",
      "subject": "BidiBrowsingContextAgent::getNextTree() should stop capture a raw pointer to `this` in the lambda"
    },
    "317738@main": {
      "author": "Fady Farag",
      "avatar": "https://www.gravatar.com/avatar/0ac5127c69f90d0c57054173ae4c3108?d=identicon\u0026s=64",
      "cl": "317738@main",
      "clUrl": "https://commits.webkit.org/317738@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=318828\nrdar://181641564\n\nReviewed by Chris Dumez.\n\nDrop `NODELETE` from a function that destroys objects since it is a lie.\n\n* Source/WebCore/Modules/webauthn/cbor/CBORValue.h:\n* Source/WebCore/SaferCPPExpectations/NoDeleteCheckerExpectations:\n\nCanonical link: https://commits.webkit.org/317738@main",
      "email": "com.webkit.iidmsa@gmail.com",
      "hash": "637127bb65c1d71e0330a2f752542ad396c48d94",
      "subject": "Remove incorrect `NODELETE` annotation from `cbor/CBORValue.h`"
    },
    "317739@main": {
      "author": "lilly",
      "avatar": "https://www.gravatar.com/avatar/d0533d52eeb271270df480f37629a407?d=identicon\u0026s=64",
      "cl": "317739@main",
      "clUrl": "https://commits.webkit.org/317739@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319997\nrdar://182933375\n\nReviewed by Simon Fraser.\n\nAdd a FloatRect::edges() convenience accessor that returns the rectangle's\nfour edges as RectEdges\u003cstd::pair\u003cFloatPoint, FloatPoint\u003e\u003e, each edge being\na {  start corner, end corner } pair wound clockwise (top -\u003e right -\u003e bottom -\u003e left)\nand indexable by BoxSide. Utilized in BezierUtilities and will be utilized\nin CornerShapeUtilities\n\nNew tests are not neccesary for this change\n\n* Source/WebCore/platform/graphics/BezierUtilities.cpp:\n(WebCore::trimBezierToRect):\n* Source/WebCore/platform/graphics/FloatRect.h:\n(WebCore::FloatRect::edges const):\n\nCanonical link: https://commits.webkit.org/317739@main",
      "email": "173393835+cupidsity@users.noreply.github.com",
      "hash": "37b50f4cc7736485389df1585332ea03621a3e5b",
      "subject": "Add FloatRect::edges() helper returning the rect's four edges as  directed segments"
    },
    "317740@main": {
      "author": "Alan Baradlay",
      "avatar": "https://www.gravatar.com/avatar/788d66417db806c567552cfa1ae89f77?d=identicon\u0026s=64",
      "cl": "317740@main",
      "clUrl": "https://commits.webkit.org/317740@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319934\n\nReviewed by Antti Koivisto.\n\nFlexFormattingContext reached into its RenderFlexibleBox for things it could\nget elsewhere: it built its own FlexLayoutConstraints, and it called stateless\nFlexFormattingUtils helpers in their static form while re-passing the container\nit already holds via m_flexFormattingUtils.\n\nRoute these through the seams instead, mirroring how InlineFormattingContext\ntakes its constraints from the integration layer:\n\n- The integration (LayoutIntegration::FlexLayout) now builds FlexLayoutConstraints\n  and passes it into the FlexFormattingContext constructor by const reference, so\n  the formatting context no longer constructs its own. flexLayoutConstraints() and\n  mainAxisAvailableSpace() move from the formatting context to the integration.\n\n- FlexLayoutItem takes the container's isHorizontalFlow as a constructor argument\n  instead of walking up to the item's parent; the flexContainerIsHorizontalFlow()\n  free function is removed.\n\n- FlexFormattingUtils gains instance-method overloads (alongside the existing\n  statics kept for RenderFlexibleBox and the integration) so the formatting\n  context can call them via flexFormattingUtils() without re-passing the box.\n\n- ScopedCrossAxisOverrideForFlexItem derives its container from the flex item's\n  parent rather than taking it as an argument.\n\nNo change in behavior.\n\n* Source/WebCore/layout/formattingContexts/flex/FlexFormattingContext.cpp:\n(WebCore::FlexFormattingContext::FlexFormattingContext):\n(WebCore::FlexFormattingContext::layout):\n(WebCore::FlexLayoutItem::FlexLayoutItem):\n(WebCore::FlexFormattingContext::computeFlexLines):\n(WebCore::FlexFormattingContext::mainAxisAvailableSpaceForItemAlignment const):\n(WebCore::FlexFormattingContext::crossAxisAvailableSpaceForLineSizingAndAlignment const):\n(WebCore::FlexFormattingContext::crossSizeForFlexLines):\n(WebCore::FlexFormattingContext::computeCrossSizeForFlexItems):\n(WebCore::FlexFormattingContext::handleCrossAxisAlignmentForFlexLines):\n(WebCore::FlexFormattingContext::handleCrossAxisAlignmentForFlexItems):\n(WebCore::FlexFormattingContext::performBaselineAlignment):\n(WebCore::FlexFormattingContext::placeFlexItems):\n(WebCore::FlexFormattingContext::layoutColumnReverse):\n(WebCore::FlexFormattingContext::flexBaseSizeForFlexItem):\n(WebCore::FlexFormattingContext::flexBaseSizeNeedsBlockAxisContentSize):\n(WebCore::FlexFormattingContext::computeFlexItemMinMaxMainSizes):\n(WebCore::FlexFormattingContext::computeUsedMaxMainSize):\n(WebCore::FlexFormattingContext::computeUsedNonAutoMinMainSize):\n(WebCore::FlexFormattingContext::computeContentBasedMinMainSize):\n(WebCore::FlexFormattingContext::computeMainSizeFromAspectRatioUsing const):\n(WebCore::FlexFormattingContext::flexItemIntrinsicLogicalWidth):\n(WebCore::FlexFormattingContext::flexItemHasComputableAspectRatioAndCrossSizeIsConsideredDefinite):\n(WebCore::FlexFormattingContext::applyStretchAlignmentToFlexItem):\n(WebCore::FlexFormattingContext::applyStretchMinMaxCrossSize):\n(WebCore::FlexFormattingContext::flexLayoutConstraints): Deleted.\n(WebCore::FlexFormattingContext::mainAxisAvailableSpace): Deleted.\n(WebCore::flexContainerIsHorizontalFlow): Deleted.\n* Source/WebCore/layout/formattingContexts/flex/FlexFormattingContext.h:\n* Source/WebCore/layout/formattingContexts/flex/FlexFormattingUtils.cpp:\n(WebCore::FlexFormattingUtils::computeGap const):\n(WebCore::FlexFormattingUtils::crossAxisMarginExtentForFlexItem const):\n(WebCore::FlexFormattingUtils::preferredMainSizeLengthForFlexItem const):\n(WebCore::FlexFormattingUtils::minMainSizeLengthForFlexItem const):\n(WebCore::FlexFormattingUtils::preferredCrossSizeLengthForFlexItem const):\n(WebCore::FlexFormattingUtils::hasAutoMarginsInCrossAxis const):\n(WebCore::FlexFormattingUtils::useContentBasedMinimumSize const):\n(WebCore::FlexFormattingUtils::innerCrossSizeForFlexItem const):\n(WebCore::FlexFormattingUtils::mainAxisIsFlexItemInlineAxis const):\n(WebCore::FlexFormattingUtils::flexBasisForFlexItem const):\n(WebCore::FlexFormattingUtils::alignmentForFlexItem const):\n(WebCore::FlexFormattingUtils::hasDefiniteCrossSizeForFlexItem const):\n* Source/WebCore/layout/formattingContexts/flex/FlexFormattingUtils.h:\n* Source/WebCore/layout/integration/flex/LayoutIntegrationFlexLayout.cpp:\n(WebCore::LayoutIntegration::FlexLayout::flexLayoutConstraints const):\n(WebCore::LayoutIntegration::FlexLayout::mainAxisAvailableSpace const):\n(WebCore::LayoutIntegration::FlexLayout::collectFlexItems):\n(WebCore::LayoutIntegration::FlexLayout::layout):\n* Source/WebCore/layout/integration/flex/LayoutIntegrationFlexLayout.h:\n* Source/WebCore/rendering/RenderBlock.cpp:\n(WebCore::RenderBlock::computeChildIntrinsicLogicalWidths const):\n* Source/WebCore/rendering/RenderFlexibleBox.cpp:\n(WebCore::RenderFlexibleBox::ScopedCrossAxisOverrideForFlexItem::ScopedCrossAxisOverrideForFlexItem):\n* Source/WebCore/rendering/RenderFlexibleBox.h:\n\nCanonical link: https://commits.webkit.org/317740@main",
      "email": "zalan@apple.com",
      "hash": "99c45603929e804210a2e905187f953bfeddad93",
      "subject": "[cleanup] Reduce FlexFormattingContext's direct dependency on RenderFlexibleBox"
    },
    "317742@main": {
      "author": "Abrar Rahman Protyasha",
      "avatar": "https://www.gravatar.com/avatar/fce5b3c4e9f3c59a4873e08c9f03c3b1?d=identicon\u0026s=64",
      "cl": "317742@main",
      "clUrl": "https://commits.webkit.org/317742@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319832\nrdar://177010342\n\nReviewed by Richard Robinson and Wenson Hsieh.\n\nThis patch reworks WKAppKitGestureController's click handling so that\na double click either produces a DOM dblclick or smart magnification\ndepending on the content under the interaciton.\n\nSome salient parts to this change:\n\n- Move the start of a potential click (in the two-phase click pipeline)\n  at pressDown instead of the single click's .began action. This\n  addresses latency concerns that could drop the click on a plain single\n  click (now that the double click recognizer's failure requirements are\n  active).\n\n- Add a non-blocking double-click recognizer and a doubleClickForDouble-\n  click recognizer and drive their enablement by deliberating about the\n  web content under some interaction.\n\n- Wire the new recognizers in the gesture controller (simultaneity,\n  canPrevent, and a listener-gated single-click failure requirement)\n  and, in the web content process, feed the decision by hit-testing the\n  node under the press point when there is no click responder.\n\n* Source/WebKit/UIProcess/mac/WKAppKitGestureController.h:\n* Source/WebKit/UIProcess/mac/WKAppKitGestureController.mm:\n(-[WKAppKitGestureController singleClickGestureRecognizer]):\n(-[WKAppKitGestureController setSingleClickGestureRecognizer:]):\n(-[WKAppKitGestureController setUpGestureRecognizers]):\n(-[WKAppKitGestureController setUpDoubleClickForDoubleClickGestureRecognizer]):\n(-[WKAppKitGestureController setUpNonBlockingDoubleClickGestureRecognizer]):\n(-[WKAppKitGestureController addGesturesToWebView]):\n(-[WKAppKitGestureController enableGesturesIfNeeded]):\n(-[WKAppKitGestureController ensureGesturesAreNotArchived]):\n(-[WKAppKitGestureController panGestureRecognized:]):\n(-[WKAppKitGestureController singleClickGestureRecognized:]):\n(-[WKAppKitGestureController doubleClickGestureRecognized:]):\n(-[WKAppKitGestureController doubleClickForDoubleClickGestureRecognized:]):\n(-[WKAppKitGestureController nonBlockingDoubleClickGestureRecognized:]):\n(-[WKAppKitGestureController _doubleClickForDoubleClickShouldBeginAtLocation:]):\n(-[WKAppKitGestureController _doubleClickForZoomShouldBeginAtLocation:]):\n(-[WKAppKitGestureController handleClickBegan:]):\n(-[WKAppKitGestureController _resetClickGestureRecognizersForNextClick]):\n(-[WKAppKitGestureController _handleClickEnded:]):\n(-[WKAppKitGestureController _setDoubleClickGesturesEnabled:]):\n(-[WKAppKitGestureController _updateDoubleClickGestureRecognizerEnablement]):\n(-[WKAppKitGestureController wouldSignificantlyZoomForRenderRect:]):\n(-[WKAppKitGestureController handleSmartMagnificationInformationForPotentialClick:renderRect:fitEntireRect:viewportMinimumScale:viewportMaximumScale:nodeIsRootLevel:nodeIsPluginElement:]):\n(-[WKAppKitGestureController didNotHandleClickAsClick:]):\n(-[WKAppKitGestureController gestureRecognizer:shouldRecognizeSimultaneouslyWithGestureRecognizer:]):\n(-[WKAppKitGestureController gestureRecognizer:shouldRequireFailureOfGestureRecognizer:]):\n(-[WKAppKitGestureController gestureRecognizerShouldBegin:]):\n(-[WKAppKitGestureController _gestureRecognizer:canPreventGestureRecognizer:]):\n(-[WKAppKitGestureController setUpSingleClickGestureRecognizer]): Deleted.\n(-[WKAppKitGestureController _handleClickBegan:]): Deleted.\n* Source/WebKit/UIProcess/mac/WKAppKitGestureController.swift:\n(WKClickPressGestureRecognizer.controller):\n(WKAppKitGestureController.setUpSingleClickGestureRecognizer):\n* Source/WebKit/WebProcess/WebPage/Cocoa/WebPageCocoa.mm:\n(WebKit::WebPage::potentialTapAtPosition):\n(WebKit::WebPage::commitPotentialTap):\n* Tools/TestWebKitAPI/Tests/WebKit/WebPage/AppKit Gesture Tests/EmbeddedAppKitGesturesTests.swift:\n(AppKitGesturesTests.doubleClickingSelectsWordWhenScrolledToTopWithObscuredContentInset):\n\nCanonical link: https://commits.webkit.org/317742@main",
      "email": "a_protyasha@apple.com",
      "hash": "ceee5e9070b100c496086afc6da497fe5d60235e",
      "subject": "[AppKit Gestures] Bring up support for DOM dblclick and smart magnification"
    },
    "317743@main": {
      "author": "Ahmad Saleem",
      "avatar": "https://www.gravatar.com/avatar/38445f84fe28aa19bfeb1f59f6559532?d=identicon\u0026s=64",
      "cl": "317743@main",
      "clUrl": "https://commits.webkit.org/317743@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319035\nrdar://181885109\n\nReviewed by Qianlang Chen.\n\nA frontend-initiated console clear (the Clear button and its keyboard\nshortcut) routes through `WI.consoleManager.requestClearMessages()`,\nwhich fans `Console.clearMessages` out to every Console-capable target\nand only completes once a `Console.messagesCleared` event comes back and\n`WI.ConsoleManager.Event.Cleared` is dispatched. There is no local\nfallback, so if that fan-out ever stopped covering a target whose\nconsole agent produced messages, the clear would silently get stuck and\nthe log would never empty.\n\nUnder site isolation, messages can originate from multiple frame targets\n(same- and cross-origin), each with its own console agent. Today this\nworks because the frontend enables Console on exactly the same target\nset it later clears (`WI.Target` init vs. `requestClearMessages()`), so\nevery cleared target is already enabled and echoes `messagesCleared`.\nAdd a test that locks in this invariant: it logs from a same-origin and\na cross-origin iframe, confirms exactly the three expected frame targets\n(main frame, same-origin iframe, cross-origin iframe) exist and support\nConsole, requests a frontend clear, asserts the `Cleared` event fires,\nand finally re-enables Console on each frame target to confirm no\nmessages get replayed from the backend, proving the clear actually\nreached and executed there rather than just producing a frontend event.\n\nNo behavior change; test only.\n\n* LayoutTests/http/tests/site-isolation/inspector/console/clear-across-frame-targets.html: Added.\n* LayoutTests/http/tests/site-isolation/inspector/console/clear-across-frame-targets-expected.txt: Added.\n\nCanonical link: https://commits.webkit.org/317743@main",
      "email": "ahmad.saleem792+github@gmail.com",
      "hash": "f010ba868212b2113ca0727ce46f06273cb5fd0a",
      "subject": "Web Inspector: add a regression test for clearing the Console across frame targets under site isolation"
    },
    "317744@main": {
      "author": "Wenson Hsieh",
      "avatar": "https://www.gravatar.com/avatar/c8fba82556fd4988c78bd3a0aee2a44e?d=identicon\u0026s=64",
      "cl": "317744@main",
      "clUrl": "https://commits.webkit.org/317744@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320003\nrdar://182923758\n\nReviewed by Abrar Rahman Protyasha.\n\nOn iOS, add plumbing to surface an image element or link that we're currently showing the context\nmenu for as the \"context menu source\", when creating `UIIntelligenceSupport.IntelligenceElement`.\n\nTo do this, we add a new optional `contextMenuTargetNodeIdentifier` node ID in the text extraction\nrequest, which corresponds to the actively previewed element at the time of the extraction request;\nwe then use this to identify the context menu target node at extraction time, ensure that that\nelement's unique ID is propagated in text extraction results via `nodeIdentifier`, and finally set\n`isContextMenuSource` only if an item's `nodeIdentifier` is equal to the active\n`contextMenuTargetNodeIdentifier`, when assembling the final `IntelligenceElement` hierarchy.\n\n* Source/WebCore/page/text-extraction/TextExtraction.cpp:\n(WebCore::TextExtraction::extractRecursive):\n(WebCore::TextExtraction::extractItem):\n* Source/WebCore/page/text-extraction/TextExtractionTypes.h:\n* Source/WebKit/Shared/WebCoreArgumentCoders.serialization.in:\n* Source/WebKit/UIProcess/API/Cocoa/WKWebView+TextExtraction.mm:\n(activeContextMenuTargetNodeIdentifier):\n(-[WKWebView _activeContextMenuTargetNodeIdentifier]):\n(-[WKWebView _requestTextExtractionInternal:completion:]):\n* Source/WebKit/UIProcess/API/Cocoa/WKWebViewInternal.h:\n* Source/WebKit/UIProcess/Cocoa/TextExtraction/WKWebView+TextExtraction.swift:\n(createIntelligenceElement(_:contextMenuTargetNodeIdentifier:)):\n(createIntelligenceElement(_:)): Deleted.\n* Source/WebKit/UIProcess/ios/WKContentViewInteraction.h:\n* Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm:\n(-[WKContentView activeContextMenuElementContext]):\n\nCanonical link: https://commits.webkit.org/317744@main",
      "email": "wenson_hsieh@apple.com",
      "hash": "b3af678a6b3af26aa1cd01bb4fd277ac9d4d8047",
      "subject": "[UIIntelligenceSupport] iOS: Mark elements that are being previewed by a context menu with `isContextMenuSource`"
    },
    "317745@main": {
      "author": "Charlie Wolfe",
      "avatar": "https://www.gravatar.com/avatar/857b3b5ff3394c31fa2689310a93dbab?d=identicon\u0026s=64",
      "cl": "317745@main",
      "clUrl": "https://commits.webkit.org/317745@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320005\nrdar://182944889\n\nReviewed by Wenson Hsieh.\n\nTranslation replaces an element's text via TextManipulationController without touching its writing\ndirection. Since caret and selection direction come from the enclosing block's direction (not the\nscript of the characters), text translated from Arabic (RTL) to English (LTR) stayed in an RTL\nblock, so the caret moved backwards and selection extended the wrong way.\n\nAfter a replacement, update the enclosing block's direction to match the base direction of the new\ntext when they disagree, mirroring how pasted content updates its direction in\nReplaceSelectionCommand. dir=auto blocks are left alone since they already recompute direction from\ncontent.\n\nTest: Tools/TestWebKitAPI/Tests/WebKit/WKWebView/TextManipulation.mm\n\n* Source/WebCore/editing/TextManipulationController.cpp:\n(WebCore::updateEnclosingBlockDirectionAfterReplacement):\n(WebCore::TextManipulationController::replace):\n* Tools/TestWebKitAPI/Tests/WebKit/WKWebView/TextManipulation.mm:\n(TestWebKitAPI::selectionDirectionProbe):\n(TestWebKitAPI::TEST(TextManipulation, CompleteTextManipulationTranslatedRTLParagraphUsesStaleSelectionDirection)):\n\nCanonical link: https://commits.webkit.org/317745@main",
      "email": "charliew@apple.com",
      "hash": "5d309c9d1cb5cb215cf9764e1aad513afaf7c6ba",
      "subject": "Text translated from an RTL language keeps RTL selection behavior"
    },
    "317746@main": {
      "author": "Charlie Wolfe",
      "avatar": "https://www.gravatar.com/avatar/857b3b5ff3394c31fa2689310a93dbab?d=identicon\u0026s=64",
      "cl": "317746@main",
      "clUrl": "https://commits.webkit.org/317746@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320012\nrdar://182947796\n\nReviewed by Simon Fraser.\n\nMove the per-process debug border out of GraphicsLayer::getDebugBorderInfo into a new\nFrameProcessIndicators class owned by GraphicsLayerCA. In addition to the PID-colored border, it\ndraws a text layer labeling each frame with its process ID, making it clearer which process a frame\nis rendered in when debugging site isolation.\n\n* Source/WebCore/PlatformCocoa.cmake:\n* Source/WebCore/SourcesCocoa.txt:\n* Source/WebCore/WebCore.xcodeproj/project.pbxproj:\n* Source/WebCore/platform/graphics/GraphicsLayer.cpp:\n(WebCore::GraphicsLayer::getDebugBorderInfo const):\n(WebCore::GraphicsLayer::updateDebugIndicators):\n* Source/WebCore/platform/graphics/ca/FrameProcessIndicators.cpp: Added.\n(WebCore::FrameProcessIndicators::FrameProcessIndicators):\n(WebCore::FrameProcessIndicators::~FrameProcessIndicators):\n(WebCore::FrameProcessIndicators::appendLayers const):\n(WebCore::FrameProcessIndicators::updateGeometry):\n(WebCore::FrameProcessIndicators::updateContentsScale):\n(WebCore::FrameProcessIndicators::borderColor):\n(WebCore::FrameProcessIndicators::makeFont):\n(WebCore::FrameProcessIndicators::size const):\n(WebCore::FrameProcessIndicators::textVerticalBounds const):\n(WebCore::FrameProcessIndicators::platformCALayerPaintContents):\n* Source/WebCore/platform/graphics/ca/FrameProcessIndicators.h: Added.\n* Source/WebCore/platform/graphics/ca/GraphicsLayerCA.cpp:\n(WebCore::GraphicsLayerCA::~GraphicsLayerCA):\n(WebCore::GraphicsLayerCA::updateSublayerList):\n(WebCore::GraphicsLayerCA::updateGeometry):\n(WebCore::GraphicsLayerCA::ensureStructuralLayer):\n* Source/WebCore/platform/graphics/ca/GraphicsLayerCA.h:\n\nCanonical link: https://commits.webkit.org/317746@main",
      "email": "charliew@apple.com",
      "hash": "85b404d9be36a777d5765440185ace8e2fd7a600",
      "subject": "Show process ID label alongside frame process border indicators"
    },
    "317747@main": {
      "author": "Tim Horton",
      "avatar": "https://www.gravatar.com/avatar/a04261df168177f0d816f3c7276f6183?d=identicon\u0026s=64",
      "cl": "317747@main",
      "clUrl": "https://commits.webkit.org/317747@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320039\nrdar://182467347\n\nReviewed by Abrar Rahman Protyasha.\n\n* Source/WebKit/UIProcess/mac/WebViewImpl.mm:\n(WebKit::WebViewImpl::WebViewImpl):\nUnder some (racy) conditions in Recovery, we can start out thinking that the\nweb view's window is obscured, and then fail to get a notification delivered\nthat the state changed (despite the state having changed if queried).\n\nThis results in us taking various power-optimization-related measures, and,\nafter 303720@main, also results in us totally blanking out the web view.\n\nUntil we can sort out the missing notification, just turn these optimizations\noff in the base system, where it is quite uncommon to have an obscured window.\n\nCanonical link: https://commits.webkit.org/317747@main",
      "email": "thorton@apple.com",
      "hash": "05f26a24bf5deceb087c67bdf485923543fc654a",
      "subject": "Recovery Web Browser sometimes hides visible content"
    },
    "317748@main": {
      "author": "Sergey Rubanov",
      "avatar": "https://www.gravatar.com/avatar/d04164fa4e06ce85533085f24c766e17?d=identicon\u0026s=64",
      "cl": "317748@main",
      "clUrl": "https://commits.webkit.org/317748@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=247454\n\nReviewed by Yusuke Suzuki.\n\nOn ADDRESS64, store Wasm::Type in one pointer-sized word with\nCompactPointerTuple (pointer half + TypeKind bits as the tag). Use the same\nType API on 32-bit where CompactPointerTuple is a real pointer+tag pair.\nBare kinds use a null pointer; concrete ref/ref_null store a TypeIndex;\nabstract heap types store a small TypeIndexTag and rebuild the TypeIndex\nin index().\n\nEnumTaggingTraits remains for standalone abstract TypeIndex tags on\nADDRESS64. CompactPointerTuple constexpr paths assert a null pointer so\nthey cannot silently drop a non-null payload.\n\nAccess via kind() / index() / set(). Call sites that used .kind / .index\nfields are updated to methods.\n\n* Source/WTF/wtf/CompactPointerTuple.h:\n* Source/JavaScriptCore/wasm/generateWasmOpsHeader.py:\n* Source/JavaScriptCore/wasm/WasmFormat.h:\n* Source/JavaScriptCore/wasm/WasmFormat.cpp:\n* Source/JavaScriptCore/wasm/WasmTypeDefinition.h:\n* Source/JavaScriptCore/wasm/WasmTypeDefinition.cpp:\n* Source/JavaScriptCore/wasm/WasmTypeDefinitionInlines.h:\n* Source/JavaScriptCore/wasm/WasmFunctionParser.h:\n* Source/JavaScriptCore/wasm/WasmSectionParser.cpp:\n* Source/JavaScriptCore/wasm/WasmParser.h:\n* Source/JavaScriptCore/wasm/WasmBBQJIT.cpp:\n* Source/JavaScriptCore/wasm/WasmBBQJIT.h:\n* Source/JavaScriptCore/wasm/WasmBBQJIT64.cpp:\n* Source/JavaScriptCore/wasm/WasmOMGIRGenerator.cpp:\n* Source/JavaScriptCore/wasm/WasmOperations.cpp:\n* Source/JavaScriptCore/wasm/WasmOperationsInlines.h:\n* Source/JavaScriptCore/wasm/WasmCallingConvention.h:\n* Source/JavaScriptCore/wasm/WasmConstExprGenerator.cpp:\n* Source/JavaScriptCore/wasm/WasmIPIntGenerator.cpp:\n* Source/JavaScriptCore/wasm/WasmIPIntSlowPaths.cpp:\n* Source/JavaScriptCore/wasm/WasmGlobal.cpp:\n* Source/JavaScriptCore/wasm/WasmGlobal.h:\n* Source/JavaScriptCore/wasm/WasmTable.cpp:\n* Source/JavaScriptCore/wasm/WasmTag.h:\n* Source/JavaScriptCore/wasm/WasmTypeSectionState.cpp:\n* Source/JavaScriptCore/wasm/WasmTypeSectionState.h:\n* Source/JavaScriptCore/wasm/debugger/WasmDebugServerUtilities.cpp:\n* Source/JavaScriptCore/wasm/debugger/WasmQueryHandler.cpp:\n* Source/JavaScriptCore/wasm/js/JSToWasm.cpp:\n* Source/JavaScriptCore/wasm/js/WasmToJS.cpp:\n* Source/JavaScriptCore/wasm/js/JSWebAssemblyArrayInlines.h:\n* Source/JavaScriptCore/wasm/js/JSWebAssemblyException.cpp:\n* Source/JavaScriptCore/wasm/js/JSWebAssemblyHelpers.h:\n* Source/JavaScriptCore/wasm/js/JSWebAssemblyStruct.cpp:\n* Source/JavaScriptCore/wasm/js/WebAssemblyBuiltin.cpp:\n* Source/JavaScriptCore/wasm/js/WebAssemblyExceptionConstructor.cpp:\n* Source/JavaScriptCore/wasm/js/WebAssemblyGlobalConstructor.cpp:\n* Source/JavaScriptCore/wasm/js/WebAssemblyModuleRecord.cpp:\n* Source/JavaScriptCore/b3/B3LowerMacros.cpp:\n* Source/JavaScriptCore/b3/B3ReduceStrength.cpp:\n* Source/JavaScriptCore/dfg/DFGAbstractInterpreterInlines.h:\n* Source/JavaScriptCore/dfg/DFGStrengthReductionPhase.cpp:\n* Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:\n* JSTests/wasm/stress/type-index-abstract-heap-types.js: Added.\n\nCanonical link: https://commits.webkit.org/317748@main",
      "email": "chi187@gmail.com",
      "hash": "f66c3804ee6c2efbaf23130a1a282fa345f299cd",
      "subject": "[JSC][Wasm] Shrink Type to a pointer-sized payload on 64-bit"
    },
    "317749@main": {
      "author": "Sosuke Suzuki",
      "avatar": "https://www.gravatar.com/avatar/e63b87350fe19bdd9a30c7234eda45af?d=identicon\u0026s=64",
      "cl": "317749@main",
      "clUrl": "https://commits.webkit.org/317749@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319943\n\nReviewed by Yusuke Suzuki.\n\ntryReadUnicodeChar loads two code units at once and masks the pair with\n0xfc00fc00, taking the inline BMP path only when the result is zero, i.e. only\nwhen both code units are below U+0400. That path returns just the first code\nunit, so the second one should not gate it: a first code unit that is not a\nsurrogate is a BMP code point on its own, whatever follows it.\n\nSurrogates are U+D800-U+DFFF, so a first code unit with bit 15 clear can never\nbe one. Branch on that bit before masking. It is a single tbz on ARM64, so\nU+0000-U+7FFF reaches the BMP path in fewer instructions than the pair-is-zero\ntest used to take, and the mask is only computed on the paths that need it. This\nalso recovers U+2000-U+23FF, which was on the fast path until 317399@main\ncorrected the mask from 0xdc00 to 0xfc00.\n\nFailing the surrogate pair test does not mean the read is a surrogate at all, so\ncheck the first code unit against the surrogate tag there as well. U+8000-U+FFFF\nthen stops calling the slow thunk too, and since that test sits behind the pair\ntest it only runs where the thunk used to be called.\n\nThe BMP test is no longer against zero, so the ARM64 and32AndSetFlags special\ncase goes away.\n\n                                            Baseline           Patched\n\nregexp-unicode-bmp-hangul-and-fullwidth 62.2569+-0.8130    44.1657+-1.3399   definitely 1.4096x faster\nregexp-unicode-bmp-above-latin          61.6626+-0.8342    43.9289+-0.4469   definitely 1.4037x faster\nregexp-unicode-latin-before-surrogate   62.2440+-0.9320    53.3576+-1.1463   definitely 1.1665x faster\nregexp-unicode-surrogate-pairs          45.8066+-1.4352    44.0832+-1.2427   neutral\n\nTests: JSTests/microbenchmarks/regexp-unicode-bmp-above-latin.js\n       JSTests/microbenchmarks/regexp-unicode-latin-before-surrogate.js\n       JSTests/microbenchmarks/regexp-unicode-surrogate-pairs.js\n       JSTests/stress/regexp-unicode-bmp-fast-path-code-points.js\n\n* JSTests/microbenchmarks/regexp-unicode-bmp-above-latin.js: Added.\n(splitmix32):\n(makeString):\n* JSTests/microbenchmarks/regexp-unicode-latin-before-surrogate.js: Added.\n(splitmix32):\n(makeString):\n* JSTests/microbenchmarks/regexp-unicode-surrogate-pairs.js: Added.\n(splitmix32):\n(makeString):\n* JSTests/stress/regexp-unicode-bmp-fast-path-code-points.js: Added.\n(shouldBe):\n(codePointsOf):\n(i.const.first.of.codeUnits.const.second.of.followers.first.toString):\n* Source/JavaScriptCore/yarr/YarrJIT.cpp:\n(JSC::Yarr::tryReadUnicodeCharImpl):\n\nCanonical link: https://commits.webkit.org/317749@main",
      "email": "sosuke@bun.sh",
      "hash": "016fcfbca076fd98152cf0ad5d3d65c1ec695237",
      "subject": "[YARR] `tryReadUnicodeChar` should take the BMP fast path for any non-surrogate character"
    },
    "317750@main": {
      "author": "David Kilzer",
      "avatar": "https://www.gravatar.com/avatar/e228ffc7a792e70bf2d160563c18dcc6?d=identicon\u0026s=64",
      "cl": "317750@main",
      "clUrl": "https://commits.webkit.org/317750@main",
      "description": "\u003chttps://bugs.webkit.org/show_bug.cgi?id=319892\u003e\n\u003crdar://182804763\u003e\n\nReviewed by Brent Fulgham.\n\nThe constructor initializes `m_substituteData` from the moved-from\n`substituteData` parameter, then reads `substituteData.isValid()` to\ncompute `m_originalSubstituteDataWasValid`.  Member initialization\nfollows declaration order, and `m_substituteData` is declared before\n`m_originalSubstituteDataWasValid`, so `substituteData` has already\nbeen moved from by the time `isValid()` is called on it, making the\nfield always false regardless of the original data's validity.\n\n`m_originalSubstituteDataWasValid` gates the local-resource-load grant\nin `DocumentLoader::commitData()`, so this silently drops local\nresource access for documents loaded with substitute data.\n\nTest: Tools/TestWebKitAPI/Tests/WebKitLegacy/cocoa/SubstituteDataLocalResourceAccess.mm\n\n* Source/WebCore/loader/DocumentLoader.cpp:\n(WebCore::DocumentLoader::DocumentLoader):\n* Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:\n* Tools/TestWebKitAPI/Tests/WebKitLegacy/cocoa/SubstituteDataLocalResourceAccess.mm: Add.\n(TestWebKitAPI::TEST(WebKitLegacy, SubstituteDataDocumentCanLoadLocalResource)):\n\nCanonical link: https://commits.webkit.org/317750@main",
      "email": "ddkilzer@apple.com",
      "hash": "af3738924f767a576348b9730ef598920dd722cc",
      "subject": "REGRESSION (292080@main): [WK1] DocumentLoader::m_originalSubstituteDataWasValid is always false because it reads a moved-from SubstituteData"
    },
    "317751@main": {
      "author": "Tyler Wilcock",
      "avatar": "https://www.gravatar.com/avatar/9545082e6bed96158a9f52dac6e4b869?d=identicon\u0026s=64",
      "cl": "317751@main",
      "clUrl": "https://commits.webkit.org/317751@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319990\nrdar://182918982\n\nReviewed by Andres Gonzalez.\n\nRelations are only re-resolved on an id-attribute change when the changed id is\nreferenced by a relation (AXObjectCache::idChangeCanAffectRelations, backed by\nm_referencedRelationTargetIds). That set was populated only from relation attribute\nvalues (relationAttributes()), which does not include the label `for` attribute.\nNativeLabelFor/LabelFor relations are established separately in addLabelForRelation()\nvia HTMLLabelElement::control(). As a result, giving an element the id that an\nexisting label-for points at no longer associated the label with the control.\n\nRecord a label's `for` target id in addLabelForRelation() (resolved or not, and\nbefore the not-in-tree-scope bail so the set stays a complete superset) so that an\nid change to or from that id re-resolves the label's control relation.\n\n* LayoutTests/accessibility/label-for-control-id-change-expected.txt: Added.\n* LayoutTests/accessibility/label-for-control-id-change.html: Added.\n* Source/WebCore/accessibility/AXObjectCache.cpp:\n(WebCore::AXObjectCache::addLabelForRelation):\n\nCanonical link: https://commits.webkit.org/317751@main",
      "email": "tyler_w@apple.com",
      "hash": "67bc63c03450d4128c2a12d2f750776a020ae8bd",
      "subject": "REGRESSION(317690@main): A label-for relation is not re-resolved when the target control's id changes"
    },
    "317752@main": {
      "author": "Patrick Griffis",
      "avatar": "https://www.gravatar.com/avatar/2233c3a857004b126158572af9fe36f7?d=identicon\u0026s=64",
      "cl": "317752@main",
      "clUrl": "https://commits.webkit.org/317752@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320036\n\nReviewed by Carlos Alberto Lopez Perez.\n\nThis is the only internal method for persistant credential storage\nand nothing about it is GTK specific.\n\nLeave it off by default to not pull any dependency.\n\n* Source/WebCore/PlatformWPE.cmake:\n* Source/cmake/OptionsWPE.cmake:\n\nCanonical link: https://commits.webkit.org/317752@main",
      "email": "pgriffis@igalia.com",
      "hash": "b6276d0b335e27313f5ef882b00adba06d8ac4cb",
      "subject": "[WPE] Expose USE_LIBSECRET as an option"
    },
    "317753@main": {
      "author": "Alan Baradlay",
      "avatar": "https://www.gravatar.com/avatar/788d66417db806c567552cfa1ae89f77?d=identicon\u0026s=64",
      "cl": "317753@main",
      "clUrl": "https://commits.webkit.org/317753@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320006\n\nReviewed by Antti Koivisto.\n\nFlexFormattingContext already carries a FlexLayoutItem for every in-flow item\n(with its cached border/padding/margin and a style() accessor), yet it kept\nunwrapping it back to the RenderBox to feed FlexFormattingUtils and to read the\nitem's style. Route flex-item access through FlexLayoutItem instead.\n\n- The FFC-only instance overloads of FlexFormattingUtils (the flow-aware margins,\n  crossAxisMarginExtentForFlexItem, the min/max/preferred length getters,\n  hasAutoMarginsInCrossAxis, useContentBasedMinimumSize, innerCrossSizeForFlexItem,\n  mainAxisIsFlexItemInlineAxis, flexBasisForFlexItem, alignmentForFlexItem,\n  hasDefiniteCrossSizeForFlexItem, marginBoxAscentForFlexItem,\n  preferredAspectRatioForFlexItem, flexItemHasComputableAspectRatio and\n  needToStretchFlexItemLogicalHeight) now take a const FlexLayoutItem\u0026; the static\n  forms keep taking RenderBox for RenderFlexibleBox's proxies, and the item methods\n  LayoutIntegration calls for positioned items (crossAxisExtentForFlexItem,\n  mainAxisExtentForFlexItem, mainAxisMarginExtentForFlexItem,\n  availableAlignmentSpaceForFlexItem, overflowAlignmentForFlexItem) stay on RenderBox.\n\n- Flex-item style reads in the formatting context go through flexLayoutItem.style()\n  rather than reaching through to the renderer.\n\nAlong the way, tidy the item-sizing setup: the 9.2 base-size loop moves into\ncomputeFlexBaseAndHypotheticalMainSizes(), flexBaseSizeNeedsBlockAxisContentSize() is\ninlined into ensureBlockAxisContentSizeForFlexItemIfNeeded(), handleMainAxisAlignment()\nreturns its positions with the column main-content extent as an out-argument,\ncomputeFlexLineCrossPositions() becomes a helper, and FlexLayoutItem snapshots its\nmain-axis margin at construction (re-reading it only for orthogonal items after layout).\n\nNo change in behavior.\n\n* Source/WebCore/layout/formattingContexts/flex/FlexFormattingContext.cpp:\n(WebCore::FlexFormattingContext::layout):\n(WebCore::FlexLayoutItem::FlexLayoutItem):\n(WebCore::FlexFormattingContext::computeFlexBaseAndHypotheticalMainSizes):\n(WebCore::FlexFormattingContext::computeFlexLines):\n(WebCore::FlexFormattingContext::hypotheticalCrossSizeForFlexItems):\n(WebCore::FlexFormattingContext::crossSizeForFlexLines):\n(WebCore::FlexFormattingContext::computeFlexLineCrossPositions):\n(WebCore::FlexFormattingContext::handleMainAxisAlignment):\n(WebCore::FlexFormattingContext::computeCrossSizeForFlexItems):\n(WebCore::FlexFormattingContext::handleCrossAxisAlignmentForFlexItems):\n(WebCore::FlexFormattingContext::performBaselineAlignment):\n(WebCore::FlexFormattingContext::placeFlexItems):\n(WebCore::FlexFormattingContext::layoutColumnReverse):\n(WebCore::FlexFormattingContext::flexBaseSizeForFlexItem):\n(WebCore::FlexFormattingContext::ensureBlockAxisContentSizeForFlexItemIfNeeded):\n(WebCore::FlexFormattingContext::minMaxMainSizesForFlexItem):\n(WebCore::FlexFormattingContext::computeUsedMaxMainSize):\n(WebCore::FlexFormattingContext::computeContentBasedMinMainSize):\n(WebCore::FlexFormattingContext::computeMainAxisExtentForFlexItem):\n(WebCore::FlexFormattingContext::computeMainSizeFromAspectRatioUsing const):\n(WebCore::FlexFormattingContext::adjustFlexItemSizeForAspectRatioCrossAxisMinAndMax):\n(WebCore::FlexFormattingContext::flexItemIntrinsicLogicalHeight const):\n(WebCore::FlexFormattingContext::flexItemIntrinsicLogicalWidth):\n(WebCore::FlexFormattingContext::flexItemHasComputableAspectRatioAndCrossSizeIsConsideredDefinite):\n(WebCore::FlexFormattingContext::canFitItemWithTrimmedMarginEnd const):\n(WebCore::FlexFormattingContext::updateAutoMarginsInCrossAxis):\n(WebCore::FlexFormattingContext::applyStretchAlignmentToFlexItem):\n(WebCore::FlexFormattingContext::applyStretchMinMaxCrossSize):\n(WebCore::FlexFormattingContext::flexBaseAndHypotheticalMainSize): Deleted.\n(WebCore::FlexFormattingContext::flexBaseSizeNeedsBlockAxisContentSize): Deleted.\n(WebCore::FlexFormattingContext::computeFlexItemMinMaxMainSizes): Deleted.\n(WebCore::FlexFormattingContext::crossAxisIntrinsicExtentForFlexItem): Deleted.\n(WebCore::constrainSizeByMinMax):\n(WebCore::FlexFormattingContext::computeUsedNonAutoMinMainSize):\n(WebCore::FlexFormattingContext::flexItemCrossSizeIsDefinite):\n(WebCore::FlexFormattingContext::trimMainAxisMarginStart):\n(WebCore::FlexFormattingContext::trimMainAxisMarginEnd):\n(WebCore::FlexFormattingContext::removeMarginEndFromFlexSizes const):\n(WebCore::FlexFormattingContext::flexFormattingUtils const):\n(WebCore::FlexLayoutItem::hypotheticalMainAxisMarginBoxSize const):\n(WebCore::FlexLayoutItem::flexBaseMarginBoxSize const):\n(WebCore::FlexLayoutItem::flexedMarginBoxSize const):\n(WebCore::FlexLayoutItem::style const):\n* Source/WebCore/layout/formattingContexts/flex/FlexFormattingContext.h:\n* Source/WebCore/layout/formattingContexts/flex/FlexFormattingUtils.cpp:\n(WebCore::FlexFormattingUtils::flowAwareMarginStartForFlexItem const):\n(WebCore::FlexFormattingUtils::flowAwareMarginEndForFlexItem const):\n(WebCore::FlexFormattingUtils::flowAwareMarginBeforeForFlexItem const):\n(WebCore::FlexFormattingUtils::maxMainSizeLengthForFlexItem const):\n(WebCore::FlexFormattingUtils::minCrossSizeLengthForFlexItem const):\n(WebCore::FlexFormattingUtils::maxCrossSizeLengthForFlexItem const):\n(WebCore::FlexFormattingUtils::preferredAspectRatioForFlexItem const):\n(WebCore::FlexFormattingUtils::flexItemHasComputableAspectRatio const):\n(WebCore::FlexFormattingUtils::needToStretchFlexItemLogicalHeight const):\n(WebCore::FlexFormattingUtils::marginBoxAscentForFlexItem const):\n(WebCore::FlexFormattingUtils::crossAxisMarginExtentForFlexItem const):\n(WebCore::FlexFormattingUtils::preferredMainSizeLengthForFlexItem const):\n(WebCore::FlexFormattingUtils::minMainSizeLengthForFlexItem const):\n(WebCore::FlexFormattingUtils::preferredCrossSizeLengthForFlexItem const):\n(WebCore::FlexFormattingUtils::hasAutoMarginsInCrossAxis const):\n(WebCore::FlexFormattingUtils::useContentBasedMinimumSize const):\n(WebCore::FlexFormattingUtils::innerCrossSizeForFlexItem const):\n(WebCore::FlexFormattingUtils::mainAxisIsFlexItemInlineAxis const):\n(WebCore::FlexFormattingUtils::flexBasisForFlexItem const):\n(WebCore::FlexFormattingUtils::alignmentForFlexItem const):\n(WebCore::FlexFormattingUtils::hasDefiniteCrossSizeForFlexItem const):\n* Source/WebCore/layout/formattingContexts/flex/FlexFormattingUtils.h:\n\nCanonical link: https://commits.webkit.org/317753@main",
      "email": "zalan@apple.com",
      "hash": "9a673f3622a5675f068b3bb54efa3fe058907f3c",
      "subject": "[cleanup] Pass FlexLayoutItem instead of RenderBox to FlexFormattingContext-only flex-item utilities"
    },
    "317754@main": {
      "author": "Ahmad Saleem",
      "avatar": "https://www.gravatar.com/avatar/38445f84fe28aa19bfeb1f59f6559532?d=identicon\u0026s=64",
      "cl": "317754@main",
      "clUrl": "https://commits.webkit.org/317754@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320023\nrdar://182957395\n\nReviewed by Jean-Yves Avenard.\n\nThe video/h264 and video/h265 branches in videoDecodingCapabilitiesOverride()\nset the same fields to the same values, so combine them into a single\ncondition with ||. No behavior change.\n\n* Source/WebCore/platform/mediastream/libwebrtc/LibWebRTCProvider.cpp:\n(WebCore::LibWebRTCProvider::videoDecodingCapabilitiesOverride):\n\nCanonical link: https://commits.webkit.org/317754@main",
      "email": "ahmad.saleem792+github@gmail.com",
      "hash": "263902d17c3842e74e0a6193cb44dc392bdcbec7",
      "subject": "Merge identical h264/h265 branches in LibWebRTCProvider::videoDecodingCapabilitiesOverride"
    },
    "317756@main": {
      "author": "Chris Dumez",
      "avatar": "https://www.gravatar.com/avatar/a9f21fe3a8baf79b45f3c91572187bdc?d=identicon\u0026s=64",
      "cl": "317756@main",
      "clUrl": "https://commits.webkit.org/317756@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319973\n\nReviewed by Per Arne Vollan.\n\n[WKProcessPool _requestWebProcessTermination:] walks the pool's web content\nprocesses looking for the one whose PID matches the argument, but a misplaced\n`return YES;` sat inside the loop and outside the `if` that tests for a match.\nAs a result the method only ever examined the *first* process in the list: it\nterminated that process if its PID matched, did nothing for any other PID, and\nin every case unconditionally returned YES after the first iteration -- which\nalso made the trailing `return NO` (the \"no such process\" path) dead code.\nRequesting termination of any process that was not first in the pool's list\ntherefore silently failed while still reporting success.\n\nThe pool stores its processes in creation order, so any process created after\nthe first can never be terminated through this SPI. This has been broken since\nthe method was introduced in 234716@main.\n\nMove the `return YES;` inside the matching branch so the loop keeps scanning\nuntil it finds the process with the requested PID, terminates it, and returns\nYES, and so the method returns NO when no process matches.\n\nTest: Tools/TestWebKitAPI/Tests/WebKit/WKWebView/WebProcessTerminate.mm\n\n* Source/WebKit/UIProcess/API/Cocoa/WKProcessPool.mm:\n(-[WKProcessPool _requestWebProcessTermination:]):\n* Tools/TestWebKitAPI/Tests/WebKit/WKWebView/WebProcessTerminate.mm:\n(-[WebProcessTerminationSchemeHandler webView:startURLSchemeTask:]):\n(-[WebProcessTerminationSchemeHandler webView:stopURLSchemeTask:]):\n(TEST(WebKit, RequestWebProcessTerminationForNonFirstProcess)):\n\nCanonical link: https://commits.webkit.org/317756@main",
      "email": "cdumez@apple.com",
      "hash": "00bfe4a98d52a1792e3f82e01c079f782a560295",
      "subject": "[WKProcessPool _requestWebProcessTermination:] only terminates the first web process in the pool"
    },
    "317757@main": {
      "author": "Chris Dumez",
      "avatar": "https://www.gravatar.com/avatar/a9f21fe3a8baf79b45f3c91572187bdc?d=identicon\u0026s=64",
      "cl": "317757@main",
      "clUrl": "https://commits.webkit.org/317757@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319976\nrdar://182899181\n\nReviewed by Timothy Hatcher.\n\n* Source/WebKit/UIProcess/API/Cocoa/WKWebExtensionContext.mm:\n(-[WKWebExtensionContext loadBackgroundContentWithCompletionHandler:]):\n\nCanonical link: https://commits.webkit.org/317757@main",
      "email": "cdumez@apple.com",
      "hash": "72c20c2ebdb9e28217f43b46501bc5b6a931bab6",
      "subject": "[WKWebExtensionContext loadBackgroundContentWithCompletionHandler] calls its completion handler twice on error"
    },
    "317758@main": {
      "author": "Rupin Mittal",
      "avatar": "https://www.gravatar.com/avatar/3e3de9845931d2dc844afb00056ec94e?d=identicon\u0026s=64",
      "cl": "317758@main",
      "clUrl": "https://commits.webkit.org/317758@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320013\nrdar://182529810\n\nReviewed by Alex Christensen.\n\nWe crash in WebPageProxy::activityStateDidChange() because WebPageProxy's\nm_pageClient is null and we attempt to access it. This state is possible\nwhen the WebViewImpl is being destroyed (it's the sole owner of PageClient)\nbut the WebPageProxy is still alive because something else refs it. Null\nchecking m_pageClient is common practice in the WebPageProxy code likely\nfor this reason. Since activityStateDidChange() relies on data from the\nPageClient, we can early return if it isn't alive.\n\nThis is a speculative fix.\n\n* Source/WebKit/UIProcess/WebPageProxy.cpp:\n(WebKit::WebPageProxy::activityStateDidChange):\n\nCanonical link: https://commits.webkit.org/317758@main",
      "email": "rupin@apple.com",
      "hash": "38e3c810c7afdf0fe789089fd9d1cbb01d706283",
      "subject": "StabilityTracer: Crash in WebKit::WebPageProxy::activityStateDidChange"
    },
    "317759@main": {
      "author": "Yusuke Suzuki",
      "avatar": "https://www.gravatar.com/avatar/3455d9081295e3e740c1ffa901217d9b?d=identicon\u0026s=64",
      "cl": "317759@main",
      "clUrl": "https://commits.webkit.org/317759@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320046\nrdar://182981673\n\nReviewed by Mark Lam.\n\nWhen tiering up from BBQ to OMG, we would like to deprioritize very small\nfunctions.\n\n1. Very small functions are not having meaningful improvements from the\n   tiering up. BBQ is fast enough and BBQ \u0026 OMG both has prologue and\n   epilogue as they are the functions. If body size is small, then\n   improvement effect is small.\n2. OMG compilation has fix-sized cost offset, so regardless of the size\n   of the function, compile requires some time. For very small functions,\n   compile time is too long compared to the benefit we can get.\n3. Very small functions will be inlined from the callers eventually. And\n   in that case, callers will fully inline it, and remove the use of\n   this very small functions completely. Then the compiled code becomes\n   useless since the caller is covering it via inlining.\n\nThis patch adds a threshold and step function which reduces function\nentry tier up count increment. Right now, focusing on entry increment\nsince we are focusing function invocation count, and loop would have\ndifferent stories. This patch sets 128 as a threshold, which is\nempirically obtained from the measurement.\n\n* Source/JavaScriptCore/runtime/OptionsList.h:\n* Source/JavaScriptCore/wasm/WasmBBQJIT.cpp:\n(JSC::Wasm::BBQJITImpl::BBQJIT::emitEntryTierUpCheck):\n\nCanonical link: https://commits.webkit.org/317759@main",
      "email": "ysuzuki@apple.com",
      "hash": "02d16b1d8e1a8fe076e354412936c1af5a07f675",
      "subject": "[JSC] Skew small function's OMG tierup call counts"
    },
    "317760@main": {
      "author": "Jean-Yves Avenard",
      "avatar": "https://www.gravatar.com/avatar/509313899deeb9262fad8f5e04093f5b?d=identicon\u0026s=64",
      "cl": "317760@main",
      "clUrl": "https://commits.webkit.org/317760@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319967\nrdar://182891717\n\nReviewed by Youenn Fablet.\n\nTest hung when run with --site-isolation waiting for\ninternals.audioSessionCategory() to become \"MediaPlayback\".\n\nUnder Site Isolation, the audio session category is computed by\nRemoteMediaSessionManagerProxy in the UI process instead of by WebContent.\nTwo bugs kept that computation from ever reaching MediaPlayback there:\n\n1. DeprecatedGlobalSettings::shouldManageAudioSessionCategory() is a\nper-process flag that gates the whole computation in\nMediaSessionManagerCocoa::updateSessionState(). WebContent sets it, but it\nwasn't set in the UIProcess\n\n2. Once the gate was fixed, the UI process still computed against stale\nsession data: RemoteMediaSessionProxy's cached isAudible/isPlaying state\nwhich was only refreshed by four specific messages (AddMediaSession,\nRemoveMediaSession, SetCurrentMediaSession, MediaSessionStateChanged), but\nthe message that actually triggers recomputation, UpdateMediaSessionState,\ncarried no session data and fires from other call sites that don't push\nfresh state first.\n\nSend the flag and a snapshot of every current session on\nUpdateMediaSessionState, and have the UI process refresh its cached\nsession proxies from that snapshot before recomputing category. This\nkeeps recomputation correct regardless of which code path triggered it,\ninstead of patching each call site individually.\n\n* Source/WebKit/UIProcess/Media/RemoteMediaSessionManagerProxy.messages.in:\n* Source/WebKit/UIProcess/Media/RemoteMediaSessionManagerProxy.h:\n* Source/WebKit/UIProcess/Media/RemoteMediaSessionManagerProxy.cpp:\n(WebKit::RemoteMediaSessionManagerProxy::refreshSessionStates):\n(WebKit::RemoteMediaSessionManagerProxy::updateMediaSessionState):\n* Source/WebKit/WebProcess/Media/RemoteMediaSessionManager.cpp:\n(WebKit::RemoteMediaSessionManager::updateSessionState):\n\nCanonical link: https://commits.webkit.org/317760@main",
      "email": "jya@apple.com",
      "hash": "18c0dd0e5965d986cb727b6b6f269280eef34767",
      "subject": "[site-isolation] platform/mac/media/media-source/media-source-change-source.html is a permanent timeout"
    },
    "317761@main": {
      "author": "Richard Robinson",
      "avatar": "https://www.gravatar.com/avatar/a0d2f862985ed0fd47887be66f5a3e4f?d=identicon\u0026s=64",
      "cl": "317761@main",
      "clUrl": "https://commits.webkit.org/317761@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320043\nrdar://181051283\n\nReviewed by Abrar Rahman Protyasha.\n\nImplement a mechanism to derive the proper acceleration multiplier factor for consecutive\nscrolls within WKAppKitGestureController. This is done by introducing a new `WKFastScrollTracker`\ntype which is used to encapsulate all the necessary scrolling state and is updated by\n`WKAppKitGestureController`.\n\nThe result is then passed down to MomentumEventDispatcher to be applied to the acceleration value.\n\nTest: Tools/TestWebKitAPI/Tests/WebKit/WebPage/AppKit Gesture Tests/BasicAppKitGesturesTests.swift\n\n* Source/WebKit/Modules/Internal/module.modulemap:\n* Source/WebKit/Shared/WebEvent.serialization.in:\n* Source/WebKit/Shared/WebWheelEvent.cpp:\n(WebKit::WebWheelEvent::WebWheelEvent):\n* Source/WebKit/Shared/WebWheelEvent.h:\n(WebKit::WebWheelEvent::momentumFastScrollMultiplier const):\n(WebKit::WebWheelEvent::setMomentumFastScrollMultiplier):\n\nAdd a new field `momentumFastScrollMultiplier` to be propagated from the gesture source\n(WKAppKitGestureController) down to where the momentum even calculations reside in\n(MomentumEventDispatcher).\n\n* Source/WebKit/UIProcess/mac/WKAppKitGestureController.mm:\n(-[WKAppKitGestureController initWithPage:viewImpl:]):\n(-[WKAppKitGestureController panGestureRecognized:]):\n(-[WKAppKitGestureController startMomentumIfNeededForGesture:]):\n(-[WKAppKitGestureController interruptMomentumIfNeeded]):\n(-[WKAppKitGestureController reset]):\n\nCompute the multiplier in `startMomentumIfNeededForGesture` and pass it in to the created event.\n\n* Source/WebKit/UIProcess/mac/WKFastScrollTracker.h: Added.\n* Source/WebKit/UIProcess/mac/WKFastScrollTracker.swift: Added.\n(WKFastScrollTracker.multiplier):\n(WKFastScrollTracker.endTime):\n(WKFastScrollTracker.lastHorizontalDirection):\n(WKFastScrollTracker.lastVerticalDirection):\n(WKFastScrollTracker.update(withLocation:velocity:time:)):\n(WKFastScrollTracker.didCatchMomentum):\n(WKFastScrollTracker.didStartGesture(atLocation:)):\n(WKFastScrollTracker.reset):\n\nEncapsulate the scrolling state calculations.\n\n* Source/WebKit/WebKit.xcodeproj/project.pbxproj:\n\n* Source/WebKit/WebProcess/WebPage/MomentumEventDispatcher.cpp:\n(WebKit::MomentumEventDispatcher::didStartMomentumPhase):\n\nUse the computed value as a scale factor for the acceleration value.\n\n* Tools/TestWebKitAPI/Tests/WebKit/WebPage/AppKit Gesture Tests/BasicAppKitGesturesTests.swift:\n\nCanonical link: https://commits.webkit.org/317761@main",
      "email": "richard_robinson2@apple.com",
      "hash": "ccb01872b9ecb56308c90983dede7fd44c7c5162",
      "subject": "[AppKit Gestures] Scrolling should accelerate on multiple quick swipes in the same direction"
    },
    "317762@main": {
      "author": "Ruthvik Konda",
      "avatar": "https://www.gravatar.com/avatar/bca33cefcce93017251a8fbc1204cdc4?d=identicon\u0026s=64",
      "cl": "317762@main",
      "clUrl": "https://commits.webkit.org/317762@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319909\nrdar://182830727\n\nReviewed by Dan Glastonbury.\n\nWebXRSession.cpp includes WebXRView.h but never references the WebXRView class. No change in behavior.\n\n* Source/WebCore/Modules/webxr/WebXRSession.cpp:\n\nCanonical link: https://commits.webkit.org/317762@main",
      "email": "rkonda2@apple.com",
      "hash": "debabc3badb332629333a0141896ee1a27a6b1b2",
      "subject": "[WebXR] Remove unused WebXRView.h include in WebXRSession"
    },
    "317763@main": {
      "author": "Chris Dumez",
      "avatar": "https://www.gravatar.com/avatar/a9f21fe3a8baf79b45f3c91572187bdc?d=identicon\u0026s=64",
      "cl": "317763@main",
      "clUrl": "https://commits.webkit.org/317763@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319977\n\nReviewed by BJ Burg.\n\n* Source/WebKit/UIProcess/Automation/mac/WebAutomationSessionMac.mm:\n(WebKit::WebAutomationSession::platformSimulateMouseInteraction):\n\nCanonical link: https://commits.webkit.org/317763@main",
      "email": "cdumez@apple.com",
      "hash": "984b100467ac0574225f0587efcd7c7b34f5992a",
      "subject": "WebAutomationSession::platformSimulateMouseInteraction: Single clicks sends two mousedown events, no mouse up event"
    },
    "317764@main": {
      "author": "Andy Estes",
      "avatar": "https://www.gravatar.com/avatar/643f10f01b26fd94d03482a2013b2ea0?d=identicon\u0026s=64",
      "cl": "317764@main",
      "clUrl": "https://commits.webkit.org/317764@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320027\nrdar://182961557\n\nReviewed by Jer Noble.\n\nTwo bugs could result in media incorrectly playing locally if a MediaDeviceRoute activates prior to\nplayback starting:\n1. Due to a bug in AVAudioSession, the AVOutputContext representing the current routing context may\n   claim to be the built-in speaker if queried prior to audio session activation. When this happens,\n   MediaSessionHelper::activeRoutesDidChange returns early before propagating the wireless route to\n   the WebContent process.\n2. If a MediaDeviceRoute activates prior to MediaSessionHelper gaining a client, the route will not\n   be propagated to the WebContent process.\n\nIn both cases, since the route is not propagated to the WebContent process, the media element does\nnot know to reconfigure its media engine for wireless playback.\n\nResolved (1) by removing the code that interrogates AVOutputContext, since we can now rely on not\nbeing delivered AVSystemRoutes that do not support URL-based playback. Resolved (2) by ensuring\nthat a RemoteMediaSessionHelperProxy is created and registered as a MediaSessionHelper client\nwhenever a MediaElementSession is constructed.\n\nNo new tests since this bug was only observable on an iOS device. On iOS Simulator we do not access\nAVOutputContexts, and MediaSessionHelper activates mock MediaDeviceRoutes directly in the\nWebContent process.\n\n* Source/WTF/wtf/PlatformHave.h:\n* Source/WebCore/html/MediaElementSession.cpp:\n(WebCore::MediaElementSession::MediaElementSession):\n* Source/WebCore/platform/audio/MediaSessionManagerInterface.h:\n* Source/WebCore/platform/audio/ios/MediaSessionHelperIOS.h:\n* Source/WebCore/platform/audio/ios/MediaSessionHelperIOS.mm:\n(MediaSessionHelper::addClient):\n(MediaSessionHelper::activeRoutesDidChange):\n* Source/WebCore/platform/audio/ios/MediaSessionManagerIOS.h:\n* Source/WebCore/platform/audio/ios/MediaSessionManagerIOS.mm:\n(WebCore::MediaSessionManageriOS::configureWirelessTargetMonitoring):\n(WebCore::MediaSessionManageriOS::ensureMediaDeviceRouteControllerMonitoring):\n* Source/WebCore/platform/graphics/avfoundation/MediaPlaybackTargetCocoa.h:\n* Source/WebCore/platform/graphics/avfoundation/MediaPlaybackTargetCocoa.mm:\n(WebCore::MediaPlaybackTargetCocoa::supportsCustomProtocolVideoPlayback const): Deleted.\n* Source/WebKit/WebProcess/GPU/media/ios/RemoteMediaSessionHelper.cpp:\n(WebKit::RemoteMediaSessionHelper::ensureMediaDeviceRouteControllerMonitoring):\n* Source/WebKit/WebProcess/GPU/media/ios/RemoteMediaSessionHelper.h:\n\nCanonical link: https://commits.webkit.org/317764@main",
      "email": "aestes@apple.com",
      "hash": "585df57b0a3e93036e3e3202c9296f4c9949a41f",
      "subject": "[iOS] Media sometimes plays locally if a MediaDeviceRoute activates prior to playback starting"
    },
    "317766@main": {
      "author": "Philippe Normand",
      "avatar": "https://www.gravatar.com/avatar/eef27203750af3510263cc29af21a16e?d=identicon\u0026s=64",
      "cl": "317766@main",
      "clUrl": "https://commits.webkit.org/317766@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319380\n\nReviewed by Xabier Rodriguez-Calvar.\n\nSetting the pipeline state of non-MSE players to NULL when its corresponding media element has moved\nout of the viewport helps keeping the amount of alive video decoders at bay. This is specially\nuseful when browsing some Reddit, Snapchat and similar pages containing lots of auto-playing muted\nvideos.\n\nUsing this approach for MSE players could be useful as well but would likely be more complex to\nimplement due to implications at the SourceBuffer level.\n\n* Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:\n(WebCore::MediaPlayerPrivateGStreamer::updateStates):\n(WebCore::MediaPlayerPrivateGStreamer::managePlayerSuspend):\n(WebCore::MediaPlayerPrivateGStreamer::suspendTargetState):\n* Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.h:\n\nCanonical link: https://commits.webkit.org/317766@main",
      "email": "philn@igalia.com",
      "hash": "f2797a15c336841f348b94902c3dd556a0cd5540",
      "subject": "[GStreamer] Teardown media players corresponding to media elements moving outside of viewport"
    },
    "317767@main": {
      "author": "Philippe Normand",
      "avatar": "https://www.gravatar.com/avatar/eef27203750af3510263cc29af21a16e?d=identicon\u0026s=64",
      "cl": "317767@main",
      "clUrl": "https://commits.webkit.org/317767@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319100\n\nReviewed by Xabier Rodriguez-Calvar.\n\nWhen both WebRTC and MediaStream are enabled in CMake, then LibWebRTC is enabled as well. The GstWebRTC\nbackend is going to be removed later on.\n\n* LayoutTests/platform/glib/TestExpectations:\n* LayoutTests/platform/glib/fast/mediastream/RTCPeerConnection-have-local-offer-expected.txt: Removed.\n* LayoutTests/platform/glib/fast/mediastream/RTCPeerConnection-inspect-answer-expected.txt: Removed.\n* LayoutTests/platform/glib/fast/mediastream/RTCPeerConnection-inspect-offer-expected.txt: Removed.\n* LayoutTests/platform/glib/fast/mediastream/RTCPeerConnection-localDescription-expected.txt: Removed.\n* LayoutTests/platform/glib/fast/mediastream/RTCPeerConnection-media-setup-single-dialog-expected.txt: Removed.\n* LayoutTests/platform/glib/fast/mediastream/RTCPeerConnection-remoteDescription-expected.txt: Removed.\n* LayoutTests/platform/glib/fast/mediastream/RTCPeerConnection-remotely-assigned-transceiver-mid-expected.txt: Removed.\n* LayoutTests/platform/glib/fast/mediastream/RTCPeerConnection-setRemoteDescription-offer-expected.txt: Removed.\n* LayoutTests/platform/glib/fast/mediastream/RTCPeerConnection-stable-expected.txt: Removed.\n* LayoutTests/platform/glib/imported/w3c/web-platform-tests/media-capabilities/decodingInfo.webrtc-expected.txt:\n* LayoutTests/platform/glib/imported/w3c/web-platform-tests/media-capabilities/encodingInfo.webrtc-expected.txt:\n* LayoutTests/platform/glib/imported/w3c/web-platform-tests/webrtc-extensions/RTCRtpSynchronizationSource-senderCaptureTimeOffset-expected.txt: Removed.\n* LayoutTests/platform/glib/imported/w3c/web-platform-tests/webrtc-stats/outbound-rtp.https-expected.txt: Removed.\n* LayoutTests/platform/glib/imported/w3c/web-platform-tests/webrtc/RTCPeerConnection-addTcpIceCandidate-expected.txt: Added.\n* LayoutTests/platform/glib/imported/w3c/web-platform-tests/webrtc/RTCPeerConnection-addTransceiver.https-expected.txt: Removed.\n* LayoutTests/platform/glib/imported/w3c/web-platform-tests/webrtc/RTCPeerConnection-restartIce.https-expected.txt: Removed.\n* LayoutTests/platform/glib/imported/w3c/web-platform-tests/webrtc/RTCPeerConnection-setLocalDescription-answer-expected.txt: Removed.\n* LayoutTests/platform/glib/imported/w3c/web-platform-tests/webrtc/RTCPeerConnection-setRemoteDescription-expected.txt: Removed.\n* LayoutTests/platform/glib/imported/w3c/web-platform-tests/webrtc/RTCPeerConnection-setRemoteDescription-simulcast.https-expected.txt: Removed.\n* LayoutTests/platform/glib/imported/w3c/web-platform-tests/webrtc/RTCRtpSender-setParameters-keyFrame-expected.txt: Added.\n* LayoutTests/platform/glib/imported/w3c/web-platform-tests/webrtc/legacy/RTCRtpTransceiver-with-OfferToReceive-options.optional.https-expected.txt: Added.\n* LayoutTests/platform/glib/imported/w3c/web-platform-tests/webrtc/protocol/direction-expected.txt: Removed.\n* LayoutTests/platform/gtk/TestExpectations:\n* LayoutTests/platform/wpe/TestExpectations:\n* Source/cmake/GStreamerDefinitions.cmake:\n* Source/cmake/OptionsGTK.cmake:\n* Tools/Scripts/webkitpy/port/glib.py:\n(GLibPort.setup_environ_for_server):\n* Tools/TestWebKitAPI/Tests/WebKit/WKPage/glib/TestWebKitSettings.cpp:\n(testWebKitSettings):\n(testWebKitSettingsApplyFromConfigFile):\n\nCanonical link: https://commits.webkit.org/317767@main",
      "email": "philn@igalia.com",
      "hash": "7fdd66f7d24d0abde35dce0fd849ac726430947a",
      "subject": "[WPE][GTK] Enable libwebrtc"
    },
    "317768@main": {
      "author": "Youenn Fablet",
      "avatar": "https://www.gravatar.com/avatar/0a9886e582a7aee1eb908eb59af36da4?d=identicon\u0026s=64",
      "cl": "317768@main",
      "clUrl": "https://commits.webkit.org/317768@main",
      "description": "rdar://182802330\nhttps://bugs.webkit.org/show_bug.cgi?id=319891\n\nReviewed by Alex Christensen.\n\nWe introduce FetchRequest.duplex and FetchRequestInit.duplex to allow feature detection of fetch stream uploads.\nAs per spec, we only allow stream with the duplex property.\n\nCovered by updated and rebased tests.\n\n* LayoutTests/http/wpt/fetch/fetch-request-with-stream-body.html:\n* LayoutTests/http/wpt/fetch/request-clone-resizable.html:\n* LayoutTests/http/wpt/fetch/request-clone.html:\n* LayoutTests/http/wpt/fetch/request-stream-empty.html:\n* LayoutTests/http/wpt/fetch/request-stream-error.html:\n* LayoutTests/imported/w3c/web-platform-tests/fetch/api/idlharness.https.any-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/fetch/api/idlharness.https.any.serviceworker-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/fetch/api/idlharness.https.any.sharedworker-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/fetch/api/idlharness.https.any.worker-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/fetch/api/request/request-init-stream.any-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/fetch/api/request/request-init-stream.any.serviceworker-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/fetch/api/request/request-init-stream.any.sharedworker-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/fetch/api/request/request-init-stream.any.worker-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/fetch/api/request/request-structure.any-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/fetch/api/request/request-structure.any.serviceworker-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/fetch/api/request/request-structure.any.sharedworker-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/fetch/api/request/request-structure.any.worker-expected.txt:\n* Source/WebCore/CMakeLists.txt:\n* Source/WebCore/DerivedSources-input.xcfilelist:\n* Source/WebCore/DerivedSources-output.xcfilelist:\n* Source/WebCore/DerivedSources.make:\n* Source/WebCore/Modules/fetch/FetchRequest.cpp:\n(WebCore::buildOptions):\n(WebCore::FetchRequest::initializeOptions):\n(WebCore::FetchRequest::initializeWith):\n(WebCore::shouldCheckDuplex):\n(WebCore::FetchRequest::setBody):\n(WebCore::FetchRequest::clone):\n* Source/WebCore/Modules/fetch/FetchRequest.h:\n* Source/WebCore/Modules/fetch/FetchRequest.idl:\n* Source/WebCore/Modules/fetch/FetchRequestDuplex.h: Added..\n* Source/WebCore/Modules/fetch/FetchRequestDuplex.idl: Copied from Source/WebCore/Modules/fetch/FetchRequestInit.idl.\n* Source/WebCore/Modules/fetch/FetchRequestInit.h:\n(WebCore::FetchRequestInit::hasMembers const):\n* Source/WebCore/Modules/fetch/FetchRequestInit.idl:\n* Source/WebCore/Sources.txt:\n* Source/WebCore/WebCore.xcodeproj/project.pbxproj:\n\nCanonical link: https://commits.webkit.org/317768@main",
      "email": "youenn@apple.com",
      "hash": "df40d92d0fcd348b3fb39bb138e6c5565f6c3d3e",
      "subject": "Implement FetchRequest duplex property"
    },
    "317769@main": {
      "author": "Carlos Alberto Lopez Perez",
      "avatar": "https://www.gravatar.com/avatar/05326c1dbe06f486e884975e73f25179?d=identicon\u0026s=64",
      "cl": "317769@main",
      "clUrl": "https://commits.webkit.org/317769@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319949\n\nReviewed by Charlie Wolfe.\n\nA wheel event is usually handled across several threads: a background thread\nreceives it, a scrolling thread can do the scroll on its own to keep scrolling\nsmooth, and the main thread runs the page JavaScript wheel listeners.\n\nSince 317427@main the \"was the event handled\" answer is returned as an async\nreply to the WheelEvent message via a CompletionHandler instead of as a\nseparate DidReceiveEventIPC message.\n\nAnd every CompletionHandler asserts that it is executed on the thread where\nit was created (unless specified otherwise via the AnyThread parameter).\n\nThe main reply handler (the one carrying the answer back to the UIProcess)\nis already correctly created as AnyThread, because depending on the path\nit gets called either from the scrolling thread or from the main thread.\n\nThe problem is in the passive scrolling path, there the reply is sent from\nthe scrolling thread as soon as the scrolling is done without waiting for\nthe main thread ACK, but the event still has to be forwarded to the main\nthread after completed so the passive DOM listeners run.\nThe result of forwarding this to the main thread is not used because the\nmain reply handler already finished, so a no-op CompletionHandler is passed,\nwhich is created on the scrolling thread but executed on the main thread,\ntherefore the assertion hits.\nThe fix is to simply mark this no-op CompletionHandler as AnyThread.\n\nThis is not a problem on the Mac port because it runs the scrolling thread\nin the UIProcess and doesn't exercise this codepath, however in the GTK\nand WPE case the scrolling thread runs in the WebProcess and wheel events\nare routed through this EventDispatcher.\n\n* LayoutTests/platform/glib/TestExpectations:\n* LayoutTests/platform/gtk/TestExpectations:\n* LayoutTests/platform/wpe/TestExpectations:\n* Source/WebKit/WebProcess/WebPage/EventDispatcher.cpp:\n  (WebKit::EventDispatcher::internalWheelEvent):\n\nCanonical link: https://commits.webkit.org/317769@main",
      "email": "clopez@igalia.com",
      "hash": "cfde6a8041f4af9029634f874e9c3816954b8054",
      "subject": "REGRESSION(317427@main): [GLIB] Wheel events crash with an assertion in EventDispatcher::dispatchWheelEvent"
    },
    "317770@main": {
      "author": "Chris Dumez",
      "avatar": "https://www.gravatar.com/avatar/a9f21fe3a8baf79b45f3c91572187bdc?d=identicon\u0026s=64",
      "cl": "317770@main",
      "clUrl": "https://commits.webkit.org/317770@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320051\n\nReviewed by BJ Burg.\n\nWebAutomationSession::willShowJavaScriptDialog() wheel-flush block is\noutside the async dispatch lambda and thus runs synchronously,\nunexpectedly.\n\n* Source/WebKit/UIProcess/Automation/WebAutomationSession.cpp:\n(WebKit::WebAutomationSession::willShowJavaScriptDialog):\n\nCanonical link: https://commits.webkit.org/317770@main",
      "email": "cdumez@apple.com",
      "hash": "acc0f3af0e934254d51a7a4257da119073a83e28",
      "subject": "WebAutomationSession::willShowJavaScriptDialog() wheel-flush block is outside the async dispatch lambda"
    },
    "317772@main": {
      "author": "Carlos Alberto Lopez Perez",
      "avatar": "https://www.gravatar.com/avatar/05326c1dbe06f486e884975e73f25179?d=identicon\u0026s=64",
      "cl": "317772@main",
      "clUrl": "https://commits.webkit.org/317772@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319975\n\nReviewed by Nikolas Zimmermann.\n\nThis bot reorganization is part of an effort to improve quality on the stable branches,\nwith a focus on ARM64: we are now going to start doing perf testing of those branches\n(on top of the other test suites regression testing).\n\nThis patch adds a perf test bot builder and tester (running on RPi4 board) for the\n2.52 stable branch, and it also adds another one for the next 2.54 stable branch.\nOn the 2.54 branch it also adds a new ARM64 BuildAndTest bot to run all the test\nsuites like we have for the 2.52 branch\n\nThe idea is to keep testing the current stable and the next one, so when 2.56 is\nbranched then we will move the 2.52 bots to that branch. So there will be always\ntwo stable branches tested.\n\nThe patch removes the WPE ARM32 perf testers and assigns more workers to the ARM64\nperf testing on main.\nAnd it also removes the Linux JSCOnly testers because we already have enough test\ncoverage of JSC via the WPE.*JS-Tests bots.\n\nOn top of that it fixes the bot info for Linux bots at build.webkit.org/dashboard\nby updating the info to reflect the new status.\n\n* Tools/CISupport/build-webkit-org/config.json:\n* Tools/CISupport/build-webkit-org/factories_unittest.py:\n(TestExpectedBuildSteps):\n* Tools/CISupport/build-webkit-org/loadConfig.py:\n* Tools/CISupport/build-webkit-org/public_html/dashboard/Images/SquirrelFish.png: Removed.\n* Tools/CISupport/build-webkit-org/public_html/dashboard/Images/WPE.png:\n* Tools/CISupport/build-webkit-org/public_html/dashboard/Scripts/Dashboard.js:\n* Tools/CISupport/build-webkit-org/public_html/dashboard/Scripts/WebKitBuildbot.js:\n(WebKitBuildbot):\n* Tools/CISupport/build-webkit-org/public_html/dashboard/Styles/Main.css:\n(table.queue-grid tr.platform.linux-jsconly img.logo): Deleted.\n\nCanonical link: https://commits.webkit.org/317772@main",
      "email": "clopez@igalia.com",
      "hash": "24c6342c8186fdbf47f2932b20a12a9c1959255e",
      "subject": "[WKCI][build.webkit.org][WPE] Remove bots for Linux JSCOnly and WPE ARM32 Perf testing and add more WPE ARM64 testing for stable branches."
    },
    "317773@main": {
      "author": "Carlos Alberto Lopez Perez",
      "avatar": "https://www.gravatar.com/avatar/05326c1dbe06f486e884975e73f25179?d=identicon\u0026s=64",
      "cl": "317773@main",
      "clUrl": "https://commits.webkit.org/317773@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319978\n\nReviewed by Nikolas Zimmermann.\n\nThis removes the Linux JSCOnly bots and instead adds coverage of\nJSC tests with a WPE JSC test (64-bits) build queue that uses\nthe built product from the main WPE build queue.\n\n* Tools/CISupport/ews-app/ews/common/github.py:\n(GitHubEWS):\n* Tools/CISupport/ews-app/ews/views/statusbubble.py:\n(StatusBubble):\n* Tools/CISupport/ews-build/config.json:\n* Tools/CISupport/ews-build/email_unittest.py:\n(EmailsDotJSONTest.test_emails_json_required_categories_present):\n* Tools/CISupport/ews-build/emails.json:\n* Tools/CISupport/ews-build/factories_unittest.py:\n(TestExpectedBuildSteps):\n* Tools/CISupport/ews-build/send_email.py:\n(send_email_to_bot_watchers):\n* Tools/CISupport/ews-build/steps.py:\n(CheckStatusOfPR):\n(CheckStatusOfPR.getQueueStatusFromList):\n(RunJavaScriptCoreTests.run):\n* Tools/CISupport/ews-build/steps_unittest.py:\n\nCanonical link: https://commits.webkit.org/317773@main",
      "email": "clopez@igalia.com",
      "hash": "5f7e8646139de483a049040a0d15bf471ba2b0af",
      "subject": "[WKCI][ews-build.webkit.org][WPE] Replace Linux JSCOnly bots with a WPE JSC tester"
    },
    "317774@main": {
      "author": "Taher Ali",
      "avatar": "https://www.gravatar.com/avatar/e104800647d8c98b8c9dbe736b5e1751?d=identicon\u0026s=64",
      "cl": "317774@main",
      "clUrl": "https://commits.webkit.org/317774@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319927\nrdar://182853131\n\nReviewed by Simon Fraser.\n\nclip-path now resolves a \u003cclipPath\u003e referenced by an external file or a\ndata: URL, on HTML elements.\n\nAlso adds a tentative CSP test: an external clip-path resource is fetched\nas an image, so it is subject to img-src. This is the first external\nSVG-resource reference loaded from an HTML element, so it is the first to\nexercise that shared loader behavior under CSP.\n\n* LayoutTests/TestExpectations:\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/img-src/css-clip-path-blocked.tentative-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/img-src/css-clip-path-blocked.tentative.html: Added.\n* Source/WebCore/rendering/ReferencedSVGResources.cpp:\n(WebCore::ReferencedSVGResources::referencedClipperRenderer):\n* Source/WebCore/rendering/svg/legacy/SVGResources.cpp:\n(WebCore::paintingResourceFromSVGPaint):\n(WebCore::SVGResources::buildCachedResources):\n(WebCore::externalSVGResourceDocument): Deleted.\n* Source/WebCore/style/StylePendingResources.cpp:\n(WebCore::Style::loadPendingResources):\n* Source/WebCore/style/values/shapes/StylePathOperationWrappers.cpp:\n(WebCore::Style::CSSValueConversion\u003cRefPtr\u003cPathOperation\u003e\u003e::operator):\n* Source/WebCore/svg/SVGDocumentExtensions.cpp:\n(WebCore::SVGDocumentExtensions::externalResourceDocument const):\n* Source/WebCore/svg/SVGDocumentExtensions.h:\n\nCanonical link: https://commits.webkit.org/317774@main",
      "email": "taher_ali@apple.com",
      "hash": "bf937fc6f209b17f453d09a2ca0949af5f7b3f4b",
      "subject": "Support external and data: URL clip-path references on HTML elements"
    },
    "317775@main": {
      "author": "Jean Haberer",
      "avatar": "https://www.gravatar.com/avatar/8ac33d529228e323edb2a2df3a3bac2f?d=identicon\u0026s=64",
      "cl": "317775@main",
      "clUrl": "https://commits.webkit.org/317775@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319989\nrdar://177935542\n\nReviewed by Etienne Segonzac.\n\nFire concurrent requestImmersive() calls synchronously via\ninternals.withUserGesture instead of test_driver.bless, so that races are\ndeterministic. Await document.exitImmersive() at the end of each test that entered immersive mode,\nso cleanup doesn't tear down an active immersive element asynchronously and race the next test.\nAttach promise_rejects_dom's rejection handler synchronously right after\nremoving the element, instead of after an intervening await, to avoid an\nunhandled promise rejection.\n\n* LayoutTests/model-element/immersive/model-element-immersive-state-consistency.html:\n* LayoutTests/model-element/immersive/model-element-immersive-basic.html:\n* LayoutTests/model-element/immersive/model-element-immersive-bfcache.html:\n\nCanonical link: https://commits.webkit.org/317775@main",
      "email": "jean.haberer@apple.com",
      "hash": "9fe6e62598e4062f19e4e6db6f7907a4c9a7fba8",
      "subject": "model-element-immersive-state-consistency.html test is flaky"
    },
    "317776@main": {
      "author": "Alan Baradlay",
      "avatar": "https://www.gravatar.com/avatar/788d66417db806c567552cfa1ae89f77?d=identicon\u0026s=64",
      "cl": "317776@main",
      "clUrl": "https://commits.webkit.org/317776@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320019\n\nReviewed by Antti Koivisto.\n\nThe per-item static helpers in FlexFormattingUtils took the flex container as an\nexplicit (const RenderFlexibleBox\u0026, const RenderBox\u0026 flexItem) pair, even though a\nflex item's parent is always the flex container. Drop the container argument from\nthese twelve statics and derive it internally from the item's parent, mirroring\nwhat ScopedCrossAxisOverrideForFlexItem already does:\n\n    auto\u0026 flexBox = downcast\u003cRenderFlexibleBox\u003e(*flexItem.parent());\n\nThe two that only forwarded the container to other statics (useContentBasedMinimumSize,\nflexBasisForFlexItem) no longer need it at all. All callers drop the container argument:\nthe utils' own static-to-static calls and instance forwarders, RenderFlexibleBox's proxies\nand ScopedCrossAxisOverrideForFlexItem, and LayoutIntegration::FlexLayout (its positioned\nflex items are direct out-of-flow children, so their parent is the container too). The\ncontainer-only statics (isColumnFlow, isHorizontalFlow, computeGap, ...) still take it.\n\nAlso correct the cross-axis step comments in FlexFormattingContext::layout(): they\nlabelled a section \"9.6 (#13 - #16)\" although the block also runs the §9.4 steps (#9,\ndependency around the container's used-cross-size finalization (#15), not by spec number,\nso the comment now says so.\n\nNo change in behavior.\n\n* Source/WebCore/layout/formattingContexts/flex/FlexFormattingContext.cpp:\n(WebCore::FlexFormattingContext::layout):\n* Source/WebCore/layout/formattingContexts/flex/FlexFormattingUtils.cpp:\n(WebCore::FlexFormattingUtils::crossAxisMarginExtentForFlexItem):\n(WebCore::FlexFormattingUtils::preferredMainSizeLengthForFlexItem):\n(WebCore::FlexFormattingUtils::minMainSizeLengthForFlexItem):\n(WebCore::FlexFormattingUtils::preferredCrossSizeLengthForFlexItem):\n(WebCore::FlexFormattingUtils::mainAxisOverflowForFlexItem):\n(WebCore::FlexFormattingUtils::hasAutoMarginsInCrossAxis):\n(WebCore::FlexFormattingUtils::useContentBasedMinimumSize):\n(WebCore::FlexFormattingUtils::preferredAspectRatioForFlexItem const):\n(WebCore::FlexFormattingUtils::needToStretchFlexItemLogicalHeight const):\n(WebCore::FlexFormattingUtils::innerCrossSizeForFlexItem):\n(WebCore::FlexFormattingUtils::availableAlignmentSpaceForFlexItem const):\n(WebCore::FlexFormattingUtils::marginBoxAscentForFlexItem const):\n(WebCore::FlexFormattingUtils::mainAxisIsFlexItemInlineAxis):\n(WebCore::FlexFormattingUtils::flexBasisForFlexItem):\n(WebCore::FlexFormattingUtils::alignmentForFlexItem):\n(WebCore::FlexFormattingUtils::hasDefiniteCrossSizeForFlexItem):\n(WebCore::FlexFormattingUtils::crossAxisMarginExtentForFlexItem const):\n(WebCore::FlexFormattingUtils::preferredMainSizeLengthForFlexItem const):\n(WebCore::FlexFormattingUtils::minMainSizeLengthForFlexItem const):\n(WebCore::FlexFormattingUtils::preferredCrossSizeLengthForFlexItem const):\n(WebCore::FlexFormattingUtils::hasAutoMarginsInCrossAxis const):\n(WebCore::FlexFormattingUtils::useContentBasedMinimumSize const):\n(WebCore::FlexFormattingUtils::innerCrossSizeForFlexItem const):\n(WebCore::FlexFormattingUtils::mainAxisIsFlexItemInlineAxis const):\n(WebCore::FlexFormattingUtils::flexBasisForFlexItem const):\n(WebCore::FlexFormattingUtils::alignmentForFlexItem const):\n(WebCore::FlexFormattingUtils::hasDefiniteCrossSizeForFlexItem const):\n* Source/WebCore/layout/formattingContexts/flex/FlexFormattingUtils.h:\n* Source/WebCore/layout/integration/flex/LayoutIntegrationFlexLayout.cpp:\n(WebCore::LayoutIntegration::FlexLayout::firstLineBaseline const):\n(WebCore::LayoutIntegration::FlexLayout::lastLineBaseline const):\n(WebCore::LayoutIntegration::FlexLayout::baselineFlexItemInLine const):\n(WebCore::LayoutIntegration::FlexLayout::staticCrossAxisPositionForPositionedFlexItem):\n* Source/WebCore/rendering/RenderFlexibleBox.cpp:\n(WebCore::RenderFlexibleBox::ScopedCrossAxisOverrideForFlexItem::ScopedCrossAxisOverrideForFlexItem):\n(WebCore::RenderFlexibleBox::canUseFlexItemForPercentageResolution):\n(WebCore::RenderFlexibleBox::computeBlockAxisContentSizeForFlexItem):\n(WebCore::RenderFlexibleBox::setOverridingMainSizeForFlexItem):\n(WebCore::RenderFlexibleBox::resetAutoMarginsAndLogicalTopInCrossAxis):\n(WebCore::RenderFlexibleBox::useContentBasedMinimumBlockSize const):\n(WebCore::RenderFlexibleBox::hasStretchedFlexItemWithAspectRatio const):\n(WebCore::RenderFlexibleBox::mainAxisIsFlexItemInlineAxis const):\n(WebCore::RenderFlexibleBox::flexBasisForFlexItem const):\n(WebCore::RenderFlexibleBox::alignmentForFlexItem const):\n(WebCore::RenderFlexibleBox::hasDefiniteCrossSizeForFlexItem const):\n(WebCore::RenderFlexibleBox::flexItemMainSizeIsDefinite):\n\nCanonical link: https://commits.webkit.org/317776@main",
      "email": "zalan@apple.com",
      "hash": "cbc530fb5b92f40d0eda2a7e029a31494b912ca4",
      "subject": "[cleanup] Drop the RenderFlexibleBox argument from FlexFormattingUtils' per-flex-item static helpers"
    },
    "317777@main": {
      "author": "Kate Lee",
      "avatar": "https://www.gravatar.com/avatar/35a2c13193d9f38e92785754264aa7da?d=identicon\u0026s=64",
      "cl": "317777@main",
      "clUrl": "https://commits.webkit.org/317777@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320068\n\nUnreviewed gardening.\n\n* LayoutTests/platform/glib/TestExpectations:\n* LayoutTests/platform/gtk/TestExpectations:\n* LayoutTests/platform/wpe/TestExpectations:\n\nCanonical link: https://commits.webkit.org/317777@main",
      "email": "klee@igalia.com",
      "hash": "d3ee002cf36dc2ee020baa0bef5d4d4af3501363",
      "subject": "[GTK][WPE] Gardening of tests - 2026-07-23"
    },
    "317778@main": {
      "author": "Vitaly Dyachkov",
      "avatar": "https://www.gravatar.com/avatar/ab950c52088e289585a5a01580ec66a4?d=identicon\u0026s=64",
      "cl": "317778@main",
      "clUrl": "https://commits.webkit.org/317778@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320090\n\nReviewed by Fujii Hironori.\n\nIn 317400@main `TextureMapperLayer::setShowDebugBorder()` and some other\nmethods were made out-of-line, but not marked as exported, which caused\nlinking errors in `WCScene`.\n\n* Source/WebCore/platform/graphics/texmap/TextureMapperLayer.h:\n\nCanonical link: https://commits.webkit.org/317778@main",
      "email": "vitaly@igalia.com",
      "hash": "c4f94d434c45f9aadc3627fe801ceb5d5e3b7090",
      "subject": "REGRESSION(317400@main) [Win] Undefined symbols in `WCScene`"
    },
    "317779@main": {
      "author": "Ahmad Saleem",
      "avatar": "https://www.gravatar.com/avatar/38445f84fe28aa19bfeb1f59f6559532?d=identicon\u0026s=64",
      "cl": "317779@main",
      "clUrl": "https://commits.webkit.org/317779@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320011\nrdar://182947898\n\nReviewed by Youenn Fablet.\n\ndeviceType can only be DeviceType::Camera by the time control reaches\nthe final return, since the Microphone case already returns true\nabove. The `deviceType == DeviceType::Microphone` disjunct was\ntherefore unreachable; drop it.\n\n* Source/WebCore/platform/mediastream/MediaConstraints.cpp:\n(WebCore::isAllowedRequiredConstraintForDeviceSelection):\n\nCanonical link: https://commits.webkit.org/317779@main",
      "email": "ahmad.saleem792+github@gmail.com",
      "hash": "253e840da33cac8b9d4403737379026ec24909a9",
      "subject": "Remove dead code in isAllowedRequiredConstraintForDeviceSelection"
    },
    "317780@main": {
      "author": "Ahmad Saleem",
      "avatar": "https://www.gravatar.com/avatar/38445f84fe28aa19bfeb1f59f6559532?d=identicon\u0026s=64",
      "cl": "317780@main",
      "clUrl": "https://commits.webkit.org/317780@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320007\nrdar://182946069\n\nReviewed by Youenn Fablet.\n\nIf the AudioObjectGetPropertyData() call for the data source name\nsucceeds but returns a non-null, zero-length CFStringRef,\ngetDeviceInfo() fell through to the kAudioObjectPropertyName fallback\nand overwrote localizedName with a second string without releasing\nthe first one, leaking a CFStringRef.\n\nRelease localizedName before overwriting it in the fallback branch,\nso the empty string returned by the data source name lookup is no\nlonger leaked.\n\nNo new tests, since this path only leaks memory and cannot be\ndetected by output-diffing LayoutTests/WPT; there's no mock layer\nfor the CoreAudio HAL calls exercised here.\n\n* Source/WebCore/platform/mediastream/cocoa/CoreAudioCaptureDevice.cpp:\n(WebCore::getDeviceInfo):\n\nCanonical link: https://commits.webkit.org/317780@main",
      "email": "ahmad.saleem792+github@gmail.com",
      "hash": "b2779a1fffa063d660c9a78217e9ccea57ab9a3f",
      "subject": "CoreAudioCaptureDevice::getDeviceInfo() leaks a CFStringRef when the data source name is empty"
    },
    "317781@main": {
      "author": "Alan Baradlay",
      "avatar": "https://www.gravatar.com/avatar/788d66417db806c567552cfa1ae89f77?d=identicon\u0026s=64",
      "cl": "317781@main",
      "clUrl": "https://commits.webkit.org/317781@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319639\n\nReviewed by Antti Koivisto.\n\n    \u003cdiv style=\"width: max-content\"\u003e\n        \u003cdiv style=\"writing-mode: vertical-lr\"\u003efoobar\u003c/div\u003e\n    \u003c/div\u003e\n\nThe max-content width should shrink-wrap to the vertical child's block-axis\nsize (the height of one line of \"foobar\"). Instead the outer block collapsed to\nzero width.\n\nWhen a block container gathers the intrinsic inline-size contribution of an\northogonal child, that contribution is the child's block-axis size (its logical\nheight), which is only knowable by laying the child out. RenderFlexibleBox and\nRenderTableCell already lay out orthogonal children for this, but block layout\nhad no equivalent path: it returned only the child's border+padding estimate for\na not-yet-laid-out orthogonal child, so the contribution was ~0.\n\nAdd RenderBox::computeIntrinsicLogicalHeight(), which computes a box's block-axis\nintrinsic size, laying the box out when a content-based height is needed and\nre-arming its dirty bit so the regular layout pass runs again afterwards. A\ncontainer gathering the inline-axis contribution of an orthogonal child calls\nthis directly: the caller decides, based on the writing-mode relationship,\nwhether it needs the child's width (computeChildIntrinsicLogicalWidths, now\nstrictly width-only) or its height. Because the probe only runs on\nalready-dirty children, re-arming leaves the tree's dirty state unchanged; the\nreal pass reuses the probe's result when the child's used width is unchanged, or\ncascades a relayout via recomputeLogicalWidth() when it changes.\n\nWhile being measured, the child's own min/max block-size follows the\nintrinsic-size rules of CSS Sizing 3 section 5.1 (a cyclic-percentage max-size\nresolves as none; a cyclic-percentage min-size resolves with the percentage part\nas zero) rather than against the not-yet-known container. The layout context\ntracks the box being measured, and RenderBox::computeLogicalHeight passes\nIsComputingIntrinsicSize to constrainLogicalHeightByMinMax for it.\n\nMoving the block-size computation onto RenderBox also corrects the aspect-ratio\nbranch, which previously fed the container's aspect-ratio/replaced-ness into the\nchild's blockSizeFromAspectRatio() call; it now uses the child's own.\n\n(See https://drafts.csswg.org/css-writing-modes/#orthogonal-flows and\nhttps://drafts.csswg.org/css-sizing-3/#intrinsic-contribution)\n\n* Source/WebCore/rendering/RenderBox.h:\n* Source/WebCore/rendering/RenderBox.cpp:\n(WebCore::RenderBox::computeIntrinsicLogicalHeight): Added. Computes the box's\nblock-axis intrinsic size, laying it out under an intrinsic-size scope when a\ncontent-based height is needed, then re-arming its dirty bit.\n(WebCore::RenderBox::computeLogicalHeight const): Resolve the box's own min/max\nblock-size per CSS Sizing 3 section 5.1 while it is being measured for its\nintrinsic size contribution.\n* Source/WebCore/rendering/RenderBlock.cpp:\n(WebCore::RenderBlock::computeBlockIntrinsicLogicalWidths const): Dispatch an\northogonal child to computeIntrinsicLogicalHeight().\n(WebCore::RenderBlock::computeChildIntrinsicLogicalWidths const): Now strictly\ncomputes the child's logical widths; asserts the child is not orthogonal.\n(WebCore::RenderBlock::computeIntrinsicLogicalWidthsForFieldsetLegend const):\nDispatch an orthogonal legend to computeIntrinsicLogicalHeight().\n* Source/WebCore/rendering/RenderBlockFlow.cpp:\n(WebCore::RenderBlockFlow::computeInlineIntrinsicLogicalWidths const): Dispatch\n(WebCore::RenderBlockFlow::layoutBlock):\northogonal ruby-annotation, block-level and atomic-inline/float children to\ncomputeIntrinsicLogicalHeight().\n* Source/WebCore/rendering/RenderFlexibleBox.cpp:\n(WebCore::RenderFlexibleBox::computeIntrinsicLogicalWidths const): Dispatch an\northogonal flex item to computeIntrinsicLogicalHeight().\n* Source/WebCore/page/LocalFrameViewLayoutContext.h:\n* Source/WebCore/page/LocalFrameViewLayoutContext.cpp:\n(WebCore::LocalFrameViewLayoutContext::beginIntrinsicLogicalHeightComputationFor):\n(WebCore::LocalFrameViewLayoutContext::endIntrinsicLogicalHeightComputationFor):\n(WebCore::LocalFrameViewLayoutContext::isComputingIntrinsicLogicalHeightFor const):\n(WebCore::LocalFrameViewLayoutContext::addIntrinsicLogicalHeightComputationFor):\n(WebCore::LocalFrameViewLayoutContext::removeIntrinsicLogicalHeightComputationFor):\nTrack the box currently being laid out for an intrinsic-size measurement.\n* LayoutTests/fast/writing-mode/orthogonal-block-child-max-content-width.html: Added.\n* LayoutTests/fast/writing-mode/orthogonal-block-child-max-content-width-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-writing-modes/orthogonal-parent-shrink-to-fit-001-expected.txt:\nRebaseline: all subtests now pass.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-writing-modes/padding-percent-orthogonal-dynamic-expected.txt:\nRebaseline: first subtest now passes (dynamic re-layout subtest still fails).\n* LayoutTests/platform/mac/fast/table/border-collapsing/border-collapsing-head-foot-vertical-expected.txt:\n* LayoutTests/platform/ios/fast/table/border-collapsing/border-collapsing-head-foot-vertical-expected.txt:\n* LayoutTests/platform/glib/fast/table/border-collapsing/border-collapsing-head-foot-vertical-expected.txt:\nRebaseline (mac, ios, glib): orthogonal nested-table cells now size to their content.\n* LayoutTests/TestExpectations: Unmark the now-passing orthogonal-flows tests\n(float-in-htb-in-vrl, nested-orthogonal-001, two/three-levels-of-orthogonal-flows).\n* LayoutTests/css3/flexbox/flex-flow-margins-auto-size-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-writing-modes/orthogonal-parent-shrink-to-fit-001a-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-writing-modes/orthogonal-parent-shrink-to-fit-001b-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-writing-modes/orthogonal-parent-shrink-to-fit-001c-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-writing-modes/orthogonal-parent-shrink-to-fit-001d-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-writing-modes/orthogonal-parent-shrink-to-fit-001e-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-writing-modes/orthogonal-parent-shrink-to-fit-001f-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-writing-modes/orthogonal-parent-shrink-to-fit-001g-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-writing-modes/orthogonal-parent-shrink-to-fit-001h-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-writing-modes/orthogonal-parent-shrink-to-fit-001i-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-writing-modes/orthogonal-parent-shrink-to-fit-001j-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-writing-modes/orthogonal-parent-shrink-to-fit-001k-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-writing-modes/orthogonal-parent-shrink-to-fit-001l-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-writing-modes/orthogonal-parent-shrink-to-fit-001m-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-writing-modes/orthogonal-parent-shrink-to-fit-001n-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-writing-modes/orthogonal-parent-shrink-to-fit-001o-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-writing-modes/orthogonal-parent-shrink-to-fit-001p-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-writing-modes/orthogonal-parent-shrink-to-fit-001q-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-writing-modes/orthogonal-parent-shrink-to-fit-001r-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-writing-modes/orthogonal-parent-shrink-to-fit-001s-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-writing-modes/orthogonal-parent-shrink-to-fit-001t-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-writing-modes/orthogonal-parent-shrink-to-fit-001u-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-writing-modes/orthogonal-parent-shrink-to-fit-001v-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-writing-modes/orthogonal-parent-shrink-to-fit-001w-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-writing-modes/orthogonal-parent-shrink-to-fit-001x-expected.txt:\n* Source/WebCore/rendering/RenderLayoutState.cpp:\n(WebCore::IntrinsicLogicalHeightComputationScope::IntrinsicLogicalHeightComputationScope):\n(WebCore::IntrinsicLogicalHeightComputationScope::~IntrinsicLogicalHeightComputationScope):\n* Source/WebCore/rendering/RenderLayoutState.h:\n\nCanonical link: https://commits.webkit.org/317781@main",
      "email": "zalan@apple.com",
      "hash": "7b75575a866d7778c80c60cdbb76b58ee0eed5d6",
      "subject": "[css-writing-modes] Incorrect intrinsic width contribution for orthogonal block children in block layout"
    },
    "317782@main": {
      "author": "Eric Carlson",
      "avatar": "https://www.gravatar.com/avatar/e227ff07cc6d645fc1c69fd56c2c8cb8?d=identicon\u0026s=64",
      "cl": "317782@main",
      "clUrl": "https://commits.webkit.org/317782@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319813\nrdar://182709192\n\nReviewed by Jer Noble.\n\nThis re-lands 316303@main and its microphone-capture follow-up 316394@main,\nwhich were rolled out together in 316719@main after a cluster of regressions.\nThose regressions are addressed here:\n\n- Permanent loss of audio after mute/unmute (rdar://181517699), which was caused\n  by the maybeActivateAudioSession()'s \"not required\" branch no longer tearing\n  down the audio session. Restore the pre-async activate-or-no-op contract.\n  Pages whose audible content lives in Autoplaying rather than Playing\n  (e.g. YouTube audio elements) no longer lose their session. Added a new\n  regression test platform/mac/media/audio-session-stays-active-when-muted.html\n  that asserts that muting the only playing element does not deactivate the session\n  (while process suspension still does); it fails without this fix.\n\n- The platform/mac/media/audio-session-deactivated-when-suspended.html flake\n  (webkit.org/b/318452): sessionCanProduceAudioChanged() now activates\n  synchronously, and sessionWillBeginPlayback() completes the playback admission\n  before the activeAudioSessionRequired() deactivation check.\n\n- AudioContext::willBeginPlayback() again calls setActive(true) (which sends\n  AddMediaSession) before clientWillBeginPlayback() (which sends\n  MediaSessionWillBeginPlayback), matching HTMLMediaElement::playInternal(), so a\n  site-isolated AudioContext registers its session with the UI process before its\n  playback request arrives (webkit.org/b/318459).\n\nThe MediaBufferingPolicy flake (webkit.org/b/318485) is not yet root-caused as it\nhas never been reproduced locally so the test remains gardened. This change adds\ndiagnostics so a failure will be captured the next time it flakes on the bots.\n\n`AudioSession::tryToSetActive(bool)` now returns `Ref\u003cSetActivePromise\u003e` instead\nof a synchronous `bool`. This is a prerequisite for moving the media session\nmanager completely out of the WebContent process under site isolation: the\nexisting sync IPC from WebContent to the GPU process that confirmed audio session\nactivation cannot be extended to an additional UI-process hop without making the\nentire chain async.\n\nThe `TryToSetActive` IPC message is now reply-with-promise rather than\nsynchronous, so `RemoteAudioSession::tryToSetActiveInternal()` no longer blocks\nthe WebContent main thread on a GPU round-trip.\n`MediaSessionManagerInterface::sessionWillBeginPlayback()` is restructured: when\nactivation is already in place it takes the fast synchronous path and fires its\ncompletion handler inline; when activation is required it chains the completion\nhandler off the activation promise via `whenSettled()`.\n\n`MediaSessionManagerInterface::maybeActivateAudioSession()` returns its own\npromise, and gives each concurrent caller its own `GenericPromise::Producer`\n(held in `m_activationWaiters`) so multiple callers can chain off a single\nin-flight activation. The producers are settled together when the underlying\n`tryToSetActive(true)` completes.\n\n`RemoteAudioSession::tryToSetActiveInternal()` keeps at most one IPC in flight at\na time using a FIFO chain (`m_pendingActivationChain`). Consecutive same-state\nrequests coalesce against the tail of the chain into a single IPC;\nalternating-state requests append a new entry that is dispatched when the\nprevious reply arrives. Serializing at this layer preserves request ordering\nindependently of how `AudioSessionCocoa::tryToSetActiveInternal()` is\nimplemented, which matters once activation there becomes truly non-blocking.\n\n`AudioSessionCocoa::tryToSetActiveInternal()` activation still uses `dispatchSync`\ninternally; only deactivation is fully async at this layer for now. The promise\ninfrastructure is in place to make activation non-blocking in a follow-up change.\n\nThe microphone-capture follow-up (316394@main) keeps the WebProcess AudioSession\nactive for the duration of capture by centralizing the \"is capture or another\nsession keeping the AudioSession alive?\" check inside maybeDeactivateAudioSession(),\nso process suspension, removal of the last PlatformMediaSession, and\ncapture-state changes are all consistently guarded; UserMediaRequest::allow() no\nlonger activates the AudioSession directly, keeping m_becameActive in sync.\n\nAdd an AsyncAudioSessionActivationEnabled runtime preference (default true). When\nthis preference is false it makes the IPC to the GPU process synchronous, to make\nit easier to test whether regressions are caused by the change to async IPC or by\nthe change to using NativePromise in the AudioSession activation code path.\n\nFix a pre-existing clearInterval(checkCurrentTime) bug in\nvideo-currenttime-monotonic.html that caused spurious \"time went backward\"\nfailures when the interval kept running across video-end boundaries.\n\nTests: fast/mediastream/audio-session-active-when-capture-starts-and-stops.html\n       fast/mediastream/audio-session-stays-active-during-capture.html\n       fast/mediastream/audio-session-stays-active-when-removing-session-during-capture.html\n       platform/mac/media/audio-session-stays-active-when-muted.html\n       Tools/TestWebKitAPI/Tests/WebKit/WKWebView/MediaBufferingPolicy.mm\n       Tools/TestWebKitAPI/Tests/WebKit/WKWebView/MediaSession.mm\n\n* LayoutTests/fast/mediastream/audio-session-active-when-capture-starts-and-stops-expected.txt: Added.\n* LayoutTests/fast/mediastream/audio-session-active-when-capture-starts-and-stops.html: Added.\n* LayoutTests/fast/mediastream/audio-session-stays-active-during-capture-expected.txt: Added.\n* LayoutTests/fast/mediastream/audio-session-stays-active-during-capture.html: Added.\n* LayoutTests/fast/mediastream/audio-session-stays-active-when-removing-session-during-capture-expected.txt: Added.\n* LayoutTests/fast/mediastream/audio-session-stays-active-when-removing-session-during-capture.html: Added.\n* LayoutTests/media/picture-in-picture/video-playback-system-interruption-and-resume-expected.txt:\n* LayoutTests/media/picture-in-picture/video-playback-system-interruption-and-resume.html:\n* LayoutTests/media/video-currenttime-monotonic.html:\n* LayoutTests/platform/glib/TestExpectations:\n* LayoutTests/platform/mac-site-isolation/TestExpectations:\n* LayoutTests/platform/mac-wk2/TestExpectations:\n* LayoutTests/platform/mac/media/audio-session-stays-active-when-muted-expected.txt: Added.\n* LayoutTests/platform/mac/media/audio-session-stays-active-when-muted.html: Added.\n* Source/WTF/Scripts/Preferences/UnifiedWebPreferences.yaml:\n* Source/WebCore/Modules/audiosession/DOMAudioSession.cpp:\n(WebCore::DOMAudioSession::scheduleStateChangeEvent):\n* Source/WebCore/Modules/mediasession/MediaSession.cpp:\n(WebCore::MediaSession::updateCaptureState):\n* Source/WebCore/Modules/mediastream/MediaStreamTrack.cpp:\n(WebCore::MediaStreamTrack::trackMutedChanged):\n(WebCore::MediaStreamTrack::isCapturingAudio const):\n(WebCore::MediaStreamTrack::wantsToCaptureAudio const):\n* Source/WebCore/Modules/mediastream/UserMediaRequest.cpp:\n(WebCore::UserMediaRequest::allow):\n* Source/WebCore/Modules/webaudio/AudioContext.cpp:\n(WebCore::AudioContext::close):\n(WebCore::AudioContext::suspendRendering):\n(WebCore::AudioContext::resumeRendering):\n(WebCore::AudioContext::startRendering):\n(WebCore::AudioContext::lazyInitialize):\n(WebCore::AudioContext::mayResumePlayback):\n(WebCore::AudioContext::suspendPlayback):\n* Source/WebCore/Modules/webaudio/BaseAudioContext.h:\n(WebCore::BaseAudioContext::isRunning const):\n* Source/WebCore/html/HTMLMediaElement.cpp:\n(WebCore::HTMLMediaElement::load):\n(WebCore::HTMLMediaElement::prepareForLoad):\n(WebCore::HTMLMediaElement::selectMediaResource):\n(WebCore::HTMLMediaElement::completePlayInternal):\n(WebCore::HTMLMediaElement::playInternal):\n(WebCore::HTMLMediaElement::pauseInternal):\n* Source/WebCore/html/HTMLMediaElement.h:\n* Source/WebCore/html/MediaElementSession.h:\n* Source/WebCore/platform/LogMessages.in:\n* Source/WebCore/platform/audio/AudioSession.cpp:\n(WebCore::AudioSession::tryToSetActive):\n(WebCore::AudioSession::tryToSetActiveInternal):\n* Source/WebCore/platform/audio/AudioSession.h:\n* Source/WebCore/platform/audio/MediaSessionManagerInterface.cpp:\n(WebCore::MediaSessionManagerInterface::processWillSuspend):\n(WebCore::MediaSessionManagerInterface::sessionWillBeginPlayback):\n(WebCore::MediaSessionManagerInterface::enforceConcurrentPlaybackRestriction):\n(WebCore::MediaSessionManagerInterface::sessionCanProduceAudioChanged):\n(WebCore::MediaSessionManagerInterface::audioCaptureSourceStateChanged):\n(WebCore::MediaSessionManagerInterface::removeSession):\n(WebCore::MediaSessionManagerInterface::maybeDeactivateAudioSession):\n(WebCore::MediaSessionManagerInterface::maybeActivateAudioSession):\n* Source/WebCore/platform/audio/MediaSessionManagerInterface.h:\n* Source/WebCore/platform/audio/PlatformMediaSession.cpp:\n(WebCore::PlatformMediaSession::clientWillBeginPlayback):\n(WebCore::PlatformMediaSession::processClientWillPausePlayback):\n(WebCore::PlatformMediaSession::canProduceAudioChanged):\n* Source/WebCore/platform/audio/cocoa/AudioSessionCocoa.h:\n* Source/WebCore/platform/audio/cocoa/AudioSessionCocoa.mm:\n(WebCore::AudioSessionCocoa::tryToSetActiveInternal):\n* Source/WebCore/platform/mediastream/cocoa/BaseAudioCaptureUnit.cpp:\n(WebCore::BaseAudioCaptureUnit::continueStartProducingData):\n* Source/WebCore/testing/Internals.cpp:\n(WebCore::Internals::resetToConsistentState):\n(WebCore::bufferingPolicyToString):\n(WebCore::Internals::elementBufferingPolicy):\n(WebCore::Internals::elementPreferredBufferingPolicy):\n* Source/WebCore/testing/Internals.h:\n* Source/WebCore/testing/Internals.idl:\n* Source/WebKit/GPUProcess/media/RemoteAudioSessionProxy.cpp:\n(WebKit::RemoteAudioSessionProxy::tryToSetActive):\n(WebKit::RemoteAudioSessionProxy::tryToSetActiveSync):\n* Source/WebKit/GPUProcess/media/RemoteAudioSessionProxy.h:\n* Source/WebKit/GPUProcess/media/RemoteAudioSessionProxy.messages.in:\n* Source/WebKit/GPUProcess/media/RemoteAudioSessionProxyManager.cpp:\n(WebKit::RemoteAudioSessionProxyManager::tryToSetActiveForProcess):\n* Source/WebKit/GPUProcess/media/RemoteAudioSessionProxyManager.h:\n* Source/WebKit/GPUProcess/webrtc/UserMediaCaptureManagerProxy.cpp:\n* Source/WebKit/UIProcess/Media/RemoteMediaSessionManagerProxy.cpp:\n(WebKit::RemoteMediaSessionManagerProxy::tryToSetActiveInternal):\n* Source/WebKit/UIProcess/Media/RemoteMediaSessionManagerProxy.h:\n* Source/WebKit/WebProcess/GPU/media/RemoteAudioSession.cpp:\n(WebKit::RemoteAudioSession::tryToSetActiveInternal):\n(WebKit::RemoteAudioSession::sendNextActivationIPC):\n* Source/WebKit/WebProcess/GPU/media/RemoteAudioSession.h:\n* Source/WebKit/WebProcess/Media/RemoteMediaSessionManager.cpp:\n(WebKit::RemoteMediaSessionManager::tryToSetAudioSessionActive):\n* Tools/TestWebKitAPI/Tests/WebKit/WKWebView/MediaBufferingPolicy.mm:\n(waitUntilBufferingPolicyIsEqualTo):\n* Tools/TestWebKitAPI/Tests/WebKit/WKWebView/MediaSession.mm:\n(TestWebKitAPI::MediaSessionTest::loadPageAndBecomeNowPlaying):\n\nCanonical link: https://commits.webkit.org/317782@main",
      "email": "eric.carlson@apple.com",
      "hash": "ee87be3a43275f2c14fbe8248938c6fce3d31651",
      "subject": "[Site isolation] Re-land AudioSession asynchronous activation"
    },
    "317783@main": {
      "author": "Sammy Gill",
      "avatar": "https://www.gravatar.com/avatar/715a3cfee5d85ee90ccfdaa2a4a7a5a3?d=identicon\u0026s=64",
      "cl": "317783@main",
      "clUrl": "https://commits.webkit.org/317783@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320000\nrdar://problem/182938106\n\nReviewed by Zak Ridouh.\n\nChecking for legacy vs non-legacy actually does not have any impact on\nthe layout and was just used for resolving the item position properly.\nThis is already done properly so we can remove this check.\n\nCanonical link: https://commits.webkit.org/317783@main",
      "email": "sammy.gill@apple.com",
      "hash": "f01acf9a4900f95e56e970281e7189cc358070b9",
      "subject": "[GFC][Integration] Relax alignment checks a bit."
    },
    "317784@main": {
      "author": "Andres Gonzalez",
      "avatar": "https://www.gravatar.com/avatar/4e49c1280c6711bf7da7c7c121e013f6?d=identicon\u0026s=64",
      "cl": "317784@main",
      "clUrl": "https://commits.webkit.org/317784@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319984\nrdar://182912872\n\nReviewed by Dominic Mazzoni and Tyler Wilcock.\n\nWhen a text control's value ends in a line break, HTMLTextFormControlElement::\nsetInnerTextValue appends a placeholder \u003cbr\u003e so the empty final line renders.\nThat placeholder contributes a \"\\n\" text run, so the accessibility string is one\ncharacter longer than the value and the empty final line looks like a line whose\ncontent is a newline. Both the isolated-tree and the legacy line APIs mishandled\nit:\n\nIsolated tree (AXTextMarker):\n- characterRangeForLine reported the trailing blank line as {docEnd, 1} (the\n  placeholder newline) instead of an empty range at the document end. VoiceOver\n  then rendered the newline on the empty last line and, because the line looked\n  non-empty, skipped the previous line when panning left in braille.\n- lineNumberForIndex, which counted line-ID transitions with findMarker, resolved\n  an index at a line's start (right after a hard line break) to the previous line.\n  That made VoiceOver skip a line when panning through content lines. Its\n  index \u003e= length - 1 clamp also rejected the last content character of a value\n  that does not end in a newline.\n\nLive tree (AccessibilityRenderObject):\n- doAXRangeForLine returned an empty range {0, 0} for the trailing blank line,\n  because its lineEndIndex \u003c= lineStartIndex guard treats an empty line at the\n  document end as \"no such line\".\n\nFix all three so the two trees agree and the trailing blank line reads as an empty\nrange at the document end:\n\n- characterRangeForLine returns an empty range at the document end for that line,\n  detecting it by content (a lone newline with no following text runs) rather than\n  object role, which differs between the \u003cbr\u003e (LineBreak) and text node\n  (StaticText) representations.\n- lineNumberForIndex walks line ranges the same way characterRangeForLine does, so\n  an index at a line's start resolves to that line, and returns -1 for an index on\n  the trailing blank line, matching the legacy contract.\n- doAXRangeForLine reports the trailing blank line of a value ending in a line\n  break as an empty range at the document end.\n\nBecause the isolated-tree and legacy paths now agree, the test passes with\nIsAccessibilityIsolatedTreeEnabled on and off, so it no longer forces the isolated\ntree on.\n\n* Source/WebCore/accessibility/AXTextMarker.cpp:\n(WebCore::isOnTrailingPlaceholderBlankLine):\n(WebCore::nextLineRange):\n(WebCore::AXTextMarker::characterRangeForLine):\n(WebCore::AXTextMarker::markerRangeForLineIndex):\n(WebCore::AXTextMarker::lineNumberForIndex):\n* Source/WebCore/accessibility/AccessibilityRenderObject.cpp:\n(WebCore::AccessibilityRenderObject::doAXRangeForLine):\n* LayoutTests/accessibility/mac/range-for-line-trailing-blank-line.html: Added.\n* LayoutTests/accessibility/mac/range-for-line-trailing-blank-line-expected.txt: Added.\n\nCanonical link: https://commits.webkit.org/317784@main",
      "email": "andresg_22@apple.com",
      "hash": "870b45452df25c3624ea8fc6341b5c2c1ce3d36f",
      "subject": "AX: Line APIs mishandle the trailing blank line of a textarea whose value ends in a newline"
    },
    "317785@main": {
      "author": "Simon Fraser",
      "avatar": "https://www.gravatar.com/avatar/3763324aa0cdfa93be751c6081b8006a?d=identicon\u0026s=64",
      "cl": "317785@main",
      "clUrl": "https://commits.webkit.org/317785@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320040\nrdar://182972245\n\nReviewed by Abrar Rahman Protyasha.\n\nWhen running WPTs under safaridriver, Safari can crash sometimes during window tear-down\nwhere `m_scrollingCoordinatorProxy` is null, so guard against that.\n\n* Source/WebKit/UIProcess/WebPageProxy.cpp:\n(WebKit::WebPageProxy::sendScrollUpdateForNode):\n\nCanonical link: https://commits.webkit.org/317785@main",
      "email": "simon.fraser@apple.com",
      "hash": "f00c3cd5f837cbb31dfffc8cb471ea4c429ede9f",
      "subject": "Crash under WebPageProxy::sendScrollUpdateForNode() running scrolling-related WPTs"
    },
    "317786@main": {
      "author": "Sihui Liu",
      "avatar": "https://www.gravatar.com/avatar/fea095a2fb34b599fa6e7d581666903b?d=identicon\u0026s=64",
      "cl": "317786@main",
      "clUrl": "https://commits.webkit.org/317786@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319877\nrdar://182779863\n\nReviewed by Basuke Suzuki.\n\nWebPageProxy::didCacheBackForwardItem() only detached the outgoing document's child frames from the main frame\n(mainFrame-\u003etakeChildFrames()) after checking activeRemoteFrameProcesses() and bailing out early when that list was\nempty. When a navigation reuses the same process and the old page only contains same-site frames, the early return\nmeans the detachment never happened, and the old page's _WKFrameTreeNode children stays attached to the main frame after\nthe new page loaded its own children on top of them. To fix this, move the takeChildFrames() call above the\nactiveRemoteFrameProcesses() early-out so it always runs when Site Isolation and multi-process back/forward cache are\nenabled, regardless of whether the navigation happens to change process.\n\nAlso, call relaxAdoptionRequirement() in RemotePageProxy's constructor: RemotePageProxy registers itself with other\nobjects before it is wrapped in a Ref/RefPtr via adoptRef(), which otherwise trips the adoption assertion\n`ASSERT(!m_adoptionIsRequired);`.\n\nThat fix has a side effect on the back/forward cache restore path. WebBackForwardCacheEntry::takeForRestoration() now\nreturns a non-empty cachedChildren list for same-process iframes, whereas before it was always empty in this case since\nsetCachedChildren() was never reached. Its companion iframeProcesses list is computed by walking the cached children's\nprocesses with no exclusion for the process the main frame is restoring into, unlike the analogous suspend-side\nactiveRemoteFrameProcesses(), which explicitly skips the main frame's own process. As a result,\nWebPageProxy::goToBackForwardItem() now iterates the main frame's own process in iframeProcesses, looks up a\nRemotePageProxy for it via browsingContextGroup()-\u003eremotePageInProcess(), finds none (same-process children aren't\nRemotePageProxy-backed), and calls aggregator-\u003efailed(). Since nothing else chains the aggregator for that entry, it\nresolves failure once the loop returns, which removes the just-stored pendingBackForwardCachedChildren entry and calls\npage-\u003ereload(ReloadOption::ExpiredOnly) -- discarding the back/forward cache restore entirely and reloading from network\ninstead of reattaching the cached iframe. This produced a TIMEOUT in\nimported/w3c/web-platform-tests/navigation-api/navigation-history-entry/entries-after-bfcache-in-iframe.html on the\nmacOS-Sequoia-Release-Site-Isolation-Tests-EWS bot, since the test's iframe never re-fires pageshow/navigation events\nafter the forced reload. Fix this by skipping iframe processes that match the frame item's destination process in the\nrestore loop, mirroring activeRemoteFrameProcesses()'s exclusion on the suspend side; same-process children need no\nRestoreWithFrameItem round-trip since they are already reattached directly via\npendingBackForwardCachedChildren/adoptChildFrames in didCommitLoadForFrame once the main frame commits.\n\nFinally, update the test to enable Site Isolation on its own, like other tests in the same file, so that the test\nvalidates SI behavior on non-SI bots.\n\nAPI tests: SiteIsolation.QueryFramesStateAfterNavigating\n           SiteIsolation.QueryFramesStateAfterGoingBackToCachedPageWithIframe\n\n* Source/WebKit/UIProcess/WebPageProxy.cpp:\n(WebKit::WebPageProxy::goToBackForwardItem):\n(WebKit::WebPageProxy::didCacheBackForwardItem):\n* Tools/TestWebKitAPI/Tests/WebKit/WKWebView/SiteIsolation.mm:\n(TestWebKitAPI::TEST(SiteIsolation, QueryFramesStateAfterNavigating)):\n(TestWebKitAPI::TEST(SiteIsolation, QueryFramesStateAfterGoingBackToCachedPageWithIframe)):\n\nCanonical link: https://commits.webkit.org/317786@main",
      "email": "sihui_liu@apple.com",
      "hash": "5519b28fa3c8ac963b17993af1d5a89c6a9cf72a",
      "subject": "[Site Isolation] Fix TestWebKitAPI.SiteIsolation.QueryFramesStateAfterNavigating"
    },
    "317787@main": {
      "author": "Kiet Ho",
      "avatar": "https://www.gravatar.com/avatar/d9058b37006dce1f55f91b8ccc82f9a3?d=identicon\u0026s=64",
      "cl": "317787@main",
      "clUrl": "https://commits.webkit.org/317787@main",
      "description": "rdar://181410211\nhttps://bugs.webkit.org/show_bug.cgi?id=319288\n\nReviewed by Simon Fraser.\n\nCanvasRenderingContext2DBase::beginLayer works by putting a new targetSwitcher\non the state stack, so the new effective drawing context will be the drawing\ncontext of the new targetSwitcher. Then when endLayer is called, targetSwitcher\ngoes away, and its destructor paints the layer content to the previous effective\ndrawing context, which could be the base buffer (m_buffer), or the previous\ntargetSwitcher on the stack.\n\nThis means the targetSwitcher on the top of the stack paints to the next one on\nthe stack, ... until the last one paints to m_buffer. Consequently, the state stack\nhas to be unwound from top to bottom of stack (last to first of vector) to\nrespect the dependency chain. The current destructor does this by repeatedly\ncalling restore(), but it's only enabled in Debug builds. In Release builds, the\ndefault destructor is used, which frees the state stack in the WTF::Vector order\nfrom first to last. The result is that freeing targetSwitcher might cause a\ncrash, as it paints to the previous targetSwitcher that's already freed.\n\nFix this by always unwinding the state stack properly on destruction, regardless\nof Debug or Release builds.\n\nTest: fast/canvas/canvas-open-two-layers-then-gc-crash.html\n\n* LayoutTests/fast/canvas/canvas-open-two-layers-then-gc-crash-expected.txt: Added.\n* LayoutTests/fast/canvas/canvas-open-two-layers-then-gc-crash.html: Added.\n* Source/WebCore/html/canvas/CanvasRenderingContext2DBase.cpp:\n(WebCore::CanvasRenderingContext2DBase::~CanvasRenderingContext2DBase):\n* Source/WebCore/html/canvas/CanvasRenderingContext2DBase.h:\n\nCanonical link: https://commits.webkit.org/317787@main",
      "email": "kiet.ho@apple.com",
      "hash": "e4b357a32b53a80abbb20db9fe9aa389e182b6b7",
      "subject": "CanvasRenderingContext2DBase: always unwind state stack on destruction"
    },
    "317788@main": {
      "author": "Alan Baradlay",
      "avatar": "https://www.gravatar.com/avatar/788d66417db806c567552cfa1ae89f77?d=identicon\u0026s=64",
      "cl": "317788@main",
      "clUrl": "https://commits.webkit.org/317788@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320044\n\nReviewed by Antti Koivisto.\n\nRenderFlexibleBox tracked where it was in the flex layout algorithm with five\nindependent booleans -- m_inLayout, m_afterMainAxisItemSizing,\nm_afterCrossAxisItemSizing, m_inPostFlexUpdateScrollbarLayout and\nm_isComputingFlexBaseSizes -- each flipped on and off by a SetForScope object that\nFlexFormattingContext reached through the container (scopedComputingFlexBaseSizes,\nscopedAfterMainAxisItemSizing, scopedAfterCrossAxisItemSizing). The\npercentage-resolution cascade in canUseFlexItemForPercentageResolution then had to\ntest them in a hand-maintained priority order.\n\nReplace all five with a single FlexLayoutState that holds one monotonically\nadvancing Phase enum. m_flexLayoutState is a std::optional the container owns,\nengaged via SetForScope only while a layout is running (std::nullopt otherwise, so\nthere is no separate \"in layout\" bool). FlexFormattingContext::layout() advances\nthe phase at the entry of each pipeline step it runs, and readers ask either \"at or\npast phase X\" (phase() \u003e= X) or \"in phase X\" (phase() == X):\n\n    PreparingFlexItems -\u003e ComputingFlexBaseSizes -\u003e CollectingLines -\u003e\n    ResolvingFlexibleLengths -\u003e MainAxisItemSizing -\u003e CrossSizing -\u003e\n    MainAxisAlignment -\u003e CrossAxisItemSizing -\u003e CrossAxisAlignment -\u003e\n    PostFlexScrollbarLayout\n\nThis is behavior-preserving. The state is only consulted while a flex item is\nbeing laid out -- flex base size computation, the main-axis item layout pass, the\ncross-axis stretch relayout, and the post-flex scrollbar relayout -- and in each\nof those windows the phase resolves to the same answer the old scoped bool gave.\nThe phase does linger into the surrounding no-layout regions (advancing is\none-way), but no read observes it there, so the coarser lifetime is not\nobservable.\n\nBecause setPhase only advances, the main-axis item layout is split so the phase is\nowned in exactly one place: layoutFlexItems() is the MainAxisItemSizing pipeline\nstep and the sole phase setter, while the reusable per-item loop\nlayoutFlexItemsWithMainSizes() sets no phase. The multiline-column re-run in\ndistributeMainAxisFreeSpaceForMultilineColumnIfNeeded() calls the latter, so it\nrelayouts within whatever phase main alignment left it in rather than trying (and\nfailing, since advancing is one-way) to rewind to MainAxisItemSizing.\n\n* Source/WebCore/Headers.cmake:\n* Source/WebCore/WebCore.xcodeproj/project.pbxproj:\n* Source/WebCore/layout/formattingContexts/flex/FlexLayoutState.h: Added.\n(WebCore::FlexLayoutState::phase const):\n(WebCore::FlexLayoutState::setPhase):\n* Source/WebCore/layout/formattingContexts/flex/FlexFormattingContext.h:\n* Source/WebCore/layout/formattingContexts/flex/FlexFormattingContext.cpp:\n(WebCore::FlexFormattingContext::layout):\n(WebCore::FlexFormattingContext::computeFlexBaseAndHypotheticalMainSizes):\n(WebCore::FlexFormattingContext::computeFlexLines):\n(WebCore::FlexFormattingContext::computeMainSizeForFlexItems):\n(WebCore::FlexFormattingContext::layoutFlexItems):\n(WebCore::FlexFormattingContext::layoutFlexItemsWithMainSizes):\n(WebCore::FlexFormattingContext::hypotheticalCrossSizeForFlexItems):\n(WebCore::FlexFormattingContext::distributeMainAxisFreeSpaceForMultilineColumnIfNeeded):\n(WebCore::FlexFormattingContext::handleMainAxisAlignment):\n(WebCore::FlexFormattingContext::computeCrossSizeForFlexItems):\n(WebCore::FlexFormattingContext::handleCrossAxisAlignmentForFlexItems):\n(WebCore::FlexFormattingContext::flexBaseSizeForFlexItem):\n(WebCore::FlexFormattingContext::applyStretchAlignmentToFlexItem):\n(WebCore::FlexFormattingContext::flexLayoutState const):\n* Source/WebCore/rendering/RenderFlexibleBox.h:\n(WebCore::RenderFlexibleBox::isComputingFlexBaseSizes const):\n(WebCore::RenderFlexibleBox::isInCrossAxisStretchLayout const):\n(WebCore::RenderFlexibleBox::flexLayoutState):\n(WebCore::RenderFlexibleBox::scopedComputingFlexBaseSizes): Deleted.\n(WebCore::RenderFlexibleBox::scopedAfterMainAxisItemSizing): Deleted.\n(WebCore::RenderFlexibleBox::scopedAfterCrossAxisItemSizing): Deleted.\n* Source/WebCore/rendering/RenderFlexibleBox.cpp:\n(WebCore::RenderFlexibleBox::layoutBlock):\n(WebCore::RenderFlexibleBox::canUseFlexItemForPercentageResolution):\n(WebCore::RenderFlexibleBox::layoutFlexItemWithMainSize):\n(WebCore::RenderFlexibleBox::canComputePercentageFlexBasis):\n\nCanonical link: https://commits.webkit.org/317788@main",
      "email": "zalan@apple.com",
      "hash": "4af6fb574fa397319707a1221b9767526ea03722",
      "subject": "[cleanup] Replace RenderFlexibleBox's per-layout phase bools with a single monotonic FlexLayoutState"
    },
    "317789@main": {
      "author": "Alan Baradlay",
      "avatar": "https://www.gravatar.com/avatar/788d66417db806c567552cfa1ae89f77?d=identicon\u0026s=64",
      "cl": "317789@main",
      "clUrl": "https://commits.webkit.org/317789@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319623\nrdar://182447949\n\nReviewed by Antti Koivisto.\n\nA list-style-position: inside marker paints its glyph in RenderListMarker::paint()\nusing markerRect.y(), which comes from the renderer's location(). Line layout sets\nthat location by truncating the marker's float inline-layout position to the\nLayoutUnit (1/64px) grid (LayoutIntegration::LineLayout assigns it via\ntoLayoutPoint()). Inline text, by contrast, paints from the InlineDisplay::Box at\nfull float precision. When the sub-1/64px fraction dropped by the truncation is\nenough to tip the device-pixel rounding of the baseline, the marker glyph lands one\ndevice pixel away from the same glyph rendered as inline text.\n\nThis was latent until the iOS font-metrics convergence (bug 319190) shifted the\nascent so the text baseline falls exactly on a device-pixel boundary, making the\nlost fraction decide the rounding.\n\nTake the marker's block-axis paint position straight from its line box instead of\nthe truncated location(), so the glyph baseline keeps the same float precision as\ninline text and device-pixel rounds identically. Limited to horizontal writing\nmodes; vertical writing modes have a separate marker line-box mispositioning\ntracked by bug 319618.\n\n* Source/WebCore/rendering/RenderListMarker.cpp:\n(WebCore::RenderListMarker::paint):\n\nCanonical link: https://commits.webkit.org/317789@main",
      "email": "zalan@apple.com",
      "hash": "d0717a48c4d0070c07336fad891fa31164bf9d54",
      "subject": "[CSS] Inside list marker glyph can be painted a pixel off from equivalent inline text"
    },
    "317790@main": {
      "author": "Sam Weinig",
      "avatar": "https://www.gravatar.com/avatar/354b409240f9fb3357f498c547423d96?d=identicon\u0026s=64",
      "cl": "317790@main",
      "clUrl": "https://commits.webkit.org/317790@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319264\n\nReviewed by Darin Adler.\n\nWe used to use these aliases to help with the IPC generator which had\nsome trouble with nested templates, but we no longer use style types\nin IPC so these are now completely unused.\n\n* Source/WebCore/style/values/primitives/StylePrimitiveNumericTypes.h:\n\nCanonical link: https://commits.webkit.org/317790@main",
      "email": "sam@webkit.org",
      "hash": "25fc77ac109b38671ff9c50c992f8ffbb97f0f50",
      "subject": "Remove unused type aliases in StylePrimitiveNumericTypes.h"
    },
    "317791@main": {
      "author": "Youenn Fablet",
      "avatar": "https://www.gravatar.com/avatar/0a9886e582a7aee1eb908eb59af36da4?d=identicon\u0026s=64",
      "cl": "317791@main",
      "clUrl": "https://commits.webkit.org/317791@main",
      "description": "rdar://182523406\nhttps://bugs.webkit.org/show_bug.cgi?id=319677\n\nReviewed by Alex Christensen.\n\nWe add to FormData a RefPtr\u003cPendingStreamState\u003e member.\nIt is set by NetworkResourceLoader so that NetworkResourceLoader will be able to feed the PendingStreamState with data coming from web process via IPC.\n\nNetworkDataTaskCocoa is setting the probe callback which allows to determine whether the upload connection is HTTP2+ or not.\nThis is used in FormDataStreamCFNet at the time of creating CFNetwork stream upload.\nAt that time, the NetworkDataTaskCocoa task is tied to a specific connection, which allows to know whether the connection is HTTP2+ or not.\nIf connection is not HTTP2+, we fail the load as per fetch spec.\n\nFor cocoa, we no longer fail stream uploads for HTTP2+, even though there is no data being uploaded yet.\nWe rebase WPT fetch/api/redirect/redirect-upload.h2.any.xxx.html tests as now Fetch upload streams are accepted.\nTo keep the 301/302/307/308 test passings, we make sure that these uploads fail except for 303, as per fetch specification in NetworkLoad.\n\nFor Glib, since we still fail stream uploads, we have to keep previous expected.txt files for glib as is, hence the newly added LayoutTests/platform/glib expectations.\n\nCovered by existing and rebased tests.\n\n* LayoutTests/imported/w3c/web-platform-tests/fetch/api/redirect/redirect-upload.h2.any-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/fetch/api/redirect/redirect-upload.h2.any.serviceworker-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/fetch/api/redirect/redirect-upload.h2.any.sharedworker-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/fetch/api/redirect/redirect-upload.h2.any.worker-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/fetch-event.https.h2-expected.txt:\n* LayoutTests/platform/glib/imported/w3c/web-platform-tests/fetch/api/redirect/redirect-upload.h2.any-expected.txt: Copied from LayoutTests/imported/w3c/web-platform-tests/fetch/api/redirect/redirect-upload.h2.any-expected.txt.\n* LayoutTests/platform/glib/imported/w3c/web-platform-tests/fetch/api/redirect/redirect-upload.h2.any.serviceworker-expected.txt: Copied from LayoutTests/imported/w3c/web-platform-tests/fetch/api/redirect/redirect-upload.h2.any.serviceworker-expected.txt.\n* LayoutTests/platform/glib/imported/w3c/web-platform-tests/fetch/api/redirect/redirect-upload.h2.any.sharedworker-expected.txt: Copied from LayoutTests/imported/w3c/web-platform-tests/fetch/api/redirect/redirect-upload.h2.any.sharedworker-expected.txt.\n* LayoutTests/platform/glib/imported/w3c/web-platform-tests/fetch/api/redirect/redirect-upload.h2.any.worker-expected.txt: Copied from LayoutTests/imported/w3c/web-platform-tests/fetch/api/redirect/redirect-upload.h2.any.worker-expected.txt.\n* LayoutTests/platform/glib/imported/w3c/web-platform-tests/service-workers/service-worker/fetch-event.https.h2-expected.txt: Copied from LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/fetch-event.https.h2-expected.txt.\n* Source/WebCore/Headers.cmake:\n* Source/WebCore/Sources.txt:\n* Source/WebCore/WebCore.xcodeproj/project.pbxproj:\n* Source/WebCore/platform/network/FormData.cpp:\n(WebCore::FormData::setPendingStreamState):\n* Source/WebCore/platform/network/FormData.h:\n* Source/WebCore/platform/network/PendingStreamState.cpp: Added.\n(WebCore::PendingStreamState::DataAvailableHandler::create):\n(WebCore::PendingStreamState::DataAvailableHandler::invoke):\n(WebCore::PendingStreamState::DataAvailableHandler::DataAvailableHandler):\n(WebCore::PendingStreamState::create):\n(WebCore::PendingStreamState::setHTTPVersionProbe):\n(WebCore::PendingStreamState::invokeHandlerIfNeeded):\n(WebCore::PendingStreamState::appendData):\n(WebCore::PendingStreamState::endStream):\n(WebCore::PendingStreamState::errorStream):\n(WebCore::PendingStreamState::setDataAvailableHandler):\n(WebCore::PendingStreamState::clearDataAvailableHandler):\n(WebCore::PendingStreamState::currentHTTPVersion):\n(WebCore::PendingStreamState::read):\n(WebCore::PendingStreamState::hasReadyData):\n* Source/WebCore/platform/network/PendingStreamState.h: Added.\n(WebCore::PendingStreamState::WTF_GUARDED_BY_LOCK):\n* Source/WebCore/platform/network/cf/FormDataStreamCFNet.mm:\n(WebCore::formOpen):\n(WebCore::formRead):\n(WebCore::formCanRead):\n(WebCore::formCopyProperty):\n(WebCore::PendingStreamFields::PendingStreamFields):\n(WebCore::PendingStreamFields::cfFormStream):\n(WebCore::pendingStreamCreate):\n(WebCore::pendingStreamFinalize):\n(WebCore::pendingStreamOpen):\n(WebCore::pendingStreamRead):\n(WebCore::pendingStreamCanRead):\n(WebCore::pendingStreamClose):\n(WebCore::pendingStreamCopyProperty):\n(WebCore::pendingStreamSchedule):\n(WebCore::pendingStreamUnschedule):\n(WebCore::createHTTPBodyCFReadStream):\n* Source/WebKit/NetworkProcess/NetworkDataTask.cpp:\n(WebKit::NetworkDataTask::NetworkDataTask):\n(WebKit::NetworkDataTask::hasPendingStreamBody const):\n* Source/WebKit/NetworkProcess/NetworkDataTask.h:\n(WebKit::NetworkDataTask::setBytesTransferredOverNetwork):\n(WebKit::NetworkDataTask::hasPendingStreamBody const):\n* Source/WebKit/NetworkProcess/NetworkLoad.cpp:\n(WebKit::NetworkLoad::willPerformHTTPRedirection):\n* Source/WebKit/NetworkProcess/NetworkResourceLoader.cpp:\n* Source/WebKit/NetworkProcess/NetworkResourceLoader.h:\n* Source/WebKit/NetworkProcess/cocoa/NetworkDataTaskCocoa.h:\n* Source/WebKit/NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:\n(WebKit::NetworkDataTaskCocoa::installPendingStreamProbe):\n(WebKit::NetworkDataTaskCocoa::NetworkDataTaskCocoa):\n* Source/WebKit/Shared/WebCoreArgumentCoders.serialization.in:\n\nCanonical link: https://commits.webkit.org/317791@main",
      "email": "youenn@apple.com",
      "hash": "538ad3aecfc8ee20c27bbd0126d855337c202df4",
      "subject": "FormData upload should be able to dereference the stream from its identifier in networking process"
    },
    "317792@main": {
      "author": "Taher Ali",
      "avatar": "https://www.gravatar.com/avatar/e104800647d8c98b8c9dbe736b5e1751?d=identicon\u0026s=64",
      "cl": "317792@main",
      "clUrl": "https://commits.webkit.org/317792@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320098\nrdar://183030303\n\nReviewed by Sam Weinig.\n\nStyle::FilterReference and clip-path's ReferencePathOperation both had\nthe same fragment extraction logic.\n\nMove that logic to a single Style::URL::fragment() accessor, on the type that\nactually owns the quirk, and use it from both call sites. No behavior change.\n\n* Source/WebCore/style/values/filter-effects/StyleFilterReference.cpp:\n(WebCore::Style::ToStyle\u003cCSS::FilterReference\u003e::operator):\n* Source/WebCore/style/values/primitives/StyleURL.cpp:\n(WebCore::Style::URL::fragment const):\n* Source/WebCore/style/values/primitives/StyleURL.h:\n* Source/WebCore/style/values/shapes/StylePathOperationWrappers.cpp:\n(WebCore::Style::CSSValueConversion\u003cRefPtr\u003cPathOperation\u003e\u003e::operator):\n\nCanonical link: https://commits.webkit.org/317792@main",
      "email": "taher_ali@apple.com",
      "hash": "a9ebc5b071777463f6b6a352d6e7b6e57c9b087f",
      "subject": "Add Style::URL::fragment() to unify same-document fragment extraction"
    },
    "317793@main": {
      "author": "Yusuke Suzuki",
      "avatar": "https://www.gravatar.com/avatar/3455d9081295e3e740c1ffa901217d9b?d=identicon\u0026s=64",
      "cl": "317793@main",
      "clUrl": "https://commits.webkit.org/317793@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320071\nrdar://178085335\n\nReviewed by Yijia Huang.\n\nShareable Baseline JIT code is cached on UnlinkedCodeBlock::m_unlinkedBaselineCode.\nThat cache is not owned by any linked CodeBlock or executable, so it survives\ndeleteAllCodeBlocks and is otherwise only released when the UnlinkedCodeBlock itself\nis collected. A \"warm\" UnlinkedCodeBlock can therefore pin Baseline JIT executable\nmemory across memory warnings indefinitely, which defeats the purpose of a\nmemory-pressure driven deleteAllCode().\n\nThis patch clears m_unlinkedBaselineCode for every live UnlinkedCodeBlock in\nHeap::deleteAllUnlinkedCodeBlocks, right after deleteAllCodeBlocks has already\ndetached the linked CodeBlocks. This is safe because any still-linked CodeBlock holds\nits own ref to the BaselineJITCode, so dropping the cache ref never frees code that\nis still in use. A cache-only entry is freed as soon as its last ref goes away,\nsynchronously here.\n\n* Source/JavaScriptCore/heap/Heap.cpp:\n(JSC::Heap::deleteAllUnlinkedCodeBlocks):\n\nCanonical link: https://commits.webkit.org/317793@main",
      "email": "ysuzuki@apple.com",
      "hash": "450bcd468bb6fb329654f4c616be4b17caeccb50",
      "subject": "[JSC] Drop shared Baseline JIT code eagerly when Heap::deleteAllUnlinkedCodeBlocks is called"
    },
    "317794@main": {
      "author": "lilly",
      "avatar": "https://www.gravatar.com/avatar/d0533d52eeb271270df480f37629a407?d=identicon\u0026s=64",
      "cl": "317794@main",
      "clUrl": "https://commits.webkit.org/317794@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319426\nrdar://182247714\n\nReviewed by Simon Fraser.\n\nAdds new wpt tests for various corner-shape superellipse values testing\nconvex and concaveborders\n\n* LayoutTests/imported/w3c/web-platform-tests/css/css-borders/corner-shape/corner-shape-superellipse-concave-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-borders/corner-shape/corner-shape-superellipse-concave-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-borders/corner-shape/corner-shape-superellipse-concave.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-borders/corner-shape/corner-shape-superellipse-convex-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-borders/corner-shape/corner-shape-superellipse-convex-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-borders/corner-shape/corner-shape-superellipse-convex.html: Added.\n\nCanonical link: https://commits.webkit.org/317794@main",
      "email": "173393835+cupidsity@users.noreply.github.com",
      "hash": "dc26ca7e33a50fde3fef1bc661f332faa1b5e2fc",
      "subject": "corner-shape: add superellipse tests"
    },
    "317795@main": {
      "author": "Elliott Williams",
      "avatar": "https://www.gravatar.com/avatar/4086acbe078d65242df929cb51298130?d=identicon\u0026s=64",
      "cl": "317795@main",
      "clUrl": "https://commits.webkit.org/317795@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319641\n\nReviewed by Richard Robinson and Zak Ridouh.\n\nReland shared codesigning infrastructure added in 317671@main and add\nlogic to fully process entitlements.\n\nAdd a WEBKIT_GENERATE_ENTITLEMENTS function which crafts invocations of\na `process-entitlements.sh` script to generate an entitlements plist and\nsets it as the target's CODE_SIGN_ENTITLEMENTS path. It supports\ninternal-SDK only entitlements and including logic from WebKitAdditions.\n\n* Source/JavaScriptCore/Scripts/process-entitlements.sh: Hide expected\n  output from PlistBuddy to keep build logs clean.\n* Source/JavaScriptCore/shell/PlatformCocoa.cmake:\n* Source/WebKit/CMakeLists.txt: Add some manual dependency edges to make\n  the XPC services and WebKit.framework sign in the correct order.\n* Source/WebKit/PlatformCocoa.cmake:\n* Source/WebKit/PlatformMac.cmake: Use the WEBKIT_EXECUTABLE_* macros to\n  generate XPC variants that have a codesigning task.\n* Source/WebKit/Scripts/process-entitlements.sh: Ditto JSC's change.\n* Source/cmake/OptionsCocoa.cmake:\n* Source/cmake/OptionsIOS.cmake:\n* Source/cmake/WebKitCommon.cmake:\n* Source/cmake/WebKitEntitlements.cmake: Added.\n\n* Source/cmake/WebKitMacros.cmake: Building on 317671@main, if a target\n  has an entitlements plist to sign with, automatically track it as a\n  dependency.\n\n* Source/cmake/WebKitXcodeSDK.cmake: Remove the\n  WEBKIT_PROCESS_ENTITLEMENTS function that was used by JSC and did some\n  of the above. As a drive-by, rename the project-wide `_sdk_version`\n  variable to WEBKIT_SDK_VERSION.\n* Tools/MiniBrowser/mac/CMakeLists.txt:\n* Tools/TestWebKitAPI/PlatformMac.cmake:\n* Tools/TestWebKitAPI/Scripts/process-entitlements.sh:\n\nCanonical link: https://commits.webkit.org/317795@main",
      "email": "emw@apple.com",
      "hash": "e59e295bb71290f66f6011096123ad962956ff22",
      "subject": "[CMake] Centralize code signing and add missing entitlements"
    },
    "317796@main": {
      "author": "Brent Fulgham",
      "avatar": "https://www.gravatar.com/avatar/c6989a65afef0d015b55c65406e37ccc?d=identicon\u0026s=64",
      "cl": "317796@main",
      "clUrl": "https://commits.webkit.org/317796@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319691\nrdar://182535452\n\nReviewed by Tim Nguyen.\n\nThis change is a follow-up to Bug 275048 that corrects some late review\ncomments for popover=hint handling. This also unskips a number of tests\nthat now pass as a result.\n\n* LayoutTests/TestExpectations:\n* Source/WebCore/dom/Document.cpp:\n(WebCore::Document::nearestOpenHintAncestor const):\n(WebCore::Document::handlePopoverLightDismiss):\n* Source/WebCore/html/HTMLElement.cpp:\n(WebCore::HTMLElement::hidePopoverInternal):\n\nCanonical link: https://commits.webkit.org/317796@main",
      "email": "bfulgham@apple.com",
      "hash": "23e33741e5d3f589defb7e5ca1dd47f03ac74790",
      "subject": "Correct some popover=hint test failures"
    },
    "317797@main": {
      "author": "Zak Ridouh",
      "avatar": "https://www.gravatar.com/avatar/d9b65ef530b9cbbfc6dff1ca158faace?d=identicon\u0026s=64",
      "cl": "317797@main",
      "clUrl": "https://commits.webkit.org/317797@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319625\nrdar://182449652\n\nReviewed by Adrian Taylor.\n\nThe CMake Mac build stages JavaScriptCore's headers flat with no module\nmap, so every \u003cJavaScriptCore/*.h\u003e include is parsed textually. Expanding\nWebCore_Private to a full umbrella (for the Swift back-forward list work,\nbug 312083) makes a second Swift-imported module cover those JSC headers\nalongside WebKit_Internal, so Clang sees each JSC type defined twice and\nerrors with \"'JSC::X' has different definitions in different modules.\"\n\nStage JavaScriptCore's existing module maps into the built framework\nbundle so the Swift Clang importer discovers JavaScriptCore and\nJavaScriptCore_Private as real modules via -F, giving every consumer a\nsingle owner for JSC headers. Also install the private headers the\nprivate module map needs to parse standalone (matching the set iOS\nalready stages).\n\nWith JSC owning its headers, provide WebCore_Private the same way: stage\nthe in-tree Source/WebCore/WebCore_Private.modulemap into the WebCore\nframework bundle (as iOS does in PlatformIOS.cmake) instead of generating\na separate umbrella map in the build dir, and add the WebCore\nDerivedSources and style/computed directories to the importer's search\npath so that umbrella parses standalone.\n\nThis mirrors Xcode, where all frameworks ship module maps.\n\n* Source/JavaScriptCore/PlatformMac.cmake:\n* Source/WebKit/CMakeLists.txt:\n* Source/WebKit/PlatformMac.cmake:\n* Source/WebCore/PlatformMac.cmake:\n\nCanonical link: https://commits.webkit.org/317797@main",
      "email": "zakr@apple.com",
      "hash": "c2b3dcb3f9522bff14378bce042dcadeca6502d4",
      "subject": "[CMake] Make JavaScriptCore a real Clang module for the Mac Swift importer"
    },
    "317798@main": {
      "author": "Ahmad Saleem",
      "avatar": "https://www.gravatar.com/avatar/38445f84fe28aa19bfeb1f59f6559532?d=identicon\u0026s=64",
      "cl": "317798@main",
      "clUrl": "https://commits.webkit.org/317798@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320079\nrdar://182999477\n\nReviewed by Sam Sneddon.\n\nPort.ports_to_forward() guarded the secure WebSocket server's ports\nwith a copy-pasted condition that checked Port._websocket_server\nagain instead of Port._websocket_secure_server. This meant the\nsecure server's ports could be silently skipped, or an\nAttributeError could occur, depending on which server was set.\n\n* Tools/Scripts/webkitpy/port/base.py:\n(Port.ports_to_forward): Check Port._websocket_secure_server before\nforwarding its ports.\n\nCanonical link: https://commits.webkit.org/317798@main",
      "email": "ahmad.saleem792+github@gmail.com",
      "hash": "1403b63e4c6354570bf514c20ff1dc4ed1354c76",
      "subject": "webkitpy: ports_to_forward() checks _websocket_server instead of _websocket_secure_server"
    },
    "317799@main": {
      "author": "Brent Fulgham",
      "avatar": "https://www.gravatar.com/avatar/c6989a65afef0d015b55c65406e37ccc?d=identicon\u0026s=64",
      "cl": "317799@main",
      "clUrl": "https://commits.webkit.org/317799@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320105\nrdar://problem/183043051\n\nReviewed by Tim Nguyen.\n\nSync the popover tests to web-platform-tests/wpt@0684405. The\npopover-light-dismiss-command-edge-cases test has been promoted from\ntentative upstream, so drop the .tentative suffix from the test and its\nexpectations, and update w3c-import.log and tests-options.json to match.\n\n* LayoutTests/imported/w3c/web-platform-tests/html/semantics/popovers/popover-light-dismiss-command-edge-cases-expected.txt: Renamed from LayoutTests/imported/w3c/web-platform-tests/html/semantics/popovers/popover-light-dismiss-command-edge-cases.tentative-expected.txt.\n* LayoutTests/imported/w3c/web-platform-tests/html/semantics/popovers/popover-light-dismiss-command-edge-cases.html: Renamed from LayoutTests/imported/w3c/web-platform-tests/html/semantics/popovers/popover-light-dismiss-command-edge-cases.tentative.html.\n* LayoutTests/imported/w3c/web-platform-tests/html/semantics/popovers/w3c-import.log:\n* LayoutTests/platform/ios/imported/w3c/web-platform-tests/html/semantics/popovers/popover-light-dismiss-command-edge-cases-expected.txt: Renamed from LayoutTests/platform/ios/imported/w3c/web-platform-tests/html/semantics/popovers/popover-light-dismiss-command-edge-cases.tentative-expected.txt.\n* LayoutTests/tests-options.json:\n\nCanonical link: https://commits.webkit.org/317799@main",
      "email": "bfulgham@apple.com",
      "hash": "43a69f7562fd090a0c0256c97e11a805f9545a9d",
      "subject": "Update popover WPT state to match web-platform-tests/wpt@0684405"
    },
    "317800@main": {
      "author": "Sergey Rubanov",
      "avatar": "https://www.gravatar.com/avatar/d04164fa4e06ce85533085f24c766e17?d=identicon\u0026s=64",
      "cl": "317800@main",
      "clUrl": "https://commits.webkit.org/317800@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=270832\n\nReviewed by Yusuke Suzuki.\n\ngetCodeOrigin used a broken lower_bound comparator on lastInlineCSI\n(integer subtraction coerced to bool), so it could start mid-list and\nskip deeper postorder origins that still contain the call site.\nError.stack then dropped nested inlined frames (seen as a flaky wasm\nstress failure on x86/EWS). Use a proper lower_bound for the first\norigin with lastInlineCSI \u003e= csi, then walk only that suffix matching\nfirstInlineCSI and depth.\n\nAdd a focused OMG-inlining stress test for nested catch/throw stacks.\n\n* Source/JavaScriptCore/wasm/WasmCallee.cpp:\n(JSC::Wasm::OptimizingJITCallee::getCodeOrigin):\n* JSTests/wasm/stress/nested-inline-stacktrace-omg.js: Added.\n\nCanonical link: https://commits.webkit.org/317800@main",
      "email": "chi187@gmail.com",
      "hash": "4bfd6c750726a25617c844de7be79c4400f3c088",
      "subject": "[JSC][Wasm] Fix OMG inlined stack origin lookup skipping deeper frames"
    },
    "317801@main": {
      "author": "Dawn Morningstar",
      "avatar": "https://www.gravatar.com/avatar/9b791f3f02553608941e76bb5eecd471?d=identicon\u0026s=64",
      "cl": "317801@main",
      "clUrl": "https://commits.webkit.org/317801@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320104\nrdar://183040572\n\nReviewed by Aakash Jain.\n\nReducing iOS cap for parallel safety due to simulator overhead\n\n* Tools/CISupport/ews-build/steps.py:\n(FilterAPITestsForPlatform.run):\n\nCanonical link: https://commits.webkit.org/317801@main",
      "email": "morningstar@apple.com",
      "hash": "d1220cbeb1448b794ecbfbdabd9e983859cc1161",
      "subject": "iOS parallel-safety is failing due to excessive logging"
    },
    "317802@main": {
      "author": "Charlie Wolfe",
      "avatar": "https://www.gravatar.com/avatar/857b3b5ff3394c31fa2689310a93dbab?d=identicon\u0026s=64",
      "cl": "317802@main",
      "clUrl": "https://commits.webkit.org/317802@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319630\nrdar://182454821\n\nReviewed by Matthew Finkel.\n\nConsolidate GlobalPrivacyControl onto a single control surface. Previously it could be toggled both\nby the API and by the GlobalPrivacyControlEnabled preference.\n\nThe GlobalPrivacyControlEnabled preference is converted from a WKPreferences knob into a\nWebCore-only std::optional\u003cbool\u003e setting written only by the API path, and the IDL attribute is\ngated with [EnabledBySetting]. As a result navigator.globalPrivacyControl is not surfaced unless the\nembedder opts in, and is surfaced as true/false when it does.\n\nBecause the value is now a per-navigation API value rather than a globally synced preference, it no\nlonger reaches service/shared worker contexts for free, so it is carried to them via\nServiceWorkerContextData and WorkerInitializationData and applied in Page::setupForRemoteWorker,\nmirroring advancedPrivacyProtections.\n\nWebKitTestRunner enables it via the website-policies API for tests served under the\nweb-platform-tests gpc/ directory.\n\nTest: Tools/TestWebKitAPI/Tests/WebKit/WKWebView/WebsitePolicies.mm\n\n* LayoutTests/fast/dom/navigator-detached-no-crash-expected.txt:\n* LayoutTests/platform/gtk/fast/dom/navigator-detached-no-crash-expected.txt:\n* LayoutTests/platform/mac-wk2/fast/dom/navigator-detached-no-crash-expected.txt:\n* LayoutTests/platform/win/fast/dom/navigator-detached-no-crash-expected.txt:\n* LayoutTests/platform/wpe/fast/dom/navigator-detached-no-crash-expected.txt:\n* Source/WTF/Scripts/Preferences/UnifiedWebPreferences.yaml:\n* Source/WebCore/loader/DocumentLoader.cpp:\n(WebCore::DocumentLoader::applyPoliciesToSettings):\n* Source/WebCore/loader/DocumentLoader.h:\n(WebCore::DocumentLoader::setGlobalPrivacyControlEnabled):\n(WebCore::DocumentLoader::globalPrivacyControlEnabled const):\n* Source/WebCore/page/NavigatorGlobalPrivacyControl.cpp:\n(WebCore::NavigatorGlobalPrivacyControl::globalPrivacyControlEnabled):\n* Source/WebCore/page/NavigatorGlobalPrivacyControl.idl:\n* Source/WebCore/page/Page.cpp:\n(WebCore::Page::setupForRemoteWorker):\n* Source/WebCore/page/Page.h:\n* Source/WebCore/workers/WorkerInitializationData.h:\n(WebCore::WorkerInitializationData::isolatedCopy const):\n* Source/WebCore/workers/WorkerScriptLoader.cpp:\n(WebCore::WorkerScriptLoader::loadSynchronously):\n(WebCore::WorkerScriptLoader::loadAsynchronously):\n* Source/WebCore/workers/WorkerScriptLoader.h:\n* Source/WebCore/workers/service/ServiceWorkerClientData.cpp:\n(WebCore::ServiceWorkerClientData::isolatedCopy const):\n(WebCore::ServiceWorkerClientData::isolatedCopy):\n(WebCore::ServiceWorkerClientData::from):\n* Source/WebCore/workers/service/ServiceWorkerClientData.h:\n* Source/WebCore/workers/service/ServiceWorkerContextData.cpp:\n(WebCore::ServiceWorkerContextData::isolatedCopy const):\n(WebCore::ServiceWorkerContextData::isolatedCopy):\n(WebCore::ServiceWorkerContextData::copy const):\n* Source/WebCore/workers/service/ServiceWorkerContextData.h:\n* Source/WebCore/workers/service/server/SWServer.cpp:\n(WebCore::SWServer::globalPrivacyControlEnabledFromClient const):\n(WebCore::SWServer::installContextData):\n(WebCore::SWServer::runServiceWorker):\n* Source/WebCore/workers/service/server/SWServer.h:\n* Source/WebCore/workers/shared/SharedWorkerScriptLoader.cpp:\n(WebCore::SharedWorkerScriptLoader::notifyFinished):\n* Source/WebKit/Shared/WebCoreArgumentCoders.serialization.in:\n* Source/WebKit/Shared/WebsitePoliciesData.cpp:\n(WebKit::WebsitePoliciesData::applyToDocumentLoader):\n* Source/WebKit/UIProcess/API/C/WKWebsitePolicies.cpp:\n(WKWebsitePoliciesSetGlobalPrivacyControlEnabled):\n(WKWebsitePoliciesGetGlobalPrivacyControlEnabled):\n* Source/WebKit/UIProcess/API/C/WKWebsitePolicies.h:\n* Source/WebKit/WebProcess/Network/WebLoaderStrategy.cpp:\n(WebKit::addParametersShared):\n* Source/WebKit/WebProcess/Storage/WebSWContextManagerConnection.cpp:\n(WebKit::WebSWContextManagerConnection::installServiceWorker):\n* Source/WebKit/WebProcess/Storage/WebSharedWorkerContextManagerConnection.cpp:\n(WebKit::WebSharedWorkerContextManagerConnection::launchSharedWorker):\n* Tools/TestRunnerShared/TestFeatures.cpp:\n(WTR::shouldEnableGlobalPrivacyControl):\n(WTR::hardcodedFeaturesBasedOnPathForTest):\n* Tools/TestWebKitAPI/Tests/WebKit/WKWebView/WebsitePolicies.mm:\n* Tools/WebKitTestRunner/TestController.cpp:\n(WTR::TestController::resetPreferencesToConsistentValues):\n(WTR::TestController::resetStateToConsistentValues):\n* Tools/WebKitTestRunner/TestController.h:\n(WTR::TestController::setGlobalPrivacyControl):\n(WTR::TestController::globalPrivacyControl const):\n* Tools/WebKitTestRunner/TestInvocation.cpp:\n(WTR::TestInvocation::didReceiveSynchronousMessageFromInjectedBundle):\n* Tools/WebKitTestRunner/TestOptions.cpp:\n(WTR::TestOptions::defaults):\n* Tools/WebKitTestRunner/TestOptions.h:\n(WTR::TestOptions::globalPrivacyControl const):\n\nCanonical link: https://commits.webkit.org/317802@main",
      "email": "charliew@apple.com",
      "hash": "c7b5fcf1c50e97c4206bc674c6efd8fbd52dcb4e",
      "subject": "Expose navigator.globalPrivacyControl only when enabled through the WKWebpagePreferences API"
    },
    "317803@main": {
      "author": "Sihui Liu",
      "avatar": "https://www.gravatar.com/avatar/fea095a2fb34b599fa6e7d581666903b?d=identicon\u0026s=64",
      "cl": "317803@main",
      "clUrl": "https://commits.webkit.org/317803@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319410\nrdar://182236368\n\nReviewed by Abrar Rahman Protyasha.\n\nWhen the NetworkProcess is relaunched (e.g. after being terminated), its\nNetworkConnectionToWebProcess for a given WebProcess is created lazily, on demand. If a paste of a\nfile happens right after the relaunch, WebPageProxy sends AllowFilesAccessFromWebProcess to the\nNetworkProcess before that connection exists. NetworkProcess::allowFilesAccessFromWebProcess looked\nup the connection, found none, and silently dropped the granted paths while still reporting success\nvia the completion handler.\n\nShortly after, BlobRegistryProxy::registerInternalFileBlobURL (WebProcess side) triggers lazy\ncreation of the NetworkConnectionToWebProcess and asks it to register the file's blob URL. Because\nthe earlier grant was dropped, isFilePathAllowed() fails and the sandbox extension consume fails\n(sandbox_extension_consume failed: 1), so the file never gets exposed to the page via\ndataTransfer.files.\n\nFix by buffering pending file-access grants in a new NetworkProcess-level map\n(m_pendingAllowedFilePathsByProcess) keyed by ProcessIdentifier, independent of whether a live\nNetworkConnectionToWebProcess exists yet. When createNetworkConnectionToWebProcess later creates the\nconnection for that identifier, it drains and applies any pending paths, so the grant is no longer\nlost to the race. This mirrors the existing m_allowedFirstPartiesForCookies buffering pattern used\nfor the same kind of race.\n\n* Source/WebKit/NetworkProcess/NetworkProcess.cpp:\n(WebKit::NetworkProcess::createNetworkConnectionToWebProcess):\n(WebKit::NetworkProcess::allowFilesAccessFromWebProcess):\n* Source/WebKit/NetworkProcess/NetworkProcess.h:\n* TestExpectations/apitests:\n\nCanonical link: https://commits.webkit.org/317803@main",
      "email": "sihui_liu@apple.com",
      "hash": "7ef0ccf4ec9d45eb384d6f734269d95b5db4bc62",
      "subject": "NEW TEST(316740@main): [macOS] TestWebKitAPI.PasteImage.PasteFileWhileNetworkProcessIsLaunching is a constant failure"
    },
    "317804@main": {
      "author": "Aakash Jain",
      "avatar": "https://www.gravatar.com/avatar/e82e0cafeeac3a35b7e74206ebe4c536?d=identicon\u0026s=64",
      "cl": "317804@main",
      "clUrl": "https://commits.webkit.org/317804@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319981\nrdar://problem/182908056\n\nReviewed by Ryan Haddad.\n\nA pre-existing flaky layout test can fail with the change and then pass on the clean-tree run\n(because it is flaky), which made AnalyzeLayoutTestsResults report it as a new failure and blame\nthe PR author.\n\nUse the results-db-filtered failure lists, which already have pre-existing failures removed,\nso such a test is never counted as new (nor toward the \"too many flaky failures\" limit).\nThis relies on those lists being complete, so we no longer stop the results-db lookup at the first\nnon-pre-existing failure. run-layout-tests-without-change also skips those pre-existing tests, since\nthe analysis ignores them anyways.\n\n* Tools/CISupport/ews-build/steps.py:\n(RunWebKitTests): Add MAX_FAILURES_TO_CHECK_RESULTS_DB.\n(RunWebKitTests.filter_failures_using_results_db):\n(RunWebKitTestsWithoutChange.setLayoutTestCommand):\n(AnalyzeLayoutTestsResults.run):\n* Tools/CISupport/ews-build/steps_unittest.py:\n(TestFilterLayoutTestFailuresUsingResultsDB):\n(TestRunWebKitTestsWithoutChange.test_run_subtest_skips_results_db_pre_existing):\n\nCanonical link: https://commits.webkit.org/317804@main",
      "email": "aakash_jain@apple.com",
      "hash": "f554adccfd9e2638290f0c899877cf155af3651d",
      "subject": "[EWS] Don't blame PR author for pre-existing flaky layout test failures"
    },
    "317805@main": {
      "author": "Anand Srinivasan",
      "avatar": "https://www.gravatar.com/avatar/84643a20c269974c2df6681742daf0a4?d=identicon\u0026s=64",
      "cl": "317805@main",
      "clUrl": "https://commits.webkit.org/317805@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=318384\nrdar://181171258\n\nReviewed by Geoffrey Garen and Keith Miller.\n\nThis patch is meant to suppress SaferCPP complaining about functions\nthat are marked NODELETE that cause a controlled crash\n\n* Source/WTF/wtf/OverflowHandler.h:\n(WTF::AssertNoOverflow::crash):\n(WTF::AssertNoOverflow::hasOverflowed const):\n(WTF::CrashOnOverflow::overflowed):\n(WTF::CrashOnOverflow::crash):\n(WTF::CrashOnOverflow::hasOverflowed const):\n(WTF::RecordOverflow::hasOverflowed const):\n\nCanonical link: https://commits.webkit.org/317805@main",
      "email": "anand_srinivasan@apple.com",
      "hash": "a11cec5ce1613e458b58016ffae6aea347281594",
      "subject": "Mark crash-on-overflow functions in WTF OverflowHandler.h as NODELETE"
    },
    "317806@main": {
      "author": "Adrian Perez de Castro",
      "avatar": "https://www.gravatar.com/avatar/30ffea8cf404586741a8f5f7110c0914?d=identicon\u0026s=64",
      "cl": "317806@main",
      "clUrl": "https://commits.webkit.org/317806@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320024\n\nUnreviewed Skia update.\n\n% git log --pretty='%h %s' 1717654ff51b534411f80c19c356f4aabb8d3721..741e480402db12ca9c9baf068d21991749b9964a\n741e480402 [graphite] Specialize colorspace conversions more\n6fc9900b00 [graphite] Set labels on MTLDepthStencilState objects\nf571b44f35 [graphite] Guard call to setFailureResultForFinishedProc if Recording is null\n66ff2b6da1 Roll ANGLE from 7ed31165b1c1 to 317ae3119bf1 (8 revisions)\n42dccc8774 Roll Skia Infra from 7da602a3d377 to dce9b47ff97e (16 revisions)\nab3af195f0 Roll debugger-app-base from e8f6bad3ec15 to 7d52f7d9b6c7\n2c943903bf Roll vulkan-deps from c7b30c06b593 to 4210d7fc52f6 (14 revisions)\n8cbe9fea4e Manual roll ANGLE from d2c3236e24be to 7ed31165b1c1 (12 revisions)\nb97d56c11b Fix ordering of file names\n766f21ae61 Move SkEnumBitMask.h from src/core to include/private\ncc90b9d472 Roll recipe dependencies (trivial).\n5fbb9bbd88 Roll recipe dependencies (trivial).\n1ae2466c9e Specialize sk_is_trivially_relocatable for raw_ptr and raw_ref\n486a611577 Roll vulkan-deps from a1cacc287360 to c7b30c06b593 (3 revisions)\nfab98382a2 Add MiraclePtr exclusion annotations for C ABI structs\nec7a1e1ff8 Support explicit \"unknown\" chunks in `SkPngRustCodec`\n6e84902d56 Roll Dawn from cb71d4a32458 to cbf8e7390fe1 (23 revisions)\ndb07f74520 Roll ANGLE from 9464aca6502c to d2c3236e24be (27 revisions)\n127db09779 Roll Skia Infra from c7f1fbb895a5 to 7da602a3d377 (30 revisions)\n84f36b024c Roll SwiftShader from 5b0479bd2d15 to 2843cbcc714f (1 revision)\n90e4619a6c Roll debugger-app-base from ecbc8d84afd7 to e8f6bad3ec15\n046277850e Roll jsfiddle-base from 2b12e98d3730 to 3c8958265e84\n8dd207d443 Roll vulkan-deps from 9bb7338f0e04 to a1cacc287360 (13 revisions)\nb6c7a5bc83 Reland \"[Ganesh] TextureOp quad illegal memory access\"\nf5a2921fe2 Re-enable copyright formatting in presubmit\n066bfbac72 [graphite] Track resources before adding barriers to VulkanCommandBuffer\n9c7d18a286 Backfill SkQP CtsEnforcement::kNextRelease bump to 202704\n5d19002eb7 Add error handling and initialization to the DWFM\n79f93fd5f3 Roll vulkan-deps from 8dc044c0ebf3 to 9bb7338f0e04 (4 revisions)\n026f6a6be2 Roll ANGLE from 227bb03bda93 to 9464aca6502c (18 revisions)\naf00e308db Roll Skia Infra from c0a69acfa708 to c7f1fbb895a5 (18 revisions)\ne5b1bd57b0 Roll Dawn from c5326b9181c6 to cb71d4a32458 (3 revisions)\nf4bfdaade5 Use regular ICU function names in SkBidiFactory_icu_subset.cpp\n481c18d8a1 Roll recipe dependencies (trivial).\nda379fdf72 Handle w\u003c=0 conics\n5e976cb2f0 Revert \"[Ganesh] TextureOp quad illegal memory access\"\n000c7129c9 Roll recipe dependencies (trivial).\n6d4b5da00e Roll recipe dependencies (trivial).\n92e1602cd0 Roll vulkan-deps from e5233e15a0ea to 8dc044c0ebf3 (6 revisions)\n2ffd155313 CanvasKit: Add a wrapper for SkPathBuilder::setFillType that does not clone the SkPathBuilder\n30031df246 Refactor PNG gainmap support to `SkPngCodecBase`\n7b3761e8e8 [infra] MacMinis on 14.7 were updated to 14.8\nce2b7315cc Manual roll Dawn from 5dad4a08d684 to c5326b9181c6 (27 revisions)\nb046b341fc [graphite] Disable blending for inner fills\n789ec7583e [Fonts] Add EBDT/EBLC monochrome bitmap support to Fontations backend\n4b24321eb3 [Fonts] Add EBDT monochrome bitmap test font generation\nba79ddd3c8 [infra] Remove GalaxyS9, Nexus7, and Pixel10 tasks\n148b2b1948 [Ganesh] TextureOp quad illegal memory access\nd7196b0b49 Add missing file for opts target\n9c2b837884 Roll recipe dependencies (trivial).\nef17057bb7 Roll vulkan-deps from 6fd80c6ab534 to e5233e15a0ea (10 revisions)\n500025456b Roll ANGLE from 81a96a84e6e6 to 227bb03bda93 (17 revisions)\nad2d02546f Roll Skia Infra from 09ad6a8da9bf to c0a69acfa708 (11 revisions)\n5ff1316f4e Roll recipe dependencies (trivial).\nd2addcfb3b Roll recipe dependencies (trivial).\nc1215a40c1 Roll recipe dependencies (trivial).\ncb1035ff14 Roll recipe dependencies (trivial).\n3b92263daf Roll vulkan-deps from 5d7fd70ddbd6 to 6fd80c6ab534 (5 revisions)\n8f6c453abc Roll recipe dependencies (trivial).\n70acf6a5e7 Revert \"Specialize sk_is_trivially_relocatable for raw_ptr and raw_ref\"\n1f40c1099b Generate dawn_files.bzl dynamically instead of hardcoding the lists\n53fb0da879 Add some pixel buffer sizing asserts to SkWuffsCodec\n98677a483d Fix Bazel build visibility\nc8d9f80f13 [Fontations] Roll Fontations\n7128af6057 Roll recipe dependencies (trivial).\n6b4ac3bfb3 Roll recipe dependencies (trivial).\n3c88455963 Roll Skia Infra from f8dc57844d37 to 09ad6a8da9bf (14 revisions)\n1a85d00c61 Roll Dawn from 9533d3296a2a to 5dad4a08d684 (1 revision)\n2516121f2c Roll vulkan-deps from fdbd11044b7e to 5d7fd70ddbd6 (3 revisions)\n4dd566c83d Roll debugger-app-base from fd083daaa58b to ecbc8d84afd7\n6478f8ec2b Roll jsfiddle-base from ab54cf0d0a66 to 2b12e98d3730\n945d11ef39 Roll shaders-base from 9f862803ee5b to 2ca02a2612d9\n0a3b8549cb Roll skottie-base from a61634294908 to 870493f76166\nf46928e7f5 Roll vulkan-deps from 7bfc18a5a2d4 to fdbd11044b7e (1 revision)\n4e2c9b5e4d Roll SKP CIPD package from 564 to 565\nc526676072 Manual roll ANGLE from 8e09325ebad4 to 81a96a84e6e6 (10 revisions)\n139c8c1f65 Manual roll Dawn from 181bf8634c1d to 9533d3296a2a (11 revisions)\n42355271a3 Roll vulkan-deps from 973a663c1394 to 7bfc18a5a2d4 (4 revisions)\n9ef46390c2 Roll vulkan-deps from d8ab95e03469 to 973a663c1394 (10 revisions)\n60bc1a3fae Fix merge issues with src/base rename\nba3ee9b265 Resolved a Data Race on fStream in SkTypeface_Mac\nfc46d066b5 Move files from src/base to src/core\n6a4be3addd [graphite] Use stable collection for static bindings\n1bef4577a7 Roll ICU to 78.2\n8c89bf2b0e Roll recipe dependencies (trivial).\nac22a35e25 Specialize sk_is_trivially_relocatable for raw_ptr and raw_ref\n282e2123d0 Roll recipe dependencies (trivial).\n81a3d4583c Roll vulkan-deps from d3bbae038752 to d8ab95e03469 (6 revisions)\n73e00cc3ee Export SkFontMgr::Request methods across the DLL boundary\ncadbde1ec4 Roll Skia Infra from 6f4bd209e70a to f8dc57844d37 (10 revisions)\ne44ad36fad Roll ANGLE from 2b192e062b1d to 8e09325ebad4 (15 revisions)\ne26379234c Roll fiddler-base from 51e85c2ffa70 to 0231316fe504\n0a80bfee0d Roll jsfiddle-base from 7331278a3593 to ab54cf0d0a66\nf3cca00771 Roll Dawn from dbeb90630035 to 181bf8634c1d (17 revisions)\n48a20bbdfd Roll debugger-app-base from 0aa48372c923 to fd083daaa58b\n62df060cfb Roll recipe dependencies (trivial).\ncd9b570850 Roll recipe dependencies (trivial).\na8f381f1eb Roll recipe dependencies (trivial).\na2228b926c Roll recipe dependencies (trivial).\n0c0df6e447 [infra] Don't push nonexistent lottie-samples asset for SkottieTracing\n7326aa2867 Roll vulkan-deps from eb0415a66313 to d3bbae038752 (6 revisions)\n093ecf7606 Roll recipe dependencies (trivial).\n9e1db2ce88 Roll recipe dependencies (trivial).\nf61acb31ed Enable dangling pointer detector in Skia\nbd2c7ecd8a Reapply \"[infra] Use \"adb push --sync\" to copy to Android devices\"\n398922b044 Revert \"[infra] Use \"adb push --sync\" to copy to Android devices\"\n9eb91ed6e4 [infra] Use \"adb push --sync\" to copy to Android devices\n82e4c1b1a2 Roll vulkan-deps from 1ebd280d7a28 to eb0415a66313 (6 revisions)\nd963571e92 Roll ANGLE from 0c063596e689 to 2b192e062b1d (8 revisions)\nd0777b67d9 Roll Skia Infra from 9aaa7e56e7b8 to 6f4bd209e70a (14 revisions)\n1a4d3fe60a Roll Dawn from 926483c39198 to dbeb90630035 (20 revisions)\n99c18e9172 Roll recipe dependencies (trivial).\nd2b9e48baf Move `include/private/base` to `include/private`.\n69bf37867c Roll vulkan-deps from f253d7659dd3 to 1ebd280d7a28 (9 revisions)\neabdf12318 Fix AGTM PCHIP slopes for duplicate points\nfc2311fe73 Roll ANGLE from 7f76f214a5a4 to 0c063596e689 (17 revisions)\n887ee0a584 Roll Skia Infra from 5feb27468419 to 9aaa7e56e7b8 (55 revisions)\n62e5a74536 Roll debugger-app-base from d2178d1c149d to 0aa48372c923\nc4c7ea815f Roll Dawn from 841e08144fb8 to 926483c39198 (40 revisions)\n4c122c0a97 Roll jsfiddle-base from d568314f3014 to 7331278a3593\n618ec49cff Roll vulkan-deps from e97d808085af to f253d7659dd3 (5 revisions)\n5faf4562e7 Roll recipe dependencies (trivial).\n9f02102df2 [skcapture] Refactor Image and Surface to track SkPixelStorage directly\n3e71fda50b Make agents build Skia with less noise\na97920edbc [graphite] Support affine transform and more corner radii in rrect clip\n0a2804c8c1 Roll Skia Infra from aa3b5a254aa6 to 5feb27468419 (21 revisions)\n9c5ec22c5c Roll vulkan-deps from 2f96412cd516 to e97d808085af (3 revisions)\ne7265e9417 [infra] Fix RecreateSKPs\nd0b99494e5 Added a strided/scattered glyph advance access function\n65f3587693 Roll ANGLE from dc32cd831434 to 7f76f214a5a4 (7 revisions)\n7b5147b152 Roll Dawn from 58263faefe3c to 841e08144fb8 (14 revisions)\naeed11c350 Roll SwiftShader from d26a3e6606c0 to 5b0479bd2d15 (1 revision)\n065b3bea39 Roll jsfiddle-base from 9e1524dc815b to d568314f3014\nfcab6babf1 Roll debugger-app-base from 8e5327247e09 to d2178d1c149d\n688ca258ab Roll vulkan-deps from 537ea5cb1a35 to 2f96412cd516 (9 revisions)\nf6a9a592ef Created an RAII Wrapper for SkCanvas-\u003efScratchGlyphRunBuilder\n0a882a1e07 [ganesh] Fix AsyncReadPixelsContextShutdown expectation on protected contexts\neac15152bf Avoid improper mask formats for SDFT runs\nc1dde7b585 Reland #4 \"MiraclePtr: Add raw_ptr definitions\"\n560143de0a Reland \"Add public API to query a serialized key for external format usage\"\n51992f3120 Add GM to test new Graphite rrect clip support\n22c683d223 [ganesh] Track async task execution for callbacks\n43f1357351 [graphite] Add DrawAtlas Indirection Types\n9d94f46e7f Use an assert release on stride length\n01e9da83b6 Roll partition_alloc\n0ea3dae686 Roll vulkan-deps from 646f0b0196b1 to 537ea5cb1a35 (6 revisions)\nd17c51db4e Roll ANGLE from 0bcdad042d68 to dc32cd831434 (6 revisions)\nb415735a0e Roll Dawn from 23cf554e645f to 58263faefe3c (2 revisions)\n9659a87f50 Roll skottie-base from 867c02555f37 to a61634294908\na56d5a4e11 Roll vulkan-deps from 11839f4fa73a to 646f0b0196b1 (2 revisions)\n101faf7d9d Roll vulkan-deps from 940d8e3840d0 to 11839f4fa73a (1 revision)\n294ac0cb2a Roll vulkan-deps from 763d7fb65f73 to 940d8e3840d0 (1 revision)\n08e68cc65a Manual roll Dawn from a36d189db2e8 to 23cf554e645f (11 revisions)\n91ee612cf5 Roll vulkan-deps from 8b51d6332f98 to 763d7fb65f73 (9 revisions)\na145861ad1 Reject Slugs that have creationMatrix with perspective\n9eecbdc30f Manual roll ANGLE from 1184faa057e3 to 0bcdad042d68 (8 revisions)\ncd4b3739bd Roll vulkan-deps from 78036a90f143 to 8b51d6332f98 (5 revisions)\na47a9a2c8a Avoid ULP issue on big rrects\n6e003d7f69 Revert \"Add public API to query a serialized key for external format usage\"\nd3e581be96 Roll ANGLE from 8240611f3d68 to 1184faa057e3 (10 revisions)\n494f1bf55f Roll Dawn from 075626b4b324 to a36d189db2e8 (16 revisions)\n1b96a90703 Roll vulkan-deps from 69c770f1ec4d to 78036a90f143 (7 revisions)\n59556fdb8c Revert \"[graphite] use textureSize intrinsic instead of uniforms\"\n8eb107046f Add public API to query a serialized key for external format usage\n928ded2a31 Avoid chopping cubics with w=0\n0df2ab117e Roll recipe dependencies (trivial).\n9d4ed11e54 Revert \"[graphite] hoist textureSize call out of switch statement\"\nfd7a0a9ea1 Add staging SkMalloc.h file to private includes\ndcf3ebf072 [ganesh] Prevent overflow in StrokeTessellateOp\nfec0c21c76 [infra] Remove Mac12 jobs\ncecc0e0da9 Roll vulkan-deps from 090b0d3106c4 to 69c770f1ec4d (1 revision)\n611e3f8ceb Roll Skia Infra from a4cbcf5ccc36 to aa3b5a254aa6 (8 revisions)\n6dfa39c8eb Roll ANGLE from 1a7742a98d71 to 8240611f3d68 (10 revisions)\nc4326e7c64 Roll Dawn from fac99d48e5f5 to 075626b4b324 (17 revisions)\n0e73eb4da5 Roll debugger-app-base from d263d5e89fa5 to 8e5327247e09\n4fdb859c8d Roll jsfiddle-base from e97ab14ddb65 to 9e1524dc815b\nc42efa24f1 Roll recipe dependencies (trivial).\n0020aae33f Roll vulkan-deps from 85acfedb927a to 090b0d3106c4 (4 revisions)\nc21280541a Add agent skills for dealing with fuzz issues\n3151df0dc0 [graphite] Consistently ignore path inversion when stroking\n4d00e2b30d Revert \"SkFlattenable::Register now performs a sorted insert\"\n5f56f9c9c7 Fix assertion in GetLoopUnrollInfo\n2dfc12e0af Remove SafeStack jobs\n3e4a1af226 Manual roll Dawn from 447aee490e30 to fac99d48e5f5 (6 revisions)\n349f974b14 SkFlattenable::Register now performs a sorted insert\n641cdb6aed Avoid underflow in modulo in loops\n46a16fa03a [ganesh] Fix maxLCDOffset calculation\nd114bf06df Improve agent docs for gn builds\n86241e8b8e Fix bazel Dawn build\n2b8cfcc5ea [graphite] Disable blending for opaque kSrcOver w/o analytic coverage\n1021f2559a Fix perspective handling in SmallPathRenderer\n5b8678e808 Roll recipe dependencies (trivial).\nce34ec9371 Roll vulkan-deps from df40808ccc75 to 85acfedb927a (8 revisions)\n6dedf863d3 Roll recipe dependencies (trivial).\nbab903e97f Roll ANGLE from 196d1b79eadb to 1a7742a98d71 (18 revisions)\n40394e55de Roll Skia Infra from 1c6aa5aaba53 to a4cbcf5ccc36 (19 revisions)\nb2464cbb9b Roll Dawn from 63f25feec51e to 447aee490e30 (53 revisions)\nd625048c85 Roll recipe dependencies (trivial).\nc1dbe08654 Roll recipe dependencies (trivial).\n4be5546ed8 Roll recipe dependencies (trivial).\n403ba7f67e Roll recipe dependencies (trivial).\n32da743297 Roll vulkan-deps from 24496a44b9f4 to df40808ccc75 (3 revisions)\nd6cd9a774c Update Linux Clang to 22.1.0 (fixing MSAN)\n81f3f56901 Roll recipe dependencies (trivial).\n2c50fbfb03 [graphite] Guard SDF inset with define\n8ff9bdc2a4 [graphite] Share ShaderCaps init code across backends\n060555fd70 Merge 2 release notes into RELEASE_NOTES.md\nd30d2a1958 Update Skia milestone to 151\nbf6fa29148 Roll recipe dependencies (trivial).\n279b17fe9f Roll ANGLE from 8a5e64de9fd3 to 196d1b79eadb (5 revisions)\n86d685c697 Roll Skia Infra from 2da962880dc7 to 1c6aa5aaba53 (8 revisions)\ne60d5c8a2f Roll debugger-app-base from c74d26054770 to d263d5e89fa5\neee0a5b472 Roll vulkan-deps from d418e8ba7c95 to 24496a44b9f4 (9 revisions)\n70f9d90bc8 Roll recipe dependencies (trivial).\ncb57d863c4 Roll recipe dependencies (trivial).\nd7fa1dcd53 Roll recipe dependencies (trivial).\n7ec37cf3ae Initialize variables in SkRemoteGlyphCacheTest\n95dbfa24e0 Turn off LCD in SDF slugs when downscaling too far\n8c8a82b7bd [graphite] hoist textureSize call out of switch statement\n5a01ce655d Roll partition_alloc\naace90ee2e Manual roll ANGLE from c01fdb7503e3 to 8a5e64de9fd3 (8 revisions)\n886ce5fe90 [bzl] Update dawn_files.bzl after Dawn roll\ned03b304e1 Make Windows ASAN use dynamic ASAN libraries not static ones\ne4281d5a79 Roll vulkan-deps from b57006f9536e to d418e8ba7c95 (1 revision)\n8f073c306e Manual roll Dawn from ce586f1e2a62 to 63f25feec51e (61 revisions)\nc97e939eb5 Roll ANGLE from 31b176246d7e to c01fdb7503e3 (12 revisions)\n90b8d641b2 Roll Skia Infra from db195a05b659 to 2da962880dc7 (4 revisions)\n659b67960f Roll vulkan-deps from d8c0b6852f61 to b57006f9536e (4 revisions)\n32b547c81b Roll vulkan-deps from dcdce5027a08 to d8c0b6852f61 (3 revisions)\n91e53285f4 Roll vulkan-deps from b766d9ede7dd to dcdce5027a08 (1 revision)\n33a1c4f3e0 Roll vulkan-deps from 016cfd464461 to b766d9ede7dd (5 revisions)\nc0b70b7ffb Roll recipe dependencies (trivial).\n0aee4675e0 [graphite] Fix null deref in QueueManager::addRecording when !Recording\nd7a4ca22a9 Use std::make_unique where we aren't\nc072b212e3 Use const references in a few more places\ne202cf3ef8 Address potential MSAN issue in SkScalerContext\n87c0eddb36 Fix SkVx::isFinite on new MSVC\n9459b2f287 Fix docs for MSAN (and address 2 minor issues)\ndc01525ac4 Roll vulkan-deps from 3cececf546e2 to 016cfd464461 (4 revisions)\n04b084c10b Reland \"[graphite] BufferSubAllocator respects failed mapping on reset\"\nb854499783 Reland \"Reconstruct subRun bounds from glyphs\"\nc329e877d1 Revert \"[graphite] BufferSubAllocator respects failed mapping on reset\"\nc480ba2eb2 Revert \"Reconstruct subRun bounds from glyphs\"\nd9d6b440c4 Update deps for agents repos\n4715553483 Roll ANGLE from 9566f50cb827 to 31b176246d7e (7 revisions)\n087c3cc37c Roll vulkan-deps from 000daaa61385 to 3cececf546e2 (6 revisions)\nc5de7569a5 Roll Skia Infra from 5c22c771f011 to db195a05b659 (8 revisions)\n71c38003fc Roll SwiftShader from bea72feae3cf to d26a3e6606c0 (1 revision)\nf93ed13d77 Reconstruct subRun bounds from glyphs\n7a5bd9b331 Roll recipe dependencies (trivial).\n8f47b24d40 Add core_skills.json for skia\n\nCanonical link: https://commits.webkit.org/317806@main",
      "email": "aperez@igalia.com",
      "hash": "3245b6b83673baaf0b324d39a24d0704a3fd0dcb",
      "subject": "Update Skia to 2026-06-18 (741e480402db12ca9c9baf068d21991749b9964a)"
    },
    "317807@main": {
      "author": "Sam Weinig",
      "avatar": "https://www.gravatar.com/avatar/354b409240f9fb3357f498c547423d96?d=identicon\u0026s=64",
      "cl": "317807@main",
      "clUrl": "https://commits.webkit.org/317807@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319996\n\nReviewed by Sammy Gill.\n\nConverts the remaining grid/table CSS properties to use unzoomed lengths.\n\nNew test added showing properties working properly with inherited + zoomed values.\n\nAdded helpers Style::ZoomResolved and Style::ZoomResolvable to annotate types with\nzoom related context to make some bundling simpler.\n\nTests: imported/w3c/web-platform-tests/css/css-viewport/zoom/grid.html\n* LayoutTests/imported/w3c/web-platform-tests/css/css-viewport/zoom/grid-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-viewport/zoom/grid.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-viewport/zoom/reference/grid-ref.html: Added.\n* Source/WebCore/WebCore.xcodeproj/project.pbxproj:\n* Source/WebCore/css/parser/CSSPropertyParserConsumer+Grid.cpp:\n* Source/WebCore/css/values/grid/CSSGridTrackBreadth.h:\n* Source/WebCore/css/values/grid/CSSGridTrackSize.h:\n* Source/WebCore/layout/formattingContexts/grid/GridFormattingContext.cpp:\n* Source/WebCore/layout/formattingContexts/grid/GridFormattingContext.h:\n* Source/WebCore/layout/formattingContexts/grid/GridLayout.cpp:\n* Source/WebCore/layout/formattingContexts/grid/GridLayout.h:\n* Source/WebCore/layout/formattingContexts/grid/TrackSizingAlgorithm.cpp:\n* Source/WebCore/layout/formattingContexts/grid/TrackSizingFunctions.h:\n* Source/WebCore/layout/formattingContexts/table/TableFormattingContext.cpp:\n* Source/WebCore/layout/formattingContexts/table/TableGrid.h:\n* Source/WebCore/layout/formattingContexts/table/TableLayout.cpp:\n* Source/WebCore/rendering/GridTrackSizingAlgorithm.cpp:\n* Source/WebCore/rendering/GridTrackSizingAlgorithm.h:\n* Source/WebCore/rendering/RenderGrid.cpp:\n* Source/WebCore/style/StyleExtractorCustom.h:\n* Source/WebCore/style/values/grid/StyleGridTrackBreadth.cpp:\n* Source/WebCore/style/values/grid/StyleGridTrackBreadth.h:\n* Source/WebCore/style/values/grid/StyleGridTrackSize.h:\n* Source/WebCore/style/values/viewport/StyleZoomResolvable.h: Added.\n* Source/WebCore/style/values/viewport/StyleZoomResolved.h: Added.\n\nCanonical link: https://commits.webkit.org/317807@main",
      "email": "sam@webkit.org",
      "hash": "6446909a3615d2f33b406c4ad1c4aceabfd90e83",
      "subject": "[EvaluationTimeZoom] Convert remaining grid/table properties to use unzoomed lengths"
    },
    "317808@main": {
      "author": "Zak Ridouh",
      "avatar": "https://www.gravatar.com/avatar/d9b65ef530b9cbbfc6dff1ca158faace?d=identicon\u0026s=64",
      "cl": "317808@main",
      "clUrl": "https://commits.webkit.org/317808@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320121\nrdar://183063525\n\nReviewed by Charlie Wolfe.\n\n317761@main added WKFastScrollTracker.swift and made\nWKAppKitGestureController.mm import WebKit-Swift.h and use\nWebKit::WKFastScrollTracker, but only updated the Xcode project. The CMake\nbuild was left broken in two ways:\n\n* WKFastScrollTracker.swift was never compiled, so WebKit::WKFastScrollTracker\n  was never emitted into the generated WebKit-Swift.h.\n* WKAppKitGestureController.mm was not listed in WebKit_SWIFT_INTEROP_SOURCES,\n  so it was built in a unified source instead of the Swift interop subtarget\n  and tripped the WebKit-Swift.h #error guard.\n\n* Source/WebKit/CMakeLists.txt:\n* Source/WebKit/PlatformMac.cmake:\n\nCanonical link: https://commits.webkit.org/317808@main",
      "email": "zakr@apple.com",
      "hash": "0f3e01f048de8444765c34a2cac1451f86cbc916",
      "subject": "[CMake] Fix build after 317761@main"
    },
    "317809@main": {
      "author": "Ryosuke Niwa",
      "avatar": "https://www.gravatar.com/avatar/ed2c71248fe3ea15d9129f6e9a2a1e85?d=identicon\u0026s=64",
      "cl": "317809@main",
      "clUrl": "https://commits.webkit.org/317809@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320123\n\nUnreviewed. Updated the safer C++ expectations per the latest results on bots.\n\n* Source/WebCore/SaferCPPExpectations/NoDeleteCheckerExpectations:\n* Source/WebCore/SaferCPPExpectations/UncheckedCallArgsCheckerExpectations:\n* Source/WebCore/SaferCPPExpectations/UncountedCallArgsCheckerExpectations:\n* Source/WebKit/SaferCPPExpectations/NoDeleteCheckerExpectations:\n\nCanonical link: https://commits.webkit.org/317809@main",
      "email": "rniwa@webkit.org",
      "hash": "23b99e9b9c54edbe9aa51896b53f21f7e1134867",
      "subject": "Update safer C++ expectations (2026-07-23)"
    }
  },
  "date": "2026-07-23",
  "days": 1,
  "generatedAt": "2026-07-23T22:06:04Z",
  "markdown": "## Highlights\n- **Web Platform** Added the Fetch `duplex` request property, unlocking standards-aligned streaming request bodies and better compatibility for advanced fetch clients. [commit 317768@main](https://commits.webkit.org/317768@main)\n- **Privacy** Gated `navigator.globalPrivacyControl` behind `WKWebpagePreferences`, tightening embedder control over privacy surface exposure. [commit 317802@main](https://commits.webkit.org/317802@main)\n- **Media** Enabled libwebrtc on WPE, a meaningful platform step for real-time audio and video support on embedded Linux ports. [commit 317767@main](https://commits.webkit.org/317767@main)\n- **UI** Landed AppKit gesture work for DOM `dblclick` and smart magnification, improving native-feeling trackpad interaction on macOS. [commit 317742@main](https://commits.webkit.org/317742@main)\n- **Rendering** Added support for external and `data:` URL `clip-path` references on HTML elements, expanding real-world CSS clipping interoperability. [commit 317774@main](https://commits.webkit.org/317774@main)\n- **GPU** Fixed WebGPU render bundles rejecting depth-only pipelines in `setPipeline`, unblocking a valid graphics workflow. [commit 317736@main](https://commits.webkit.org/317736@main)\n- **V8** JSC and Wasm got a dense batch of execution-engine work, including a smaller 64-bit Wasm `Type`, better stack-origin lookup, and tier-up tuning for small functions. [commit 317748@main](https://commits.webkit.org/317748@main)\n- **A11y** Fixed a regression where a label-for relationship was not re-resolved after the target control's `id` changed, restoring dynamic accessibility correctness. [commit 317751@main](https://commits.webkit.org/317751@main)\n- **Security** Hardened overflow crash handlers with `NODELETE`, reducing the chance that critical crash-on-overflow paths are stripped away. [commit 317805@main](https://commits.webkit.org/317805@main)\n\n## What landed by area\n\n### JavaScriptCore and Wasm\n- **V8** Fixed Wasm OMG inlined stack-origin lookup skipping deeper frames, improving stack accuracy in optimized code. [commit 317800@main](https://commits.webkit.org/317800@main)\n- **V8** Dropped shared Baseline JIT code eagerly during `Heap::deleteAllUnlinkedCodeBlocks`, tightening memory reclamation. [commit 317793@main](https://commits.webkit.org/317793@main)\n- **V8** Tuned JSC tier-up by skewing OMG call counts for small functions, targeting better optimization behavior. [commit 317759@main](https://commits.webkit.org/317759@main)\n- **V8** Took the BMP fast path in YARR `tryReadUnicodeChar` for any non-surrogate code point, shaving regex parsing overhead. [commit 317749@main](https://commits.webkit.org/317749@main)\n\n### Rendering and CSS\n- **Rendering** Switched remaining EvaluationTimeZoom grid and table properties to unzoomed lengths, reducing zoom math inconsistencies. [commit 317807@main](https://commits.webkit.org/317807@main)\n- **Rendering** Fixed list marker glyph painting being a pixel off from equivalent inline text, cleaning up CSS list rendering fidelity. [commit 317789@main](https://commits.webkit.org/317789@main)\n- **Rendering** Fixed incorrect intrinsic width contribution for orthogonal block children in block layout under writing modes. [commit 317781@main](https://commits.webkit.org/317781@main)\n- **Web Platform** Added `corner-shape` superellipse tests, expanding coverage for newer CSS corner geometry. [commit 317794@main](https://commits.webkit.org/317794@main)\n- **Refactor** Added `Style::URL::fragment()` to unify same-document fragment extraction. [commit 317792@main](https://commits.webkit.org/317792@main)\n- **Refactor** Removed unused type aliases in `StylePrimitiveNumericTypes.h`. [commit 317790@main](https://commits.webkit.org/317790@main)\n- **Refactor** Added `FloatRect::edges()` to expose the four rect edges as directed segments. [commit 317739@main](https://commits.webkit.org/317739@main)\n\n### Flexbox and layout internals\n- **Refactor** Replaced RenderFlexibleBox per-phase booleans with a monotonic `FlexLayoutState`, simplifying layout state tracking. [commit 317788@main](https://commits.webkit.org/317788@main)\n- **Refactor** Dropped the `RenderFlexibleBox` argument from FlexFormattingUtils per-item static helpers. [commit 317776@main](https://commits.webkit.org/317776@main)\n- **Refactor** Passed `FlexLayoutItem` instead of `RenderBox` to FlexFormattingContext-only utilities, narrowing interfaces. [commit 317753@main](https://commits.webkit.org/317753@main)\n- **Refactor** Reduced FlexFormattingContext's direct dependency on `RenderFlexibleBox`, continuing the cleanup of layout layering. [commit 317740@main](https://commits.webkit.org/317740@main)\n\n### Networking, fetch, and process plumbing\n- **Networking** Made FormData upload able to dereference its stream from an identifier in the networking process, fixing a cross-process upload path. [commit 317791@main](https://commits.webkit.org/317791@main)\n- **UI** Fixed a Site Isolation test around querying frame state after navigation. [commit 317786@main](https://commits.webkit.org/317786@main)\n- **UI** Fixed a crash in `WebPageProxy::sendScrollUpdateForNode()` seen while running scrolling WPTs. [commit 317785@main](https://commits.webkit.org/317785@main)\n- **UI** Re-landed asynchronous AudioSession activation for site isolation work. [commit 317782@main](https://commits.webkit.org/317782@main)\n- **UI** Fixed `WebAutomationSession::willShowJavaScriptDialog()` so the wheel-flush block runs in the right async context. [commit 317770@main](https://commits.webkit.org/317770@main)\n- **UI** Fixed WebAutomation mouse simulation sending two `mousedown` events and no `mouseup` for a single click. [commit 317763@main](https://commits.webkit.org/317763@main)\n- **DevTools** Added a regression test for clearing the Console across frame targets under site isolation. [commit 317743@main](https://commits.webkit.org/317743@main)\n- **Security** Stopped `BidiBrowsingContextAgent::getNextTree()` from capturing a raw `this` pointer in a lambda. [commit 317737@main](https://commits.webkit.org/317737@main)\n\n### Media, WebRTC, and capture\n- **Media** Tore down GStreamer media players when media elements move outside the viewport, which should cut wasted playback resources. [commit 317766@main](https://commits.webkit.org/317766@main)\n- **Media** Fixed iOS route activation so media does not incorrectly play locally when a `MediaDeviceRoute` activates just before playback. [commit 317764@main](https://commits.webkit.org/317764@main)\n- **Media** Merged identical H.264 and H.265 branches in WebRTC decode capability override logic, reducing duplication. [commit 317754@main](https://commits.webkit.org/317754@main)\n- **Media** Fixed a CFString leak in `CoreAudioCaptureDevice::getDeviceInfo()` when the data source name is empty. [commit 317780@main](https://commits.webkit.org/317780@main)\n- **Refactor** Removed dead code in `isAllowedRequiredConstraintForDeviceSelection`. [commit 317779@main](https://commits.webkit.org/317779@main)\n- **Media** Honored MP4 edit lists in GStreamer MSE playback, improving timeline correctness. [commit 251332@main](https://commits.webkit.org/251332@main)\n\n### UI, editing, text, and platform behavior\n- **UI** Made AppKit scrolling accelerate on multiple quick swipes in the same direction, improving gesture feel. [commit 317761@main](https://commits.webkit.org/317761@main)\n- **UI** Fixed `WKWebExtensionContext loadBackgroundContentWithCompletionHandler` calling its completion handler twice on error. [commit 317757@main](https://commits.webkit.org/317757@main)\n- **UI** Fixed `WKProcessPool _requestWebProcessTermination:` only terminating the first process in the pool. [commit 317756@main](https://commits.webkit.org/317756@main)\n- **UI** Fixed Recovery Web Browser sometimes hiding visible content. [commit 317747@main](https://commits.webkit.org/317747@main)\n- **UI** Added process ID labels next to frame process border indicators, making multi-process debugging easier. [commit 317746@main](https://commits.webkit.org/317746@main)\n- **UI** Kept selection behavior RTL after translating text from an RTL language, fixing a subtle editing mismatch. [commit 317745@main](https://commits.webkit.org/317745@main)\n- **Mobile** Marked iOS context menu preview source elements with `isContextMenuSource` for UIIntelligenceSupport. [commit 317744@main](https://commits.webkit.org/317744@main)\n- **Mobile** Fixed an iOS Find in Page crash. [commit 317735@main](https://commits.webkit.org/317735@main)\n- **UI** Fixed WK1 substitute-data state so `m_originalSubstituteDataWasValid` no longer reads moved-from data. [commit 317750@main](https://commits.webkit.org/317750@main)\n\n### Accessibility and canvas\n- **A11y** Fixed AX line APIs mishandling the trailing blank line in a textarea ending with a newline. [commit 317784@main](https://commits.webkit.org/317784@main)\n- **A11y** Fixed a dynamic label association regression when a target control's `id` changes. [commit 317751@main](https://commits.webkit.org/317751@main)\n- **Rendering** Made `CanvasRenderingContext2DBase` always unwind its state stack on destruction, preventing stale canvas state leakage. [commit 317787@main](https://commits.webkit.org/317787@main)\n\n### Build, infrastructure, and ports\n- **Build** Fixed the build after [commit 317761@main](https://commits.webkit.org/317761@main). [commit 317808@main](https://commits.webkit.org/317808@main)\n- **Build** Made JavaScriptCore a real Clang module for the Mac Swift importer. [commit 317797@main](https://commits.webkit.org/317797@main)\n- **Build** Centralized code signing and added missing entitlements in CMake builds. [commit 317795@main](https://commits.webkit.org/317795@main)\n- **Build** Fixed Windows undefined symbols in `WCScene` after a regression. [commit 317778@main](https://commits.webkit.org/317778@main)\n- **Build** Replaced Linux JSCOnly bots with a WPE JSC tester in WKCI. [commit 317773@main](https://commits.webkit.org/317773@main)\n- **Build** Reworked WKCI bot coverage by removing some older Linux and ARM32 perf bots and adding more WPE ARM64 stable-branch testing. [commit 317772@main](https://commits.webkit.org/317772@main)\n- **Build** Exposed `USE_LIBSECRET` as a WPE option. [commit 317752@main](https://commits.webkit.org/317752@main)\n- **Refactor** Updated safer C++ expectations. [commit 317809@main](https://commits.webkit.org/317809@main)\n- **GPU** Updated Skia to 2026-06-18. [commit 317806@main](https://commits.webkit.org/317806@main)\n- **Build** Fixed `webkitpy` `ports_to_forward()` checking the wrong websocket server field. [commit 317798@main](https://commits.webkit.org/317798@main)\n- **Build** Relaxed GFC integration alignment checks slightly. [commit 317783@main](https://commits.webkit.org/317783@main)\n\n### Tests and gardening\n- **Web Platform** Updated popover WPT state to match upstream. [commit 317799@main](https://commits.webkit.org/317799@main)\n- **Web Platform** Corrected some `popover=hint` test failures. [commit 317796@main](https://commits.webkit.org/317796@main)\n- **Build** Changed EWS so PR authors are not blamed for pre-existing flaky layout test failures. [commit 317804@main](https://commits.webkit.org/317804@main)\n- **Build** Marked a constant-failure PasteImage API test on macOS as a new test issue. [commit 317803@main](https://commits.webkit.org/317803@main)\n- **Build** Reduced excessive logging that was breaking iOS parallel-safety runs. [commit 317801@main](https://commits.webkit.org/317801@main)\n- **Build** Added GTK and WPE test gardening updates. [commit 317777@main](https://commits.webkit.org/317777@main)\n- **Build** Marked `model-element-immersive-state-consistency.html` as flaky. [commit 317775@main](https://commits.webkit.org/317775@main)\n- **UI** Fixed a GLib wheel-event assertion crash regression. [commit 317769@main](https://commits.webkit.org/317769@main)\n- **Refactor** Removed an unused `WebXRView.h` include from `WebXRSession`. [commit 317762@main](https://commits.webkit.org/317762@main)\n- **Build** Marked a site-isolation media-source test as a permanent timeout. [commit 317760@main](https://commits.webkit.org/317760@main)\n- **UI** Fixed a StabilityTracer crash in `WebPageProxy::activityStateDidChange`. [commit 317758@main](https://commits.webkit.org/317758@main)\n- **Security** Removed an incorrect `NODELETE` annotation from `cbor/CBORValue.h`. [commit 317738@main](https://commits.webkit.org/317738@main)\n\n## Reverts \u0026 Reapplies\n- **Media** Re-landed asynchronous AudioSession activation for site isolation after earlier trouble. [commit 317782@main](https://commits.webkit.org/317782@main)",
  "repo": "webkit",
  "repoDisplay": "WebKit",
  "rollGroups": [
    {
      "name": "Unreviewed",
      "count": 4
    }
  ],
  "since": "2026-07-23",
  "totals": {
    "commits": 76,
    "features": 72,
    "rolls": 4
  },
  "until": "2026-07-23"
}