{
  "commits": {
    "318496@main": {
      "author": "Marta Darbinyan",
      "avatar": "https://www.gravatar.com/avatar/6143b3673258642a8b75585c768ccf10?d=identicon\u0026s=64",
      "cl": "318496@main",
      "clUrl": "https://commits.webkit.org/318496@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320326\nrdar://183266967\n\nUnreviewed test Gardening\n\n* LayoutTests/platform/mac-wk2/TestExpectations:\n\nCanonical link: https://commits.webkit.org/318496@main",
      "email": "darbinyan@apple.com",
      "hash": "56b405040ec649a74b79ce52554f071d1060ad70",
      "subject": "[Gardening]: imported/w3c/web-platform-tests/css/css-highlight-api/painting/custom-highlight-dynamic-font-metrics-001.html remains flaky after 317439@main"
    },
    "318497@main": {
      "author": "Richard Robinson",
      "avatar": "https://www.gravatar.com/avatar/a0d2f862985ed0fd47887be66f5a3e4f?d=identicon\u0026s=64",
      "cl": "318497@main",
      "clUrl": "https://commits.webkit.org/318497@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320832\nrdar://183775063\n\nReviewed by Aditya Keerthi.\n\nExpose SPI on `WebView` in the form of a view modifier to allow clients to custom the values of viewport\nattributes, similar to the existing `WKWebView._overrideViewportWithArguments` SPI.\n\nTest: Tools/TestWebKitAPI/Tests/WebKit/WebPage/WebViewTests.swift\n\n* Source/WebKit/UIProcess/API/Swift/WebPage+SPI.swift:\n(WebPage.setMenuBuilder(_:)):\n(smartListsEnabled):\n(magnification):\n(WebPage.smartListsEnabled): Deleted.\n* Tools/TestWebKitAPI/Helpers/cocoa/SwiftUI+Extras.swift:\n\nTesting infrastructure.\n\n* Source/WebKit/WebKit.xcodeproj/project.pbxproj:\n* Source/WebKit/_WebKit_SwiftUI/API/View+WebViewModifiers.swift:\n* Source/WebKit/_WebKit_SwiftUI/API/WebView+ViewportConfiguration.swift: Added.\n(deviceWidth):\n(Storage.deviceHeight):\n(WebView.dictionaryRepresentation):\n* Source/WebKit/_WebKit_SwiftUI/Implementation/EnvironmentValues+Extras.swift:\n(EnvironmentValues.webViewViewportConfiguration):\n* Source/WebKit/_WebKit_SwiftUI/Implementation/WebViewRepresentable.swift:\n(WebViewRepresentable.updatePlatformView(_:context:)):\n\nAdd the new view modifier.\n\n* Tools/TestWebKitAPI/Tests/WebKit/WebPage/WebViewTests.swift:\n(ViewModel.viewportWidth):\n(ViewModel.viewportInitialScale):\n(TestView.body):\n(WebViewTests.applyingContentEnvironmentAffectsPageSemantics):\n(WebViewTests.overrideViewportArgumentsAffectsPageViewport):\n\nAdd a new test.\n\nCanonical link: https://commits.webkit.org/318497@main",
      "email": "richard_robinson2@apple.com",
      "hash": "f1b689718fc338cb424e1e572e376f3783d19c32",
      "subject": "[SwiftUI WebKit API] Expose _overrideViewportWithArguments on WebPage"
    },
    "318498@main": {
      "author": "Jean-Yves Avenard",
      "avatar": "https://www.gravatar.com/avatar/509313899deeb9262fad8f5e04093f5b?d=identicon\u0026s=64",
      "cl": "318498@main",
      "clUrl": "https://commits.webkit.org/318498@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320850\nrdar://183773748\n\nReviewed by Abrar Rahman Protyasha.\n\nWhen moon player extract the video layer from the WKWebView page, the\nvideo very briefly goes invisible. While the transition usually works\nout okay, it has been observed that the VTDecompressionSession gets invalidated.\nWhen this happens, the decoding of the next sample typically returns error\nerror -12903 (kVTInvalidSessionErr) which we handled differently from other\ndecoding error and didn't treat it as a fatal error.\nIntermittently however, the next error returned is -12911 (kVTVideoDecoderMalfunctionErr).\nWhen this happened the error would be returned as a HTMLMediaElement decoding\nerror and YouTube then tears down the media player and re-create a new one.\nThis condition isn't handled by the Moon player and it continues to display\nthe old, now invalidated layer resulting in a black screen being shown.\n\nWe now handle kVTVideoDecoderMalfunctionErr the same as kVTInvalidSessionErr\nand will recover from it by flushing the VideoMediaSampleRenderer and re-creating\na WebCoreDecompressionSession.\n\nManually tested, couldn't reproduce the issue anymore.\n\n* Source/WebCore/platform/graphics/cocoa/VideoMediaSampleRenderer.mm:\n(WebCore::VideoMediaSampleRenderer::decodeNextSampleIfNeeded):\n\nCanonical link: https://commits.webkit.org/318498@main",
      "email": "jya@apple.com",
      "hash": "c76c998e366bd3c9672d1971398cbf4b459e8399",
      "subject": "[Moon Player: AI -Enhanced 3D] blank black screen in full screen and video paused"
    },
    "318499@main": {
      "author": "Wenson Hsieh",
      "avatar": "https://www.gravatar.com/avatar/c8fba82556fd4988c78bd3a0aee2a44e?d=identicon\u0026s=64",
      "cl": "318499@main",
      "clUrl": "https://commits.webkit.org/318499@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320808\nrdar://183825688\n\nReviewed by Abrar Rahman Protyasha.\n\nThe heuristics added in 315981@main and 316094@main introduced a way for the agent to interact with\nstale node UIDs by storing a rolling buffer of recent text extractions delivered to the agent; if a\ntarget node UID issued by the agent is stale (i.e. references an old target node from a previous\npage that no longer exists), we can often still fulfill the agent's intent by observing what the\nstale node UID corresponded to on the prior text extraction, and checking whether there's any\ncontent from a more recent text extraction where the target element and its surrounding context is\nidentical. If so, we pretend that the agent had actually issued a click targeting the similar node\nin the latest text extraction.\n\nThis can often happen when an agent tries (for example) to explore different navigation links on a\nwebsite in search for a change password form, and tries to backtrack to another link it's already\nseen, but by referencing a node UID that no longer exists in the DOM.\n\nThe issue is that this clashes with another heuristic that avoids surfacing links that point to the\ncurrent URL in text extractions (in order to save on tokens), as well as ARIA attributes like\n`aria-selected=true`, which break the stale node resolution heuristics even though (semantically)\nthe rest of the text is a match.\n\nTo fix this, we change the stale node resolution algorithm to:\n\n1. Include link URLs that point to the same page.\n2. Ignore changes in both ARIA `selected` and `expanded` attributes.\n\nSee below for more details.\n\nTest: TextExtractionTests.InteractionRemapsStaleNodeIdentifierWithURL\n\n* Source/WebKit/Shared/TextExtractionToStringConversion.cpp:\n(WebKit::TextExtractionAggregator::takeResults):\n(WebKit::TextExtractionAggregator::addResult):\n(WebKit::TextExtractionAggregator::appendToLine):\n\nRefactor how text extraction results are accumulated, such that we build up separate strings while\ntraversing the text extraction item tree (i.e. intermediate representation of the semantic DOM);\ninstead of just keeping track of the extracted text per line, we separately track the text per line\nthat will be reported to the WebKit client (`textForClient`) and the text that will be destined for\nthe internal text extraction result cache, used to resolve stale node UIDs.\n\nThis allows us to cleanly avoid adding certain attributes (`uid`, `selected`, `expanded`) to the\ntext saved in the cache, and change the way we surface other attributes (`url`).\n\n(WebKit::isTransientAriaAttribute):\n(WebKit::partsForItem):\n(WebKit::addPartsForText):\n(WebKit::addPartsForItem):\n(WebKit::addTextRepresentationRecursive):\n* Source/WebKit/Shared/TextExtractionToStringConversion.h:\n* Source/WebKit/UIProcess/TextExtractionCache.cpp:\n(WebKit::TextExtractionCache::contextWindowBefore):\n(WebKit::TextExtractionCache::contextWindowAfter):\n(WebKit::TextExtractionCache::resolve const):\n* Source/WebKit/UIProcess/TextExtractionCache.h:\n\nAlso bump up the number of cached extractions from 6 → 20, to increase potential coverage of stale\nnode UIDs.\n\n* Tools/TestWebKitAPI/Tests/WebKit/WKWebView/TextExtractionTests.mm:\n(TestWebKitAPI::TEST(TextExtractionTests, InteractionRemapsStaleNodeIdentifierWithURL)):\n\nAdd an API test to cover these changes, inspired by an agent failure on Etsy that would've been\nsalvaged with relaxed heuristics around stale node UID resolution here.\n\nCanonical link: https://commits.webkit.org/318499@main",
      "email": "wenson_hsieh@apple.com",
      "hash": "49b049f82d0832b67368eae3cf8a8caa2d50ac2d",
      "subject": "[Text Extraction] Make stale node UID resolution heuristics more lenient"
    },
    "318500@main": {
      "author": "Marta Darbinyan",
      "avatar": "https://www.gravatar.com/avatar/6143b3673258642a8b75585c768ccf10?d=identicon\u0026s=64",
      "cl": "318500@main",
      "clUrl": "https://commits.webkit.org/318500@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320939\nrdar://183968921\n\nUnreviewed test gardening\n\n* LayoutTests/platform/mac-wk2/TestExpectations:\n\nCanonical link: https://commits.webkit.org/318500@main",
      "email": "darbinyan@apple.com",
      "hash": "70a158a53cfd87311ba3ce5625787f7e5115cc8a",
      "subject": "[Gardening]: [macOS] ASSERTION FAILED: callback.version \u003c m_cookiesVersion /Volumes/Data/worker/macOS-Tahoe-Debug-Build-EWS/build/Source/WebCore/platform/network/NetworkStorageSession.cpp"
    },
    "318501@main": {
      "author": "Said Abou-Hallawa",
      "avatar": "https://www.gravatar.com/avatar/ae80a929a378a055822829ae63903296?d=identicon\u0026s=64",
      "cl": "318501@main",
      "clUrl": "https://commits.webkit.org/318501@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=315970\nrdar://178390303\n\nReviewed by Simon Fraser.\n\nBitmapImage manages the async image decoding separate from the ImageDecoder in\na class named `ImageFrameWorkQueue`. The `WebCodecsImageDecoder` needs to have\nthe async image decoding as well. So if the async image decoding is implemented\nin a new ImageDeocder sub-class named `AsyncImageDecoder`, then we can remove\n`ImageFrameWorkQueue` and have `BitmapImage` and `WebCodecsImageDecoder` just\nhold an instance of `AsyncImageDecoder`. The other places which uses synchronous\nimage decoding can still use the existing ImageDecoders.\n\nThe platform `ImageDecoder` is still responsible of decoding image frames and\nretrieving image metadata. The `AsyncImageDecoder` is responsible of decoding the\nimage frames on a separate `WorkQueue`. The PlatformAsyncImageDecoder will combine\nboth classes in one class.\n\nTo communicate back async decoded image frames, a new class named `ImageDecoderClient`\nwill be introduced. This class will be notified when an image frame has finished\ndecoding. It is now sub-classed by `BitmapImageSource`. `WebCodecsImageDecoder`\nwill also sub-class it.\n\n* Source/WebCore/Headers.cmake:\n* Source/WebCore/Sources.txt:\n* Source/WebCore/WebCore.xcodeproj/project.pbxproj:\n* Source/WebCore/loader/cache/CachedImage.cpp:\n(WebCore::CachedImage::removeAllClientsWaitingForAsyncDecoding):\n* Source/WebCore/platform/graphics/AsyncImageDecoder.cpp: Added.\n(WebCore::AsyncImageDecoder::create):\n(WebCore::AsyncImageDecoder::AsyncImageDecoder):\n(WebCore::AsyncImageDecoder::requestQueue):\n(WebCore::AsyncImageDecoder::startWorkQueue):\n(WebCore::AsyncImageDecoder::dispatchRequest):\n(WebCore::AsyncImageDecoder::stopWorkQueue):\n(WebCore::AsyncImageDecoder::requestNativeImageAtIndex):\n(WebCore::AsyncImageDecoder::isPendingDecodingAtIndex const):\n(WebCore::AsyncImageDecoder::dump const):\n(WebCore::AsyncImageDecoder::bytesDecodedToDetermineProperties const):\n(WebCore::AsyncImageDecoder::encodedDataStatus const):\n(WebCore::AsyncImageDecoder::setEncodedDataStatusChangeCallback):\n(WebCore::AsyncImageDecoder::frameCount const):\n(WebCore::AsyncImageDecoder::hasHDRGainMap const):\n(WebCore::AsyncImageDecoder::primaryFrameIndex const):\n(WebCore::AsyncImageDecoder::repetitionCount const):\n(WebCore::AsyncImageDecoder::uti const):\n(WebCore::AsyncImageDecoder::filenameExtension const):\n(WebCore::AsyncImageDecoder::accessibilityDescription const):\n(WebCore::AsyncImageDecoder::hotSpot const):\n(WebCore::AsyncImageDecoder::frameDurationAtIndex const):\n(WebCore::AsyncImageDecoder::frameHasAlphaAtIndex const):\n(WebCore::AsyncImageDecoder::fetchFrameMetaDataAtIndex const):\n(WebCore::AsyncImageDecoder::createNativeImageAtIndex):\n(WebCore::AsyncImageDecoder::setExpectedContentSize):\n(WebCore::AsyncImageDecoder::setData):\n(WebCore::AsyncImageDecoder::isAllDataReceived const):\n(WebCore::AsyncImageDecoder::clearFrameBufferCache):\n(WebCore::AsyncImageDecoder::size const):\n(WebCore::AsyncImageDecoder::isPanorama const):\n(WebCore::AsyncImageDecoder::isSpatial const):\n(WebCore::AsyncImageDecoder::spatialLeftEyeFrameIndex const):\n(WebCore::AsyncImageDecoder::spatialRightEyeFrameIndex const):\n(WebCore::AsyncImageDecoder::spatialEyePropertiesAtIndex const):\n(WebCore::AsyncImageDecoder::isMaybePanoramic const):\n* Source/WebCore/platform/graphics/AsyncImageDecoder.h: Added.\n(WebCore::AsyncImageDecoder::requestNativeImageAtIndex):\n(WebCore::AsyncImageDecoder::isWorkQueueIdle const):\n(WebCore::AsyncImageDecoder::setMinimumDecodingDurationForTesting):\n(WebCore::AsyncImageDecoder::minimumDecodingDurationForTesting const):\n* Source/WebCore/platform/graphics/BitmapImage.h:\n* Source/WebCore/platform/graphics/BitmapImageDescriptor.cpp:\n(WebCore::BitmapImageDescriptor::isPanorama const):\n(WebCore::BitmapImageDescriptor::imageMetadata const):\n(WebCore::BitmapImageDescriptor::primaryFrameIndex const):\n(WebCore::BitmapImageDescriptor::frameCount const):\n(WebCore::BitmapImageDescriptor::repetitionCount const):\n(WebCore::BitmapImageDescriptor::hasHDRGainMap const):\n(WebCore::BitmapImageDescriptor::uti const):\n(WebCore::BitmapImageDescriptor::filenameExtension const):\n(WebCore::BitmapImageDescriptor::accessibilityDescription const):\n(WebCore::BitmapImageDescriptor::hotSpot const):\n* Source/WebCore/platform/graphics/BitmapImageSource.cpp:\n(WebCore::BitmapImageSource::decoder const):\n(WebCore::BitmapImageSource::destroyDecodedData):\n(WebCore::BitmapImageSource::canDestroyDecodedData const):\n(WebCore::BitmapImageSource::stopAnimation):\n(WebCore::BitmapImageSource::isDecoderWorkQueueIdle const):\n(WebCore::BitmapImageSource::stopDecoderWorkQueue):\n(WebCore::BitmapImageSource::isPendingDecodingAtIndex const):\n(WebCore::BitmapImageSource::imageFrameDecodeAtIndexHasFinished):\n(WebCore::BitmapImageSource::frameAtIndexCacheIfNeeded):\n(WebCore::BitmapImageSource::requestNativeImageAtIndex):\n(WebCore::BitmapImageSource::setMinimumDecodingDurationForTesting):\n(WebCore::BitmapImageSource::dump const):\n(WebCore::BitmapImageSource::workQueue const): Deleted.\n(WebCore::BitmapImageSource::isDecodingWorkQueueIdle const): Deleted.\n(WebCore::BitmapImageSource::stopDecodingWorkQueue): Deleted.\n* Source/WebCore/platform/graphics/BitmapImageSource.h:\n* Source/WebCore/platform/graphics/ImageDecoder.h:\n* Source/WebCore/platform/graphics/ImageDecoderClient.h: Added.\n* Source/WebCore/platform/graphics/ImageSource.h:\n(WebCore::ImageSource::stopDecoderWorkQueue):\n(WebCore::ImageSource::stopDecodingWorkQueue): Deleted.\n* Source/WebKit/WebProcess/GPU/media/RemoteImageDecoderAVFManager.cpp:\n(WebKit::RemoteImageDecoderAVFManager::createRemoteImageDecoder):\n(WebKit::RemoteImageDecoderAVFManager::createImageDecoder):\n(WebKit::RemoteImageDecoderAVFManager::createAsyncImageDecoder):\n(WebKit::RemoteImageDecoderAVFManager::setUseGPUProcess):\n* Source/WebKit/WebProcess/GPU/media/RemoteImageDecoderAVFManager.h:\n* Source/WebCore/platform/graphics/BitmapImageDescriptor.h:\n* Source/WebCore/platform/graphics/ImageFrameWorkQueue.cpp: Removed.\n* Source/WebCore/platform/graphics/ImageDecoder.cpp:\n(WebCore::createInProcessAsyncImageDecoderAVFObjC):\n(WebCore::platformRegisterFactories):\n\nCanonical link: https://commits.webkit.org/318501@main",
      "email": "said@apple.com",
      "hash": "bb95a2f78031283cada762bcad6e521b98536380",
      "subject": "Introduce `AsyncImageDecoder`"
    },
    "318502@main": {
      "author": "Yusuke Suzuki",
      "avatar": "https://www.gravatar.com/avatar/3455d9081295e3e740c1ffa901217d9b?d=identicon\u0026s=64",
      "cl": "318502@main",
      "clUrl": "https://commits.webkit.org/318502@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320869\nrdar://183892495\n\nReviewed by Yijia Huang.\n\nEnable iterator join proposal[1] as it reaches to stage-3.\n\n[1]: https://github.com/tc39/proposal-iterator-join\n\n* JSTests/stress/iterator-prototype.js:\n* Source/WTF/Scripts/Preferences/UnifiedWebPreferences.yaml:\n\nCanonical link: https://commits.webkit.org/318502@main",
      "email": "ysuzuki@apple.com",
      "hash": "e9a62e6b4da584ff54df97dcd36adf18a01d4505",
      "subject": "[JSC] Enable iterator join proposal"
    },
    "318503@main": {
      "author": "Adrian Perez de Castro",
      "avatar": "https://www.gravatar.com/avatar/30ffea8cf404586741a8f5f7110c0914?d=identicon\u0026s=64",
      "cl": "318503@main",
      "clUrl": "https://commits.webkit.org/318503@main",
      "description": "Unreviewed gardening.\n\n* LayoutTests/platform/glib/TestExpectations: Mark tests that are\npassing consistently since 317560@main accordingly.\n\nCanonical link: https://commits.webkit.org/318503@main",
      "email": "aperez@igalia.com",
      "hash": "4ed3adb45dc9a4cef897c79c2c6f44772710825e",
      "subject": "[GLib] Add test expectations for passing corner-shape tests"
    },
    "318504@main": {
      "author": "Yijia Huang",
      "avatar": "https://www.gravatar.com/avatar/5bc95a5f0a5fdfc107bbdec6979dae89?d=identicon\u0026s=64",
      "cl": "318504@main",
      "clUrl": "https://commits.webkit.org/318504@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320927\nrdar://183960408\n\nReviewed by Yusuke Suzuki.\n\nPlainDate's constructor now sanitizes `year` itself instead of asserting and\ntrusting every caller to check first — this was crashing on debug builds\n(e.g. indianSakaToISO, huge duration arithmetic) and silently wrapping\nvalues incorrectly in a couple of places. Added an int64_t overload and a\nsentinel() factory for callers whose month/day may be equally untrustworthy.\n\nAlso fixed PlainYearMonth.prototype.toPlainDate misusing the year sentinel\nas a day poison value (wrong clamp direction under overflow:constrain), and\na possible UB static_cast in the PlainMonthDay constructor.\n\nConsolidated CalendarResolveFields/CalendarDateToISO into single\nimplementations in CalendarFields.cpp, removing a second undocumented\nduplicate in TemporalCalendar.cpp and monthDayFromFields's own internal\nduplication.\n\nCanonical link: https://commits.webkit.org/318504@main",
      "email": "yijia_huang@apple.com",
      "hash": "89c1884e15a927c5dd681311418d44b66cf8012e",
      "subject": "[JSC][Temporal] Guard PlainDate construction against out-of-range years; consolidate CalendarResolveFields"
    },
    "318505@main": {
      "author": "Sosuke Suzuki",
      "avatar": "https://www.gravatar.com/avatar/e63b87350fe19bdd9a30c7234eda45af?d=identicon\u0026s=64",
      "cl": "318505@main",
      "clUrl": "https://commits.webkit.org/318505@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320857\n\nReviewed by Yusuke Suzuki.\n\nsetMemory() registers the instance as an anchor of each memory as soon as that memory\nslot is filled, while updateCachedMemories() walks every memory slot. Since imports are\nlinked one by one, a grow can reach an instance whose remaining imported memories are not\nset yet -- from a later import's getter, or after a LinkError left the half-linked instance\nanchored -- and dereferences the null slots:\n\n    const mem0 = new WebAssembly.Memory({ initial: 1, maximum: 8 });\n    // module imports memories env:m0 and env:m1\n    try { new WebAssembly.Instance(module, { env: { m0: mem0, m1: 42 } }); } catch { }\n    mem0.grow(0); // crash\n\nSkip memory slots that are not set yet in updateCachedMemories() so that it can be called\nin the middle of instance construction.\n\n* Source/JavaScriptCore/wasm/js/JSWebAssemblyInstance.h:\n\nCanonical link: https://commits.webkit.org/318505@main",
      "email": "sosuke@bun.sh",
      "hash": "bfe5073f4c99579f6c21a68c606bea5cff94f072",
      "subject": "[Wasm] `JSWebAssemblyInstance::updateCachedMemories()` crashes on a partially-linked instance"
    },
    "318506@main": {
      "author": "Yusuke Suzuki",
      "avatar": "https://www.gravatar.com/avatar/3455d9081295e3e740c1ffa901217d9b?d=identicon\u0026s=64",
      "cl": "318506@main",
      "clUrl": "https://commits.webkit.org/318506@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320860\nrdar://183888656\n\nReviewed by Yijia Huang.\n\nCrandall reduction does correction loop at the end. Typically it runs\nfactor q times. But it turned out that this is really costly, and branch miss\nof taking this loop or not becomes huge cost so far.\n\nThis patch adds reduceOnce. This *attempts* to perform r - b without\nasking actually necessary. And the subtract result says whether we\nneeded to do it at all: if r is smaller than b, then we didn't need to\ndo it. So basically it is doing greaterThanOrEqual and inplaceSub at the\nsame time like what CPU's cmp operation does (in fact it is sub). And\nbased on this subtract result, we select\n\n    r[i] = subtract ? difference[i] : r[i];\n\nwithout a branch (csel will be used).\n\nSo ultimately whether this peeling loop is effective relies on how many\ntimes we need to run the correction loop. This is bound by q, and when q\n= 1, then we do not need this loop at all. This is when the divisor exceeds\nhalf of 2^(n * digitBits), which can be checked with `b.back() \u003e\u003e (digitBits - 1)`.\nSo otherwise, running this is worth doing.\n\n* Source/JavaScriptCore/runtime/JSBigInt.cpp:\n(JSC::JSBigInt::reduceOnce):\n(JSC::JSBigInt::cachedModFoldImpl):\n* Source/JavaScriptCore/runtime/JSBigInt.h:\n\nCanonical link: https://commits.webkit.org/318506@main",
      "email": "ysuzuki@apple.com",
      "hash": "0270fd0a8d77d6e96aa6bfed787cc0ce199e4287",
      "subject": "[JSC] Make the first corrective subtract in JSBigInt Crandall reduction branch-free"
    },
    "318507@main": {
      "author": "Vassili Bykov",
      "avatar": "https://www.gravatar.com/avatar/73ac31c69ff9a621b733e47253103b8a?d=identicon\u0026s=64",
      "cl": "318507@main",
      "clUrl": "https://commits.webkit.org/318507@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320930\nrdar://183964804\n\nReviewed by Yusuke Suzuki.\n\nThis patch moves seldom executed code out of two hot functions in Lexer and Parser,\nreducing the containing functions' register pressure and spill traffic and improving\nperformance.\n\nLexer::lexWithoutClearingLineTerminator: the single-line comment scanner is extracted into\nthe scanSingleLineComment() function.\n\nParser::parseAssignmentExpression(): the arrow-function candidate path and the\ndestructuring path are extracted as parseArrowFunctionCandidate() and\nparseDestructuringAssignment().\n\nTesting: no logic changes, covered by existing tests.\n\n* Source/JavaScriptCore/parser/Lexer.cpp:\n(JSC::Lexer\u003cT\u003e::scanSingleLineComment):\n(JSC::Lexer\u003cT\u003e::lexWithoutClearingLineTerminator):\n* Source/JavaScriptCore/parser/Lexer.h:\n* Source/JavaScriptCore/parser/Parser.cpp:\n(JSC::Parser\u003cLexerType\u003e::parseDestructuringAssignment):\n(JSC::Parser\u003cLexerType\u003e::parseArrowFunctionCandidate):\n(JSC::Parser\u003cLexerType\u003e::parseAssignmentExpression):\n* Source/JavaScriptCore/parser/Parser.h:\n\nCanonical link: https://commits.webkit.org/318507@main",
      "email": "v_bykov@apple.com",
      "hash": "8aa3307b46af61b6f3f3dc7ee15df203f4146fe1",
      "subject": "[JSC] Move two rarely-executed code paths out of the lexer and parser hot functions"
    },
    "318508@main": {
      "author": "Ryosuke Niwa",
      "avatar": "https://www.gravatar.com/avatar/ed2c71248fe3ea15d9129f6e9a2a1e85?d=identicon\u0026s=64",
      "cl": "318508@main",
      "clUrl": "https://commits.webkit.org/318508@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320751\n\nReviewed by Megan Gardner, Wenson Hsieh, and Lily Spiniolas.\n\nWhen a selection is inside a cross-origin (site-isolated) iframe on iOS, dragging the selection\nhandles did nothing, and the selection/caret coordinates were mapped into and out of the subframe\nusing only a translation offset, which is wrong whenever the iframe or an ancestor has a CSS\ntransform.\n\nThree problems, all stemming from the selection living in the subframe's process while these code\npaths assumed it's in the main frame's process:\n\n  - The UI process sent UpdateSelectionWithTouches, UpdateSelectionWithExtentPoint, and\n    UpdateSelectionWithExtentPointAndBoundary unconditionally to the main-frame process, where\n    focusedOrMainFrame() is not the cross-origin subframe, so the drag operated on the wrong\n    frame (or no selection at all).\n  - Even once routed correctly, rangeForPointInRootViewCoordinates() early-returned when\n    LocalFrame::localMainFrame() was null - always the case in a cross-origin subframe's process -\n    so no range was ever computed and the selection never changed.\n  - Points and rects were mapped between main-frame and subframe coordinates by adding/subtracting\n    the frame's origin within the main frame (a translation), which cannot represent a CSS\n    transform (e.g. scale()) on the iframe or any ancestor, so the selection landed on the wrong\n    line and the handles/highlight were drawn in the wrong place inside a transformed iframe.\n\nRoute these three selection-update messages to the process containing the focused frame rather\nthan always the main-frame process, and respond with the original point back to UIKit. This\nhandles arbitrary nesting in one hop because the focused frame is known up front. For the\nnon-isolated case the focused frame is the main frame, so behavior is unchanged; Mac is likewise\nunaffected.\n\nReplace the translation-only coordinate mapping with transform-aware conversions on FrameView:\nconvertFromRootViewAcrossIsolatedFrames(), convertToRootViewAcrossIsolatedFrames(), and\nrootViewToContentsAcrossSiteIsolation(). Unlike Widget::convertFromRootView()/rootViewToContents(),\nthese follow the frame tree even across process boundaries (Widget::parent() is not populated for\na RemoteFrameView under Site Isolation) and apply the CSS transform on each intervening frame owner\nvia the synced absoluteToChildFrameOwnerLocalTransform()/childFrameOwnerToRootContentTransform().\nThis logic previously existed as file-static helpers in IntersectionObserver.cpp; promote it to\nFrameView so both features share one implementation. For a same-process frame tree, and for a\nsubframe positioned by a plain offset, these reduce to the previous behavior.\n\nSelection input now uses these conversions: mainFrameCoordinatesToRootView() (used by\nUpdateSelectionWithTouches and the two extent-point messages) maps the UIKit interaction point,\nsupplied in main-frame coordinates, into the focused frame's local root-view coordinates; and\nRemoteFrameGeometryTransformer, which routes the initial selection/tap gesture into a remote\nsubframe, applies the owner element's transform (obtained from the parent LocalFrameView, whose\nowner renderer is in-process) instead of a translation. Selection output - the caret rects and\nselection geometry quads in getPlatformEditorState() - is mapped back to main-frame coordinates\nwith the inverse conversion, so UIKit reads correct rects synchronously mid-gesture. Both are\ngated on the frame having a remote main frame (!localMainFrame()); the offset channel\n(m_remoteFrameOffsetInMainFrame) is retained for accessibility but no longer used by selection.\n\nIn rangeForPointInRootViewCoordinates(), localMainFrame is used only to clamp the point to the\nover-expanded the selection because that clamp used the subframe's unobscuredContentRect() (a\ncontents-space rect whose origin is the scroll offset), double-applying the scroll; convert that\nrect to root-view coordinates before clamping so the scroll is applied exactly once.\n\nNote that synthetic mouse events during selection (gated by\nQuirks::shouldDispatchSyntheticMouseEventsWhenModifyingSelection, a top-document-scoped quirk) are\nnot dispatched inside cross-origin iframes since the quirk only applies to the local top document.\n\nTests: http/tests/site-isolation/ios/drag-selection-grabber-extends-selection-in-cross-origin-iframe.html\n       http/tests/site-isolation/ios/drag-selection-grabber-in-scrolled-cross-origin-iframe.html\n       http/tests/site-isolation/ios/select-and-drag-in-transformed-cross-origin-iframe.html\n\n* LayoutTests/http/tests/site-isolation/ios/drag-selection-grabber-extends-selection-in-cross-origin-iframe-expected.txt: Added.\n* LayoutTests/http/tests/site-isolation/ios/drag-selection-grabber-extends-selection-in-cross-origin-iframe.html: Added.\n* LayoutTests/http/tests/site-isolation/ios/drag-selection-grabber-in-scrolled-cross-origin-iframe-expected.txt: Added.\n* LayoutTests/http/tests/site-isolation/ios/drag-selection-grabber-in-scrolled-cross-origin-iframe.html: Added.\n* LayoutTests/http/tests/site-isolation/ios/select-and-drag-in-transformed-cross-origin-iframe-expected.txt: Added.\n* LayoutTests/http/tests/site-isolation/ios/select-and-drag-in-transformed-cross-origin-iframe.html: Added.\n* LayoutTests/http/tests/site-isolation/resources/multiline-selectable-text-frame.html: Added.\n* LayoutTests/http/tests/site-isolation/resources/scrollable-selectable-text-frame.html:\nParameterized the scroll offset via a query string.\n* Source/WebKit/UIProcess/Cocoa/WebPageProxyCocoa.mm:\n(WebKit::WebPageProxy::updateSelectionWithExtentPoint): Route to the focused frame's process.\n(WebKit::WebPageProxy::updateSelectionWithExtentPointAndBoundary): Ditto.\n* Source/WebKit/UIProcess/WebPageProxy.cpp:\n* Source/WebKit/UIProcess/ios/WebPageProxyIOS.mm:\n(WebKit::WebPageProxy::updateSelectionWithTouches): Ditto.\n* Source/WebKit/WebProcess/WebPage/Cocoa/WebPageCocoa.mm:\n(WebKit::WebPage::mainFrameCoordinatesToRootView const): Map the point transform-aware into\nthe focused frame's local root-view coordinates when the main frame is remote.\n(WebKit::WebPage::updateSelectionWithExtentPointAndBoundary): Convert the incoming point.\n(WebKit::WebPage::updateSelectionWithExtentPoint): Ditto.\n* Source/WebKit/WebProcess/WebPage/WebPage.h:\n* Source/WebKit/WebProcess/WebPage/ios/WebPageIOS.mm:\n(WebKit::rangeForPointInRootViewCoordinates): Fall back to this frame's view for the viewport\nclamp when the main frame is remote, instead of returning early.\n(WebKit::WebPage::updateSelectionWithTouches): Convert the point and echo the original back.\n(WebKit::WebPage::getPlatformEditorState const): Map the selection caret rects and geometry\nquads to main-frame coordinates with the transform-aware conversion.\n* Source/WebCore/page/FrameView.cpp:\n(WebCore::siteIsolationAwareParentView): Added; frame-tree parent that is populated across process\nboundaries.\n(WebCore::FrameView::convertFromRootViewAcrossIsolatedFrames const): Added.\n(WebCore::FrameView::convertToRootViewAcrossIsolatedFrames const): Added.\n(WebCore::FrameView::rootViewToContentsAcrossSiteIsolation const): Added.\n(WebCore::FrameView::convertFromRootViewAcrossIsolatedFrames const):\n(WebCore::FrameView::convertToRootViewAcrossIsolatedFrames const):\n(WebCore::FrameView::rootViewToContentsAcrossIsolatedFrames const):\n* Source/WebCore/page/FrameView.h:\n* Source/WebCore/page/IntersectionObserver.cpp:\n(WebCore::IntersectionObserver::computeIntersectionState const): Use the shared FrameView conversions.\n(WebCore::convertFromContainingView): Deleted.\n(WebCore::convertFromRootView): Deleted.\n(WebCore::mainFrameViewToContents): Deleted.\n* Source/WebCore/page/RemoteFrameGeometryTransformer.cpp:\n(WebCore::RemoteFrameGeometryTransformer::transformToRemoteFrameCoordinates const): Apply the remote\nframe owner's transform instead of a translation.\n\nCanonical link: https://commits.webkit.org/318508@main",
      "email": "rniwa@webkit.org",
      "hash": "0165aa33122d51c5ca9d495dfffb4775e1c5d88f",
      "subject": "[Site Isolation] [iOS] Can't adjust selection endpoints inside a cross-site iframe"
    },
    "318509@main": {
      "author": "Brent Fulgham",
      "avatar": "https://www.gravatar.com/avatar/c6989a65afef0d015b55c65406e37ccc?d=identicon\u0026s=64",
      "cl": "318509@main",
      "clUrl": "https://commits.webkit.org/318509@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319939\n\u003crdar://66569768\u003e\n\nReviewed by Vitor Roriz.\n\nUnder native page zoom-out, the smart minimum (minLogicalFontSize) was applied as a\ndevice-space floor, so small text could not shrink below ~9px while a fixed-px max-width\ncap scaled down normally. The oversized text advance then overflowed the shrunken cap and\nwrapped.\n\nThis patch resolves this by scaling the smart minimum font size by the zoom factor when\nzooming out so that text shrinks with the page. Behavior when non-zoomed or zoomed-in\nis unchanged.\n\nTest: fast/css/zoom-page-max-width-text-wrap.html\n\n* LayoutTests/fast/css/zoom-page-max-width-text-wrap-expected.txt: Added.\n* LayoutTests/fast/css/zoom-page-max-width-text-wrap.html: Added.\n* LayoutTests/platform/glib/fast/backgrounds/background-position-parsing-expected.txt: Rebaselined.\n* LayoutTests/platform/glib/svg/stroke/nan-stroke-width-crash-expected.txt: Rebaselined.\n* LayoutTests/platform/ios/fast/backgrounds/background-position-parsing-expected.txt: Rebaselined.\n* LayoutTests/platform/ios/svg/stroke/nan-stroke-width-crash-expected.txt: Rebaselined.\n* LayoutTests/platform/mac/fast/backgrounds/background-position-parsing-expected.txt: Rebaselined.\n* LayoutTests/platform/mac/svg/stroke/nan-stroke-width-crash-expected.txt: Rebaselined.\n* Source/WebCore/style/StyleFontSizeFunctions.cpp:\n(WebCore::Style::computedFontSizeFromSpecifiedSize):\n\nCanonical link: https://commits.webkit.org/318509@main",
      "email": "bfulgham@apple.com",
      "hash": "006da4a5c5bdb70f48561d57b8574763ad72076e",
      "subject": "moneycontrol.com: Overlapping content at zoom level 50%"
    },
    "318510@main": {
      "author": "Megan Gardner",
      "avatar": "https://www.gravatar.com/avatar/b466a5bcbfabf4d82a8ecc595db5a531?d=identicon\u0026s=64",
      "cl": "318510@main",
      "clUrl": "https://commits.webkit.org/318510@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320922\nrdar://183953883\n\nReviewed by Aditya Keerthi.\n\nAdd the interface surface for HighlightRegistry.highlightsFromPoint()\n(https://drafts.csswg.org/css-highlight-api-1/) behind a new HighlightsFromPointEnabled setting.\nThis is the first of a short series of patches: it establishes the IDL, dictionaries, feature flag,\nand a stub implementation, so the interface shape can be reviewed independently. The hit-testing\nalgorithm that returns the highlights present at a point is added in a follow-up.\n\nLayoutTests/imported/w3c/web-platform-tests/css/css-highlight-api/HighlightRegistry-highlightsFromPoint.html\nLayoutTests/imported/w3c/web-platform-tests/css/css-highlight-api/HighlightRegistry-highlightsFromPoint-ranges.html\nLayoutTests/imported/w3c/web-platform-tests/shadow-dom/HighlightRegistry-highlightsFromPoint.html\nLayoutTests/imported/w3c/web-platform-tests/css/css-highlight-api/idlharness.window.html\n\n* LayoutTests/imported/w3c/web-platform-tests/css/css-highlight-api/HighlightRegistry-highlightsFromPoint-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-highlight-api/HighlightRegistry-highlightsFromPoint-ranges-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-highlight-api/idlharness.window-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/shadow-dom/HighlightRegistry-highlightsFromPoint-expected.txt:\n* Source/WTF/Scripts/Preferences/UnifiedWebPreferences.yaml:\n* Source/WebCore/CMakeLists.txt:\n* Source/WebCore/DerivedSources.make:\n* Source/WebCore/Modules/highlight/HighlightHitResult.h: Copied from Source/WebCore/Modules/highlight/HighlightRegistry.idl.\n* Source/WebCore/Modules/highlight/HighlightHitResult.idl: Copied from Source/WebCore/Modules/highlight/HighlightRegistry.idl.\n* Source/WebCore/Modules/highlight/HighlightRegistry.cpp:\n(WebCore::HighlightRegistry::highlightsFromPoint):\n* Source/WebCore/Modules/highlight/HighlightRegistry.h:\n* Source/WebCore/Modules/highlight/HighlightRegistry.idl:\n* Source/WebCore/Modules/highlight/HighlightsFromPointOptions.h: Copied from Source/WebCore/Modules/highlight/HighlightRegistry.idl.\n* Source/WebCore/Modules/highlight/HighlightsFromPointOptions.idl: Copied from Source/WebCore/Modules/highlight/HighlightRegistry.idl.\n* Source/WebCore/Sources.txt:\n* Source/WebCore/WebCore.xcodeproj/project.pbxproj:\n\nCanonical link: https://commits.webkit.org/318510@main",
      "email": "megan_gardner@apple.com",
      "hash": "62c0076685e183447316868056dace66a5997a21",
      "subject": "[Custom Highlight API] Add the highlightsFromPoint() IDL surface behind a feature flag."
    },
    "318511@main": {
      "author": "Trial",
      "avatar": "https://www.gravatar.com/avatar/7650b3c1c38bb4c926a3514449062c32?d=identicon\u0026s=64",
      "cl": "318511@main",
      "clUrl": "https://commits.webkit.org/318511@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320861\nrdar://183890729\n\nReviewed by Sosuke Suzuki.\n\nWe had unnecessary scratch registers on 64bit because 32bit\nbranchIfNotNumber etc. requires a scratch register which was not\nnecessary in 64bit. But now 32bit JIT is removed so we can remove this\nscratch register and remove the allocation of that. This patch\nsimplifies the code using branchIfNumber etc. and remove unnecessary\nscratch register allocations.\n\nAlso drop extraGPRArgs from CCallHelpers as it is no longer necessary. It\nwas used only on 32bit to represent 64bit values in two registers.\n\n* Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:\n(JSC::DFG::SpeculativeJIT::emitUntypedOrAnyBigIntBitOp):\n(JSC::DFG::SpeculativeJIT::compileNotDoubleNeitherDoubleNorHeapBigIntNorStringStrictEquality):\n(JSC::DFG::SpeculativeJIT::compilePeepHoleNotDoubleNeitherDoubleNorHeapBigIntNorStringStrictEquality):\n(JSC::DFG::SpeculativeJIT::speculateNotDouble):\n(JSC::DFG::SpeculativeJIT::speculateNeitherDoubleNorHeapBigInt):\n(JSC::DFG::SpeculativeJIT::speculateNeitherDoubleNorHeapBigIntNorString):\n(JSC::DFG::SpeculativeJIT::emitSwitchImm):\n(JSC::DFG::SpeculativeJIT::compileNormalizeMapKey):\n(JSC::DFG::SpeculativeJIT::compileToPropertyKeyOrNumber):\n(JSC::DFG::SpeculativeJIT::compileToNumeric):\n(JSC::DFG::SpeculativeJIT::compileCallNumberConstructor):\n(JSC::DFG::SpeculativeJIT::compileProfileType):\n* Source/JavaScriptCore/dfg/DFGSpeculativeJIT.h:\n* Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:\n(JSC::DFG::SpeculativeJIT::compileNeitherDoubleNorHeapBigIntToNotDoubleStrictEquality):\n* Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:\n(JSC::FTL::DFG::LowerDFGToB3::compileCompareStrictEq):\n* Source/JavaScriptCore/jit/AssemblyHelpers.h:\n(JSC::AssemblyHelpers::storeValue):\n(JSC::AssemblyHelpers::branchIfNumber):\n(JSC::AssemblyHelpers::branchIfNotNumber):\n(JSC::AssemblyHelpers::emitTypeOf):\n* Source/JavaScriptCore/jit/CCallHelpers.h:\n(JSC::CCallHelpers::ArgCollection::ArgCollection):\n(JSC::CCallHelpers::ArgCollection::pushRegArg):\n(JSC::CCallHelpers::ArgCollection::pushNonArg):\n(JSC::CCallHelpers::ArgCollection::addGPRArg):\n(JSC::CCallHelpers::ArgCollection::addStackArg):\n(JSC::CCallHelpers::ArgCollection::addPoke):\n(JSC::CCallHelpers::ArgCollection::argCount):\n(JSC::CCallHelpers::calculatePokeOffset):\n(JSC::CCallHelpers::pokeForArgument):\n(JSC::CCallHelpers::stackAligned):\n(JSC::CCallHelpers::marshallArgumentRegister):\n(JSC::CCallHelpers::setupArgumentsImpl):\n(JSC::CCallHelpers::setupArgumentsEntryImpl):\n(JSC::CCallHelpers::setupArguments):\n(JSC::CCallHelpers::setupArgumentsForIndirectCall):\n(JSC::CCallHelpers::ArgCollection::pushExtraRegArg): Deleted.\n(JSC::CCallHelpers::ArgCollection::addGPRExtraArg): Deleted.\n* Source/JavaScriptCore/jit/JITAddGenerator.cpp:\n(JSC::JITAddGenerator::generateFastPath):\n* Source/JavaScriptCore/jit/JITArithmetic.cpp:\n(JSC::JIT::emit_compareSlowImpl):\n(JSC::JIT::emit_op_pow):\n(JSC::JIT::emitBitBinaryOpFastPath):\n* Source/JavaScriptCore/jit/JITBitAndGenerator.h:\n(JSC::JITBitAndGenerator::JITBitAndGenerator):\n* Source/JavaScriptCore/jit/JITBitBinaryOpGenerator.h:\n(JSC::JITBitBinaryOpGenerator::JITBitBinaryOpGenerator):\n* Source/JavaScriptCore/jit/JITBitOrGenerator.h:\n(JSC::JITBitOrGenerator::JITBitOrGenerator):\n* Source/JavaScriptCore/jit/JITBitXorGenerator.h:\n(JSC::JITBitXorGenerator::JITBitXorGenerator):\n* Source/JavaScriptCore/jit/JITDivGenerator.cpp:\n(JSC::JITDivGenerator::loadOperand):\n* Source/JavaScriptCore/jit/JITLeftShiftGenerator.cpp:\n(JSC::JITLeftShiftGenerator::generateFastPath):\n* Source/JavaScriptCore/jit/JITLeftShiftGenerator.h:\n(JSC::JITLeftShiftGenerator::JITLeftShiftGenerator):\n* Source/JavaScriptCore/jit/JITMulGenerator.cpp:\n(JSC::JITMulGenerator::generateInline):\n(JSC::JITMulGenerator::generateFastPath):\n* Source/JavaScriptCore/jit/JITNegGenerator.cpp:\n(JSC::JITNegGenerator::generateInline):\n(JSC::JITNegGenerator::generateFastPath):\n* Source/JavaScriptCore/jit/JITOpcodes.cpp:\n(JSC::JIT::emit_op_mov):\n(JSC::JIT::emit_op_to_property_key_or_number):\n(JSC::JIT::emit_op_to_number):\n(JSC::JIT::emit_op_to_numeric):\n(JSC::JIT::emit_op_switch_imm):\n(JSC::JIT::emit_op_profile_type):\n* Source/JavaScriptCore/jit/JITRightShiftGenerator.cpp:\n(JSC::JITRightShiftGenerator::generateFastPath):\n* Source/JavaScriptCore/jit/JITRightShiftGenerator.h:\n(JSC::JITRightShiftGenerator::JITRightShiftGenerator):\n* Source/JavaScriptCore/jit/JITSubGenerator.cpp:\n(JSC::JITSubGenerator::generateInline):\n(JSC::JITSubGenerator::generateFastPath):\n* Source/JavaScriptCore/jit/ThunkGenerators.cpp:\n(JSC::numberConstructorCallThunkGenerator):\n* Source/JavaScriptCore/lol/LOLJIT.cpp:\n(JSC::LOL::LOLJIT::emitCompareSlowImpl):\n(JSC::LOL::LOLJIT::emit_op_to_number):\n(JSC::LOL::LOLJIT::emit_op_to_numeric):\n(JSC::LOL::LOLJIT::emit_op_to_property_key_or_number):\n(JSC::LOL::LOLJIT::emit_op_switch_imm):\n(JSC::LOL::LOLJIT::emit_op_lshift):\n(JSC::LOL::LOLJIT::emitBitBinaryOpFastPath):\n* Source/JavaScriptCore/wasm/js/JSToWasm.cpp:\n(JSC::Wasm::RTT::jsToWasmICEntrypoint const):\n* Source/JavaScriptCore/wasm/js/WasmToJS.cpp:\n(JSC::Wasm::wasmToJS):\n\nCanonical link: https://commits.webkit.org/318511@main",
      "email": "trial@local",
      "hash": "84f83abd45c912c01cee7bda9deffc2bc74dd85c",
      "subject": "[JSC] Remove various scratch registers as branchIfNumber etc. no longer need to take a scratch for 64bit"
    },
    "318512@main": {
      "author": "Yusuke Suzuki",
      "avatar": "https://www.gravatar.com/avatar/3455d9081295e3e740c1ffa901217d9b?d=identicon\u0026s=64",
      "cl": "318512@main",
      "clUrl": "https://commits.webkit.org/318512@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320877\nrdar://183897657\n\nReviewed by Sosuke Suzuki.\n\nSome real world code was not using this first-character-filter just\nbecause it is taking UntypedUse instead of StringUse. This patch extend\nthe coverage by checking String at runtime to perform\nfirst-character-filter.\n\nTest: JSTests/stress/regexp-test-first-character-filter-untyped.js\n\n* JSTests/stress/regexp-and-arg-same.js: Added.\n(f):\n* JSTests/stress/regexp-test-first-character-filter-untyped.js: Added.\n(shouldBe):\n(const.toStringObject.toString):\n(testAnchored):\n(testDigits):\n(testSticky):\n(makeRope):\n(i.catch):\n* Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:\n(JSC::DFG::SpeculativeJIT::compileRegExpTest):\n(JSC::DFG::SpeculativeJIT::tryEmitRegExpTestFirstCharacterFilter):\n(JSC::DFG::SpeculativeJIT::compileRegExpExecNonGlobalOrSticky):\n(JSC::DFG::SpeculativeJIT::compileRegExpExecSticky):\n* Source/JavaScriptCore/dfg/DFGSpeculativeJIT.h:\n* Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:\n(JSC::DFG::SpeculativeJIT::emitRegExpStickyFirstCharacterFilterGuards):\n* Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:\n(JSC::FTL::DFG::LowerDFGToB3::compileCompareStrictEq):\n\nCanonical link: https://commits.webkit.org/318512@main",
      "email": "ysuzuki@apple.com",
      "hash": "fb299342a5802f73fa1bfd395dcc7aaac45e7010",
      "subject": "[JSC] Use first-character-filter even for UntypedUse edge"
    },
    "318513@main": {
      "author": "Richard Robinson",
      "avatar": "https://www.gravatar.com/avatar/a0d2f862985ed0fd47887be66f5a3e4f?d=identicon\u0026s=64",
      "cl": "318513@main",
      "clUrl": "https://commits.webkit.org/318513@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320941\nrdar://183965918\n\nReviewed by Abrar Rahman Protyasha and Aditya Keerthi.\n\nExpose these properties as SPI on `WebPage.Configuration`\n\n* Source/WebKit/UIProcess/API/Cocoa/WKWebViewConfiguration+Extras.swift:\n* Source/WebKit/UIProcess/API/Swift/WebPage+Configuration.swift:\n\nCanonical link: https://commits.webkit.org/318513@main",
      "email": "richard_robinson2@apple.com",
      "hash": "4226bb9234e22fc5de2ce32add9487fb68d20e26",
      "subject": "[SwiftUI WebKit API] Expose _attachmentElementEnabled and _imageControlsEnabled  on WebPage.Configuration"
    },
    "318514@main": {
      "author": "Chris Dumez",
      "avatar": "https://www.gravatar.com/avatar/a9f21fe3a8baf79b45f3c91572187bdc?d=identicon\u0026s=64",
      "cl": "318514@main",
      "clUrl": "https://commits.webkit.org/318514@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320865\n\nReviewed by Darin Adler.\n\nWhen a looping AudioBufferSourceNode was started with an explicit grain\nduration, renderFromBuffer() clamped maxFrame to the grain end\n(grainOffset + grainDuration). Intersecting the loop range against that\nmaxFrame could make virtualMinFrame (loopStart) exceed virtualMaxFrame,\nproducing a negative virtualDeltaFrames. The subsequent\n`abs(pitchRate) \u003e virtualDeltaFrames` sanity check then bailed out and\nthe node output silence.\n\nThe grain-duration limit is already enforced separately via m_endTime\n(set in adjustGrainParameters() and honored by updateSchedulingInfo()),\nso when looping the read window should be bounded by the loop points, not\nby the grain end. Only clamp maxFrame to the grain end for non-looping\ngrains. This matches the behavior of Blink \u0026 Gecko.\n\nTest: imported/w3c/web-platform-tests/webaudio/the-audio-api/the-audiobuffersourcenode-interface/audiobuffersource-loop-short-duration.html\n\n* LayoutTests/imported/w3c/web-platform-tests/webaudio/the-audio-api/the-audiobuffersourcenode-interface/audiobuffersource-loop-short-duration-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/webaudio/the-audio-api/the-audiobuffersourcenode-interface/audiobuffersource-loop-short-duration.html: Added.\nImport test from upstream WPT.\n\n* Source/WebCore/Modules/webaudio/AudioBufferSourceNode.cpp:\n(WebCore::AudioBufferSourceNode::renderFromBuffer):\n\nCanonical link: https://commits.webkit.org/318514@main",
      "email": "cdumez@apple.com",
      "hash": "03afbb84134b8c07a976f314fc4a2bf7fd8c7722",
      "subject": "[WPT] Fix webaudio/the-audio-api/the-audiobuffersourcenode-interface/audiobuffersource-loop-short-duration.html"
    },
    "318515@main": {
      "author": "Chris Dumez",
      "avatar": "https://www.gravatar.com/avatar/a9f21fe3a8baf79b45f3c91572187bdc?d=identicon\u0026s=64",
      "cl": "318515@main",
      "clUrl": "https://commits.webkit.org/318515@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320884\n\nReviewed by Darin Adler.\n\nWebKit renders the audio graph by pulling from the destination node, so a source\nnode is only processed if it is reachable from the destination. As a result, a\nscheduled source node (ConstantSourceNode, OscillatorNode, AudioBufferSourceNode)\nthat is started and stopped but never connected to the destination was never\nprocessed: it never reached its stop time and never fired its \"ended\" event. This\ndiverges from the specification and from Blink, which process active source nodes\nregardless of whether they are connected.\n\nFix this by registering a playing scheduled source node as an automatic pull node,\nWebKit's existing mechanism for nodes that must be processed on every render quantum\neven without a downstream connection. The node is registered when it begins playback\nand unregistered once it finishes or when the context is torn down. Nodes that are\nalso connected to the destination are processed only once per quantum, since\nAudioNode::processIfNecessary() already guards against reprocessing.\n\nRemoval happens in derefFinishedSourceNodes(), which runs on the audio thread, so the\ncall is wrapped in a DisableMallocRestrictionsForCurrentThreadScope: removing an entry\nfrom the automatic pull node hash set can reallocate its backing store.\n\nAdd a dedicated regression test that starts and stops a ConstantSourceNode without\nconnecting it to the destination and waits for the \"ended\" event; it times out\nwithout this fix. This also makes imported/w3c/web-platform-tests/webaudio/\nthe-audio-api/the-audiocontext-interface/suspend-with-navigation.html pass, since it\nrelies on an ended event from an unconnected source. That test also needs the\nback/forward cache, so it is added to shouldUseBackForwardCache() in the test harness.\n\n* LayoutTests/imported/w3c/web-platform-tests/webaudio/the-audio-api/the-constantsourcenode-interface/constant-source-onended-not-connected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/webaudio/the-audio-api/the-constantsourcenode-interface/constant-source-onended-not-connected-expected.txt: Added.\nAdd WPT test coverage for this. This test fails in shipping Safari but\npasses in both Chrome and Firefox.\n\n* LayoutTests/imported/w3c/web-platform-tests/webaudio/the-audio-api/the-audiocontext-interface/suspend-with-navigation-expected.txt:\nRebaseline bfcache test that was failing due to this bug. This test fails\nin shipping Safari but passes in both Chrome and Firefox.\n\n* Source/WebCore/Modules/webaudio/BaseAudioContext.cpp:\n(WebCore::BaseAudioContext::uninitialize):\n(WebCore::BaseAudioContext::derefFinishedSourceNodes):\n(WebCore::BaseAudioContext::sourceNodeWillBeginPlayback):\n* Tools/TestRunnerShared/TestFeatures.cpp:\n(WTR::shouldUseBackForwardCache):\n\nCanonical link: https://commits.webkit.org/318515@main",
      "email": "cdumez@apple.com",
      "hash": "d0c18b999649f850d457a6e1d3f4f80dd5134f00",
      "subject": "AudioScheduledSourceNode does not fire \"ended\" event when not connected to the destination"
    },
    "318516@main": {
      "author": "Chris Dumez",
      "avatar": "https://www.gravatar.com/avatar/a9f21fe3a8baf79b45f3c91572187bdc?d=identicon\u0026s=64",
      "cl": "318516@main",
      "clUrl": "https://commits.webkit.org/318516@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320892\n\nReviewed by Darin Adler.\n\nThe k-rate WPT test compares two AudioBufferSourceNodes that should produce\nidentical detune: a reference node driven by setValueAtTime/linearRampToValueAtTime,\nand a test node whose detune is modulated by a connected a-rate ConstantSourceNode.\nThe reference node's k-rate read asks the timeline for a single value, which lands\nin the serial remainder loop of AudioParamTimeline::processLinearRamp. The connected\ninput renders a full quantum through the vectorized VectorMath (vDSP/NEON) path.\n\nThe serial loop computed the ramp as one expression (value1 + valueDelta * x), which\nApple clang contracts into a fused multiply-add (a single rounding), while the\nvectorized path performs the multiply and add as separate operations (two roundings,\nno FMA). For detune (valueDelta = 2400) the two paths disagreed by ~1 ULP; that\ndifference flows through pow(2, detune/1200) into the pitch rate and accumulates in\nthe buffer read index, failing the tolerance-0 comparison. playbackRate passed only\nbecause its valueDelta == 1 makes both roundings coincide.\n\nSplit the serial multiply-add into separate statements so FMA contraction cannot\noccur, making the serial path bit-match the vectorized path. Keep the original\noffset * k grouping (evaluated in double, staying bounded) rather than folding into\nk * valueDelta, which would overflow to FLT_MAX for very-close event times and\nregress audioparam-close.html.\n\nNo new tests, rebaselined existing WPT test.\n\n* LayoutTests/imported/w3c/web-platform-tests/webaudio/the-audio-api/the-audioparam-interface/k-rate-audiobuffersource-connections-expected.txt:\n* LayoutTests/platform/glib/imported/w3c/web-platform-tests/webaudio/the-audio-api/the-audioparam-interface/k-rate-audiobuffersource-connections-expected.txt: Removed.\n* LayoutTests/platform/ios/TestExpectations:\n* LayoutTests/platform/mac/TestExpectations:\n* LayoutTests/platform/wpe/TestExpectations:\n* Source/WebCore/Modules/webaudio/AudioParamTimeline.cpp:\n(WebCore::AudioParamTimeline::processLinearRamp):\n\nCanonical link: https://commits.webkit.org/318516@main",
      "email": "cdumez@apple.com",
      "hash": "588fdd26e06c5082ec0f8fe9a3c513c8aef09100",
      "subject": "k-rate AudioParam input diverges from equivalent automation for AudioBufferSourceNode.detune"
    },
    "318517@main": {
      "author": "Devin Rousso",
      "avatar": "https://www.gravatar.com/avatar/c9e757d973342c773f107a94b70cb9cd?d=identicon\u0026s=64",
      "cl": "318517@main",
      "clUrl": "https://commits.webkit.org/318517@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=176560\n\nReviewed by Mike Wyrzykowski.\n\n* Source/WebInspectorUI/UserInterface/Views/RecordingActionTreeElement.js:\n(WI.RecordingActionTreeElement._classNameForAction):\n* Source/WebInspectorUI/UserInterface/Views/RecordingActionTreeElement.css:\n(.item.recording-action.bind \u003e .icon): Added.\n(.item.recording-action.copy \u003e .icon): Added.\n(.item.recording-action.object \u003e .icon): Added.\n(.item.recording-action.draw \u003e .icon): Added.\n(.item.recording-action.execute \u003e .icon): Added.\n(.item.recording-action.query \u003e .icon): Added.\n(.item.recording-action.read \u003e .icon): Added.\n(.item.recording-action.show \u003e .icon): Added.\n(.item.recording-action.source \u003e .icon): Added.\n(.item.recording-action.uniform \u003e .icon): Added.\n(.item.recording-action.begin \u003e .icon): Added.\n(.item.recording-action.end \u003e .icon): Added.\n(.item.recording-action.viewport \u003e .icon): Added.\n(.item.recording-action.write \u003e .icon): Added.\n\n* Source/WebInspectorUI/UserInterface/Images/Begin.svg: Added.\n* Source/WebInspectorUI/UserInterface/Images/Bind.svg: Added.\n* Source/WebInspectorUI/UserInterface/Images/Copy.svg: Added.\n* Source/WebInspectorUI/UserInterface/Images/End.svg: Added.\n* Source/WebInspectorUI/UserInterface/Images/Execute.svg: Added.\n* Source/WebInspectorUI/UserInterface/Images/Object.svg: Added.\n* Source/WebInspectorUI/UserInterface/Images/Read.svg: Added.\n* Source/WebInspectorUI/UserInterface/Images/Viewport.svg: Added.\n* Source/WebInspectorUI/UserInterface/Images/Write.svg: Added.\n\nCanonical link: https://commits.webkit.org/318517@main",
      "email": "hi@devinrousso.com",
      "hash": "83b815141e0695e015410b3e774e2f4a0c7e3f3a",
      "subject": "Web Inspector: Canvas: add icons for recorded WebGL and WebGPU actions"
    },
    "318518@main": {
      "author": "Gerald Squelart",
      "avatar": "https://www.gravatar.com/avatar/894904f08d85651bf2a76868a4d2f1b3?d=identicon\u0026s=64",
      "cl": "318518@main",
      "clUrl": "https://commits.webkit.org/318518@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320773\nrdar://183778041\n\nReviewed by Mike Wyrzykowski.\n\nCanvasRenderingContext2DBase could only cache RGBA8 ImageData objects.\nUsing an ArrayPixelBuffer allows CanvasRenderingContext2DBase to cache\nfloat16 ImageData as well, and any future pixel format.\n\nCovered by existing tests.\n\n* Source/WebCore/html/canvas/CanvasRenderingContext2DBase.cpp:\n(WebCore::CanvasRenderingContext2DBase::CachedContentsImageData::CachedContentsImageData):\n(WebCore::CanvasRenderingContext2DBase::cacheImageDataIfPossible):\n(WebCore::CanvasRenderingContext2DBase::makeImageDataIfContentsCached const):\n(WebCore::CanvasRenderingContext2DBase::getImageData const):\n* Source/WebCore/html/canvas/CanvasRenderingContext2DBase.h:\n* Source/WebCore/platform/graphics/ArrayPixelBuffer.cpp:\n(WebCore::ArrayPixelBuffer::tryCreate):\n* Source/WebCore/platform/graphics/ArrayPixelBuffer.h:\n\nCanonical link: https://commits.webkit.org/318518@main",
      "email": "g_squelart@apple.com",
      "hash": "6077d760365fd2382029143301a81e4b8b55d5f8",
      "subject": "CanvasRenderingContext2DBase should cache a generic ArrayPixelBuffer"
    },
    "318519@main": {
      "author": "David Kilzer",
      "avatar": "https://www.gravatar.com/avatar/e228ffc7a792e70bf2d160563c18dcc6?d=identicon\u0026s=64",
      "cl": "318519@main",
      "clUrl": "https://commits.webkit.org/318519@main",
      "description": "\u003chttps://bugs.webkit.org/show_bug.cgi?id=320950\u003e\n\u003crdar://183980017\u003e\n\nReviewed by Zak Ridouh.\n\n`Git.create_patch()` accepts a `changed_files` argument but never uses\nit, so the paths passed to `check-webkit-style --diff-files` are simply\ndropped and the entire branch diff is checked instead.  A developer\nnarrowing a check to specific files then gets results for files they\ndid not name, with no warning.\n\nAppend `changed_files` as a trailing `--` pathspec, so that `git diff`\nand `git format-patch`, the two command shapes `create_patch()` builds,\nare limited to the requested files.\n\nTests: webkitpy.common.checkout.scm.scm_unittest.GitTest.test_create_patch_with_changed_files\n\n* Tools/Scripts/webkitpy/common/checkout/scm/git.py:\n(Git.create_patch):\n* Tools/Scripts/webkitpy/common/checkout/scm/scm_unittest.py:\n(GitTest.test_create_patch_with_changed_files): Add.\n\nCanonical link: https://commits.webkit.org/318519@main",
      "email": "ddkilzer@apple.com",
      "hash": "4b851b60b95111ab0376f92e4329bc6ae64c4e23",
      "subject": "check-webkit-style --diff-files ignores the specified file paths and checks the full branch diff"
    },
    "318520@main": {
      "author": "Sean Patterson",
      "avatar": "https://www.gravatar.com/avatar/b19318d92b64ac7809b78670c03b0f1e?d=identicon\u0026s=64",
      "cl": "318520@main",
      "clUrl": "https://commits.webkit.org/318520@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=278290\nrdar://134645414\n\nReviewed by Chris Dumez.\n\nDOMSelection::collapseToEnd() and collapseToStart() threw a bare\nInvalidStateError with the generic \"The object is in an invalid state.\"\nmessage, giving developers no indication of which call failed or why.\nProvide a descriptive message naming the method and its precondition,\nmatching the existing convention already used by DOMSelection::extend().\n\n* Source/WebCore/page/DOMSelection.cpp:\n(WebCore::DOMSelection::collapseToEnd):\n(WebCore::DOMSelection::collapseToStart):\n* LayoutTests/fast/dom/Selection/collapseToX-empty-selection-expected.txt:\n\nCanonical link: https://commits.webkit.org/318520@main",
      "email": "sean_patterson@apple.com",
      "hash": "a60e1ec074fd0dcb2abf5203d02328f68b2f789b",
      "subject": "\"InvalidStateError: The object is in an invalid state\" is not very helpful"
    },
    "318521@main": {
      "author": "Lauro Moura",
      "avatar": "https://www.gravatar.com/avatar/6157f52d61e04c2c63fe7ff668ba69b3?d=identicon\u0026s=64",
      "cl": "318521@main",
      "clUrl": "https://commits.webkit.org/318521@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320961\n\nUnreviewed test gardening.\n\n* WebDriverTests/TestExpectations.json:\n\nCanonical link: https://commits.webkit.org/318521@main",
      "email": "lmoura@igalia.com",
      "hash": "78f2dd93752e91c2b2037bbd6f42412630d2ec7c",
      "subject": "[WebDriver] Gardening persistent failures July 2026 edition"
    },
    "318522@main": {
      "author": "Chris Dumez",
      "avatar": "https://www.gravatar.com/avatar/a9f21fe3a8baf79b45f3c91572187bdc?d=identicon\u0026s=64",
      "cl": "318522@main",
      "clUrl": "https://commits.webkit.org/318522@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320872\n\nReviewed by Darin Adler.\n\nCalling close() on an AudioContext that is already in the \"closed\" state\nresolved the returned promise instead of rejecting it. Per the Web Audio\nspec, close() must reject with an InvalidStateError in this case, matching\nthe behavior of suspend() and resume() (which were already correct). Both\nBlink and Gecko reject as expected.\n\nMerge the already-closed check into the existing stopped check so that\nclose() rejects with an InvalidStateError, consistent with\nsuspendRendering() and resumeRendering().\n\n* LayoutTests/imported/w3c/web-platform-tests/webaudio/the-audio-api/the-audiocontext-interface/audiocontext-state-change-after-close.http.window-expected.txt:\n* Source/WebCore/Modules/webaudio/AudioContext.cpp:\n(WebCore::AudioContext::close):\n\nCanonical link: https://commits.webkit.org/318522@main",
      "email": "cdumez@apple.com",
      "hash": "395cd1b2edcfaa8546d61e19fe4b8d1bae7999e2",
      "subject": "AudioContext.close() should reject when called on an already-closed context"
    },
    "318523@main": {
      "author": "David Kilzer",
      "avatar": "https://www.gravatar.com/avatar/e228ffc7a792e70bf2d160563c18dcc6?d=identicon\u0026s=64",
      "cl": "318523@main",
      "clUrl": "https://commits.webkit.org/318523@main",
      "description": "\u003chttps://bugs.webkit.org/show_bug.cgi?id=320964\u003e\n\u003crdar://183989096\u003e\n\nUnreviewed build fix.\n\nCommit 318459@main (Bug 320875, rdar://183894755) synced WPT lint tools\nfrom upstream and removed the `UNNECESSARY-EXCLUSION-IN-WEB-FEATURES-FILE`\nlint rule.  Since `wpt_lint_categories()` derives its category set\ndynamically from the installed rules, the\n`wpt/lint/unnecessary_exclusion_in_web_features_file` category no\nlonger exists.  Keeping the dead entry in `_BASE_FILTER_RULES` causes\n`test_webkit_base_filter_rules` to raise a `ValueError` in\n`validate_filter_rules()`, which rejects any filter rule whose prefix\ndoes not match a registered category name.\n\nCovered by existing tests.\n\n* Tools/Scripts/webkitpy/style/checker.py:\n(_BASE_FILTER_RULES):\n\nCanonical link: https://commits.webkit.org/318523@main",
      "email": "ddkilzer@apple.com",
      "hash": "2a5ab341aa059d3059a679e3c642d79c26f0ab30",
      "subject": "[check-webkit-style] Remove dead wpt/lint/unnecessary_exclusion_in_web_features_file filter rule"
    },
    "318524@main": {
      "author": "Yusuke Suzuki",
      "avatar": "https://www.gravatar.com/avatar/3455d9081295e3e740c1ffa901217d9b?d=identicon\u0026s=64",
      "cl": "318524@main",
      "clUrl": "https://commits.webkit.org/318524@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320942\nrdar://183974728\n\nReviewed by Yijia Huang.\n\nThis patch splits eager and lazy JIT thunks so eager ones are commonly\nused so it is created eagerly but lazy ones are created on-demand.\n\n* Source/JavaScriptCore/jit/JITThunks.cpp:\n(JSC::generatorForLazyCommonThunk):\n(JSC::JITThunks::initialize):\n(JSC::JITThunks::ctiNativeCall):\n(JSC::JITThunks::ctiNativeConstruct):\n(JSC::JITThunks::ctiNativeTailCall):\n(JSC::JITThunks::ctiNativeTailCallWithoutSavedTags):\n(JSC::JITThunks::ctiInternalFunctionCall):\n(JSC::JITThunks::ctiInternalFunctionConstruct):\n(JSC::JITThunks::ctiStub):\n(JSC::JITThunks::lazyCommonThunk):\n* Source/JavaScriptCore/jit/JITThunks.h:\n* Source/JavaScriptCore/runtime/VM.cpp:\n(JSC::VM::getCTIStub):\n\nCanonical link: https://commits.webkit.org/318524@main",
      "email": "ysuzuki@apple.com",
      "hash": "c1b19d0128090f6cb3e12d4f967028706b37b170",
      "subject": "[JSC] Split eager and lazy JIT thunks"
    },
    "318525@main": {
      "author": "Sosuke Suzuki",
      "avatar": "https://www.gravatar.com/avatar/e63b87350fe19bdd9a30c7234eda45af?d=identicon\u0026s=64",
      "cl": "318525@main",
      "clUrl": "https://commits.webkit.org/318525@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320852\n\nReviewed by Justin Michaud.\n\n318389@main removed the ARMv7 JIT, and 32-bit ARM is now CLoop-only:\nMacroAssembler.h and GPRInfo.h have no ARM32 backend, so everything under\nENABLE(ASSEMBLER)/ENABLE(JIT)/ENABLE(B3_JIT)/ENABLE(WEBASSEMBLY) is unreachable\non ARM32. This removes the leftover CPU(ARM) / CPU(ARM_THUMB2) branches in that\ncode, along with two dead-code artifacts from 318393@main.\n\n* ARMv7Assembler.h had zero includers and no longer compiled; delete it.\n* Remove CPU(ARM) branches from assembler, jit, b3/air, wasm, cssjit, testb3, and\n  the offlineasm alignment macro (only compiled when !ENABLE(C_LOOP)).\n* Remove WTF_CPU_ARM_VFP_V3_D32/V2 and the Thumb2 ENABLE(JIT) variant of\n  ASSERT_VALID_CODE_POINTER; drop CPU(ARM_THUMB2) from ENABLE_JUMP_ISLANDS.\n* Remove the Linux/ARM DFG inlining option overrides (DFG cannot run on ARM32).\n* Stop enabling USE_CAPSTONE for ARM/MIPS ports; it only fed the JIT disassembler.\n* AirOpcode.opcodes: fix \"arm64 arm64: Depend32\" left by the arm→arm64 rename.\n* AirCCallSpecial::isValid: drop unreachable return after break in the BigImm case.\n* DFGFixupPhase: drop duplicated break in InstanceOfMegamorphic.\n\nTests: Source/JavaScriptCore/assembler/testmasm.cpp\n       Source/JavaScriptCore/b3/testb3_1.cpp\n       Source/JavaScriptCore/b3/testb3_3.cpp\n       Source/JavaScriptCore/b3/testb3_7.cpp\n       Source/JavaScriptCore/b3/testb3_8.cpp\n\n* Source/JavaScriptCore/assembler/ARMv7Assembler.h: Removed.\n* Source/JavaScriptCore/assembler/AbstractMacroAssembler.h:\n(JSC::AbstractMacroAssembler::emitNops):\n* Source/JavaScriptCore/assembler/MaxFrameExtentForSlowPathCall.h:\n* Source/JavaScriptCore/assembler/PerfLog.cpp:\n* Source/JavaScriptCore/assembler/testmasm.cpp:\n(JSC::testLoadAcq8SignedExtendTo32_Address_RegisterID):\n(JSC::testLoadAcq16SignedExtendTo32_Address_RegisterID):\n* Source/JavaScriptCore/b3/air/AirCCallSpecial.cpp:\n(JSC::B3::Air::CCallSpecial::isValid):\n* Source/JavaScriptCore/b3/air/AirGenerate.cpp:\n(JSC::B3::Air::generateWithAlreadyAllocatedRegisters):\n* Source/JavaScriptCore/b3/air/AirLowerStackArgs.cpp:\n(JSC::B3::Air::lowerStackArgs):\n* Source/JavaScriptCore/b3/air/AirOpcode.opcodes:\n* Source/JavaScriptCore/b3/testb3_1.cpp:\n(run):\n* Source/JavaScriptCore/b3/testb3_3.cpp:\n(addShrTests):\n* Source/JavaScriptCore/b3/testb3_7.cpp:\n(testPinRegisters):\n* Source/JavaScriptCore/b3/testb3_8.cpp:\n(testStoreAfterClobberExitsSideways):\n(testStoreAfterClobberExitsSidewaysSuccessor):\n* Source/JavaScriptCore/dfg/DFGFixupPhase.cpp:\n(JSC::DFG::FixupPhase::fixupNode):\n* Source/JavaScriptCore/jit/AssemblyHelpers.cpp:\n(JSC::AssemblyHelpers::emitAllocateWithNonNullAllocator):\n(JSC::AssemblyHelpers::checkWasmStackOverflow):\n* Source/JavaScriptCore/jit/AssemblyHelpersSpoolers.h:\n* Source/JavaScriptCore/jit/ExecutableAllocator.cpp:\n* Source/JavaScriptCore/jit/RegisterSet.cpp:\n(JSC::RegisterSet::ipintCalleeSaveRegisters):\n* Source/JavaScriptCore/llint/LowLevelInterpreter.cpp:\n* Source/JavaScriptCore/offlineasm/backends.rb:\n* Source/JavaScriptCore/runtime/Options.cpp:\n(JSC::overrideDefaults):\n* Source/JavaScriptCore/wasm/WasmBBQJIT.cpp:\n(JSC::Wasm::BBQJITImpl::BBQJIT::addCallIndirect):\n* Source/JavaScriptCore/wasm/WasmBinding.cpp:\n(JSC::Wasm::wasmToWasm):\n* Source/JavaScriptCore/wasm/WasmCallee.cpp:\n(JSC::Wasm::JSToWasmCallee::calleeSaveRegistersImpl):\n* Source/JavaScriptCore/wasm/WasmIRGeneratorHelpers.h:\n(JSC::Wasm::prepareForTailCall):\n* Source/JavaScriptCore/wasm/WasmOMGIRGenerator.cpp:\n(JSC::Wasm::prepareForTailCallImpl):\n* Source/JavaScriptCore/wasm/js/JSToWasm.cpp:\n(JSC::Wasm::RTT::jsToWasmICEntrypoint const):\n* Source/JavaScriptCore/wasm/js/JSWebAssemblyInstance.h:\n* Source/WTF/wtf/CodePtr.h:\n* Source/WTF/wtf/PlatformCPU.h:\n* Source/WTF/wtf/PlatformEnable.h:\n* Source/WebCore/cssjit/FunctionCall.h:\n(WebCore::FunctionCall::callAndBranchOnBooleanReturnValue):\n* Source/cmake/OptionsGTK.cmake:\n* Source/cmake/OptionsJSCOnly.cmake:\n* Source/cmake/OptionsWPE.cmake:\n\nCanonical link: https://commits.webkit.org/318525@main",
      "email": "sosuke@bun.sh",
      "hash": "6010a9ea6ce6d9fc818c7c15b8e169fac7495f7e",
      "subject": "[JSC] Follow-up cleanups after ARMv7 JIT removal"
    },
    "318526@main": {
      "author": "Nikolas Zimmermann",
      "avatar": "https://www.gravatar.com/avatar/83cbd636495835720e369cd589e3ca5e?d=identicon\u0026s=64",
      "cl": "318526@main",
      "clUrl": "https://commits.webkit.org/318526@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319685\n\nReviewed by Carlos Garcia Campos.\n\nTurn UseDamagingInformationForCompositing on for GTK and WPE, so the Skia compositor\nre-composites only what changed each frame instead of the whole viewport.\n\nGTK also stops unifying the damaged regions into their bounding box: the compositor\nnow draws the rects, and a bounding box over rects that are far apart covers most of\nthe surface, which is exactly what this avoids.\n\n* Source/WTF/Scripts/Preferences/UnifiedWebPreferences.yaml:\n\nCanonical link: https://commits.webkit.org/318526@main",
      "email": "nzimmermann@igalia.com",
      "hash": "b49502648e6a26329a282b4b98c642b33cb6afe2",
      "subject": "[GTK][WPE] Use the damage for compositing by default"
    },
    "318527@main": {
      "author": "Sosuke Suzuki",
      "avatar": "https://www.gravatar.com/avatar/e63b87350fe19bdd9a30c7234eda45af?d=identicon\u0026s=64",
      "cl": "318527@main",
      "clUrl": "https://commits.webkit.org/318527@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320959\n\nReviewed by Yusuke Suzuki.\n\n296674@main split JSFunction structures for functions without a \"prototype\" property\n(class methods, object-literal shorthand methods, accessors) into strictMethodStructure /\nsloppyMethodStructure, but JSBoundFunction::canSkipNameAndLengthMaterialization() was not\nupdated. So `this.handleClick.bind(this)` on a class method no longer folds FunctionBind\ninto NewBoundFunction and always calls operationFunctionBind. This patch adds the two\nmethod structures to the whitelist; they are created from the same createStructure() calls\nas their function counterparts, so the lazy .name/.length materialization invariant holds.\n\n                            baseline                  patched\n\nfunction-bind-method    11.5201+-0.1138     ^      2.5012+-0.0493        ^ definitely 4.6058x faster\n\nTests: JSTests/microbenchmarks/function-bind-method.js\n       JSTests/stress/bound-function-strength-reduction-method.js\n\n* JSTests/microbenchmarks/function-bind-method.js: Added.\n(Component):\n(Component.prototype.handleClick):\n(Component.prototype.onScroll):\n(Component.prototype.render):\n(shorthand.handle):\n* JSTests/stress/bound-function-strength-reduction-method.js: Added.\n(shouldBe):\n(shouldThrow):\n(prototype.handleClick):\n(sloppyHolder.handle):\n(bindClassMethod):\n(bindShorthandMethod):\n(Modified.prototype.method):\n(Modified):\n(bindModifiedMethod):\n* Source/JavaScriptCore/runtime/JSBoundFunction.cpp:\n(JSC::JSBoundFunction::canSkipNameAndLengthMaterialization):\n\nCanonical link: https://commits.webkit.org/318527@main",
      "email": "sosuke@bun.sh",
      "hash": "2af38faaec709b9af4ffb54373d691d5a894e22a",
      "subject": "[JSC] `Function#bind` strength reduction in DFG should accept method structures"
    },
    "318528@main": {
      "author": "Frédéric Wang Nélar",
      "avatar": "https://www.gravatar.com/avatar/2c634be4515bda5959ed1d7138b17d48?d=identicon\u0026s=64",
      "cl": "318528@main",
      "clUrl": "https://commits.webkit.org/318528@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320883\n\nReviewed by Patrick Griffis.\n\nUpstream commit: https://github.com/web-platform-tests/wpt/commit/8ff51b7de9b569733c5be7d0636c92c258ffdd27\n\n* LayoutTests/TestExpectations:\n* LayoutTests/imported/w3c/resources/resource-files.json:\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/README.html:\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/WEB_FEATURES.yml: Added.\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/base-uri/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/blob/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/child-src/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/default-src/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/embedded-enforcement/support/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/embedded-enforcement/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/font-src/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/form-action/support/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/form-action/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/frame-ancestors/support/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/frame-ancestors/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/frame-src/support/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/frame-src/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/gen/top.http-rp/script-src-self/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/gen/top.http-rp/script-src-wildcard/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/gen/top.http-rp/worker-src-none/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/gen/top.http-rp/worker-src-self/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/gen/top.http-rp/worker-src-wildcard/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/gen/top.meta/script-src-self/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/gen/top.meta/script-src-wildcard/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/gen/top.meta/worker-src-none/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/gen/top.meta/worker-src-self/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/gen/top.meta/worker-src-wildcard/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/generic/image-document-applies-csp-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/generic/image-document-applies-csp.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/generic/image-document-ignores-csp-for-loading-main-image-ref.html: Renamed from LayoutTests/imported/w3c/web-platform-tests/content-security-policy/generic/image-document-ignores-csp-expected.html.\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/generic/image-document-ignores-csp-for-loading-main-image.tentative-expected.html: Renamed from LayoutTests/imported/w3c/web-platform-tests/content-security-policy/generic/image-document-ignores-csp-ref.html.\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/generic/image-document-ignores-csp-for-loading-main-image.tentative.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/generic/image-document-ignores-csp.html: Removed.\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/generic/source-list-wildcard-host-and-port.https.sub-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/generic/source-list-wildcard-host-and-port.https.sub.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/generic/support/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/generic/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/img-src/css-clip-path-blocked.tentative-expected.txt: Removed.\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/img-src/css-clip-path-blocked.tentative.html: Removed.\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/img-src/img-src-none-blocks-css-background-image-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/img-src/img-src-none-blocks-css-background-image.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/img-src/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/inside-worker/support/connect-src-self-report-only.sub.js:\n(promise_test.t.reject.t.step_timeout):\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/inside-worker/support/connect-src-self.sub.js:\n(promise_test.t.reject.t.step_timeout):\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/inside-worker/support/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/inside-worker/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/media-src/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/meta/support/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/meta/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/navigation/support/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/navigation/to-javascript-parent-initiated-child-csp.html:\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/navigation/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/nonce-hiding/nonces-css-selector-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/nonce-hiding/nonces-css-selector.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/nonce-hiding/nonces-css-selector.html.headers: Added.\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/nonce-hiding/nonces-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/nonce-hiding/nonces.html:\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/nonce-hiding/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/object-src/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/parsing/support/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/parsing/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/plugin-types/resources/w3c-import.log: Copied from LayoutTests/imported/w3c/web-platform-tests/content-security-policy/resources/w3c-import.log.\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/plugin-types/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/report-hash/default-src.https.window-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/report-hash/multiple-policies.https.sub-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/report-hash/reportonly-default-src.https.window-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/report-hash/reportonly-script-src-elem.https.window-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/report-hash/reportonly-script-src-none.https.window-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/report-hash/reportonly-script-src.https.window-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/report-hash/resources/report-hash-test-runner.sub.js:\n(async check_reports):\n(async run_tests):\n(wait): Deleted.\n(async pollReportsWithTimeout): Deleted.\n(async pollReportsWithRetry): Deleted.\n(async run_tests.async report_hash_test): Deleted.\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/report-hash/resources/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/report-hash/script-src-elem.https.window-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/report-hash/script-src-sha512.https.window-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/report-hash/script-src.https.window-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/report-hash/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/reporting-api/support/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/reporting-api/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/reporting/report-multiple-violations-02-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/reporting/report-multiple-violations-02.html:\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/reporting/report-strips-username-password-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/reporting/report-strips-username-password.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/reporting/support/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/reporting/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/resource-hints/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/resources/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/sandbox/autoplay-disabled-by-csp.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/sandbox/sandbox-empty.sub.html:\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/sandbox/sandbox-last-directive-csp-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/sandbox/sandbox-last-directive-csp.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/sandbox/support/autoplay.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/sandbox/support/autoplay.html.headers: Added.\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/sandbox/support/sandboxed-last-directive-csp.headers: Added.\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/sandbox/support/sandboxed-last-directive-csp.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/sandbox/support/sandboxed-post-message-to-parent.headers: Added.\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/sandbox/support/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/sandbox/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/script-src-attr-elem/support/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/script-src-attr-elem/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/script-src/audioworklet-eval-blocked.https-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/script-src/audioworklet-eval-blocked.https.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/script-src/audioworklet-trusted-types-eval-blocked.https-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/script-src/audioworklet-trusted-types-eval-blocked.https.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/script-src/hash-always-converted-to-utf-8/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/script-src/non-nonceable-elements-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/script-src/non-nonceable-elements.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/script-src/script-src-strict_dynamic_modulepreload_parser_inserted_module-expected.txt: Removed.\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/script-src/script-src-strict_dynamic_modulepreload_parser_inserted_module.html: Removed.\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/script-src/script-src-strict_dynamic_modulepreload_parser_inserted_module.html.headers: Removed.\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/script-src/script-src-strict_dynamic_parser_inserted_module_empty_hash-expected.txt: Removed.\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/script-src/script-src-strict_dynamic_parser_inserted_module_empty_hash.html: Removed.\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/script-src/script-src-strict_dynamic_parser_inserted_module_empty_hash.html.headers: Removed.\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/script-src/script-src-trusted_types_eval_DedicatedWorker.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/script-src/support/script-src-trusted_types_eval_with_report_only_require_trusted_types_eval_DedicatedWorker.js: Added.\n(async_test):\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/script-src/support/script-src-trusted_types_eval_with_report_only_require_trusted_types_eval_DedicatedWorker.js.headers: Added.\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/script-src/support/script-src-trusted_types_eval_with_require_trusted_types_eval_DedicatedWorker.js: Added.\n(async_test):\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/script-src/support/script-src-trusted_types_eval_with_require_trusted_types_eval_DedicatedWorker.js.headers: Added.\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/script-src/support/script-src-trusted_types_eval_without_require_trusted_types_eval_DedicatedWorker.js: Added.\n(async_test):\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/script-src/support/script-src-trusted_types_eval_without_require_trusted_types_eval_DedicatedWorker.js.headers: Added.\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/script-src/support/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/script-src/support/worklet-eval.js: Added.\n(EvalProcessor):\n(EvalProcessor.prototype.process):\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/script-src/tentative/script-url-allowed-by-hash.https.html:\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/script-src/tentative/script-url-blocked-report-contains-hash-dedicated-worker.https.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/script-src/tentative/script-url-blocked-report-contains-hash-service-worker.https.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/script-src/tentative/script-url-blocked-report-contains-hash-shared-worker.https.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/script-src/tentative/script-url-blocked-report-contains-hash.https.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/script-src/tentative/support/child_dir/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/script-src/tentative/support/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/script-src/tentative/support/worker-report-hash.js: Added.\n(e.else):\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/script-src/tentative/support/worker-report-hash.js.headers: Added.\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/script-src/tentative/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/script-src/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/securitypolicyviolation/blockeduri-ws-wss-scheme-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/securitypolicyviolation/blockeduri-ws-wss-scheme.html:\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/securitypolicyviolation/linenumber.tentative-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/securitypolicyviolation/linenumber.tentative.html:\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/securitypolicyviolation/support/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/securitypolicyviolation/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/style-src-attr-elem/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/style-src/resources/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/style-src/support/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/style-src/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/support/media/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/support/pass3.png: Removed.\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/support/pass3.png.headers: Removed.\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/support/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/svg/object-in-svg-foreignobject.sub.html:\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/svg/resources/svg-inline-without-scripting-without-csp.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/svg/resources/w3c-import.log: Copied from LayoutTests/imported/w3c/web-platform-tests/content-security-policy/resources/w3c-import.log.\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/svg/svg-inline-without-scripting-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/svg/svg-inline-without-scripting.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/svg/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/unsafe-eval/support/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/unsafe-eval/tentative/eval-allowed-by-hash-long-script.sub-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/unsafe-eval/tentative/eval-allowed-by-hash-long-script.sub.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/unsafe-eval/tentative/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/unsafe-eval/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/unsafe-hashes/support/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/unsafe-hashes/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/wasm-unsafe-eval/default-src-blocks-wasm-streaming.any.serviceworker-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/wasm-unsafe-eval/default-src-blocks-wasm-streaming.any.serviceworker.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/wasm-unsafe-eval/default-src-blocks-wasm-streaming.any.sharedworker-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/wasm-unsafe-eval/default-src-blocks-wasm-streaming.any.sharedworker.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/wasm-unsafe-eval/script-src-blocks-wasm-streaming.any.serviceworker-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/wasm-unsafe-eval/script-src-blocks-wasm-streaming.any.serviceworker.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/wasm-unsafe-eval/script-src-blocks-wasm-streaming.any.sharedworker-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/wasm-unsafe-eval/script-src-blocks-wasm-streaming.any.sharedworker.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/wasm-unsafe-eval/support/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/wasm-unsafe-eval/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/webrtc/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/worker-src/service-worker-static-import-blocked.https.sub-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/worker-src/service-worker-static-import-blocked.https.sub.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/worker-src/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/xslt/document-function-blocked-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/xslt/document-function-blocked.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/xslt/support/document.xsl: Added.\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/xslt/support/empty.xml: Added.\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/xslt/support/simple.xsl: Added.\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/xslt/support/w3c-import.log: Copied from LayoutTests/imported/w3c/web-platform-tests/content-security-policy/meta/w3c-import.log.\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/xslt/support/xml-with-stylesheet-strict-dynamic.xml: Added.\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/xslt/support/xml-with-stylesheet-strict-dynamic.xml.headers: Added.\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/xslt/support/xml-with-stylesheet.xml: Added.\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/xslt/support/xml-with-stylesheet.xml.headers: Added.\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/xslt/w3c-import.log: Copied from LayoutTests/imported/w3c/web-platform-tests/content-security-policy/w3c-import.log.\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/xslt/xslt-strict-dynamic-blocked-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/xslt/xslt-strict-dynamic-blocked.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/xslt/xsltprocessor-include-blocked-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/content-security-policy/xslt/xsltprocessor-include-blocked.html: Added.\n* LayoutTests/platform/glib/TestExpectations:\n\nCanonical link: https://commits.webkit.org/318528@main",
      "email": "fwang@igalia.com",
      "hash": "ab134eb6921f62f017e20af6454525f8e37813c5",
      "subject": "Sync WPT tests for content-security-policy/"
    },
    "318529@main": {
      "author": "Richard Robinson",
      "avatar": "https://www.gravatar.com/avatar/a0d2f862985ed0fd47887be66f5a3e4f?d=identicon\u0026s=64",
      "cl": "318529@main",
      "clUrl": "https://commits.webkit.org/318529@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320965\nrdar://183994357\n\nReviewed by Abrar Rahman Protyasha and Aditya Keerthi.\n\nApply a 24pt padding around the view so that the hover effect applies within that band,\nwhile setting the content shape explicitly to avoid the padding interfering with hit testing.\n\nThe 24pt value is fairly arbitrarily chosen as to be a bit larger than the 16pt one used\nfor the default HUD since the view itself is a bit smaller.\n\n* Source/WebKit/UIProcess/PDF/WKAlternatePDFHUDView.swift:\n(Controls.body):\n\nCanonical link: https://commits.webkit.org/318529@main",
      "email": "richard_robinson2@apple.com",
      "hash": "007542e5c99bdb8e73b8032f3608e15b8144100d",
      "subject": "[PDF] Alternate PDF HUD view should become visible when cursor is near it"
    },
    "318530@main": {
      "author": "Chris Dumez",
      "avatar": "https://www.gravatar.com/avatar/a9f21fe3a8baf79b45f3c91572187bdc?d=identicon\u0026s=64",
      "cl": "318530@main",
      "clUrl": "https://commits.webkit.org/318530@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320728\n\nReviewed by Darin Adler.\n\nBiquad::processSliceFast and DirectConvolver::process called vDSP_deq22D and\nvDSP_conv directly, passing raw pointers (.data()) and element counts. These raw\npointer accesses are not covered by hardened libc++, so an incorrect length or\nbuffer size would read/write out of bounds in release builds; the only guards\nwere the surrounding invariants and debug-only assertions.\n\nMove both calls into new VectorMath helpers that take std::span and RELEASE_ASSERT\nthe sizes the underlying vDSP routine actually accesses, matching the existing\nconvention in this file:\n\n  - filterBiquad() wraps vDSP_deq22D and asserts that source and destination each\n    hold at least framesToProcess + 2 elements (the two filter history samples deq22\n    reads/writes). The coefficients are taken as std::span\u003cconst double, 5\u003e so that\n    the 5-element requirement is enforced at compile time rather than by a\n    RELEASE_ASSERT; the fixed extent is threaded through Biquad::processSliceFast,\n    whose caller already holds a std::array\u003cdouble, 5\u003e. filterBiquad() is\n    Accelerate-only, since the non-Accelerate Biquad path uses a scalar direct-form\n    recurrence and never builds the deq22 buffer layout.\n\n  - convolve() wraps vDSP_conv and asserts a non-empty filter and that the signal\n    holds at least output.size() + filter.size() - 1 elements. The non-Accelerate\n    CONVOLVE_ONE_SAMPLE reference implementation is moved out of DirectConvolver into\n    convolve()'s #else branch, so all ports share one bounds-checked implementation\n    and DirectConvolver::process becomes a thin caller.\n\nAlso drop the now-unused \u003cAccelerate/Accelerate.h\u003e includes (and Biquad's __VFORCE_H\nworkaround) from both files.\n\n* Source/WebCore/platform/audio/Biquad.cpp:\n(WebCore::Biquad::processFast):\n(WebCore::Biquad::processSliceFast):\n* Source/WebCore/platform/audio/Biquad.h:\n* Source/WebCore/platform/audio/DirectConvolver.cpp:\n(WebCore::DirectConvolver::process):\n* Source/WebCore/platform/audio/VectorMath.cpp:\n(WebCore::VectorMath::filterBiquad):\n(WebCore::VectorMath::convolve):\n* Source/WebCore/platform/audio/VectorMath.h:\n\nCanonical link: https://commits.webkit.org/318530@main",
      "email": "cdumez@apple.com",
      "hash": "4f825db16c72d8d4e064164b868741ba443920d5",
      "subject": "Harden Biquad and DirectConvolver by routing Accelerate DSP calls through span-based VectorMath helpers"
    },
    "318531@main": {
      "author": "Ahmad Saleem",
      "avatar": "https://www.gravatar.com/avatar/38445f84fe28aa19bfeb1f59f6559532?d=identicon\u0026s=64",
      "cl": "318531@main",
      "clUrl": "https://commits.webkit.org/318531@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320757\nrdar://183757084\n\nReviewed by Chris Dumez.\n\nDocument::RegionFixedPair is std::pair\u003cRegion, bool\u003e, and Region owns its\ndata through a std::unique_ptr\u003cShape\u003e, so copying one allocates a Shape and\ncopies its two Vectors. Both absoluteEventRegionForNode() and\nabsoluteRegionForWheelEventTargets() constructed the returned pair from a\nlocal lvalue, which binds to pair's const Region\u0026 constructor, so the\nimplicit move on return did not apply and the Region was copied.\n\nMove the local Region into the pair instead. In\nabsoluteRegionForWheelEventTargets() the united region generally does carry\na Shape by the time it is returned, so this removes a heap allocation from\nevery caller (ScrollingCoordinator and DebugPageOverlays). In\nabsoluteEventRegionForNode() the region is always rect-only, so the change\nis only for consistency.\n\nNo change in behavior.\n\n* Source/WebCore/dom/Document.cpp:\n(WebCore::Document::absoluteEventRegionForNode):\n(WebCore::Document::absoluteRegionForWheelEventTargets):\n\nCanonical link: https://commits.webkit.org/318531@main",
      "email": "ahmad.saleem792+github@gmail.com",
      "hash": "e810250b2ddff090916b496bbc09b774cb1e06e6",
      "subject": "Avoid unnecessary Region copies when returning RegionFixedPair from Document"
    },
    "318532@main": {
      "author": "Ahmad Saleem",
      "avatar": "https://www.gravatar.com/avatar/38445f84fe28aa19bfeb1f59f6559532?d=identicon\u0026s=64",
      "cl": "318532@main",
      "clUrl": "https://commits.webkit.org/318532@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320891\nrdar://183909422\n\nReviewed by Chris Dumez.\n\nWeakRef::ptr() ends in RELEASE_ASSERT(ptr), so it never returns null and the\nearly return was dead code. Use protect() to get the counted reference in a\nsingle expression, matching eventListenersDidChange() just above; dereferencing\nthe WeakRef directly would pass an uncounted 'this' and trip Safer C++.\n\nNo change in behavior.\n\n* Source/WebCore/xml/XMLHttpRequestUpload.cpp:\n(WebCore::XMLHttpRequestUpload::scriptExecutionContext const):\n\nCanonical link: https://commits.webkit.org/318532@main",
      "email": "ahmad.saleem792+github@gmail.com",
      "hash": "82c30dd925e1726383e951ede5e761a56c991665",
      "subject": "Remove unreachable null check in XMLHttpRequestUpload::scriptExecutionContext()"
    },
    "318533@main": {
      "author": "Ahmad Saleem",
      "avatar": "https://www.gravatar.com/avatar/38445f84fe28aa19bfeb1f59f6559532?d=identicon\u0026s=64",
      "cl": "318533@main",
      "clUrl": "https://commits.webkit.org/318533@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320893\nrdar://183909305\n\nReviewed by Chris Dumez.\n\ndidReachTimeout() sets m_exceptionCode to ExceptionCode::TimeoutError\nunconditionally, and then sets it to the same value again inside the\n!m_async branch. Nothing in between can change it, so the second\nassignment is dead. Remove it; no behavior change.\n\n* Source/WebCore/xml/XMLHttpRequest.cpp:\n(WebCore::XMLHttpRequest::didReachTimeout):\n\nCanonical link: https://commits.webkit.org/318533@main",
      "email": "ahmad.saleem792+github@gmail.com",
      "hash": "246673dcae2a1e008f9ebf8b3ac37b68417de4f0",
      "subject": "Remove duplicate m_exceptionCode assignment in XMLHttpRequest::didReachTimeout()"
    },
    "318534@main": {
      "author": "Carlos Alberto Lopez Perez",
      "avatar": "https://www.gravatar.com/avatar/05326c1dbe06f486e884975e73f25179?d=identicon\u0026s=64",
      "cl": "318534@main",
      "clUrl": "https://commits.webkit.org/318534@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320926\n\nReviewed by Yusuke Suzuki.\n\nOn Linux, obtaining the main thread stack bounds can be expensive.\ncurrentThreadStackBoundsInternal() calls pthread_getattr_np(), which may\nparse the entire /proc/self/maps file to locate the main thread stack.\nCalling it repeatedly can cause performance problems like the one fixed\nin 318487@main.\n\ncurrentThreadStackBounds() is intended to be called during thread\ninitialization, with the result cached in Thread::m_stack. Other code\nshould read the cached bounds using Thread::currentSingleton().stack().\n\nNothing enforced this restriction, which allowed the uncached function\nto be used repeatedly. Move currentThreadStackBounds() to the private\nsection and make Thread a friend, preventing other callers from\naccidentally bypassing the cached bounds.\n\n* Source/WTF/wtf/StackBounds.h:\n(WTF::StackBounds::currentThreadStackBounds):\n\nCanonical link: https://commits.webkit.org/318534@main",
      "email": "clopez@igalia.com",
      "hash": "f6bc402b8344ad1774116fc13e7a07440ed91250",
      "subject": "[WTF] Make StackBounds::currentThreadStackBounds() private to Thread"
    },
    "318535@main": {
      "author": "Carlos Garcia Campos",
      "avatar": "https://www.gravatar.com/avatar/8393f7e76d83c8a147cb852d8fb1a959?d=identicon\u0026s=64",
      "cl": "318535@main",
      "clUrl": "https://commits.webkit.org/318535@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320970\n\nReviewed by Nikolas Zimmermann.\n\nA CoordinatedAnimatedBackingStoreClient can only exist when the layer\nhas a CoordinatedBackingStoreProxy, and the client is updated with the\ncover rect computed by CoordinatedBackingStoreProxy so it's simpler to\nmake CoordinatedBackingStoreProxy own the CoordinatedAnimatedBackingStoreClient.\n\n* Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedAnimatedBackingStoreClient.cpp:\n(WebCore::CoordinatedAnimatedBackingStoreClient::create):\n(WebCore::CoordinatedAnimatedBackingStoreClient::update):\n(WebCore::CoordinatedAnimatedBackingStoreClient::CoordinatedAnimatedBackingStoreClient): Deleted.\n* Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedAnimatedBackingStoreClient.h:\n* Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedBackingStoreProxy.cpp:\n(WebCore::CoordinatedBackingStoreProxy::~CoordinatedBackingStoreProxy):\n(WebCore::CoordinatedBackingStoreProxy::invalidate):\n(WebCore::CoordinatedBackingStoreProxy::setAffectedByTransformAnimation):\n(WebCore::CoordinatedBackingStoreProxy::updateIfNeeded):\n* Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedBackingStoreProxy.h:\n* Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedPlatformLayer.cpp:\n(WebCore::CoordinatedPlatformLayer::updateBackingStore):\n(WebCore::CoordinatedPlatformLayer::updateContents):\n(WebCore::CoordinatedPlatformLayer::purgeBackingStores):\n(WebCore::CoordinatedPlatformLayer::flushCompositingStateOnTarget):\n(WebCore::CoordinatedPlatformLayer::flushCompositingStateOnSkiaTarget):\n* Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedPlatformLayer.h:\n\nCanonical link: https://commits.webkit.org/318535@main",
      "email": "cgarcia@igalia.com",
      "hash": "0f25453ee003c74b1042030c0bb1b2fcfe5fb4b5",
      "subject": "[CoordinatedGraphics] Move CoordinatedAnimatedBackingStoreClient ownership to CoordinatedBackingStoreProxy"
    },
    "318536@main": {
      "author": "Etienne Segonzac",
      "avatar": "https://www.gravatar.com/avatar/3566820d0ba7e035bc440dc736c17f0c?d=identicon\u0026s=64",
      "cl": "318536@main",
      "clUrl": "https://commits.webkit.org/318536@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320915\n\u003crdar://182292321\u003e\n\nReviewed by Mike Wyrzykowski.\n\nAdd initial support `portal-transform` support to Spatial Portals. For\nnow just auto / none to expose the \"auto fit\" behavior.\n\nTests: spatial-css/spatial-portal-transform-auto-dynamic.html\n       spatial-css/spatial-portal-transform-auto.html\n       spatial-css/spatial-portal-transform-none.html\n       spatial-css/spatial-portal-transform-off.html\n       spatial-css/spatial-portal-transform-parsing.html\n\n* LayoutTests/spatial-css/resources/spatial-portal-utils.js:\n(const.createPortal):\n(const.portalTransformsApproxEqual):\n(async waitForPortalTransform):\n* LayoutTests/spatial-css/spatial-portal-transform-auto-dynamic-expected.txt: Added.\n* LayoutTests/spatial-css/spatial-portal-transform-auto-dynamic.html: Added.\n* LayoutTests/spatial-css/spatial-portal-transform-auto-expected.txt: Added.\n* LayoutTests/spatial-css/spatial-portal-transform-auto.html: Added.\n* LayoutTests/spatial-css/spatial-portal-transform-none-expected.txt: Added.\n* LayoutTests/spatial-css/spatial-portal-transform-none.html: Added.\n* LayoutTests/spatial-css/spatial-portal-transform-off-expected.txt: Added.\n* LayoutTests/spatial-css/spatial-portal-transform-off.html: Added.\n* LayoutTests/spatial-css/spatial-portal-transform-parsing-expected.txt: Added.\n* LayoutTests/spatial-css/spatial-portal-transform-parsing.html: Added.\nAdd a new batch of tests covering the portal-transform property, dynamic\ntoggle and adding/removing nested models.\n\n* Source/WTF/Scripts/Preferences/UnifiedWebPreferences.yaml:\nMake sure we can flag the new IPC call with\n`[EnabledBy=SpatialPortalEnabled]`.\n\n* Source/WebCore/Sources.txt:\n* Source/WebCore/WebCore.xcodeproj/project.pbxproj:\n* Source/WebCore/css/CSSProperties.json:\n* Source/WebCore/Headers.cmake:\n* Source/WebCore/style/computed/StyleComputedStyleBase.h:\n* Source/WebCore/style/computed/data/StyleNonInheritedRareData.cpp:\n(WebCore::Style::portalTransform):\n(WebCore::Style::NonInheritedRareData::NonInheritedRareData):\n(WebCore::Style::NonInheritedRareData::operator== const):\n(WebCore::Style::NonInheritedRareData::dumpDifferences const):\n* Source/WebCore/style/computed/data/StyleNonInheritedRareData.h:\n* Source/WebCore/style/values/transforms/StylePortalTransform.cpp: Added.\n(WebCore::Style::CSSValueConversion\u003cPortalTransform\u003e::operator):\n* Source/WebCore/style/values/transforms/StylePortalTransform.h: Added.\n(WebCore::Style::PortalTransform::PortalTransform):\n(WebCore::Style::PortalTransform::switchOn const):\n* Source/WebCore/Modules/model-element/PortalTransform.h: Added.\n* Source/WebKit/Scripts/webkit/messages.py:\n(headers_for_type):\n* Source/WebKit/Shared/WebCoreArgumentCoders.serialization.in:\nAdd the `portal-transform` CSS property, defaults to `auto`.\n\n* Source/WebCore/Modules/model-element/HTMLModelElement.h:\n* Source/WebCore/Modules/model-element/ModelPlayer.cpp:\n(WebCore::ModelPlayer::setPortalTransform):\n* Source/WebCore/Modules/model-element/ModelPlayer.h:\n* Source/WebCore/Modules/model-element/ModelPlayerClient.h:\n* Source/WebCore/Modules/model-element/SpatialPortalController.cpp:\n(WebCore::SpatialPortalController::ensureModelPlayer):\n(WebCore::SpatialPortalController::setPortalTransform):\n(WebCore::SpatialPortalController::deleteModelPlayer):\n(WebCore::SpatialPortalController::sizeMayHaveChanged):\n(WebCore::SpatialPortalController::modelDidUpdatePortalTransform):\n* Source/WebCore/Modules/model-element/SpatialPortalController.h:\n(WebCore::SpatialPortalController::resolvedPortalTransform const):\n* Source/WebCore/rendering/RenderBox.cpp:\n(WebCore::portalTransformKind):\n(WebCore::RenderBox::styleDidChange):\n* Source/WebCore/rendering/RenderLayerBacking.cpp:\n(WebCore::RenderLayerBacking::updateGeometry):\n* Source/WebKit/WebProcess/Model/ModelProcessModelPlayer.cpp:\n(WebKit::ModelProcessModelPlayer::didUpdatePortalTransform):\n(WebKit::ModelProcessModelPlayer::setPortalTransform):\n* Source/WebKit/WebProcess/Model/ModelProcessModelPlayer.h:\n* Source/WebKit/WebProcess/Model/ModelProcessModelPlayer.messages.in:\nWire the `portal-transform` property and formalize the portal transform\nconcept with its own IPC.\n\n* Source/WebKit/ModelProcess/cocoa/ModelProcessModelPlayerProxy.h:\n* Source/WebKit/ModelProcess/cocoa/ModelProcessModelPlayerProxy.messages.in:\n* Source/WebKit/ModelProcess/cocoa/ModelProcessModelPlayerProxy.mm:\n(WebKit::computeUnfittedSRT):\n(WebKit::ModelProcessModelPlayerProxy::modelStandardizedTransformSRT):\n(WebKit::ModelProcessModelPlayerProxy::modelLocalizedTransformSRT):\n(WebKit::ModelProcessModelPlayerProxy::computeTransform):\n(WebKit::ModelProcessModelPlayerProxy::notifyModelPlayerOfTransformChange):\n(WebKit::ModelProcessModelPlayerProxy::notifyModelPlayerOfEntityTransformChange): Deleted.\nRenamed now that is handles entity and global transforms.\n(WebKit::ModelProcessModelPlayerProxy::didFinishLoading):\n(WebKit::ModelProcessModelPlayerProxy::setPortalTransform):\n(WebKit::ModelProcessModelPlayerProxy::updateTransformSRT):\nIn parallel of standalone model concerns (StageMode, Immersive etc...),\nclearly skip the \"auto fit\" behavior on Spatial Portals when the\n`spatial-transform` is set to `none`.\nThis keeps the model at true scale but still positions it \"behind the\nglass\".\n\n* Source/WebCore/testing/Internals.cpp:\n(WebCore::Internals::spatialPortalResolvedTransform):\n* Source/WebCore/testing/Internals.h:\n* Source/WebCore/testing/Internals.idl:\nExpose the computed portal transform to tests. Still debating how to\nexpose it to Web Content in general.\n\nCanonical link: https://commits.webkit.org/318536@main",
      "email": "sgz@apple.com",
      "hash": "4dcc225071c9dad4c6d86fbb4e461f6349c91f1d",
      "subject": "Add initial `portal-transform` support"
    },
    "318537@main": {
      "author": "Jean-Yves Avenard",
      "avatar": "https://www.gravatar.com/avatar/509313899deeb9262fad8f5e04093f5b?d=identicon\u0026s=64",
      "cl": "318537@main",
      "clUrl": "https://commits.webkit.org/318537@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320425\nrdar://183383148\n\nReviewed by Eric Carlson.\n\nUnder site isolation RemoteMediaSessionManager applies the audio session category to the WebContent\nprocess only from an asynchronous IPC reply, so getUserMedia's promise (and the track mute/unmute events)\nresolved before the category was updated, leaving internals.audioSessionCategory() reading a stale value.\nFixed by making updateSessionState() return a GenericPromise that settles once the category has been\napplied, and gating the getUserMedia resolution and mute/unmute event dispatch on it. Audio session\nactivation and deactivation remain synchronous, so AudioSession::isActive() is up to date as soon as\naudioCaptureSourceStateChanged() returns.\n\nAPI tests expected synchronous operations which they can't be when site isolation is enabled.\nWe update those tests to handle the asynchronous operations.\n\nCovered by existing tests.\n\n* LayoutTests/platform/ios-site-isolation/TestExpectations: Unskip the now-passing test.\n* Source/WebCore/Modules/mediastream/MediaStreamTrack.cpp:\n(WebCore::MediaStreamTrack::trackMutedChanged): Defer the mute/unmute event until the category is applied.\n* Source/WebCore/Modules/mediastream/UserMediaRequest.cpp:\n(WebCore::UserMediaRequest::allow): Resolve the promise once the category is applied.\n* Source/WebCore/platform/audio/MediaSessionManagerInterface.cpp:\n(WebCore::MediaSessionManagerInterface::audioCaptureSourceStateChanged): Return a promise that settles once the category has been applied; activation stays synchronous.\n(WebCore::MediaSessionManagerInterface::updateSessionState):\n* Source/WebCore/platform/audio/MediaSessionManagerInterface.h:\n* Source/WebCore/platform/audio/cocoa/MediaSessionManagerCocoa.h:\n* Source/WebCore/platform/audio/cocoa/MediaSessionManagerCocoa.mm:\n(WebCore::MediaSessionManagerCocoa::updateSessionState): Return an already-resolved promise.\n* Source/WebKit/WebProcess/Media/RemoteMediaSessionManager.cpp:\n(WebKit::RemoteMediaSessionManager::updateSessionState): Apply the category from the IPC reply and settle the returned promise.\n* Source/WebKit/WebProcess/Media/RemoteMediaSessionManager.h:\n* Tools/TestWebKitAPI/Resources/cocoa/media-session-capture.html:\n* Tools/TestWebKitAPI/Tests/WebKit/WKWebView/GetDisplayMediaWindowAndScreen.mm:\n(TestWebKitAPI::armActionState):\n(TestWebKitAPI::waitForActionState):\n(TestWebKitAPI::TEST(WebKit2, ToggleScreenshare)):\n* Tools/TestWebKitAPI/Tests/WebKit/WKWebView/GetUserMedia.mm:\n(TestWebKitAPI::armActionState):\n(TestWebKitAPI::waitForActionState):\n(TestWebKitAPI::(WebKit2, ToggleCameraCaptureWhenRestarting)):\n(TestWebKitAPI::(WebKit2, ToggleMicrophoneCaptureWhenRestarting)):\n\nCanonical link: https://commits.webkit.org/318537@main",
      "email": "jya@apple.com",
      "hash": "d74b116a2b69cfac711eda9b54f175db32c3afc4",
      "subject": "[site-isolation] fast/mediastream/microphone-interruption-and-audio-session.html is an almost-permanent failure"
    },
    "318538@main": {
      "author": "Mike Wyrzykowski",
      "avatar": "https://www.gravatar.com/avatar/4b1bc9e238714f95e22d5d2454c07066?d=identicon\u0026s=64",
      "cl": "318538@main",
      "clUrl": "https://commits.webkit.org/318538@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320490\nrdar://183458069\n\nReviewed by Dan Glastonbury.\n\nFix performance issue from drawIndirect and drawIndexedIndirect into RenderBundles,\nwhich WebKit strongly suggests using, but previously encountered a severe performance\ncliff.\n\nWith this change, we are able to maintain 60 fps with 2000 indirect draws in a bundle\nwhereas previously we would drop under 1 fps.\n\nTests: fast/webgpu/render-bundle-draw-indexed-indirect.html\n       fast/webgpu/render-bundle-draw-indirect.html\n\n* LayoutTests/fast/webgpu/render-bundle-draw-indexed-indirect-expected.txt: Added.\n* LayoutTests/fast/webgpu/render-bundle-draw-indexed-indirect.html: Added.\n* LayoutTests/fast/webgpu/render-bundle-draw-indirect-expected.txt: Added.\n* LayoutTests/fast/webgpu/render-bundle-draw-indirect.html: Added.\n* Source/WebGPU/WebGPU/BindableResource.h:\n* Source/WebGPU/WebGPU/Buffer.h:\n(WebGPU::Buffer::contentsGeneration const):\n* Source/WebGPU/WebGPU/Buffer.mm:\n(WebGPU::Buffer::indirectBufferInvalidated):\n* Source/WebGPU/WebGPU/Device.h:\n* Source/WebGPU/WebGPU/Device.mm:\n* Source/WebGPU/WebGPU/RenderBundleEncoder.h:\n* Source/WebGPU/WebGPU/RenderBundleEncoder.mm:\n(-[RenderBundleICBWithResources initWithICB:containerBuffer:pipelineState:depthStencilState:cullMode:frontFace:depthClipMode:depthBias:depthBiasSlopeScale:depthBiasClamp:fragmentDynamicOffsetsBuffer:pipeline:minVertexCounts:indirectDraws:outOfBoundsReadFlag:]):\n(-[RenderBundleICBWithResources indirectDrawsForSlot]):\n(WebGPU::makeRenderBundleICBWithResources):\n(WebGPU::RenderBundleEncoder::drawIndexedIndirect):\n(WebGPU::RenderBundleEncoder::drawIndirect):\n(WebGPU::RenderBundleEncoder::cleanup):\n(WebGPU::RenderBundleEncoder::splitICB):\n(-[RenderBundleICBWithResources initWithICB:containerBuffer:pipelineState:depthStencilState:cullMode:frontFace:depthClipMode:depthBias:depthBiasSlopeScale:depthBiasClamp:fragmentDynamicOffsetsBuffer:pipeline:minVertexCounts:outOfBoundsReadFlag:]): Deleted.\n* Source/WebGPU/WebGPU/RenderPassEncoder.h:\n* Source/WebGPU/WebGPU/RenderPassEncoder.mm:\n(WebGPU::checkForIndirectDrawDeviceLost):\n(WebGPU::RenderPassEncoder::newZeroedIndirectScratch):\n(WebGPU::RenderPassEncoder::clampIndirectBufferDispatchBatched):\n(WebGPU::RenderPassEncoder::clampIndirectIndexBufferDispatch1Batched):\n(WebGPU::RenderPassEncoder::clampIndirectIndexBufferDispatch2Batched):\n(WebGPU::RenderPassEncoder::executeBundles):\n\nCanonical link: https://commits.webkit.org/318538@main",
      "email": "mwyrzykowski@apple.com",
      "hash": "59b6d9a2d0273c0aa2fd270cf726ea3b5c011c98",
      "subject": "executeBundles re-replays bundles containing indirect draws and reconstructs ICBs every call — 30× frame-rate collapse vs direct encoding"
    },
    "318539@main": {
      "author": "Carlos Alberto Lopez Perez",
      "avatar": "https://www.gravatar.com/avatar/05326c1dbe06f486e884975e73f25179?d=identicon\u0026s=64",
      "cl": "318539@main",
      "clUrl": "https://commits.webkit.org/318539@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320975\n\nReviewed by Carlos Garcia Campos and Nikolas Zimmermann.\n\nLibWebRTC is now the default, no need to have specific bots for it.\nRemove WPE-Linux-64-bit-Release-LibWebRTC-Build post-commit bot.\n\nClang compiler is now the default, switch the previous Clang bots\nto be GCC ones.\n\n* Tools/CISupport/build-webkit-org/config.json:\n* Tools/CISupport/build-webkit-org/factories_unittest.py:\n(TestExpectedBuildSteps):\n* Tools/CISupport/ews-app/ews/common/github.py:\n(GitHubEWS):\n* Tools/CISupport/ews-app/ews/views/statusbubble.py:\n(StatusBubble):\n* Tools/CISupport/ews-build/config.json:\n* Tools/CISupport/ews-build/factories.py:\n(GTK3GCCBuildFactory):\n(GTK3LibWebRTCBuildFactory): Deleted.\n* Tools/CISupport/ews-build/factories_unittest.py:\n(TestExpectedBuildSteps):\n* Tools/CISupport/ews-build/loadConfig.py:\n* Tools/CISupport/ews-build/steps.py:\n(CheckStatusOfPR):\n* Tools/CISupport/ews-build/steps_unittest.py:\n(TestCheckChangeRelevance.test_queues_without_relevance_info):\n\nCanonical link: https://commits.webkit.org/318539@main",
      "email": "clopez@igalia.com",
      "hash": "644f59df65ef2ca6169dc88d30af362e9320230c",
      "subject": "[WKCI][WPE][GTK] Use Clang by default, change the Clang bots to be GCC ones and remove LibWebRTC bots"
    },
    "318540@main": {
      "author": "Sosuke Suzuki",
      "avatar": "https://www.gravatar.com/avatar/e63b87350fe19bdd9a30c7234eda45af?d=identicon\u0026s=64",
      "cl": "318540@main",
      "clUrl": "https://commits.webkit.org/318540@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320873\n\nReviewed by Yusuke Suzuki.\n\n\\A and \\z were compiled into their own assertion terms without participating in the\nBOL/EOL anchoring machinery, so a failing /\\Afoo/u or /foo\\z/u scanned every start\nposition of the input while /^foo/u and /foo$/u give up immediately.\n\n1. assertionBOI() sets m_startsWithBOL/m_containsBOL like assertionBOL(), and\n   recomputeStartsWithBOL() treats AssertionBOI as an anchor, so optimizeBOL()\n   makes \\A-anchored alternatives once-through.\n2. computeEndAnchoredFixedSize() accepts alternatives ending with \\z. Since \\z\n   does not depend on the multiline flag, it no longer bails on multiline\n   patterns; a trailing $ still requires a non-multiline term.\n3. The first-character bitmap builder treats \\A/\\z/\\Z as zero-width and\n   accepts \\A as the leading anchor.\n\n                                              Baseline                  Patched\n\nregexp-buffer-boundary-anchor-start      130.5870+-4.7993     ^      0.4691+-0.0210        ^ definitely 278.3501x faster\nregexp-buffer-boundary-anchor-end          9.0441+-0.2902     ^      3.7459+-0.4817        ^ definitely 2.4144x faster\n\nTests: JSTests/microbenchmarks/regexp-buffer-boundary-anchor-end.js\n       JSTests/microbenchmarks/regexp-buffer-boundary-anchor-start.js\n       JSTests/stress/regexp-buffer-boundaries-anchoring.js\n\n* JSTests/microbenchmarks/regexp-buffer-boundary-anchor-end.js: Added.\n* JSTests/microbenchmarks/regexp-buffer-boundary-anchor-start.js: Added.\n* JSTests/stress/regexp-buffer-boundaries-anchoring.js: Added.\n(shouldBe):\n(checkEquivalent):\n* Source/JavaScriptCore/yarr/YarrPattern.cpp:\n(JSC::Yarr::YarrPatternConstructor::assertionBOI):\n(JSC::Yarr::YarrPatternConstructor::recomputeStartsWithBOL):\n(JSC::Yarr::YarrPatternConstructor::optimizeBOL):\n(JSC::Yarr::YarrPatternConstructor::computeEndAnchoredFixedSize):\n(JSC::Yarr::FirstCharacterBitmapBuilder::addTerm):\n(JSC::Yarr::computeFirstCharacterBitmap):\n\nCanonical link: https://commits.webkit.org/318540@main",
      "email": "sosuke@bun.sh",
      "hash": "37f4628ab5fec6362ec0b39da1179445f7616dea",
      "subject": "[YARR] Let `\\A` and `\\z` use the anchoring optimizations of non-multiline `^` and `$`"
    },
    "318541@main": {
      "author": "Sosuke Suzuki",
      "avatar": "https://www.gravatar.com/avatar/e63b87350fe19bdd9a30c7234eda45af?d=identicon\u0026s=64",
      "cl": "318541@main",
      "clUrl": "https://commits.webkit.org/318541@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320948\n\nReviewed by Yusuke Suzuki.\n\n315180@main inlines StringIteratorPrototype.next into DFG, which places the\nStringIteratorNextWithUndefined tuple node into an ordinary straight-line block.\nWhen a later node in the same block causes a structure transition,\nobserveTransition() calls forAllValues(), which invoked forNode() on the tuple\nnode and hit ASSERT(!node-\u003eisTuple()). Existing tuple nodes never triggered this\nbecause they only appear in for-of / for-in header blocks, away from arbitrary\nuser code.\n\n    for (let i = 0; i \u003c 3e5; i++) { \"\"[Symbol.iterator]().next(); var o = {}; o.k = i; }\n\nThis makes forAllValues() apply the functor to each tuple element instead. Tuple\nnodes in liveAtHead are skipped since tuple abstract values are not propagated\nacross blocks (endBasicBlock / merge already ignore them).\n\nAbstractInterpreter::dump() and safeToExecute()'s SafeToExecuteEdge had the same\nproblem, so --verboseCFA=1 asserted on any tuple node. dump() now prints each tuple\nelement as @N\u003c\u003cindex, and SafeToExecuteEdge consults forTupleNode() for the\nExtractFromTuple tuple child. LICM no longer needs to reject ExtractFromTuple up\nfront for that reason.\n\nTest: JSTests/stress/string-iterator-next-intrinsic-with-structure-transition.js\n\n* JSTests/stress/string-iterator-next-intrinsic-with-structure-transition.js: Added.\n* Source/JavaScriptCore/dfg/DFGAbstractInterpreterInlines.h:\n(JSC::DFG::AbstractInterpreter\u003cAbstractStateType\u003e::forAllValues):\n(JSC::DFG::AbstractInterpreter\u003cAbstractStateType\u003e::dump):\n* Source/JavaScriptCore/dfg/DFGLICMPhase.cpp:\n(JSC::DFG::LICMPhase::attemptHoist):\n* Source/JavaScriptCore/dfg/DFGSafeToExecute.h:\n(JSC::DFG::SafeToExecuteEdge::operator()):\n\nCanonical link: https://commits.webkit.org/318541@main",
      "email": "sosuke@bun.sh",
      "hash": "91d96b29d6b286a0355782507d61298d39146083",
      "subject": "[JSC] `AbstractInterpreter::forAllValues` should handle tuple nodes"
    },
    "318542@main": {
      "author": "Sosuke Suzuki",
      "avatar": "https://www.gravatar.com/avatar/e63b87350fe19bdd9a30c7234eda45af?d=identicon\u0026s=64",
      "cl": "318542@main",
      "clUrl": "https://commits.webkit.org/318542@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320962\n\nReviewed by Yusuke Suzuki.\n\n`String#localeCompare(that, locale)` created a fresh IntlCollator on\nevery call whenever `locales` was not undefined, running full option\nprobing, resolveLocale and ucol_open per comparison. This makes the\ncommon sort comparator pattern\n`items.sort((a, b) =\u003e a.name.localeCompare(b.name, \"en\"))` very slow.\n\nThis patch adds a single-entry per-JSGlobalObject cache keyed by the\nlocale string, used when `locales` is a string and `options` is\nundefined. In that case examining the arguments has no observable side\neffects, so reusing the collator is not observable (V8 caches the\ncollator under the same condition).\n\n                                      baseline                  patched\n\nlocale-compare-with-locales      111.1431+-2.0657     ^      2.0815+-0.0727        ^ definitely 53.3946x faster\nlocale-compare                     0.9404+-0.0560            0.9292+-0.0475          might be 1.0120x faster\n\nTests: JSTests/microbenchmarks/locale-compare-with-locales.js\n       JSTests/stress/string-locale-compare-locales-cache.js\n\n* JSTests/microbenchmarks/locale-compare-with-locales.js: Added.\n* JSTests/stress/string-locale-compare-locales-cache.js: Added.\n(shouldBe):\n* Source/JavaScriptCore/runtime/JSGlobalObject.cpp:\n(JSC::JSGlobalObject::visitChildrenImpl):\n(JSC::JSGlobalObject::cachedLocaleCompareCollator):\n* Source/JavaScriptCore/runtime/JSGlobalObject.h:\n* Source/JavaScriptCore/runtime/StringPrototype.cpp:\n(JSC::JSC_DEFINE_HOST_FUNCTION):\n\nCanonical link: https://commits.webkit.org/318542@main",
      "email": "sosuke@bun.sh",
      "hash": "33a5272cf9acb5e290cb58b1ec6b5a9a1ef1ee70",
      "subject": "[JSC] Cache the collator for `String#localeCompare` with a string locale"
    },
    "318543@main": {
      "author": "Taher Ali",
      "avatar": "https://www.gravatar.com/avatar/e104800647d8c98b8c9dbe736b5e1751?d=identicon\u0026s=64",
      "cl": "318543@main",
      "clUrl": "https://commits.webkit.org/318543@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320912\nrdar://183941298\n\nReviewed by Simon Fraser.\n\nExternal and data: URL references now work for paint servers, filters,\nmarkers, and clip-path, so expose the setting as a preview feature to get\nreal-world coverage.\n\n* Source/WTF/Scripts/Preferences/UnifiedWebPreferences.yaml:\n\nCanonical link: https://commits.webkit.org/318543@main",
      "email": "taher_ali@apple.com",
      "hash": "18f024a57c87fc0cff5ecb54379d5f4152b223c1",
      "subject": "Change SVG external resources to preview"
    },
    "318544@main": {
      "author": "Ahmad Saleem",
      "avatar": "https://www.gravatar.com/avatar/38445f84fe28aa19bfeb1f59f6559532?d=identicon\u0026s=64",
      "cl": "318544@main",
      "clUrl": "https://commits.webkit.org/318544@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320786\nrdar://183945535\n\nReviewed by Frédéric Wang Nélar and Chris Dumez.\n\nThe preload scanner read srcset/sizes only for \u003cimg\u003e and \u003csource\u003e. For\n\u003clink rel=preload as=image\u003e it took href verbatim, so the speculative fetch went\nto href while LinkLoader::preloadIfNeeded selected an image source from the\nsource set and fetched that instead — two downloads for one preload. Step 2 of\nthe \"preload\" algorithm [1] requires selecting from the source set when the\ndestination is \"image\".\n\nMirror the \u003cimg\u003e resolution in the link branch: buffer imagesrcset/imagesizes\n(first value wins, as with srcset/sizes) and run\nbestFitSourceForImageAttributes() over href + imagesrcset, gated on rel=preload\nresolving to an image resource so it matches LinkLoader::preloadIfNeeded. href is\npassed as the default source, so it is still selected when it legitimately joins\nthe source set as the 1x candidate.\n\ndynamic-adding-preload-imagesrcset.html already passed because script-created\nlinks never reach the scanner; preload-imagesrcset-in-markup.html goes from 2\nFAIL to 2 PASS.\n\n[1] https://html.spec.whatwg.org/multipage/links.html#preload\n\n* LayoutTests/imported/w3c/web-platform-tests/preload/preload-imagesrcset-in-markup-expected.txt: Progression\n* Source/WebCore/html/parser/HTMLPreloadScanner.cpp:\n(WebCore::TokenPreloadScanner::StartTagScanner::processAttributes):\n(WebCore::TokenPreloadScanner::StartTagScanner::processAttribute):\n\nCanonical link: https://commits.webkit.org/318544@main",
      "email": "ahmad.saleem792+github@gmail.com",
      "hash": "eeeb01ce5ab8258304a1a878667b1b2ec548bec6",
      "subject": "imagesrcset does not override href for \u003clink rel=\"preload\" as=\"image\"\u003e"
    },
    "318545@main": {
      "author": "Devin Rousso",
      "avatar": "https://www.gravatar.com/avatar/c9e757d973342c773f107a94b70cb9cd?d=identicon\u0026s=64",
      "cl": "318545@main",
      "clUrl": "https://commits.webkit.org/318545@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320951\n\nReviewed by Mike Wyrzykowski.\n\n* Source/WebInspectorUI/UserInterface/Models/Recording.js:\n(WI.Recording.displayNameForSwizzleType):\n(WI.Recording.prototype.swizzle):\n(WI.Recording.Swizzle):\nPass WebGPU object identifiers through without looking them up in the recording data table.\nDrive-by: add the missing `DOMPointInit` entry to keep the frontend enum synchronized with `RecordingSwizzleType`.\n\n* Source/WebInspectorUI/UserInterface/Views/RecordingActionTreeElement.js:\n(WI.RecordingActionTreeElement._generateDOM):\nDisplay WebGPU object arguments using the same object names as action receivers.\nDrive-by: append `()` when a function has no parameters instead of displaying it like an attribute.\n\n* LayoutTests/inspector/canvas/recording-webgpu.html:\n* LayoutTests/inspector/canvas/recording-webgpu-expected.txt:\n\nCanonical link: https://commits.webkit.org/318545@main",
      "email": "hi@devinrousso.com",
      "hash": "27fdf13d22fd344568ddd8a2a99cc6a552c29457",
      "subject": "REGRESSION(318407@main): Web Inspector: Canvas: swizzle recorded WebGPU object arguments"
    },
    "318546@main": {
      "author": "Devin Rousso",
      "avatar": "https://www.gravatar.com/avatar/c9e757d973342c773f107a94b70cb9cd?d=identicon\u0026s=64",
      "cl": "318546@main",
      "clUrl": "https://commits.webkit.org/318546@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320621\n\nReviewed by Yusuke Suzuki.\n\nWebAssembly source maps use module byte offsets as generated columns on line `0`.\nPreserve canonical `(0, byteOffset)` positions without requiring generated source content or a disassembly.\n\n* Source/JavaScriptCore/debugger/Debugger.cpp:\n(JSC::Debugger::sourceParsed):\nReport the WebAssembly module's `sourceMappingURL` to Inspector.\n\n* Source/WebInspectorUI/UserInterface/Models/Script.js:\n(WI.Script.isWebAssembly):\nCheck known `WI.Script` instances directly by source type.\n(WI.Script.prototype.createSourceCodeLocationForBytecodeOffset): Added.\n(WI.Script.prototype.createSourceMapSourceCodeLocation): Added.\n(WI.Script.prototype.bytecodeOffsetForPosition): Added.\n(WI.Script.prototype.createSourceMapPosition): Added.\n* Source/WebInspectorUI/UserInterface/Models/SourceCode.js:\n(WI.SourceCode.prototype.createSourceMapSourceCodeLocation): Added.\n(WI.SourceCode.prototype.createSourceMapPosition): Added.\nRepresent WebAssembly module byte offsets as canonical `(0, byteOffset)` source code positions and convert them to and from source map positions.\n\n* Source/WebInspectorUI/UserInterface/Models/SourceCodeLocation.js:\n(WI.SourceCodeLocation.prototype.resolveMappedLocation):\n* Source/WebInspectorUI/UserInterface/Models/SourceMapResource.js:\n(WI.SourceMapResource.prototype.createSourceCodeLocation):\nConvert raw locations to source map positions before resolving mappings, and convert generated source map positions back to raw locations.\n\n* LayoutTests/http/tests/inspector/debugger/wasm/resources/named-module.py:\n* LayoutTests/http/tests/inspector/debugger/wasm/script-url.html:\n* LayoutTests/http/tests/inspector/debugger/wasm/script-url-expected.txt:\n* LayoutTests/inspector/debugger/wasm/resources/source-map.json: Added.\n* LayoutTests/inspector/debugger/wasm/source-map.html: Added.\n* LayoutTests/inspector/debugger/wasm/source-map-expected.txt: Added.\n* LayoutTests/inspector/worker/resources/worker-debugger-wasm.js:\n* LayoutTests/inspector/worker/debugger-getScriptSource-wasm.html:\n* LayoutTests/inspector/worker/debugger-getScriptSource-wasm-expected.txt:\n\nCanonical link: https://commits.webkit.org/318546@main",
      "email": "hi@devinrousso.com",
      "hash": "1a7f711d887ed01907e9f8d1d61710c543f967ac",
      "subject": "Web Inspector: map WebAssembly byte offsets to original source with source maps"
    },
    "318547@main": {
      "author": "Adrian Taylor",
      "avatar": "https://www.gravatar.com/avatar/d2acb8ad2e2670ff74ae0d65fb27014c?d=identicon\u0026s=64",
      "cl": "318547@main",
      "clUrl": "https://commits.webkit.org/318547@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320977\nrdar://184009333\n\nReviewed by Richard Robinson.\n\nJust a comment update to make the safety properties of this type clearer.\n\nCanonical link: https://commits.webkit.org/318547@main",
      "email": "adrian_taylor@apple.com",
      "hash": "db099b025de4971e8a20542a4412e8ac3dd60568",
      "subject": "Describe aliasing-related semantics of WTF.BorrowedBytes"
    },
    "318548@main": {
      "author": "Ahmad Saleem",
      "avatar": "https://www.gravatar.com/avatar/38445f84fe28aa19bfeb1f59f6559532?d=identicon\u0026s=64",
      "cl": "318548@main",
      "clUrl": "https://commits.webkit.org/318548@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=194815\nrdar://122586485\n\nReviewed by Nikolas Zimmermann.\n\nThis patch aligns WebKit with Gecko / Firefox and Blink / Chromium.\n\nPer SVG 2 §12.2 \"Placement of the embedded content\"\n(https://w3c.github.io/svgwg/svg2-draft/embedded.html#Placement):\n\n    \"The 'auto' value for width or height is used to size the\n     corresponding element automatically based on the intrinsic\n     dimensions or intrinsic aspect ratio of the referenced\n     resource. Computation of automatically-sized values follows\n     the Default Sizing Algorithm defined for replaced elements in\n     CSS layout [css-images-3]. In particular, when the referenced\n     resource does not have an intrinsic size (such as image types\n     with no defined dimensions), it is assumed to have a width of\n     300px and a height of 150px.\"\n\nThe default sizing algorithm itself is defined in CSS Images Level 3 §4.3.1\n(https://www.w3.org/TR/css-images-3/#default-sizing-algorithm).\n\ncalculateObjectBoundingBox() previously used the value returned by\nCachedImage::imageSizeForRenderer() as both the intrinsic size and\nthe intrinsic ratio. For SVG sources this conflated three distinct\ncases:\n\n    * An SVG with only a viewBox (no intrinsic width/height) reported\n      the viewBox size as if it were intrinsic, so 'width:auto;\n      height:auto' returned the viewBox dimensions instead of fitting\n      the intrinsic ratio into the 300x150 default object size.\n    * An SVG with one intrinsic dimension plus a viewBox returned the\n      viewBox size, ignoring the intrinsic dimension that should have\n      been preserved while the missing dimension is derived from the\n      ratio.\n    * An empty SVG (no intrinsic dimensions and no viewBox) fell back\n      to 300x150 inside imageSizeForRenderer, but the surrounding\n      logic then treated that fallback as a real 2:1 intrinsic ratio\n      when one CSS axis was 'auto'.\n\nAdd SVGImageIntrinsicSizing.h, a helper shared by the LBSE and legacy\nSVG image renderers, which both previously carried identical copies of\nthis computation. resolveSVGImageIntrinsicSizing() queries\nCachedImage::computeIntrinsicDimensions() for SVG sources and applies\nthe CSS Images Level 3 §4.3.1 default sizing algorithm with a 300x150\ndefault object size, returning an SVGImageIntrinsicSizing struct: a\nconcrete intrinsic size, the intrinsic ratio, and a HasRatio enum.\nHasRatio distinguishes a real aspect ratio from the 300x150 fallback,\nwhich callers need because resolving 'auto' against a fallback ratio\nyields the wrong size. When both intrinsic dimensions exist, the\nintrinsic ratio is taken from those dimensions (per spec), so the\nviewBox-derived ratio cannot override the intrinsic w/h ratio for SVGs\nthat declare width, height, and viewBox.\n\ncalculateSVGImageObjectBoundingBox() resolves the concrete width and\nheight from the CSS 'width' / 'height' computed values against that\nsizing, keying its ratio branches off HasRatio rather than an emptiness\ncheck, so the 300x150 default-object-size fallback no longer poses as an\naspect ratio. Both RenderSVGImage::calculateObjectBoundingBox() and\nLegacyRenderSVGImage::calculateObjectBoundingBox() now just delegate to\nit.\n\nNon-SVG (raster) sources are unaffected: the helper returns\nimageSizeForRenderer() for them, matching the previous behavior.\n\n* LayoutTests/imported/w3c/web-platform-tests/svg/geometry/svg-image-intrinsic-size-with-cssstyle-auto-expected.txt: Progressions\n* Source/WebCore/Sources.txt:\n* Source/WebCore/WebCore.xcodeproj/project.pbxproj:\n* Source/WebCore/rendering/svg/RenderSVGImage.cpp:\n(WebCore::RenderSVGImage::calculateObjectBoundingBox const):\n* Source/WebCore/rendering/svg/SVGImageIntrinsicSizing.cpp: Added.\n(WebCore::resolveSVGImageIntrinsicSizing):\n(WebCore::calculateSVGImageObjectBoundingBox):\n* Source/WebCore/rendering/svg/SVGImageIntrinsicSizing.h: Added.\n* Source/WebCore/rendering/svg/legacy/LegacyRenderSVGImage.cpp:\n(WebCore::LegacyRenderSVGImage::calculateObjectBoundingBox const):\n\nCanonical link: https://commits.webkit.org/318548@main",
      "email": "ahmad.saleem792+github@gmail.com",
      "hash": "2025cb32576ca2b653e30d66744c3861cab4bc19",
      "subject": "\u003csvg:image\u003e 'auto' sizing should follow the CSS default sizing algorithm"
    },
    "318549@main": {
      "author": "Kiet Ho",
      "avatar": "https://www.gravatar.com/avatar/d9058b37006dce1f55f91b8ccc82f9a3?d=identicon\u0026s=64",
      "cl": "318549@main",
      "clUrl": "https://commits.webkit.org/318549@main",
      "description": "rdar://184018632\nhttps://bugs.webkit.org/show_bug.cgi?id=320986\n\nReviewed by Yusuke Suzuki.\n\nCMake macOS builds are failing with the following error:\n\nUndefined symbols for architecture arm64e:\n  \"WTF::StackBounds::currentThreadStackBoundsInternal()\", referenced from:\n      WTF::StackBounds::currentThreadStackBounds() in WebCoreJSBindings_pch_obj.cpp.o\n\n318534@main removes the WTF_EXPORT_PRIVATE annotation from\nStackBounds::currentThreadStackBoundsInternal, which I assume leads\nto the undefined symbol, since the method no longer gets exported.\nFix the build by exporting it again.\n\n* Source/WTF/wtf/StackBounds.h:\n\nCanonical link: https://commits.webkit.org/318549@main",
      "email": "kiet.ho@apple.com",
      "hash": "36403ca6284947f3012f02fe321ddc8b9e3ea95c",
      "subject": "Make StackBounds::currentThreadStackBoundsInternal WTF_EXPORT_PRIVATE"
    },
    "318550@main": {
      "author": "Joanne Pan",
      "avatar": "https://www.gravatar.com/avatar/5cbbf578426a0c98cb5c977ca2dd88fc?d=identicon\u0026s=64",
      "cl": "318550@main",
      "clUrl": "https://commits.webkit.org/318550@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319929\nrdar://182854362\n\nReviewed by Antti Koivisto.\n\nrandom() is rejected in @container style() query values, but random-item() was not, so\nit leaked into a context where random() is blocked. random-item() is an arbitrary\nsubstitution function resolved in StyleSubstitutionResolver rather than a math function\nrejected at parse time, so it bypassed the guard that stops random().\n\nReject random-item() while resolving a @container style() query value. Builder sets a\nBuilderState::isResolvingContainerQueries() flag around resolveCustomPropertyForContainerQueries()\n(a per-evaluation throwaway builder, so the flag cannot leak into normal style resolution),\nand substituteRandomItemFunction() bails when it is set.\n\nWhether random functions should be allowed outside an element context is an open question\n(https://github.com/w3c/csswg-drafts/issues/10982); this matches random()'s current\nbehavior pending a CSSWG resolution.\n\nTest: imported/w3c/web-platform-tests/css/css-values/random-item-in-container-query.tentative.html\n\n* LayoutTests/imported/w3c/web-platform-tests/css/css-values/random-item-in-container-query.tentative-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-values/random-item-in-container-query.tentative.html: Added.\n* Source/WebCore/style/StyleBuilder.cpp:\n(WebCore::Style::Builder::resolveCustomPropertyForContainerQueries):\n* Source/WebCore/style/StyleBuilderState.h:\n(WebCore::Style::BuilderState::setIsResolvingContainerQueries):\n(WebCore::Style::BuilderState::isResolvingContainerQueries const):\n* Source/WebCore/style/StyleSubstitutionResolver.cpp:\n(WebCore::Style::SubstitutionResolver::substituteRandomItemFunction):\n\nCanonical link: https://commits.webkit.org/318550@main",
      "email": "jpan0917@gmail.com",
      "hash": "b817f195c95ec4f50962f01dfe31c808803f46b8",
      "subject": "[css-values-5 random-item()] random-item() should be disallowed in @container style() queries"
    },
    "318551@main": {
      "author": "Jean-Yves Avenard",
      "avatar": "https://www.gravatar.com/avatar/509313899deeb9262fad8f5e04093f5b?d=identicon\u0026s=64",
      "cl": "318551@main",
      "clUrl": "https://commits.webkit.org/318551@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320412\nrdar://183374036\n\nReviewed by Eric Carlson.\n\nThe test connects the MediaStreamSource to destination then waited a fixed\nsetTimeout(200) before stopping the track. That fixed delay does not guarantee\nthe mock capture audio has reached the destination yet.\nWhen the track stops the WebAudio session is present but the\ncontext was never audible, so isPlayingAudio is false and the category drops to\nAmbientSound — the assertion failed.\n\nInstead of a fixed time, we wait until the page is reporting IsPlayingAudio.\n\n* LayoutTests/fast/mediastream/audio-session-category-capture-audio-context.html:\n* LayoutTests/platform/ios-site-isolation/TestExpectations:\n* LayoutTests/platform/ios/TestExpectations:\n\nCanonical link: https://commits.webkit.org/318551@main",
      "email": "jya@apple.com",
      "hash": "00309e084ae408fc8f3dcd8cff2287cc787b79c4",
      "subject": "audio-session-category-capture-audio-context.html is an intermittent failure"
    },
    "318552@main": {
      "author": "Sergey Rubanov",
      "avatar": "https://www.gravatar.com/avatar/d04164fa4e06ce85533085f24c766e17?d=identicon\u0026s=64",
      "cl": "318552@main",
      "clUrl": "https://commits.webkit.org/318552@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320759\n\nReviewed by Keith Miller.\n\n$vm.toCacheableDictionary and $vm.toUncacheableDictionary passed any\nJSObject into structure dictionary transitions. Wasm GC objects have no\nbutterfly, so that hit RELEASE_ASSERT on WebAssemblyGCStructure. Only\nconvert JSObjectWithButterfly, same as ensureArrayStorage.\n\n* Source/JavaScriptCore/tools/JSDollarVM.cpp:\n(JSC::functionToCacheableDictionary):\n(JSC::functionToUncacheableDictionary):\n* JSTests/wasm/gc/no-gc-structure-transition.js:\n(testDollarVMDictionaryHelpers):\n\nCanonical link: https://commits.webkit.org/318552@main",
      "email": "chi187@gmail.com",
      "hash": "3f0a357ab034b8a52a54619b96255860c1263537",
      "subject": "[JSC] Avoid $vm dictionary transitions on Wasm GC objects"
    },
    "318553@main": {
      "author": "Taher Ali",
      "avatar": "https://www.gravatar.com/avatar/e104800647d8c98b8c9dbe736b5e1751?d=identicon\u0026s=64",
      "cl": "318553@main",
      "clUrl": "https://commits.webkit.org/318553@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320918\nrdar://183950261\n\nReviewed by Chris Dumez.\n\nCachedResourceLoader::cachedResource(const URL\u0026) requires its caller to have\nalready removed the fragment identifier otherwise it asserts.\n\n* Source/WebCore/loader/DocumentLoader.cpp:\n(WebCore::DocumentLoader::subresource const):\n* LayoutTests/http/tests/webarchive/subresource-with-fragment-identifier-expected.txt: Added.\n* LayoutTests/http/tests/webarchive/subresource-with-fragment-identifier.html: Added.\n\nCanonical link: https://commits.webkit.org/318553@main",
      "email": "taher_ali@apple.com",
      "hash": "2502369f53465396d09122b4d4761f76eda161ec",
      "subject": "DocumentLoader::subresource() should remove the fragment identifier before looking up a resource"
    },
    "318554@main": {
      "author": "Carlos Garcia Campos",
      "avatar": "https://www.gravatar.com/avatar/8393f7e76d83c8a147cb852d8fb1a959?d=identicon\u0026s=64",
      "cl": "318554@main",
      "clUrl": "https://commits.webkit.org/318554@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320978\n\nReviewed by Nikolas Zimmermann.\n\nRecording can take a while, if the scrolling thread needs to access the\nlayer while being recorded it has to wait for something that doesn't\nchange the layer state. We can copy the values we need to pass to\nCoordinatedBackingStoreProxy::updateIfNeeded() and release the log\nbefore calling it. This patch also moves the painting code back to\nCoordinatedBackingStoreProxy since nowadays the implementation of record\nand replay is just a single line on code and we avoid passing values\nfrom layer to proxy and then back from proxy to layer.\n\n* Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedBackingStoreProxy.cpp:\n(WebCore::CoordinatedBackingStoreProxy::updateIfNeeded):\n* Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedBackingStoreProxy.h:\n* Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedPlatformLayer.cpp:\n(WebCore::CoordinatedPlatformLayer::updateBackingStore):\n(WebCore::CoordinatedPlatformLayer::threadSafeGrContext const):\n(WebCore::CoordinatedPlatformLayer::paint): Deleted.\n(WebCore::CoordinatedPlatformLayer::record): Deleted.\n(WebCore::CoordinatedPlatformLayer::replay): Deleted.\n* Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedPlatformLayer.h:\n\nCanonical link: https://commits.webkit.org/318554@main",
      "email": "cgarcia@igalia.com",
      "hash": "0fd8ffebbc041b7d302048afbbf1c8ab856ecb5f",
      "subject": "[CoordinatedGraphics] Release the CoordinatedPlatformLayer lock while recording and replaying tiles"
    },
    "318555@main": {
      "author": "Devin Rousso",
      "avatar": "https://www.gravatar.com/avatar/c9e757d973342c773f107a94b70cb9cd?d=identicon\u0026s=64",
      "cl": "318555@main",
      "clUrl": "https://commits.webkit.org/318555@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320949\n\nReviewed by Mike Wyrzykowski.\n\n* Source/WebCore/inspector/agents/InspectorCanvasAgent.cpp:\n(WebCore::InspectorCanvasAgent::consoleStartRecordingCanvas):\n`JSC::JSValue::operator bool` only checks whether a value is empty.\nAn option whose value is `undefined` was treated as present and converted to `NaN`.\n\n* LayoutTests/inspector/canvas/resources/recording-utilities.js:\n* LayoutTests/inspector/canvas/resources/recording-2d.js:\n* LayoutTests/inspector/canvas/console-record-2d.html:\n* LayoutTests/inspector/canvas/console-record-2d-expected.txt:\n\nCanonical link: https://commits.webkit.org/318555@main",
      "email": "hi@devinrousso.com",
      "hash": "7bcf4016df4a19adc8e12a597c7e4be63626fb23",
      "subject": "Web Inspector: Canvas: do not treat missing `console.record()` options as present"
    },
    "318556@main": {
      "author": "Taher Ali",
      "avatar": "https://www.gravatar.com/avatar/e104800647d8c98b8c9dbe736b5e1751?d=identicon\u0026s=64",
      "cl": "318556@main",
      "clUrl": "https://commits.webkit.org/318556@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320376\nrdar://183342502\n\nReviewed by Sam Weinig.\n\ncallsite were comparing findPropertyIndex() against -1 to check\nwhether d was already set, which reads as an index lookup rather than the\npresence test. Use hasProperty which is semantically clearer.\n\nNo behavior change.\n\n* Source/WebCore/css/StyleProperties.h:\n* Source/WebCore/css/StylePropertiesInlines.h:\n(WebCore::StyleProperties::hasProperty const):\n* Source/WebCore/svg/SVGPathElement.cpp:\n(WebCore::SVGPathElement::collectExtraStyleForPresentationalHints):\n\nCanonical link: https://commits.webkit.org/318556@main",
      "email": "taher_ali@apple.com",
      "hash": "b8257f0c45ebeb9d413a7fb44ceb0d52a2efbfd6",
      "subject": "Add StyleProperties::hasProperty"
    },
    "318557@main": {
      "author": "Carlos Garcia Campos",
      "avatar": "https://www.gravatar.com/avatar/8393f7e76d83c8a147cb852d8fb1a959?d=identicon\u0026s=64",
      "cl": "318557@main",
      "clUrl": "https://commits.webkit.org/318557@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=295662\n\nReviewed by Simon Fraser.\n\nA layer clipped by an ancestor in one axis while the other axis stays\noverflow:visible has a semi-infinite clip rect: finite in one axis and\nunbounded (near LayoutUnit::max) in the other, produced by\nexpandToInfiniteX/Y(). RenderLayer::calculateLayerBounds() was returning\nthe semi-infinite rectangle that caused a wrong cover rect being\ncomputed in CoordinatedBackingStoreProxy::createOrDestroyTiles() for\ncoordinated graphics based ports. With an empty cover rect we basically\nstopped producing new tiles for the layer, which caused that contents\nwere not rendered in GitLab diff page after scrolling down a bit.\n\nThis patch clips again passing the document rectangle as constraining\nrectangle to clipRectRelativeToAncestor(), like selfClipRect() does,\nto ensure we return a finite rectangle.\n\nTest: compositing/geometry/composited-bounds-with-single-axis-clip.html\n\n* LayoutTests/compositing/geometry/composited-bounds-with-single-axis-clip-expected.txt: Added.\n* LayoutTests/compositing/geometry/composited-bounds-with-single-axis-clip.html: Added.\n* Source/WebCore/platform/graphics/LayoutRect.h:\n(WebCore::LayoutRect::renderableInfiniteRect):\n(WebCore::LayoutRect::infiniteRect):\n* Source/WebCore/rendering/RenderLayer.cpp:\n(WebCore::RenderLayer::calculateClipRects const):\n* Source/WebCore/rendering/RenderLayerCompositor.cpp:\n(WebCore::RenderLayerCompositor::computeAncestorClippingStack const):\n\nCanonical link: https://commits.webkit.org/318557@main",
      "email": "cgarcia@igalia.com",
      "hash": "a727aa27c537e8ba89d35f20cd35dc033a6e358e",
      "subject": "[GTK][WPE] Content view broken on GitLab"
    },
    "318558@main": {
      "author": "Sam Weinig",
      "avatar": "https://www.gravatar.com/avatar/354b409240f9fb3357f498c547423d96?d=identicon\u0026s=64",
      "cl": "318558@main",
      "clUrl": "https://commits.webkit.org/318558@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320921\n\nReviewed by Antti Koivisto.\n\nRefactor `lh` and `rlh` unit resolution to share the same implementation\n(like the other font-relative units) and to use unzoomed / specified values.\n\nThe refactor revealed that we were only setting one of the two line-height\ncomputed style data members during animations, so this was fixed as well.\n\nTest: imported/w3c/web-platform-tests/css/css-viewport/zoom/line-height-computed.html\n* LayoutTests/imported/w3c/web-platform-tests/css/css-transitions/properties-value-inherit-001-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-viewport/zoom/line-height-computed-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-viewport/zoom/line-height-computed.html: Added.\n* Source/WebCore/css/CSSProperties.json:\n* Source/WebCore/style/computed/StyleComputedStyleBase.cpp:\n* Source/WebCore/style/computed/StyleComputedStyleBase.h:\n* Source/WebCore/style/values/primitives/StyleLengthResolution.cpp:\n\nCanonical link: https://commits.webkit.org/318558@main",
      "email": "sam@webkit.org",
      "hash": "badd29074be777b8d710099a0d478211333a227c",
      "subject": "[EvaluationTimeZoom] Line-height units don't work correctly with zoom"
    },
    "318559@main": {
      "author": "Ahmad Saleem",
      "avatar": "https://www.gravatar.com/avatar/38445f84fe28aa19bfeb1f59f6559532?d=identicon\u0026s=64",
      "cl": "318559@main",
      "clUrl": "https://commits.webkit.org/318559@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320834\nrdar://183853962\n\nReviewed by Taher Ali.\n\nUpstream commit: https://github.com/web-platform-tests/wpt/commit/5571fcea703e6a567e714aed82670749d6064c6e\n\n* LayoutTests/TestExpectations:\n* LayoutTests/imported/w3c/resources/resource-files.json:\n* LayoutTests/imported/w3c/web-platform-tests/svg/animations/WEB_FEATURES.yml:\n* LayoutTests/imported/w3c/web-platform-tests/svg/animations/animate-pathLength.tentative-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/svg/animations/animate-pathLength.tentative.html:\n* LayoutTests/imported/w3c/web-platform-tests/svg/animations/crashtests/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/svg/animations/reference/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/svg/animations/scripted/smil-values-empty-segments.html:\n* LayoutTests/imported/w3c/web-platform-tests/svg/animations/scripted/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/svg/animations/support/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/svg/animations/svgintegeroptionalinteger-animation-invalid-value-2.html:\n* LayoutTests/imported/w3c/web-platform-tests/svg/animations/svgnumber-animation-invalid-value-2.html:\n* LayoutTests/imported/w3c/web-platform-tests/svg/animations/svgnumber-to-animation-valid-value-1.html:\n* LayoutTests/imported/w3c/web-platform-tests/svg/animations/svgnumberoptionalnumber-animation-invalid-value-2.html:\n* LayoutTests/imported/w3c/web-platform-tests/svg/animations/svgpath-animation-invalid-value-2.html:\n* LayoutTests/imported/w3c/web-platform-tests/svg/animations/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/svg/as-image/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/svg/coordinate-systems/SVGTransformList.consolidate-01-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/svg/coordinate-systems/SVGTransformList.consolidate-01.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/svg/coordinate-systems/SVGTransformList.list-01-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/svg/coordinate-systems/SVGTransformList.list-01.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/svg/coordinate-systems/SVGTransformList.list-02-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/svg/coordinate-systems/SVGTransformList.list-02.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/svg/coordinate-systems/WEB_FEATURES.yml:\n* LayoutTests/imported/w3c/web-platform-tests/svg/coordinate-systems/support/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/svg/coordinate-systems/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/svg/crashtests/image-dispatch-event-on-destruct.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/svg/crashtests/support/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/svg/crashtests/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/svg/embedded/WEB_FEATURES.yml:\n* LayoutTests/imported/w3c/web-platform-tests/svg/embedded/attr-image-fetchpriority.optional-expected.txt: Renamed from LayoutTests/imported/w3c/web-platform-tests/svg/embedded/attr-image-fetchpriority-expected.txt.\n* LayoutTests/imported/w3c/web-platform-tests/svg/embedded/attr-image-fetchpriority.optional.html: Renamed from LayoutTests/imported/w3c/web-platform-tests/svg/embedded/attr-image-fetchpriority.html.\n* LayoutTests/imported/w3c/web-platform-tests/svg/embedded/reference/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/svg/embedded/support/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/svg/embedded/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/svg/extensibility/foreignObject/WEB_FEATURES.yml:\n* LayoutTests/imported/w3c/web-platform-tests/svg/extensibility/foreignObject/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/svg/extensibility/interfaces/WEB_FEATURES.yml:\n* LayoutTests/imported/w3c/web-platform-tests/svg/extensibility/interfaces/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/svg/fonts/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/svg/geometry/animations/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/svg/geometry/parsing/WEB_FEATURES.yml:\n* LayoutTests/imported/w3c/web-platform-tests/svg/geometry/parsing/support/w3c-import.log: Copied from LayoutTests/imported/w3c/web-platform-tests/svg/text/w3c-import.log.\n* LayoutTests/imported/w3c/web-platform-tests/svg/geometry/parsing/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/svg/geometry/reftests/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/svg/geometry/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/svg/import/WEB_FEATURES.yml:\n* LayoutTests/imported/w3c/web-platform-tests/svg/import/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/svg/import/woffs/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/svg/interact/parsing/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/svg/interact/resources/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/svg/interact/scripted/WEB_FEATURES.yml:\n* LayoutTests/imported/w3c/web-platform-tests/svg/interact/scripted/resources/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/svg/interact/scripted/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/svg/interact/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/svg/layout/svg-with-percent-dimensions-relayout-expected.html: Renamed from LayoutTests/imported/w3c/web-platform-tests/svg/layout/svg-with-precent-dimensions-relayout-expected.html.\n* LayoutTests/imported/w3c/web-platform-tests/svg/layout/svg-with-percent-dimensions-relayout-ref.html: Renamed from LayoutTests/imported/w3c/web-platform-tests/svg/layout/svg-with-precent-dimensions-relayout-ref.html.\n* LayoutTests/imported/w3c/web-platform-tests/svg/layout/svg-with-percent-dimensions-relayout.html: Renamed from LayoutTests/imported/w3c/web-platform-tests/svg/layout/svg-with-precent-dimensions-relayout.html.\n* LayoutTests/imported/w3c/web-platform-tests/svg/layout/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/svg/linking/reftests/WEB_FEATURES.yml:\n* LayoutTests/imported/w3c/web-platform-tests/svg/linking/reftests/media-fragment-spatial-percent-no-natural-size-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/svg/linking/reftests/media-fragment-spatial-percent-no-natural-size.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/svg/linking/reftests/media-fragment-spatial-percent-viewbox-no-size-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/svg/linking/reftests/media-fragment-spatial-percent-viewbox-no-size.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/svg/linking/reftests/media-fragment-spatial-percent-zero-size.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/svg/linking/reftests/reference/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/svg/linking/reftests/support/red-green-no-natural-size.svg: Added.\n* LayoutTests/imported/w3c/web-platform-tests/svg/linking/reftests/support/red-green-viewbox-no-size.svg: Added.\n* LayoutTests/imported/w3c/web-platform-tests/svg/linking/reftests/support/red-green-zero-size.svg: Added.\n* LayoutTests/imported/w3c/web-platform-tests/svg/linking/reftests/support/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/svg/linking/reftests/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/svg/linking/scripted/WEB_FEATURES.yml:\n* LayoutTests/imported/w3c/web-platform-tests/svg/linking/scripted/a.hyperlink-getter-01-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/svg/linking/scripted/a.hyperlink-getter-01.svg: Added.\n* LayoutTests/imported/w3c/web-platform-tests/svg/linking/scripted/resources/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/svg/linking/scripted/testScripts/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/svg/linking/scripted/use-iframe-crash.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/svg/linking/scripted/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/svg/painting/WEB_FEATURES.yml:\n* LayoutTests/imported/w3c/web-platform-tests/svg/painting/animations/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/svg/painting/inline-svg-resize-viewport-dependent-mask-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/svg/painting/inline-svg-resize-viewport-dependent-mask-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/svg/painting/inline-svg-resize-viewport-dependent-mask.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/svg/painting/parsing/WEB_FEATURES.yml:\n* LayoutTests/imported/w3c/web-platform-tests/svg/painting/parsing/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/svg/painting/reftests/WEB_FEATURES.yml:\n* LayoutTests/imported/w3c/web-platform-tests/svg/painting/reftests/marker-path-001.svg:\n* LayoutTests/imported/w3c/web-platform-tests/svg/painting/reftests/non-scaling-stroke-008-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/svg/painting/reftests/non-scaling-stroke-008.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/svg/painting/reftests/support/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/svg/painting/reftests/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/svg/painting/scripted/WEB_FEATURES.yml:\n* LayoutTests/imported/w3c/web-platform-tests/svg/painting/scripted/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/svg/painting/support/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/svg/painting/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/svg/path/animations/path-length-interpolation.tentative-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/svg/path/animations/path-length-interpolation.tentative.html:\n* LayoutTests/imported/w3c/web-platform-tests/svg/path/animations/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/svg/path/bearing/WEB_FEATURES.yml:\n* LayoutTests/imported/w3c/web-platform-tests/svg/path/bearing/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/svg/path/closepath/segment-completing-expected.svg: Removed.\n* LayoutTests/imported/w3c/web-platform-tests/svg/path/closepath/segment-completing-ref.svg: Removed.\n* LayoutTests/imported/w3c/web-platform-tests/svg/path/closepath/segment-completing.svg: Removed.\n* LayoutTests/imported/w3c/web-platform-tests/svg/path/closepath/w3c-import.log: Removed.\n* LayoutTests/imported/w3c/web-platform-tests/svg/path/distance/path-length-css-overrides-presentation-attribute.tentative.svg:\n* LayoutTests/imported/w3c/web-platform-tests/svg/path/distance/path-length-css-property.tentative.svg:\n* LayoutTests/imported/w3c/web-platform-tests/svg/path/distance/path-length-css-zero.tentative.svg:\n* LayoutTests/imported/w3c/web-platform-tests/svg/path/distance/path-length-css-zoom-ref.tentative.svg: Copied from LayoutTests/imported/w3c/web-platform-tests/svg/path/distance/path-length-css-property.tentative.svg.\n* LayoutTests/imported/w3c/web-platform-tests/svg/path/distance/path-length-css-zoom.tentative-expected.svg: Copied from LayoutTests/imported/w3c/web-platform-tests/svg/path/distance/path-length-css-property.tentative.svg.\n* LayoutTests/imported/w3c/web-platform-tests/svg/path/distance/path-length-css-zoom.tentative.svg: Copied from LayoutTests/imported/w3c/web-platform-tests/svg/path/distance/path-length-css-property.tentative.svg.\n* LayoutTests/imported/w3c/web-platform-tests/svg/path/distance/reference/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/svg/path/distance/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/svg/path/error-handling/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/svg/path/interfaces/SVGPathSegment-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/svg/path/interfaces/SVGPathSegment.svg:\n* LayoutTests/imported/w3c/web-platform-tests/svg/path/interfaces/setPathData-css-d.tentative-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/svg/path/interfaces/setPathData-css-d.tentative.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/svg/path/interfaces/setPathData-during-animation-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/svg/path/interfaces/setPathData-during-animation.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/svg/path/interfaces/setPathData-malformed-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/svg/path/interfaces/setPathData-malformed.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/svg/path/interfaces/setPathData-mutation-observer-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/svg/path/interfaces/setPathData-mutation-observer.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/svg/path/interfaces/setPathData-overrides-d-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/svg/path/interfaces/setPathData-overrides-d.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/svg/path/interfaces/setPathData-plain-object-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/svg/path/interfaces/setPathData-plain-object.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/svg/path/interfaces/setPathData-segment-types-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/svg/path/interfaces/setPathData-segment-types.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/svg/path/interfaces/support/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/svg/path/interfaces/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/svg/path/parsing/path-length-computed.tentative-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/svg/path/parsing/path-length-computed.tentative.svg:\n* LayoutTests/imported/w3c/web-platform-tests/svg/path/parsing/path-length-invalid.tentative-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/svg/path/parsing/path-length-invalid.tentative.svg:\n* LayoutTests/imported/w3c/web-platform-tests/svg/path/parsing/path-length-valid.tentative-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/svg/path/parsing/path-length-valid.tentative.svg:\n* LayoutTests/imported/w3c/web-platform-tests/svg/path/parsing/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/svg/path/property/inheritance.tentative.svg:\n* LayoutTests/imported/w3c/web-platform-tests/svg/path/property/resources/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/svg/path/property/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/svg/path/reftests/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/svg/print/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/svg/pservers/parsing/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/svg/pservers/reftests/WEB_FEATURES.yml:\n* LayoutTests/imported/w3c/web-platform-tests/svg/pservers/reftests/reference/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/svg/pservers/reftests/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/svg/pservers/scripted/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/svg/pservers/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/svg/render/WEB_FEATURES.yml:\n* LayoutTests/imported/w3c/web-platform-tests/svg/render/order/WEB_FEATURES.yml:\n* LayoutTests/imported/w3c/web-platform-tests/svg/render/order/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/svg/render/reftests/WEB_FEATURES.yml:\n* LayoutTests/imported/w3c/web-platform-tests/svg/render/reftests/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/svg/render/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/svg/resources/w3c-import.log: Copied from LayoutTests/imported/w3c/web-platform-tests/svg/text/w3c-import.log.\n* LayoutTests/imported/w3c/web-platform-tests/svg/scripted/WEB_FEATURES.yml:\n* LayoutTests/imported/w3c/web-platform-tests/svg/scripted/attr-script-fetchpriority.optional-expected.txt: Renamed from LayoutTests/imported/w3c/web-platform-tests/svg/scripted/attr-script-fetchpriority-expected.txt.\n* LayoutTests/imported/w3c/web-platform-tests/svg/scripted/attr-script-fetchpriority.optional.html: Renamed from LayoutTests/imported/w3c/web-platform-tests/svg/scripted/attr-script-fetchpriority.html.\n* LayoutTests/imported/w3c/web-platform-tests/svg/scripted/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/svg/shapes/WEB_FEATURES.yml:\n* LayoutTests/imported/w3c/web-platform-tests/svg/shapes/reftests/WEB_FEATURES.yml:\n* LayoutTests/imported/w3c/web-platform-tests/svg/shapes/reftests/reference/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/svg/shapes/reftests/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/svg/shapes/scripted/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/svg/shapes/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/svg/struct/WEB_FEATURES.yml:\n* LayoutTests/imported/w3c/web-platform-tests/svg/struct/crashtests/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/svg/struct/reftests/WEB_FEATURES.yml:\n* LayoutTests/imported/w3c/web-platform-tests/svg/struct/reftests/image-symbol-expected.svg: Added.\n* LayoutTests/imported/w3c/web-platform-tests/svg/struct/reftests/image-symbol.svg: Added.\n* LayoutTests/imported/w3c/web-platform-tests/svg/struct/reftests/reference/symbol-not-rendered.svg: Added.\n* LayoutTests/imported/w3c/web-platform-tests/svg/struct/reftests/reference/use-external-use-ref.svg: Added.\n* LayoutTests/imported/w3c/web-platform-tests/svg/struct/reftests/reference/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/svg/struct/reftests/support/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/svg/struct/reftests/use-external-use-expected.svg: Added.\n* LayoutTests/imported/w3c/web-platform-tests/svg/struct/reftests/use-external-use.svg: Added.\n* LayoutTests/imported/w3c/web-platform-tests/svg/struct/reftests/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/svg/struct/scripted/support/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/svg/struct/scripted/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/svg/struct/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/svg/styling/css-linked-parameters/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/svg/styling/glyph-orientation-horizontal.historical-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/svg/styling/glyph-orientation-horizontal.historical.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/svg/styling/invalidation/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/svg/styling/nested-svg-sizing-calc-size.tentative-expected.svg:\n* LayoutTests/imported/w3c/web-platform-tests/svg/styling/nested-svg-sizing-calc-size.tentative.svg:\n* LayoutTests/imported/w3c/web-platform-tests/svg/styling/nested-svg-sizing-fit-content.tentative-expected.svg:\n* LayoutTests/imported/w3c/web-platform-tests/svg/styling/nested-svg-sizing-fit-content.tentative.svg:\n* LayoutTests/imported/w3c/web-platform-tests/svg/styling/nested-svg-sizing-max-content.tentative-expected.svg:\n* LayoutTests/imported/w3c/web-platform-tests/svg/styling/nested-svg-sizing-max-content.tentative.svg:\n* LayoutTests/imported/w3c/web-platform-tests/svg/styling/nested-svg-sizing-min-content.tentative-expected.svg:\n* LayoutTests/imported/w3c/web-platform-tests/svg/styling/nested-svg-sizing-min-content.tentative.svg:\n* LayoutTests/imported/w3c/web-platform-tests/svg/styling/nested-svg-sizing-stretch.tentative-expected.svg:\n* LayoutTests/imported/w3c/web-platform-tests/svg/styling/nested-svg-sizing-stretch.tentative.svg:\n* LayoutTests/imported/w3c/web-platform-tests/svg/styling/presentation-attributes-special-cases-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/svg/styling/presentation-attributes-special-cases.html:\n* LayoutTests/imported/w3c/web-platform-tests/svg/styling/render/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/svg/styling/support/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/svg/styling/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/svg/svg-in-svg/WEB_FEATURES.yml:\n* LayoutTests/imported/w3c/web-platform-tests/svg/svg-in-svg/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/svg/text/crashtests/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/svg/text/parsing/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/svg/text/reftests/WEB_FEATURES.yml:\n* LayoutTests/imported/w3c/web-platform-tests/svg/text/reftests/textpath-pathlength-css-display-none.tentative.svg:\n* LayoutTests/imported/w3c/web-platform-tests/svg/text/reftests/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/svg/text/scripted/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/svg/text/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/svg/top-level-document/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/svg/types/elements/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/svg/types/scripted/SVGAnimatedRect.html:\n* LayoutTests/imported/w3c/web-platform-tests/svg/types/scripted/WEB_FEATURES.yml:\n* LayoutTests/imported/w3c/web-platform-tests/svg/types/scripted/resources/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/svg/types/scripted/support/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/svg/types/scripted/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/svg/types/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/svg/w3c-import.log:\n* LayoutTests/platform/gtk/TestExpectations:\n* LayoutTests/platform/mac/imported/w3c/web-platform-tests/svg/linking/reftests/media-fragment-spatial-percent-zero-size-expected.txt: Added.\n\nCanonical link: https://commits.webkit.org/318559@main",
      "email": "ahmad.saleem792+github@gmail.com",
      "hash": "d40139503cf1c1ad155fda48b07cf93ad5e3fd27",
      "subject": "Resync `svg` from WPT Upstream"
    },
    "318560@main": {
      "author": "Jessica Cheung",
      "avatar": "https://www.gravatar.com/avatar/5c102f093ce6bc01424466a4cfdf1d1f?d=identicon\u0026s=64",
      "cl": "318560@main",
      "clUrl": "https://commits.webkit.org/318560@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320958\nrdar://183986548\n\nReviewed by Richard Robinson.\n\nThe enums resizes-visual, resizes-content, and overlays-content\nare currently part of the enum class \"InteractiveWidget\". However,\nthese are technically values that the interactive-widget property\ncan have, so naming them as InteractiveWidget is misleading in the\nsense that they are not interactive widgets (such as a virtual\nkeyboard).\n\nThus to prevent confusion, rename the enum class among other variables\nto \"InteractiveWidgetValue\" instead.\n\n* Source/WebCore/dom/ViewportArguments.cpp:\n(WebCore::ViewportArguments::resolve const):\n(WebCore::parseInteractiveWidgetValue):\n(WebCore::setViewportFeature):\n* Source/WebCore/dom/ViewportArguments.h:\n(WebCore::ViewportArguments::ViewportArguments):\n(WebCore::ViewportArguments::operator== const):\n* Source/WebKit/Shared/RemoteLayerTree/RemoteLayerTree.serialization.in:\n* Source/WebKit/Shared/RemoteLayerTree/RemoteLayerTreeCommitBundle.h:\n* Source/WebKit/Shared/WebCoreArgumentCoders.serialization.in:\n* Source/WebKit/UIProcess/API/Cocoa/WKWebViewInternal.h:\n* Source/WebKit/UIProcess/API/ios/WKWebViewIOS.h:\n* Source/WebKit/UIProcess/API/ios/WKWebViewIOS.mm:\n(-[WKWebView _dispatchSetViewLayoutSize:]):\n(-[WKWebView _inputViewBoundsForViewportCalculations]):\n(-[WKWebView _viewportMetaTagInteractiveWidget]):\n(-[WKWebView _keyboardChangedWithInfo:adjustScrollView:]):\n* Source/WebKit/UIProcess/PageClient.h:\n* Source/WebKit/UIProcess/ios/PageClientImplIOS.h:\n* Source/WebKit/UIProcess/ios/PageClientImplIOS.mm:\n(WebKit::PageClientImpl::viewportMetaTagInteractiveWidget const):\n* Source/WebKit/UIProcess/ios/WebPageProxyIOS.mm:\n(WebKit::WebPageProxy::computeLayoutViewportRect const):\n* Source/WebKit/WebProcess/WebPage/Cocoa/WebPageCocoa.mm:\n(WebKit::WebPage::willCommitMainFrameData):\n\nCanonical link: https://commits.webkit.org/318560@main",
      "email": "jcheung23@apple.com",
      "hash": "58270b569f11642358a4a1df1f8944a594cdba47",
      "subject": "[interactive-widget] Refactor InteractiveWidget to InteractiveWidgetValue"
    },
    "318561@main": {
      "author": "Alan Baradlay",
      "avatar": "https://www.gravatar.com/avatar/788d66417db806c567552cfa1ae89f77?d=identicon\u0026s=64",
      "cl": "318561@main",
      "clUrl": "https://commits.webkit.org/318561@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=192980\n\u003crdar://problem/159277763\u003e\n\nReviewed by Antti Koivisto.\n\nAn outside list marker is currently reparented into whichever descendant holds\nthe list item's first line box, so an overflow, clip or transform on that\ndescendant makes the marker disappear or get clipped.\n\nKeep the marker as the list item's first child instead, take it out of in-flow layout, and position it\nafter layout against the line it aligns with. Gated behind ListMarkerPositionedPostLayoutEnabled.\n\nThe line still has to make room for the marker, so line layout is handed its\nlayout bounds and grows the root inline box's layout bounds by them, which is\nwhat a real marker inline level box would have contributed.\n\nRenderListItem positions the marker once its in-flow content is laid out, since only then is every box between the line and\nthe list item in its final position, and adds the marker's overflow at that point.\n\n* Source/WTF/Scripts/Preferences/UnifiedWebPreferences.yaml:\n* Source/WebCore/layout/formattingContexts/inline/InlineLayoutState.h:\n(WebCore::Layout::InlineLayoutState::setExcludedMarkerLayoutBounds):\n  The marker is no part of the inline content, so the room it needs\n  on the line has to be handed in from the integration layer.\n\n* Source/WebCore/layout/formattingContexts/inline/InlineLineBoxBuilder.cpp:\n(WebCore::Layout::LineBoxBuilder::build): Only the first formatted line is one a marker aligns with.\n(WebCore::Layout::LineBoxBuilder::buildForRootInlineBoxOnly): A line with no inline content still aligns a marker, so it needs the same room.\n(WebCore::Layout::LineBoxBuilder::stretchRootInlineBoxForExcludedMarkers const):\n  The marker no longer contributes to the line as an inline level box,\n  so without this the line would be too short and the marker would stick out of it.\n\n* Source/WebCore/layout/formattingContexts/inline/InlineLineBoxBuilder.h:\n* Source/WebCore/layout/integration/LayoutIntegrationBoxTreeUpdater.cpp:\n(WebCore::LayoutIntegration::BoxTreeUpdater::buildTreeForInlineContent):\n  Catch an excluded marker reaching the inline layout box tree here\n  rather than as a null layout box further down.\n\n* Source/WebCore/layout/integration/inline/LayoutIntegrationLineLayout.cpp:\n(WebCore::LayoutIntegration::LineLayout::excludedMarkersForFirstFormattedLine):\n  Has to run before layout so the marker layout bounds are in the layout state by the time the line box is built.\n(WebCore::LayoutIntegration::LineLayout::setExcludedMarkerPositions):\n  The line geometry the marker aligns with is only known once the display content is built,\n  and it is not exposed outside line layout.\n\n(WebCore::LayoutIntegration::LineLayout::layout): Collect before layout, position after the content is constructed.\n* Source/WebCore/layout/integration/inline/LayoutIntegrationLineLayout.h:\n* Source/WebCore/page/LocalFrameViewLayoutContext.cpp:\n(WebCore::ListItemExcludedMarkerScope::ListItemExcludedMarkerScope):\n  A descendant list item lays out inside its ancestor's layout and the line it produces may be the ancestor's first formatted line too,\n  so both markers have to be visible to whichever formatting context runs. Hence a stack.\n\n(WebCore::ListItemExcludedMarkerScope::~ListItemExcludedMarkerScope):\n* Source/WebCore/page/LocalFrameViewLayoutContext.h:\n* Source/WebCore/rendering/RenderBlock.cpp:\n(WebCore::RenderBlock::paintChild): RenderListItem paints the marker itself, so the normal child walk has to skip it.\n(WebCore::RenderBlock::firstLineBaseline const):\n(WebCore::RenderBlock::lastLineBaseline const):\n  The marker is not in-flow content and must not supply the block's baseline,\n  which it otherwise would as the first child.\n\n* Source/WebCore/rendering/RenderBox.cpp:\n(WebCore::RenderBox::addOverflowFromInFlowChildren):\n  The marker has no position yet at this point,\n  so the list item adds its overflow after placing it.\n\n* Source/WebCore/rendering/RenderListItem.cpp:\n(WebCore::markerSearchBoxType):\n(WebCore::excludedMarkerLogicalLeftOffsetFor):\n  Line layout placed the marker as if it belonged to the block holding the line,\n  so the distance back to the list item has to be added.\n\n(WebCore::RenderListItem::updateValue):\n(WebCore::RenderListItem::styleDidChange):\n  The marker text changed, so the line that reserved room for it has to run again.\n\n(WebCore::RenderListItem::excludedMarker const):\n  A marker is only excluded while it is outside and actually our own child;\n  everything else stays on the existing codepath, so the conditions live in one accessor.\n\n(WebCore::RenderListItem::layoutBlock):\n  Only once our in-flow content is laid out is every box between the line and us in its final position.\n\n(WebCore::RenderListItem::layoutExcludedChildren):\n  The marker is laid out out of in-flow order so the line can ask for its bounds,\n  and a size change invalidates the line that reserved room for it.\n\n(WebCore::RenderListItem::paintObject):\n(WebCore::RenderListItem::placeExcludedMarker):\n  Walks from the line back to us because the position line layout produced is relative\n  to the block that holds the line.\n(\nWebCore::RenderListItem::firstFormattedLineRootFor):\n  The single definition of which block the marker aligns with.\n  Moved off the tree builder so the render tree and line layout answer the question the same way.\n\n(WebCore::RenderListItem::excludedMarkersForContainer):\n(WebCore::RenderListItem::firstFormattedLineRootFor):\n* Source/WebCore/rendering/RenderListItem.h:\n* Source/WebCore/rendering/RenderListMarker.cpp:\n(WebCore::RenderListMarker::listItem const):\n(WebCore::RenderListMarker::setExcludedPosition):\n(WebCore::RenderListMarker::invalidateExcludedMarkerContainer):\n  The container is held weakly and may already be gone while the tree is torn down,\n  in which case dropping the stale position is all there is to do.\n\n* Source/WebCore/rendering/RenderListMarker.h:\n* Source/WebCore/rendering/RenderObject.cpp:\n(WebCore::RenderObject::isExcludedMarker const):\n* Source/WebCore/rendering/RenderObject.h:\n* Source/WebCore/rendering/updating/RenderTreeBuilder.cpp:\n(WebCore::getInlineRun):\n(WebCore::RenderTreeBuilder::createAnonymousWrappersForInlineContent):\n* Source/WebCore/rendering/updating/RenderTreeBuilderBlock.cpp:\n(WebCore::isExcludedMarker): attach() is the only code that decides between a direct child and an anonymous block wrapper.\n(WebCore::RenderTreeBuilder::Block::attach):\n  An excluded marker matches either way, so it stays a direct child\n  of the list item whatever the other children are.\n\n* Source/WebCore/rendering/updating/RenderTreeBuilderList.cpp:\n(WebCore::firstNonMarkerChild):\n(WebCore::RenderTreeBuilder::List::List):\n(WebCore::markerNeedsOwnLine):\n(WebCore::parentCandidateForMarker):\n(WebCore::RenderTreeBuilder::List::updateItemMarker):\n  A list-style-position change moves the marker between two structurally different placements and\n  attach() is not consulted when the parent happens to be unchanged, so rebuild rather than patch it in place.\n\n(WebCore::findParentOfEmptyOrFirstLineBox): Deleted. Moved to RenderListItem::firstFormattedLineRootFor.\n* Source/WebCore/rendering/updating/RenderTreeBuilderList.h:\n* Source/WebCore/rendering/updating/RenderTreeBuilderMultiColumn.cpp:\n(WebCore::RenderTreeBuilder::MultiColumn::createFragmentedFlow):\n  The marker has to stay our child to be positioned after layout, and moveChildren() would have swept it into the flow thread.\n* LayoutTests/TestExpectations:\n* LayoutTests/css2.1/t0805-c5519-brdr-r-02-e-expected.txt:\n* LayoutTests/css2.1/t0805-c5521-brdr-l-02-e-expected.txt:\n* LayoutTests/editing/execCommand/create-list-with-hr-expected.txt:\n* LayoutTests/fast/css-generated-content/table-row-group-with-before-expected.txt:\n* LayoutTests/fast/css-generated-content/table-row-with-before-expected.txt:\n* LayoutTests/fast/css-generated-content/table-with-before-expected.txt:\n* LayoutTests/fast/css/background-shorthand-invalid-url-expected.txt:\n* LayoutTests/fast/lists/006-expected.txt:\n* LayoutTests/fast/lists/list-marker-before-content-table-expected.txt:\n* LayoutTests/fast/lists/list-marker-follows-dynamically-moved-line-expected.html: Added.\n* LayoutTests/fast/lists/list-marker-follows-dynamically-moved-line.html: Added.\n* LayoutTests/fast/lists/overlapping-nested-list-markers-rtl-expected.html: Added.\n* LayoutTests/fast/lists/overlapping-nested-list-markers-rtl.html: Added.\n* LayoutTests/fast/repaint/list-marker-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-lists/li-with-overflow-hidden-change-list-style-position-001.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-lists/list-and-writing-mode-001-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-lists/outside-marker-after-empty-writing-mode-root-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-lists/outside-marker-after-empty-writing-mode-root-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-lists/outside-marker-after-empty-writing-mode-root.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-lists/outside-marker-container-becomes-boundary-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-lists/outside-marker-container-becomes-boundary-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-lists/outside-marker-container-becomes-boundary.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-lists/outside-marker-container-changed-by-float-style-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-lists/outside-marker-container-changed-by-float-style-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-lists/outside-marker-container-changed-by-float-style.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-lists/outside-marker-container-changed-by-inline-content-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-lists/outside-marker-container-changed-by-inline-content-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-lists/outside-marker-container-changed-by-inline-content.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-lists/outside-marker-container-changed-by-inserted-block-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-lists/outside-marker-container-changed-by-inserted-block-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-lists/outside-marker-container-changed-by-inserted-block.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-lists/outside-marker-container-changed-by-inserted-text-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-lists/outside-marker-container-changed-by-inserted-text-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-lists/outside-marker-container-changed-by-inserted-text.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-lists/outside-marker-container-changed-in-nested-block-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-lists/outside-marker-container-changed-in-nested-block-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-lists/outside-marker-container-changed-in-nested-block.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-lists/outside-marker-container-moves-deeper-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-lists/outside-marker-container-moves-deeper-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-lists/outside-marker-container-moves-deeper.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-lists/outside-marker-container-removed-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-lists/outside-marker-container-removed-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-lists/outside-marker-container-removed.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-lists/outside-marker-from-inside-position-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-lists/outside-marker-from-inside-position-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-lists/outside-marker-from-inside-position.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-lists/outside-marker-list-item-becomes-multicol-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-lists/outside-marker-list-item-becomes-multicol-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-lists/outside-marker-list-item-becomes-multicol.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-lists/outside-marker-multicol-destroyed-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-lists/outside-marker-multicol-destroyed-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-lists/outside-marker-multicol-destroyed.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-lists/outside-marker-nested-shared-container-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-lists/outside-marker-nested-shared-container-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-lists/outside-marker-nested-shared-container.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-lists/outside-marker-rtl-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-lists/outside-marker-rtl-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-lists/outside-marker-rtl.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-lists/outside-marker-skips-out-of-flow-first-child-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-lists/outside-marker-skips-out-of-flow-first-child-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-lists/outside-marker-skips-out-of-flow-first-child.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-lists/outside-marker-with-hr-content-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-lists/outside-marker-with-hr-content-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-lists/outside-marker-with-hr-content.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-multicol/multicol-list-item-006.html:\n* LayoutTests/platform/glib/css1/basic/contextual_selectors-expected.txt:\n* LayoutTests/platform/glib/css1/box_properties/border_bottom-expected.txt:\n* LayoutTests/platform/glib/css1/box_properties/border_left-expected.txt:\n* LayoutTests/platform/glib/css1/box_properties/border_right_inline-expected.txt:\n* LayoutTests/platform/glib/css1/box_properties/border_top-expected.txt:\n* LayoutTests/platform/glib/css1/cascade/cascade_order-expected.txt:\n* LayoutTests/platform/glib/css1/pseudo/anchor-expected.txt:\n* LayoutTests/platform/glib/css2.1/t0805-c5518-brdr-t-01-e-expected.txt:\n* LayoutTests/platform/glib/css2.1/t0805-c5519-brdr-r-02-e-expected.txt:\n* LayoutTests/platform/glib/css2.1/t0805-c5520-brdr-b-01-e-expected.txt:\n* LayoutTests/platform/glib/css2.1/t0805-c5521-brdr-l-02-e-expected.txt:\n* LayoutTests/platform/glib/editing/execCommand/create-list-with-hr-expected.txt:\n* LayoutTests/platform/glib/fast/css-generated-content/table-row-group-with-before-expected.txt:\n* LayoutTests/platform/glib/fast/css-generated-content/table-row-with-before-expected.txt:\n* LayoutTests/platform/glib/fast/css-generated-content/table-with-before-expected.txt:\n* LayoutTests/platform/glib/fast/css/background-shorthand-invalid-url-expected.txt:\n* LayoutTests/platform/glib/fast/css/empty-pseudo-class-expected.txt:\n* LayoutTests/platform/glib/fast/css/first-child-pseudo-class-expected.txt:\n* LayoutTests/platform/glib/fast/css/first-of-type-pseudo-class-expected.txt:\n* LayoutTests/platform/glib/fast/css/last-child-pseudo-class-expected.txt:\n* LayoutTests/platform/glib/fast/css/last-of-type-pseudo-class-expected.txt:\n* LayoutTests/platform/glib/fast/css/only-child-pseudo-class-expected.txt:\n* LayoutTests/platform/glib/fast/css/only-of-type-pseudo-class-expected.txt:\n* LayoutTests/platform/glib/fast/doctypes/002-expected.txt:\n* LayoutTests/platform/glib/fast/forms/form-hides-table-expected.txt:\n* LayoutTests/platform/glib/fast/lists/001-expected.txt:\n* LayoutTests/platform/glib/fast/lists/001-vertical-expected.txt:\n* LayoutTests/platform/glib/fast/lists/006-expected.txt:\n* LayoutTests/platform/glib/fast/lists/006-vertical-expected.txt:\n* LayoutTests/platform/glib/fast/lists/ordered-list-with-no-ol-tag-expected.txt:\n* LayoutTests/platform/glib/fast/repaint/list-marker-expected.txt:\n* LayoutTests/platform/glib/tables/mozilla/marvin/backgr_index-expected.txt:\n* LayoutTests/platform/gtk/fast/lists/dynamic-marker-crash-expected.txt:\n* LayoutTests/platform/ios-18/fast/lists/dynamic-marker-crash-expected.txt:\n* LayoutTests/platform/ios/css1/basic/contextual_selectors-expected.txt:\n* LayoutTests/platform/ios/css1/box_properties/border_bottom-expected.txt:\n* LayoutTests/platform/ios/css1/box_properties/border_left-expected.txt:\n* LayoutTests/platform/ios/css1/box_properties/border_right_inline-expected.txt:\n* LayoutTests/platform/ios/css1/box_properties/border_top-expected.txt:\n* LayoutTests/platform/ios/css1/cascade/cascade_order-expected.txt:\n* LayoutTests/platform/ios/css1/pseudo/anchor-expected.txt:\n* LayoutTests/platform/ios/css2.1/t0805-c5518-brdr-t-01-e-expected.txt:\n* LayoutTests/platform/ios/css2.1/t0805-c5520-brdr-b-01-e-expected.txt:\n* LayoutTests/platform/ios/editing/execCommand/create-list-with-hr-expected.txt: Copied from LayoutTests/editing/execCommand/create-list-with-hr-expected.txt.\n* LayoutTests/platform/ios/fast/css-generated-content/table-row-group-with-before-expected.txt: Copied from LayoutTests/fast/css-generated-content/table-row-group-with-before-expected.txt.\n* LayoutTests/platform/ios/fast/css-generated-content/table-row-with-before-expected.txt: Copied from LayoutTests/fast/css-generated-content/table-row-with-before-expected.txt.\n* LayoutTests/platform/ios/fast/css-generated-content/table-with-before-expected.txt: Copied from LayoutTests/fast/css-generated-content/table-with-before-expected.txt.\n* LayoutTests/platform/ios/fast/css/empty-pseudo-class-expected.txt:\n* LayoutTests/platform/ios/fast/css/first-child-pseudo-class-expected.txt:\n* LayoutTests/platform/ios/fast/css/first-of-type-pseudo-class-expected.txt:\n* LayoutTests/platform/ios/fast/css/last-child-pseudo-class-expected.txt:\n* LayoutTests/platform/ios/fast/css/last-of-type-pseudo-class-expected.txt:\n* LayoutTests/platform/ios/fast/css/only-child-pseudo-class-expected.txt:\n* LayoutTests/platform/ios/fast/css/only-of-type-pseudo-class-expected.txt:\n* LayoutTests/platform/ios/fast/doctypes/002-expected.txt:\n* LayoutTests/platform/ios/fast/forms/form-hides-table-expected.txt:\n* LayoutTests/platform/ios/fast/lists/001-expected.txt:\n* LayoutTests/platform/ios/fast/lists/001-vertical-expected.txt:\n* LayoutTests/platform/ios/fast/lists/006-vertical-expected.txt:\n* LayoutTests/platform/ios/fast/lists/dynamic-marker-crash-expected.txt:\n* LayoutTests/platform/ios/fast/lists/ordered-list-with-no-ol-tag-expected.txt:\n* LayoutTests/platform/ios/fast/text-autosizing/ios/lists-expected.txt:\n* LayoutTests/platform/ios/imported/w3c/web-platform-tests/css/css-lists/list-and-writing-mode-001-expected.txt: Removed.\n* LayoutTests/platform/ios/tables/mozilla/marvin/backgr_index-expected.txt:\n* LayoutTests/platform/mac-sequoia-wk2/fast/lists/dynamic-marker-crash-expected.txt:\n* LayoutTests/platform/mac-wk2/fast/lists/dynamic-marker-crash-expected.txt:\n* LayoutTests/platform/mac/css1/basic/contextual_selectors-expected.txt:\n* LayoutTests/platform/mac/css1/box_properties/border_bottom-expected.txt:\n* LayoutTests/platform/mac/css1/box_properties/border_left-expected.txt:\n* LayoutTests/platform/mac/css1/box_properties/border_right_inline-expected.txt:\n* LayoutTests/platform/mac/css1/box_properties/border_top-expected.txt:\n* LayoutTests/platform/mac/css1/cascade/cascade_order-expected.txt:\n* LayoutTests/platform/mac/css1/pseudo/anchor-expected.txt:\n* LayoutTests/platform/mac/css2.1/t0805-c5518-brdr-t-01-e-expected.txt:\n* LayoutTests/platform/mac/css2.1/t0805-c5520-brdr-b-01-e-expected.txt:\n* LayoutTests/platform/mac/fast/css/empty-pseudo-class-expected.txt:\n* LayoutTests/platform/mac/fast/css/first-child-pseudo-class-expected.txt:\n* LayoutTests/platform/mac/fast/css/first-of-type-pseudo-class-expected.txt:\n* LayoutTests/platform/mac/fast/css/last-child-pseudo-class-expected.txt:\n* LayoutTests/platform/mac/fast/css/last-of-type-pseudo-class-expected.txt:\n* LayoutTests/platform/mac/fast/css/only-child-pseudo-class-expected.txt:\n* LayoutTests/platform/mac/fast/css/only-of-type-pseudo-class-expected.txt:\n* LayoutTests/platform/mac/fast/doctypes/002-expected.txt:\n* LayoutTests/platform/mac/fast/forms/form-hides-table-expected.txt:\n* LayoutTests/platform/mac/fast/lists/001-expected.txt:\n* LayoutTests/platform/mac/fast/lists/001-vertical-expected.txt:\n* LayoutTests/platform/mac/fast/lists/006-vertical-expected.txt:\n* LayoutTests/platform/mac/fast/lists/dynamic-marker-crash-expected.txt:\n* LayoutTests/platform/mac/fast/lists/ordered-list-with-no-ol-tag-expected.txt:\n* LayoutTests/platform/mac/fast/text-autosizing/ios/lists-expected.txt:\n* LayoutTests/platform/mac/tables/mozilla/marvin/backgr_index-expected.txt:\n* LayoutTests/platform/wpe/fast/lists/dynamic-marker-crash-expected.txt:\n\nCanonical link: https://commits.webkit.org/318561@main",
      "email": "zalan@apple.com",
      "hash": "eddf81db04fd93e179d22ed600bb7fe92c4d20ad",
      "subject": "Keep the outside list marker at the list item and position it after layout"
    },
    "318562@main": {
      "author": "Alan Baradlay",
      "avatar": "https://www.gravatar.com/avatar/788d66417db806c567552cfa1ae89f77?d=identicon\u0026s=64",
      "cl": "318562@main",
      "clUrl": "https://commits.webkit.org/318562@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320944\n\u003crdar://problem/183976364\u003e\n\nReviewed by Antti Koivisto.\n\n  \u003cdiv style=\"text-align: justify; width: 200px\"\u003e\n    \u003cspan\u003exx xx xx xx xx xx\u003cdiv\u003eitem\u003c/div\u003eyy yy\u003c/span\u003e\n  \u003c/div\u003e\n\nThe line right before the \u003cdiv\u003e should be start aligned. Instead it was justified, stretched out to the full 200px.\n\nA block level box inside an inline box starts a block, and CSS Text 3 counts\nthe start of a block as a forced line break, so the line before it is the last\nline before a forced line break and follows text-align-last.\n\nThe justify check now treats ForcedLineBreakByBlockContent as a forced line break too, mirroring layoutInlineContent.\nThis also lets text-align-last: justify justify the line before the block, which it used to skip.\n\nTests: imported/w3c/web-platform-tests/css/css-text/text-align/reference/text-align-justify-block-in-inline-ref.html\n       imported/w3c/web-platform-tests/css/css-text/text-align/reference/text-align-last-justify-block-in-inline-ref.html\n       imported/w3c/web-platform-tests/css/css-text/text-align/text-align-justify-block-in-inline.html\n       imported/w3c/web-platform-tests/css/css-text/text-align/text-align-last-justify-block-in-inline.html\n\n* LayoutTests/imported/w3c/web-platform-tests/css/css-text/text-align/reference/text-align-justify-block-in-inline-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-text/text-align/reference/text-align-last-justify-block-in-inline-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-text/text-align/text-align-justify-block-in-inline-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-text/text-align/text-align-justify-block-in-inline.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-text/text-align/text-align-last-justify-block-in-inline-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-text/text-align/text-align-last-justify-block-in-inline.html: Added.\n* Source/WebCore/layout/formattingContexts/inline/InlineLineBuilder.cpp:\n(WebCore::Layout::LineBuilder::placeInlineAndFloatContent):\n\nCanonical link: https://commits.webkit.org/318562@main",
      "email": "zalan@apple.com",
      "hash": "cabfd5e07ad7f990f0a3f97c4bbb4c4479f34fa3",
      "subject": "[block-in-inline] text-align:justify shouldn't justify the last line"
    },
    "318563@main": {
      "author": "Yusuke Suzuki",
      "avatar": "https://www.gravatar.com/avatar/3455d9081295e3e740c1ffa901217d9b?d=identicon\u0026s=64",
      "cl": "318563@main",
      "clUrl": "https://commits.webkit.org/318563@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320993\nrdar://184026826\n\nReviewed by Yijia Huang and Keith Miller.\n\nTo increase coverage, enable v8's memory64 test. Commenting out V8\nspecific part.\n\n* JSTests/wasm/v8/memory64.js:\n(TestMemory64SharedBetweenWorkers.let.shared_mem64): Deleted.\n(TestMemory64SharedBetweenWorkers.): Deleted.\n(TestMemory64SharedBetweenWorkers): Deleted.\n\nCanonical link: https://commits.webkit.org/318563@main",
      "email": "ysuzuki@apple.com",
      "hash": "7876c281b07a1de8657cb2c440385ff130085ca3",
      "subject": "[JSC] Enable v8's memory64 tests"
    },
    "318564@main": {
      "author": "Yusuke Suzuki",
      "avatar": "https://www.gravatar.com/avatar/3455d9081295e3e740c1ffa901217d9b?d=identicon\u0026s=64",
      "cl": "318564@main",
      "clUrl": "https://commits.webkit.org/318564@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320968\nrdar://183997090\n\nReviewed by Yijia Huang.\n\nThis patch computes metadata information in python script when parsing\nbuiltin JS code so that we do not need to compute them at runtime (VM\nlaunch timing). Currently we are only applying this to JSC's JS builtin,\nand planning to expand this to WebCore JS builtins too next.\n\n* Source/JavaScriptCore/Scripts/tests/builtins/expected/JavaScriptCore-Builtin.Promise-Combined.js-result:\n* Source/JavaScriptCore/Scripts/tests/builtins/expected/JavaScriptCore-Builtin.prototype-Combined.js-result:\n* Source/JavaScriptCore/Scripts/tests/builtins/expected/JavaScriptCore-BuiltinConstructor-Combined.js-result:\n* Source/JavaScriptCore/Scripts/tests/builtins/expected/JavaScriptCore-InternalClashingNames-Combined.js-result:\n* Source/JavaScriptCore/Scripts/wkbuiltins/builtins_generate_combined_implementation.py:\n(BuiltinsCombinedImplementationGenerator.generate_output):\n(BuiltinsCombinedImplementationGenerator):\n(BuiltinsCombinedImplementationGenerator.generate_source_metadata_table):\n* Source/JavaScriptCore/Scripts/wkbuiltins/builtins_generator.py:\n(WK_ucfirst):\n(is_js_white_space):\n(compute_builtin_source_metadata):\n* Source/JavaScriptCore/builtins/BuiltinExecutables.cpp:\n(JSC::BuiltinExecutables::createBuiltinExecutable):\n(JSC::computeBuiltinSourceMetadata):\n(JSC::BuiltinExecutables::createExecutable):\n* Source/JavaScriptCore/builtins/BuiltinExecutables.h:\n(JSC::BuiltinExecutables::static_cast\u003cunsigned\u003e): Deleted.\n\nCanonical link: https://commits.webkit.org/318564@main",
      "email": "ysuzuki@apple.com",
      "hash": "81d660ceeb2ee5a2245dfebb8d264c445ee2c05e",
      "subject": "[JSC] Compute builtin executable metadata in python script"
    },
    "318565@main": {
      "author": "Ahmad Saleem",
      "avatar": "https://www.gravatar.com/avatar/38445f84fe28aa19bfeb1f59f6559532?d=identicon\u0026s=64",
      "cl": "318565@main",
      "clUrl": "https://commits.webkit.org/318565@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320821\nrdar://183832405\n\nReviewed by Said Abou-Hallawa.\n\nSVG 2 defines 'rotate' on \u003canimateMotion\u003e as `\u003cnumber\u003e | auto |\nauto-reverse`, where a \u003cnumber\u003e \"indicates that the target element has a\nconstant rotation transformation applied to it, where the rotation angle\nis the specified number of degrees\" [1].\n\nrotateMode() folded every value that is not 'auto' or 'auto-reverse'\ninto RotateMode::Angle, but calculateAnimatedValue() then hardcoded the\nangle to 0 for that case, so a specified rotate=\"45\" was silently\ndropped and no rotation was applied at all.\n\nReplace rotateMode() with rotate(), which mirrors the attribute grammar\nby returning a Variant\u003cRotateMode, float\u003e: the two keywords stay as\nRotateMode, and anything else is parsed as a number. This removes the\nRotateMode::Angle placeholder, whose only purpose was to mean \"not a\nkeyword\". An absent or unparseable value still yields no rotation,\nmatching the initial value of 0.\n\nFirefox already applies the specified angle; Chrome shares the WebKit\nbehavior of dropping it.\n\nThe svg/animations/animateMotion-accumulate-1a..1c tests need slightly\nwider fuzziness. Each of them animates four circles, and while three use\nno 'rotate', 'auto' and 'auto-reverse', the innermost one specifies\nrotate=\"60\", which this change stops discarding. Those circles are\ncentered on the rotation origin, so a 60 degree rotation maps each one\nonto itself and the rendered geometry is unchanged; only the rasterized\nresult moves, because the Bezier arcs making up the circle now meet the\npixel grid at rotated positions and are antialiased slightly\ndifferently. The tests already needed fuzziness before this change, as\nthe accumulated translation comes from an approximate path traversal.\n\n[1] https://w3c.github.io/svgwg/specs/animations/#RotateAttribute\n\nTest: imported/w3c/web-platform-tests/svg/animations/animateMotion-rotate-angle.html\n\n* LayoutTests/imported/w3c/web-platform-tests/svg/animations/animateMotion-rotate-angle-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/svg/animations/animateMotion-rotate-angle.html: Added.\n* LayoutTests/svg/animations/animateMotion-accumulate-1a.svg: Widen fuzziness for the rotate=\"60\" circle.\n* LayoutTests/svg/animations/animateMotion-accumulate-1b.svg: Ditto.\n* LayoutTests/svg/animations/animateMotion-accumulate-1c.svg: Ditto.\n* Source/WebCore/svg/SVGAnimateMotionElement.cpp:\n(WebCore::SVGAnimateMotionElement::rotate const):\n(WebCore::SVGAnimateMotionElement::calculateAnimatedValue):\n(WebCore::SVGAnimateMotionElement::rotateMode const): Deleted.\n* Source/WebCore/svg/SVGAnimateMotionElement.h:\n\nCanonical link: https://commits.webkit.org/318565@main",
      "email": "ahmad.saleem792+github@gmail.com",
      "hash": "89a079c61a9e457fa419fed803f32ba370a6afe2",
      "subject": "\u003canimateMotion\u003e ignores a numeric 'rotate' value"
    },
    "318566@main": {
      "author": "Yijia Huang",
      "avatar": "https://www.gravatar.com/avatar/5bc95a5f0a5fdfc107bbdec6979dae89?d=identicon\u0026s=64",
      "cl": "318566@main",
      "clUrl": "https://commits.webkit.org/318566@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320953\nrdar://183980712\n\nReviewed by Yusuke Suzuki.\n\nRoute PlainDateTime.from/with, PlainDate.prototype.with's ISO branch, and\nDuration.relativeTo through the two shared calendar-field readers instead of\ntheir own duplicate PrepareCalendarFields/CalendarMergeFields logic.\nDelete the now-redundant TemporalPlainDate::mergeDateFields, which\nalso fixes a latent bug: it caused ISO .with() to run day/month regulation\ntwice per call.\n\nGive plainDateWith an ISO fast path (mirroring plainYearMonthWith's) so\nunifying with()'s ISO/non-ISO branches doesn't regress perf by routing ISO\nthrough isoToCalendarFields's ICU calendar construction.\n\nFix readCalendarFieldsFromObject's monthCode handling: it silently accepted\nnon-string values instead of throwing TypeError, losing behavior that\nPlainDateTime.from and PlainDate.with's ISO branch used to have correctly\nbefore this consolidation.\n\nTests: JSTests/stress/temporal-calendar-fields-monthcode-typeerror.js\n       JSTests/stress/temporal-plaindatetime-from-getter-order.js\n\nCanonical link: https://commits.webkit.org/318566@main",
      "email": "yijia_huang@apple.com",
      "hash": "4f049dc9046e56f460fc85d239c1a15e9b6ba3c6",
      "subject": "[JSC][Temporal] Finish PrepareCalendarFields consolidation; fix monthCode TypeError regression"
    },
    "318567@main": {
      "author": "Devin Rousso",
      "avatar": "https://www.gravatar.com/avatar/c9e757d973342c773f107a94b70cb9cd?d=identicon\u0026s=64",
      "cl": "318567@main",
      "clUrl": "https://commits.webkit.org/318567@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320952\n\nReviewed by Mike Wyrzykowski.\n\n* Source/WebCore/inspector/RecordingSwizzleType.h:\n* Source/WebCore/inspector/InspectorCanvas.h:\n* Source/WebCore/inspector/InspectorCanvas.cpp:\n(WebCore::InspectorCanvas::resetRecordingData):\n(WebCore::InspectorCanvas::identifierForRecordingObject):\nKeep a single object-to-identifier map and a per-`RecordingSwizzleType` next-identifier map so objects of different types do not share the same count.\n\n* Source/WebCore/inspector/InspectorCanvasArguments.h:\n(WebCore::recordingSwizzleTypeForWebGLReceiver): Added.\n(WebCore::InspectorCanvasArgumentProcessor\u003cIDLInterface\u003cIDLType\u003e\u003e::operator()):\n* Source/WebCore/inspector/InspectorCanvasArguments.cpp:\n(WebCore::InspectorCanvasArgumentProcessor\u003cIDLInterface\u003cWebGLBuffer\u003e\u003e::operator()): Deleted.\n(WebCore::InspectorCanvasArgumentProcessor\u003cIDLInterface\u003cWebGLFramebuffer\u003e\u003e::operator()): Deleted.\n(WebCore::InspectorCanvasArgumentProcessor\u003cIDLInterface\u003cWebGLProgram\u003e\u003e::operator()): Deleted.\n(WebCore::InspectorCanvasArgumentProcessor\u003cIDLInterface\u003cWebGLQuery\u003e\u003e::operator()): Deleted.\n(WebCore::InspectorCanvasArgumentProcessor\u003cIDLInterface\u003cWebGLRenderbuffer\u003e\u003e::operator()): Deleted.\n(WebCore::InspectorCanvasArgumentProcessor\u003cIDLInterface\u003cWebGLSampler\u003e\u003e::operator()): Deleted.\n(WebCore::InspectorCanvasArgumentProcessor\u003cIDLInterface\u003cWebGLShader\u003e\u003e::operator()): Deleted.\n(WebCore::InspectorCanvasArgumentProcessor\u003cIDLInterface\u003cWebGLSync\u003e\u003e::operator()): Deleted.\n(WebCore::InspectorCanvasArgumentProcessor\u003cIDLInterface\u003cWebGLTimerQueryEXT\u003e\u003e::operator()): Deleted.\n(WebCore::InspectorCanvasArgumentProcessor\u003cIDLInterface\u003cWebGLTexture\u003e\u003e::operator()): Deleted.\n(WebCore::InspectorCanvasArgumentProcessor\u003cIDLInterface\u003cWebGLUniformLocation\u003e\u003e::operator()): Deleted.\n(WebCore::InspectorCanvasArgumentProcessor\u003cIDLInterface\u003cWebGLVertexArrayObject\u003e\u003e::operator()): Deleted.\n(WebCore::InspectorCanvasArgumentProcessor\u003cIDLInterface\u003cWebGLVertexArrayObjectOES\u003e\u003e::operator()): Deleted.\n(WebCore::InspectorCanvasArgumentProcessor\u003cIDLInterface\u003cWebGLTransformFeedback\u003e\u003e::operator()): Deleted.\nRoute WebGL objects through `InspectorCanvas::identifierForRecordingObject` using the wrapper address, matching WebGL extensions and WebGPU objects.\n\n* Source/WebInspectorUI/UserInterface/Models/Recording.js:\n(WI.Recording):\n(WI.Recording.isObjectSwizzleType): Added.\n(WI.Recording.prototype.displayNameForReceiver): Added.\n* Source/WebInspectorUI/UserInterface/Models/RecordingAction.js:\n(WI.RecordingAction.prototype.get recordingObjectIdentifiers): Added.\n(WI.RecordingAction.prototype.swizzle):\n* Source/WebInspectorUI/UserInterface/Views/CanvasSidebarPanel.js:\n(WI.CanvasSidebarPanel.prototype._recordingChanged):\n(WI.CanvasSidebarPanel.prototype._createRecordingActionTreeElement):\n* Source/WebInspectorUI/UserInterface/Views/RecordingActionTreeElement.js:\n(WI.RecordingActionTreeElement):\n(WI.RecordingActionTreeElement._generateDOM):\nOmit the identifier when a recording only contains one object of a given type, but include it for every object when there are multiple.\n\n* LayoutTests/inspector/canvas/recording-webgl-full-expected.txt:\n* LayoutTests/inspector/canvas/recording-webgl2-full-expected.txt:\n* LayoutTests/inspector/canvas/recording-offscreen-webgl-full-expected.txt:\n* LayoutTests/inspector/canvas/recording-offscreen-webgl2-full-expected.txt:\n* LayoutTests/inspector/canvas/recording-webgl-receivers.html:\n* LayoutTests/inspector/canvas/recording-webgpu.html:\n* LayoutTests/inspector/canvas/recording-webgpu-expected.txt:\n\nCanonical link: https://commits.webkit.org/318567@main",
      "email": "hi@devinrousso.com",
      "hash": "5197b3d514cd7f10db08ecf9ef9f66f67b0419df",
      "subject": "Web Inspector: Canvas: assign recorded object identifiers per type"
    },
    "318568@main": {
      "author": "Dan Hecht",
      "avatar": "https://www.gravatar.com/avatar/080f47d912b1b34d0be8293f825d132d?d=identicon\u0026s=64",
      "cl": "318568@main",
      "clUrl": "https://commits.webkit.org/318568@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320911\nrdar://183941218\n\nReviewed by Yusuke Suzuki and Keith Miller.\n\n--report-execution-time makes each test's success command echo\n\"PASS: \u003cname\u003e \u003cN\u003ems\". But the progress meter in runAndMonitorTestRunnerCommand\nmatches lines beginning with \"PASS: \" and only uses them to advance its\ncounter, never printing them. The meter is enabled by default whenever stdout\nis a TTY and verbosity is 0, so the timings were measured and then discarded.\nPassing --verbose or setting JSCTEST_noProgressMeter disables the meter, which\nwas the only way to see them.\n\nPrint the PASS line when --report-execution-time is given, reusing the meter's\nexisting \"erase the progress line first\" logic so the counter still redraws\ncorrectly around it.\n\n* Tools/Scripts/run-jsc-stress-tests:\n\nCanonical link: https://commits.webkit.org/318568@main",
      "email": "dan.hecht@apple.com",
      "hash": "130cc476d2b5e73050c66b70a0b3f53c7bb1c190",
      "subject": "[run-jsc-stress-tests] Print per-test execution times when the progress meter is enabled"
    },
    "318569@main": {
      "author": "Richard Robinson",
      "avatar": "https://www.gravatar.com/avatar/a0d2f862985ed0fd47887be66f5a3e4f?d=identicon\u0026s=64",
      "cl": "318569@main",
      "clUrl": "https://commits.webkit.org/318569@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320976\nrdar://184005736\n\nReviewed by Pascoe and Abrar Rahman Protyasha.\n\nAdd a `_performActionForControl` function just like the default HUD view has.\n\n* Source/WebKit/UIProcess/PDF/WKAlternatePDFHUDView+Testing.swift: Added.\n(WKAlternatePDFHUDView.performAction(_:)):\n* Source/WebKit/UIProcess/PDF/WKAlternatePDFHUDView.swift:\n(Controls.isVisible): Deleted.\n(Controls.body): Deleted.\n* Source/WebKit/WebKit.xcodeproj/project.pbxproj:\n\nCanonical link: https://commits.webkit.org/318569@main",
      "email": "richard_robinson2@apple.com",
      "hash": "e5898a255cf1dcc329ba95ce83eba7da8b212efa",
      "subject": "[PDF] Some tests are failing when using the alternate PDF HUD view"
    },
    "318570@main": {
      "author": "Richard Robinson",
      "avatar": "https://www.gravatar.com/avatar/a0d2f862985ed0fd47887be66f5a3e4f?d=identicon\u0026s=64",
      "cl": "318570@main",
      "clUrl": "https://commits.webkit.org/318570@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320963\nrdar://183988778\n\nReviewed by Mike Wyrzykowski and Megan Gardner.\n\nWe currently use a mix of Swift `os(...)` checks and WTF platform checks in Swift.\nReplace all of the former with the latter for consistency, and add a style checker\nrule to enforce this.\n\nTests: Tools/TestWebKitAPI/Tests/WebKit/WebPage/EditingFontSizeTests.swift\n       Tools/TestWebKitAPI/Tests/WebKit/WebPage/WebPageMouseEventsTests.swift\n       Tools/TestWebKitAPI/Tests/WebKit/WebPage/WebPageTransferableTests.swift\n       Tools/TestWebKitAPI/Tests/WebKit/WebPage/WebViewTests.swift\n\n* Source/WebGPU/WebGPU/CommandEncoder.swift:\n(WebGPU.finish(_:)):\n* Source/WebKit/Platform/cocoa/WKMaterialHostingSupport.swift:\n(MaterialHostingView.body):\n* Source/WebKit/Platform/spi/visionos/WKSurroundingsEffect.swift:\n* Source/WebKit/Platform/spi/visionos/WKSurroundingsEffectView.swift:\n* Source/WebKit/UIProcess/API/Cocoa/WKWebViewConfiguration+Extras.swift:\n* Source/WebKit/UIProcess/API/Cocoa/WebKitSwiftOverlay.swift:\n* Source/WebKit/UIProcess/API/Cocoa/_WKTextExtraction.swift:\n* Source/WebKit/UIProcess/API/Swift/WebPage+Configuration.swift:\n* Source/WebKit/UIProcess/API/Swift/WebPage+NavigationDeciding.swift:\n* Source/WebKit/UIProcess/API/Swift/WebPage+SPI.swift:\n* Source/WebKit/UIProcess/API/Swift/WebPage+Transferable.swift:\n* Source/WebKit/UIProcess/API/Swift/WebPage.swift:\n(backingWebView):\n* Source/WebKit/UIProcess/Cocoa/TextExtraction/WKWebView+TextExtraction.swift:\n* Source/WebKit/UIProcess/Cocoa/WKScrollGeometryAdapter.swift:\n* Source/WebKit/UIProcess/Cocoa/WKUIDelegateAdapter.swift:\n* Source/WebKit/UIProcess/Cocoa/WebPageWebView.swift:\n* Source/WebKit/UIProcess/WebBackForwardList.swift:\n(MakeAPIArray.didRemoveItem(_:)):\n(MakeAPIArray.messageCheckItemURLs(_:process:)):\n* Source/WebKit/WebKitSwift/IdentityDocumentServices/WKIdentityDocumentPresentmentController.swift:\n* Source/WebKit/WebKitSwift/IdentityDocumentServices/WKIdentityDocumentRawRequestValidator.swift:\n* Source/WebKit/WebKitSwift/LinearMediaKit/LinearMediaPlayer.swift:\n* Source/WebKit/WebKitSwift/LinearMediaKit/LinearMediaTypes.swift:\n* Source/WebKit/WebKitSwift/TextAnimation/WKTextAnimationManagerIOS.swift:\n* Source/WebKit/WebKitSwift/WritingTools/IntelligenceTextEffectViewManager.swift:\n(setupViewIfNeeded):\n* Source/WebKit/WebKitSwift/WritingTools/PlatformIntelligenceTextEffectView.swift:\n(PlatformIntelligenceTextEffectView.removeEffect(_:)):\n(Previews.heightDelta):\n* Source/WebKit/WebKitSwift/WritingTools/WKIntelligenceReplacementTextEffectCoordinator.swift:\n* Source/WebKit/WebKitSwift/WritingTools/WKIntelligenceSmartReplyTextEffectCoordinator.swift:\n* Source/WebKit/_WebKit_SwiftUI/API/View+WebViewModifiers.swift:\n* Source/WebKit/_WebKit_SwiftUI/API/WebPage+SwiftUI.swift:\n(WebPage.themeColor):\n* Source/WebKit/_WebKit_SwiftUI/API/WebView.swift:\n(WebView.representable):\n* Source/WebKit/_WebKit_SwiftUI/API/WebViewImmersiveEnvironmentView.swift:\n(WebViewImmersiveEnvironmentView.body):\n* Source/WebKit/_WebKit_SwiftUI/Implementation/CocoaWebViewAdapter.swift:\n(CocoaWebViewAdapter.isFindNavigatorVisible):\n(CocoaWebViewAdapter.findInteraction):\n(CocoaWebViewAdapter.webView):\n* Source/WebKit/_WebKit_SwiftUI/Implementation/PlatformTextSearching.swift:\n* Source/WebKit/_WebKit_SwiftUI/Implementation/SwiftUI+Extras.swift:\n* Source/WebKit/_WebKit_SwiftUI/Implementation/ViewModifierContexts.swift:\n* Source/WebKit/_WebKit_SwiftUI/Implementation/WebViewRepresentable.swift:\n(WebViewRepresentable.makePlatformView(_:)):\n(WebViewRepresentable.updatePlatformView(_:context:)):\n(WebViewRepresentable.dismantlePlatformView(_:coordinator:)):\n(WebViewCoordinator.updateFindInteraction(_:context:)):\n(WebViewRepresentable.setupRefreshControl(_:)):\n* Tools/Scripts/webkitpy/style/checker.py:\n(_all_categories):\n* Tools/Scripts/webkitpy/style/checker_unittest.py:\n(GlobalVariablesTest.test_path_rules_specifier):\n* Tools/Scripts/webkitpy/style/checkers/swift.py:\n(SwiftChecker):\n(SwiftChecker._check_platform_conditions):\n(SwiftChecker.check):\n* Tools/Scripts/webkitpy/style/checkers/swift_unittest.py:\n(SwiftCheckerTest.test_check_safe):\n(SwiftPlatformConditionTest):\n(SwiftPlatformConditionTest._errors_for_lines):\n(SwiftPlatformConditionTest._errors_for_lines._mock_handle_style_error):\n(SwiftPlatformConditionTest._expected_error):\n(SwiftPlatformConditionTest.test_simple_conditions):\n(SwiftPlatformConditionTest.test_negated_condition):\n(SwiftPlatformConditionTest.test_indented_condition):\n(SwiftPlatformConditionTest.test_elseif_condition):\n(SwiftPlatformConditionTest.test_compound_conditions):\n(SwiftPlatformConditionTest.test_repeated_condition):\n(SwiftPlatformConditionTest.test_version_gated_can_import_is_allowed):\n(SwiftPlatformConditionTest.test_other_conditions_are_allowed):\n(SwiftPlatformConditionTest.test_wtf_platform_conditions_are_allowed):\n(SwiftPlatformConditionTest.test_non_directive_lines_are_allowed):\n* Tools/TestWebKitAPI/Helpers/cocoa/AppKit+Extras.swift:\n* Tools/TestWebKitAPI/Helpers/cocoa/SwiftUI+Extras.swift:\n* Tools/TestWebKitAPI/Helpers/cocoa/TestPDFDocument.swift:\n* Tools/TestWebKitAPI/Helpers/cocoa/WebPage+Extras.swift:\n(insertText(_:)):\n* Tools/TestWebKitAPI/Tests/WebKit/WebPage/EditingFontSizeTests.swift:\n* Tools/TestWebKitAPI/Tests/WebKit/WebPage/WebPageMouseEventsTests.swift:\n* Tools/TestWebKitAPI/Tests/WebKit/WebPage/WebPageTransferableTests.swift:\n(WebPageTransferableTests.exportToPDFWithoutLoadingAnyWebContentFails):\n(WebPageTransferableTests.exportToImage(_:)):\n(WebPageTransferableTests.exportToRichText(_:)):\n* Tools/TestWebKitAPI/Tests/WebKit/WebPage/WebViewTests.swift:\n\nCanonical link: https://commits.webkit.org/318570@main",
      "email": "richard_robinson2@apple.com",
      "hash": "eef67ca710370cc2ed81513f5e1948ce5d47dbaf",
      "subject": "[Swift in WebKit] Replace Swift platform compilation conditions with WTF ones"
    },
    "318571@main": {
      "author": "Per Arne Vollan",
      "avatar": "https://www.gravatar.com/avatar/644dde5b61925a175f4bdea3f0f00bda?d=identicon\u0026s=64",
      "cl": "318571@main",
      "clUrl": "https://commits.webkit.org/318571@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320766\nrdar://182738751\n\nReviewed by Brady Eidson.\n\nSpeculative fix: disable launch constraints for this WebContent variant.\n\n* Source/WebKit/Configurations/WebContentService.Development.xcconfig:\n\nCanonical link: https://commits.webkit.org/318571@main",
      "email": "pvollan@apple.com",
      "hash": "d941188fc783f42f6e8dbc3092c0744f389e8a04",
      "subject": "WebContent Development XPC service is not able to load locally built injected bundle"
    },
    "318572@main": {
      "author": "Sihui Liu",
      "avatar": "https://www.gravatar.com/avatar/fea095a2fb34b599fa6e7d581666903b?d=identicon\u0026s=64",
      "cl": "318572@main",
      "clUrl": "https://commits.webkit.org/318572@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320471\nrdar://183439648\n\nReviewed by Per Arne Vollan.\n\nFollow-up to the frame process indicator overlay (bug 320012). Two changes to make the\nper-frame process ID overlay more usable when debugging site isolation:\n\n- Prefix the label text with \"pid=\" so the number is unambiguous at a glance.\n- Offset each indicator by its frame's nesting depth in the (cross-process) frame tree, so\n  frames that share an origin on screen (e.g. a mainframe and an iframe both anchored at the\n  page origin) don't draw their labels directly on top of each other. The mainframe's label is\n  unstaggered; each level of nesting shifts the label further down and to the right.\n\n* Source/WebCore/platform/graphics/GraphicsLayer.h:\n(WebCore::GraphicsLayer::setShowFrameProcessBorders):\n(WebCore::GraphicsLayer::frameProcessIndicatorDepth const):\n* Source/WebCore/platform/graphics/ca/FrameProcessIndicators.cpp:\n(WebCore::FrameProcessIndicators::FrameProcessIndicators):\n(WebCore::FrameProcessIndicators::updateGeometry):\n* Source/WebCore/platform/graphics/ca/GraphicsLayerCA.cpp:\n(WebCore::GraphicsLayerCA::ensureStructuralLayer):\n* Source/WebCore/platform/graphics/ca/GraphicsLayerCA.h:\n* Source/WebCore/rendering/RenderLayerBacking.cpp:\n(WebCore::RenderLayerBacking::updateDebugIndicators):\n\nCanonical link: https://commits.webkit.org/318572@main",
      "email": "sihui_liu@apple.com",
      "hash": "0c06c1222be25577be16cd332872ce568942f9db",
      "subject": "Add a \"pid=\" label and stagger frame process indicators by nesting depth"
    },
    "318573@main": {
      "author": "Jessica Cheung",
      "avatar": "https://www.gravatar.com/avatar/5c102f093ce6bc01424466a4cfdf1d1f?d=identicon\u0026s=64",
      "cl": "318573@main",
      "clUrl": "https://commits.webkit.org/318573@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=321004\nrdar://184040913\n\nReviewed by Abrar Rahman Protyasha and Aditya Keerthi.\n\nMove layout tests to an interactive-widget directory.\n\n* LayoutTests/fast/visual-viewport/ios/interactive-widget/overlays-content-keyboard-scroll-expected.txt: Renamed from LayoutTests/fast/visual-viewport/ios/interactive-widget-overlays-content-keyboard-scroll-expected.txt.\n* LayoutTests/fast/visual-viewport/ios/interactive-widget/overlays-content-keyboard-scroll.html: Renamed from LayoutTests/fast/visual-viewport/ios/interactive-widget-overlays-content-keyboard-scroll.html.\n* LayoutTests/fast/visual-viewport/ios/interactive-widget/overlays-content-obscured-insets-expected.txt: Renamed from LayoutTests/fast/visual-viewport/ios/interactive-widget-overlays-content-obscured-insets-expected.txt.\n* LayoutTests/fast/visual-viewport/ios/interactive-widget/overlays-content-obscured-insets.html: Renamed from LayoutTests/fast/visual-viewport/ios/interactive-widget-overlays-content-obscured-insets.html.\n* LayoutTests/fast/visual-viewport/ios/interactive-widget/overlays-content-zoom-disabled-expected.txt: Renamed from LayoutTests/fast/visual-viewport/ios/interactive-widget-overlays-content-zoom-disabled-expected.txt.\n* LayoutTests/fast/visual-viewport/ios/interactive-widget/overlays-content-zoom-disabled.html: Renamed from LayoutTests/fast/visual-viewport/ios/interactive-widget-overlays-content-zoom-disabled.html.\n* LayoutTests/fast/visual-viewport/ios/interactive-widget/overlays-content-zoom-enabled-expected.txt: Renamed from LayoutTests/fast/visual-viewport/ios/interactive-widget-overlays-content-zoom-enabled-expected.txt.\n* LayoutTests/fast/visual-viewport/ios/interactive-widget/overlays-content-zoom-enabled.html: Renamed from LayoutTests/fast/visual-viewport/ios/interactive-widget-overlays-content-zoom-enabled.html.\n* LayoutTests/fast/visual-viewport/ios/interactive-widget/resizes-content-bottom-obscured-insets-expected.txt: Renamed from LayoutTests/fast/visual-viewport/ios/interactive-widget-resizes-content-bottom-obscured-insets-expected.txt.\n* LayoutTests/fast/visual-viewport/ios/interactive-widget/resizes-content-bottom-obscured-insets.html: Renamed from LayoutTests/fast/visual-viewport/ios/interactive-widget-resizes-content-bottom-obscured-insets.html.\n* LayoutTests/fast/visual-viewport/ios/interactive-widget/resizes-content-inputmode-none-expected.txt: Renamed from LayoutTests/fast/visual-viewport/ios/interactive-widget-resizes-content-inputmode-none-expected.txt.\n* LayoutTests/fast/visual-viewport/ios/interactive-widget/resizes-content-inputmode-none.html: Renamed from LayoutTests/fast/visual-viewport/ios/interactive-widget-resizes-content-inputmode-none.html.\n* LayoutTests/fast/visual-viewport/ios/interactive-widget/resizes-content-keyboard-scroll-expected.txt: Renamed from LayoutTests/fast/visual-viewport/ios/interactive-widget-resizes-content-keyboard-scroll-expected.txt.\n* LayoutTests/fast/visual-viewport/ios/interactive-widget/resizes-content-keyboard-scroll.html: Renamed from LayoutTests/fast/visual-viewport/ios/interactive-widget-resizes-content-keyboard-scroll.html.\n* LayoutTests/fast/visual-viewport/ios/interactive-widget/resizes-content-top-obscured-insets-expected.txt: Renamed from LayoutTests/fast/visual-viewport/ios/interactive-widget-resizes-content-top-obscured-insets-expected.txt.\n* LayoutTests/fast/visual-viewport/ios/interactive-widget/resizes-content-top-obscured-insets.html: Renamed from LayoutTests/fast/visual-viewport/ios/interactive-widget-resizes-content-top-obscured-insets.html.\n* LayoutTests/fast/visual-viewport/ios/interactive-widget/resizes-content-zoom-disabled-expected.txt: Renamed from LayoutTests/fast/visual-viewport/ios/interactive-widget-resizes-content-zoom-disabled-expected.txt.\n* LayoutTests/fast/visual-viewport/ios/interactive-widget/resizes-content-zoom-disabled.html: Renamed from LayoutTests/fast/visual-viewport/ios/interactive-widget-resizes-content-zoom-disabled.html.\n* LayoutTests/fast/visual-viewport/ios/interactive-widget/resizes-content-zoom-enabled-expected.txt: Renamed from LayoutTests/fast/visual-viewport/ios/interactive-widget-resizes-content-zoom-enabled-expected.txt.\n* LayoutTests/fast/visual-viewport/ios/interactive-widget/resizes-content-zoom-enabled.html: Renamed from LayoutTests/fast/visual-viewport/ios/interactive-widget-resizes-content-zoom-enabled.html.\n\nCanonical link: https://commits.webkit.org/318573@main",
      "email": "jcheung23@apple.com",
      "hash": "a247daa1c87a5e5e22da45cf25755bd106ac3a9b",
      "subject": "[interactive-widget] Organize layout tests to an interactive-widget directory"
    },
    "318574@main": {
      "author": "Yusuke Suzuki",
      "avatar": "https://www.gravatar.com/avatar/3455d9081295e3e740c1ffa901217d9b?d=identicon\u0026s=64",
      "cl": "318574@main",
      "clUrl": "https://commits.webkit.org/318574@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=321001\nrdar://184039749\n\nReviewed by Dan Hecht.\n\ndestination and source address type assertions are swapped.\n\nTest: JSTests/wasm/stress/table-copy-mixed-address-types.js\n\n* JSTests/wasm/stress/table-copy-mixed-address-types.js: Added.\n(srcAddressType.module.table.dst):\n(8.funcref.elem.table.src):\n(string_appeared_here.string_appeared_here.const.instance.await.instantiate.wat):\n* Source/JavaScriptCore/wasm/WasmBBQJIT.cpp:\n(JSC::Wasm::BBQJITImpl::BBQJIT::addTableCopy):\n\nCanonical link: https://commits.webkit.org/318574@main",
      "email": "ysuzuki@apple.com",
      "hash": "3c9a7dc13ae58ba3f1d38258b6af10be8325a354",
      "subject": "[JSC] BBQJIT::addTableCopy's assertion is incorrect"
    },
    "318575@main": {
      "author": "Yusuke Suzuki",
      "avatar": "https://www.gravatar.com/avatar/3455d9081295e3e740c1ffa901217d9b?d=identicon\u0026s=64",
      "cl": "318575@main",
      "clUrl": "https://commits.webkit.org/318575@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=321000\nrdar://184038951\n\nReviewed by Keith Miller.\n\nWe are silently truncating the maximum value to uint32_t. This patch\nfixes it.\n\nTest: JSTests/wasm/stress/table64-maximum.js\n\n* JSTests/wasm/js-api/table64-js-api.js:\n* JSTests/wasm/stress/table64-growable-import.js: Added.\n(await.assert.throwsAsync.instantiate):\n* JSTests/wasm/stress/table64-maximum.js: Added.\n(string_appeared_here.funcref.func.export.string_appeared_here.result.i64.table.size.0.func.export.string_appeared_here.param.delta.i64.result.i64.ref.null.func.local.delta):\n(assert.eq.instance.exports.grow):\n* Source/JavaScriptCore/wasm/WasmFormat.h:\n(JSC::Wasm::TableInformation::TableInformation):\n(JSC::Wasm::TableInformation::maximum const):\n* Source/JavaScriptCore/wasm/js/JSWebAssemblyTable.cpp:\n(JSC::JSWebAssemblyTable::type):\n* Source/JavaScriptCore/wasm/js/JSWebAssemblyTable.h:\n* Source/JavaScriptCore/wasm/js/WebAssemblyModuleConstructor.cpp:\n(JSC::createTypeReflectionObject):\n* Source/JavaScriptCore/wasm/js/WebAssemblyModuleRecord.cpp:\n(JSC::WebAssemblyModuleRecord::initializeImports):\n\nCanonical link: https://commits.webkit.org/318575@main",
      "email": "ysuzuki@apple.com",
      "hash": "b91045c99b1bf34920bb033d7af8d4b2a1a82a20",
      "subject": "[JSC] Do not truncate table64 maximum size to uint32_t"
    },
    "318576@main": {
      "author": "Yulun Wu",
      "avatar": "https://www.gravatar.com/avatar/9e34d6632f4d926cdf6fe8dce07f9cb7?d=identicon\u0026s=64",
      "cl": "318576@main",
      "clUrl": "https://commits.webkit.org/318576@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320940\n\u003crdar://183969645\u003e\n\nReviewed by Alan Baradlay.\n\nThis PR fixes a bug where gutter sizes are not subtracted from the item's size\ncontribution when computing the space to distribute during track sizing, which\nwould cause us to over-count the amount of space to distribute. Note that this\nincorrect behavior is not see on trunk as spanning items are filtered out via\navoidance reasons.\n\n* Source/WebCore/layout/formattingContexts/grid/TrackSizingAlgorithm.cpp:\n(WebCore::Layout::distributeExtraSpace):\n(WebCore::Layout::increaseSizesToAccommodateSpanningItemsCrossingFlexibleTracks):\n(WebCore::Layout::ResolveIntrinsicTrackSizesContext::ResolveIntrinsicTrackSizesContext):\n(WebCore::Layout::TrackSizingAlgorithm::sizeTracks):\n\nCanonical link: https://commits.webkit.org/318576@main",
      "email": "yulun_wu@apple.com",
      "hash": "1eddc074d6673494e9206ae69c6654bcef661d9d",
      "subject": "[GFC] Account for gutters when finding the space to distribute during track sizing."
    },
    "318577@main": {
      "author": "Yulun Wu",
      "avatar": "https://www.gravatar.com/avatar/9e34d6632f4d926cdf6fe8dce07f9cb7?d=identicon\u0026s=64",
      "cl": "318577@main",
      "clUrl": "https://commits.webkit.org/318577@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320925\n\u003crdar://183958176\u003e\n\nReviewed by Alan Baradlay.\n\nThis PR adds logic for space distribution beyond limits in CSS Grid §11.5.1, step 2.4\n\nhttps://drafts.csswg.org/css-grid-1/#extra-space\n\nWe are adding an enum, SpaceDistributionLimit, to {finish}\n\nindexesForUnfrozenAffectedTracks now directly returns the spannedAffectedTracks\nwhen distribution space beyond the growth limit and skip filtering tracks based\non their freeze limit for SpaceDistributionLimit::BeyondGrowthLimit.\n\ndistributeSpaceEquallyAmongTracks also directly distributes\n(space / tracksRemainingForDistributionCount) space to the affected track\ninstead of clamping it to the spaceRemainingUntilLimit when under\nSpaceDistributionLimit::BeyondGrowthLimit.\n\n* Source/WebCore/layout/formattingContexts/grid/TrackSizingAlgorithm.cpp:\n(WebCore::Layout::indexesForUnfrozenAffectedTracks):\n(WebCore::Layout::distributeSpaceEquallyAmongTracks):\n(WebCore::Layout::distributeExtraSpace):\n\nCanonical link: https://commits.webkit.org/318577@main",
      "email": "yulun_wu@apple.com",
      "hash": "763d795e62dca6e1e460b8c71e4b1b1570c2241a",
      "subject": "[GFC] Distribute extra space up to or beyond track limits"
    },
    "318578@main": {
      "author": "Ahmad Saleem",
      "avatar": "https://www.gravatar.com/avatar/38445f84fe28aa19bfeb1f59f6559532?d=identicon\u0026s=64",
      "cl": "318578@main",
      "clUrl": "https://commits.webkit.org/318578@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320994\nrdar://184027192\n\nReviewed by Taher Ali.\n\nSeveral data members in WebCore/svg rely solely on their constructors'\ninitializer lists, leaving them indeterminate if a future constructor\nforgets them. Give them default member initializers instead, and let\nSVGPathSegListSource initialize m_itemEnd in its initializer list rather\nthan in the constructor body.\n\nNo change in behavior.\n\n* Source/WebCore/svg/SVGDocumentExtensions.h:\n* Source/WebCore/svg/SVGPathSegListSource.cpp:\n(WebCore::SVGPathSegListSource::SVGPathSegListSource):\n* Source/WebCore/svg/SVGPathSegListSource.h:\n* Source/WebCore/svg/SVGPathStringViewSource.h:\n* Source/WebCore/svg/animation/SMILTime.h:\n* Source/WebCore/svg/properties/SVGAnimationAdditiveFunction.h:\n\nCanonical link: https://commits.webkit.org/318578@main",
      "email": "ahmad.saleem792+github@gmail.com",
      "hash": "96ee85e3dabbd1fd822925d0bdcf4b59bbc9d298",
      "subject": "Use default member initializers for uninitialized data members in WebCore/svg"
    },
    "318579@main": {
      "author": "Yulun Wu",
      "avatar": "https://www.gravatar.com/avatar/9e34d6632f4d926cdf6fe8dce07f9cb7?d=identicon\u0026s=64",
      "cl": "318579@main",
      "clUrl": "https://commits.webkit.org/318579@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=321016\nrdar://184053449\n\nReviewed by Alan Baradlay.\n\nUpstream commit: https://github.com/web-platform-tests/wpt/commit/8c0f2de6e4b7ac75d0bca8119443f9fa37c3479a\n\n* LayoutTests/imported/w3c/web-platform-tests/tools/metadata/meta/tests/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/tools/metadata/meta/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/tools/metadata/tests/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/tools/metadata/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/tools/metadata/webfeatures/schema.py:\n* LayoutTests/imported/w3c/web-platform-tests/tools/metadata/webfeatures/tests/test_schema.py:\n* LayoutTests/imported/w3c/web-platform-tests/tools/metadata/webfeatures/tests/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/tools/metadata/webfeatures/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/tools/metadata/yaml/tests/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/tools/metadata/yaml/w3c-import.log:\n\nCanonical link: https://commits.webkit.org/318579@main",
      "email": "yulun_wu@apple.com",
      "hash": "375cc9aa57859d8677dd2a87ef5c4ed9884e9b8e",
      "subject": "Sync `tools/metadata` from WPT Upstream"
    },
    "318580@main": {
      "author": "Adrian Perez de Castro",
      "avatar": "https://www.gravatar.com/avatar/30ffea8cf404586741a8f5f7110c0914?d=identicon\u0026s=64",
      "cl": "318580@main",
      "clUrl": "https://commits.webkit.org/318580@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=321005\n\nUnreviewed Skia update.\n\n% git log --pretty='%h %s' bb33c115454b273613c515245ec3d4ae0a305b0b..2c88cbf6fba335c230bab575b3f76a030f30cc41\n2c88cbf6fb Reland \"[text] Introduce PackedGPUGlyphID to add more metadata to SkPackedGlyphID\"\na8583a0a2c Manual roll Dawn from 36cf1fae0cd8 to a488846c0f17 (18 revisions)\n1a5ec8d183 Roll vulkan-deps from fd9ab9744d0b to b2accf345f13 (2 revisions)\n48b58ee222 Revert \"[text] Introduce PackedGPUGlyphID to add more metadata to SkPackedGlyphID\"\nde62f3d37a Roll recipe dependencies (trivial).\n05609b631e Roll recipe dependencies (trivial).\nc9133918a9 Roll ANGLE from 272d37f4cc0c to 91d2d125ec00 (9 revisions)\nb05116a246 Roll Skia Infra from 9c262f334dfc to 45efa0244bed (19 revisions)\nee1d7a7dac Roll debugger-app-base from 72e9d968d26a to 1923fa1074e1\nd756d7f318 Roll recipe dependencies (trivial).\nb15fab3cfe Roll recipe dependencies (trivial).\n76d6047ee7 Roll vulkan-deps from af17ae0ac3a5 to fd9ab9744d0b (9 revisions)\nf82e81ea65 [text] Introduce PackedGPUGlyphID to add more metadata to SkPackedGlyphID\nd0ea09a022 Update viewer help flags\na08d918ebd [Graphite] Add explicit root nodes struct\n2ada93590a Avoid integer overflow in SkRasterPipeline\ne637676adf Add exemption to mutex Presubmit check\n958c1c1921 Optimize VulkanAMDMemoryAllocator::totalAllocatedAndUsedMemory()\n03da3cbfec Roll recipe dependencies (trivial).\n2ca62ca2b6 [graphite] Use ComplementRect for faster bounds intersection tests in Layer\n62e4d651bc [Formatting] Replace tabs with spaces\nabecb0dc02 Manually Roll Dawn from e832cc409215 to 36cf1fae0cd8 (38 revisions)\n68efb3f2ad Roll vulkan-deps from 84f40b5d1039 to af17ae0ac3a5 (1 revision)\n5a761eb826 Roll recipe dependencies (trivial).\n4c9f8b4805 Roll recipe dependencies (trivial).\n15a62a460e Roll debugger-app-base from 2d7debe40c61 to 72e9d968d26a\n3ada55ca32 Roll ANGLE from 0e5d32f40590 to 272d37f4cc0c (20 revisions)\na4c416782d Roll Skia Infra from e5a5eb98eb1c to 9c262f334dfc (8 revisions)\n4205356d4b Roll skottie-base from e34c0f483d40 to 0517426ca15b\ne38373f716 Roll recipe dependencies (trivial).\n39cda9d6d7 Roll shaders-base from 61415213cc70 to 9278a7788a7e\n1c31040989 Roll SKP CIPD package from 570 to 571\ndf13bfb5a5 Roll vulkan-deps from ac9d03694598 to 84f40b5d1039 (1 revision)\n32329e5643 Roll vulkan-deps from 38725942468a to ac9d03694598 (2 revisions)\nebf50520d7 Roll vulkan-deps from 9b3fec1aec6c to 38725942468a (4 revisions)\na7857b2fd2 [Bug] Delete friend class of ContextCtorAccessor\nc81f80eba3 Fix SkPathBuilder::snapshot() with non-affine matrices\n3a120f932d [capture] Add virtual overrides that go to base canvas for slugs/pixel info\n5140cb00db [SkContext] Begin Defining SkContext and SkContextOptions\n65714a94e2 Reland \"[infra] Cleanup after removing Upload tasks\"\nf73c4510d1 [graphite] Track pipeline match and cluster draws by pipeline in Layer\n7ef86a5b0e Roll vulkan-deps from 4ffddf5fb2e7 to 9b3fec1aec6c (14 revisions)\n1831978e15 Roll ANGLE from 22ba45a57477 to 0e5d32f40590 (9 revisions)\n9385d90dcd Roll debugger-app-base from 8f7ec5882f46 to 2d7debe40c61\n0d56f467a4 Roll Skia Infra from 7f1c4bcf56a3 to e5a5eb98eb1c (9 revisions)\ndcbd015c96 Roll bazel_build from d3af3547496f60d9c... to 782dfac458428f99c... (1 revision)\n07f08414dd Roll recipe dependencies (trivial).\ne92f517942 Avoid timeout in SkRegion::setPath\n3934d3095b Add SkLogHandler to SKSLC Bazel\n05facbeeb7 [SkCapture] Fix bug with zoom in viewer and fCaptureEnable\n2cb960e6da [graphite] Fix swapped Vulkan instance version vs. physical device version during init\na1109355de Allow exception for PipelineManager for std::mutex and condition_variable\n033ed42dd8 Roll vulkan-deps from 54cbd6cba08d to 4ffddf5fb2e7 (2 revisions)\n4460f62058 [SkCapture] Introduce a flag for enabling capture in viewer\n60bf20f4be Make it more clear for agents to use --quiet with ninja\n1b8207ec6d [graphite] SparseStrips fix Flatten culling\nb2b8658fa5 [graphite] Test larger transfers in TextureFormatTest\n50cf679104 Revert \"[infra] Cleanup after removing Upload tasks\"\n7a34853d2d [infra] Cleanup after removing Upload tasks\nef4f28527d graphite/dawn: support true Discard load/store ops\n491301f393 Defer DrawPass Pipeline resolution to insertRecording time\n177de1940b Roll ANGLE from c09abf1d3a9f to 22ba45a57477 (13 revisions)\n782dfac458 Roll vulkan-deps from 952256d4e39e to 54cbd6cba08d (5 revisions)\n33af3acc4d Roll Skia Infra from 1ec13b321130 to 7f1c4bcf56a3 (8 revisions)\n146b03fca9 Roll Dawn from 92c4ae4cfeb2 to e832cc409215 (15 revisions)\n8ae1c68a9f Roll bazel_build from 70733f74d415bf389... to d3af3547496f60d9c... (1 revision)\nb8bda91f02 Roll debugger-app-base from 3824c8346c38 to 8f7ec5882f46\na747713516 Roll recipe dependencies (trivial).\n456a140703 Roll recipe dependencies (trivial).\n78afc18c9b Fix mismatch with maps in SkRP\n5b90a364a9 Address incorrect handling of a map pointer in SkRP\n8e17a1b123 Add a global logging handler for Skia clients\nfef135f06e [Bug] Replaced reliance on FcFontSort with FcFontMatch\n6fea713d32 [infra] Remove BuildStats jobs\n371e18862f Fix SkLog license\nd1fde0f4b2 Roll vulkan-deps from 863cb98140c0 to 952256d4e39e (1 revision)\nfb9d2912f6 [graphite] Allow appending to binding lists within a layer when overlaps detected\n096567287d [infra] Move all results uploads into the tasks themselves\n9c9f26f92c [graphite] Rename GradientBuffer to StorageBuffer\n0f35bba494 Reapply \"[infra] Remove all remaining references to gsutil\"\n932102cf4a Update fuzz docs\n3ae9e364d3 Roll recipe dependencies (trivial).\na63b1c5154 Roll ANGLE from ff4855759c68 to c09abf1d3a9f (9 revisions)\nd3af354749 Roll Skia Infra from 42f146e4e61d to 1ec13b321130 (2 revisions)\nad64d25f03 Roll bazel_build from 348e064d2951b8209... to 70733f74d415bf389... (1 revision)\n5d7afa5adc Roll debugger-app-base from a46a65d7ba05 to 3824c8346c38\n3e4d2ad1fd Roll Dawn from 10934785b43b to 92c4ae4cfeb2 (21 revisions)\n119cae3966 Roll jsfiddle-base from 3c8958265e84 to 3b978e3a5600\n\nCanonical link: https://commits.webkit.org/318580@main",
      "email": "aperez@igalia.com",
      "hash": "78b786f7c8bf9216b12c0088c55503ad826c3145",
      "subject": "Update Skia to 2026-08-04 (2c88cbf6fba335c230bab575b3f76a030f30cc41)"
    },
    "318581@main": {
      "author": "Zak Ridouh",
      "avatar": "https://www.gravatar.com/avatar/d9b65ef530b9cbbfc6dff1ca158faace?d=identicon\u0026s=64",
      "cl": "318581@main",
      "clUrl": "https://commits.webkit.org/318581@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320695\nrdar://183678033\n\nReviewed by Charlie Wolfe.\n\nRemoteLayerTreeTransaction's VideoElementData and\nWebPageProxy::BeginTextRecognitionForVideoInElementFullScreen both send a\nprocess-qualified PlaybackSessionContextIdentifier from the web process. Under\nsite isolation both are reachable from a subframe process, so a compromised one\ncould name a media element belonging to another process and reach that process's\nentry in VideoPresentationManagerProxy's context map, or overlay a fullscreen\nvideo it does not own.\n\nSend a bare WebCore::MediaPlayerClientIdentifier in both cases and pair it in the\nUI process with the process identifier of the sending connection, so a foreign\nprocess identifier is unrepresentable rather than checked.\nRemoteLayerTreeHost::updateLayerTree already receives the IPC::Connection; it is\nnow threaded through createLayer() to makeNode(), which has separate mac and iOS\ndefinitions.\n\n* Source/WebKit/Shared/RemoteLayerTree/RemoteLayerTree.serialization.in:\n* Source/WebKit/Shared/RemoteLayerTree/RemoteLayerTreeTransaction.h:\n* Source/WebKit/UIProcess/RemoteLayerTree/RemoteLayerTreeHost.h:\n* Source/WebKit/UIProcess/RemoteLayerTree/RemoteLayerTreeHost.mm:\n(WebKit::RemoteLayerTreeHost::updateLayerTree):\n(WebKit::RemoteLayerTreeHost::createLayer):\n(WebKit::RemoteLayerTreeHost::makeNode):\n* Source/WebKit/UIProcess/RemoteLayerTree/ios/RemoteLayerTreeHostIOS.mm:\n(WebKit::RemoteLayerTreeHost::makeNode):\n* Source/WebKit/UIProcess/WebPageProxy.cpp:\n(WebKit::WebPageProxy::beginTextRecognitionForVideoInElementFullScreen):\n* Source/WebKit/UIProcess/WebPageProxy.h:\n* Source/WebKit/UIProcess/WebPageProxy.messages.in:\n* Source/WebKit/WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeContext.mm:\n(WebKit::RemoteLayerTreeContext::layerDidEnterContext):\n* Source/WebKit/WebProcess/WebPage/WebPage.cpp:\n(WebKit::WebPage::beginTextRecognitionForVideoInElementFullScreen):\n\nCanonical link: https://commits.webkit.org/318581@main",
      "email": "zakr@apple.com",
      "hash": "3d2439c6be9dfd48aeb1244699def19ca0f678ac",
      "subject": "[Site Isolation] Don't send process-qualified media identifiers in the layer tree or text recognition"
    },
    "318582@main": {
      "author": "Jessica Cheung",
      "avatar": "https://www.gravatar.com/avatar/5c102f093ce6bc01424466a4cfdf1d1f?d=identicon\u0026s=64",
      "cl": "318582@main",
      "clUrl": "https://commits.webkit.org/318582@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=321013\nrdar://184051122\n\nReviewed by Abrar Rahman Protyasha.\n\nThe test currently hardcodes the scroll y position, which fails on iPad. To\nmake the test device-agnostic, copy what overlays-content-keyboard-scroll.html\ndoes and calculate the scroll y position instead.\n\n* LayoutTests/fast/visual-viewport/ios/interactive-widget/resizes-content-keyboard-scroll-expected.txt:\n* LayoutTests/fast/visual-viewport/ios/interactive-widget/resizes-content-keyboard-scroll.html:\n\nCanonical link: https://commits.webkit.org/318582@main",
      "email": "jcheung23@apple.com",
      "hash": "9d217749a9aac36b5f13deea61ac7018124c0b4a",
      "subject": "[interactive-widget] resizes-content-keyboard-scroll.html fails on iPadOS"
    },
    "318583@main": {
      "author": "Fujii Hironori",
      "avatar": "https://www.gravatar.com/avatar/ef99cb23f5e5d27977968ca097d9a85f?d=identicon\u0026s=64",
      "cl": "318583@main",
      "clUrl": "https://commits.webkit.org/318583@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320985\n\nReviewed by Adrian Perez de Castro.\n\nEven with USE_SYSTEM_UNIFDEF=0, WPE builds failed due to the missing system\n`unifdef` command. 283695@main added the USE_SYSTEM_UNIFDEF option, and moved\n\"find_package(Unifdef REQUIRED)\" from OptionsGTK.cmake to\nSource/CMakeLists.txt. Removed it from OptionsWPE.cmake too.\n\n* Source/cmake/OptionsWPE.cmake:\n\nCanonical link: https://commits.webkit.org/318583@main",
      "email": "fujii@igalia.com",
      "hash": "002fc666104982d7d47ec021c21901d59a76ce8d",
      "subject": "[CMake][WPE] Remove \"find_package(Unifdef REQUIRED)\" from OptionsWPE.cmake"
    },
    "318584@main": {
      "author": "Ahmad Saleem",
      "avatar": "https://www.gravatar.com/avatar/38445f84fe28aa19bfeb1f59f6559532?d=identicon\u0026s=64",
      "cl": "318584@main",
      "clUrl": "https://commits.webkit.org/318584@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320980\nrdar://184013239\n\nReviewed by Frédéric Wang Nélar.\n\nThis patch aligns WebKit with Gecko / Firefox and Blink / Chromium.\n\n`as` is an enumerated attribute [1], so determining its state is an ASCII case-insensitive match\nagainst its keywords [2] -- the union of the preload destinations and the module preload\ndestinations.\n\n`LinkLoader::resourceTypeFromAsAttribute()` instead passed the raw attribute value to\n`parseEnumerationFromString\u003cFetchRequestDestination\u003e()`, which looks the value up in a\n`SortedArrayMap` of `ComparableASCIILiteral` and so compares case-sensitively. `\u003clink\nrel=preload as=\"IMAGE\"\u003e` was therefore treated as having no valid `as` value: the console got\n\"\u003clink rel=preload\u003e must have a valid `as` value\" and nothing was fetched, from either the\npreload scanner or the link element. `as=\"FETCH\"` was unaffected, because that keyword is\nchecked separately with `equalLettersIgnoringASCIICase()`.\n\nWebKit already performs the case-insensitive match one layer up: `HTMLLinkElement::as()`, the\ngetter behind `link.as`, compares its keywords with `equalLettersIgnoringASCIICase()` and returns\nthe canonical keyword [2] in lowercase. So `link.as` reported \"image\" for `as=\"IMAGE\"` while the\nloader refused to load it.\n\nLowercase the value before parsing it, which is what the bindings generator already emits when\nreflecting enumerated content attributes.\n\n[1] https://html.spec.whatwg.org/multipage/semantics.html#attr-link-as\n[2] https://html.spec.whatwg.org/multipage/common-microsyntaxes.html#enumerated-attribute\n\nTest: imported/w3c/web-platform-tests/preload/link-preload-as-case-insensitive.html\n\n* LayoutTests/imported/w3c/web-platform-tests/preload/link-preload-as-case-insensitive-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/preload/link-preload-as-case-insensitive.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/preload/modulepreload-as-expected.txt: Progression\n* Source/WebCore/loader/LinkLoader.cpp:\n(WebCore::LinkLoader::resourceTypeFromAsAttribute):\n\nCanonical link: https://commits.webkit.org/318584@main",
      "email": "ahmad.saleem792+github@gmail.com",
      "hash": "484d5bdbd1e21e8a66b88477850d8d7553fb3094",
      "subject": "`\u003clink rel=preload as\u003e` keywords should be matched ASCII case-insensitively"
    }
  },
  "date": "2026-08-04",
  "days": 1,
  "generatedAt": "2026-08-04T22:13:00Z",
  "markdown": "## Highlights\n- **Security** Site isolation stops sending process-qualified media identifiers through layer tree and text recognition paths, reducing cross-process identifier leakage. [commit 318581@main](https://commits.webkit.org/318581@main)\n- **Perf** WebGPU bundle execution no longer replays indirect-draw bundles and rebuilds indirect command buffers on every call, fixing a reported 30x frame rate collapse. [commit 318538@main](https://commits.webkit.org/318538@main)\n- **Web Platform** Grid formatting context track sizing now accounts for gutters and distributes extra space correctly up to and beyond track limits, tightening CSS Grid behavior. [commit 318577@main](https://commits.webkit.org/318577@main) [commit 318576@main](https://commits.webkit.org/318576@main)\n- **DevTools** Web Inspector can now map WebAssembly byte offsets back to original source via source maps, making real-world Wasm debugging much less painful. [commit 318546@main](https://commits.webkit.org/318546@main)\n- **Media** WebKit adds AsyncImageDecoder, laying groundwork for more flexible non-blocking image decode pipelines. [commit 318501@main](https://commits.webkit.org/318501@main)\n- **Web Platform** `portal-transform` lands with initial support, expanding the implementation surface for portal-related visual effects. [commit 318536@main](https://commits.webkit.org/318536@main)\n- **Perf** CoordinatedGraphics now releases the platform layer lock while recording and replaying tiles, which should cut avoidable contention in compositing. [commit 318554@main](https://commits.webkit.org/318554@main)\n- **V8** JavaScriptCore enables the iterator join proposal and turns on V8 memory64 tests, pushing both language feature coverage and Wasm conformance forward. [commit 318502@main](https://commits.webkit.org/318502@main) [commit 318563@main](https://commits.webkit.org/318563@main)\n- **UI** Inspector frame indicators now show `pid=` labels and stagger by nesting depth, making multi-process frame debugging easier to scan. [commit 318572@main](https://commits.webkit.org/318572@main)\n\n## What landed by area\n\n### CSS and layout\n- **Web Platform** `\u003clink rel=preload as\u003e` keywords are now matched ASCII case-insensitively, aligning preload parsing with web reality. [commit 318584@main](https://commits.webkit.org/318584@main)\n- **Web Platform** Grid track sizing distributes extra space correctly up to or past track limits. [commit 318577@main](https://commits.webkit.org/318577@main)\n- **Web Platform** Grid track sizing now accounts for gutters when computing distributable space. [commit 318576@main](https://commits.webkit.org/318576@main)\n- **Rendering** `text-align: justify` no longer justifies the last line in block-in-inline cases. [commit 318562@main](https://commits.webkit.org/318562@main)\n- **Rendering** Outside list markers stay attached to the list item and get positioned after layout, fixing long-standing marker placement bugs tied to [bug 192980](https://bugs.webkit.org/show_bug.cgi?id=192980). [commit 318561@main](https://commits.webkit.org/318561@main)\n- **Rendering** Line-height units now evaluate correctly under zoom in EvaluationTimeZoom code paths. [commit 318558@main](https://commits.webkit.org/318558@main)\n- **Web Platform** `random-item()` is now rejected in `@container style()` queries per css-values-5 expectations. [commit 318550@main](https://commits.webkit.org/318550@main)\n- **Web Platform** Initial support for `portal-transform` lands behind the implementation work. [commit 318536@main](https://commits.webkit.org/318536@main)\n- **Rendering** A site-specific zoom bug on moneycontrol.com that caused overlapping content at 50% is fixed. [commit 318509@main](https://commits.webkit.org/318509@main)\n- **A11y** GLib expectations are updated for newly passing `corner-shape` tests, reflecting better rendering parity. [commit 318503@main](https://commits.webkit.org/318503@main)\n\n### SVG, images, canvas, and graphics\n- **Web Platform** `\u003canimateMotion\u003e` now respects numeric `rotate` values. [commit 318565@main](https://commits.webkit.org/318565@main)\n- **Web Platform** `\u003csvg:image\u003e` `auto` sizing now follows the CSS default sizing algorithm, fixing behavior from [bug 194815](https://bugs.webkit.org/show_bug.cgi?id=194815). [commit 318548@main](https://commits.webkit.org/318548@main)\n- **Rendering** SVG external resources move to preview status, a notable step for broader feature exposure. [commit 318543@main](https://commits.webkit.org/318543@main)\n- **Web Platform** `imagesrcset` now correctly overrides `href` for `\u003clink rel=\"preload\" as=\"image\"\u003e`. [commit 318544@main](https://commits.webkit.org/318544@main)\n- **Media** AsyncImageDecoder is introduced for asynchronous image decoding work. [commit 318501@main](https://commits.webkit.org/318501@main)\n- **Perf** CanvasRenderingContext2DBase now caches a generic ArrayPixelBuffer to avoid repeat allocation and conversion churn. [commit 318518@main](https://commits.webkit.org/318518@main)\n- **Rendering** WebKit resyncs SVG coverage from upstream WPT, bringing in a broader conformance baseline. [commit 318559@main](https://commits.webkit.org/318559@main)\n\n### JavaScriptCore, Wasm, and regex\n- **V8** JSC stops truncating table64 maximum size to `uint32_t`, an important correctness fix for memory64-scale Wasm usage. [commit 318575@main](https://commits.webkit.org/318575@main)\n- **V8** BBQJIT fixes an incorrect `addTableCopy` assertion. [commit 318574@main](https://commits.webkit.org/318574@main)\n- **V8** Temporal consolidates PrepareCalendarFields and fixes a `monthCode` TypeError regression. [commit 318566@main](https://commits.webkit.org/318566@main)\n- **Build** JSC now computes builtin executable metadata in a Python script, simplifying part of the generation pipeline. [commit 318564@main](https://commits.webkit.org/318564@main)\n- **V8** V8 memory64 tests are enabled in JSC's test coverage. [commit 318563@main](https://commits.webkit.org/318563@main)\n- **Perf** JSC avoids `$vm` dictionary transitions on Wasm GC objects. [commit 318552@main](https://commits.webkit.org/318552@main)\n- **V8** `String#localeCompare` now caches the collator for string locales, reducing repeat setup overhead. [commit 318542@main](https://commits.webkit.org/318542@main)\n- **V8** `AbstractInterpreter::forAllValues` now handles tuple nodes correctly. [commit 318541@main](https://commits.webkit.org/318541@main)\n- **Perf** YARR lets `\\\\A` and `\\\\z` reuse anchoring optimizations already used by non-multiline `^` and `$`. [commit 318540@main](https://commits.webkit.org/318540@main)\n- **V8** DFG's `Function#bind` strength reduction now accepts method structures. [commit 318527@main](https://commits.webkit.org/318527@main)\n- **Refactor** JSC gets follow-up cleanups after ARMv7 JIT removal. [commit 318525@main](https://commits.webkit.org/318525@main)\n- **Perf** JSC splits eager and lazy JIT thunks. [commit 318524@main](https://commits.webkit.org/318524@main)\n- **V8** JSC uses first-character filtering even for `UntypedUse` edges. [commit 318512@main](https://commits.webkit.org/318512@main)\n- **Refactor** JSC removes now-unneeded scratch registers from several 64-bit branch helpers. [commit 318511@main](https://commits.webkit.org/318511@main)\n- **Perf** Two rarely executed lexer and parser paths move out of hot functions. [commit 318507@main](https://commits.webkit.org/318507@main)\n- **Perf** JSBigInt Crandall reduction makes its first corrective subtract branch-free. [commit 318506@main](https://commits.webkit.org/318506@main)\n- **V8** `JSWebAssemblyInstance::updateCachedMemories()` no longer crashes on partially linked instances. [commit 318505@main](https://commits.webkit.org/318505@main)\n- **V8** Temporal guards PlainDate construction against out-of-range years and consolidates CalendarResolveFields. [commit 318504@main](https://commits.webkit.org/318504@main)\n- **V8** JSC enables the iterator join proposal. [commit 318502@main](https://commits.webkit.org/318502@main)\n\n### Web Inspector and developer tooling\n- **UI** Frame process indicators now include `pid=` labels and stagger visually by nesting depth. [commit 318572@main](https://commits.webkit.org/318572@main)\n- **DevTools** Canvas recording assigns object identifiers per type, improving recording stability and readability. [commit 318567@main](https://commits.webkit.org/318567@main)\n- **DevTools** Canvas recording no longer treats missing `console.record()` options as if they were present. [commit 318555@main](https://commits.webkit.org/318555@main)\n- **DevTools** Web Inspector maps WebAssembly byte offsets to original source through source maps. [commit 318546@main](https://commits.webkit.org/318546@main)\n- **DevTools** A regression in Canvas recording for swizzled WebGPU object arguments is fixed after [commit 318407@main](https://commits.webkit.org/318407@main). [commit 318545@main](https://commits.webkit.org/318545@main)\n- **Build** `run-jsc-stress-tests` now prints per-test execution times when the progress meter is enabled. [commit 318568@main](https://commits.webkit.org/318568@main)\n- **DevTools** Canvas recordings now show icons for recorded WebGL and WebGPU actions. [commit 318517@main](https://commits.webkit.org/318517@main)\n- **Build** `check-webkit-style` drops a dead WPT lint exclusion rule. [commit 318523@main](https://commits.webkit.org/318523@main)\n- **Build** `check-webkit-style --diff-files` now respects the specified file paths instead of scanning the entire branch diff. [commit 318519@main](https://commits.webkit.org/318519@main)\n- **Build** WebDriver persistent failures get a July 2026 gardening pass. [commit 318521@main](https://commits.webkit.org/318521@main)\n\n### Media, audio, and PDF\n- **Security** Biquad and DirectConvolver are hardened by routing Accelerate DSP calls through span-based VectorMath helpers. [commit 318530@main](https://commits.webkit.org/318530@main)\n- **Media** `AudioContext.close()` now rejects when called on an already closed context. [commit 318522@main](https://commits.webkit.org/318522@main)\n- **Media** AudioBufferSourceNode `detune` no longer diverges between k-rate AudioParam input and equivalent automation. [commit 318516@main](https://commits.webkit.org/318516@main)\n- **Media** AudioScheduledSourceNode now fires `ended` even when not connected to the destination. [commit 318515@main](https://commits.webkit.org/318515@main)\n- **Media** A flaky WebAudio WPT for short loop duration is fixed upstream in WebKit's imported copy. [commit 318514@main](https://commits.webkit.org/318514@main)\n- **UI** Alternate PDF HUD view visibility is fixed so it appears when the cursor approaches it. [commit 318529@main](https://commits.webkit.org/318529@main)\n- **UI** Alternate PDF HUD view test failures are fixed to stabilize that path. [commit 318569@main](https://commits.webkit.org/318569@main)\n- **Media** A fullscreen black-screen regression affecting Moon Player's AI-enhanced 3D playback is fixed. [commit 318498@main](https://commits.webkit.org/318498@main)\n- **Media** An intermittent `audio-session-category-capture-audio-context.html` failure is addressed. [commit 318551@main](https://commits.webkit.org/318551@main)\n\n### Networking, loading, and security policy\n- **Networking** `DocumentLoader::subresource()` now strips fragment identifiers before resource lookup, fixing cache and matching behavior. [commit 318553@main](https://commits.webkit.org/318553@main)\n- **Refactor** Duplicate `m_exceptionCode` assignment is removed from `XMLHttpRequest::didReachTimeout()`. [commit 318533@main](https://commits.webkit.org/318533@main)\n- **Refactor** An unreachable null check is removed from `XMLHttpRequestUpload::scriptExecutionContext()`. [commit 318532@main](https://commits.webkit.org/318532@main)\n- **Security** Content Security Policy WPTs are synced from upstream, tightening policy conformance coverage. [commit 318528@main](https://commits.webkit.org/318528@main)\n- **Privacy** A macOS assertion around `NetworkStorageSession` cookie versioning gets a gardening fix. [commit 318500@main](https://commits.webkit.org/318500@main)\n- **Networking** WebContent Development XPC service can again load a locally built injected bundle. [commit 318571@main](https://commits.webkit.org/318571@main)\n- **UI** Error reporting improves by replacing an unhelpful generic `InvalidStateError` string with better context. [commit 318520@main](https://commits.webkit.org/318520@main)\n\n### Site isolation, platform UI, and API surface\n- **Security** Site isolation removes process-qualified media identifiers from layer tree and text recognition traffic. [commit 318581@main](https://commits.webkit.org/318581@main)\n- **Mobile** iOS site isolation fixes cross-site iframe selection endpoint adjustment. [commit 318508@main](https://commits.webkit.org/318508@main)\n- **Mobile** `interactive-widget` layout tests are reorganized into a dedicated directory. [commit 318573@main](https://commits.webkit.org/318573@main)\n- **Refactor** `InteractiveWidget` is refactored to `InteractiveWidgetValue`. [commit 318560@main](https://commits.webkit.org/318560@main)\n- **Mobile** An iPadOS failure in `resizes-content-keyboard-scroll.html` is addressed for `interactive-widget`. [commit 318582@main](https://commits.webkit.org/318582@main)\n- **UI** SwiftUI WebKit API exposes `_attachmentElementEnabled` and `_imageControlsEnabled` on `WebPage.Configuration`. [commit 318513@main](https://commits.webkit.org/318513@main)\n- **UI** SwiftUI WebKit API exposes `_overrideViewportWithArguments` on `WebPage`. [commit 318497@main](https://commits.webkit.org/318497@main)\n- **Web Platform** Custom Highlight API adds the `highlightsFromPoint()` IDL surface behind a feature flag. [commit 318510@main](https://commits.webkit.org/318510@main)\n- **A11y** Text Extraction makes stale node UID resolution heuristics more lenient. [commit 318499@main](https://commits.webkit.org/318499@main)\n\n### GTK, WPE, and coordinated graphics\n- **Build** WPE CMake stops requiring `Unifdef` in `OptionsWPE.cmake`. [commit 318583@main](https://commits.webkit.org/318583@main)\n- **Build** WKCI for WPE and GTK switches to Clang by default, repurposes Clang bots to GCC, and removes LibWebRTC bots. [commit 318539@main](https://commits.webkit.org/318539@main)\n- **UI** GTK and WPE content view breakage on GitLab is fixed. [commit 318557@main](https://commits.webkit.org/318557@main)\n- **Perf** CoordinatedGraphics releases the `CoordinatedPlatformLayer` lock during tile recording and replay. [commit 318554@main](https://commits.webkit.org/318554@main)\n- **Refactor** CoordinatedAnimatedBackingStoreClient ownership moves to CoordinatedBackingStoreProxy. [commit 318535@main](https://commits.webkit.org/318535@main)\n- **Perf** GTK and WPE now use damage for compositing by default. [commit 318526@main](https://commits.webkit.org/318526@main)\n\n### Core engine cleanup and test sync\n- **Refactor** WebCore SVG code adopts default member initializers for previously uninitialized data members. [commit 318578@main](https://commits.webkit.org/318578@main)\n- **Refactor** Swift-in-WebKit code replaces Swift platform compilation conditions with WTF ones. [commit 318570@main](https://commits.webkit.org/318570@main)\n- **Refactor** `StyleProperties::hasProperty` is added as a new utility. [commit 318556@main](https://commits.webkit.org/318556@main)\n- **Refactor** `StackBounds::currentThreadStackBoundsInternal` is made `WTF_EXPORT_PRIVATE`. [commit 318549@main](https://commits.webkit.org/318549@main)\n- **Refactor** `WTF.BorrowedBytes` gets explicit aliasing semantics documentation. [commit 318547@main](https://commits.webkit.org/318547@main)\n- **Refactor** `StackBounds::currentThreadStackBounds()` is made private to `Thread`. [commit 318534@main](https://commits.webkit.org/318534@main)\n- **Perf** Returning `RegionFixedPair` from `Document` now avoids unnecessary `Region` copies. [commit 318531@main](https://commits.webkit.org/318531@main)\n- **Build** WPT metadata is synced from upstream. [commit 318579@main](https://commits.webkit.org/318579@main)\n- **Build** CSP tests are synced from upstream WPT. [commit 318528@main](https://commits.webkit.org/318528@main)\n- **Build** A flaky custom highlight WPT remains under gardening attention after [commit 317439@main](https://commits.webkit.org/317439@main). [commit 318496@main](https://commits.webkit.org/318496@main)\n- **Media** A nearly permanent site-isolation media-stream test failure gets attention in gardening. [commit 318537@main](https://commits.webkit.org/318537@main)\n\n## Reverts \u0026 Reapplies\n\nNone.",
  "repo": "webkit",
  "repoDisplay": "WebKit",
  "rollGroups": [],
  "since": "2026-08-04",
  "totals": {
    "commits": 89,
    "features": 89,
    "rolls": 0
  },
  "until": "2026-08-04"
}