{
  "commits": {
    "318818@main": {
      "author": "Nikolas Zimmermann",
      "avatar": "https://www.gravatar.com/avatar/83cbd636495835720e369cd589e3ca5e?d=identicon\u0026s=64",
      "cl": "318818@main",
      "clUrl": "https://commits.webkit.org/318818@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=321335\n\nUnreviewed gardening.\n\nRemove an iOS specific baseline that's no longer needed (matches the generic one),\nplus update TestExepctations for two more passing LBSE tests.\n\n* LayoutTests/platform/ios/svg/repaint/mask-object-bounding-box-transformed-expected.txt: Removed.\n* LayoutTests/platform/mac-tahoe-wk2-lbse-text/TestExpectations:\n\nCanonical link: https://commits.webkit.org/318818@main",
      "email": "nzimmermann@igalia.com",
      "hash": "99f7faef3a01564a0d2a47bb44302c3ab5be28bb",
      "subject": "[LBSE] Update baseline + TestExpectations"
    },
    "318819@main": {
      "author": "Nikolas Zimmermann",
      "avatar": "https://www.gravatar.com/avatar/83cbd636495835720e369cd589e3ca5e?d=identicon\u0026s=64",
      "cl": "318819@main",
      "clUrl": "https://commits.webkit.org/318819@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=321337\n\nReviewed by Carlos Alberto Lopez Perez.\n\nThe do_package task dies while copying a recipe's image directory:\n\n    tar: ./usr/share: Cannot mkdir: Function not implemented\n\npseudo 1.9.3, the revision pinned by poky scarthgap 5.0.18, wraps openat2()\nwith an unconditional ENOSYS and hopes that callers fall back to an older\nsyscall. GNU tar linked against glibc 2.43 calls openat2() and reports the\nerror instead of falling back, so every do_package fails. tar is currently\nthe only entry in tmp/hosttools that references openat2.\n\nUpstream pseudo implements the openat2() wrapper since 1.9.9, so bump the\npseudo recipe to upstream master until poky ships a new enough revision.\n\n* Tools/yocto/meta-openembedded_and_meta-webkit.patch:\n\nCanonical link: https://commits.webkit.org/318819@main",
      "email": "nzimmermann@igalia.com",
      "hash": "18a9a4ac61884fe28c374d84757469e20161bd95",
      "subject": "[WPE][cross-toolchain-helper] webkitdevci builds fail on hosts with glibc 2.43 (e.g. Ubuntu 26.04 SDK)"
    },
    "318820@main": {
      "author": "Zak Ridouh",
      "avatar": "https://www.gravatar.com/avatar/d9b65ef530b9cbbfc6dff1ca158faace?d=identicon\u0026s=64",
      "cl": "318820@main",
      "clUrl": "https://commits.webkit.org/318820@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=321126\nrdar://184160039\n\nReviewed by Charlie Wolfe.\n\nThe UI process now pairs a bare WebCore::MediaPlayerClientIdentifier from IPC with\nthe process identity of the sending IPC::Connection, so nothing constructs or sends a\nprocess-qualified media identifier anymore. Delete the two pieces of machinery that\nserved only those senders:\n\n- processQualify(), whose last callers were removed when the media manager messages\n  and the layer-tree / text-recognition messages were converted.\n- The WebKit::PlaybackSessionContextIdentifier serialization alias, whose generated\n  coder is now unused and which needlessly advertised the type to\n  IPC.serializedTypeInfo.\n\nWebKit::PlaybackSessionContextIdentifier itself stays. It remains load-bearing as\nUI-process-internal state — it is how the UI process distinguishes same-numbered\nmedia elements in different processes. The end state is the point: the UI process\nconstructs this type and never receives it.\n\nNo change in behaviour; pure dead-code removal.\n\n* Source/WebKit/Shared/PlaybackSessionContextIdentifier.h:\n(WebKit::processQualify): Deleted.\n* Source/WebKit/Shared/ProcessQualified.serialization.in:\n\nCanonical link: https://commits.webkit.org/318820@main",
      "email": "zakr@apple.com",
      "hash": "7b1a9ea70e83ee49ddab02a1d2b1ad1ddbdd425f",
      "subject": "[Site Isolation] Remove dead process-qualified media identifier plumbing"
    },
    "318821@main": {
      "author": "Yusuke Suzuki",
      "avatar": "https://www.gravatar.com/avatar/3455d9081295e3e740c1ffa901217d9b?d=identicon\u0026s=64",
      "cl": "318821@main",
      "clUrl": "https://commits.webkit.org/318821@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=321317\nrdar://184355743\n\nReviewed by Yijia Huang.\n\nIt is 32bit only issue. We should propagate uint64_t index until we do\nbound check, after that, we can use size_t. In 64bit, it does not matter\nsince sizeof(uint64_t) == sizeof(size_t).\n\nTest: JSTests/stress/typedarray-put-out-of-range-canonical-numeric-index.js\n\n* JSTests/stress/typedarray-put-out-of-range-canonical-numeric-index.js: Added.\n(shouldBe):\n* Source/JavaScriptCore/runtime/JSGenericTypedArrayView.h:\n* Source/JavaScriptCore/runtime/JSGenericTypedArrayViewInlines.h:\n(JSC::JSGenericTypedArrayView\u003cAdaptor\u003e::defineOwnProperty):\n(JSC::JSGenericTypedArrayView\u003cAdaptor\u003e::setIndex):\n\nCanonical link: https://commits.webkit.org/318821@main",
      "email": "ysuzuki@apple.com",
      "hash": "c7ed9fcf795770aaef1c237379693dbfc4b205c3",
      "subject": "[JSC] Propagate uint64_t index until we do bound-check for TypedArray"
    },
    "318822@main": {
      "author": "Gerald Squelart",
      "avatar": "https://www.gravatar.com/avatar/894904f08d85651bf2a76868a4d2f1b3?d=identicon\u0026s=64",
      "cl": "318822@main",
      "clUrl": "https://commits.webkit.org/318822@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=321147\nrdar://158267620\n\nReviewed by Mike Wyrzykowski.\n\nRemove the long-winded and unaccelerated float16 conversion functions.\nInstead, add float16 support through the accelerated path.\n\nNote: There is no need for unaccelerated float16 functions at this time,\nsince PixelFormat::RGBA16F is only available on platforms where\naccelerated CG functions exist and should be used.\n\n* Source/WebCore/platform/graphics/PixelBufferConversion.cpp:\n(WebCore::makeVImageCGImageFormat):\n(WebCore::convertImagePixelsAccelerated):\n(WebCore::copyImagePixels):\n(WebCore::isSupportedConversionFormat):\n(WebCore::hasEnoughBytesForConversion):\n(WebCore::convertImagePixels):\n(WebCore::readFloat16): Deleted.\n(WebCore::writeFloat16): Deleted.\n(WebCore::convertImagePixelsFromFloat16ToFloat16): Deleted.\n(WebCore::convertImagePixelsFromFloat16): Deleted.\n(WebCore::convertImagePixelsToFloat16): Deleted.\n* Tools/TestWebKitAPI/Tests/WebCore/PixelBufferConversionTests.cpp:\n(TestWebKitAPI::byteVectorFromFloat16s):\n(TestWebKitAPI::float16sFromByteVector):\n(TestWebKitAPI::convertFloat16s):\n(TestWebKitAPI::expectFloat16sNear):\n(TestWebKitAPI::TEST(PixelBufferConversionTests, convertImagePixelsFloat16Identical)):\n(TestWebKitAPI::TEST(PixelBufferConversionTests, convertImagePixelsFloat16AlphaOnly)):\n(TestWebKitAPI::TEST(PixelBufferConversionTests, convertImagePixelsFloat16ColorSpaceConversion)):\n(TestWebKitAPI::TEST(PixelBufferConversionTests, convertImagePixelsFloat16ToAndFromByte)):\n(TestWebKitAPI::TEST(PixelBufferConversionTests, convertImagePixelsFloat16PaddedRows)):\n\nCanonical link: https://commits.webkit.org/318822@main",
      "email": "g_squelart@apple.com",
      "hash": "e0a4c3f6764a4b74c23660affaef01c30c8afd73",
      "subject": "Accelerated convertImagePixels for PixelFormat::RGBA16F"
    },
    "318823@main": {
      "author": "Kiet Ho",
      "avatar": "https://www.gravatar.com/avatar/d9058b37006dce1f55f91b8ccc82f9a3?d=identicon\u0026s=64",
      "cl": "318823@main",
      "clUrl": "https://commits.webkit.org/318823@main",
      "description": "rdar://183590606\nhttps://bugs.webkit.org/show_bug.cgi?id=320625\n\nReviewed by Antti Koivisto.\n\nposition-anchor: none makes an element not have a default anchor, while\nposition-anchor: normal gives it a default anchor (the implicit anchor)\nif it uses position-area.\n\nA natural place to implement this is AnchorPositionEvaluator::defaultAnchorName,\nwhich determines the name of the default anchor name. Instead, the current code\ndoesn't touch defaultAnchorName at all - elements that should not have a default\nanchor are still given the implicit anchor as the default anchor. Then, in\nfindAnchorForAnchorFunctionAndAttemptResolution, we reject resolving the implicit\nanchor if the element shouldn't have a default anchor.\n\nThis patch moves the implementation to defaultAnchorName - it now returns std::nullopt\nif the element doesn't have a default anchor. Its callers got fixed up to deal with\nit returning std::nullopt.\n\nRefactoring, tested by existing test suite.\n\n* Source/WebCore/style/AnchorPositionEvaluator.cpp:\n(WebCore::Style::AnchorPositionEvaluator::findAnchorForAnchorFunctionAndAttemptResolution):\n(WebCore::Style::findAnchorsForAnchorPositionedElement):\n(WebCore::Style::AnchorPositionEvaluator::updateAnchorPositioningStatesAfterInterleavedLayout):\n(WebCore::Style::AnchorPositionEvaluator::updateAnchorPositionedStateForDefaultAnchorAndPositionVisibility):\n(WebCore::Style::AnchorPositionEvaluator::defaultAnchorName):\n(WebCore::Style::AnchorPositionEvaluator::defaultAnchorForBox):\n* Source/WebCore/style/AnchorPositionEvaluator.h:\n\nCanonical link: https://commits.webkit.org/318823@main",
      "email": "kiet.ho@apple.com",
      "hash": "c2a26696cc420b4c9c925cdf6b1a2afa122dc9a8",
      "subject": "[css-anchor-position] Refactor how position-anchor: none and normal work"
    },
    "318824@main": {
      "author": "Richard Robinson",
      "avatar": "https://www.gravatar.com/avatar/a0d2f862985ed0fd47887be66f5a3e4f?d=identicon\u0026s=64",
      "cl": "318824@main",
      "clUrl": "https://commits.webkit.org/318824@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=321212\nrdar://184270073\n\nReviewed by Aditya Keerthi.\n\nUse of `Task` in Swift is much more common than uses of `WTF::Task` which is only used in a single\nfile. Therefore, remove the `using` declaration and just use the namespaced name, since that's what\nnamespaces are for anyways.\n\nTests: Tools/TestWebKitAPI/Tests/WebKit/WebPage/AppKit Gesture Tests/AppKitGesturesTestsSupport.swift\n       Tools/TestWebKitAPI/Tests/WebKit/WebPage/AppKit Gesture Tests/BasicAppKitGesturesTests.swift\n       Tools/TestWebKitAPI/Tests/WebKit/WebPage/AppKit Gesture Tests/DoubleClickGesturesTests.swift\n       Tools/TestWebKitAPI/Tests/WebKit/WebPage/AppKit Gesture Tests/EmbeddedAppKitGesturesTests.swift\n       Tools/TestWebKitAPI/Tests/WebKit/WebPage/SendInspectorMessage.swift\n       Tools/TestWebKitAPI/Tests/WebKit/WebPage/URLSchemeHandlerTests.swift\n       Tools/TestWebKitAPI/Tests/WebKit/WebPage/WebPageNavigationTests.swift\n       Tools/TestWebKitAPI/Tests/WebKit/WebPage/WebViewTests.swift\n\n* Source/WTF/wtf/CoroutineUtilities.h:\n* Source/WebKit/Platform/IPC/HandleMessage.h:\n(IPC::callMemberFunctionCoroutine):\n(IPC::callMemberFunctionCoroutineVoid):\n* Tools/TestWebKitAPI/Tests/WebKit/WebPage/AppKit Gesture Tests/AppKitGesturesTestsSupport.swift:\n* Tools/TestWebKitAPI/Tests/WebKit/WebPage/AppKit Gesture Tests/BasicAppKitGesturesTests.swift:\n* Tools/TestWebKitAPI/Tests/WebKit/WebPage/AppKit Gesture Tests/DoubleClickGesturesTests.swift:\n* Tools/TestWebKitAPI/Tests/WebKit/WebPage/AppKit Gesture Tests/EmbeddedAppKitGesturesTests.swift:\n* Tools/TestWebKitAPI/Tests/WebKit/WebPage/SendInspectorMessage.swift:\n* Tools/TestWebKitAPI/Tests/WebKit/WebPage/URLSchemeHandlerTests.swift:\n* Tools/TestWebKitAPI/Tests/WebKit/WebPage/WebPageNavigationTests.swift:\n* Tools/TestWebKitAPI/Tests/WebKit/WebPage/WebViewTests.swift:\n\nCanonical link: https://commits.webkit.org/318824@main",
      "email": "richard_robinson2@apple.com",
      "hash": "9f82586af24ce000cbf76a2b2aa22ea58c34f414",
      "subject": "Remove `using WTF::Task` since it conflicts with Swift's Task"
    },
    "318825@main": {
      "author": "Yusuke Suzuki",
      "avatar": "https://www.gravatar.com/avatar/3455d9081295e3e740c1ffa901217d9b?d=identicon\u0026s=64",
      "cl": "318825@main",
      "clUrl": "https://commits.webkit.org/318825@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=321316\nrdar://184355393\n\nReviewed by Yijia Huang.\n\nYou can set the same tables in different table index. So you cannot\ncheck the table identity by table index. We should check the actual\ntable's pointer.\n\nTest: JSTests/wasm/stress/table-copy-aliased-import.js\n\n* JSTests/wasm/stress/table-copy-aliased-import.js: Added.\n(reset):\n(contents):\n(test):\n(string_appeared_here.const.instance.await.instantiate.wat):\n* Source/JavaScriptCore/wasm/js/JSWebAssemblyInstance.cpp:\n(JSC::JSWebAssemblyInstance::tableCopy):\n\nCanonical link: https://commits.webkit.org/318825@main",
      "email": "ysuzuki@apple.com",
      "hash": "b1b0566f244ebf72f8cdd87ea3e9de08b768eff8",
      "subject": "[JSC] Wasm table.copy should not use index to check identity"
    },
    "318826@main": {
      "author": "Yusuke Suzuki",
      "avatar": "https://www.gravatar.com/avatar/3455d9081295e3e740c1ffa901217d9b?d=identicon\u0026s=64",
      "cl": "318826@main",
      "clUrl": "https://commits.webkit.org/318826@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=321328\nrdar://184364662\n\nReviewed by Yijia Huang.\n\nRegardless of memory64 / memory32, memarg offset is u64. This patch\nfixes that by introducing `parseMemoryOffset`. We decode VarUInt64, and\nthen do range check for memory32 case. IPInt side is already using\nVarUInt decoding so it does not need a change. Also we fix several Call,\nTable related offset scanning in parseUnreachableExpression.\n\nTests: JSTests/wasm/stress/memarg-offset-u64-encoding.js\n       JSTests/wasm/stress/unreachable-immediates-validation.js\n\n* JSTests/wasm/stress/memarg-offset-u64-encoding.js: Added.\n(leb):\n(paddedLeb):\n(section):\n(moduleBytes):\n(assertValid):\n* JSTests/wasm/stress/unreachable-immediates-validation.js: Added.\n(leb):\n(section):\n(moduleBytes):\n* Source/JavaScriptCore/wasm/WasmFunctionParser.h:\n(JSC::Wasm::FunctionParser\u003cContext\u003e::load):\n(JSC::Wasm::FunctionParser\u003cContext\u003e::store):\n(JSC::Wasm::FunctionParser\u003cContext\u003e::atomicLoad):\n(JSC::Wasm::FunctionParser\u003cContext\u003e::atomicStore):\n(JSC::Wasm::FunctionParser\u003cContext\u003e::atomicBinaryRMW):\n(JSC::Wasm::FunctionParser\u003cContext\u003e::atomicCompareExchange):\n(JSC::Wasm::FunctionParser\u003cContext\u003e::atomicWait):\n(JSC::Wasm::FunctionParser\u003cContext\u003e::atomicNotify):\n(JSC::Wasm::FunctionParser\u003cContext\u003e::simd):\n(JSC::Wasm::FunctionParser\u003cContext\u003e::parseMemoryOffset):\n(JSC::Wasm::FunctionParser\u003cContext\u003e::parseUnreachableExpression):\n\nCanonical link: https://commits.webkit.org/318826@main",
      "email": "ysuzuki@apple.com",
      "hash": "2e8a96a8c5857b071f073feea215c90803f22520",
      "subject": "[JSC] Fix Wasm memory64 memarg offset parsing"
    },
    "318827@main": {
      "author": "Chris Dumez",
      "avatar": "https://www.gravatar.com/avatar/a9f21fe3a8baf79b45f3c91572187bdc?d=identicon\u0026s=64",
      "cl": "318827@main",
      "clUrl": "https://commits.webkit.org/318827@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=321257\n\nReviewed by Ryosuke Niwa.\n\nWhen a \u003clabel\u003e contains interactive content (e.g. a \u003cbutton\u003e), the label's\nactivation behavior must do nothing for clicks targeting that interactive\ncontent, per https://html.spec.whatwg.org/#the-label-element.\n\nHTMLLabelElement::isEventTargetedAtInteractiveDescendants determined this by\nwalking the live composed tree from the event target up to the label. But the\nevent path is computed once, up front, at dispatch time, so the label still\ndefault-handles the click even if the interactive content removes itself from\nthe tree while handling that same click. In that case the target is no longer\na descendant of the label, the isShadowIncludingInclusiveAncestorOf() guard\nbailed early returning false, and the label went on to activate its control.\n\nOnly reject a target that is still connected but outside the label. A\ndisconnected target means interactive content removed itself mid-dispatch; its\nown subtree and ancestor chain remain intact, so the interactive-content walk\nbelow still detects it and correctly does nothing.\n\nNo new tests, rebaselined existing WPT test. This test was already passing\nin both Chrome and Firefox.\n\n* LayoutTests/imported/w3c/web-platform-tests/dom/events/label-default-action-expected.txt:\n* Source/WebCore/html/HTMLLabelElement.cpp:\n(WebCore::HTMLLabelElement::isEventTargetedAtInteractiveDescendants const):\n\nCanonical link: https://commits.webkit.org/318827@main",
      "email": "cdumez@apple.com",
      "hash": "c110cc1814093427588f3c7c421aed4587087ff2",
      "subject": "Label default action incorrectly triggers when clicked interactive content removes itself"
    },
    "318828@main": {
      "author": "Kate Lee",
      "avatar": "https://www.gravatar.com/avatar/35a2c13193d9f38e92785754264aa7da?d=identicon\u0026s=64",
      "cl": "318828@main",
      "clUrl": "https://commits.webkit.org/318828@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=321286\n\nUnreviewed gardening.\n\n* LayoutTests/platform/glib/TestExpectations:\n* LayoutTests/platform/gtk/TestExpectations:\n* LayoutTests/platform/wpe/TestExpectations:\n\nCanonical link: https://commits.webkit.org/318828@main",
      "email": "klee@igalia.com",
      "hash": "1194eb4af51484664a505a72567f290cf6763a28",
      "subject": "[GTK][WPE] Gardening of tests - 2026-08-07"
    },
    "318829@main": {
      "author": "Yijia Huang",
      "avatar": "https://www.gravatar.com/avatar/5bc95a5f0a5fdfc107bbdec6979dae89?d=identicon\u0026s=64",
      "cl": "318829@main",
      "clUrl": "https://commits.webkit.org/318829@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=321313\nrdar://184352721\n\nReviewed by Yusuke Suzuki.\n\nsetCalendarToMonthCode walked the months of a calendar year twice, once for\nHebrew and once for everything else, and resolveMonthCodeToOrdinal and\nnonISOCalendarDateToISO each walked once more: four loops in three functions.\nsearchYearForMonthCode does it once and reports where it stopped and why,\nleaving each caller its own constrain rule and its own answer to give. The\nconstrain rule is the part that genuinely differed: Hebrew M05L (Adar I)\nconstrains forward to M06, every other calendar backward.\n\nNo behaviour change. Hebrew's forward constrain is now guarded on the overshoot\nstop it applies to — M05L is the only monthCode that can be absent from a Hebrew\nyear — so a walk that leaves the year rewinds like every other calendar.\n\ncalendarYear now reaches ICU through withCalendarSetToDate and readICUField like\nthe rest of the accessor family.\n\nparseUTCOffset and parseTimeSpec take SubMinutePrecision instead of a bool,\nnaming the UTCOffset[SubMinutePrecision] grammar parameter, and TimeZoneRecord\nbecomes ISOStringTimeZoneParseRecord after the record it implements.\n\nCanonical link: https://commits.webkit.org/318829@main",
      "email": "yijia_huang@apple.com",
      "hash": "e07ecf4c4a07c61d5c331dfe900266ee50785cdf",
      "subject": "[JSC][Temporal] Replace the four monthCode search walks with one primitive"
    },
    "318830@main": {
      "author": "Yusuke Suzuki",
      "avatar": "https://www.gravatar.com/avatar/3455d9081295e3e740c1ffa901217d9b?d=identicon\u0026s=64",
      "cl": "318830@main",
      "clUrl": "https://commits.webkit.org/318830@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=321329\nrdar://184364939\n\nReviewed by Yijia Huang.\n\nWebAssembly.Memory.prototype.type()'s minimum size is mem_type's\nminimum limit[2], which is the current size of the memory, not initially\ndeclared size.\n\n[1]: https://webassembly.github.io/js-types/js-api/index.html#dom-memory-type\n[2]: https://webassembly.github.io/spec/core/appendix/embedding.html#embed-mem-type\n\nTest: JSTests/wasm/stress/memory-type-reflects-current-size.js\n\n* JSTests/wasm/stress/memory-type-reflects-current-size.js: Added.\n(check):\n(string_appeared_here.await.instantiate.module.memory):\n(string_appeared_here.memory.grow):\n(maximum.numOrBig):\n* Source/JavaScriptCore/wasm/js/JSWebAssemblyMemory.cpp:\n(JSC::JSWebAssemblyMemory::type):\n\nCanonical link: https://commits.webkit.org/318830@main",
      "email": "ysuzuki@apple.com",
      "hash": "707048fdabb7f80ccb5222e342ca5a4257eb1dd2",
      "subject": "[JSC] WebAssembly.Memory.prototype.type() needs to report current size"
    },
    "318831@main": {
      "author": "Yusuke Suzuki",
      "avatar": "https://www.gravatar.com/avatar/3455d9081295e3e740c1ffa901217d9b?d=identicon\u0026s=64",
      "cl": "318831@main",
      "clUrl": "https://commits.webkit.org/318831@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=321332\nrdar://184365775\n\nReviewed by Yijia Huang.\n\nMemory64 Wasm Memory was not correctly propagating memory64 flag. And\nSerializedScriptValue is incorrectly accessing addressType() of non\nattached memory, this is not correct. This patch fixes it.\n\nTests: JSTests/wasm/stress/memory64-shared-broadcast-address-type.js\n       js/dom/webassembly-memory-shared-zero-maximum-clone.html\n\n* JSTests/wasm/stress/memory64-shared-broadcast-address-type.js: Added.\n(const.agentSource.agent.receiveBroadcast):\n(broadcastAndCollect):\n* LayoutTests/js/dom/webassembly-memory-shared-zero-maximum-clone-expected.txt: Added.\n* LayoutTests/js/dom/webassembly-memory-shared-zero-maximum-clone.html: Added.\n* Source/JavaScriptCore/jsc.cpp:\n(JSC_DEFINE_HOST_FUNCTION):\n* Source/WebCore/bindings/js/SerializedScriptValue.cpp:\n(WebCore::CloneSerializer::dumpDerivedTerminal):\n(WebCore::CloneDeserializer::readDerivedTerminal):\n(WebCore::SerializedScriptValue::computeMemoryCost const):\n\nCanonical link: https://commits.webkit.org/318831@main",
      "email": "ysuzuki@apple.com",
      "hash": "3e351c7849f30e38846e49f2ed1c5e94d9a59d29",
      "subject": "[JSC] SerializedScriptValue is not carrying memory64 flag"
    },
    "318832@main": {
      "author": "David Kilzer",
      "avatar": "https://www.gravatar.com/avatar/e228ffc7a792e70bf2d160563c18dcc6?d=identicon\u0026s=64",
      "cl": "318832@main",
      "clUrl": "https://commits.webkit.org/318832@main",
      "description": "\u003chttps://bugs.webkit.org/show_bug.cgi?id=321345\u003e\n\u003crdar://184380932\u003e\n\nUnreviewed build fix.\n\nMake `LibWebRTCAudioModule.h` project-internal and forward-declare it in\nthe installed `AudioMediaStreamTrackRenderer.h` so the installed\n`WebCore_Private` module no longer requires a libwebrtc header that is\nnot part of WebCore's installed surface.\n\nNo new tests since this change is not directly testable.\n\n* Source/WebCore/WebCore.xcodeproj/project.pbxproj:\n* Source/WebCore/platform/mediastream/AudioMediaStreamTrackRenderer.cpp:\n(WebCore::AudioMediaStreamTrackRenderer::~AudioMediaStreamTrackRenderer): Add.\n* Source/WebCore/platform/mediastream/AudioMediaStreamTrackRenderer.h:\n\nCanonical link: https://commits.webkit.org/318832@main",
      "email": "ddkilzer@apple.com",
      "hash": "23cf2c3d79dbe10e0270ae53fbc8350e18a56def",
      "subject": "LibWebRTCAudioModule.h should not be a private header"
    },
    "318833@main": {
      "author": "Brian Weinstein",
      "avatar": "https://www.gravatar.com/avatar/2892a9aaa68f537ee65c6f95ef0768a6?d=identicon\u0026s=64",
      "cl": "318833@main",
      "clUrl": "https://commits.webkit.org/318833@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=321216\nWork towards: rdar://184269255\n\nReviewed by Kiara Rose and Timothy Hatcher.\n\nThis PR adds the start of support for the Web Extensions offscreen API, described in:\nhttps://developer.chrome.com/docs/extensions/reference/api/offscreen\n\nThe API is currently compiled off, and once it is compiled on, will be in testable mode to start.\n\nThis PR doesn't actually implement the API functionality, it just puts us into a position to do so. We now support:\n- The `offscreen` permission gating access to `browser.offscreen`.\n- Argument validation for `browser.offscreen.createDocument`.\n- Web Process -\u003e UI process communication for the `browser.offscreen` APIs.\n- Tests for presence of the APIs and argument validation for `browser.offscreen.createDocument`.\n\nFuture PRs will implement actually creating and loading a web view in the UI process, and implementing the other\nAPIs.\n\nTest: Tools/TestWebKitAPI/Tests/WebKit/WKWebView/WKWebExtensionAPIOffscreen.mm\n\n* Source/WTF/Scripts/Preferences/UnifiedWebPreferences.yaml:\n* Source/WTF/wtf/PlatformEnableCocoa.h:\n* Source/WebKit/DerivedSources-input.xcfilelist:\n* Source/WebKit/DerivedSources-output.xcfilelist:\n* Source/WebKit/DerivedSources.make:\n* Source/WebKit/Shared/Extensions/WebExtensionOffscreenDocumentParameters.h: Copied from Source/WebKit/Shared/Extensions/WebExtensionPermission.h.\n* Source/WebKit/Shared/Extensions/WebExtensionOffscreenDocumentParameters.serialization.in: Added.\n* Source/WebKit/Shared/Extensions/WebExtensionPermission.cpp:\n(WebKit::WebExtensionPermission::offscreen):\n* Source/WebKit/Shared/Extensions/WebExtensionPermission.h:\n* Source/WebKit/SourcesCocoa.txt:\n* Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPIOffscreenCocoa.mm: Copied from Source/WebKit/Shared/Extensions/WebExtensionPermission.h.\n(WebKit::WebExtensionContext::isOffscreenMessageAllowed):\n(WebKit::WebExtensionContext::offscreenCreateDocument):\n(WebKit::WebExtensionContext::offscreenCloseDocument):\n(WebKit::WebExtensionContext::offscreenHasDocument):\n* Source/WebKit/UIProcess/Extensions/WebExtension.cpp:\n(WebKit::WebExtension::supportedPermissions):\n* Source/WebKit/UIProcess/Extensions/WebExtensionContext.h:\n* Source/WebKit/UIProcess/Extensions/WebExtensionContext.messages.in:\n* Source/WebKit/WebKit.xcodeproj/project.pbxproj:\n* Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPINamespaceCocoa.mm:\n(WebKit::WebExtensionAPINamespace::offscreen):\n* Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIOffscreenCocoa.mm: Added.\n(WebKit::WebExtensionAPIOffscreen::createDocument):\n(WebKit::WebExtensionAPIOffscreen::closeDocument):\n(WebKit::WebExtensionAPIOffscreen::hasDocument):\n* Source/WebKit/WebProcess/Extensions/API/WebExtensionAPIKeys.h:\n* Source/WebKit/WebProcess/Extensions/API/WebExtensionAPINamespace.h:\n* Source/WebKit/WebProcess/Extensions/API/WebExtensionAPIOffscreen.h: Copied from Source/WebKit/Shared/Extensions/WebExtensionPermission.h.\n* Source/WebKit/WebProcess/Extensions/Interfaces/WebExtensionAPINamespace.idl:\n* Source/WebKit/WebProcess/Extensions/Interfaces/WebExtensionAPIOffscreen.idl: Copied from Source/WebKit/Shared/Extensions/WebExtensionPermission.h.\n* Tools/TestWebKitAPI/SourcesCocoa.txt:\n* Tools/TestWebKitAPI/Tests/WebKit/WKWebView/WKWebExtensionAPIOffscreen.mm: Added.\n(TestWebKitAPI::WKWebExtensionAPIOffscreen::WKWebExtensionAPIOffscreen):\n(TestWebKitAPI::WKWebExtensionAPIOffscreen::getManagerFor):\n(TestWebKitAPI::TEST_F(WKWebExtensionAPIOffscreen, APISUnavailableWhenManifestDoesNotRequest)):\n(TestWebKitAPI::TEST_F(WKWebExtensionAPIOffscreen, OffscreenAPIAvailableWhenManifestRequests)):\n(TestWebKitAPI::TEST_F(WKWebExtensionAPIOffscreen, OffscreenCreateDocumentArgumentValidation)):\n\nCanonical link: https://commits.webkit.org/318833@main",
      "email": "bweinstein@apple.com",
      "hash": "1d2141761faac89e4a85fc49cf2f9fc3fb15c145",
      "subject": "Web Extensions: Add support for the offscreen API"
    },
    "318834@main": {
      "author": "Yusuke Suzuki",
      "avatar": "https://www.gravatar.com/avatar/3455d9081295e3e740c1ffa901217d9b?d=identicon\u0026s=64",
      "cl": "318834@main",
      "clUrl": "https://commits.webkit.org/318834@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=321338\nrdar://184367247\n\nReviewed by Yijia Huang.\n\nClamping the table size at parsing time will cause incorrect table size\nreporting. The correct behavior is (1) parsing should accept, it is just\ndeclaration and then (2) creating a table actually should reject it.\nThis patch fixes this issue.\n\nTest: JSTests/wasm/stress/table-oversized-initial-reflection.js\n\n* JSTests/wasm/stress/table-oversized-initial-reflection.js: Added.\n(leb):\n(section):\n(importedTable):\n(exportedTable):\n(checkMinimum):\n(true.assert.throws.new.WebAssembly.Instance.new.WebAssembly.Module.importedTable):\n* Source/JavaScriptCore/wasm/WasmBBQJIT.cpp:\n(JSC::Wasm::BBQJITImpl::BBQJIT::addCallIndirect):\n* Source/JavaScriptCore/wasm/WasmFormat.h:\n(JSC::Wasm::TableInformation::TableInformation):\n(JSC::Wasm::TableInformation::initial const):\n* Source/JavaScriptCore/wasm/WasmOMGIRGenerator.cpp:\n(JSC::Wasm::OMGIRGenerator::addCallIndirect):\n* Source/JavaScriptCore/wasm/WasmSectionParser.cpp:\n(JSC::Wasm::SectionParser::parseTableHelper):\n* Source/JavaScriptCore/wasm/WasmTable.cpp:\n(JSC::Wasm::Table::tryCreate):\n* Source/JavaScriptCore/wasm/WasmTable.h:\n* Source/JavaScriptCore/wasm/js/WebAssemblyModuleRecord.cpp:\n(JSC::WebAssemblyModuleRecord::initializeImports):\n\nCanonical link: https://commits.webkit.org/318834@main",
      "email": "ysuzuki@apple.com",
      "hash": "aa8167a2feb9a49f5380353389324102f2a63462",
      "subject": "[JSC] Table64 size should be checked when creating / growing, not parsing"
    },
    "318836@main": {
      "author": "Kristian Monsen",
      "avatar": "https://www.gravatar.com/avatar/d9b02ca94d143b7dd6118be4dbc4aa06?d=identicon\u0026s=64",
      "cl": "318836@main",
      "clUrl": "https://commits.webkit.org/318836@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=321250\nrdar://183911429\n\nReviewed by Rupin Mittal.\n\nNavigation::createErrorResult() rejects both the committed and finished promises with the same Exception. When that exception carries ExceptionCode::ExistingExceptionError — the\nsentinel meaning \"the real JS exception is already sitting on the VM's exception scope\" — DeferredPromise::reject() pulled the value straight off scope.exception() and called\nscope.clearException() as a side effect. That works for the first reject() call, but clears the exception before the second call runs, so it finds nothing there: an assert in\ndebug/ASan builds, a null-pointer read of Exception::m_value in release builds — either way, a crash on every reload()/navigate() whose state argument throws during\nstructured-clone.\n\nThe fix reuses the exceptionObject out-parameter that's already threaded through both reject() calls (the same parameter the plain-ExceptionCode branch a few lines below already\nuses to build the DOMException once and share it across calls). On the first call, if exceptionObject is still empty, it extracts the value from the exception scope, clears it, and\ncaches the result in exceptionObject; on the second call, exceptionObject is already populated, so it skips touching the exception scope entirely and just rejects with the cached\nvalue. This matches the pattern already used elsewhere in Navigation.cpp (rejectFinishedPromise, which precomputes a DOMException once and passes it to both promise rejections),\nand it satisfies the spec requirement that committed and finished reject with the identical error value — which a \"swallow and fall back to a generic error\" fix would not have.\n\nTests: navigation-api/navigation-navigate-state-clone-exception-crash.html\n       navigation-api/navigation-reload-state-clone-exception-crash.html\n\n* LayoutTests/navigation-api/navigation-navigate-state-clone-exception-crash-expected.txt: Added.\n* LayoutTests/navigation-api/navigation-navigate-state-clone-exception-crash.html: Added.\n* LayoutTests/navigation-api/navigation-reload-state-clone-exception-crash-expected.txt: Added.\n* LayoutTests/navigation-api/navigation-reload-state-clone-exception-crash.html: Added.\n* Source/WebCore/bindings/js/JSDOMPromiseDeferred.cpp:\n(WebCore::DeferredPromise::reject):\n\nCanonical link: https://commits.webkit.org/318836@main",
      "email": "k_monsen@apple.com",
      "hash": "37cfccb3c6c9ae9cc09b9d9908c190286ac2e858",
      "subject": "Fix crash from double-consuming the pending exception in DeferredPromise::reject() during Navigation reload()/navigate() error handling"
    },
    "318837@main": {
      "author": "Abrar Rahman Protyasha",
      "avatar": "https://www.gravatar.com/avatar/fce5b3c4e9f3c59a4873e08c9f03c3b1?d=identicon\u0026s=64",
      "cl": "318837@main",
      "clUrl": "https://commits.webkit.org/318837@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=321241\nrdar://160319744\n\nReviewed by Richard Robinson and Megan Gardner.\n\nThe PDF plugin computes (and pins to) a scale from the frame's width\nafter the first layout, so a main frame PDF maintains user zoom across\nwindow resizes. However, since subframe PDFs follow this same logic,\nthey are never re-fit when the _plugin frame_ itself is resized.\n\nThis is most notable with Site Isolation enabled since a cross origin\n\u003ciframe src=pdf\u003e will often do its first layout pass with a provisional\nframe (that is window sized) and then proceed to keep that bad scale\nwhen the real size does eventually arrive (asynchronously). However, we\nsee the same issue when we modify the width attribute of any embedded\nPDF div.\n\nTo fix this issue, we make subframe PDFs recompute its document layout\nscale (and initialScale()) whenever its frame is resized, until of\ncourse user zoom is applied and auto-resizing is disabled\nunconditionally anyway.\n\nTest: TestWebKitAPI.UnifiedPDF.EmbeddedPDFFitsToFrame\n\n* Source/WebKit/WebProcess/Plugins/PDF/UnifiedPDF/UnifiedPDFPlugin.mm:\n(WebKit::UnifiedPDFPlugin::geometryDidChange):\n(WebKit::UnifiedPDFPlugin::updateLayout):\n* Tools/TestWebKitAPI/Tests/WebKit/WKWebView/UnifiedPDFTests.mm:\n(TestWebKitAPI::EmbeddedPDFFitsToFrame::embedElement const):\n(TestWebKitAPI::EmbeddedPDFFitsToFrame::crossOrigin const):\n(TestWebKitAPI::EmbeddedPDFFitsToFrame::siteIsolationEnabled const):\n(TestWebKitAPI::EmbeddedPDFFitsToFrame::siteIsolationSharedProcessEnabled const):\n(TestWebKitAPI::EmbeddedPDFFitsToFrame::testNameGenerator):\n(TestWebKitAPI::TEST_P):\n\nCanonical link: https://commits.webkit.org/318837@main",
      "email": "a_protyasha@apple.com",
      "hash": "f1111014c1d28387fcb7dbdd673e69e6ffcc2004",
      "subject": "Embedded PDFs do not re-fit when the plugin frame is resized"
    },
    "318838@main": {
      "author": "Richard Robinson",
      "avatar": "https://www.gravatar.com/avatar/a0d2f862985ed0fd47887be66f5a3e4f?d=identicon\u0026s=64",
      "cl": "318838@main",
      "clUrl": "https://commits.webkit.org/318838@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=321356\nrdar://184388647\n\nReviewed by Abrar Rahman Protyasha.\n\nRemove the window during test teardown.\n\n* Tools/TestWebKitAPI/Tests/WebKit/WebPage/AppKit Gesture Tests/AppKitGesturesTestsSupport.swift:\n* Tools/TestWebKitAPI/Tests/WebKit/WebPage/AppKit Gesture Tests/BasicAppKitGesturesTests.swift:\n* Tools/TestWebKitAPI/Tests/WebKit/WebPage/AppKit Gesture Tests/DoubleClickGesturesTests.swift:\n* Tools/TestWebKitAPI/Tests/WebKit/WebPage/AppKit Gesture Tests/EmbeddedAppKitGesturesTests.swift:\n\nCanonical link: https://commits.webkit.org/318838@main",
      "email": "richard_robinson2@apple.com",
      "hash": "334a2610faa0e991b018c571a7cc0c0325f5d1a6",
      "subject": "[AppKit Gestures] NSWindows are left behind after each test when running several tests sequentially"
    },
    "318839@main": {
      "author": "Yoel Hawa",
      "avatar": "https://www.gravatar.com/avatar/5c0ff3fb546dd8fd970c6b9c7e1ed557?d=identicon\u0026s=64",
      "cl": "318839@main",
      "clUrl": "https://commits.webkit.org/318839@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=321050\nrdar://182292543\n\nReviewed by Mike Wyrzykowski and Etienne Segonzac.\n\nA \u003cmodel\u003e child of a spatial portal has no ModelPlayer of its own, so\nits animation attributes and playback accessors went nowhere. Route them\nthrough the portal's player, which addresses each child by\nNodeIdentifier, and track playback state per node in both the Web and\nModel processes, so the first model loaded no longer reports playback\nfor the whole portal.\n\nTests: spatial-css/spatial-portal-animation-currenttime.html\n       spatial-css/spatial-portal-animation-dynamic.html\n       spatial-css/spatial-portal-animation-independent.html\n       spatial-css/spatial-portal-model-animations.html\n\n* LayoutTests/spatial-css/resources/spatial-portal-utils.js:\n(async waitFor):\n* LayoutTests/spatial-css/spatial-portal-animation-currenttime-expected.txt: Added.\n* LayoutTests/spatial-css/spatial-portal-animation-currenttime.html: Added.\n* LayoutTests/spatial-css/spatial-portal-animation-dynamic-expected.txt: Added.\n* LayoutTests/spatial-css/spatial-portal-animation-dynamic.html: Added.\n* LayoutTests/spatial-css/spatial-portal-animation-independent-expected.txt: Added.\n* LayoutTests/spatial-css/spatial-portal-animation-independent.html: Added.\n* LayoutTests/spatial-css/spatial-portal-model-animations-expected.txt: Added.\n* LayoutTests/spatial-css/spatial-portal-model-animations.html: Added.\nCover autoplay and loop reaching a child, seeking a child,\nsiblings playing, pausing and looping independently of one another, and\na re-added child not reusing the playback state it had before.\n\n* Source/WebCore/Modules/model-element/HTMLModelElement.cpp:\n(WebCore::HTMLModelElement::createModelPlayer):\n(WebCore::HTMLModelElement::modelPlayerForAnimation const):\n(WebCore::HTMLModelElement::applyInitialAnimationState):\n(WebCore::HTMLModelElement::setPlaybackRate):\n(WebCore::HTMLModelElement::duration const):\n(WebCore::HTMLModelElement::paused const):\n(WebCore::HTMLModelElement::setPaused):\n(WebCore::HTMLModelElement::updateAutoplay):\n(WebCore::HTMLModelElement::updateLoop):\n(WebCore::HTMLModelElement::currentTime const):\n(WebCore::HTMLModelElement::setCurrentTime):\n* Source/WebCore/Modules/model-element/HTMLModelElement.h:\nReach the portal's player when the element has none of its own. The\nattributes a standalone \u003cmodel\u003e pushes in createModelPlayer() move to\napplyInitialAnimationState(), so the portal's load path can push the\nsame ones on the child's behalf.\n\n* Source/WebCore/Modules/model-element/SpatialPortalController.cpp:\n(WebCore::SpatialPortalController::ensureModelPlayer):\n(WebCore::SpatialPortalController::loadChildModelIfReady):\n(WebCore::SpatialPortalController::unregisterChildModel):\nReach the player of the portal this element is registered with when it\nhas none of its own. The attributes a standalone \u003cmodel\u003e pushes in\ncreateModelPlayer() move to applyInitialAnimationState(), so the\nportal's load path can push the same ones on the child's behalf.\n\n* Source/WebKit/WebProcess/Model/ModelProcessModelPlayer.cpp:\n(WebKit::ModelProcessModelPlayer::ensureAnimationState):\n(WebKit::ModelProcessModelPlayer::animationStateIfExists):\n(WebKit::ModelProcessModelPlayer::animationStateIfExists const):\n(WebKit::ModelProcessModelPlayer::load):\n(WebKit::ModelProcessModelPlayer::unload):\n(WebKit::ModelProcessModelPlayer::reload):\n(WebKit::ModelProcessModelPlayer::didFailLoading):\n(WebKit::ModelProcessModelPlayer::didUpdateAnimationPlaybackState):\n(WebKit::ModelProcessModelPlayer::currentAnimationState const):\n(WebKit::ModelProcessModelPlayer::setAutoplay):\n(WebKit::ModelProcessModelPlayer::setLoop):\n(WebKit::ModelProcessModelPlayer::setPlaybackRate):\n(WebKit::ModelProcessModelPlayer::duration const):\n(WebKit::ModelProcessModelPlayer::paused const):\n(WebKit::ModelProcessModelPlayer::currentTime const):\n(WebKit::ModelProcessModelPlayer::setCurrentTime):\n(WebKit::ModelProcessModelPlayer::didFailLoading):\n* Source/WebKit/WebProcess/Model/ModelProcessModelPlayer.h:\nKey animation state by NodeIdentifier rather than holding one set of\nvalues per player. A playback report for a node the player does not\ntrack is dropped instead of inventing state that would then be\nreported to script, and a failed load drops the node's state, since the\nmodel process drops its own entry for it.\n\n* Source/WebKit/ModelProcess/cocoa/ModelProcessModelPlayerProxy.h:\n* Source/WebKit/ModelProcess/cocoa/ModelProcessModelPlayerProxy.mm:\n(-[WKModelProcessModelPlayerProxyObjCAdapter entityAnimationPlaybackStateDidUpdate:]):\n(WebKit::ModelProcessModelPlayerProxy::entityForNode const):\n(WebKit::ModelProcessModelPlayerProxy::loadModel):\n(WebKit::ModelProcessModelPlayerProxy::reloadModel):\n(WebKit::ModelProcessModelPlayerProxy::load):\n(WebKit::ModelProcessModelPlayerProxy::didFinishLoading):\n(WebKit::ModelProcessModelPlayerProxy::setUpLoadedEntity):\n(WebKit::ModelProcessModelPlayerProxy::unloadModel):\n(WebKit::ModelProcessModelPlayerProxy::animationPlaybackStateDidUpdate):\n(WebKit::ModelProcessModelPlayerProxy::setAutoplay):\n(WebKit::ModelProcessModelPlayerProxy::setLoop):\n(WebKit::ModelProcessModelPlayerProxy::setPlaybackRate):\n(WebKit::ModelProcessModelPlayerProxy::duration const):\n(WebKit::ModelProcessModelPlayerProxy::paused const):\n(WebKit::ModelProcessModelPlayerProxy::setPaused):\n(WebKit::ModelProcessModelPlayerProxy::currentTime const):\n(WebKit::ModelProcessModelPlayerProxy::setCurrentTime):\n(WebKit::ModelProcessModelPlayerProxy::teardownEntity):\n(WebKit::ModelProcessModelPlayerProxy::captureStateForReload):\n(WebKit::ModelProcessModelPlayerProxy::computeTransform):\n(WebKit::ModelProcessModelPlayerProxy::updateTransform):\n(WebKit::ModelProcessModelPlayerProxy::updateOpacity):\n(WebKit::ModelProcessModelPlayerProxy::didFailLoading):\n(WebKit::ModelProcessModelPlayerProxy::reportingModelScale const):\n(WebKit::ModelProcessModelPlayerProxy::findTrackedModelForLoader):\n(WebKit::ModelProcessModelPlayerProxy::findTrackedModelForEntity):\n(WebKit::ModelProcessModelPlayerProxy::ensureTrackedModel):\n(WebKit::ModelProcessModelPlayerProxy::trackedModel):\n(WebKit::ModelProcessModelPlayerProxy::trackedModel const):\n(WebKit::ModelProcessModelPlayerProxy::cancelAllLoaders):\n(WebKit::ModelProcessModelPlayerProxy::sizeDidChange):\n(WebKit::ModelProcessModelPlayerProxy::ensureImmersivePresentation):\n(WebKit::ModelProcessModelPlayerProxy::exitImmersivePresentation):\n(WebKit::ModelProcessModelPlayerProxy::findHostedEntityForLoader): Deleted.\nHold autoplay, loop, playback rate and the state to restore on each\ntracked model, and set the playback delegate on every entity so a\nsibling reports its own state rather than the first model's. An\naccessor for a node whose entity has not loaded now reports failure\nrather than answering from a nil entity, so play() before load rejects.\nteardownEntity() keeps its map entries, since captureStateForReload()\nhas just recorded playback state in them.\n\nCanonical link: https://commits.webkit.org/318839@main",
      "email": "yoel@apple.com",
      "hash": "445ef5ac4f91f6af821e2211bb4f507d7c66a390",
      "subject": "Add animation forwarding to child models in spatial portals"
    },
    "318840@main": {
      "author": "Marcus Plutowski",
      "avatar": "https://www.gravatar.com/avatar/0dc4fa1c337348e333de44505752edb8?d=identicon\u0026s=64",
      "cl": "318840@main",
      "clUrl": "https://commits.webkit.org/318840@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320593\nrdar://181858046\n\nReviewed by Keith Miller.\n\nBy default, each compiler thread caches a single granule to minimize the\nlatency of their next compiler job. This means the memory is never\ndecommitted, which adds persistent memory pressure even through\nsubsequent memory-pressure notifications.\nThis patch makes two changes:\n  - Before caching a granule, each compiler thread checks whether the\n    system is currently under memory pressure; if so, it doesn't cache\n  - When memory pressure is encountered, we iterate all arenas and drop\n    the first granule of all idle compiler threads\nThe latter condition requires a new lock to avoid a thread starting up\nwhile the scavenger (or etc.) is midway through removing their granule.\nThis is worthwhile because the alternative would be waiting until the\ncompiler thread runs again, which could be some time due to the\nsometimes-bursty nature of compilation jobs.\n\nNo new tests since this is an implementation detail.\n\n* Source/WTF/wtf/FastMalloc.cpp:\n(WTF::releaseFastMallocFreeMemory):\n* Source/WTF/wtf/SequesteredAllocator.h:\n* Source/WTF/wtf/SequesteredImmortalHeap.cpp:\n(WTF::SequesteredImmortalHeap::shouldReduceRetention const):\n(WTF::SequesteredImmortalHeap::scavengeImpl):\n(WTF::SequesteredImmortalHeap::reclaimIdleSlots):\n(WTF::SequesteredImmortalHeap::reclaimIdleGranulesOnce):\n* Source/WTF/wtf/SequesteredImmortalHeap.h:\n\nCanonical link: https://commits.webkit.org/318840@main",
      "email": "marcus_plutowski@apple.com",
      "hash": "bb345ab09ac5b38035ec69ee7f96396adae11e7e",
      "subject": "Drop cached SequesteredMalloc arena granules on memory-pressure notification"
    },
    "318841@main": {
      "author": "Fujii Hironori",
      "avatar": "https://www.gravatar.com/avatar/ef99cb23f5e5d27977968ca097d9a85f?d=identicon\u0026s=64",
      "cl": "318841@main",
      "clUrl": "https://commits.webkit.org/318841@main",
      "description": "Unreviewed.\n\n* LayoutTests/TestExpectations:\n* LayoutTests/platform/glib/TestExpectations:\n* LayoutTests/platform/gtk/TestExpectations:\n* LayoutTests/platform/wpe/TestExpectations:\n\nCanonical link: https://commits.webkit.org/318841@main",
      "email": "fujii@igalia.com",
      "hash": "96aa8e88d20db54a6cadd26a9dc0b36646820776",
      "subject": "[GLib] layout test gardening"
    },
    "318842@main": {
      "author": "Kristian Monsen",
      "avatar": "https://www.gravatar.com/avatar/d9b02ca94d143b7dd6118be4dbc4aa06?d=identicon\u0026s=64",
      "cl": "318842@main",
      "clUrl": "https://commits.webkit.org/318842@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=321353\nrdar://184019251\n\nReviewed by Sammy Gill.\n\nThe crash happens because rowSizesForFirstIterationColumnSizing (GridLayout.cpp:391-423) assumes every row track's percentage sizing function has already been converted to auto\nbefore it runs. Its own comment says as much, and the ASSERT at line 399 documents that assumption directly: \"The formatting context should have transformed this track size to\nauto.\" When a row track is still a raw Percentage at that point, the function unconditionally dereferences the optional gridContainerInnerInlineSize, which is only empty in exactly\nthis situation.\n\nThat assumption was correctly upheld for grid-template-columns and grid-template-rows. The helper gridTemplateListWithPercentagesConvertedToAuto was already applied to both, in\nboth computeIntrinsicWidths and layout. But it was silently not upheld for grid-auto-columns and grid-auto-rows, which were passed through to GridDefinition untouched. Since\nimplicit tracks are sized from grid-auto-rows and grid-auto-columns (generateImplicitTrackSizingFunctions, GridLayout.cpp:346), any grid whose rows are entirely implicit, including\nthe common case of an empty explicit grid as in the crash testcase, could carry a raw percentage all the way into rowSizesForFirstIterationColumnSizing, with the container's\ninline size still indefinite because the code is in the middle of computing that container's own intrinsic width. The precondition the code was written to depend on simply never\nheld for this input.\n\nThe fix closes that gap by applying the exact same percentage-to-auto conversion to grid-auto-columns and grid-auto-rows that already existed for the template lists, in the same\ntwo call sites and under the same conditions. In layout, the conversion is gated on inlineAxisDependsOnTracks and blockAxisDependsOnTracks. In computeIntrinsicWidths, it is applied\nunconditionally, since intrinsic sizing is always against an indefinite constraint. Once grid-auto-rows: 0% is converted to auto before reaching GridLayout,\nrowSizesForFirstIterationColumnSizing takes the Auto branch at line 412 instead of the Percentage branch, and that branch returns LayoutUnit::max() without touching\ngridContainerInnerInlineSize at all.\n\nThe ASSERT's precondition is now actually satisfied, so the fix is not \"handle the null case defensively,\" which would just convert a clean crash into silently wrong track sizing.\nIt is \"make sure the data reaching this code matches what the code was always written to assume.\" That is also exactly what the CSS Grid spec requires: percentage track sizes must\nresolve as auto whenever the axis they depend on is indefinite, and that rule applies equally to grid-template-* and grid-auto-*, not just the former.\n\nTest: fast/css-grid-layout/grid-auto-rows-percentage-intrinsic-width-crash.html\n\n* LayoutTests/fast/css-grid-layout/grid-auto-rows-percentage-intrinsic-width-crash-expected.txt: Added.\n* LayoutTests/fast/css-grid-layout/grid-auto-rows-percentage-intrinsic-width-crash.html: Added.\n* Source/WebCore/layout/formattingContexts/grid/GridFormattingContext.cpp:\n(WebCore::Layout::gridAutoTrackSizesWithPercentagesConvertedToAuto):\n(WebCore::Layout::GridFormattingContext::layout):\n(WebCore::Layout::GridFormattingContext::computeIntrinsicWidths):\n\nCanonical link: https://commits.webkit.org/318842@main",
      "email": "k_monsen@apple.com",
      "hash": "e10f76756319604596dad0ab29f5676732c18846",
      "subject": "[GFC] Convert percentages in grid-auto-rows/grid-auto-columns to auto when computing intrinsic grid container size"
    },
    "318843@main": {
      "author": "Yusuke Suzuki",
      "avatar": "https://www.gravatar.com/avatar/3455d9081295e3e740c1ffa901217d9b?d=identicon\u0026s=64",
      "cl": "318843@main",
      "clUrl": "https://commits.webkit.org/318843@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=321355\nrdar://184387395\n\nReviewed by Mark Lam.\n\nWe need to zero clear all cachedMemoryBaseSizePairs initially.\nAlso we must need to call updateCachedMemoryBaseSizePair(0) when\nupdating memory0.\n\n* Source/JavaScriptCore/wasm/js/JSWebAssemblyInstance.cpp:\n(JSC::JSWebAssemblyInstance::JSWebAssemblyInstance):\n* Source/JavaScriptCore/wasm/js/JSWebAssemblyInstance.h:\n\nCanonical link: https://commits.webkit.org/318843@main",
      "email": "ysuzuki@apple.com",
      "hash": "72928a517633537696c0e6a9f14ed0114791cb46",
      "subject": "[JSC] Reserve 0-slot cached memory base and size even when a module declares no memory"
    },
    "318844@main": {
      "author": "Yusuke Suzuki",
      "avatar": "https://www.gravatar.com/avatar/3455d9081295e3e740c1ffa901217d9b?d=identicon\u0026s=64",
      "cl": "318844@main",
      "clUrl": "https://commits.webkit.org/318844@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=321354\nrdar://184386480\n\nReviewed by Mark Lam.\n\nSeveral code sites are leaking mach port rights incorrectly.\n\n1. mach_thread_self() retains Mach port rights. Let's just use\n   pthread_mach_thread_np(pthread_self()), which does not need to retain\n   it.\n2. catch_mach_exception_raise_state_identity_protected receives the task\n   ID token. When routine succeeds, we need to release the ownership.\n3. ResourceUsageThread leaked a mach_thread_self(). Adopt it into a\n   MachSendRight instead.\n\n* Source/WTF/wtf/threads/Signals.cpp:\n(WTF::hashThreadState):\n* Source/WebCore/page/cocoa/ResourceUsageThreadCocoa.mm:\n(WebCore::ResourceUsageThread::platformCollectCPUData):\n* Source/WebKit/webpushd/webpushtool/WebPushToolConnection.mm:\n(WebPushTool::maybeConnectToService):\n(WebPushTool::Connection::connectToService):\n\nCanonical link: https://commits.webkit.org/318844@main",
      "email": "ysuzuki@apple.com",
      "hash": "c4357d1dbdecfa5938c08bf8e4e7d33fbac6ab03",
      "subject": "Release Mach port rights"
    },
    "318845@main": {
      "author": "Lily Spiniolas",
      "avatar": "https://www.gravatar.com/avatar/b65cfeb51301399bd50e338bb2d7613e?d=identicon\u0026s=64",
      "cl": "318845@main",
      "clUrl": "https://commits.webkit.org/318845@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320864\nrdar://183607542\n\nReviewed by Abrar Rahman Protyasha.\n\nIf a PDF is loaded with PDF accessibility filters enabled, add an item\nto the PDF HUD to toggle the filter on and off. If no accessibility filter\nis enabled/present, no toggle is added.\n\nWhen the toggle is activated (or if the filter itself is disabled for PDFs\nas a whole) the PDF is now completely redrawn using the new rendering settings\nin order to reflect the correct state.\n\n* Source/WebKit/CMakeLists.txt:\n* Source/WebKit/DerivedSources-input.xcfilelist:\n* Source/WebKit/DerivedSources.make:\n* Source/WebKit/Scripts/webkit/messages.py:\n(headers_for_type):\n* Source/WebKit/Shared/PDFAccessibilityDisplayModeState.h: Copied from Source/WebKit/UIProcess/PDF/WKPDFHUDView.h.\n* Source/WebKit/Shared/PDFAccessibilityDisplayModeState.serialization.in: Added.\n* Source/WebKit/UIProcess/PDF/WKAlternatePDFHUDView.swift:\n(ControlsModel.isVisible):\n(ControlsModel.accessibilityDisplayModeState):\n(Controls.body):\n(WKAlternatePDFHUDView.setAccessibilityDisplayModeState(_:)):\n(Controls.isVisible): Deleted.\n* Source/WebKit/UIProcess/PDF/WKDefaultPDFHUDView.swift:\n(WKDefaultPDFHUDView.accessibilityDisplayModeButton):\n(WKDefaultPDFHUDView.setAccessibilityDisplayModeState(_:)):\n(WKDefaultPDFHUDView._performAction(forControl:)):\n(WKDefaultPDFHUDView.hitTest(_:)):\n(WKDefaultPDFHUDView.toggleAccessibilityDisplayModeAction):\n* Source/WebKit/UIProcess/PDF/WKPDFHUDView.h:\n* Source/WebKit/UIProcess/PageClient.h:\n* Source/WebKit/UIProcess/WebPageProxy.cpp:\n* Source/WebKit/UIProcess/WebPageProxy.h:\n* Source/WebKit/UIProcess/WebPageProxy.messages.in:\n* Source/WebKit/UIProcess/mac/PageClientImplMac.h:\n* Source/WebKit/UIProcess/mac/PageClientImplMac.mm:\n(WebKit::PageClientImpl::updatePDFHUDAccessibilityDisplayMode):\n* Source/WebKit/UIProcess/mac/WebPageProxyMac.mm:\n(WebKit::WebPageProxy::updatePDFHUDAccessibilityDisplayMode):\n(WebKit::WebPageProxy::pdfToggleAccessibilityDisplayMode):\n* Source/WebKit/UIProcess/mac/WebViewImpl.h:\n* Source/WebKit/UIProcess/mac/WebViewImpl.mm:\n(WebKit::platformAccessibilityDisplayModeState):\n(WebKit::WebViewImpl::createPDFHUD):\n(WebKit::WebViewImpl::updatePDFHUDLocation):\n(WebKit::WebViewImpl::updatePDFHUDAccessibilityDisplayMode):\n* Source/WebKit/WebKit.xcodeproj/project.pbxproj:\n* Source/WebKit/WebProcess/Plugins/PDF/PDFPluginBase.h:\n(WebKit::PDFPluginBase::toggleAccessibilityDisplayMode):\n* Source/WebKit/WebProcess/Plugins/PDF/PDFPluginBase.mm:\n(WebKit::PDFPluginBase::accessibilityDisplayModeState const):\n* Source/WebKit/WebProcess/Plugins/PDF/UnifiedPDF/AsyncPDFRenderer.h:\n* Source/WebKit/WebProcess/Plugins/PDF/UnifiedPDF/AsyncPDFRenderer.mm:\n(WebKit::AsyncPDFRenderer::invalidateAllRenderedContent):\n* Source/WebKit/WebProcess/Plugins/PDF/UnifiedPDF/PDFDiscretePresentationController.h:\n* Source/WebKit/WebProcess/Plugins/PDF/UnifiedPDF/PDFDiscretePresentationController.mm:\n(WebKit::PDFDiscretePresentationController::updateLayersForAccessibilityDisplayModeChange):\n(WebKit::PDFDiscretePresentationController::updateForAccessibilityDisplayModeChange): Deleted.\n* Source/WebKit/WebProcess/Plugins/PDF/UnifiedPDF/PDFPresentationController.h:\n* Source/WebKit/WebProcess/Plugins/PDF/UnifiedPDF/PDFPresentationController.mm:\n(WebKit::PDFPresentationController::updateForAccessibilityDisplayModeChange):\n(WebKit::PDFPresentationController::invalidateRenderedContentForAccessibilityDisplayModeChange): Deleted.\n* Source/WebKit/WebProcess/Plugins/PDF/UnifiedPDF/PDFScrollingPresentationController.h:\n* Source/WebKit/WebProcess/Plugins/PDF/UnifiedPDF/PDFScrollingPresentationController.mm:\n(WebKit::PDFScrollingPresentationController::updateLayersForAccessibilityDisplayModeChange):\n(WebKit::PDFScrollingPresentationController::updateForAccessibilityDisplayModeChange): Deleted.\n* Source/WebKit/WebProcess/Plugins/PDF/UnifiedPDF/UnifiedPDFPlugin.h:\n* Source/WebKit/WebProcess/Plugins/PDF/UnifiedPDF/UnifiedPDFPlugin.mm:\n(WebKit::UnifiedPDFPlugin::defaultAccessibilityDisplayModeStateForCurrentSettings const):\n(WebKit::pdfPluginBackgroundColor):\n(WebKit::UnifiedPDFPlugin::UnifiedPDFPlugin):\n(WebKit::UnifiedPDFPlugin::didChangeSettings):\n(WebKit::UnifiedPDFPlugin::setAccessibilityDisplayModeState):\n(WebKit::UnifiedPDFPlugin::pluginBackgroundColor const):\n(WebKit::UnifiedPDFPlugin::updateHUDAccessibilityDisplayMode):\n(WebKit::UnifiedPDFPlugin::toggleAccessibilityDisplayMode):\n* Source/WebKit/WebProcess/WebPage/WebPage.h:\n* Source/WebKit/WebProcess/WebPage/WebPage.messages.in:\n* Source/WebKit/WebProcess/WebPage/mac/WebPageMac.mm:\n(WebKit::WebPage::togglePDFAccessibilityDisplayMode):\n(WebKit::WebPage::createPDFHUD):\n(WebKit::WebPage::updatePDFHUDAccessibilityDisplayMode):\n\nCanonical link: https://commits.webkit.org/318845@main",
      "email": "lily_spiniolas@apple.com",
      "hash": "dfc0426a5fa1908fbca70f290e6ea2d9cdff7c14",
      "subject": "[Unified PDF] PDF HUD should show toggle for accessibility filters"
    },
    "318846@main": {
      "author": "Geoffrey Garen",
      "avatar": "https://www.gravatar.com/avatar/9f2ee1a184d00263dc68af055f15b697?d=identicon\u0026s=64",
      "cl": "318846@main",
      "clUrl": "https://commits.webkit.org/318846@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=321243\nrdar://184290928\n\nReviewed by Ryosuke Niwa.\n\nThis patch moves the refcount bits in RefCountedWithInlineWeakPtr\u003cT\u003e into a\nseparately declared type that is adjacent to T, instead of a base class of T.\n\nTechnically, it is undef to read bits out of T after ~T(), and GCC 15 is\naggressive about this. Separating the types works around this restriction.\n\nThe allocation and data layout should remain the exact same in practice.\n\nCanonical link: https://commits.webkit.org/318846@main",
      "email": "ggaren@apple.com",
      "hash": "f880bc57ad506aadd0d3fb7872e35752740a99f2",
      "subject": "RefCountedWithInlineWeakPtr is undef in GCC 15"
    }
  },
  "date": "2026-08-08",
  "days": 1,
  "generatedAt": "2026-08-08T22:05:34Z",
  "markdown": "## Highlights\n- **V8** JavaScriptCore tightened a dense set of WebAssembly memory64 fixes, covering parsing, sizing, serialization, and typed array bounds so edge cases fail correctly instead of going off the rails. [commit 318843@main](https://commits.webkit.org/318843@main) [commit 318834@main](https://commits.webkit.org/318834@main) [commit 318831@main](https://commits.webkit.org/318831@main) [commit 318830@main](https://commits.webkit.org/318830@main) [commit 318826@main](https://commits.webkit.org/318826@main) [commit 318821@main](https://commits.webkit.org/318821@main)\n- **Security** Navigation error handling no longer crashes when DeferredPromise::reject() double-consumes a pending exception during reload() and navigate() paths. [commit 318836@main](https://commits.webkit.org/318836@main)\n- **Media** Web Extensions gained offscreen API support, unlocking background document style workloads without visible UI. [commit 318833@main](https://commits.webkit.org/318833@main)\n- **Perf** Pixel conversion for RGBA16F now has an accelerated path, which should reduce overhead in high precision image pipelines. [commit 318822@main](https://commits.webkit.org/318822@main)\n- **UI** Embedded PDFs now re-fit correctly when their plugin frame is resized, fixing a visible paper-cut in document viewing. [commit 318837@main](https://commits.webkit.org/318837@main)\n- **A11y** Unified PDF HUD now exposes a toggle for accessibility filters, making reader-side accessibility controls easier to discover. [commit 318845@main](https://commits.webkit.org/318845@main)\n- **Perf** SequesteredMalloc now drops cached arena granules on memory pressure, which should trim retained memory instead of sitting on it. [commit 318840@main](https://commits.webkit.org/318840@main)\n- **Rendering** Grid intrinsic sizing now treats percentage grid-auto-rows and grid-auto-columns as auto, aligning behavior with expected layout computation. [commit 318842@main](https://commits.webkit.org/318842@main)\n- **Security** Mach port rights are now explicitly released, tightening resource lifetime handling in a sensitive IPC-adjacent area. [commit 318844@main](https://commits.webkit.org/318844@main)\n\n## What landed by area\n\n### JavaScriptCore and WebAssembly\n- **V8** WebAssembly Memory now reserves cached base and size state even for modules that declare no memory, avoiding special-case holes in runtime setup. [commit 318843@main](https://commits.webkit.org/318843@main)\n- **V8** Table64 size validation moved to creation and growth time instead of parse time, which is the right place to enforce runtime limits. [commit 318834@main](https://commits.webkit.org/318834@main)\n- **V8** SerializedScriptValue now preserves the memory64 flag so wasm state survives serialization with the right semantics. [commit 318831@main](https://commits.webkit.org/318831@main)\n- **V8** WebAssembly.Memory.prototype.type() now reports current size correctly. [commit 318830@main](https://commits.webkit.org/318830@main)\n- **V8** Wasm memory64 memarg offset parsing is fixed, closing a parser correctness bug in 64-bit memory handling. [commit 318826@main](https://commits.webkit.org/318826@main)\n- **V8** Wasm table.copy no longer uses the index to determine identity, fixing an incorrect table comparison path. [commit 318825@main](https://commits.webkit.org/318825@main)\n- **V8** TypedArray index handling now carries uint64_t until bounds checking, reducing truncation risk in large-index paths. [commit 318821@main](https://commits.webkit.org/318821@main)\n- **Perf** Temporal monthCode lookup now uses one primitive instead of four search walks, shaving overhead from calendar operations. [commit 318829@main](https://commits.webkit.org/318829@main)\n\n### PDF and document viewing\n- **A11y** Unified PDF HUD now shows a toggle for accessibility filters. [commit 318845@main](https://commits.webkit.org/318845@main)\n- **UI** Embedded PDFs now re-fit when the plugin frame is resized, fixing stale layout after size changes. [commit 318837@main](https://commits.webkit.org/318837@main)\n\n### Rendering and layout\n- **Rendering** Intrinsic grid container sizing now converts percentage grid-auto-rows and grid-auto-columns to auto, fixing a layout correctness edge case. [commit 318842@main](https://commits.webkit.org/318842@main)\n- **Rendering** Spatial portals now forward animations to child models, improving scene graph behavior for animated descendants. [commit 318839@main](https://commits.webkit.org/318839@main)\n- **Rendering** css-anchor-position handling for position-anchor: none and normal was refactored, likely simplifying future correctness work in this still-moving area. [commit 318823@main](https://commits.webkit.org/318823@main)\n\n### DOM, navigation, and interaction\n- **Security** DeferredPromise::reject() no longer crashes during navigation reload()/navigate() error handling when a pending exception gets consumed twice. [commit 318836@main](https://commits.webkit.org/318836@main)\n- **UI** Label default action no longer fires incorrectly when clicked interactive content removes itself during handling. [commit 318827@main](https://commits.webkit.org/318827@main)\n\n### Extensions, media, and site isolation\n- **Web Platform** Web Extensions now support the offscreen API, bringing Safari closer to the background processing model extension authors expect. [commit 318833@main](https://commits.webkit.org/318833@main)\n- **Media** LibWebRTCAudioModule.h is no longer treated as a private header, cleaning up public surface expectations for embedders. [commit 318832@main](https://commits.webkit.org/318832@main)\n- **Refactor** Dead process-qualified media identifier plumbing was removed from Site Isolation code. [commit 318820@main](https://commits.webkit.org/318820@main)\n\n### Memory management and low-level platform work\n- **Perf** SequesteredMalloc now drops cached arena granules on memory-pressure notification to reduce retained memory under pressure. [commit 318840@main](https://commits.webkit.org/318840@main)\n- **Security** Mach port rights are now released explicitly, tightening ownership of platform resources. [commit 318844@main](https://commits.webkit.org/318844@main)\n- **Build** RefCountedWithInlineWeakPtr is no longer undef under GCC 15, unblocking newer toolchains. [commit 318846@main](https://commits.webkit.org/318846@main)\n- **Refactor** WTF::Task usage was removed where it conflicted with Swift's Task name. [commit 318824@main](https://commits.webkit.org/318824@main)\n\n### Tooling, ports, and test infrastructure\n- **Build** WPE cross-toolchain-helper now handles hosts with glibc 2.43, fixing webkitdevci build failures on newer Linux SDKs. [commit 318819@main](https://commits.webkit.org/318819@main)\n- **Build** AppKit gesture tests no longer leave NSWindows behind when multiple tests run sequentially. [commit 318838@main](https://commits.webkit.org/318838@main)\n- **Refactor** GLib layout tests got another gardening pass. [commit 318841@main](https://commits.webkit.org/318841@main)\n- **Refactor** GTK and WPE test suites received gardening updates. [commit 318828@main](https://commits.webkit.org/318828@main)\n- **Refactor** LBSE baselines and TestExpectations were updated to match current behavior. [commit 318818@main](https://commits.webkit.org/318818@main)",
  "repo": "webkit",
  "repoDisplay": "WebKit",
  "rollGroups": [
    {
      "name": "Unreviewed",
      "count": 1
    }
  ],
  "since": "2026-08-08",
  "totals": {
    "commits": 29,
    "features": 28,
    "rolls": 1
  },
  "until": "2026-08-08"
}