{
  "commits": {
    "316935@main": {
      "author": "Richard Robinson",
      "avatar": "https://www.gravatar.com/avatar/a0d2f862985ed0fd47887be66f5a3e4f?d=identicon\u0026s=64",
      "cl": "316935@main",
      "clUrl": "https://commits.webkit.org/316935@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319120\nrdar://181934832\n\nReviewed by Abrar Rahman Protyasha and Aditya Keerthi.\n\nIt should be available on iOS too.\n\n* Source/WebKit/UIProcess/API/Cocoa/WKPreferences.mm:\n(-[WKPreferences _setStandardFontFamily:]):\n(-[WKPreferences _standardFontFamily]):\n* Source/WebKit/UIProcess/API/Cocoa/WKPreferencesPrivate.h:\n\nCanonical link: https://commits.webkit.org/316935@main",
      "email": "richard_robinson2@apple.com",
      "hash": "3c19218afe13f7d04b155fd3bbe708d8e1608593",
      "subject": "Expose -[WKPreferences _standardFontFamily] on iOS too"
    },
    "316936@main": {
      "author": "Marta Darbinyan",
      "avatar": "https://www.gravatar.com/avatar/6143b3673258642a8b75585c768ccf10?d=identicon\u0026s=64",
      "cl": "316936@main",
      "clUrl": "https://commits.webkit.org/316936@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319127\nrdar://181947537\n\nUnreviewed test gardening\n\n* TestExpectations/apitests:\n\nCanonical link: https://commits.webkit.org/316936@main",
      "email": "darbinyan@apple.com",
      "hash": "8d5b1693c7b6819036c922e364d53b0a01ed4195",
      "subject": "[Gardening]: REGRESSION(316735@main?): [macOS] TestWebKitAPI.WKWebView.InputChangeFiresOnWindowBlur is flaky failure"
    },
    "316937@main": {
      "author": "Alistair Smith",
      "avatar": "https://www.gravatar.com/avatar/13d591730bbfae3d595f22e3e891b45f?d=identicon\u0026s=64",
      "cl": "316937@main",
      "clUrl": "https://commits.webkit.org/316937@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=318399\n\nReviewed by Yusuke Suzuki.\n\nnew Promise(r =\u003e r(p)) never settles when p is a Promise whose own\nconstructor[@@species] getter throws: promiseResolveThenableJobFastSlow\nand its WithInternalMicrotask twin called promiseSpeciesConstructor\nbefore creating the resolving functions and returned on the exception,\nleaving nothing to reject. Per NewPromiseResolveThenableJob step c\n(ECMA-262 27.2.2.2), the abrupt completion of the then call must reject\nthe promise. Create the resolving functions first (pure allocation,\ncannot throw) and let the existing reject tail handle the exception.\nRegressed in the C++ port of the promise jobs (bug 300130).\n\n* JSTests/stress/promise-resolve-thenable-job-species-throws.js: Added.\n* Source/JavaScriptCore/runtime/JSMicrotask.cpp:\n(JSC::promiseResolveThenableJobFastSlow):\n(JSC::promiseResolveThenableJobWithInternalMicrotaskFastSlow):\n\nCanonical link: https://commits.webkit.org/316937@main",
      "email": "hi@alistair.sh",
      "hash": "707b16ac07ea24da0fdc343968c092eaf3b91dfc",
      "subject": "PromiseResolveThenableJob should reject the promise when SpeciesConstructor throws"
    },
    "316938@main": {
      "author": "Issac Roy",
      "avatar": "https://www.gravatar.com/avatar/dad994528f617bf59fe005077d0fa8f3?d=identicon\u0026s=64",
      "cl": "316938@main",
      "clUrl": "https://commits.webkit.org/316938@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319113\nrdar://181932732\n\nReviewed by Jonathan Bedard.\n\nAdd the results database storage layer for EWS test results. EWSContext\ndefines two Cassandra tables, both clustered by configuration, suite and\nbranch. EWSFailedTestsByCommit keeps test in the partition key so one\ntest's failure history is a single-partition read, and uses the default\n30-day TTL. EWSFlakyTestsByCommit keeps test as the leading clustering\nkey so the small per-configuration set of flaky tests can be listed or\nchecked cheaply, uses a shorter 7-day TTL so a test drops out of the\nflaky set once it stops flaking, and adds a flaky_type column recording\nhow the flake was observed (InterStep, IntraStep, etc.). A details\ncolumn on the shared base carries a JSON blob for fields added after\ndeploy, avoiding Cassandra schema migrations.\n\nThis is the storage layer only; the API endpoints and ews-build\nintegration that read and write these tables follow in a separate change.\n\n* Tools/Scripts/libraries/resultsdbpy/resultsdbpy/model/ews_context.py: Added.\n(EWSContext):\n(EWSContext.EWSResultsBase):\n(EWSContext.EWSResultsBase.unpack):\n(EWSContext.EWSFailedTestsByCommit):\n(EWSContext.EWSFlakyTestsByCommit):\n(EWSContext.EWSFlakyTestsByCommit.unpack):\n(EWSContext.__init__):\n(EWSContext.register):\n(EWSContext.register_flaky):\n(EWSContext._register):\n(EWSContext._register.callback):\n(EWSContext.find_for_test):\n(EWSContext.find_flaky_for_test):\n(EWSContext._find):\n\nCanonical link: https://commits.webkit.org/316938@main",
      "email": "issacroy05@gmail.com",
      "hash": "dbc6200b76340c429945cfb392a1d7887faf9955",
      "subject": "TLF: Add results database schema for storing EWS test results and flaky tests"
    },
    "316939@main": {
      "author": "Sammy Gill",
      "avatar": "https://www.gravatar.com/avatar/715a3cfee5d85ee90ccfdaa2a4a7a5a3?d=identicon\u0026s=64",
      "cl": "316939@main",
      "clUrl": "https://commits.webkit.org/316939@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319021\nrdar://181867411\n\nReviewed by Alan Baradlay and Brandon Stewart.\n\nResolveIntrinsicTrackSizesContext is a struct that is used during the\n\"resolve intrinsic track sizes,\" portion of the spec. This struct\ncontains a list of TrackSizingItems and some fields that contain other\npieces of data. Some of these other pieces of data are actually\nredundant since they already live on TrackSizingItem so we do not\nactually need them on this struct. We can remove these from the struct\nand also pass the list of TrackSizingItems or the item itself into the\nfunctions that were using the other fields from the struct.\n\nRemoving these fields leaves the ComputedSizesList and\nUsedBorderAndPaddingList type aliases unused, so delete them as well.\n\nWhile here, mark TrackSizingItem's members const since it is not\nexpected that any of these fields should ever get mutated.\n\n* Source/WebCore/layout/formattingContexts/grid/GridTypeAliases.h:\nRemove the now-unused ComputedSizesList and UsedBorderAndPaddingList\naliases.\n\n* Source/WebCore/layout/formattingContexts/grid/TrackSizingAlgorithm.cpp:\n(WebCore::Layout::singleSpanningItemsWithinTrack):\nPass in the track sizing item instead and get the lines each item spans\noff of it directly.\n\n(WebCore::Layout::minimumContributions):\nWe already have the TrackSizingItem so use the fields off of it and\nremove the rest as arguments.\n\nCanonical link: https://commits.webkit.org/316939@main",
      "email": "sammy.gill@apple.com",
      "hash": "84403b849ed180a7ef72cbb40a06a9dbbf7036bc",
      "subject": "[GFC][Cleanup] ResolveIntrinsicTrackSizesContext has redundant fields."
    },
    "316940@main": {
      "author": "Tim Nguyen",
      "avatar": "https://www.gravatar.com/avatar/208c05ac2decdf818a4a08ada568328e?d=identicon\u0026s=64",
      "cl": "316940@main",
      "clUrl": "https://commits.webkit.org/316940@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319122\nrdar://181941217\n\nReviewed by Brent Fulgham.\n\nUpstream commit: https://github.com/web-platform-tests/wpt/commit/366adfdfb5edeff03be1c37d71b00c034cd23eb6\n\nThere was one extra change after my last import.\n\n* LayoutTests/imported/w3c/web-platform-tests/html/semantics/popovers/popover-top-layer-nesting-hints.html:\n* LayoutTests/imported/w3c/web-platform-tests/html/semantics/popovers/resources/popover-top-layer-nesting.js:\n(createTopLayerElement):\n(runTopLayerTests):\n\nCanonical link: https://commits.webkit.org/316940@main",
      "email": "ntim@apple.com",
      "hash": "38d831e1b2567d783e416b0fe0790df29ada1c20",
      "subject": "Re-import html/semantics/popovers WPT"
    },
    "316941@main": {
      "author": "Alistair Smith",
      "avatar": "https://www.gravatar.com/avatar/13d591730bbfae3d595f22e3e891b45f?d=identicon\u0026s=64",
      "cl": "316941@main",
      "clUrl": "https://commits.webkit.org/316941@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=318507\n\nReviewed by Yusuke Suzuki.\n\nFastStringifier decides for itself whether a value can have a toJSON, and\nmisses three cases. All three silently produce wrong JSON, or in the last\ncase skip a TypeError.\n\nThe object property loop skips DontEnum entries, but SerializeJSONProperty\nlooks toJSON up with GetV, so an own toJSON applies even when it is not\nenumerable. Check for the toJSON key before skipping DontEnum entries.\n\nFor arrays only the global Array.prototype is checked, while\nObject.setPrototypeOf, Array subclasses and other realms all keep\nArrayType, so an array can reach the fast path with a prototype nobody\nlooked at. Bail out when a non-original array structure has a stored\nprototype other than Array.prototype, mirroring the object case.\n\nAn object with a non-reified static property table can have a toJSON that\nis not in the property table yet, so the loop above cannot see it. Bail\nout on those, like objectAssignFast does. JSON.stringify(Date.prototype)\nreturned \"{}\" instead of throwing.\n\nAll three bail out to the general stringifier, which is correct in these\ncases. Plain objects and plain arrays are unaffected.\n\n* JSTests/stress/json-stringify-array-prototype-to-json.js: Added.\n* JSTests/stress/json-stringify-non-enumerable-to-json.js: Added.\n* Source/JavaScriptCore/runtime/JSONObject.cpp:\n(JSC::FastStringifier\u003cCharType, bufferMode\u003e::append):\n\nCanonical link: https://commits.webkit.org/316941@main",
      "email": "hi@alistair.sh",
      "hash": "8b9071b24ead48bdb7c31d33afdb5ee6534e6823",
      "subject": "[JSC] JSON.stringify's fast path skips a non-enumerable own toJSON and a replaced array prototype"
    },
    "316942@main": {
      "author": "Matthew Finkel",
      "avatar": "https://www.gravatar.com/avatar/656f8950aefb56f553c899418e06b351?d=identicon\u0026s=64",
      "cl": "316942@main",
      "clUrl": "https://commits.webkit.org/316942@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=317144\nrdar://180974061\n\nReviewed by Brent Fulgham.\n\nRe-enable the tests that were disabled or skipped.\n\n* TestExpectations/apitests:\n* Tools/TestWebKitAPI/Tests/WebKit/WKWebView/WKHTTPCookieStore.mm:\n(TEST(WKHTTPCookieStore, WebSocketCookies)):\n(TEST(WKHTTPCookieStore, DISABLED_WebSocketCookies)): Deleted.\n\nCanonical link: https://commits.webkit.org/316942@main",
      "email": "m_finkel@apple.com",
      "hash": "ee886f64ac5a9292867c7bd47fb4bbc8142bbb5b",
      "subject": "Re-enabled WebSocket cookie tests"
    },
    "316943@main": {
      "author": "Carlos Alberto Lopez Perez",
      "avatar": "https://www.gravatar.com/avatar/05326c1dbe06f486e884975e73f25179?d=identicon\u0026s=64",
      "cl": "316943@main",
      "clUrl": "https://commits.webkit.org/316943@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319094\n\nReviewed by Claudio Saavedra.\n\nThis variable is commonly used on the bots to limit the number of parallel jobs.\nThis script should honor it like the other webkit-related test scripts.\nrun-jsc-stress-tests script is executed on the bots on the step jscore-test when\nit is executed via the main run-javascriptcore-tests script.\n\n* Tools/Scripts/run-jsc-stress-tests:\n\nCanonical link: https://commits.webkit.org/316943@main",
      "email": "clopez@igalia.com",
      "hash": "25eb2ef52e74513e65788f2b9f4f5bb0881389c1",
      "subject": "[run-jsc-stress-tests] Should honor the env variable NUMBER_OF_PROCESSORS if set"
    },
    "316944@main": {
      "author": "Ryosuke Niwa",
      "avatar": "https://www.gravatar.com/avatar/ed2c71248fe3ea15d9129f6e9a2a1e85?d=identicon\u0026s=64",
      "cl": "316944@main",
      "clUrl": "https://commits.webkit.org/316944@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319103\nrdar://181919706\n\nUnreviewed. Update safer C++ expectations.\n\n* Source/WebKitLegacy/SaferCPPExpectations/NoDeleteCheckerExpectations:\n\nCanonical link: https://commits.webkit.org/316944@main",
      "email": "rniwa@webkit.org",
      "hash": "9a1d07cb008c71897765c522623f89b63287866a",
      "subject": "Update safer C++ expectations for iOS"
    },
    "316945@main": {
      "author": "Basuke Suzuki",
      "avatar": "https://www.gravatar.com/avatar/5192a1151c7575317affb7a4633f8d63?d=identicon\u0026s=64",
      "cl": "316945@main",
      "clUrl": "https://commits.webkit.org/316945@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319008\nrdar://181853035\n\nReviewed by Alex Christensen.\n\nThe WPT webtransport/ tests could not connect because the layout-test harness never launched the\nWPT WebTransport-over-HTTP/3 (webtransport-h3) QUIC server. The vendored aioquic-based server exists\nunder tools/webtransport/h3/ and upstream's `wpt serve` supports it, but it is opt-in (skipped without\n--webtransport-h3) and the harness did not declare the port, pass the flag, check its liveness, or\nprovision aioquic. Every data-flow test thus failed to establish a session.\n\nWire the harness to launch the server and provision its dependency:\n\n- Declare a webtransport-h3 UDP port in the WPT config and pass --webtransport-h3 to `wpt serve`. The\n  tests reach the port via the server-side {{ports[webtransport-h3][0]}} config substitution, so no\n  Python-side URL accessor is needed.\n- Add a real UDP-listener liveness check (QUIC is UDP; the inherited TCP connect() check never sees it),\n  matching EADDRINUSE only.\n- Provision aioquic through webkitpy's AutoInstall so a fresh checkout / CI bot needs no manual pip\n  install. aioquic 1.2.0 needs a newer crypto stack than webkitpy pinned and AutoInstall uses a single\n  shared per-interpreter directory with one version per package name, so this bumps the shared pins\n  (cryptography -\u003e 43.0.3, the highest with prebuilt py3.9 wheels while satisfying aioquic's \u003e=42;\n  pyOpenSSL -\u003e 24.3.0; cffi kept 1.17.1) and registers the webtransport-only packages in a new\n  autoinstalled/aioquic.py. AutoInstall only mutates the in-process sys.path, so the harness injects the\n  AutoInstall directory into the wpt subprocess's PYTHONPATH for both the probe and the serve launch.\n- Any provisioning failure (offline, missing wheel) degrades to the existing \"h3 disabled\" path instead\n  of taking down unrelated WPT runs. WebTransportEnabled is already Stable/default-on; no feature flag.\n\nWith the server running, un-skip the WebTransport tests that pass on Cocoa (connect, constructor,\ncongestion-control, csp, datagram-bad-chunk, incoming-multiple-streams, sendstream-bad-chunk,\nserver-certificate-hashes, in-removed-iframe) and add their expectations. The remaining tests stay\nskipped, grouped by reason (internal timeout in the streams-echo/streams-close family, backend gaps in\ndatagrams/stats/sendorder/close/historical/idlharness, BFCache variants, and the crash tests). Add a\nCocoa-only skip of the suite to platform/glib (GTK/WPE have no QUIC/HTTP-3 backend; Windows already\nskips it). The un-skipped tests need the Network.framework QUIC SPI that ships on Tahoe but not\nSequoia, so skip the suite in platform/mac-sequoia (open-source CI runs Tahoe; the Sequoia bots would\notherwise fail every un-skipped test).\n\n* LayoutTests/imported/w3c/resources/config.json: Add the webtransport-h3 port.\n* LayoutTests/TestExpectations: Un-skip the passing WebTransport tests; group the remaining skips by reason.\n* LayoutTests/platform/glib/TestExpectations: Skip the Cocoa-only WebTransport suite on GTK/WPE.\n* LayoutTests/platform/mac-sequoia/TestExpectations: Skip the WebTransport suite on Sequoia (QUIC SPI is Tahoe-only).\n* LayoutTests/imported/w3c/web-platform-tests/webtransport/*-expected.txt: Baselines for the un-skipped tests.\n* Tools/Scripts/libraries/webkitcorepy/webkitcorepy/__init__.py: Bump pyOpenSSL to 24.3.0 and collapse the\nper-Python cryptography branch into a single 43.0.3 pin to satisfy aioquic 1.2.0.\n* Tools/Scripts/webkitpy/autoinstalled/aioquic.py: Added; register aioquic 1.2.0 and its deps.\n* Tools/Scripts/webkitpy/layout_tests/servers/web_platform_test_server.py:\n(_aioquic_autoinstall_directory): Added; trigger AutoInstall and return its directory.\n(_env_with_pythonpath_appended): Added.\n(WebPlatformTestServer.__init__): Provision aioquic, probe it in the serve interpreter, and append\n--webtransport-h3 plus the UDP mapping only when available; else warn.\n(WebPlatformTestServer.ports_to_forward): Exclude UDP ports from TCP device forwarding.\n(WebPlatformTestServer._is_udp_port_listening): Added.\n(WebPlatformTestServer._is_server_running_on_all_ports): Added; validate the UDP h3 listener via a\nbind()-\u003eEADDRINUSE probe alongside the existing TCP port checks.\n(WebPlatformTestServer._spawn_process): Pass the aioquic-provisioned env to the wpt serve process.\n* Tools/Scripts/webkitpy/layout_tests/servers/web_platform_test_server_unittest.py:\n(TestWebPlatformTestServer.setUp): Added; stub the autoinstall trigger to keep construction hermetic.\n(TestWebPlatformTestServer.test_is_udp_port_listening): Added.\n\nCanonical link: https://commits.webkit.org/316945@main",
      "email": "basuke@apple.com",
      "hash": "f555e557689249da53fd9c80bc1e769644fa6e9e",
      "subject": "[WebTransport] Run the WPT webtransport-h3 server in the layout test harness and enable the passing tests"
    },
    "316948@main": {
      "author": "Daniel Guerrero",
      "avatar": "https://www.gravatar.com/avatar/ab2f175073a44ccfcacb8c7a3819bb2e?d=identicon\u0026s=64",
      "cl": "316948@main",
      "clUrl": "https://commits.webkit.org/316948@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=318776\nrdar://51409819\n\nReviewed by Ryosuke Niwa.\n\nThe \u003cfont face\u003e attribute accepts literal font family names (HTML legacy\nsemantics), but CSSValuePool::createFontFaceValue parsed it with the strict CSS\n\u003cfamily-name\u003e grammar. Family names that are not valid unquoted CSS identifiers\n-- notably names containing a numeric token such as \"Bodoni 72\" -- were rejected,\nso font-family was never applied and the text silently reverted to the default\nfont.\n\nRelax the family-name grammar to accept a numeric token as part of a literal\nfamily name, but only for the \u003cfont face\u003e attribute: add a\nlegacyFontFaceAttributeMode flag to CSSParserContext, enable it from\ncreateFontFaceValue, and honor it in the font-family consumer. Regular CSS\nfont-family parsing is unaffected and still rejects such names, so\n\"font-family: Bodoni 72\" (unquoted) remains invalid.\n\nThe value reaches the face attribute unquoted because StyleChange::extractTextStyles\nunconditionally strips every quote from the serialized font-family for Outlook 2007\ncompatibility (EditingStyle.cpp, webkit.org/b/79448). That is broader than 79448\nintended -- it meant to drop only superfluous quotes and keep them for names that\ngenuinely need them -- so the quotes \"Bodoni 72\" actually requires are stripped too.\nFixing the reader here also covers static or pasted \u003cfont face\u003e values from any\nsource; tightening the emitter to strip quotes selectively could be a follow-up, but\nit touches the 79448 compatibility behavior and is intentionally out of scope here.\n\n* Source/WebCore/css/CSSValuePool.cpp:\n(WebCore::CSSValuePool::createFontFaceValue):\n* Source/WebCore/css/parser/CSSParserContext.h:\n* Source/WebCore/css/parser/CSSParserContext.cpp:\n(WebCore::add):\n* Source/WebCore/css/parser/CSSPropertyParserConsumer+Font.cpp:\n(WebCore::CSSPropertyParserHelpers::concatenateFamilyName):\n(WebCore::CSSPropertyParserHelpers::consumeFamilyNameUnresolved):\n(WebCore::CSSPropertyParserHelpers::consumeFamilyName):\n* LayoutTests/editing/style/font-face-numeric-family.html: Added.\n* LayoutTests/editing/style/font-face-numeric-family-expected.txt: Added.\n\nCanonical link: https://commits.webkit.org/316948@main",
      "email": "daniel_guerrero@apple.com",
      "hash": "430b0c73b84ed73df07e1647d00babf69adac351",
      "subject": "\u003cfont face\u003e with a numeric-token family name (e.g. \"Bodoni 72\") reverts to the default font"
    },
    "316949@main": {
      "author": "Sammy Gill",
      "avatar": "https://www.gravatar.com/avatar/715a3cfee5d85ee90ccfdaa2a4a7a5a3?d=identicon\u0026s=64",
      "cl": "316949@main",
      "clUrl": "https://commits.webkit.org/316949@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=318916\nrdar://181750071\n\nReviewed by Brandon Stewart.\n\nWhen computing the automatic preferred size of a grid item there are two\nways that the item can get stretched to fill its grid area based on its\nself alignment in that axis:\n\n1.) normal - If the grid item has no preferred aspect ratio, and no\nnatural size in the relevant axis (if it is a replaced element)\n\n2.) stretch - As long as there are no auto margins.\n\nWe currently implement 1 but not 2 so we just expand our current logic\nby taking this extra bit of information into consideration. The\nisStretchedForAutomaticSize helper reuses the same bit of logic in both\naxes since the only difference is the alignment and margins we are\nchecking. All of its callers only reach it once the preferred size in\nthe axis is known to be auto, so it asserts that precondition rather\nthan re-checking it.\n\nCanonical link: https://commits.webkit.org/316949@main",
      "email": "sammy.gill@apple.com",
      "hash": "7a06e8a447d13d7b6a51a54d93eb0a925bbe53b6",
      "subject": "[GFC] Stretch alignment should trigger stretch sizing"
    },
    "316950@main": {
      "author": "Ahmad Saleem",
      "avatar": "https://www.gravatar.com/avatar/38445f84fe28aa19bfeb1f59f6559532?d=identicon\u0026s=64",
      "cl": "316950@main",
      "clUrl": "https://commits.webkit.org/316950@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319026\nrdar://181880375\n\nReviewed by Eric Carlson.\n\nm_displayDirection (CSSValueID, a uint16_t enum) was declared immediately\nbefore the double m_displaySize. Sitting on an 8-byte-aligned offset, its\n2 bytes forced 6 bytes of padding before the double, wasting a full word.\n\nMove it up next to m_writingDirection and m_cueAlignment (both 1-byte\nenums), which already left 6 bytes of padding before the following\nRefPtr\u003cVTTRegion\u003e. The enum now folds into that existing hole at no cost,\nand m_displaySize leads its group without a preceding gap. This shrinks\nthe object by 8 bytes with no behavioral change.\n\n* Source/WebCore/html/track/VTTCue.h:\n\nCanonical link: https://commits.webkit.org/316950@main",
      "email": "ahmad.saleem792+github@gmail.com",
      "hash": "0e86b49069a5e3737c1cc7af554833d06580cc9a",
      "subject": "Reduce VTTCue size by regrouping m_displayDirection with adjacent small enums"
    },
    "316952@main": {
      "author": "Elliott Williams",
      "avatar": "https://www.gravatar.com/avatar/4086acbe078d65242df929cb51298130?d=identicon\u0026s=64",
      "cl": "316952@main",
      "clUrl": "https://commits.webkit.org/316952@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319144\nrdar://181961494\n\nReviewed by Richard Robinson.\n\nVim and Emacs (and possibly other editors) parse this line and use it to\nresolve path names in diagnostics, implement \"go to next error\", etc.\n\nNinja, like Make, will print it if you invoke it with `-C`. But `cmake\n--build` changes the working directory *before* calling the build tool,\nso nothing is printed.\n\nWork around by printing the message from ninja-wrapper.\n\n* Source/cmake/ninja-wrapper:\n\nCanonical link: https://commits.webkit.org/316952@main",
      "email": "emw@apple.com",
      "hash": "2b9d0d41eae33e6f6de5c8cae1f1c0cbcd31a529",
      "subject": "[CMake] Print the \"entering directory\" message when using cmake --build + ninja-wrapper"
    },
    "316953@main": {
      "author": "Elliott Williams",
      "avatar": "https://www.gravatar.com/avatar/4086acbe078d65242df929cb51298130?d=identicon\u0026s=64",
      "cl": "316953@main",
      "clUrl": "https://commits.webkit.org/316953@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319141\nrdar://181957548\n\nReviewed by Richard Robinson.\n\nWebKitAdditions has a CMake module which defines\nWEBKITADDITIONS_DEFINITIONS_FOR_HEADER_REPLACEMENT. Load it, then use\nreplace-webkit-additions-includes.py as a custom command for public\nheaders which contain WKA stubs.\n\nRewrite the script to have fewer Xcode-isms, so it's easy to share\nbetween Xcode and CMake.\n\n* Source/WebKit/PlatformMac.cmake:\n* Source/WebKit/mac/replace-webkit-additions-includes.py:\n(read_content_from_webkit_additions):\n(main):\n* Source/cmake/WebKitCommon.cmake:\n\nCanonical link: https://commits.webkit.org/316953@main",
      "email": "emw@apple.com",
      "hash": "b87df79901bf7227381364392ff322c237acccf1",
      "subject": "[CMake] Call replace-webkit-additions-includes for WebKit headers"
    },
    "316954@main": {
      "author": "Alan Baradlay",
      "avatar": "https://www.gravatar.com/avatar/788d66417db806c567552cfa1ae89f77?d=identicon\u0026s=64",
      "cl": "316954@main",
      "clUrl": "https://commits.webkit.org/316954@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=318494\n\nReviewed by Antti Koivisto.\n\nCross sizing was fused into one per-line function (returning the line's extent,\nits baseline groups, and the next offset at once) wrapped by\ncomputeCrossSizeForFlexLines. FlexLayout::layout splits it instead: #7\nhypotheticalCrossSizeForFlexItems returns each item's hypothetical cross size,\nand #8 crossSizeForFlexLines turns those into each line's cross size. Match that\nshape -- both now return plain Vector\u003cLayoutUnit\u003e lists, so an FFC body ports in.\n\ncrossSizeForFlexLines keeps legacy's line-size arithmetic (the running\nfirst/last-baseline maxes with a shared descent), so this preserves behavior\nrather than adopting FFC's group max. The row-flow container height growth moves\nto the line-state assembly (once per line by the line's cross size, which equals\nthe old per-item maximum), and the baseline sharing groups are built in\nperformBaselineAlignment where they are used -- safe because baseline items are\nnever align-self:stretch, so nothing relayouts them between sizing and alignment.\nLineState no longer carries the groups.\n\nperformFlexLayout now runs its sizing and alignment phases as\nperformContentSizing() and performContentAlignment() lambdas, matching\nFlexLayout::layout. layoutFlexLines, computeCrossSizeForFlexLines, and the\nFlexLineResult struct are gone.\n\nNo change in behavior.\n\n* Source/WebCore/rendering/RenderFlexibleBox.h:\n* Source/WebCore/rendering/RenderFlexibleBox.cpp:\n(WebCore::RenderFlexibleBox::LineState::LineState):\n(WebCore::RenderFlexibleBox::performFlexLayout):\n(WebCore::RenderFlexibleBox::hypotheticalCrossSizeForFlexItems):\n(WebCore::RenderFlexibleBox::crossSizeForFlexLines):\n(WebCore::RenderFlexibleBox::handleCrossAxisAlignmentForFlexItems):\n(WebCore::RenderFlexibleBox::performBaselineAlignment):\n(WebCore::RenderFlexibleBox::computeCrossSizeForFlexLines): Deleted.\n(WebCore::RenderFlexibleBox::layoutFlexLines): Deleted.\n\nCanonical link: https://commits.webkit.org/316954@main",
      "email": "zalan@apple.com",
      "hash": "0f29766677a050e18eb021dff1012a5b478db6dc",
      "subject": "[cleanup] Split flex cross sizing into hypotheticalCrossSizeForFlexItems and crossSizeForFlexLines"
    },
    "316955@main": {
      "author": "Richard Robinson",
      "avatar": "https://www.gravatar.com/avatar/a0d2f862985ed0fd47887be66f5a3e4f?d=identicon\u0026s=64",
      "cl": "316955@main",
      "clUrl": "https://commits.webkit.org/316955@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319135\nrdar://176277349\n\nReviewed by Tim Horton and Abrar Rahman Protyasha.\n\nAdd the ability to determine if a node is a \"slider\" by checking the ARIA role attribute of the elements at its position,\nthen use that information to prevent page navigation where needed.\n\nTest: Tools/TestWebKitAPI/Tests/WebKit/WebPage/AppKit Gesture Tests/BasicAppKitGesturesTests.swift\n\n* Source/WebKit/Shared/Cocoa/InteractionInformationAtPosition.h:\n* Source/WebKit/Shared/Cocoa/InteractionInformationAtPosition.mm:\n(WebKit::InteractionInformationAtPosition::InteractionInformationAtPosition):\n* Source/WebKit/Shared/Cocoa/InteractionInformationAtPosition.serialization.in:\n* Source/WebKit/UIProcess/mac/WKAppKitGestureController.mm:\n(-[WKAppKitGestureController _panShouldBeginAtLocation:]):\n* Source/WebKit/WebProcess/WebPage/Cocoa/PositionInformationForWebPage.mm:\n(WebKit::selectionPositionInformation):\n* Tools/TestWebKitAPI/Resources/cocoa/playback-scrubber.html: Added.\n* Tools/TestWebKitAPI/Tests/WebKit/WebPage/AppKit Gesture Tests/BasicAppKitGesturesTests.swift:\n\nCanonical link: https://commits.webkit.org/316955@main",
      "email": "richard_robinson2@apple.com",
      "hash": "58a1d2ec485a3ca3300040a18689386f5d16238c",
      "subject": "[AppKit Gestures] Trackpad scrub on apple.com/events video leads to page navigation"
    },
    "316956@main": {
      "author": "Wenson Hsieh",
      "avatar": "https://www.gravatar.com/avatar/c8fba82556fd4988c78bd3a0aee2a44e?d=identicon\u0026s=64",
      "cl": "316956@main",
      "clUrl": "https://commits.webkit.org/316956@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319142\nrdar://181959554\n\nReviewed by Abrar Rahman Protyasha and Richard Robinson.\n\nMake a couple of adjustments when handling SVG images during text extraction, to give agents more\ncontext when reasoning about clickable icons with no accessibility attributes:\n\n-   Surface them as `image` items (similar to the `img` element), but without a `src` attribute.\n-   When producing an interaction description for an SVG, if there are no relevant accessibility\n    attributes in any ancestor element or descendants, fall back to collecting text samples from\n    immediately preceding rendered text.\n\nTest: Tools/TestWebKitAPI/Tests/WebKit/WKWebView/TextExtractionTests.mm\n\n* Source/WebCore/page/text-extraction/TextExtraction.cpp:\n(WebCore::TextExtraction::extractItemData):\n(WebCore::TextExtraction::containsLetterOrDigit):\n(WebCore::TextExtraction::precedingRenderedTextLabel):\n(WebCore::TextExtraction::textDescription):\n* Tools/TestWebKitAPI/Tests/WebKit/WKWebView/TextExtractionTests.mm:\n(TestWebKitAPI::TEST(TextExtractionTests, InteractionDescriptionUsesAdjacentTextForUnlabeledIcon)):\n\nCanonical link: https://commits.webkit.org/316956@main",
      "email": "wenson_hsieh@apple.com",
      "hash": "3f30614bd4ead34b1686dc3ec0341678f7a5c02a",
      "subject": "[Text Extraction] Add more context before SVG icons without any relevant accessibility attributes"
    },
    "316957@main": {
      "author": "Anne van Kesteren",
      "avatar": "https://www.gravatar.com/avatar/09bb44ac3625a121017cd98d0a7dc52c?d=identicon\u0026s=64",
      "cl": "316957@main",
      "clUrl": "https://commits.webkit.org/316957@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=13755\nrdar://181748643\n\nReviewed by Alex Christensen.\n\ncomputeVisitedLinkHash() decided a URL was absolute by scanning the whole\nstring for \"://\", so a relative URL with \"://\" in its query or fragment\n(e.g. \"/search?q=http://...\") was hashed unresolved and never matched the\nvisited link. Check for a scheme in the leading position instead; this also\nbails at the first non-scheme character, so the hot path is not regressed.\nAlso resolve protocol-relative URLs (\"//host/path\") by inheriting the base\nURL's scheme.\n\nNote that there are still many cases that remain broken. A proper solution\nrequires using the URL parser while somehow not regressing performance.\n\nTest: fast/history/visited-relative-link-with-colon-slash-slash.html\nCanonical link: https://commits.webkit.org/316957@main",
      "email": "annevk@annevk.nl",
      "hash": "b0aa853a94c66d7211b6e1a302db01e861bcb006",
      "subject": "Relative links with \"://\" in them are never colored as visited after being clicked"
    },
    "316958@main": {
      "author": "Ahmad Saleem",
      "avatar": "https://www.gravatar.com/avatar/38445f84fe28aa19bfeb1f59f6559532?d=identicon\u0026s=64",
      "cl": "316958@main",
      "clUrl": "https://commits.webkit.org/316958@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319154\nrdar://181976250\n\nReviewed by Tim Nguyen.\n\nReplace the C-style `typedef WebVTTTokenTypes Type;` with a modern\n`using Type = WebVTTTokenTypes;` alias. No behavior change.\n\n* Source/WebCore/html/track/WebVTTToken.h:\n\nCanonical link: https://commits.webkit.org/316958@main",
      "email": "ahmad.saleem792+github@gmail.com",
      "hash": "b42421de79d1c2daf9b4c26119113cf9926f6260",
      "subject": "Use `using` alias instead of `typedef` in WebVTTToken"
    },
    "316959@main": {
      "author": "Alan Baradlay",
      "avatar": "https://www.gravatar.com/avatar/788d66417db806c567552cfa1ae89f77?d=identicon\u0026s=64",
      "cl": "316959@main",
      "clUrl": "https://commits.webkit.org/316959@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=318497\n\nReviewed by Antti Koivisto.\n\ncomputeMainSizeForFlexItems resolved the flexible lengths and then returned the\nper-line remaining main-axis free space. FlexLayout::layout instead returns the\nused main size of each item and computes the free space later, in\nhandleMainAxisAlignment (#12). Match that: computeMainSizeForFlexItems now\nreturns a per-item Vector\u003cLayoutUnit\u003e, and handleMainAxisAlignment derives each\nline's remaining free space from it.\n\nBehavior is unchanged. handleMainAxisAlignment rebuilds an item's used outer main\nsize as mainSize + mainAxisBorderAndPadding + mainAxisMargin, which is exactly\nflexedMarginBoxSize(); the container inner main size and gap handling are the\nsame, and the item margins are stable between sizing and this point (auto-margin\ndistribution happens inside placeFlexItems, after the per-line read). The item\nstill carries flexedContentSize for layout and placement, so the returned list\nduplicates it for now -- dropping it is follow-on work.\n\n* Source/WebCore/rendering/RenderFlexibleBox.h:\n* Source/WebCore/rendering/RenderFlexibleBox.cpp:\n(WebCore::RenderFlexibleBox::performFlexLayout):\n(WebCore::RenderFlexibleBox::computeMainSizeForFlexItems):\n(WebCore::RenderFlexibleBox::handleMainAxisAlignment):\n\nCanonical link: https://commits.webkit.org/316959@main",
      "email": "zalan@apple.com",
      "hash": "fb29cd14f44a9d242bbbc2414d52164955d539d9",
      "subject": "[cleanup] Return per-item main sizes from computeMainSizeForFlexItems, not free space"
    },
    "316960@main": {
      "author": "Jean-Yves Avenard",
      "avatar": "https://www.gravatar.com/avatar/509313899deeb9262fad8f5e04093f5b?d=identicon\u0026s=64",
      "cl": "316960@main",
      "clUrl": "https://commits.webkit.org/316960@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319091\nrdar://181900927\n\nReviewed by Youenn Fablet.\n\nReplace the CompletionHandler arguments and have related methods return a NativePromise\ninstead.\nThis conversion process exposed several issues:\n1- CompletionHandler was never called on error (contextID would have been detected as not changing and code returned early)\n2- In the MediaPlayerPrivateMediaStreamAVFObjC should more than one call\nbe made to requestHostingContext, only the last CompletionHandler would have been resolved.\nWe fix those.\n\nCovered by existing tests\n\n* Source/WebCore/html/HTMLMediaElement.cpp:\n(WebCore::HTMLMediaElement::requestHostingContext):\n* Source/WebCore/html/HTMLMediaElement.h:\n* Source/WebCore/platform/graphics/AudioVideoRenderer.h:\n(WebCore::VideoInterface::requestHostingContext):\n* Source/WebCore/platform/graphics/MediaPlayer.cpp:\n(WebCore::MediaPlayer::requestHostingContext):\n* Source/WebCore/platform/graphics/MediaPlayer.h:\n* Source/WebCore/platform/graphics/MediaPlayerPrivate.cpp:\n(WebCore::MediaPlayerPrivateInterface::requestHostingContext):\n* Source/WebCore/platform/graphics/MediaPlayerPrivate.h:\n(WebCore::MediaPlayerPrivateInterface::requestHostingContext): Deleted.\n* Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.h:\n* Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.mm:\n(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::hostingContext const):\n(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::requestHostingContext):\n* Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.h:\n* Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.mm:\n(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::~MediaPlayerPrivateMediaStreamAVFObjC):\n(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::layersAreInitialized):\n(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::requestHostingContext):\n* Source/WebCore/platform/graphics/cocoa/MediaPlayerPrivateWebM.h:\n* Source/WebCore/platform/graphics/cocoa/MediaPlayerPrivateWebM.mm:\n(WebCore::MediaPlayerPrivateWebM::requestHostingContext):\n* Source/WebKit/GPUProcess/media/RemoteAudioVideoRendererProxyManager.cpp:\n(WebKit::RemoteAudioVideoRendererProxyManager::requestHostingContext):\n* Source/WebKit/GPUProcess/media/RemoteMediaPlayerProxy.cpp:\n(WebKit::RemoteMediaPlayerProxy::requestHostingContext):\n* Source/WebKit/GPUProcess/media/RemoteMediaPlayerProxy.h:\n* Source/WebKit/GPUProcess/media/cocoa/RemoteMediaPlayerProxyCocoa.mm:\n(WebKit::RemoteMediaPlayerProxy::requestHostingContext):\n* Source/WebKit/Platform/cocoa/LayerHostingContextManager.h:\n* Source/WebKit/Platform/cocoa/LayerHostingContextManager.mm:\n(WebKit::LayerHostingContextManager::~LayerHostingContextManager):\n(WebKit::LayerHostingContextManager::requestHostingContext):\n(WebKit::LayerHostingContextManager::createHostingContextIfNeeded):\n* Source/WebKit/WebProcess/GPU/media/AudioVideoRendererRemote.cpp:\n(WebKit::AudioVideoRendererRemote::requestHostingContext):\n(WebKit::AudioVideoRendererRemote::setLayerHostingContext):\n* Source/WebKit/WebProcess/GPU/media/AudioVideoRendererRemote.h:\n* Source/WebKit/WebProcess/GPU/media/MediaPlayerPrivateRemote.cpp:\n(WebKit::MediaPlayerPrivateRemote::~MediaPlayerPrivateRemote):\n(WebKit::MediaPlayerPrivateRemote::requestHostingContext):\n(WebKit::MediaPlayerPrivateRemote::setLayerHostingContext):\n* Source/WebKit/WebProcess/GPU/media/MediaPlayerPrivateRemote.h:\n* Source/WebKit/WebProcess/cocoa/VideoPresentationManager.mm:\n(WebKit::VideoPresentationManager::enterVideoFullscreenForVideoElement):\n\nCanonical link: https://commits.webkit.org/316960@main",
      "email": "jya@apple.com",
      "hash": "22443b9b5c910d7e3c077d847507b189b61e0688",
      "subject": "Have requestHostingContext return a NativePromise"
    },
    "316961@main": {
      "author": "Kate Lee",
      "avatar": "https://www.gravatar.com/avatar/35a2c13193d9f38e92785754264aa7da?d=identicon\u0026s=64",
      "cl": "316961@main",
      "clUrl": "https://commits.webkit.org/316961@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=317758\n\nReviewed by Antti Koivisto.\n\nA scroll-state() container query (scrollable/scrolled/stuck/snapped) must select\nan ancestor query container whose container-type includes scroll-state, just as\na size query selects a size container. Previously a query only recorded the size\naxes it needs, so scroll-state queries recorded nothing and were treated like\nstyle queries, matching any ancestor container.\n\nIntroduce CQ::ContainerRequirements, bundling the size axes a query constrains\nwith whether it needs a scroll-state container, and store it on ContainerQuery.\nselectContainer() requires ContainerType::hasScrollState() for scroll-state\nqueries and keeps the writing-mode-aware size-axis matching for size queries;\nstyle and scroll-state queries (which need no size container) follow the same\nancestor walk and resolve against the container's pending style.\n\nFeature evaluation remains stubbed; actual scrollable/scrolled/stuck/snapped\nevaluation, and tests exercising container selection, are a follow-up.\n\nSpec: https://drafts.csswg.org/css-conditional-5/#scroll-state-container\n\n* Source/WebCore/css/query/ContainerQuery.h:\n* Source/WebCore/css/query/ContainerQueryFeatures.h:\n* Source/WebCore/css/query/ContainerQueryFeatures.cpp:\n* Source/WebCore/css/query/ContainerQueryParser.cpp:\n* Source/WebCore/style/ContainerQueryEvaluator.h:\n* Source/WebCore/style/ContainerQueryEvaluator.cpp:\n* Source/WebCore/style/values/primitives/StyleLengthResolution.cpp:\n\nCanonical link: https://commits.webkit.org/316961@main",
      "email": "klee@igalia.com",
      "hash": "42e9fa251171f9e4f0ec6f3599c63f04972cfd31",
      "subject": "Select a scroll-state query container ahead of scroll state evaluation"
    },
    "316962@main": {
      "author": "Alan Baradlay",
      "avatar": "https://www.gravatar.com/avatar/788d66417db806c567552cfa1ae89f77?d=identicon\u0026s=64",
      "cl": "316962@main",
      "clUrl": "https://commits.webkit.org/316962@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=318509\n\nReviewed by Antti Koivisto.\n\nThe flexible-length resolution (CSS Flexbox 9.7) tracked each item's frozen\nstate as a bool on FlexLayoutItem and collected the min/max violations as\nVector\u003cFlexLayoutItem*\u003e. FlexLayout::layout keeps this state local to the\nresolution instead -- a Vector\u003cbool\u003e for the frozen set and Vector\u003csize_t\u003e index\nlists for the violations -- leaving the flex item immutable. Match that shape.\n\nresolveFlexibleLengthsForLineItems now owns a local Vector\u003cbool\u003e frozen and\nthreads it (with the item span) through freezeInflexibleItems,\nresolveFlexibleLengths, and freezeViolations, which index into the span rather\nthan dereference stored pointers. The frozen flag was already reset to false on\nentry every call, so it was function-scoped scratch, and nothing outside these\nthree helpers read it. No change in behavior.\n\n* Source/WebCore/rendering/RenderFlexibleBox.h:\n* Source/WebCore/rendering/RenderFlexibleBox.cpp:\n(WebCore::RenderFlexibleBox::resolveFlexibleLengthsForLineItems):\n(WebCore::RenderFlexibleBox::freezeViolations):\n(WebCore::RenderFlexibleBox::freezeInflexibleItems):\n(WebCore::RenderFlexibleBox::resolveFlexibleLengths):\n\nCanonical link: https://commits.webkit.org/316962@main",
      "email": "zalan@apple.com",
      "hash": "30bbc8f0d935a6b81044242f0e9dfd2631862776",
      "subject": "[cleanup] Track the flexible-length resolution's frozen flag and violations as local lists instead of on FlexLayoutItem"
    },
    "316963@main": {
      "author": "Alan Baradlay",
      "avatar": "https://www.gravatar.com/avatar/788d66417db806c567552cfa1ae89f77?d=identicon\u0026s=64",
      "cl": "316963@main",
      "clUrl": "https://commits.webkit.org/316963@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=304027\n\nUnreviewed rebaseline.\n\n(anon blocks are gone.)\n\n* LayoutTests/platform/ios/fast/block/basic/001-expected.txt:\n* LayoutTests/platform/ios/TestExpectations:\n\nCanonical link: https://commits.webkit.org/316963@main",
      "email": "zalan@apple.com",
      "hash": "ca3fef88b46040f46b818204034d65d9a6683a9a",
      "subject": "REGRESSION (303972@main): [ iOS ] fast/block/basic/001.html is a flaky failure"
    },
    "316964@main": {
      "author": "Alan Baradlay",
      "avatar": "https://www.gravatar.com/avatar/788d66417db806c567552cfa1ae89f77?d=identicon\u0026s=64",
      "cl": "316964@main",
      "clUrl": "https://commits.webkit.org/316964@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=318511\n\nReviewed by Antti Koivisto.\n\nThe flexible-length resolution wrote each item's used main size onto\nFlexLayoutItem::flexedContentSize, and computeMainSizeForFlexItems then copied\nthat member into the returned Vector\u003cLayoutUnit\u003e. FlexLayout::layout keeps the\nused main size only in a parallel SizeList and leaves LogicalFlexItem immutable.\nMatch that: computeMainSizeForFlexItems now sizes mainSizeList up front and hands\neach line a slice to write directly, so the size never lands on the item.\n\nresolveFlexibleLengthsForLineItems and the freeze helpers take a\nstd::span\u003cLayoutUnit\u003e mainSizes parallel to the item span and write it by index;\nlayoutFlexItems / layoutFlexItemAfterMainSizing take the size from the list; and\nflexedMarginBoxSize takes the main size as an argument. LineState gains a\nstd::span\u003cLayoutUnit\u003e mainSizes (a slice of mainSizeList, symmetric with the\nflexLayoutItems span it already holds) so the multi-line column re-resolution in\ndistributeMainAxisFreeSpaceForMultilineColumnIfNeeded re-writes the same backing\nstorage the follow-up layout reads. FlexLayoutItem::flexedContentSize is gone.\n\nBehavior is unchanged: the same values are written in the same order, only into\nthe list rather than the item; mainSizeList lives for the whole layout and is\nnever resized after the line slices are taken, so those spans stay valid.\n\n* Source/WebCore/rendering/RenderFlexibleBox.h:\n* Source/WebCore/rendering/RenderFlexibleBox.cpp:\n(WebCore::RenderFlexibleBox::FlexLayoutItem::flexedMarginBoxSize):\n(WebCore::RenderFlexibleBox::LineState::LineState):\n(WebCore::RenderFlexibleBox::resolveFlexibleLengthsForLineItems):\n(WebCore::RenderFlexibleBox::distributeMainAxisFreeSpaceForMultilineColumnIfNeeded):\n(WebCore::RenderFlexibleBox::performFlexLayout):\n(WebCore::RenderFlexibleBox::computeMainSizeForFlexItems):\n(WebCore::RenderFlexibleBox::layoutFlexItems):\n(WebCore::RenderFlexibleBox::freezeViolations):\n(WebCore::RenderFlexibleBox::freezeInflexibleItems):\n(WebCore::RenderFlexibleBox::resolveFlexibleLengths):\n(WebCore::RenderFlexibleBox::layoutFlexItemAfterMainSizing):\n\nCanonical link: https://commits.webkit.org/316964@main",
      "email": "zalan@apple.com",
      "hash": "266e04efc6fa98fd9f44501aa686c92fdf64c7a6",
      "subject": "[cleanup] Store each flex item's used main size in a list instead of on FlexLayoutItem"
    },
    "316965@main": {
      "author": "Tim Horton",
      "avatar": "https://www.gravatar.com/avatar/a04261df168177f0d816f3c7276f6183?d=identicon\u0026s=64",
      "cl": "316965@main",
      "clUrl": "https://commits.webkit.org/316965@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319147\nrdar://181967418\n\nReviewed by Abrar Rahman Protyasha and Richard Robinson.\n\n* Source/WebKit/UIProcess/mac/WebDataListSuggestionsDropdownMac.mm:\n(-[WKDataListSuggestionsController dropdownRectForElementRect:]):\nInstead of clamping to a (0,0) origin, clamp to the actual screen bounds,\nwhich can totally be negative for screens left of the main screen.\n\nCanonical link: https://commits.webkit.org/316965@main",
      "email": "thorton@apple.com",
      "hash": "1959e4b412b5343aa4a2c957c03c4163bd9a1dca",
      "subject": "datalist popup menu is presented in the wrong place when on any screen to the left of the main screen"
    },
    "316966@main": {
      "author": "Claudio Saavedra",
      "avatar": "https://www.gravatar.com/avatar/376a6edb56b8e52de407ea171c869bcf?d=identicon\u0026s=64",
      "cl": "316966@main",
      "clUrl": "https://commits.webkit.org/316966@main",
      "description": "Unreviewed gardening.\n\nThese tests are passing consistently accross all bots for at least\n200 runs.\n\n* LayoutTests/platform/glib/TestExpectations:\n\nCanonical link: https://commits.webkit.org/316966@main",
      "email": "csaavedra@igalia.com",
      "hash": "8aa4faf550e4ac44096544c915ed6eab732d399d",
      "subject": "[GLIB] Remove glib stale flaky expectations"
    },
    "316967@main": {
      "author": "Claudio Saavedra",
      "avatar": "https://www.gravatar.com/avatar/376a6edb56b8e52de407ea171c869bcf?d=identicon\u0026s=64",
      "cl": "316967@main",
      "clUrl": "https://commits.webkit.org/316967@main",
      "description": "Unreviewed gardening.\n\nThese tests have passed consistently in the last 200 runs in GTK and WPE\nbots.\n\n* LayoutTests/platform/gtk/TestExpectations:\n* LayoutTests/platform/wpe/TestExpectations:\n\nCanonical link: https://commits.webkit.org/316967@main",
      "email": "csaavedra@igalia.com",
      "hash": "301dbbb74c929357a7cdf840156468ed510f3e74",
      "subject": "[GLIB] Remove test expectations for flaky tests that are passing consistently"
    },
    "316968@main": {
      "author": "Alan Baradlay",
      "avatar": "https://www.gravatar.com/avatar/788d66417db806c567552cfa1ae89f77?d=identicon\u0026s=64",
      "cl": "316968@main",
      "clUrl": "https://commits.webkit.org/316968@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=318512\n\nReviewed by Antti Koivisto.\n\nEach item's flow-aware location was accumulated on FlexLayoutItem::flowAwareLocation\nby the placement, alignment, and flip passes, then flushed to the renderer in a\nfinal loop. FlexLayout::layout keeps position in a parallel list and leaves\nLogicalFlexItem immutable. Match that: performFlexLayout owns a Vector\u003cLayoutPoint\u003e\npositionList and LineState carries a std::span\u003cLayoutPoint\u003e positions slice of it,\nsymmetric with the flexLayoutItems and mainSizes spans it already holds.\n\nplaceFlexItems and layoutColumnReverse write positions[i] (and still apply it to\nthe renderer eagerly, so the multi-line column relayout in\ndistributeMainAxisFreeSpaceForMultilineColumnIfNeeded repaints from the placed\nlocation); the cross-axis passes move the slot instead of the item, so\nadjustAlignmentForFlexItem now takes a LayoutPoint\u0026 and updateAutoMarginsInCrossAxis\nthreads one through; handleCrossAxisAlignmentForFlexLines/ForFlexItems, the flips,\nand baseline alignment address it by index. The final apply loop reads\npositionList. FlexLayoutItem::flowAwareLocation is gone.\n\nBehavior is unchanged: the same location is computed and written to the same\nstorage in the same order, only into the list rather than the item; the slice a\nline writes is the same backing store the final loop reads, and positionList lives\nfor the whole layout and is never resized after the slices are taken.\n\n* Source/WebCore/rendering/RenderFlexibleBox.h:\n* Source/WebCore/rendering/RenderFlexibleBox.cpp:\n(WebCore::RenderFlexibleBox::LineState::LineState):\n(WebCore::RenderFlexibleBox::distributeMainAxisFreeSpaceForMultilineColumnIfNeeded):\n(WebCore::RenderFlexibleBox::setFlexItemGeometry):\n(WebCore::RenderFlexibleBox::performFlexLayout):\n(WebCore::RenderFlexibleBox::handleMainAxisAlignment):\n(WebCore::RenderFlexibleBox::updateAutoMarginsInCrossAxis):\n(WebCore::RenderFlexibleBox::placeFlexItems):\n(WebCore::RenderFlexibleBox::layoutColumnReverse):\n(WebCore::RenderFlexibleBox::handleCrossAxisAlignmentForFlexLines):\n(WebCore::RenderFlexibleBox::adjustAlignmentForFlexItem):\n(WebCore::RenderFlexibleBox::handleCrossAxisAlignmentForFlexItems):\n(WebCore::RenderFlexibleBox::performBaselineAlignment):\n(WebCore::RenderFlexibleBox::flipForRightToLeftColumn):\n(WebCore::RenderFlexibleBox::flipForWrapReverse):\n\nCanonical link: https://commits.webkit.org/316968@main",
      "email": "zalan@apple.com",
      "hash": "aee9be188fe42f946a278e308ec85c96fba34a65",
      "subject": "[cleanup] Store each flex item's flow-aware location in a list instead of on FlexLayoutItem"
    },
    "316969@main": {
      "author": "Yijia Huang",
      "avatar": "https://www.gravatar.com/avatar/5bc95a5f0a5fdfc107bbdec6979dae89?d=identicon\u0026s=64",
      "cl": "316969@main",
      "clUrl": "https://commits.webkit.org/316969@main",
      "description": "rdar://181926853\nhttps://bugs.webkit.org/show_bug.cgi?id=319109\n\nReviewed by Yusuke Suzuki.\n\nAdd TemporalCore::getISODateTimeFor as the single spec-AO impl; five inline\nsites now delegate to it. Introduce ISO8601::PlainDateTime as the value-return\ntype; TemporalZonedDateTime::getLocalDateAndTime renamed to getLocalDateTime\nand returns ISO8601::PlainDateTime by value.\n\nPort exactTimeToLocalDateAndTime to temporal_rs's IsoDateTime::from_epoch_nanos\nvia new balanceIsoTime and balanceIsoDate helpers. Offset is applied at ns\nprecision (fixes latent sub-ms truncation).\n\nRefactor TemporalNow: extract systemDateTime; each plainXxxISO factory mirrors\nthe spec's 2-step form.\n\nTests: JSTests/stress/temporal-now.js\n       Source/JavaScriptCore/API/tests/TemporalCoreTest.cpp\n\nCanonical link: https://commits.webkit.org/316969@main",
      "email": "yijia_huang@apple.com",
      "hash": "f9f65c7ff4f625567d7010206419ed4503ed379d",
      "subject": "[JSC][Temporal] Deduplicate GetISODateTimeFor and align with temporal_rs"
    },
    "316970@main": {
      "author": "David Kilzer",
      "avatar": "https://www.gravatar.com/avatar/e228ffc7a792e70bf2d160563c18dcc6?d=identicon\u0026s=64",
      "cl": "316970@main",
      "clUrl": "https://commits.webkit.org/316970@main",
      "description": "\u003chttps://bugs.webkit.org/show_bug.cgi?id=319166\u003e\n\u003crdar://182004010\u003e\n\nUnreviewed build fix.\n\n* Source/WebCore/Configurations/WebCore.xcconfig:\n(WK_DEFAULT_WK_AUDIT_SPI):\n- Explicitly clear for tvOS, visionOS and watchOS.\n\nCanonical link: https://commits.webkit.org/316970@main",
      "email": "ddkilzer@apple.com",
      "hash": "8e83fc1c7d6a2f1cb346ea7bdc486deec61f2db7",
      "subject": "REGRESSION (316928@main): WebCore audit-spi should be disabled on non-iOS embedded platforms"
    },
    "316971@main": {
      "author": "Claudio Saavedra",
      "avatar": "https://www.gravatar.com/avatar/376a6edb56b8e52de407ea171c869bcf?d=identicon\u0026s=64",
      "cl": "316971@main",
      "clUrl": "https://commits.webkit.org/316971@main",
      "description": "Unreviewed gardening\n\n* LayoutTests/platform/glib/TestExpectations:\n* LayoutTests/platform/gtk/TestExpectations:\n* LayoutTests/platform/wpe/TestExpectations:\n\nCanonical link: https://commits.webkit.org/316971@main",
      "email": "csaavedra@igalia.com",
      "hash": "352982ed80fb9dd21515d3109ca146ae16fc9300",
      "subject": "[GLIB] Tighten flaky tests expectations"
    },
    "316972@main": {
      "author": "Alan Baradlay",
      "avatar": "https://www.gravatar.com/avatar/788d66417db806c567552cfa1ae89f77?d=identicon\u0026s=64",
      "cl": "316972@main",
      "clUrl": "https://commits.webkit.org/316972@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=318514\n\nReviewed by Antti Koivisto.\n\nThe last mutable field on FlexLayoutItem was mainAxisMargin: seeded from the\nrenderer's margin extent and then trimmed in place by margin-trim during line\ncollection. FlexLayout::layout keeps margins in a parallel list and leaves\nLogicalFlexItem immutable. Match that: performFlexLayout owns a Vector\u003cLayoutUnit\u003e\nmarginsList (seeded right after collectFlexItems from the same horizontal/vertical\nmargin extent the ctor used), and LineState carries a std::span\u003cconst LayoutUnit\u003e\nmargins slice of it, symmetric with the mainSizes and positions spans.\n\ncomputeFlexLines/computeNextFlexLine take the list and trim marginsList[index] in\nplace (trimMainAxisMarginStart/End now take a LayoutUnit\u0026 slot); the three\n*MarginBoxSize helpers take the margin as an argument (like flexedMarginBoxSize\ntook the main size); canFitItemWithTrimmedMarginEnd takes it too;\nresolveFlexibleLengthsForLineItems reads a per-line margins span;\nhandleMainAxisAlignment reads marginsList by index. FlexLayoutItem::mainAxisMargin\nis gone, so the item is now a pure immutable input.\n\nBehavior is unchanged: the initial margin, the trim subtraction, and every read\nare the same values in the same order, only in the list rather than the item;\nthe trim still happens during collection before the sizing reads, and marginsList\nlives for the whole layout and is never resized after the line slices are taken.\n\n* Source/WebCore/rendering/RenderFlexibleBox.h:\n* Source/WebCore/rendering/RenderFlexibleBox.cpp:\n(WebCore::RenderFlexibleBox::FlexLayoutItem::FlexLayoutItem):\n(WebCore::RenderFlexibleBox::FlexLayoutItem::hypotheticalMainAxisMarginBoxSize):\n(WebCore::RenderFlexibleBox::FlexLayoutItem::flexBaseMarginBoxSize):\n(WebCore::RenderFlexibleBox::FlexLayoutItem::flexedMarginBoxSize):\n(WebCore::RenderFlexibleBox::LineState::LineState):\n(WebCore::RenderFlexibleBox::resolveFlexibleLengthsForLineItems):\n(WebCore::RenderFlexibleBox::distributeMainAxisFreeSpaceForMultilineColumnIfNeeded):\n(WebCore::RenderFlexibleBox::canFitItemWithTrimmedMarginEnd):\n(WebCore::RenderFlexibleBox::trimMainAxisMarginStart):\n(WebCore::RenderFlexibleBox::trimMainAxisMarginEnd):\n(WebCore::RenderFlexibleBox::performFlexLayout):\n(WebCore::RenderFlexibleBox::computeFlexLines):\n(WebCore::RenderFlexibleBox::computeMainSizeForFlexItems):\n(WebCore::RenderFlexibleBox::handleMainAxisAlignment):\n(WebCore::RenderFlexibleBox::computeNextFlexLine):\n\nCanonical link: https://commits.webkit.org/316972@main",
      "email": "zalan@apple.com",
      "hash": "f1a2d7ccc011b8da238839e6e66172d50f283e4f",
      "subject": "[cleanup] Store each flex item's main-axis margin in a list instead of on FlexLayoutItem"
    },
    "316973@main": {
      "author": "Abrar Rahman Protyasha",
      "avatar": "https://www.gravatar.com/avatar/fce5b3c4e9f3c59a4873e08c9f03c3b1?d=identicon\u0026s=64",
      "cl": "316973@main",
      "clUrl": "https://commits.webkit.org/316973@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319148\nrdar://181972000\n\nReviewed by Richard Robinson.\n\nThe `run-api-tests` script is great at both documenting the various ways\nto configure TWKAPI runs, and at exposing arguments to pass on these\ncustomizations to the underlying binary.\n\nHowever, debugging flows often consist of invoking the TWKAPI binary\ndirectly. In these cases, the many ways to configure test runs are\ndifficult to discover without peeking at source code.\n\nTo alleviate this problem, we teach TWKAPI about `-h/--help` flags that\ngenerate a handy output documenting the various accepted options.\n\n* Tools/TestWebKitAPI/Runner/TestRunner.swift:\n(TestRunner.usage):\n* Tools/TestWebKitAPI/Runner/TestWebKitAPI.swift:\n(TestWebKitAPI.main):\n\nCanonical link: https://commits.webkit.org/316973@main",
      "email": "a_protyasha@apple.com",
      "hash": "903ee1c8cb2d6151b4f2b171f92581b345e93ff7",
      "subject": "TestWebKitAPI binary should have a help output"
    }
  },
  "date": "2026-07-11",
  "days": 1,
  "generatedAt": "2026-07-11T22:05:40Z",
  "markdown": "## Highlights\n\n- **Rendering** Flexbox internals were reshaped to compute and carry per-item sizing and positioning in local lists, a sizable cleanup that should make future layout work less fragile. [commit 316972@main](https://commits.webkit.org/316972@main) [commit 316968@main](https://commits.webkit.org/316968@main) [commit 316964@main](https://commits.webkit.org/316964@main) [commit 316962@main](https://commits.webkit.org/316962@main) [commit 316959@main](https://commits.webkit.org/316959@main) [commit 316954@main](https://commits.webkit.org/316954@main)\n\n- **Web Platform** WebTransport testing got a real boost with the WPT HTTP/3 server wired into the layout test harness, unlocking passing coverage for a still-young transport surface. [commit 316945@main](https://commits.webkit.org/316945@main)\n\n- **V8** JavaScript conformance moved forward with fixes for `JSON.stringify` fast-path behavior, Promise rejection semantics, and Temporal date-time plumbing. [commit 316941@main](https://commits.webkit.org/316941@main) [commit 316937@main](https://commits.webkit.org/316937@main) [commit 316969@main](https://commits.webkit.org/316969@main)\n\n- **UI** A multi-display datalist popup bug is fixed, so menus now position correctly on screens placed to the left of the primary display. [commit 316965@main](https://commits.webkit.org/316965@main)\n\n- **A11y** Text extraction now adds better surrounding context for unlabeled SVG icons, improving downstream accessibility and content understanding. [commit 316956@main](https://commits.webkit.org/316956@main)\n\n- **Security** Non-iOS embedded platforms stop exposing the WebCore audit SPI after a regression, tightening platform-specific surface area again. [commit 316970@main](https://commits.webkit.org/316970@main)\n\n- **Rendering** Scroll-state query evaluation now picks its container up front, a targeted fix in container-query plumbing that should reduce wrong-target behavior. [commit 316961@main](https://commits.webkit.org/316961@main)\n\n- **Mobile** iOS gains `_standardFontFamily` on `WKPreferences`, closing an API gap with platform-specific embedding code. [commit 316935@main](https://commits.webkit.org/316935@main)\n\n## What landed by area\n\n### Layout and rendering\n\n- **Rendering** Grid/flex content with stretch alignment now actually triggers stretch sizing in GFC, fixing a behavior mismatch in layout resolution. [commit 316949@main](https://commits.webkit.org/316949@main)\n- **Rendering** Scroll-state query handling now selects the query container before evaluation, tightening the execution model for that feature. [commit 316961@main](https://commits.webkit.org/316961@main)\n- **Refactor** Grid intrinsic track sizing context lost redundant fields, trimming state from the GFC implementation. [commit 316939@main](https://commits.webkit.org/316939@main)\n- **Rendering** `\u003cfont face\u003e` now correctly accepts numeric-token family names like \"Bodoni 72\" instead of falling back to the default font. [commit 316948@main](https://commits.webkit.org/316948@main)\n\n### CSS, links, and popovers\n\n- **Web Platform** Relative links containing \"://\" are now marked visited correctly after navigation, fixing a very old edge case in link-state handling. [commit 316957@main](https://commits.webkit.org/316957@main)\n- **Web Platform** Popover WPTs were re-imported for `html/semantics/popovers`, pulling in current cross-browser expectations. [commit 316940@main](https://commits.webkit.org/316940@main)\n\n### JavaScriptCore\n\n- **V8** `PromiseResolveThenableJob` now rejects when `SpeciesConstructor` throws, bringing promise behavior in line with spec expectations. [commit 316937@main](https://commits.webkit.org/316937@main)\n- **V8** `JSON.stringify` fast-path logic now respects a non-enumerable own `toJSON` and a replaced array prototype instead of silently skipping them. [commit 316941@main](https://commits.webkit.org/316941@main)\n- **V8** Temporal's `GetISODateTimeFor` logic was deduplicated and aligned with `temporal_rs`, reducing divergence in date-time semantics. [commit 316969@main](https://commits.webkit.org/316969@main)\n- **Build** `run-jsc-stress-tests` now honors `NUMBER_OF_PROCESSORS` from the environment, making local and CI parallelism control more predictable. [commit 316943@main](https://commits.webkit.org/316943@main)\n\n### Media, text tracks, and platform promises\n\n- **Media** `requestHostingContext` now returns a `NativePromise`, modernizing the async contract at the API boundary. [commit 316960@main](https://commits.webkit.org/316960@main)\n- **Media** `VTTCue` got smaller through enum regrouping, a low-level memory win in WebVTT data structures. [commit 316950@main](https://commits.webkit.org/316950@main)\n- **Refactor** `WebVTTToken` now uses a `using` alias instead of `typedef`, a tiny cleanup in text track code. [commit 316958@main](https://commits.webkit.org/316958@main)\n- **UI** Trackpad scrubbing on the apple.com/events video no longer causes accidental page navigation, fixing a nasty AppKit gesture interaction. [commit 316955@main](https://commits.webkit.org/316955@main)\n\n### Networking and transport\n\n- **Networking** WebTransport layout tests now run against the WPT webtransport-h3 server, and the passing tests are enabled in harness. [commit 316945@main](https://commits.webkit.org/316945@main)\n- **Networking** WebSocket cookie tests were re-enabled, restoring coverage around cookie behavior on that stack. [commit 316942@main](https://commits.webkit.org/316942@main)\n\n### API, UI, and embedding\n\n- **UI** Datalist popup placement is fixed on secondary displays positioned left of the main screen. [commit 316965@main](https://commits.webkit.org/316965@main)\n- **Mobile** `-[WKPreferences _standardFontFamily]` is now exposed on iOS too, improving parity for embedders. [commit 316935@main](https://commits.webkit.org/316935@main)\n- **Security** A regression that enabled WebCore audit SPI on non-iOS embedded platforms was corrected by disabling it there again. [commit 316970@main](https://commits.webkit.org/316970@main)\n\n### Accessibility and text extraction\n\n- **A11y** Text extraction now emits more context before SVG icons that have no relevant accessibility attributes, improving semantic output quality. [commit 316956@main](https://commits.webkit.org/316956@main)\n\n### Build, tooling, and test infrastructure\n\n- **Build** TestWebKitAPI binaries now provide help output, a small but useful quality-of-life fix for test runners and automation. [commit 316973@main](https://commits.webkit.org/316973@main)\n- **Build** CMake now runs `replace-webkit-additions-includes` for WebKit headers, tightening generated include handling. [commit 316953@main](https://commits.webkit.org/316953@main)\n- **Build** `cmake --build` with `ninja-wrapper` now prints the \"entering directory\" message, making build logs easier to follow. [commit 316952@main](https://commits.webkit.org/316952@main)\n- **DevTools** TLF gained results database schema for storing EWS test results and flaky tests, laying groundwork for better infrastructure visibility. [commit 316938@main](https://commits.webkit.org/316938@main)\n- **Build** Safer C++ expectations were updated for iOS, continuing the rollout and validation of stricter toolchain assumptions. [commit 316944@main](https://commits.webkit.org/316944@main)\n\n### Test gardening and platform stability\n\n- **Refactor** GLIB flaky-test expectations were tightened to match current reality instead of masking too much. [commit 316971@main](https://commits.webkit.org/316971@main)\n- **Refactor** GLIB expectations for tests that now pass consistently were removed, shrinking stale suppression. [commit 316967@main](https://commits.webkit.org/316967@main)\n- **Refactor** Stale GLIB flaky expectations were cleaned out again, continuing test hygiene work. [commit 316966@main](https://commits.webkit.org/316966@main)\n- **Mobile** A flaky iOS failure in `fast/block/basic/001.html` was addressed after a regression. [commit 316963@main](https://commits.webkit.org/316963@main)\n- **UI** A flaky macOS `WKWebView.InputChangeFiresOnWindowBlur` TestWebKitAPI failure was gardened. [commit 316936@main](https://commits.webkit.org/316936@main)\n\n## Reverts \u0026 Reapplies\n\nNone.",
  "repo": "webkit",
  "repoDisplay": "WebKit",
  "rollGroups": [
    {
      "name": "Unreviewed",
      "count": 3
    }
  ],
  "since": "2026-07-11",
  "totals": {
    "commits": 39,
    "features": 36,
    "rolls": 3
  },
  "until": "2026-07-11"
}