{
  "commits": {
    "317924@main": {
      "author": "Richard Robinson",
      "avatar": "https://www.gravatar.com/avatar/a0d2f862985ed0fd47887be66f5a3e4f?d=identicon\u0026s=64",
      "cl": "317924@main",
      "clUrl": "https://commits.webkit.org/317924@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320280\nrdar://183197290\n\nReviewed by Abrar Rahman Protyasha.\n\nRe-baseline this test since the font/metrics have slightly become mismatched.\n\n* LayoutTests/http/tests/quicklook/resources/secure-document-with-subresources-expected/index.css:\n(.p1):\n(.p2):\n(.it2):\n(.it3):\n* LayoutTests/platform/ios/TestExpectations:\n\nCanonical link: https://commits.webkit.org/317924@main",
      "email": "richard_robinson2@apple.com",
      "hash": "473ae99c75c89345816b79cae4528204dc880d9f",
      "subject": "Re-baseline the `http/tests/quicklook/secure-document-with-subresources.html` test expectation"
    },
    "317925@main": {
      "author": "Ahmad Saleem",
      "avatar": "https://www.gravatar.com/avatar/38445f84fe28aa19bfeb1f59f6559532?d=identicon\u0026s=64",
      "cl": "317925@main",
      "clUrl": "https://commits.webkit.org/317925@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320272\nrdar://183191094\n\nReviewed by Patrick Griffis.\n\nlint_test_expectations.py compared the Port object itself against the\nstrings 'gtk' and 'wpe' instead of comparing port_to_lint.port_name.\nPort has no __eq__, so the comparison was always False and the\nglib-specific TestExpectations override (LayoutTests/platform/glib/\nTestExpectations) was silently never added for either port.\n\n* Tools/Scripts/webkitpy/layout_tests/lint_test_expectations.py:\n(lint): Compare port_to_lint.port_name instead of port_to_lint.\n* Tools/Scripts/webkitpy/layout_tests/lint_test_expectations_unittest.py:\n(FakePort.__init__): Add port_name and _options so tests can exercise\nthe glib-expectations branch.\n(LintTest.test_glib_additional_expectations): Added. Verifies gtk and\nwpe ports get the glib TestExpectations override and other ports don't.\n\nCanonical link: https://commits.webkit.org/317925@main",
      "email": "ahmad.saleem792+github@gmail.com",
      "hash": "f72201f17442df3a97c0b5edc91b14e6157a51b3",
      "subject": "lint-test-expectations never applies glib-specific TestExpectations override for GTK/WPE ports"
    },
    "317926@main": {
      "author": "Alan Baradlay",
      "avatar": "https://www.gravatar.com/avatar/788d66417db806c567552cfa1ae89f77?d=identicon\u0026s=64",
      "cl": "317926@main",
      "clUrl": "https://commits.webkit.org/317926@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320252\n\nReviewed by Antti Koivisto.\n\nFlexFormattingContext still made a number of non-trivial calls directly on the flex item's renderer\n-- margin trimming, auto-margin resolution, min/max constraining, and percentage-height /\nlogical-size computation. Move them behind FlexIntegrationUtils so the formatting context reaches\nthe flex item's renderer only through cheap getters.\n\nMoved to FlexIntegrationUtils (each takes a FlexLayoutItem and derives the container's flow /\nwriting mode from flexBox() rather than from the formatting context's constraints):\n\n- updateAutoMarginsInMainAxis / updateAutoMarginsInCrossAxis (renderer margin mutations).\n- trimMainAxisMarginStart / trimMainAxisMarginEnd / trimCrossAxisMarginStart / trimCrossAxisMarginEnd.\n- constrainFlexItemLogicalHeightByMinMax / constrainFlexItemLogicalWidthByMinMax (the width helper\n  supplies flexBox() as the containing block).\n- computePercentageLogicalHeightForFlexItem, computeLogicalHeightUsingForFlexItem and\n  computeLogicalWidthUsingForFlexItem (templated, with explicit instantiations for the size types\n  the formatting context resolves).\n\nThe formatting context keeps the flex-algorithm decisions: it still gates margin trimming on\nFlexFormattingUtils::shouldTrim*, and computes the stretch / cross-size-definiteness booleans it\npasses into the intrinsic-size helpers.\n\nDrive-by cleanup in the same functions: dropped the redundant out-of-flow-positioned ASSERTs and\nthe CheckedRef renderer locals that existed only to feed the moved calls, and converted the\nisRenderTable() / isRenderReplaced() virtual checks to is\u003cRenderTable\u003e / is\u003cRenderReplaced\u003e (adding\nthe corresponding includes).\n\nNo change in behavior.\n\n* Source/WebCore/layout/formattingContexts/flex/FlexFormattingContext.cpp:\n(WebCore::FlexFormattingContext::computeFlexLines):\n(WebCore::FlexFormattingContext::trimCrossAxisMarginsForFlexItems):\n(WebCore::FlexFormattingContext::handleCrossAxisAlignmentForFlexItems):\n(WebCore::FlexFormattingContext::performBaselineAlignment):\n(WebCore::FlexFormattingContext::placeFlexItems):\n(WebCore::FlexFormattingContext::computeContentBasedMinMainSize):\n(WebCore::FlexFormattingContext::computeMainSizeFromAspectRatioUsing):\n(WebCore::FlexFormattingContext::computeUsedNonAutoMinMainSize):\n(WebCore::FlexFormattingContext::flexItemCrossSizeIsDefinite):\n(WebCore::FlexFormattingContext::applyStretchAlignmentToFlexItem):\n(WebCore::FlexFormattingContext::applyStretchMinMaxCrossSize):\n(WebCore::FlexFormattingContext::updateAutoMarginsInMainAxis): Deleted.\n(WebCore::FlexFormattingContext::updateAutoMarginsInCrossAxis): Deleted.\n(WebCore::FlexFormattingContext::trimMainAxisMarginStart): Deleted.\n(WebCore::FlexFormattingContext::trimMainAxisMarginEnd): Deleted.\n(WebCore::FlexFormattingContext::trimCrossAxisMarginStart): Deleted.\n(WebCore::FlexFormattingContext::trimCrossAxisMarginEnd): Deleted.\n* Source/WebCore/layout/formattingContexts/flex/FlexFormattingContext.h:\n* Source/WebCore/layout/integration/flex/FlexIntegrationUtils.cpp:\n(WebCore::LayoutIntegration::FlexIntegrationUtils::updateAutoMarginsInMainAxis):\n(WebCore::LayoutIntegration::FlexIntegrationUtils::updateAutoMarginsInCrossAxis):\n(WebCore::LayoutIntegration::FlexIntegrationUtils::trimMainAxisMarginStart):\n(WebCore::LayoutIntegration::FlexIntegrationUtils::trimMainAxisMarginEnd):\n(WebCore::LayoutIntegration::FlexIntegrationUtils::trimCrossAxisMarginStart):\n(WebCore::LayoutIntegration::FlexIntegrationUtils::trimCrossAxisMarginEnd):\n(WebCore::LayoutIntegration::FlexIntegrationUtils::constrainFlexItemLogicalHeightByMinMax):\n(WebCore::LayoutIntegration::FlexIntegrationUtils::constrainFlexItemLogicalWidthByMinMax):\n(WebCore::LayoutIntegration::FlexIntegrationUtils::computePercentageLogicalHeightForFlexItem):\n(WebCore::LayoutIntegration::FlexIntegrationUtils::computeLogicalHeightUsingForFlexItem):\n(WebCore::LayoutIntegration::FlexIntegrationUtils::computeLogicalWidthUsingForFlexItem):\n* Source/WebCore/layout/integration/flex/FlexIntegrationUtils.h:\n\nCanonical link: https://commits.webkit.org/317926@main",
      "email": "zalan@apple.com",
      "hash": "ca48ed48ca69cb0783146155be73b09906cedd41",
      "subject": "[cleanup] Move the flex item's remaining margin, min/max and size operations into FlexIntegrationUtils"
    },
    "317927@main": {
      "author": "Alan Baradlay",
      "avatar": "https://www.gravatar.com/avatar/788d66417db806c567552cfa1ae89f77?d=identicon\u0026s=64",
      "cl": "317927@main",
      "clUrl": "https://commits.webkit.org/317927@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320254\n\nReviewed by Antti Koivisto.\n\nRenderFlexibleBox carried thin flex-item query wrappers -- mainAxisIsFlexItemInlineAxis,\nflexBasisForFlexItem, alignmentForFlexItem, hasDefiniteCrossSizeForFlexItem -- that only forwarded\nto the corresponding FlexFormattingUtils statics, plus useContentBasedMinimumBlockSize which\ncomposed two of them. Their only callers are render-side (RenderBox / RenderBlock), which already\npull in FlexFormattingUtils.h transitively through RenderFlexibleBox.h, so the wrappers were\nredundant indirection.\n\nDrop the four proxies from RenderFlexibleBox and move the useContentBasedMinimumBlockSize\ncomposition to a FlexFormattingUtils static. The statics take the flex item and derive the flex\ncontainer from its parent, so the call sites pass the item directly; isFlexItem() already implies a\nRenderFlexibleBox parent, so RenderBox loses two now-redundant downcast guards. RenderBox.cpp and\nRenderBlock.cpp gain a direct FlexFormattingUtils.h include.\n\nNo change in behavior.\n\n* Source/WebCore/rendering/RenderFlexibleBox.h:\n* Source/WebCore/rendering/RenderFlexibleBox.cpp:\n(WebCore::RenderFlexibleBox::mainAxisIsFlexItemInlineAxis): Deleted.\n(WebCore::RenderFlexibleBox::flexBasisForFlexItem): Deleted.\n(WebCore::RenderFlexibleBox::alignmentForFlexItem): Deleted.\n(WebCore::RenderFlexibleBox::hasDefiniteCrossSizeForFlexItem): Deleted.\n(WebCore::RenderFlexibleBox::useContentBasedMinimumBlockSize): Deleted.\n* Source/WebCore/layout/formattingContexts/flex/FlexFormattingUtils.h:\n* Source/WebCore/layout/formattingContexts/flex/FlexFormattingUtils.cpp:\n(WebCore::FlexFormattingUtils::useContentBasedMinimumBlockSize):\n* Source/WebCore/rendering/RenderBox.cpp:\n(WebCore::RenderBox::isBlockSizeResolvableForStretch):\n(WebCore::RenderBox::computeContentAndScrollbarLogicalHeightUsing):\n* Source/WebCore/rendering/RenderBlock.cpp:\n(WebCore::RenderBlock::hasDefiniteLogicalHeightForPercentageResolutionFromStyle):\n\nCanonical link: https://commits.webkit.org/317927@main",
      "email": "zalan@apple.com",
      "hash": "0855cc434da95b09363212b8ce5f9d9b5857afae",
      "subject": "[cleanup] Call FlexFormattingUtils statics directly instead of RenderFlexibleBox's flex-item query wrappers"
    },
    "317928@main": {
      "author": "Ithril",
      "avatar": "https://www.gravatar.com/avatar/fe2334cb59663d7d45fdcb65e19cc89e?d=identicon\u0026s=64",
      "cl": "317928@main",
      "clUrl": "https://commits.webkit.org/317928@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319814\n\nReviewed by Yijia Huang.\n\nResolve ordinary supported Chinese and Dangi related-year and ordinal numeric-month field resolution without relying on ICU extended-year identity. Keep year/era/eraYear and monthCode/ordinal-month consistency, with({year}), Duration relativeTo, Hebrew month behavior, and PlainMonthDay required-field ordering consistent.\n\nTests: JSTests/stress/temporal-lunisolar-ordinal-month.js\n\nTests: jsc --useTemporal=1 JSTests/stress/temporal-lunisolar-ordinal-month.js\n\nTests: readable focused Temporal field-resolution, Duration, Hebrew, PlainMonthDay ordering, and arithmetic tests\nCanonical link: https://commits.webkit.org/317928@main",
      "email": "ithril.laydec@gmail.com",
      "hash": "76de9fe5aa14384920ede9b66991607d8a9e29b3",
      "subject": "[JSC][Temporal] Resolve supported Chinese and Dangi field resolution"
    },
    "317929@main": {
      "author": "Alan Baradlay",
      "avatar": "https://www.gravatar.com/avatar/788d66417db806c567552cfa1ae89f77?d=identicon\u0026s=64",
      "cl": "317929@main",
      "clUrl": "https://commits.webkit.org/317929@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320283\n\nReviewed by Antti Koivisto.\n\nA few flex-item reads were left in FlexFormattingContext, all going straight to the renderer for\nvalues the formatting context either already has or can get through the utils.\n\ncomputeFlexBaseAndHypotheticalMainSizes re-reads an orthogonal item's main-axis margin after\nflexBaseSizeForFlexItem has laid the item out (the item's block-direction margins are only resolved\nat that point), duplicating the horizontal/verticalMarginExtent selection that FlexFormattingUtils\nalready does. That helper had two behaviours behind one name though: for a clean item it returned\nthe resolved physical extent, but for a dirty one it recomputed the margins in the container's\ninline/block directions, which only line up with the main/cross axes in a horizontal writing mode.\nSplit it in two -- usedMainAxisMarginExtentForFlexItem returns what layout resolved, and\nresolveMainAxisMarginExtentForFlexItem resolves first for the one caller that needs that,\nstaticMainAxisPositionForPositionedFlexItem, which computes an out-of-flow item's static position\noutside of flex layout. computeFlexBaseAndHypotheticalMainSizes wants the former.\n\nremoveMarginEndFromFlexSizes computes the item's main-axis end margin to subtract it from the\nrunning flex base and hypothetical main sizes -- the same value that\nFlexIntegrationUtils::trimMainAxisMarginEnd subtracts from the item's cached mainAxisMargin, and the\ntwo are always called together. Add FlexFormattingUtils::mainAxisMarginEndForFlexItem (a static form\ntaking the container, plus the usual instance overload, matching crossAxisMarginExtentForFlexItem)\nand have both call sites use it.\n\ncomputeMainSizeFromAspectRatioUsing recomputes the item's main-axis border/padding from the renderer\neven though FlexLayoutItem already caches it (with the same expression), and the same function\nalready uses the cached cross-axis value a few lines up. Unlike margins, border/padding is not\nresolved during layout, so this is simply a duplicate read: use the cached\nFlexLayoutItem::mainAxisBorderAndPadding instead.\n\nWith this the formatting context reaches a flex item's renderer only through the FlexLayoutItem\nconstructor's one-time snapshot, cheap getters and asserts.\n\nNo change in behavior.\n\n* Source/WebCore/layout/formattingContexts/flex/FlexFormattingContext.cpp:\n(WebCore::FlexFormattingContext::computeFlexBaseAndHypotheticalMainSizes):\n(WebCore::FlexFormattingContext::computeMainSizeFromAspectRatioUsing):\n(WebCore::FlexFormattingContext::removeMarginEndFromFlexSizes):\n* Source/WebCore/layout/formattingContexts/flex/FlexFormattingUtils.h:\n* Source/WebCore/layout/formattingContexts/flex/FlexFormattingUtils.cpp:\n(WebCore::FlexFormattingUtils::resolveMainAxisMarginExtentForFlexItem):\n(WebCore::FlexFormattingUtils::usedMainAxisMarginExtentForFlexItem):\n(WebCore::FlexFormattingUtils::mainAxisMarginEndForFlexItem):\n(WebCore::FlexFormattingUtils::mainAxisMarginExtentForFlexItem): Deleted.\n* Source/WebCore/layout/integration/flex/FlexIntegrationUtils.cpp:\n(WebCore::LayoutIntegration::FlexIntegrationUtils::trimMainAxisMarginEnd):\n* Source/WebCore/layout/integration/flex/LayoutIntegrationFlexLayout.cpp:\n(WebCore::LayoutIntegration::FlexLayout::staticMainAxisPositionForPositionedFlexItem):\n\nCanonical link: https://commits.webkit.org/317929@main",
      "email": "zalan@apple.com",
      "hash": "c6051ef7a0eaadf86ce7cfbf026e8f4843dd6256",
      "subject": "[cleanup] Stop FlexFormattingContext from reading flex-item margins and border/padding off the renderer"
    },
    "317930@main": {
      "author": "Sosuke Suzuki",
      "avatar": "https://www.gravatar.com/avatar/e63b87350fe19bdd9a30c7234eda45af?d=identicon\u0026s=64",
      "cl": "317930@main",
      "clUrl": "https://commits.webkit.org/317930@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320088\n\nReviewed by Yusuke Suzuki.\n\ntryReadUnicodeCharImpl loads 32 bits up front so that it can detect a\nsurrogate pair, and therefore checks that both code units are in bounds before\nloading anything.\n\nSurrogate pairs are rare compared to BMP code points, though, and deciding\nwhether a code unit is a BMP code point on its own does not need 32 bits. Load\nthe first code unit alone and test its top five bits: U+D800-U+DFFF are exactly\nthe code units whose top five bits are 0b11011. If it is not a surrogate, it is\nthe code point, so jump to done right there. Only if it is a surrogate do we\ncheck the bounds, load 32 bits, and either decode a proper surrogate pair or\nfall into the slow cases.\n\nKeeping the bit 15 test from 317749@main as the fast-path branch would take\nfewer instructions, but that branch depends on the character being read and\nmispredicts badly once the subject mixes code units below and above U+8000.\nThe surrogate test costs one more instruction but only changes direction when\na surrogate actually appears.\n\n                                            Baseline           Patched\n\nregexp-unicode-bmp-hangul-and-fullwidth 43.9718+-0.9491    34.3181+-2.8952   definitely 1.2813x faster\nregexp-unicode-bmp-above-latin          45.6190+-0.7442    35.8214+-2.6717   definitely 1.2735x faster\nregexp-u-global-es6                     31.8327+-0.2765    30.5326+-0.3346   definitely 1.0426x faster\nregexp-unicode-latin-before-surrogate   55.0738+-1.6395    52.8071+-3.0785   might be 1.0429x faster\nregexp-unicode-surrogate-pairs          45.9197+-1.5007    46.1131+-1.7645   neutral\n\n* Source/JavaScriptCore/yarr/YarrJIT.cpp:\n(JSC::Yarr::tryReadUnicodeCharImpl):\n\nCanonical link: https://commits.webkit.org/317930@main",
      "email": "sosuke@bun.sh",
      "hash": "0f79baf7bc085f19e03dcbce2800870afb57eeb7",
      "subject": "[YARR] `tryReadUnicodeChar` should read the first code unit before testing whether a second one is needed"
    },
    "317931@main": {
      "author": "Sosuke Suzuki",
      "avatar": "https://www.gravatar.com/avatar/e63b87350fe19bdd9a30c7234eda45af?d=identicon\u0026s=64",
      "cl": "317931@main",
      "clUrl": "https://commits.webkit.org/317931@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320151\n\nReviewed by Yusuke Suzuki.\n\nJSModuleRecord kept copies of the module's declared and lexical VariableEnvironments alive for\nthe lifetime of the record, but the lexical one is only read by ModuleAnalyzer (which already receives\nthe ModuleProgramNode) and the declared one only by InitializeEnvironment's var initialization loop.\nRead the former from the node and store the latter in UnlinkedModuleProgramCodeBlock, as\nUnlinkedProgramCodeBlock already does for scripts, so it lives and dies with the unlinked code.\n\nThis shrinks JSModuleRecord from 512 to 320 bytes.\n\n* Source/JavaScriptCore/bytecode/UnlinkedModuleProgramCodeBlock.h:\n* Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp:\n(JSC::BytecodeGenerator::BytecodeGenerator):\n* Source/JavaScriptCore/parser/ModuleAnalyzer.cpp:\n(JSC::ModuleAnalyzer::ModuleAnalyzer):\n(JSC::ModuleAnalyzer::analyze):\n* Source/JavaScriptCore/parser/ModuleAnalyzer.h:\n* Source/JavaScriptCore/runtime/CachedTypes.cpp:\n(JSC::CachedModuleCodeBlock::encode):\n(JSC::CachedModuleCodeBlock::decode const):\n* Source/JavaScriptCore/runtime/Completion.cpp:\n(JSC::checkModuleSyntax):\n* Source/JavaScriptCore/runtime/CyclicModuleRecord.cpp:\n(JSC::CyclicModuleRecord::initializeEnvironment):\n* Source/JavaScriptCore/runtime/JSModuleLoader.cpp:\n(JSC::JSModuleLoader::makeModule):\n* Source/JavaScriptCore/runtime/JSModuleRecord.cpp:\n(JSC::JSModuleRecord::create):\n(JSC::JSModuleRecord::JSModuleRecord):\n* Source/JavaScriptCore/runtime/JSModuleRecord.h:\n\nCanonical link: https://commits.webkit.org/317931@main",
      "email": "sosuke@bun.sh",
      "hash": "9cbcbb9905590a2f45487a466d92e348e64250e2",
      "subject": "[JSC] `JSModuleRecord` should not retain the parser's `VariableEnvironments`"
    },
    "317932@main": {
      "author": "Ahmad Saleem",
      "avatar": "https://www.gravatar.com/avatar/38445f84fe28aa19bfeb1f59f6559532?d=identicon\u0026s=64",
      "cl": "317932@main",
      "clUrl": "https://commits.webkit.org/317932@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320263\nrdar://183187277\n\nReviewed by Wenson Hsieh.\n\ncollectDictationTextAlternatives() and shouldRegisterInsertionUndoGroup()\nboth unconditionally read attributes at index 0 of the NSAttributedString\npassed to WebViewImpl::insertText(id, NSRange), without checking the\nstring's length first. An empty NSMutableAttributedString raises\nNSRangeException for such an access, so passing a zero-length attributed\nstring (e.g. from an input method committing a composition down to nothing,\nor from the Character Viewer) crashed. Guard both functions with a length\ncheck.\n\nNote that an empty immutable NSAttributedString happens not to raise, so\nthe new tests use NSMutableAttributedString to exercise the crashing path.\n\nThe equivalent WebHTMLView insertText: path in WebKitLegacy has a third\nunguarded index-0 read of NSTextInputReplacementRangeAttributeName that\nthis change does not address.\n\n* Source/WebCore/editing/mac/TextAlternativeWithRange.mm:\n(WebCore::collectDictationTextAlternatives):\n* Source/WebCore/editing/mac/TextUndoInsertionMarkupMac.mm:\n(WebCore::shouldRegisterInsertionUndoGroup):\n* Tools/TestWebKitAPI/Tests/WebKit/WKWebView/mac/WKWebViewMacEditingTests.mm:\n(TestWebKitAPI::TEST(WKWebViewMacEditingTests, InsertEmptyAttributedStringDoesNotCrash)):\n(TestWebKitAPI::TEST(WKWebViewMacEditingTests, InsertEmptyAttributedStringWithAttributesDoesNotCrash)):\n\nCanonical link: https://commits.webkit.org/317932@main",
      "email": "ahmad.saleem792+github@gmail.com",
      "hash": "63d08dbe5305b4f63a3d7aad95bb207dd59b8ee6",
      "subject": "Potential crash under WebViewImpl::insertText() with a zero-length attributed string"
    },
    "317933@main": {
      "author": "Ahmad Saleem",
      "avatar": "https://www.gravatar.com/avatar/38445f84fe28aa19bfeb1f59f6559532?d=identicon\u0026s=64",
      "cl": "317933@main",
      "clUrl": "https://commits.webkit.org/317933@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=316063\nrdar://178491868\n\nReviewed by Alan Baradlay.\n\nThis patch aligns WebKit with Blink / Chromium.\n\nRenderElement::getLeadingCorner() computed the leading corner of an\ninline element's anchor rect by taking the x from the text's\nlinesBoundingBox() but the y from the line box's contentLogicalTop().\nWhen the inline shares a line with a much taller sibling (e.g. a\n100vh image), the line box is inflated and its top sits far above the\nbaseline-aligned text, so the leading corner pointed at the top of the\nline box rather than at the text itself. This made scrollIntoView()\nscroll to the wrong position, since getTrailingCorner() already uses\nthe text's linesBoundingBox().\n\nTake both x and y from the text's linesBoundingBox(), mirroring\ngetTrailingCorner(), so the anchor rect is the element's own bounding\nrect. For normal lines linesBoundingBox().y() equals\ncontentLogicalTop(), so only the tall-line case changes behavior.\n\n* LayoutTests/TestExpectations: Remove [ Failure ] expectations\n* Source/WebCore/rendering/RenderElement.cpp:\n(WebCore::RenderElement::getLeadingCorner const):\n\n\u003e Platform Specific Updates:\n* LayoutTests/platform/glib/fast/scrolling/scroll-to-anchor-zoomed-header-expected.txt: Removed. (Now matches pass expectation)\n* LayoutTests/platform/ios/fast/dynamic/anchor-lock-expected.txt: Rebaselined\n* LayoutTests/platform/glib/fast/dynamic/anchor-lock-expected.txt: Ditto\n\nCanonical link: https://commits.webkit.org/317933@main",
      "email": "ahmad.saleem792+github@gmail.com",
      "hash": "01aaa3e0be0c606e0e276f9b5266bc1915a86277",
      "subject": "scrollIntoView() on an inline element sharing a tall line scrolls to the line box top instead of the element's bounding rect"
    },
    "317934@main": {
      "author": "David Kilzer",
      "avatar": "https://www.gravatar.com/avatar/e228ffc7a792e70bf2d160563c18dcc6?d=identicon\u0026s=64",
      "cl": "317934@main",
      "clUrl": "https://commits.webkit.org/317934@main",
      "description": "\u003chttps://bugs.webkit.org/show_bug.cgi?id=320290\u003e\n\u003crdar://183222655\u003e\n\nReviewed by Abrar Rahman Protyasha.\n\nSeveral call sites delete matching entries from a `HashMap`, `HashSet`,\nor `ListHashSet` by first collecting the matching elements or keys into\na temporary `Vector`, then looping over that `Vector` to remove each one\nfrom the container.  The temporary storage and the second traversal are\nunnecessary: WTF containers provide `removeIf(predicate)`, which removes\nevery matching entry in a single pass.\n\nCollapse each such loop into a `removeIf()` call.  In every converted\ncase the predicate depends only on the individual element, uses\nloop-invariant captures, and does not mutate the container\nmid-iteration, so the result is identical to the collect-then-remove\nform.\n\nNo new tests since no change in behavior.\n\n* Source/WebCore/PAL/pal/text/TextEncodingRegistry.cpp:\n(PAL::pruneBlocklistedCodecs):\n* Source/WebCore/platform/graphics/SystemFallbackFontCache.cpp:\n(WebCore::SystemFallbackFontCache::remove):\n* Source/WebCore/platform/graphics/cg/CGSubimageCacheWithTimer.cpp:\n(WebCore::CGSubimageCacheWithTimer::clearImageAndSubimages):\n* Source/WebCore/platform/graphics/cocoa/FontCacheCoreText.cpp:\n(WebCore::FontCache::platformPurgeInactiveFontData):\n* Source/WebCore/platform/ios/LegacyTileGrid.mm:\n(WebCore::LegacyTileGrid::dropTilesBetweenRects):\n(WebCore::LegacyTileGrid::dropInvalidTiles):\n* Source/WebCore/platform/network/CredentialStorage.cpp:\n(WebCore::CredentialStorage::removeCredentialsWithOrigin):\n* Source/WebCore/rendering/TextAutoSizing.cpp:\n(WebCore::TextAutoSizingValue::adjustTextNodeSizes):\n* Source/WebKit/UIProcess/API/glib/IconDatabase.cpp:\n(WebKit::IconDatabase::clearLoadedIconsTimerFired):\n* Source/WebKit/UIProcess/WebNavigationState.cpp:\n(WebKit::WebNavigationState::clearNavigationsFromProcess):\n* Source/WebKit/WebProcess/Plugins/PDF/UnifiedPDF/AsyncPDFRenderer.mm:\n(WebKit::AsyncPDFRenderer::willRemoveGrid):\n\nCanonical link: https://commits.webkit.org/317934@main",
      "email": "ddkilzer@apple.com",
      "hash": "41655c489e18c93c2bf0614173c3ac942fbf35fe",
      "subject": "Simplify remove-matching-entries loops by using WTF container removeIf()"
    },
    "317935@main": {
      "author": "David Kilzer",
      "avatar": "https://www.gravatar.com/avatar/e228ffc7a792e70bf2d160563c18dcc6?d=identicon\u0026s=64",
      "cl": "317935@main",
      "clUrl": "https://commits.webkit.org/317935@main",
      "description": "\u003chttps://bugs.webkit.org/show_bug.cgi?id=320306\u003e\n\u003crdar://183239080\u003e\n\nReviewed by Adrian Taylor.\n\nThe WebGPU implementation types are foreign reference types\n(`SWIFT_SHARED_REFERENCE`), but none of them declares how Swift should\ntreat the ownership of a returned value.  A stricter Swift toolchain\nrejects this: any function returning one of these types -- such as\n`WTF::Ref\u003cT\u003e::ptr()` or the `WebGPU::fromAPI()` overloads -- fails to\nimport because the compiler cannot infer whether the result is passed\nretained (+1) or unretained (+0).\n\nMark each WebGPU foreign reference type\n`SWIFT_RETURNED_AS_UNRETAINED_BY_DEFAULT`.  Like all normal WebKit\nref-counted types, they are returned +0, so a caller does not take\nownership of the returned reference.  This mirrors the annotation\nalready applied to other WebKit types in bug 310101 (309469@main),\nwhich the WebGPU types were missing.\n\nNo new tests since this change is not directly testable.\n\n* Source/WebGPU/WebGPU/Buffer.h:\n(WebGPU::Buffer):\n* Source/WebGPU/WebGPU/CommandBuffer.h:\n(WebGPU::CommandBuffer):\n* Source/WebGPU/WebGPU/CommandEncoder.h:\n(WebGPU::CommandEncoder):\n* Source/WebGPU/WebGPU/ComputePassEncoder.h:\n(WebGPU::ComputePassEncoder):\n* Source/WebGPU/WebGPU/Device.h:\n(WebGPU::Device):\n* Source/WebGPU/WebGPU/QuerySet.h:\n(WebGPU::QuerySet):\n* Source/WebGPU/WebGPU/Queue.h:\n(WebGPU::Queue):\n* Source/WebGPU/WebGPU/RenderPassEncoder.h:\n(WebGPU::RenderPassEncoder):\n* Source/WebGPU/WebGPU/Texture.h:\n(WebGPU::Texture):\n* Source/WebGPU/WebGPU/TextureView.h:\n(WebGPU::TextureView):\n\nCanonical link: https://commits.webkit.org/317935@main",
      "email": "ddkilzer@apple.com",
      "hash": "13a0a058dc59ba56b2cf5e98dad61ca86350fe8d",
      "subject": "[WebGPU] Swift build fails with \"cannot infer ownership of foreign reference value\" errors"
    },
    "317936@main": {
      "author": "Abrar Rahman Protyasha",
      "avatar": "https://www.gravatar.com/avatar/fce5b3c4e9f3c59a4873e08c9f03c3b1?d=identicon\u0026s=64",
      "cl": "317936@main",
      "clUrl": "https://commits.webkit.org/317936@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320295\nrdar://183165576\n\nReviewed by Richard Robinson.\n\nBefore 309541@main, mouse events were delivered to the HUD courtesy of a\npolling loop in WebViewImpl's mouse responder methods. Since we moved to\nAppKit-native dispatch in that method, the `-hitTest:` method became the\nrouting mechanism. Our `-hitTest:` implementation made one mistake,\nwhich was to completely shortcircuit AppKit hit testing for off-the-bar\nhits and return the underlying web view directly. We should have instead\ndelegated to AppKit's view hierarchy walk for said hit inquiries, which\nwe do so with this patch by returning `nil` instead of the web view.\n\nTest: TestWebKitAPI.UnifiedPDF.PDFHUDMultiplePluginsDoNotInterceptHitTesting\n\n* Source/WebKit/UIProcess/PDF/WKPDFHUDView.swift:\n(WKPDFHUDView.hitTest(_:)):\n* Tools/TestWebKitAPI/Tests/WebKit/WKWebView/UnifiedPDFTests.mm:\n(TestWebKitAPI::UNIFIED_PDF_TEST):\n\nCanonical link: https://commits.webkit.org/317936@main",
      "email": "a_protyasha@apple.com",
      "hash": "bb5b0c53252514e0bd1ed38e2f0f6ad2bebbb9c9",
      "subject": "REGRESSION(309541@main): Only one HUD responds to mouse clicks in web content with multiple embedded PDFs"
    },
    "317937@main": {
      "author": "Alan Baradlay",
      "avatar": "https://www.gravatar.com/avatar/788d66417db806c567552cfa1ae89f77?d=identicon\u0026s=64",
      "cl": "317937@main",
      "clUrl": "https://commits.webkit.org/317937@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320286\n\nReviewed by Antti Koivisto.\n\nFlexFormattingContext still reached through FlexLayoutItem::renderer for a handful of simple\nqueries -- the item's laid-out logical width/height, its logical-height border/padding, its\nintrinsic size, whether it needs layout, and whether it is a table or a replaced element. Several\nfunctions kept a `CheckedRef flexItem = flexLayoutItem.renderer` local just to spell those.\n\nAdd accessors on FlexLayoutItem for them, in the shape of the style() accessor it already had, and\nuse those at the call sites. The type queries are named isTable()/isReplaced() rather than after the\nrenderer classes they happen to be implemented with, since FlexLayoutItem does not otherwise expose\nrenderer types.\n\nWith this the formatting context does not dereference a flex item's renderer at all: what is left is\nFlexLayoutState's completed-layout set, whose API is keyed by RenderBox, and the accessor bodies\nthemselves.\n\nNo change in behavior.\n\n* Source/WebCore/layout/formattingContexts/flex/FlexFormattingContext.h:\n* Source/WebCore/layout/formattingContexts/flex/FlexFormattingContext.cpp:\n(WebCore::FlexLayoutItem::logicalWidth):\n(WebCore::FlexLayoutItem::logicalHeight):\n(WebCore::FlexLayoutItem::borderAndPaddingLogicalHeight):\n(WebCore::FlexLayoutItem::intrinsicSize):\n(WebCore::FlexLayoutItem::needsLayout):\n(WebCore::FlexLayoutItem::isTable):\n(WebCore::FlexLayoutItem::isReplaced):\n(WebCore::FlexFormattingContext::flexBaseSizeForFlexItem):\n(WebCore::FlexFormattingContext::computeUsedNonAutoMinMainSize):\n(WebCore::FlexFormattingContext::computeContentBasedMinMainSize):\n(WebCore::FlexFormattingContext::computeMainSizeFromAspectRatioUsing):\n(WebCore::FlexFormattingContext::applyStretchAlignmentToFlexItem):\n(WebCore::FlexFormattingContext::applyStretchMinMaxCrossSize):\n\nCanonical link: https://commits.webkit.org/317937@main",
      "email": "zalan@apple.com",
      "hash": "5063c133f4da4d377bf81ab1ec16886418ed0bef",
      "subject": "[cleanup] Add FlexLayoutItem accessors so FlexFormattingContext stops dereferencing the flex item's renderer"
    },
    "317938@main": {
      "author": "Carlos Alberto Lopez Perez",
      "avatar": "https://www.gravatar.com/avatar/05326c1dbe06f486e884975e73f25179?d=identicon\u0026s=64",
      "cl": "317938@main",
      "clUrl": "https://commits.webkit.org/317938@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320284\n\nReviewed by Nikolas Zimmermann.\n\nThe new WPE-JSC queue added in 317773@main is not working well because\nwhen there are failures it tries to use script build-jsc instead of\nbuild-webkit to rebuild WPE without change.\n\nAnd it fails because script build-jsc does not currently implement the\nauto enter mechanism into the SDK.\n\nFixing build-jsc is in theory possible, but this changes the EWS logic\nto use script build-webkit for GTK and WPE ports in this case because:\n\n - The build product it receives it was generated with build-webkit\n   (not with build-jsc)\n - build-jsc has different quirks than build-webkit and doesn't enable\n   the same CMake switches by default.\n - Thanks to the shared ccache building webkit is very fast if the caches\n   are hot and for a \"build without change\" step the caches should be hot,\n   so I don' think is worth optimizing the time this step takes.\n - The post-commit bots that run JSC test with WPE also use build-webkit\n   script to build.\n - In the case of WPE there isn't a split of libjsc and libwebkit, so to\n   link the jsc binary is needed to build all of libwebkit in any case.\n\nSo I think is better to standarize on build-webkit rather than trying\nto maintain build-jsc to have the same quirks/default_flags than\nbuild-webkit.\n\n* Tools/CISupport/ews-build/steps.py:\n(shouldBuildJSCOnly):\n(CompileWebKit.evaluateCommand):\n(AnalyzeCompileWebKitResults.run):\n(AnalyzeCompileWebKitResults.analyzeResults):\n(RunJavaScriptCoreTests.evaluateCommand):\n\nCanonical link: https://commits.webkit.org/317938@main",
      "email": "clopez@igalia.com",
      "hash": "faf76febcd287b3d3a959104f60587ba7a9ce80b",
      "subject": "[WKCI][ews-build.webkit.org][WPE] The WPE-JSC queue should use build-webkit instead build-jsc to build without change."
    },
    "317939@main": {
      "author": "Alan Baradlay",
      "avatar": "https://www.gravatar.com/avatar/788d66417db806c567552cfa1ae89f77?d=identicon\u0026s=64",
      "cl": "317939@main",
      "clUrl": "https://commits.webkit.org/317939@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320287\n\nReviewed by Antti Koivisto.\n\nRenderFlexibleBox owned the two per-flex-item measurement caches -- m_blockAxisSize (an item's inner\nmain size when the main axis is its block axis) and m_contentLogicalHeights (an item's cross-axis\ncontent height, captured before min/max or a stretch override constrains it) -- along with all the\nlogic around them, even though the flex formatting context is what produces and consumes those\nvalues.\n\nIntroduce FlexItemContentCache, a small header-only class holding both maps behind a named API,\nmodelled on the inline formatting context's InlineContentCache. FlexIntegrationUtils holds one and\ntakes over the cache logic: flexItemContentLogicalHeight, setFlexItemContentLogicalHeightFromLayout,\nrestoreFlexItemContentLogicalHeight, computeBlockAxisContentSizeForFlexItem,\ninvalidateBlockAxisSizeForFlexItem and flexItemWillBeRemoved.\n\nThe two setters are renamed while moving: setFlexItemContentLogicalHeightIfNeeded -\u003e\nsetFlexItemContentLogicalHeightFromLayout (the render side depositing the height during the item's own\nlayout, skipped when the container has already set an overriding height) and\ncacheFlexItemContentLogicalHeightIfAllowed -\u003e restoreFlexItemContentLogicalHeight (the stretch path\nputting back the height it saved before stretching, which must bypass that override check). The old\nIfNeeded/IfAllowed suffixes did not say which was which.\n\nLifetime is unchanged: FlexIntegrationUtils is a member of LayoutIntegration::FlexLayout, which is a\nmember of RenderFlexibleBox, so cached entries survive across layouts exactly as before.\n\nRenderFlexibleBox keeps four one-line forwarders because the render side reaches the caches with only\na flex container in hand: RenderBox, RenderTable, RenderTableCell, RenderTextControl and RenderListBox\ndeposit an item's content height mid-layout, RelayoutScopeForScrollbarChange invalidates the\nblock-axis size, and RenderBox and RenderTreeBuilder drop an item's entries when it goes away. Those\nforward through FlexLayout, which exposes them for the integration.\n\nFlexItemContentCache.h includes RenderBox.h rather than forward-declaring it: the HashMap keyed on\nSingleThreadWeakRef\u003cconst RenderBox\u003e instantiates WeakRef::ptr(), which static_asserts on the type\nbeing complete. Unified builds get that from a neighbouring translation unit, so it only shows up in\nnon-unified builds. The class is annotated the way InlineContentCache is -- WTF_MAKE_TZONE_ALLOCATED\nin the header with the _IMPL in a cpp -- since the _INLINE form would need an Inlines.h include,\nwhich is not allowed in a non-Inlines.h header.\n\nNo change in behavior.\n\n* Source/WebCore/Headers.cmake:\n* Source/WebCore/WebCore.xcodeproj/project.pbxproj:\n* Source/WebCore/layout/formattingContexts/flex/FlexItemContentCache.h: Added.\n(WebCore::FlexItemContentCache::blockAxisSize const):\n(WebCore::FlexItemContentCache::setBlockAxisSize):\n(WebCore::FlexItemContentCache::clearBlockAxisSize):\n(WebCore::FlexItemContentCache::contentLogicalHeight const):\n(WebCore::FlexItemContentCache::setContentLogicalHeight):\n(WebCore::FlexItemContentCache::remove):\n* Source/WebCore/layout/integration/flex/FlexIntegrationUtils.h:\n* Source/WebCore/layout/integration/flex/FlexIntegrationUtils.cpp:\n(WebCore::LayoutIntegration::canSetFlexItemContentLogicalHeight):\n(WebCore::LayoutIntegration::FlexIntegrationUtils::applyStretchedLogicalHeightToFlexItem):\n(WebCore::LayoutIntegration::FlexIntegrationUtils::flexItemContentLogicalHeight):\n(WebCore::LayoutIntegration::FlexIntegrationUtils::setFlexItemContentLogicalHeightFromLayout):\n(WebCore::LayoutIntegration::FlexIntegrationUtils::restoreFlexItemContentLogicalHeight):\n(WebCore::LayoutIntegration::FlexIntegrationUtils::computeBlockAxisContentSizeForFlexItem):\n(WebCore::LayoutIntegration::FlexIntegrationUtils::invalidateBlockAxisSizeForFlexItem):\n(WebCore::LayoutIntegration::FlexIntegrationUtils::flexItemWillBeRemoved):\n(WebCore::LayoutIntegration::FlexIntegrationUtils::flexItemContentLogicalHeight const):\n(WebCore::LayoutIntegration::FlexIntegrationUtils::FlexIntegrationUtils):\n* Source/WebCore/layout/integration/flex/LayoutIntegrationFlexLayout.h:\n* Source/WebCore/layout/integration/flex/LayoutIntegrationFlexLayout.cpp:\n(WebCore::LayoutIntegration::FlexLayout::flexItemContentLogicalHeight):\n(WebCore::LayoutIntegration::FlexLayout::setFlexItemContentLogicalHeightFromLayout):\n(WebCore::LayoutIntegration::FlexLayout::invalidateBlockAxisSizeForFlexItem):\n(WebCore::LayoutIntegration::FlexLayout::flexItemWillBeRemoved):\n(WebCore::LayoutIntegration::FlexLayout::flexItemContentLogicalHeight const):\n(WebCore::LayoutIntegration::FlexLayout::FlexLayout):\n* Source/WebCore/rendering/RenderFlexibleBox.h:\n(WebCore::RenderFlexibleBox::setBlockAxisSizeForFlexItem): Deleted.\n(WebCore::RenderFlexibleBox::blockAxisSizeForFlexItem const): Deleted.\n* Source/WebCore/rendering/RenderFlexibleBox.cpp:\n(WebCore::RenderFlexibleBox::invalidateBlockAxisSizeForFlexItem):\n(WebCore::RenderFlexibleBox::flexItemWillBeRemoved):\n(WebCore::RenderFlexibleBox::flexItemContentLogicalHeight):\n(WebCore::RenderFlexibleBox::setFlexItemContentLogicalHeightFromLayout):\n(WebCore::RenderFlexibleBox::setFlexItemContentLogicalHeightIfNeeded): Deleted.\n(WebCore::canSetFlexItemContentLogicalHeight): Deleted.\n(WebCore::RenderFlexibleBox::cacheFlexItemContentLogicalHeightIfAllowed): Deleted.\n(WebCore::RenderFlexibleBox::computeBlockAxisContentSizeForFlexItem): Deleted.\n(WebCore::RenderFlexibleBox::flexItemContentLogicalHeight const):\n* Source/WebCore/rendering/RenderBox.cpp:\n(WebCore::RenderBox::updateLogicalHeight):\n* Source/WebCore/rendering/RenderTable.cpp:\n(WebCore::RenderTable::layout):\n* Source/WebCore/rendering/RenderTableCell.cpp:\n(WebCore::RenderTableCell::layout):\n* Source/WebCore/rendering/RenderTextControl.cpp:\n(WebCore::RenderTextControl::computeLogicalHeight const):\n* Source/WebCore/rendering/RenderListBox.cpp:\n(WebCore::RenderListBox::computeLogicalHeight const):\n\nCanonical link: https://commits.webkit.org/317939@main",
      "email": "zalan@apple.com",
      "hash": "f2b020b83d749e6e5f4de95cedcfca2d29335b6f",
      "subject": "[cleanup] Move the flex-item measurement caches off RenderFlexibleBox into a FlexItemContentCache"
    },
    "317940@main": {
      "author": "Charlie Wolfe",
      "avatar": "https://www.gravatar.com/avatar/857b3b5ff3394c31fa2689310a93dbab?d=identicon\u0026s=64",
      "cl": "317940@main",
      "clUrl": "https://commits.webkit.org/317940@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320302\nrdar://183236270\n\nReviewed by Kiet Ho.\n\nSince 315872@main began synchronizing a frame's scroll position to the RemoteFrameViews in other\nprocesses, the parent-side RemoteFrameView now carries the child's scroll offset, so the target\nprocess applied it a second time when converting the point with windowToContents(). Event\ncoordinates in scrolled iframes were therefore offset by the iframe's scroll position.\n\nThe transformed point is consumed as a root view point by the process hosting the remote frame, so\nuse convertFromRootView() instead. This leaves the parent process responsible only for geometry it\nowns and the target process responsible for its own scroll offset.\n\nTest: http/tests/site-isolation/mouse-events/scrolled-iframe-client-coordinates.html\n\n* LayoutTests/http/tests/site-isolation/mouse-events/resources/scroll-and-message-mouse-down-client-coordinates.html: Added.\n* LayoutTests/http/tests/site-isolation/mouse-events/resources/scrolled-iframe-client-coordinates.js: Added.\n(addMarker):\n(async event):\n(clickInScrolledSubframe):\n* LayoutTests/http/tests/site-isolation/mouse-events/scrolled-iframe-client-coordinates-expected.html: Added.\n* LayoutTests/http/tests/site-isolation/mouse-events/scrolled-iframe-client-coordinates.html: Added.\n* Source/WebCore/page/EventHandler.cpp:\n(WebCore::EventHandler::userInputEventDataForRemoteFrame):\n* Source/WebCore/page/RemoteFrameGeometryTransformer.cpp:\n(WebCore::RemoteFrameGeometryTransformer::transformToRemoteFrameCoordinates const):\n* Source/WebCore/platform/Widget.h:\n* Source/WebKit/WebProcess/WebPage/mac/WebPageMac.mm:\n(WebKit::WebPage::performImmediateActionHitTestAtLocation):\n\nCanonical link: https://commits.webkit.org/317940@main",
      "email": "charliew@apple.com",
      "hash": "57ac0275ddfdd84d68ee272bbafff7c5c429e300",
      "subject": "[Site Isolation] REGRESSION(315872@main): Event coordinates are offset by the scroll position in isolated iframes"
    },
    "317941@main": {
      "author": "Alan Baradlay",
      "avatar": "https://www.gravatar.com/avatar/788d66417db806c567552cfa1ae89f77?d=identicon\u0026s=64",
      "cl": "317941@main",
      "clUrl": "https://commits.webkit.org/317941@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320291\n\nReviewed by Antti Koivisto.\n\nPostFlexScrollbarLayout is not one of the flex algorithm's phases -- it marks the scrollbar\nreconciliation relayout that runs after the algorithm is done -- so it does not belong in the phase\nenum. It got there when 288521@main's m_inPostFlexUpdateScrollbarLayout bool was folded into the\nmonotonic phase enum. Put the bool back and drop the enumerator.\n\nThis matters because m_flexLayoutState is currently scoped to all of layoutBlock rather than to the\nflex layout proper, so it is still engaged during that relayout. Both the flag and its FIXMEs go\naway once the state is scoped to m_flexLayout.layout(), where an unengaged state answers \"not in\nflex layout\" on its own.\n\nWhile here, say what the remaining check actually decides. The lambda answers \"is percentage\nresolution disabled in this phase\", not \"can we use this item\", so name and invert it, and turn the\n\u003e= chain into a switch over the phases the flex algorithm runs layout in.\ncanComputePercentageFlexBasis is likewise not about flex basis by the time most callers reach it --\nit asks whether a percentage resolves against the container's block size -- so rename it and give it\nan overload for the callers that only need the yes/no and were passing a dummy percentage.\n\nThe switch enumerates the phases that reach it. Beyond the three the \u003e= chain distinguished, layout can\nreach here in three more, all of which the chain answered but naming them makes explicit:\n\n- PreparingFlexItems: recomputeLogicalWidth runs inside the state's scope, so the container measuring its\n  own intrinsic widths gets here before the algorithm has sized anything.\n- MainAxisAlignment: multi-line column flow re-runs main-axis item sizing from the alignment step, once the\n  container's main size is known (distributeMainAxisFreeSpaceForMultilineColumnIfNeeded), and the phase is\n  monotonic so it cannot go back to MainAxisItemSizing.\n- CrossAxisAlignment: the final phase, where both axes are settled.\n\nAlso give FlexIntegrationUtils::flexItemIntrinsicLogicalWidth the FlexItemIntrinsicWidthComputationScope its\ntwo siblings maxContentMainAxisExtentForFlexItem and minContentMainAxisContributionForFlexItem already have.\nIt measures the item the same way, so a percentage resolved against the item while measuring should answer\nfrom the item's cross-size definiteness rather than from how far the algorithm has got.\n\nNo change in behaviour.\n\n* Source/WebCore/layout/formattingContexts/flex/FlexLayoutState.h:\n* Source/WebCore/layout/integration/flex/FlexIntegrationUtils.cpp:\n(WebCore::LayoutIntegration::FlexIntegrationUtils::flexItemIntrinsicLogicalWidth):\n* Source/WebCore/rendering/RenderFlexibleBox.cpp:\n(WebCore::RenderFlexibleBox::layoutBlock):\n(WebCore::RenderFlexibleBox::canUseFlexItemForPercentageResolution):\n(WebCore::RenderFlexibleBox::canResolvePercentAgainstContainerBlockSize):\n(WebCore::RenderFlexibleBox::flexItemMainSizeIsDefinite):\n(WebCore::RenderFlexibleBox::canComputePercentageFlexBasis): Deleted.\n* Source/WebCore/rendering/RenderFlexibleBox.h:\n\nCanonical link: https://commits.webkit.org/317941@main",
      "email": "zalan@apple.com",
      "hash": "bb3059f4cb9f710b7b2408210c0c64f754c26814",
      "subject": "[cleanup] Remove the unread PostFlexScrollbarLayout flex layout phase"
    }
  },
  "date": "2026-07-26",
  "days": 1,
  "generatedAt": "2026-07-26T22:05:27Z",
  "markdown": "## Highlights\n- **Rendering** Fixed `scrollIntoView()` on inline content so tall line boxes no longer scroll to the wrong vertical position. [commit 317933@main](https://commits.webkit.org/317933@main)\n- **UI** Fixed a regression where event coordinates were offset by scroll position inside isolated iframes, restoring correct input targeting. [commit 317940@main](https://commits.webkit.org/317940@main)\n- **UI** Fixed multi-PDF pages so more than one embedded PDF HUD can respond to mouse clicks again. [commit 317936@main](https://commits.webkit.org/317936@main)\n- **Security** Prevented a potential crash in `WebViewImpl::insertText()` when handed a zero-length attributed string. [commit 317932@main](https://commits.webkit.org/317932@main)\n- **V8** Tightened JSC module lifetime behavior so `JSModuleRecord` no longer retains parser `VariableEnvironments` unnecessarily. [commit 317931@main](https://commits.webkit.org/317931@main)\n- **V8** Fixed YARR Unicode character reading order, a correctness bug in surrogate-pair handling that can affect regex parsing. [commit 317930@main](https://commits.webkit.org/317930@main)\n- **V8** Improved Temporal calendar field resolution for supported Chinese and Dangi calendars, bringing spec behavior into line. [commit 317928@main](https://commits.webkit.org/317928@main)\n- **GPU** Unblocked Swift builds for WebGPU by fixing foreign reference ownership inference failures. [commit 317935@main](https://commits.webkit.org/317935@main)\n- **Refactor** WebKit landed a concentrated flexbox cleanup series that removes renderer reach-through and dead layout phases, setting up cleaner layout internals. [commit 317941@main](https://commits.webkit.org/317941@main)\n\n## What landed by area\n\n### Flexbox and layout internals\n- **Refactor** Removed the unread PostFlexScrollbarLayout flex layout phase, trimming dead flex pipeline work. [commit 317941@main](https://commits.webkit.org/317941@main)\n- **Refactor** Moved flex-item measurement caches off `RenderFlexibleBox` into `FlexItemContentCache` to isolate caching responsibilities. [commit 317939@main](https://commits.webkit.org/317939@main)\n- **Refactor** Added `FlexLayoutItem` accessors so `FlexFormattingContext` stops dereferencing the flex item's renderer directly. [commit 317937@main](https://commits.webkit.org/317937@main)\n- **Refactor** Stopped `FlexFormattingContext` from reading flex-item margins and border and padding off the renderer, continuing the push toward data-driven layout inputs. [commit 317929@main](https://commits.webkit.org/317929@main)\n- **Refactor** Replaced `RenderFlexibleBox` wrapper queries with direct `FlexFormattingUtils` static calls for a leaner flex code path. [commit 317927@main](https://commits.webkit.org/317927@main)\n- **Refactor** Moved remaining margin, min and max, and size operations for flex items into `FlexIntegrationUtils` to centralize flex integration logic. [commit 317926@main](https://commits.webkit.org/317926@main)\n\n### Rendering and scrolling\n- **Rendering** Corrected `scrollIntoView()` for inline elements on tall shared line boxes so scrolling targets the element rect instead of the line box top. [commit 317933@main](https://commits.webkit.org/317933@main)\n\n### Site isolation, input, and embedded content\n- **UI** Fixed a site isolation regression where event coordinates in isolated iframes were shifted by scroll offset, causing bad hit testing. [commit 317940@main](https://commits.webkit.org/317940@main)\n- **UI** Fixed embedded PDF interaction so multiple HUDs in the same web content can each receive mouse clicks. [commit 317936@main](https://commits.webkit.org/317936@main)\n- **Security** Guarded against a crash path in text insertion when WebKit receives a zero-length attributed string. [commit 317932@main](https://commits.webkit.org/317932@main)\n\n### JavaScriptCore and language correctness\n- **V8** Stopped `JSModuleRecord` from retaining parser `VariableEnvironments`, reducing stale parser state retention in JSC modules. [commit 317931@main](https://commits.webkit.org/317931@main)\n- **V8** Fixed YARR's `tryReadUnicodeChar` to read the first code unit before deciding whether a second is needed, improving Unicode regex correctness. [commit 317930@main](https://commits.webkit.org/317930@main)\n- **V8** Resolved Temporal field resolution for supported Chinese and Dangi calendars to match expected calendar semantics. [commit 317928@main](https://commits.webkit.org/317928@main)\n\n### GPU and platform builds\n- **GPU** Fixed WebGPU Swift build errors around \"cannot infer ownership of foreign reference value\", unblocking that toolchain path. [commit 317935@main](https://commits.webkit.org/317935@main)\n- **Build** Fixed the WPE JSC CI queue to use `build-webkit` instead of `build-jsc`, aligning the builder with what actually succeeds without source changes. [commit 317938@main](https://commits.webkit.org/317938@main)\n\n### Infrastructure and test tooling\n- **Build** Fixed `lint-test-expectations` so glib-specific `TestExpectations` overrides actually apply on GTK and WPE ports. [commit 317925@main](https://commits.webkit.org/317925@main)\n- **Refactor** Simplified remove-matching-entry loops by switching them to WTF container `removeIf()`, reducing boilerplate in collection cleanup paths. [commit 317934@main](https://commits.webkit.org/317934@main)\n- **Build** Rebaselined the `http/tests/quicklook/secure-document-with-subresources.html` expectation after behavior changed elsewhere. [commit 317924@main](https://commits.webkit.org/317924@main)",
  "repo": "webkit",
  "repoDisplay": "WebKit",
  "rollGroups": [],
  "since": "2026-07-26",
  "totals": {
    "commits": 18,
    "features": 18,
    "rolls": 0
  },
  "until": "2026-07-26"
}