{
  "commits": {
    "319316@main": {
      "author": "Sam Sneddon",
      "avatar": "https://www.gravatar.com/avatar/99f6b56d9db9d32920dfcc56deae86fc?d=identicon\u0026s=64",
      "cl": "319316@main",
      "clUrl": "https://commits.webkit.org/319316@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=321968\nrdar://185152046\n\nUnreviewed infrastructure fix.\n\nThis regressed in 319313@main (761e61f4ad96), from bug 316952.\n\nWe didn't udpate webkitscmpy.program.install_hooks for the change of\nAPI, and we don't have Python type checking to have caught this.\n\n* Tools/Scripts/libraries/webkitscmpy/webkitscmpy/program/install_hooks.py:\n(InstallHooks.main):\n* Tools/Scripts/libraries/webkitscmpy/webkitscmpy/test/install_hooks_unittest.py:\n(TestInstallHooks.write_hook):\n(TestInstallHooks.test_install_hook_with_identifier_trailer):\n\nCanonical link: https://commits.webkit.org/319316@main",
      "email": "gsnedders@apple.com",
      "hash": "3b2d705682005c60ac866d2dced440a9bc1458d5",
      "subject": "git-webkit install-hooks is failing - AttributeError: 'IdentifierTrailer' object has no attribute 'split'"
    },
    "319317@main": {
      "author": "Ahmad Saleem",
      "avatar": "https://www.gravatar.com/avatar/38445f84fe28aa19bfeb1f59f6559532?d=identicon\u0026s=64",
      "cl": "319317@main",
      "clUrl": "https://commits.webkit.org/319317@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=321876\nrdar://185057290\n\nReviewed by Mike Wyrzykowski.\n\nRepeated drawIndirect/drawIndexedIndirect in one render pass could hang the GPU\nunrecoverably, because every clamping draw against a given arguments buffer wrote\nits clamped arguments into the same scratch slot and then fetched them from it\nwith no ordering against the neighbouring draws doing the same.\n\nRenderPassEncoder::clampIndirectBufferToValidValues and\nclampIndirectIndexBufferToValidValues wrote into Buffer::indirectBuffer() /\nBuffer::indirectIndexedBuffer(): one scratch slot per Buffer, sized for exactly\none arguments struct, returned at offset 0. Every clamping draw was therefore\nissued as\n\ndrawPrimitives:indirectBuffer:\u003csameSlot\u003e indirectBufferOffset:0\n\nThe clamp path is entered whenever computeMininumVertexInstanceCount can lower\neither minimum, i.e. whenever the pipeline declares a required vertex buffer\nlayout with a positive stride and at least one attribute -- whether or not the\nshader ever reads it. Zero-attribute and undefined-stride layouts are dropped in\ncreateVertexDescriptor before requiredBufferIndices is populated and cannot lower\na minimum, so they take the early-out that returns the application's own buffer\nand offset.\n\nemitMemoryBarrier() emits a vertex-\u003evertex MTLBarrierScopeBuffers barrier between\na draw's clamp dispatch and that same draw's indirect draw, which covers the\nread-after-write within one draw. Nothing is emitted between draw N's indirect\nargument fetch and draw N+1's clamp dispatch, and on Apple8 and later\nmemoryBarrierLimit is UINT32_MAX unless shader validation is enabled\n(HardwareCapabilities.mm:264), so splitRenderPass() never fires and never\nseparates them either. Draw N+1's clamp vertex shader therefore stores to the\nsame bytes draw N is fetching its arguments from, with no ordering between them,\nand MTLRenderStages has no way to name the argument fetch so no barrier can\nexpress the constraint. Draw N can observe draw N+1's counts, or a torn mixture\nof the two, since the clamp shader stores vertexCount, instanceCount, vertexStart\nand baseInstance as four separate stores. A large-instance-count draw issued with\narguments its own bounds no longer describe is consistent with the reported AGX\ntiler progress timeout. Apple7 gets a memoryBarrierLimit of 512 from mac2() and\ncapabilities merge with std::min, so splitRenderPass() does eventually fire\nthere, which bounds the window rather than closing it: the slot is still shared\nby every draw between two splits.\n\nBuffer::m_indirectCache was a single struct, not a map, keyed on (indirectOffset,\nminVertexCount, minInstanceCount, drawType), so consecutive draws at different\noffsets out of one arguments buffer missed it on every draw and every one of them\nre-ran the clamp into the shared slot.\n\nThe fix is to allocate per-draw scratch, which is what the two other clamp sites\nin this file already do: clampIndexBufferToValidValues (the non-indirect indexed\npath) uses Queue::newTemporaryBufferWithBytes directly, and the batched\nexecuteBundles helpers added in 59b6d9a2d027 use newZeroedIndirectScratch.\nnewTemporaryBufferWithBytes bump-allocates a distinct 64-byte-aligned offset out\nof a pooled buffer. Both direct-path clamps now do the same and return\n(scratch, offset); the per-Buffer m_indirectBuffer / m_indirectIndexedBuffer\nslots are removed. Metal requires indirectBufferOffset to be a multiple of 4, so\n64-byte-aligned offsets satisfy it with headroom.\n\nm_indirectCache is removed with them. A cache hit would have to return the same\nscratch it validated, and the pooled allocator recycles, so the skip cannot be\nkept as-is; every clamping indirect draw now runs one point dispatch, which is\nthe cost the batched path already accepts. Removing the skip also makes\nBuffer::skippedDrawIndirectValidation, skippedDrawIndirectIndexedValidation,\ntakeSlowIndirectValidationPath and takeSlowIndirectIndexValidationPath dead:\nthey existed only to re-verify on the CPU at commit time when a skipped clamp\nmight have gone stale. The GPU clamp now always runs in the same command buffer\nas the draw and always reads the current arguments. The non-indirect index\nvalidation cache and takeSlowIndexValidationPath are untouched, and\nm_mustTakeSlowIndexValidationPath still has a live reader in CommandEncoder.mm.\n\nBecause the recomputation cache no longer suppresses most of them, the\ndevice-loss readback would otherwise run once per clamping indirect draw, each\ntime installing an addCompletedHandler plus two Queue::scheduleWork main-thread\nhops (releaseCounterSampleBuffer schedules its own). The encoderHandle is\nCommandEncoder::uniqueId(), identical for every draw in the pass, so the\nper-draw retain/release of the counter sample buffer was redundant as well.\nRenderPassEncoder::trackIndirectDeviceLostCheck now accumulates the scratch\nrecords in a ThreadSafeRefCounted holder and installs a single completion handler\non the first clamp of the pass, so N clamping draws cost one handler and one\nscheduleWork pair instead of N and 2N. Appends can never race that handler:\nRETURN_IF_FINISHED() rejects every draw once the parent encoder is finished, and\nCommandEncoder::finish is the only commit path, so all appends precede commit.\nEntries hold RetainPtr, keeping scratch alive independently of\nCommandEncoder::addBuffer (which is a no-op unless shader validation is on,\nsince m_retainedBuffers is only allocated in that case).\n\ndrawIndirect and drawIndexedIndirect bounded the arguments struct against the\nwhole buffer length, which is no longer sufficient once the arguments live at a\nnon-zero offset in a pooled buffer; both now bound offset + sizeof(args) against\nthe length. A nil buffer from a failed clamp has length 0 and is still rejected,\nwhich also replaces the removed !indirectBuffer early-out.\n\ndrawIndexedIndirect was not covered by the original report but shares the same\ndefect, and consumed both scratch slots.\n\nThe new layout test is a correctness test for the shape in question -- two\ndrawIndirect calls in one pass out of one arguments buffer, each selecting a\ndifferently coloured triangle via firstVertex and scissored to its own pixel, so\na clobbered record renders the wrong colour. It is not a deterministic pre-patch\nfailure, because the underlying defect is a race; the reproduction attached to\nthe bug is the stronger signal.\n\n* Source/WebGPU/WebGPU/Buffer.h:\n(WebGPU::Buffer::buffer const):\n(WebGPU::Buffer::indirectIndexedBuffer const): Deleted.\n* Source/WebGPU/WebGPU/Buffer.mm:\n(WebGPU::Buffer::Buffer):\n(WebGPU::Buffer::indirectBufferInvalidated):\n(WebGPU::Buffer::indirectBuffer const): Deleted.\n(WebGPU::Buffer::takeSlowIndirectIndexValidationPath): Deleted.\n(WebGPU::verifyIndirectBufferData): Deleted.\n(WebGPU::Buffer::takeSlowIndirectValidationPath): Deleted.\n(WebGPU::Buffer::skippedDrawIndirectIndexedValidation): Deleted.\n(WebGPU::Buffer::skippedDrawIndirectValidation): Deleted.\n(WebGPU::Buffer::indirectBufferRequiresRecomputation const): Deleted.\n(WebGPU::Buffer::indirectIndexedBufferRequiresRecomputation const): Deleted.\n(WebGPU::Buffer::indirectBufferRecomputed): Deleted.\n(WebGPU::Buffer::indirectIndexedBufferRecomputed): Deleted.\n* Source/WebGPU/WebGPU/RenderPassEncoder.h:\n* Source/WebGPU/WebGPU/RenderPassEncoder.mm:\n(WebGPU::RenderPassEncoder::trackIndirectDeviceLostCheck):\n(WebGPU::RenderPassEncoder::newZeroedIndirectScratch):\n(WebGPU::RenderPassEncoder::clampIndirectIndexBufferToValidValues):\n(WebGPU::RenderPassEncoder::clampIndirectBufferToValidValues):\n(WebGPU::RenderPassEncoder::clampIndirectBufferDispatchBatched):\n(WebGPU::RenderPassEncoder::clampIndirectIndexBufferDispatch1Batched):\n(WebGPU::RenderPassEncoder::drawIndexedIndirect):\n(WebGPU::RenderPassEncoder::drawIndirect):\n(WebGPU::checkForIndirectDrawDeviceLost): Deleted.\n\nCanonical link: https://commits.webkit.org/319317@main",
      "email": "ahmad.saleem792+github@gmail.com",
      "hash": "6dca6330dba27ff589985db50e5e259f71a44f61",
      "subject": "[WebGPU] drawIndirect/drawIndexedIndirect clamp into a single per-Buffer scratch slot, racing every other indirect draw in the same render pass"
    },
    "319318@main": {
      "author": "Richard Robinson",
      "avatar": "https://www.gravatar.com/avatar/a0d2f862985ed0fd47887be66f5a3e4f?d=identicon\u0026s=64",
      "cl": "319318@main",
      "clUrl": "https://commits.webkit.org/319318@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=321909\nrdar://185083115\n\nReviewed by Abrar Rahman Protyasha.\n\nAdd two rules:\n\n1. Do not use `WK_SWIFT_UI_ACTOR` instead of the normal `NS_SWIFT_UI_ACTOR` (and likewise for the other macros)\n2. Use the NS_HEADER_AUDIT_BEGIN/NS_HEADER_AUDIT_END macros instead of the old NS_ASSUME_NONNULL_BEGIN/NS_ASSUME_NONNULL_END ones\n\n* Tools/Scripts/webkitpy/style/checkers/cpp.py:\n(check_objc_annotation_macros):\n(process_line):\n(CppChecker):\n* Tools/Scripts/webkitpy/style/checkers/cpp_unittest.py:\n(WebKitStyleTest):\n\nCanonical link: https://commits.webkit.org/319318@main",
      "email": "richard_robinson2@apple.com",
      "hash": "78207cb5dcf7665cf25d51e1d7c18d0b0346f1d7",
      "subject": "Add a style checker rule to enforce better API header hygiene"
    },
    "319319@main": {
      "author": "Elliott Williams",
      "avatar": "https://www.gravatar.com/avatar/4086acbe078d65242df929cb51298130?d=identicon\u0026s=64",
      "cl": "319319@main",
      "clUrl": "https://commits.webkit.org/319319@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=321630\nrdar://184758552\n\nUnreviewed build fix.\n\nThe xcconfig change to disable SPI checking on older release versions of\nthe internal SDK did not take in WebCore, because it partially redefines\nWK_DEFAULT_WK_AUDIT_SPI. Fix by changing how we toggle audit-spi such\nthat WebCore *only* redefines the logic which checks for InstallAPI.\n\n* Source/WebCore/Configurations/WebCore.xcconfig:\n* Configurations/CommonBase.xcconfig:\n\nCanonical link: https://commits.webkit.org/319319@main",
      "email": "emw@apple.com",
      "hash": "3331e904197ac1a99ff01e9970966710f8fb1b31",
      "subject": "Follow-up to \"[iOS 27] Build on the public SDK\""
    },
    "319320@main": {
      "author": "Sam Weinig",
      "avatar": "https://www.gravatar.com/avatar/354b409240f9fb3357f498c547423d96?d=identicon\u0026s=64",
      "cl": "319320@main",
      "clUrl": "https://commits.webkit.org/319320@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=321939\n\nReviewed by Sammy Gill.\n\nRemoves incorrect zoom unscaling of px values in computed value calc() expressions\nthat was left over from build time zoom.\n\nNow that no zoom unscaling is needed, the Style::ComputedStyle passed during conversion\nfrom Style::UnevaluatedCalculation to CSS::UnevalutatedCalc can be removed. Also simplified\ntoCSS conversion for numeric types a bit by using unresolvedValue() for all numeric types\ninstead of specializing for Length\u003c\u003e.\n\nTest: imported/w3c/web-platform-tests/css/css-viewport/zoom/calc-computed.html\n* LayoutTests/imported/w3c/web-platform-tests/css/css-viewport/zoom/calc-computed-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-viewport/zoom/calc-computed.html: Added.\n* Source/WebCore/css/calc/CSSCalcValue.cpp:\n* Source/WebCore/css/calc/CSSCalcValue.h:\n* Source/WebCore/css/values/primitives/CSSUnevaluatedCalc.cpp:\n* Source/WebCore/css/values/primitives/CSSUnevaluatedCalc.h:\n* Source/WebCore/style/calc/StyleCalculationTree+Conversion.cpp:\n* Source/WebCore/style/calc/StyleCalculationTree+Conversion.h:\n* Source/WebCore/style/values/primitives/StylePrimitiveNumericTypes+Conversions.h:\n\nCanonical link: https://commits.webkit.org/319320@main",
      "email": "sam@webkit.org",
      "hash": "17e6d00a19246a5c1a9fc4d1e94f3b0ce26835ca",
      "subject": "[EvaluationTimeZoom] px values in calc() expressions that survive through computed style are being serialized incorrectly"
    },
    "319321@main": {
      "author": "Marta Darbinyan",
      "avatar": "https://www.gravatar.com/avatar/6143b3673258642a8b75585c768ccf10?d=identicon\u0026s=64",
      "cl": "319321@main",
      "clUrl": "https://commits.webkit.org/319321@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=321957\nrdar://185141546\n\nUnreviewed test gardening\n\n* TestExpectations/apitests:\n\nCanonical link: https://commits.webkit.org/319321@main",
      "email": "darbinyan@apple.com",
      "hash": "d8c9e2553787ce81ae047d8e05f3de9d14f82fc9",
      "subject": "[Gardening]: NEW TEST(319151@main): [ Sequoia Release] TestWebKitAPI.IsolatedSiteStore.PersistsAcrossSessions is a flaky failure"
    },
    "319322@main": {
      "author": "Tim Horton",
      "avatar": "https://www.gravatar.com/avatar/a04261df168177f0d816f3c7276f6183?d=identicon\u0026s=64",
      "cl": "319322@main",
      "clUrl": "https://commits.webkit.org/319322@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=321965\nrdar://185150824\n\nReviewed by Aditya Keerthi, Abrar Rahman Protyasha, Richard Robinson, and Wenson Hsieh.\n\n* Source/WebKit/UIProcess/ios/forms/WKFormSelectPicker.mm:\n(-[WKSelectPickerTableViewController initWithView:]):\nUse a system \"done\" button instead of a \"close\" button.\n\nCanonical link: https://commits.webkit.org/319322@main",
      "email": "thorton@apple.com",
      "hash": "aa3a5addac317da1baae5efeb07994f0f778bb1b",
      "subject": "WKFormSelectPicker's dismissal button is semantically a \"done\" button, not a \"close\" button, so should use a check, not an X"
    },
    "319323@main": {
      "author": "Sihui Liu",
      "avatar": "https://www.gravatar.com/avatar/fea095a2fb34b599fa6e7d581666903b?d=identicon\u0026s=64",
      "cl": "319323@main",
      "clUrl": "https://commits.webkit.org/319323@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=321817\nrdar://184954498\n\nReviewed by Ryosuke Niwa.\n\nconfigureWebsiteDataStoreTemporaryDirectories() redirects every website data directory WebKitTestRunner uses into its\ntemporary folder, but isolatedSitesDirectory was missing from that list, so it resolved to the real per-bundle path and\nisolated site records are shared across runs. Records also survived between tests within a run, since\nresetStateToConsistentValues() had nothing that cleared them.\n\nFixing these by redirecting the directory, and adding WebsiteDataType::IsolatedSiteRecord to the set\nWKWebsiteDataStoreClearStorage() removes. Removal routes through IsolatedSiteStore::removeAllSites(), which removes site\nrecords but does not clear import-from-ITP flag, so a reset does not cause a re-import.\n\ntestRunner.clearStorage() now clears these records too, which is what a test asking for a clean slate wants, and nothing\ndepends on them surviving it.\n\nDrive by: give SiteIsolationSharedProcessEnabled defaultsOverridable: true and change its status from unstable to\ninternal, so it can be toggled through NSUserDefaults without a build change while it is being brought up. No\nuser-visible impact - the default value is unchanged, and GeneratePreferences.rb treats the two statuses identically.\n\nNo new tests: this is test infrastructure, and IsolatedSiteStore's persistence and removal behavior is already covered\nby the TestWebKitAPI IsolatedSiteStore tests.\n\n* Source/WTF/Scripts/Preferences/UnifiedWebPreferences.yaml:\n* Source/WebKit/UIProcess/API/C/WKWebsiteDataStoreConfigurationRef.cpp:\n(WKWebsiteDataStoreConfigurationCopyIsolatedSitesDirectory):\n(WKWebsiteDataStoreConfigurationSetIsolatedSitesDirectory):\n* Source/WebKit/UIProcess/API/C/WKWebsiteDataStoreConfigurationRef.h:\n* Source/WebKit/UIProcess/API/C/WKWebsiteDataStoreRef.cpp:\n(WKWebsiteDataStoreClearStorage):\n* Tools/WebKitTestRunner/TestController.cpp:\n(WTR::TestController::configureWebsiteDataStoreTemporaryDirectories):\n\nCanonical link: https://commits.webkit.org/319323@main",
      "email": "sihui_liu@apple.com",
      "hash": "f0a1fd2b322dc912a2ce551c58dfd1c7be4e3571",
      "subject": "[Site Isolation] WebKitTestRunner leaks isolated site records between tests and across runs"
    },
    "319324@main": {
      "author": "Sihui Liu",
      "avatar": "https://www.gravatar.com/avatar/fea095a2fb34b599fa6e7d581666903b?d=identicon\u0026s=64",
      "cl": "319324@main",
      "clUrl": "https://commits.webkit.org/319324@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=321804\nrdar://184938204\n\nReviewed by Basuke Suzuki.\n\nIsolatedSiteStore currently only knows what this device has observed -- Autofill, FirstPartyVisit, FirstPartyUserGesture\n-- so a site is kept out of the shared Web process only after the user has already interacted with it here, leaving the\nfirst visit unprotected. Adopt WebPrivacy's high-value fraud target domains list as an additional signal so that a site\nlikely to hold sensitive user data is isolated on first contact.\n\nHighValueFraudTargetDomainsController follows RestrictedOpenerDomainsController: it fetches the list on construction,\nhas it refreshed by a WKWebPrivacyNotificationListener, and re-requests it every [24, 26) hours. It is constructed from\nWebsiteDataStore::updateIsolatedSiteStoreSettings() when a page that enables this is added to the data store -- earlier\nthan prewarming or the start of a load, and skipped for pages that do not enable this.\n\nNote that placement does not wait for the list. The fetch has no bounded completion time, and a timeout-based bailout\nwould not help: every cross-site subframe in that window would wait out the full timeout first. A site looked up before\nthe list arrives is therefore treated as not being on it and may enter the shared process. The opposite default --\nassuming an unknown site is on the list -- would instead launch a process per cross-site subframe. Given that sites\nalready recorded in IsolatedSiteStore are still isolated, this is the tradeoff we chose.\n\nThe new signal is behind SiteIsolationHighValueFraudTargetDomainsEnabled, which is unstable and off by default. It has\nno effect unless SiteIsolationSharedProcessEnabled is also on. Although that is a WebPreferences flag, the placement it\ninfluences is per-data-store state: a shared process's domain set is shared by every page in the store, and\nWebProcessCache keys cached shared processes on the store. Aggregate it across every page using the WebsiteDataStore and\nkeep the result as a single flag on IsolatedSiteStore, updated from propagateSettingUpdates() -- which already runs on\naddPage, removePage and WebPageProxy::preferencesDidChange -- and seeded when the store is created.\n\nTests: SiteIsolation.SharedProcessExcludesHighValueFraudTargetDomains\n       SiteIsolation.SharedProcessIgnoresHighValueFraudTargetDomainsWhenDisabled\n\n* Source/WTF/Scripts/Preferences/UnifiedWebPreferences.yaml:\n* Source/WebCore/PAL/pal/spi/cocoa/WebPrivacySPI.h:\n* Source/WebKit/Configurations/AllowedSPI-legacy.toml:\n* Source/WebKit/Platform/cocoa/WebPrivacyHelpers.h:\n* Source/WebKit/Platform/cocoa/WebPrivacyHelpers.mm:\n(WebKit::HighValueFraudTargetDomainsController::singleton):\n(WebKit::HighValueFraudTargetDomainsController::HighValueFraudTargetDomainsController):\n(WebKit::HighValueFraudTargetDomainsController::scheduleNextUpdate):\n(WebKit::HighValueFraudTargetDomainsController::update):\n(WebKit::HighValueFraudTargetDomainsController::contains const):\n(WebKit::HighValueFraudTargetDomainsController::setDomainsForTesting):\n* Source/WebKit/UIProcess/API/Cocoa/WKWebsiteDataStore.mm:\n(-[WKWebsiteDataStore _setHighValueFraudTargetDomainsForTesting:]):\n* Source/WebKit/UIProcess/API/Cocoa/WKWebsiteDataStorePrivate.h:\n* Source/WebKit/UIProcess/WebsiteData/IsolatedSiteStore.cpp:\n(WebKit::IsolatedSiteStore::create):\n(WebKit::IsolatedSiteStore::IsolatedSiteStore):\n(WebKit::IsolatedSiteStore::reasonsFor const):\n(WebKit::IsolatedSiteStore::containsDomain const):\n(WebKit::IsolatedSiteStore::isHighValueFraudTargetDomain const):\n(WebKit::IsolatedSiteStore::setHighValueFraudTargetDomainsEnabled):\n* Source/WebKit/UIProcess/WebsiteData/IsolatedSiteStore.h:\n* Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp:\n(WebKit::WebsiteDataStore::isolatedSiteStore):\n(WebKit::WebsiteDataStore::computeSiteIsolationHighValueFraudTargetDomainsEnabled const):\n(WebKit::WebsiteDataStore::updateIsolatedSiteStoreSettings):\n(WebKit::WebsiteDataStore::setHighValueFraudTargetDomainsForTesting):\n(WebKit::WebsiteDataStore::propagateSettingUpdates):\n* Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.h:\n* Tools/TestWebKitAPI/Tests/WebKit/WKWebView/SiteIsolation.mm:\n(TestWebKitAPI::(SiteIsolation, SharedProcessExcludesHighValueFraudTargetDomains)):\n(TestWebKitAPI::(SiteIsolation, SharedProcessIgnoresHighValueFraudTargetDomainsWhenDisabled)):\n\nCanonical link: https://commits.webkit.org/319324@main",
      "email": "sihui_liu@apple.com",
      "hash": "8bd2ba0d3e5c4e753b5238a0180a5900df05e5db",
      "subject": "[Site Isolation] Keep high-value fraud target domains out of the shared process"
    },
    "319325@main": {
      "author": "Tim Horton",
      "avatar": "https://www.gravatar.com/avatar/a04261df168177f0d816f3c7276f6183?d=identicon\u0026s=64",
      "cl": "319325@main",
      "clUrl": "https://commits.webkit.org/319325@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=321964\nrdar://185150121\n\nReviewed by Aditya Keerthi, Abrar Rahman Protyasha, and Wenson Hsieh.\n\nTest: fast/forms/ios/select-multiple-button-text-updates.html\n\n* LayoutTests/fast/forms/ios/select-multiple-button-text-updates-expected.txt: Added.\n* LayoutTests/fast/forms/ios/select-multiple-button-text-updates.html: Added.\n* Source/WebCore/html/HTMLSelectElement.cpp:\n(WebCore::HTMLSelectElement::updateListBoxSelection):\nInvalidate the button text when the selection changes; this path is used by the\niOS picker and needs to update the button text, or it gets stuck with \"0 items\".\n\nCanonical link: https://commits.webkit.org/319325@main",
      "email": "thorton@apple.com",
      "hash": "9e646aebfee7892e256aac4802e2ddbc4a713627",
      "subject": "REGRESSION (306560@main?): \u003cselect multiple\u003e on iOS does not update the button text when the selection is changed"
    },
    "319326@main": {
      "author": "Alicia Boya Garcia",
      "avatar": "https://www.gravatar.com/avatar/89fdc5feb8ae1de4c43d003eba230998?d=identicon\u0026s=64",
      "cl": "319326@main",
      "clUrl": "https://commits.webkit.org/319326@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=321933\n\nUnreviewed test gardening.\n\n* LayoutTests/platform/glib/TestExpectations:\n* LayoutTests/platform/gtk/TestExpectations:\n* LayoutTests/platform/gtk/fast/dom/navigator-detached-no-crash-expected.txt:\n* LayoutTests/platform/wpe/TestExpectations:\n* LayoutTests/platform/wpe/fast/dom/navigator-detached-no-crash-expected.txt:\n\nCanonical link: https://commits.webkit.org/319326@main",
      "email": "aboya@igalia.com",
      "hash": "9ae0631f012211bb9bdcce7c88d30d23307601a3",
      "subject": "[glib] Unreviewed test gardening"
    },
    "319327@main": {
      "author": "Patrick Griffis",
      "avatar": "https://www.gravatar.com/avatar/2233c3a857004b126158572af9fe36f7?d=identicon\u0026s=64",
      "cl": "319327@main",
      "clUrl": "https://commits.webkit.org/319327@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=321527\n\nReviewed by Alex Christensen.\n\nAdd a runtime flag for Compression Dictionary Transport, handle the\n\"compression-dictionary\" link, and fetch its resource. All described\nfrom whatwg/html#11620\n\nThe fetch uses the new \"compression-dictionary\" destination from\nwhatwg/fetch#1854, is governed by the connect-src CSP directive,\nand is always a CORS fetch. Changing crossorigin on the element re-fetches.\n\nDictionary fetches should not compete with the page's critical-path loads, and\nthe spec allows delaying them. Those declared by a \u003clink\u003e element are held in\nDocument until the load event has been dispatched; a link added after that\npoint is queued straight away.\n\nLink headers on subresources do not register dictionaries at all.\n\nNothing is done with the fetched resource yet; storing dictionaries and\nusing them to decompress responses comes later.\n\n* LayoutTests/TestExpectations:\n* LayoutTests/imported/w3c/web-platform-tests/fetch/compression-dictionary/dictionary-fetch-timing-001.tentative.https-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/fetch/compression-dictionary/dictionary-fetch-timing-002.tentative.https-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/fetch/compression-dictionary/dictionary-fetch-with-imagesrcset.tentative.https-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/fetch/compression-dictionary/dictionary-fetch-with-link-connect-src-nonce.tentative.https-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/fetch/compression-dictionary/dictionary-fetch-with-link-connect-src.tentative.https-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/fetch/compression-dictionary/dictionary-fetch-with-link-element-crossorigin.tentative.https-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/fetch/compression-dictionary/dictionary-fetch-with-link-element-events.tentative.https-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/fetch/compression-dictionary/dictionary-fetch-with-link-integrity.tentative.https-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/fetch/compression-dictionary/dictionary-fetch-with-link-referrer-and-referrerpolicy.tentative.https-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/fetch/compression-dictionary/dictionary-fetch-with-type-attribute.tentative.https-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/fetch/compression-dictionary/fetch-destination.tentative.https-expected.txt: Added.\n* Source/WTF/Scripts/Preferences/UnifiedWebPreferences.yaml:\n* Source/WebCore/Modules/fetch/FetchRequestDestination.idl:\n* Source/WebCore/dom/Document.cpp:\n(WebCore::Document::dispatchWindowLoadEvent):\n(WebCore::Document::queueCompressionDictionaryLoad):\n(WebCore::Document::flushPendingCompressionDictionaryLoads):\n* Source/WebCore/dom/Document.h:\n* Source/WebCore/html/HTMLLinkElement.cpp:\n(WebCore::HTMLLinkElement::attributeChanged):\n(WebCore::HTMLLinkElement::process):\n* Source/WebCore/html/LinkRelAttribute.cpp:\n* Source/WebCore/html/LinkRelAttribute.h:\n* Source/WebCore/loader/FetchOptions.h:\n* Source/WebCore/loader/FetchOptionsDestination.h:\n* Source/WebCore/loader/LinkLoader.cpp:\n(WebCore::LinkLoader::~LinkLoader):\n(WebCore::LinkLoader::loadCompressionDictionariesFromHeader):\n(WebCore::LinkLoader::resourceTypeFromAsAttribute):\n(WebCore::LinkLoader::cancelLoad):\n(WebCore::LinkLoader::loadCompressionDictionaryIfNeeded):\n(WebCore::LinkLoader::loadCompressionDictionaryLink):\n* Source/WebCore/loader/LinkLoader.h:\n* Source/WebCore/loader/cache/CachedResourceLoader.cpp:\n(WebCore::CachedResourceLoader::allowedByContentSecurityPolicy const):\n* Source/WebCore/loader/cache/CachedResourceLoader.h:\n* Source/WebKit/NetworkProcess/NetworkLoadChecker.cpp:\n(WebKit::NetworkLoadChecker::isAllowedByContentSecurityPolicy):\n* Source/WebKit/NetworkProcess/NetworkResourceLoader.cpp:\n(WebKit::NetworkResourceLoader::resourceLoadInfo):\n* Source/WebKit/Shared/WebCoreArgumentCoders.serialization.in:\n\nCanonical link: https://commits.webkit.org/319327@main",
      "email": "pgriffis@igalia.com",
      "hash": "6248fa7145849f04f88e49a8a08ee6172b6bb9fe",
      "subject": "Fetch dictionaries declared by rel=compression-dictionary and Link headers"
    },
    "319328@main": {
      "author": "Adrian Perez de Castro",
      "avatar": "https://www.gravatar.com/avatar/30ffea8cf404586741a8f5f7110c0914?d=identicon\u0026s=64",
      "cl": "319328@main",
      "clUrl": "https://commits.webkit.org/319328@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=269778\n\nUnreviewed Skia update.\n\n% git log --pretty='%h %s' 2c88cbf6fba335c230bab575b3f76a030f30cc41..a06b820a5c866aaf44aa9274bca849f97108eb9c\na06b820a5c Roll recipe dependencies (trivial).\n466dd4a717 Roll recipe dependencies (trivial).\nd07795eebb Roll ANGLE from fff51488e419 to 60ccf9a219bd (7 revisions)\nb7049a304e Roll Skia Infra from ba16fbcff21e to 57107b5a16cb (10 revisions)\ndbb7dee77a Roll Dawn from 086c465ef70e to a8db5510cc0e (14 revisions)\n88b2a86a3e Roll debugger-app-base from 9c5025e806af to 908aa7ccc3a9\nd40f20074b Roll recipe dependencies (trivial).\n95a3bf341a Roll vulkan-deps from 9c1420718b16 to 8ab3e1d4c253 (1 revision)\n62fadc19be Roll SKP CIPD package from 572 to 573\n22fdd3bee5 Roll vulkan-deps from b0be4f8861ed to 9c1420718b16 (4 revisions)\n653397c6be Roll vulkan-deps from f98a3773ade5 to b0be4f8861ed (14 revisions)\nb09fcee5f9 Roll recipe dependencies (trivial).\nb0b6f61500 [skcapture] Structure captures to group draws by recording\ne0ecec6708 Add target for Graphite Metal Test Context\n2afc5c668e Introduce platform select structures in dm/BUILD.bazel\n50a1e811b6 [graphite] move some buffer manager functions into namespace\n62182d11a6 [graphite] Clean up comments and Draw command loop\nb6c2cb9a27 Roll partiion_alloc\n0dd2449bff Roll vulkan-deps from 89ee2d7a9d43 to f98a3773ade5 (5 revisions)\n3ad790ab4d Roll ANGLE from 7e8009eb2c42 to fff51488e419 (7 revisions)\n9285127a2a Roll Skia Infra from 70925c512249 to ba16fbcff21e (16 revisions)\na7d962bc7c Roll Dawn from c3cf2a706bfd to 086c465ef70e (37 revisions)\n091c643035 Roll debugger-app-base from ff9fa25f5892 to 9c5025e806af\n2caa6329c7 Roll recipe dependencies (trivial).\n0ec8d792e4 Roll vulkan-deps from fd3bd96a36ef to 89ee2d7a9d43 (6 revisions)\n891273a258 [graphite] Add immediate in-line compilation option to PipelineManager\n226ac8e4ca [rust jpeg] Support incremental decoding\n66d2fbf256 Reland \"[FontConfig] Implement onGetResourceName() for SkTypeface_FCI\"\n3ac5239a31 Reland \"[graphite] Replace StorageBufferManager with StorageContext\"\n232df2bb89 Reland \"[graphite] Fix priority inversion in PipelineManager\"\nb7ea4d6e33 Allow clients to always use distance fields for small paths\n791e4ac110 Revert \"[graphite] Replace StorageBufferManager with StorageContext\"\n1f01bc435e Roll recipe dependencies (trivial).\nae2d74e7f2 Roll recipe dependencies (trivial).\na59c73c6b1 Roll recipe dependencies (trivial).\ne54f5d0c59 Roll ANGLE from e0ca05c106e4 to 7e8009eb2c42 (6 revisions)\n3acac639d9 Roll vulkan-deps from d2d81f1fa0fc to fd3bd96a36ef (8 revisions)\n092f43d4e9 Roll Skia Infra from 1fae7463e9b3 to 70925c512249 (19 revisions)\n4216a68a13 Roll debugger-app-base from 80b143eb15c5 to ff9fa25f5892\n8f91f73f7b Roll recipe dependencies (trivial).\n68209a2627 Roll recipe dependencies (trivial).\ndc1fbbcdf6 Roll recipe dependencies (trivial).\nd23c69ca37 Roll recipe dependencies (trivial).\n50af0c4e94 Make sure vulkan lazy memory always use dedicated allocations.\nbae0a08951 Revert \"[graphite] Fix priority inversion in PipelineManager\"\n241ae50008 Only trace in GlobalResourceStats if resources have been recorded\nd1e9785403 [graphite] Prioritize texture matches over UBO matches in DrawListLayer\n8904946b42 [graphite] Replace StorageBufferManager with StorageContext\n5bc37d762c [graphite] Disambiguate Vulkan error message\ndd9b664f48 [text] Fix bounds checks in PackGPUData asserts\n51ac7974bf [graphite] Fix priority inversion in PipelineManager\n53a2ab00ce Add restrictOutputToInputBounds to SkImageFilters::RuntimeShader\n11ec66fe9b Roll recipe dependencies (trivial).\na366012087 Roll vulkan-deps from c6cb5ef25794 to d2d81f1fa0fc (5 revisions)\nfee7272f5b Check fTop and fBottom for null in GrTriangulator::Edge::dist\ne00dbd7448 Roll recipe dependencies (trivial).\n25133392a3 Roll debugger-app-base from 6f9c650f0c47 to 80b143eb15c5\ne5722781a4 Roll recipe dependencies (trivial).\n112f361489 Roll recipe dependencies (trivial).\n74ad04d417 Roll ANGLE from e8d1a2c13248 to e0ca05c106e4 (16 revisions)\n21f75dd319 Roll Skia Infra from d560ab323cf8 to 1fae7463e9b3 (11 revisions)\n7d366c8023 Roll Dawn from 9d6253a28823 to c3cf2a706bfd (22 revisions)\n41359d33f3 Roll vulkan-deps from 34c46f7241a1 to c6cb5ef25794 (8 revisions)\n1f10a20bdd Reland \"[Text] Promote thread local SkStrikeCache API\"\n339bedab67 [text] Enforce trivial destruction in GlyphType\n50e43ef61a [rust_ico] Report ICO size from the directory and succeed on partial data\na34d735c8b Revert \"[Text] Promote thread local SkStrikeCache API\"\n7597d6c27c [graphite] Address race condition in PipelineCallbackHandler\n5637e1a81a [ganesh] Access beTex's backend format after creation\n0362329956 Roll vulkan-deps from bc27f11324cf to 34c46f7241a1 (2 revisions)\nf0d136bd32 Roll ANGLE from 7b4238a1ad6c to e8d1a2c13248 (44 revisions)\n43b008740b Roll Skia Infra from 262acfdc6d6e to d560ab323cf8 (9 revisions)\n45c4de274a Roll Dawn from 5b79878f746c to 9d6253a28823 (16 revisions)\n00c8765947 Roll SwiftShader from 26e6a4b84daf to 6b8d31709ad1 (1 revision)\n7b26841eab Roll debugger-app-base from a026d3da2361 to 6f9c650f0c47\nc92974f8e0 Roll recipe dependencies (trivial).\n841f4690aa Roll recipe dependencies (trivial).\n127d831b9d Roll vulkan-deps from 37e841bbd2f9 to bc27f11324cf (14 revisions)\n2d4480c64a Roll recipe dependencies (trivial).\nb68bdd6b46 [Text] Promote thread local SkStrikeCache API\n7817fed2e3 [Graphite] Support inverse fill for tessellated strokes renderer\n06878af306 [graphite] Refactor flattenning to expose non-culled mode\na3d82eedc0 Harden in-place SkConvertPixels\ne9fcd9466c [rust png] Splat Adam7 rows for partial decodes\n864b3c688b [graphite] Stop using ResourceProvider as a PipelineManager intermediary\n483fd5f52c [graphite] Fix build\n424844b64a Roll recipe dependencies (trivial).\nfae319dd64 [rust jpeg] Implement fixed-size reads for growing cursor\n6549c09b1f [graphite] Add threading to the PipelineManager\n2ad03d882c Roll vulkan-deps from 4a3af97d047f to 37e841bbd2f9 (1 revision)\n2bffb2e620 Roll recipe dependencies (trivial).\nd7b71cfe61 Roll Skia Infra from 2c6128eaca86 to 262acfdc6d6e (10 revisions)\nd32b8c9025 Roll Dawn from bf6225076ff5 to 5b79878f746c (9 revisions)\n12b57b93c7 Roll debugger-app-base from acdd3c9e9e9f to a026d3da2361\n2eed75b956 Roll vulkan-deps from 47bfc06ded40 to 4a3af97d047f (1 revision)\ne32c12990a Roll SKP CIPD package from 571 to 572\n508fc9e7f9 Roll recipe dependencies (trivial).\n33e64a812c Roll vulkan-deps from e8c6af24af68 to 47bfc06ded40 (9 revisions)\n70eb7b04b5 Roll recipe dependencies (trivial).\n2339c03500 Manual roll Dawn from 1c9c16c9ad1c to bf6225076ff5 (8 revisions)\n5dddf11de2 Add SkCaptureCanvas support for onDrawMesh\nd73bd5dd62 Roll vulkan-deps from 67a94c725fff to e8c6af24af68 (4 revisions)\n294d31e0b1 Roll Dawn from cd1628319cf9 to 1c9c16c9ad1c (9 revisions)\nac92fe3db6 Roll Skia Infra from 82486f250514 to 2c6128eaca86 (8 revisions)\n23c34af194 Roll debugger-app-base from c88eebd234b6 to acdd3c9e9e9f\n1a9194f7a0 Roll recipe dependencies (trivial).\n09f9ff0b42 Roll recipe dependencies (trivial).\n8c800cad53 Roll vulkan-deps from f14e1f12e719 to 67a94c725fff (6 revisions)\n6808185a77 Roll recipe dependencies (trivial).\n610f9a7e16 [Graphite] Add primitive color space option to PaintParams\n1cff4ae224 Fix GM_custommesh_cs to use correct canvas for drawMesh\n0e0f8b148c Roll recipe dependencies (trivial).\nc58667d01e Roll recipe dependencies (trivial).\nd6a95407a7 [graphite] Support kSwapRB xfer op w/o relying on raster pipeline\n5dac00a447 [rust jpeg] Initial implementation of rust jpeg\nae1a245d72 Roll vulkan-deps from 27cc24c48167 to f14e1f12e719 (9 revisions)\nd8b7337031 Roll Skia Infra from 9898b1962de7 to 82486f250514 (12 revisions)\n96f9ef7f55 Roll Dawn from da44df7daa86 to cd1628319cf9 (13 revisions)\n76103fc2a5 Roll debugger-app-base from 096004527aba to c88eebd234b6\nad3034b045 Roll recipe dependencies (trivial).\n382b952f3c Roll recipe dependencies (trivial).\n9cb0d75f29 Manual roll ANGLE from 013e8a1af187 to 7b4238a1ad6c (10 revisions)\n2d40a058f9 [Graphite] Plumb RootNodesInfo through all RenderStep SkSL functions\na45bdf78e3 Roll vulkan-deps from bb34a3ef6ad4 to 27cc24c48167 (1 revision)\n5e4f3217c1 [ganesh] Check result inside GrResourceProvider::writePixels\nede386b8d6 Roll ANGLE from d5c8131b66e3 to 013e8a1af187 (6 revisions)\n60e22dd341 Roll Skia Infra from 45efa0244bed to 9898b1962de7 (14 revisions)\nfed5f7a5c9 Roll Dawn from a488846c0f17 to da44df7daa86 (8 revisions)\nd406d9c8f3 Roll SwiftShader from a7c547b55474 to 26e6a4b84daf (2 revisions)\n9eadfc448a Roll debugger-app-base from 1923fa1074e1 to 096004527aba\ne8235ddd17 Roll recipe dependencies (trivial).\n4409e239a1 Roll vulkan-deps from b2accf345f13 to bb34a3ef6ad4 (6 revisions)\nad7abeecbb Roll recipe dependencies (trivial).\nacca3de7dd Roll recipe dependencies (trivial).\n9c0bca4d3e [graphite] Tune search limit parameters for DrawListLayers\na6f1360753 Manual roll ANGLE from 91d2d125ec00 to d5c8131b66e3 (10 revisions)\n\nCanonical link: https://commits.webkit.org/319328@main",
      "email": "aperez@igalia.com",
      "hash": "0d91d005dd45c64f0e58940f0b7aa0092a7528ae",
      "subject": "Update Skia to 2024-02-20 (a76b083ac4ccf09d21ec1b805cc51325818f7ae4)"
    },
    "319329@main": {
      "author": "Ruthvik Konda",
      "avatar": "https://www.gravatar.com/avatar/bca33cefcce93017251a8fbc1204cdc4?d=identicon\u0026s=64",
      "cl": "319329@main",
      "clUrl": "https://commits.webkit.org/319329@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=321942\nrdar://185120185\n\nReviewed by Mike Wyrzykowski.\n\nHTMLModelElement.cpp includes AbortSignal.h but never references the AbortSignal class. No change in behavior.\n\n* Source/WebCore/Modules/model-element/HTMLModelElement.cpp:\n\nCanonical link: https://commits.webkit.org/319329@main",
      "email": "rkonda2@apple.com",
      "hash": "527e809737b6660d3cda27eeca44c34a46eacb60",
      "subject": "[model] Remove unused AbortSignal.h include in HTMLModelElement"
    },
    "319330@main": {
      "author": "Jean-Yves Avenard",
      "avatar": "https://www.gravatar.com/avatar/509313899deeb9262fad8f5e04093f5b?d=identicon\u0026s=64",
      "cl": "319330@main",
      "clUrl": "https://commits.webkit.org/319330@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=321919\nrdar://183790572\n\nReviewed by Eric Carlson.\n\n315668@main moved the pending seek target from MediaSource to MediaSourcePrivate.\n\nIt regressed two things:\n- monitorSourceBuffer() which caused the ManagedMediaSource to monitor the buffered range\nand appropriately handled the start/stop streaming event stop being called.\n- It called the MediaSourcePrivate's currentTime rather than the player's one.\nThe MediaSourcePrivateAVFObjC::currentTime() implementation returned the renderer's currentTime.\nThe currentTime returned by the renderer will only be the same as the pending seek time once\nthe render seek as started. But the seek will only start if there's sufficient\nbuffered data to continue the seek.\n\nDue to the latter, when the ManagedMediaSource's monitorSourceBuffer algoritm ran\nit read the renderer's time before seek started which was always buffered\nand so no startstreaming event needed firing.\n\nHLS.js player is waiting for that event to be fired before appending data\nand so seek never completed (it was never started).\n\nMediaSourcePrivate::currentTime() is no longer virtual: it keeps the pending\nseek target check and delegates to a new protected platformCurrentTime(), which\ncarries the thread-safety requirement the platform implementations need, so an\noverride can no longer drop the pending target. MediaSourcePrivateAVFObjC\noverrides platformCurrentTime() and still reads the renderer, which is the only\nsource of time it can use off the main thread.\nWe also add in MediaSourcePrivate::waitForTarget() a call to monitorSourceBuffer\nwhen data isn't buffered to ensure startstreaming is fired.\n\nAdded a new test.\n\n* LayoutTests/media/media-source/media-managedmse-resume-after-seek-expected.txt: Added.\n* LayoutTests/media/media-source/media-managedmse-resume-after-seek.html: Added.\n* Source/WebCore/Modules/mediasource/MediaSource.cpp:\n(WebCore::MediaSourceClientImpl::monitorSourceBuffers): Run the algorithm on the MediaSource's thread.\n* Source/WebCore/platform/graphics/MediaSourcePrivate.cpp:\n(WebCore::MediaSourcePrivate::waitForTarget): Ask the client to monitor the source buffers when the target isn't buffered.\n(WebCore::MediaSourcePrivate::currentTime const): Return the pending seek target, otherwise the platform's time.\n(WebCore::MediaSourcePrivate::platformCurrentTime const): Moved from currentTime().\n* Source/WebCore/platform/graphics/MediaSourcePrivate.h:\n* Source/WebCore/platform/graphics/MediaSourcePrivateClient.h:\n* Source/WebCore/platform/graphics/avfoundation/objc/MediaSourcePrivateAVFObjC.h:\n* Source/WebCore/platform/graphics/avfoundation/objc/MediaSourcePrivateAVFObjC.mm:\n(WebCore::MediaSourcePrivateAVFObjC::platformCurrentTime const): Renamed from currentTime().\n\nCanonical link: https://commits.webkit.org/319330@main",
      "email": "jya@apple.com",
      "hash": "a3af5da09b5c80d0d49bedc0528d3bc6947f4690",
      "subject": "REGRESSION(315668@main) ManagedMediaSource: \"startstreaming\" is not emitted when seeking"
    },
    "319331@main": {
      "author": "Jean-Yves Avenard",
      "avatar": "https://www.gravatar.com/avatar/509313899deeb9262fad8f5e04093f5b?d=identicon\u0026s=64",
      "cl": "319331@main",
      "clUrl": "https://commits.webkit.org/319331@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=321974\nrdar://185153336\n\nReviewed by Pascoe.\n\nSimilar to 319279@main ; some CSS files were missing that made media controls\nlook bad.\nAnother set of review comparing the files included in xcode but not with cmake\nfound more files missing.\n\n* Source/WebCore/CMakeLists.txt:\n* Source/WebCore/Headers.cmake:\n* Source/WebCore/PlatformCocoa.cmake:\n* Source/WebKit/CMakeLists.txt:\n* Source/WebKit/PlatformCocoa.cmake:\n\nCanonical link: https://commits.webkit.org/319331@main",
      "email": "jya@apple.com",
      "hash": "f4b26aee275103a1ae5ee92c2b7dd8fcdc44a72b",
      "subject": "[cmake] Media Playback control look bad in cmake build"
    },
    "319332@main": {
      "author": "Ben Nham",
      "avatar": "https://www.gravatar.com/avatar/dc0914eabf69047ee3397794c2d17bf7?d=identicon\u0026s=64",
      "cl": "319332@main",
      "clUrl": "https://commits.webkit.org/319332@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=321900\nrdar://185076535\n\nReviewed by Wenson Hsieh.\n\nWhen a user gesture occurs, UserGestureIndicator currently only updates the user interaction and\nlast user gesture timestamp flags on local ancestors. This can lead to issues like iframes being\nunexpectedly throttled.\n\nFix this by telling the UIProcess about the user gesture if there is any remote frame ancestor.\nUIProcess then broadcasts the user gesture state to the ancestor remote frames.\n\nA one-way broadcast IPC is sufficient here as we only ever set the hasHadUserInteraction and and\nlastHandledUserGestureTimestamp flags on ancestor documents; we don't reset them.\n\nThis contains a drive-by fix to `FocusController::findFocusableElementStartingWithLocalFrame` to\navoid setting the user gesture flags on a query. iOS makes those queries to e.g. figure out whether\nto show the next/prev buttons in the accessory bar on focus. Fixing this is necessary for the layout\ntest to actually test the change on iOS. Previously, with site isolation enabled, a focusable\nelement query would send the FindFocusableElementDescendingIntoRemoteFrame IPC with\nShouldFocusElement::No, and we set the user gesture indicator for it unconditionally. So a\nprogrammatic focus() without direct user interaction could set the user gesture indicator.\n\n* LayoutTests/http/tests/site-isolation/resources/user-gesture-innermost-frame.html: Added.\n* LayoutTests/http/tests/site-isolation/resources/user-gesture-middle-frame.html: Added.\n* LayoutTests/http/tests/site-isolation/user-gesture-in-cross-origin-iframe-reaches-ancestor-in-another-process-expected.txt: Added.\n* LayoutTests/http/tests/site-isolation/user-gesture-in-cross-origin-iframe-reaches-ancestor-in-another-process.html: Added.\n* Source/WebCore/dom/Document.h:\n* Source/WebCore/dom/UserGestureIndicator.cpp:\n(WebCore::UserGestureIndicator::UserGestureIndicator):\n* Source/WebCore/loader/FrameLoaderClient.h:\n(WebCore::FrameLoaderClient::didHandleFirstUserGesture):\n* Source/WebCore/page/FocusController.cpp:\n(WebCore::FocusController::findFocusableElementStartingWithLocalFrame):\n* Source/WebKit/UIProcess/WebPageProxy.cpp:\n(WebKit::WebPageProxy::didNotifyUserActivation):\n(WebKit::WebPageProxy::didHandleFirstUserGesture):\n* Source/WebKit/UIProcess/WebPageProxy.h:\n* Source/WebKit/UIProcess/WebPageProxy.messages.in:\n* Source/WebKit/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:\n(WebKit::WebFrameLoaderClient::didHandleFirstUserGesture):\n* Source/WebKit/WebProcess/WebCoreSupport/WebFrameLoaderClient.h:\n* Source/WebKit/WebProcess/WebCoreSupport/WebLocalFrameLoaderClient.cpp:\n(WebKit::WebLocalFrameLoaderClient::didHandleFirstUserGesture):\n* Source/WebKit/WebProcess/WebCoreSupport/WebLocalFrameLoaderClient.h:\n* Source/WebKit/WebProcess/WebPage/WebPage.cpp:\n(WebKit::WebPage::updateLastHandledUserGestureTimestamp):\n* Source/WebKit/WebProcess/WebPage/WebPage.h:\n* Source/WebKit/WebProcess/WebPage/WebPage.messages.in:\n\nCanonical link: https://commits.webkit.org/319332@main",
      "email": "nham@apple.com",
      "hash": "7f8277fb2bb0cb76b0b575ecf7e599878e63c438",
      "subject": "[Site Isolation] User interaction and last user gesture timestamp flags aren't updated on remote frames"
    },
    "319333@main": {
      "author": "Franco Vieira de Souza",
      "avatar": "https://www.gravatar.com/avatar/14ed77684c1591a07649be8495cc0ddb?d=identicon\u0026s=64",
      "cl": "319333@main",
      "clUrl": "https://commits.webkit.org/319333@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=321953\nrdar://185132938\n\nReviewed by Sam Weinig.\n\nTell jsonchecker.py about `computed-style-getter-nodelete`, which was\nintroduced in 319253@main. Without this, we get bogus errors when\ntouching CSSProperties.json:\n\ncheck-webkit-style Source/WebCore/css/CSSProperties.json\nSource/WebCore/css/CSSProperties.json:0: error: [json/syntax] codegen-properties for property \"font-feature-settings\" has unexpected key \"computed-style-getter-nodelete\".\nSource/WebCore/css/CSSProperties.json:0: error: [json/syntax] codegen-properties for property \"font-variation-settings\" has unexpected key \"computed-style-getter-nodelete\".\nSource/WebCore/css/CSSProperties.json:0: error: [json/syntax] codegen-properties for property \"font-variant-alternates\" has unexpected key \"computed-style-getter-nodelete\".\nTotal errors found: 3 in 1 files\n\n* Tools/Scripts/webkitpy/style/checkers/jsonchecker.py:\n(JSONCSSPropertiesChecker.check_codegen_properties):\n\nCanonical link: https://commits.webkit.org/319333@main",
      "email": "franco_vieira@apple.com",
      "hash": "4a9b52b842ed6e0bf4a522655d20107253d6370d",
      "subject": "[check-webkit-style] Add 'computed-style-getter-nodelete' to jsonchecker.py"
    },
    "319334@main": {
      "author": "Franco Vieira de Souza",
      "avatar": "https://www.gravatar.com/avatar/14ed77684c1591a07649be8495cc0ddb?d=identicon\u0026s=64",
      "cl": "319334@main",
      "clUrl": "https://commits.webkit.org/319334@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=321782\nrdar://184903788\n\nReviewed by Megan Gardner and Ryosuke Niwa.\n\nThis patch adds some behavior to the CSSUserSelectEnabled flag, which\nused to be mostly inert. The flag now causes user-select to be\nconsidered along with -webkit-user-select for determining\nusedUserSelect(), and makes usedUserSelect() behavior more closely match\nthe spec. When the flag is off, legacy -webkit-user-select behavior is\npreserved. To avoid changes in behavior in already linked code that\nexpects legacy behavior, a LoA gate was added.\n\nHere's a breakdown of differences between the legacy and the new\nbehavior (see https://www.w3.org/TR/css-ui-4/#content-selection):\n* user-select is no longer ignored\n* -webkit-user-select: all used to disallow the element from being\n  edited. Now it's the other way around: editability overrides 'all'\n  to 'text'\n* If an element is editable, it now always overrides none to\n  text. Previously, this only happened if the element were non-draggable\n* -webkit-user-select: initial used to always produce text as the used\n  value. It now behaves as user-select: auto\n* getComputedStyle() no longer matches usedUserSelect()\n\nUnder the new behavior, the prefixed and unprefixed properties are not\naliases: if -webkit-user-select and user-select are explicitly defined\nfor an element, user-select takes precedence. To determine this, each\nproperty has its own has-explicitly-set flag. Note that, while\n-webkit-user-select is still inherited, its has-explicitly-set flag is\nnot (see color-scheme for precedent).\n\nMost of the described behavior lives in Adjuster::adjustUsedUserSelect().\n\nThe change did not affect WPT tests, but it did flip the following tests\ninside LayoutTests/editing and LayoutTests/fast/css (non-specced\nbehavior):\n* LayoutTests/editing/execCommand/indent-user-select-all-blockquotes.html\n* LayoutTests/editing/selection/user-select-in-text-control.html\n* LayoutTests/editing/selection/user-select-all-selection.html\n* LayoutTests/editing/pasteboard/copy-content-with-user-select-none.html\n* LayoutTests/fast/css/style-change-draggable-text.html\n\nThese tests received a -legacy variant that disables the feature flag\nin order to ensure the legacy behavior is untouched.\n\nOther test changes:\n* LayoutTests/editing/selection/user-select-in-text-control.html: was\n  considered tricky, so this became 4 separate tests checking the\n  \"legacy VS new\" and \"prefixed VS unprefixed\" combinations\n* LayoutTests/editing/selection/user-select-supersedes-webkit-user-select[-legacy].html:\n  documents cascade behavior (prefixed VS unprefixed)\n* LayoutTests/editing/selection/user-select-auto-in-modal-dialog-inside-inert.html:\n  verifies how usedUserSelect() interacts with effectivelyInert()\n* Tools/TestWebKitAPI/Tests/WebKit/WKWebView/CopyRTF.mm: received a\n  test variant for legacy behavior\n* editing/selection/user-select-all-selection-legacy.html: original was\n  skipped on iOS so it was skipped as well\n\nCanonical link: https://commits.webkit.org/319334@main",
      "email": "franco_vieira@apple.com",
      "hash": "d27b7fd89ebf9a1280e0cb284c0ae780ab71d8ea",
      "subject": "[CSS] Implement unprefixed user-select"
    },
    "319335@main": {
      "author": "Zak Ridouh",
      "avatar": "https://www.gravatar.com/avatar/d9b65ef530b9cbbfc6dff1ca158faace?d=identicon\u0026s=64",
      "cl": "319335@main",
      "clUrl": "https://commits.webkit.org/319335@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=321878\nrdar://183913289\n\nReviewed by David Kilzer.\n\nMutationObserver::deliver() collects the observer's registrations that have transient\nregistrations into a Vector\u003cRef\u003cMutationObserverRegistration\u003e\u003e and keeps them alive for\nthe rest of the function, including across the mutation callback. It then calls\ntakeTransientRegistrations() on each of them, which clears\nMutationObserverRegistration::m_nodeKeptAlive, the registration's only strong reference\nto the node it observes.\n\nWhen that was the last reference to the observed node, the node is destroyed while\ndeliver() still holds its registration alive, and the registration is still in\nMutationObserver::m_registrations. Its reference to the observed node is a\nWeakRef\u003cNode\u003e, so it is now dangling, and dereferencing it hits the RELEASE_ASSERT in\nWeakRef::ptr(). MutationObserverRegistration::isReachableFromOpaqueRoots() does so on a\nGC thread, and MutationObserver::disconnect() does so on the main thread.\n\nKeep the observed nodes alive for as long as deliver() keeps their registrations alive.\nDeclare the vector before transientRegistrations so that the nodes outlive the\nregistrations, and use GCReachableRef so that the nodes' JS wrappers are kept alive as\nwell, matching how deliver() already handles the transient registration nodes.\n\nTest: fast/dom/MutationObserver/observed-node-collected-during-delivery-crash.html\n\n* LayoutTests/fast/dom/MutationObserver/observed-node-collected-during-delivery-crash-expected.txt: Added.\n* LayoutTests/fast/dom/MutationObserver/observed-node-collected-during-delivery-crash.html: Added.\n* Source/WebCore/dom/MutationObserver.cpp:\n(WebCore::MutationObserver::deliver):\n\nCanonical link: https://commits.webkit.org/319335@main",
      "email": "zakr@apple.com",
      "hash": "9c6099bea06bf812084dc9118bbae1dcda5937a0",
      "subject": "Keep observed nodes alive across MutationObserver delivery"
    },
    "319336@main": {
      "author": "Yusuke Suzuki",
      "avatar": "https://www.gravatar.com/avatar/3455d9081295e3e740c1ffa901217d9b?d=identicon\u0026s=64",
      "cl": "319336@main",
      "clUrl": "https://commits.webkit.org/319336@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=321972\nrdar://185152671\n\nReviewed by Yijia Huang.\n\nThis patch implements memory64 handling for multi-memory in IPInt.\nThat was a blocker for memory64 with multi-memory support so now we\nremove the check in WasmSectionParser which makes memory64 +\nmulti-memory compilation failure.\n\nTest: JSTests/wasm/stress/memory64-multi-memory.js\n\n* JSTests/wasm/stress/memory64-multi-memory-rejected.js: Removed.\n* JSTests/wasm/stress/memory64-multi-memory.js: Added.\n(async test):\n* Source/JavaScriptCore/llint/InPlaceInterpreter64.asm:\n* Source/JavaScriptCore/wasm/WasmSectionParser.cpp:\n(JSC::Wasm::SectionParser::parseMemoryHelper):\n* Source/JavaScriptCore/wasm/js/JSWebAssemblyInstance.cpp:\n(JSC::JSWebAssemblyInstance::JSWebAssemblyInstance):\n* Source/JavaScriptCore/wasm/js/JSWebAssemblyInstance.h:\n\nCanonical link: https://commits.webkit.org/319336@main",
      "email": "ysuzuki@apple.com",
      "hash": "0bbbac7b52ca09e5c3508e6f89dd63e7fe885b69",
      "subject": "[JSC] Implement wasm memory64 with multi-memory"
    },
    "319337@main": {
      "author": "Yusuke Suzuki",
      "avatar": "https://www.gravatar.com/avatar/3455d9081295e3e740c1ffa901217d9b?d=identicon\u0026s=64",
      "cl": "319337@main",
      "clUrl": "https://commits.webkit.org/319337@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=321955\nrdar://185140117\n\nReviewed by Yijia Huang.\n\nInstead of using MarkedArgumentBuffer, let's just use std::array and\nArgList when we know the # of arguments statically.\n\n* Source/JavaScriptCore/dfg/DFGOperations.cpp:\n(JSC::DFG::JSC_DEFINE_JIT_OPERATION):\n* Source/JavaScriptCore/inspector/InjectedScriptManager.cpp:\n(Inspector::InjectedScriptManager::createInjectedScript):\n* Source/JavaScriptCore/interpreter/Interpreter.cpp:\n(JSC::Interpreter::executeProgram):\n* Source/JavaScriptCore/jsc.cpp:\n(JSC_DEFINE_HOST_FUNCTION):\n* Source/JavaScriptCore/runtime/ArrayConstructor.cpp:\n(JSC::JSC_DEFINE_HOST_FUNCTION):\n* Source/JavaScriptCore/runtime/ArrayPrototype.cpp:\n(JSC::toLocaleString):\n(JSC::sortStableSort):\n* Source/JavaScriptCore/runtime/ArrayPrototypeInlines.h:\n* Source/JavaScriptCore/runtime/AsyncFromSyncIteratorPrototype.cpp:\n(JSC::callSyncIteratorMethodAndExtract):\n* Source/JavaScriptCore/runtime/CommonSlowPaths.cpp:\n(JSC::JSC_DEFINE_COMMON_SLOW_PATH):\n* Source/JavaScriptCore/runtime/GetterSetter.cpp:\n(JSC::GetterSetter::callSetter):\n* Source/JavaScriptCore/runtime/IteratorOperations.cpp:\n(JSC::iteratorNextImpl):\n(JSC::iteratorClose):\n* Source/JavaScriptCore/runtime/JSArrayBufferPrototype.cpp:\n* Source/JavaScriptCore/runtime/JSFinalizationRegistry.cpp:\n(JSC::JSFinalizationRegistry::runFinalizationCleanup):\n* Source/JavaScriptCore/runtime/JSGenericTypedArrayViewPrototypeFunctions.h:\n(JSC::speciesConstruct):\n(JSC::genericTypedArrayViewProtoFuncForEach):\n(JSC::genericTypedArrayViewProtoFuncMap):\n(JSC::genericTypedArrayViewProtoFuncFilter):\n(JSC::genericTypedArrayViewProtoFuncFind):\n(JSC::genericTypedArrayViewProtoFuncFindIndex):\n(JSC::genericTypedArrayViewProtoFuncFindLast):\n(JSC::genericTypedArrayViewProtoFuncFindLastIndex):\n(JSC::genericTypedArrayViewProtoFuncEvery):\n(JSC::genericTypedArrayViewProtoFuncSome):\n(JSC::genericTypedArrayViewProtoFuncReduce):\n(JSC::genericTypedArrayViewProtoFuncReduceRight):\n(JSC::genericTypedArrayViewProtoFuncSortImpl):\n(JSC::genericTypedArrayViewProtoFuncSlice):\n(JSC::genericTypedArrayViewProtoFuncSubarray):\n* Source/JavaScriptCore/runtime/JSIteratorPrototype.cpp:\n(JSC::JSC_DEFINE_HOST_FUNCTION):\n* Source/JavaScriptCore/runtime/JSMicrotask.cpp:\n(JSC::promiseResolveThenableJobFastSlow):\n(JSC::promiseResolveThenableJobWithInternalMicrotaskFastSlow):\n(JSC::promiseResolveThenableJob):\n(JSC::promiseResolveWithoutHandlerJobSlow):\n(JSC::runInternalMicrotask):\n* Source/JavaScriptCore/runtime/JSONObject.cpp:\n(JSC::Stringifier::toJSON):\n(JSC::Stringifier::appendStringifiedValue):\n(JSC::Walker::callReviver):\n* Source/JavaScriptCore/runtime/JSObject.cpp:\n(JSC::ordinarySetWithOwnDescriptor):\n(JSC::callToPrimitiveFunction):\n(JSC::JSObject::hasInstance):\n* Source/JavaScriptCore/runtime/JSPromise.cpp:\n(JSC::JSPromise::promiseResolve):\n(JSC::JSPromise::promiseReject):\n* Source/JavaScriptCore/runtime/JSPromiseConstructor.cpp:\n(JSC::promiseRaceSlow):\n(JSC::JSC_DEFINE_HOST_FUNCTION):\n(JSC::promiseAllSlow):\n(JSC::promiseAllSettledSlow):\n(JSC::promiseAnySlow):\n* Source/JavaScriptCore/runtime/JSPromisePrototype.cpp:\n(JSC::JSC_DEFINE_HOST_FUNCTION):\n(JSC::promiseProtoFuncFinallySlow):\n* Source/JavaScriptCore/runtime/JSTypedArrayViewConstructor.cpp:\n(JSC::JSC_DEFINE_HOST_FUNCTION):\n* Source/JavaScriptCore/runtime/MapConstructor.cpp:\n(JSC::JSC_DEFINE_HOST_FUNCTION):\n* Source/JavaScriptCore/runtime/MapPrototype.cpp:\n(JSC::JSC_DEFINE_HOST_FUNCTION):\n* Source/JavaScriptCore/runtime/ProxyObject.cpp:\n(JSC::performProxyGet):\n(JSC::ProxyObject::performInternalMethodGetOwnProperty):\n(JSC::ProxyObject::performHasProperty):\n(JSC::ProxyObject::performPut):\n(JSC::JSC_DEFINE_HOST_FUNCTION):\n(JSC::ProxyObject::performDelete):\n(JSC::ProxyObject::performPreventExtensions):\n(JSC::ProxyObject::performIsExtensible):\n(JSC::ProxyObject::performDefineOwnProperty):\n(JSC::ProxyObject::performGetOwnPropertyNames):\n(JSC::ProxyObject::performSetPrototype):\n(JSC::ProxyObject::performGetPrototype):\n* Source/JavaScriptCore/runtime/RegExpPrototype.cpp:\n(JSC::regExpExec):\n(JSC::regExpSplitSlow):\n(JSC::JSC_DEFINE_HOST_FUNCTION):\n* Source/JavaScriptCore/runtime/SetConstructor.cpp:\n(JSC::JSC_DEFINE_HOST_FUNCTION):\n* Source/JavaScriptCore/runtime/SetPrototype.cpp:\n(JSC::JSC_DEFINE_HOST_FUNCTION):\n* Source/JavaScriptCore/runtime/StringPrototype.cpp:\n(JSC::JSC_DEFINE_HOST_FUNCTION):\n(JSC::stringMatchSlow):\n(JSC::stringSearchSlow):\n(JSC::stringMatchAllSlow):\n* Source/JavaScriptCore/runtime/StringPrototypeInlines.h:\n(JSC::replaceUsingStringSearch):\n* Source/JavaScriptCore/runtime/SyntheticModuleRecord.cpp:\n(JSC::SyntheticModuleRecord::tryCreateWithExportNamesAndValues):\n(JSC::SyntheticModuleRecord::tryCreateDefaultExportSyntheticModule):\n* Source/JavaScriptCore/runtime/SyntheticModuleRecord.h:\n* Source/JavaScriptCore/runtime/VM.cpp:\n(JSC::VM::callPromiseRejectionCallback):\n* Source/JavaScriptCore/runtime/WeakMapConstructor.cpp:\n(JSC::JSC_DEFINE_HOST_FUNCTION):\n* Source/JavaScriptCore/runtime/WeakMapPrototype.cpp:\n(JSC::JSC_DEFINE_HOST_FUNCTION):\n* Source/JavaScriptCore/runtime/WeakSetConstructor.cpp:\n(JSC::JSC_DEFINE_HOST_FUNCTION):\n* Source/JavaScriptCore/tools/JSDollarVM.cpp:\n(JSC::callWithStackSizeProbeFunction):\n(JSC::JSC_DEFINE_HOST_FUNCTION):\n\nCanonical link: https://commits.webkit.org/319337@main",
      "email": "ysuzuki@apple.com",
      "hash": "db2d849cbee5ea5c6779bcb34525979cffc791c2",
      "subject": "[JSC] Use std::array for fixed-sized ArgList"
    },
    "319338@main": {
      "author": "Alexey Proskuryakov",
      "avatar": "https://www.gravatar.com/avatar/c66a0fa7958ae738ab34d596994091a4?d=identicon\u0026s=64",
      "cl": "319338@main",
      "clUrl": "https://commits.webkit.org/319338@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=321815\nrdar://184955117\n\nReviewed by BJ Burg.\n\n`Console.messagesCleared` arrives before the `Page.frameNavigated` that sets the flag, so the\nassertion fired on the first navigation and afterwards only ever tested the previous one. In fact,\nthe two events cannot be reliably correlated at all: under Site Isolation they arrive on\ndifferent targets, and on a cross-process navigation the frontend synthesizes the main resource\nchange only after an asynchronous `Page.getResourceTree` round-trip.\n\n`reason` is authoritative, so drop the cross-check and keep the flag solely for backends that don't\nsend one, renaming it to say so.\n\n* Source/WebCore/inspector/InspectorInstrumentation.cpp:\n(WebCore::InspectorInstrumentation::didCommitLoadImpl): Remove an incorrect comment.\n`InspectorNetworkAgent::mainFrameNavigated` dispatches no event, so its position is not observable\nby the frontend.\n* Source/WebInspectorUI/UserInterface/Controllers/ConsoleManager.js:\n(WI.ConsoleManager): Rename `_isNewPageOrReload` to `_legacyPendingMainFrameNavigationClear`.\n(WI.ConsoleManager.prototype.messagesCleared): Drop the assertion.\n(WI.ConsoleManager.prototype._delayedMessagesCleared): Rename.\n(WI.ConsoleManager.prototype._mainResourceDidChange): Only track the pending clear when the backend\ndoesn't send a `reason`.\n\nCanonical link: https://commits.webkit.org/319338@main",
      "email": "ap@apple.com",
      "hash": "1d867f31b1819721c9efb1ccb4576133c5588020",
      "subject": "this._isNewPageOrReload assertion fails in ConsoleManager.js on the first navigation"
    },
    "319339@main": {
      "author": "Yusuke Suzuki",
      "avatar": "https://www.gravatar.com/avatar/3455d9081295e3e740c1ffa901217d9b?d=identicon\u0026s=64",
      "cl": "319339@main",
      "clUrl": "https://commits.webkit.org/319339@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=321877\nrdar://185056908\n\nReviewed by Sosuke Suzuki.\n\nSince TypedArrays' element size are fixed, we can apply radix-sort. For\n1-byte sized elements, we already introduced counting-sort. And for the\nrest of the element types, we use radix-sort: uint16_t becomes two\nuint8_t digits. Performing the counting-sort onto the lower uint8_t\nside, and then doing the counting-sort onto the upper uint8_t.\n\n                                               ToT                     Patched\n\n    uint8array-sort-large-array          49.7578+-1.6459           49.7540+-0.8851\n    uint32array-sort-large-array        132.7664+-5.3124     ^     53.1423+-0.6340        ^ definitely 2.4983x faster\n    float64array-sort-large-array        97.6190+-4.4608     ^     37.8412+-0.1655        ^ definitely 2.5797x faster\n    int32array-sort-large-array         130.4901+-5.7267     ^     56.2865+-0.5195        ^ definitely 2.3183x faster\n    float64array-sort-medium-array       69.3409+-4.0941     ^     63.3630+-0.8433        ^ definitely 1.0943x faster\n    uint32array-sort-custom               9.6304+-0.1055     ?      9.6732+-0.1015        ?\n    uint16array-sort-large-array        127.9445+-0.7055     ^     28.0103+-1.0780        ^ definitely 4.5678x faster\n    int8array-sort-large-array           51.9604+-0.7734     ?     53.1044+-1.9928        ? might be 1.0220x slower\n    uint8array-sort-medium-array        114.3740+-2.3787          113.5297+-3.5727\n    int16array-sort-large-array         128.7244+-0.4794     ^     29.1688+-0.5807        ^ definitely 4.4131x faster\n    float64array-sort-small-array       133.8621+-2.3568     ?    134.3342+-3.1311        ?\n    int32array-sort-small-array         124.7704+-0.5951     ?    124.9305+-0.6441        ?\n    float64array-sort-presorted         129.4033+-2.1667     ^     70.1832+-0.1949        ^ definitely 1.8438x faster\n    uint8array-sort-small-array          88.8232+-6.2246           88.5175+-2.4005\n    float32array-sort-large-array       115.9230+-0.9632     ^     62.4550+-0.3878        ^ definitely 1.8561x faster\n    uint8array-sort-presorted             8.3450+-0.2152            8.2700+-0.2215\n    uint8array-sort-low-entropy          50.0322+-0.2387           49.9000+-0.3350\n    float64array-sort-low-entropy       117.3185+-1.2640     ?    119.8619+-1.7623        ? might be 1.0217x slower\n    int32array-sort-low-entropy         115.2864+-3.2295          114.4655+-2.0151\n    uint8array-sort-tiny-array           97.7407+-0.9797     ?     97.9517+-1.0774        ?\n    int32array-sort-medium-array        130.4366+-1.6415     ^     91.3443+-0.2602        ^ definitely 1.4280x faster\n    int32array-sort-presorted           115.2502+-1.0671     ^     17.0865+-0.9215        ^ definitely 6.7451x faster\n    int16array-sort-low-entropy         121.2838+-0.7962     ?    121.5654+-2.7104        ?\n\n    \u003cgeometric\u003e                          82.5904+-0.3588     ^     55.2056+-0.1905        ^ definitely 1.4961x faster\n\nTests: JSTests/microbenchmarks/float32array-sort-large-array.js\n       JSTests/microbenchmarks/float64array-sort-large-array.js\n       JSTests/microbenchmarks/float64array-sort-low-entropy.js\n       JSTests/microbenchmarks/float64array-sort-medium-array.js\n       JSTests/microbenchmarks/float64array-sort-presorted.js\n       JSTests/microbenchmarks/float64array-sort-small-array.js\n       JSTests/microbenchmarks/int16array-sort-large-array.js\n       JSTests/microbenchmarks/int16array-sort-low-entropy.js\n       JSTests/microbenchmarks/int32array-sort-large-array.js\n       JSTests/microbenchmarks/int32array-sort-low-entropy.js\n       JSTests/microbenchmarks/int32array-sort-medium-array.js\n       JSTests/microbenchmarks/int32array-sort-presorted.js\n       JSTests/microbenchmarks/int32array-sort-small-array.js\n       JSTests/microbenchmarks/uint16array-sort-large-array.js\n       JSTests/microbenchmarks/uint32array-sort-large-array.js\n       JSTests/stress/typed-array-sort-radix-sort.js\n       Tools/TestWebKitAPI/Tests/WTF/SIMDHelpers.cpp\n\n* JSTests/microbenchmarks/float32array-sort-large-array.js: Added.\n(nextRandom):\n* JSTests/microbenchmarks/float64array-sort-large-array.js: Added.\n(nextRandom):\n* JSTests/microbenchmarks/float64array-sort-low-entropy.js: Added.\n(nextRandom):\n* JSTests/microbenchmarks/float64array-sort-medium-array.js: Added.\n(nextRandom):\n* JSTests/microbenchmarks/float64array-sort-presorted.js: Added.\n* JSTests/microbenchmarks/float64array-sort-small-array.js: Added.\n(nextRandom):\n* JSTests/microbenchmarks/int16array-sort-large-array.js: Added.\n(nextRandom):\n* JSTests/microbenchmarks/int16array-sort-low-entropy.js: Added.\n(nextRandom):\n* JSTests/microbenchmarks/int32array-sort-large-array.js: Added.\n(nextRandom):\n* JSTests/microbenchmarks/int32array-sort-low-entropy.js: Added.\n(nextRandom):\n* JSTests/microbenchmarks/int32array-sort-medium-array.js: Added.\n(nextRandom):\n* JSTests/microbenchmarks/int32array-sort-presorted.js: Added.\n* JSTests/microbenchmarks/int32array-sort-small-array.js: Added.\n(nextRandom):\n* JSTests/microbenchmarks/uint16array-sort-large-array.js: Added.\n(nextRandom):\n* JSTests/microbenchmarks/uint32array-sort-large-array.js: Added.\n(nextRandom):\n* JSTests/stress/typed-array-sort-radix-sort.js: Added.\n(shouldBe):\n(nextRandom):\n(isBigIntArray):\n(compareNumbers):\n(compareBigInts):\n(sortedReference):\n(coerce):\n(integerPatterns.random):\n(integerPatterns.identical):\n(integerPatterns.ascending):\n(integerPatterns.descending):\n(integerPatterns.lowDigitOnly):\n(integerPatterns.secondDigitOnly):\n(integerPatterns.twoValues):\n(integerPatterns.alternatingSign):\n(inversionPositions):\n(storageView):\n(sweepInversions):\n(compareFloats):\n(shouldMatchFloatReference):\n(floatPatterns.random):\n(floatPatterns.identical):\n(floatPatterns.ascending):\n(floatPatterns.descending):\n(floatPatterns.subnormalAndTiny):\n(floatPatterns.largeMagnitude):\n(floatPatterns.withZeros):\n(floatPatterns.withInfinities):\n(floatPatterns.withNaN):\n(floatPatterns.allNaN):\n(floatPatterns.negativeNaN):\n(ascendingWideBase):\n(shouldRestoreBase):\n* JSTests/stress/typedarray-sort-out-of-memory.js:\n(catch):\n* Source/JavaScriptCore/runtime/JSGenericTypedArrayView.h:\n* Source/JavaScriptCore/runtime/JSGenericTypedArrayViewInlines.h:\n(JSC::JSGenericTypedArrayView\u003cAdaptor\u003e::sort):\n(JSC::JSGenericTypedArrayView\u003cAdaptor\u003e::sortKey):\n(JSC::JSGenericTypedArrayView\u003cAdaptor\u003e::sortKeyDigit):\n(JSC::JSGenericTypedArrayView\u003cAdaptor\u003e::isNonDescending):\n(JSC::JSGenericTypedArrayView\u003cAdaptor\u003e::countingSort):\n(JSC::JSGenericTypedArrayView\u003cAdaptor\u003e::hasFewDistinctValues):\n(JSC::JSGenericTypedArrayView\u003cAdaptor\u003e::radixSort):\n(JSC::JSGenericTypedArrayView\u003cAdaptor\u003e::radixSortWithCounters):\n* Source/WTF/wtf/SIMDHelpers.h:\n(WTF::SIMD::bitXor2):\n(WTF::SIMD::bitXor):\n* Tools/TestWebKitAPI/CMakeLists.txt:\n* Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:\n* Tools/TestWebKitAPI/Tests/WTF/SIMDHelpers.cpp: Added.\n(TestWebKitAPI::extractLanes):\n(TestWebKitAPI::TEST(WTF_SIMDHelpers, LessThanUnsigned8)):\n(TestWebKitAPI::TEST(WTF_SIMDHelpers, LessThanUnsigned16)):\n(TestWebKitAPI::TEST(WTF_SIMDHelpers, LessThanUnsigned32)):\n(TestWebKitAPI::TEST(WTF_SIMDHelpers, LessThanUnsigned64)):\n(TestWebKitAPI::TEST(WTF_SIMDHelpers, Bitwise32)):\n(TestWebKitAPI::TEST(WTF_SIMDHelpers, Bitwise64)):\n(TestWebKitAPI::TEST(WTF_SIMDHelpers, LessThanFeedsIsNonZero)):\n\nCanonical link: https://commits.webkit.org/319339@main",
      "email": "ysuzuki@apple.com",
      "hash": "6b13bfa7ba4341e5041b6f02566d2dd89fd2b855",
      "subject": "[JSC] Implement radix-sort for TypedArrays"
    },
    "319340@main": {
      "author": "Sam Weinig",
      "avatar": "https://www.gravatar.com/avatar/354b409240f9fb3357f498c547423d96?d=identicon\u0026s=64",
      "cl": "319340@main",
      "clUrl": "https://commits.webkit.org/319340@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=321095\n\nReviewed by Darin Adler.\n\nUse the computed font size (confusingly named specifiedSize()) rather than the\nminimum-font-size adjusted size (confusingly called unzoomedComputedSize()) always\nwhen computing `em`, `rem`, `ex` and `rex` units.\n\nThis matches what CSS Values 4 says to do:\n\n  \"Some user-agents allow users to apply additional restrictions to font sizes in a\n   document, such as setting minimum font sizes to ensure readability. Such restrictions\n   must be applied to the used value of the affected properties only; they must not\n   affect the resolution of font-relative lengths used in properties\"\n    - https://drafts.csswg.org/css-values-4/#font-relative-length\n\nThe change whitespace change in line-height-minimumFontSize-expected.txt is due to the\nmargins around the description changing (due to 1em now being 16 and not 64px). The\ndump-as-text code uses TextIterator, which has heuristic to add newlines that is based\non the used margins (see shouldEmitExtraNewlineForNode).\n\n* LayoutTests/fast/text/line-height-minimumFontSize-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/svg/types/scripted/SVGLength-rem-expected.txt:\n* Source/WebCore/style/values/primitives/StyleLengthResolution.cpp:\n\nCanonical link: https://commits.webkit.org/319340@main",
      "email": "sam@webkit.org",
      "hash": "f082dfc9005c6a15d5bf43f6b21c5f4a3f234d53",
      "subject": "[EvaluationTimeZoom] Use the font's specifiedSize() getter consistently in length resolution"
    },
    "319341@main": {
      "author": "Sammy Gill",
      "avatar": "https://www.gravatar.com/avatar/715a3cfee5d85ee90ccfdaa2a4a7a5a3?d=identicon\u0026s=64",
      "cl": "319341@main",
      "clUrl": "https://commits.webkit.org/319341@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=321967\nrdar://185151625\n\nReviewed by Alan Baradlay.\n\nRenderBox tracked which of a box's margins had been trimmed by margin-trim in\na RenderObjectRareData EnumSet, but nothing observable ever consulted it.\n\nThe only writer was RenderBlock::setTrimmedMarginForChild(), which asserts on\nthe inline sides, so the set only ever held BlockStart / BlockEnd. Its callers\nare all in RenderBlockFlow; grid never populated the bits, and inline-axis\ntrimming in RenderBox::computeOrTrimInlineMargin() returns 0 without recording\nanything.\n\nThe only reader was the margin-right branch of MarginEdgeSharedAdaptor in\nStyleExtractorCustom.h. That check is unreachable for block-level boxes:\nrendererCanHaveTrimmedMargin() requires a horizontal-writing-mode containing\nblock, and in a horizontal writing mode physical right always maps to an inline\nside, which the set never contains. The grid-item path required the grid to\nspecify margin-trim, which grid does not implement. Even where it did fire, the\nother three margin properties already fall through to the used value, so\ncomputed style reports the trimmed 0px without needing the bits.\n\nThe bits were also never cleared on relayout or style change, so any future\nreader would have observed stale trim state.\n\n* Source/WebCore/rendering/RenderBlock.cpp:\n(WebCore::RenderBlock::setTrimmedMarginForChild): Drop the markMarginAsTrimmed() call.\n* Source/WebCore/rendering/RenderBox.cpp:\n(WebCore::RenderBox::markMarginAsTrimmed): Deleted.\n(WebCore::RenderBox::hasTrimmedMargin): Deleted.\n* Source/WebCore/rendering/RenderBox.h:\n* Source/WebCore/rendering/RenderObject.h: Remove RenderObjectRareData::trimmedMargins.\n* Source/WebCore/style/StyleExtractorCustom.h: Remove rendererCanHaveTrimmedMargin()\nand toMarginTrimSide() along with the margin-right early return that used them.\n\nCanonical link: https://commits.webkit.org/319341@main",
      "email": "sammy.gill@apple.com",
      "hash": "75f22acf41f4639f3487a5954712331b579c91a7",
      "subject": "Remove the unused trimmed-margin rare data bits from RenderBox"
    },
    "319342@main": {
      "author": "Dan Glastonbury",
      "avatar": "https://www.gravatar.com/avatar/fb7cb28bf9f1bc9fc0c3bbf65566efdc?d=identicon\u0026s=64",
      "cl": "319342@main",
      "clUrl": "https://commits.webkit.org/319342@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=321763\nrdar://184884068\n\nReviewed by Simon Fraser.\n\nNo change to functionality.\n\n* Source/WebCore/platform/cocoa/AppleVisualEffect.cpp:\n(WebCore::appleVisualEffectNeedsBackdrop): Deleted.\n* Source/WebCore/platform/cocoa/AppleVisualEffect.h:\n(WebCore::appleVisualEffectNeedsBackdrop):\n\nCanonical link: https://commits.webkit.org/319342@main",
      "email": "djg@apple.com",
      "hash": "1aaf950edb3116d37d4b1787f27332212340cec3",
      "subject": "Make WebCore::appleVisualEffectNeedsBackdrop inline."
    },
    "319343@main": {
      "author": "Kai Tamkun",
      "avatar": "https://www.gravatar.com/avatar/dff073cba21885df4d9f73ed3cc493c2?d=identicon\u0026s=64",
      "cl": "319343@main",
      "clUrl": "https://commits.webkit.org/319343@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=321720\nrdar://184856840\n\nReviewed by Yijia Huang.\n\nThis patch adds an option for JS inlining to globally rank all\ninlining candidates prior to DFG bytecode parsing. Currently this\ndoesn't do much to change which candidates are inlined because the\nbudget remains fairly high, but with some followup work to tune\nthe budget, it can be used to skip inlining of less profitable\ncandidates.\n\nNo new tests because the new behavior isn't observable.\n\n* Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:\n(JSC::DFG::InliningPlan::siteFor const):\n(JSC::DFG::InliningPlan::isBuilt const):\n(JSC::DFG::InliningPlan::surveyedCount const):\n(JSC::DFG::InliningPlan::admittedCount const):\n(JSC::DFG::InliningPlan::admittedCost const):\n(JSC::DFG::InliningPlan::budget const):\n(JSC::DFG::InliningPlan::root const):\n(JSC::DFG::InliningPlan::priceCandidate const):\n(JSC::DFG::calleeTierBonus):\n(JSC::DFG::InliningPlan::addSite):\n(JSC::DFG::InliningPlan::surveyCallSites):\n(JSC::DFG::isHigherPriorityInliningCandidate):\n(JSC::DFG::InliningPlan::build):\n(JSC::DFG::ByteCodeParser::inlineCall):\n(JSC::DFG::ByteCodeParser::handleCallVariant):\n(JSC::DFG::ByteCodeParser::handleVarargsInlining):\n(JSC::DFG::ByteCodeParser::planPermitsInlining const):\n(JSC::DFG::ByteCodeParser::planInlining):\n(JSC::DFG::ByteCodeParser::parse):\n* Source/JavaScriptCore/runtime/OptionsList.h:\n\nCanonical link: https://commits.webkit.org/319343@main",
      "email": "k_tamkun@apple.com",
      "hash": "bdb72467372c43614a9d6207ee7b789cdc9561d6",
      "subject": "[JSC] Add global priority queue inliner"
    },
    "319344@main": {
      "author": "Jer Noble",
      "avatar": "https://www.gravatar.com/avatar/6d2cde9be23b98223ca964cb3b7813a0?d=identicon\u0026s=64",
      "cl": "319344@main",
      "clUrl": "https://commits.webkit.org/319344@main",
      "description": "rdar://184145070\nhttps://bugs.webkit.org/show_bug.cgi?id=321107\n\nReviewed by Jean-Yves Avenard.\n\nThe stall-resume.py script inside css/selectors/media/support/ will cause requests made\nto block until a POST unblocks loading. This causes problems with Range requests as multiple\nrange requests may be issued, succeed, but block at the 4k mark. Once the POST is issued,\nit becomes a race as to which request will become unblocked.\n\nModify stall-resume.py so that the POST command will unblock _all_ requests for a limited\ntime (5s). Also update the request path so that a cancelled request is detected and causes\nthe server to bail out early, reducing concurrent blocked requests.\n\nUn-skip this test and two other related ones that are passing on WPT.fyi.\n\n* LayoutTests/TestExpectations:\n* LayoutTests/imported/w3c/web-platform-tests/css/selectors/invalidation/media-loading-pseudo-classes-in-has.sub-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/selectors/media/fetch-loading-state-timing.sub-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/selectors/media/fetch-loading-state-timing.sub.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/selectors/media/media-loading-state-timing.sub-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/selectors/media/media-loading-state.sub-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/selectors/media/support/stall-resume.py:\n(main):\n\nCanonical link: https://commits.webkit.org/319344@main",
      "email": "jer.noble@apple.com",
      "hash": "d90f0e768984a5127eaf4d6790bb1611c8272b79",
      "subject": "[WPT] Enable css/selectors/media/media-loading-state-timing.sub.html"
    },
    "319345@main": {
      "author": "Antti Koivisto",
      "avatar": "https://www.gravatar.com/avatar/07965eed55d4b41ea2b394599b17f7cd?d=identicon\u0026s=64",
      "cl": "319345@main",
      "clUrl": "https://commits.webkit.org/319345@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=321917\nrdar://185091735\n\nReviewed by Zak Ridouh and Wenson Hsieh.\n\nThe CMake TestWebKitAPIWebProcessPlugIn target doesn't build\nPlatformUtilitiesCocoa.mm, which defines Util::TestPlugInClassNameParameter.\nWebProcessPlugIn.mm reads that bundle parameter to pick the principal test\nplug-in class. The target links -undefined,dynamic_lookup, so the missing\ndefinition isn't a link error, just an undefined flat-namespace symbol. It\nresolves when the TestWebKitAPI binary is the host, since that binary exports\nit. Any other host fails:\n\n    dlopen(.../TestWebKitAPI.wkbundle/Contents/MacOS/TestWebKitAPI):\n    symbol not found in flat namespace\n    '__ZN13TestWebKitAPI4Util28TestPlugInClassNameParameterE'\n\nInjectedBundle::initialize bails there, so no plug-in callback runs and a\nclient loading this bundle to get window.internals sees it undefined with no\nerror. The Xcode WebProcessPlugIn target already lists PlatformUtilitiesCocoa.mm\nand UtilitiesCocoa.mm in its Helpers membership exceptions, so only CMake builds\nare affected. WebKitTestRunner isn't: it has its own injected bundle and calls\ninjectInternalsObject() directly, which is why layout tests never caught this.\n\nBuild both files into the bundle. PlatformUtilitiesCocoa.mm is listed in\nSourcesCocoa.txt, so WEBKIT_COMPUTE_SOURCES marks it HEADER_FILE_ONLY and it has\nto come in through an #include shim, the same way this target already builds its\ndual-built sources. It also uses the WebKit C API, which config.h only exposes\nunder BUILDING_TestWebKit, as TestWebKitAPIBase and TestWebKitAPIInjectedBundle\nboth define.\n\n* Tools/TestWebKitAPI/PlatformCocoa.cmake:\n\nAdd PlatformUtilitiesCocoa.mm (via shim) and UtilitiesCocoa.mm to\nTestWebKitAPIWebProcessPlugIn, and define BUILDING_TestWebKit so the former\ncompiles.\n\nCanonical link: https://commits.webkit.org/319345@main",
      "email": "antti@apple.com",
      "hash": "36195809a5ca24048b466eed2fde07f3c9bb54f0",
      "subject": "TestWebKitAPI.wkbundle is unloadable outside the TestWebKitAPI binary in CMake builds"
    },
    "319346@main": {
      "author": "Sosuke Suzuki",
      "avatar": "https://www.gravatar.com/avatar/e63b87350fe19bdd9a30c7234eda45af?d=identicon\u0026s=64",
      "cl": "319346@main",
      "clUrl": "https://commits.webkit.org/319346@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=321764\n\nReviewed by Yusuke Suzuki.\n\nUnlinkedCodeBlock has m_features, m_lineCount, m_endColumn and the two source URL directives.\nOnly Program / Eval / Module code writes them, so that CodeCache can copy them into the new\nexecutable on a cache hit. Function code never touches them because UnlinkedFunctionExecutable\nhas its own copies. Still, every UnlinkedFunctionCodeBlock pays 22 bytes for them.\n\nThis patch moves them to UnlinkedGlobalCodeBlock, as GlobalExecutable already does on the linked\nside, and moves m_llintExecuteCounter next to the remaining small fields so that the freed bytes\nare not lost to padding. CachedCodeBlock is split in the same way.\n\nsizeof(UnlinkedFunctionCodeBlock) goes from 216 to 192 bytes, so its cell goes from 224 to 192\nbytes. That is 32 bytes per function that has been compiled to bytecode (1,665 of them, 53 KB,\nafter loading typescript.js and compiling one file). The global code blocks do not change in size.\n\n* Source/JavaScriptCore/bytecode/UnlinkedCodeBlock.cpp:\n(JSC::UnlinkedCodeBlock::UnlinkedCodeBlock):\n* Source/JavaScriptCore/bytecode/UnlinkedCodeBlock.h:\n(JSC::UnlinkedCodeBlock::setHasTailCalls):\n(JSC::UnlinkedCodeBlock::allowDirectEvalCache const): Deleted.\n(JSC::UnlinkedCodeBlock::usesImportMeta const): Deleted.\n(JSC::UnlinkedCodeBlock::recordParse): Deleted.\n(JSC::UnlinkedCodeBlock::sourceURLDirective const): Deleted.\n(JSC::UnlinkedCodeBlock::sourceMappingURLDirective const): Deleted.\n(JSC::UnlinkedCodeBlock::setSourceURLDirective): Deleted.\n(JSC::UnlinkedCodeBlock::setSourceMappingURLDirective): Deleted.\n(JSC::UnlinkedCodeBlock::codeFeatures const): Deleted.\n(JSC::UnlinkedCodeBlock::lexicallyScopedFeatures const): Deleted.\n(JSC::UnlinkedCodeBlock::hasCapturedVariables const): Deleted.\n(JSC::UnlinkedCodeBlock::lineCount const): Deleted.\n(JSC::UnlinkedCodeBlock::startColumn const): Deleted.\n(JSC::UnlinkedCodeBlock::endColumn const): Deleted.\n* Source/JavaScriptCore/bytecode/UnlinkedGlobalCodeBlock.h:\n(JSC::UnlinkedGlobalCodeBlock::recordParse):\n(JSC::UnlinkedGlobalCodeBlock::sourceURLDirective const):\n(JSC::UnlinkedGlobalCodeBlock::sourceMappingURLDirective const):\n(JSC::UnlinkedGlobalCodeBlock::setSourceURLDirective):\n(JSC::UnlinkedGlobalCodeBlock::setSourceMappingURLDirective):\n(JSC::UnlinkedGlobalCodeBlock::codeFeatures const):\n(JSC::UnlinkedGlobalCodeBlock::allowDirectEvalCache const):\n(JSC::UnlinkedGlobalCodeBlock::lexicallyScopedFeatures const):\n(JSC::UnlinkedGlobalCodeBlock::hasCapturedVariables const):\n(JSC::UnlinkedGlobalCodeBlock::lineCount const):\n(JSC::UnlinkedGlobalCodeBlock::startColumn const):\n(JSC::UnlinkedGlobalCodeBlock::endColumn const):\n* Source/JavaScriptCore/runtime/CachedTypes.cpp:\n(JSC::CachedCodeBlock::isBuiltinDefaultClassConstructor const):\n(JSC::CachedCodeBlock::hasCheckpoints const):\n(JSC::CachedGlobalCodeBlock::encode):\n(JSC::CachedGlobalCodeBlock::features const):\n(JSC::CachedGlobalCodeBlock::lexicallyScopedFeatures const):\n(JSC::CachedGlobalCodeBlock::hasCapturedVariables const):\n(JSC::CachedGlobalCodeBlock::lineCount const):\n(JSC::CachedGlobalCodeBlock::endColumn const):\n(JSC::CachedGlobalCodeBlock::sourceURLDirective const):\n(JSC::CachedGlobalCodeBlock::sourceMappingURLDirective const):\n(JSC::UnlinkedCodeBlock::UnlinkedCodeBlock):\n(JSC::UnlinkedGlobalCodeBlock::UnlinkedGlobalCodeBlock):\n(JSC::CachedCodeBlock\u003cCodeBlockType\u003e::encode):\n(JSC::CachedCodeBlock::sourceURLDirective const): Deleted.\n(JSC::CachedCodeBlock::sourceMappingURLDirective const): Deleted.\n(JSC::CachedCodeBlock::hasCapturedVariables const): Deleted.\n(JSC::CachedCodeBlock::lineCount const): Deleted.\n(JSC::CachedCodeBlock::endColumn const): Deleted.\n(JSC::CachedCodeBlock::features const): Deleted.\n(JSC::CachedCodeBlock::lexicallyScopedFeatures const): Deleted.\n\nCanonical link: https://commits.webkit.org/319346@main",
      "email": "sosuke@bun.sh",
      "hash": "3d0e6c14b12c2641c27faaf2f213483432d13b7a",
      "subject": "[JSC] Move the fields only global code uses out of `UnlinkedCodeBlock`"
    },
    "319347@main": {
      "author": "Fujii Hironori",
      "avatar": "https://www.gravatar.com/avatar/ef99cb23f5e5d27977968ca097d9a85f?d=identicon\u0026s=64",
      "cl": "319347@main",
      "clUrl": "https://commits.webkit.org/319347@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=318938\n\nReviewed by Carlos Garcia Campos.\n\nGTK and WPE ports support touch events, but previously supported the\nasynchronous scrolling only for wheel events. While the iOS port supports\nasynchronous scrolling for touch events too, its platform layer tree and\nscrolling tree reside in the UIProcess. In contrast, GTK and WPE maintain both\ntrees in the WebProcess using Coordinated Graphics, so the iOS implementation\ncannot be directly reused.\n\nThis patch adds support for touch event asynchronous scrolling in GTK and WPE\nby following an approach similar to asynchronous wheel event scrolling:\n\n1. Enable ENABLE_TOUCH_EVENT_REGIONS to register touch related event regions to\n   the platform layer tree.\n2. Send touch events to EventDispatcher in the EventDispatcher thread of web process.\n3. Handle touch events asynchronously or synchronously depending on whether the\n   touch target falls within a non-passive touch event region.\n\nAdditionally, updated touch event layout tests. Because touch event regions\nmust be calculated and propagated to the scrolling tree before dispatching\ntouch events, tests registering new event listeners now wait for two animation\nframes before dispatching touch events. Added a new helper function\nUIHelper.renderingComplete().\n\n* Source/WTF/Scripts/Preferences/UnifiedWebPreferences.yaml:\n* Source/WTF/wtf/PlatformEnableGlib.h:\n* Source/WebCore/dom/Document.cpp:\n(WebCore::Document::hasTouchEventHandlers const):\n* Source/WebCore/page/scrolling/ScrollingTree.cpp:\n(WebCore::ScrollingTree::determineTouchEventTrackingTypeForPoint):\n(WebCore::ScrollingTree::mainFrameScrollOffset const):\n* Source/WebCore/page/scrolling/ScrollingTree.h:\n* Source/WebCore/page/scrolling/coordinated/ScrollingTreeCoordinated.cpp:\n(WebCore::ScrollingTreeCoordinated::findTouchEventTrackingTypeForPoint const):\n(WebCore::findLayerForPoint):\n(WebCore::mergeTrackingTypes):\n(WebCore::ScrollingTreeCoordinated::eventTrackingTypeForTouchEvent):\n(WebCore::findLayerOfEventRegionAtPoint):\n* Source/WebCore/page/scrolling/coordinated/ScrollingTreeCoordinated.h:\n* Source/WebKit/UIProcess/WebPageProxy.cpp:\n(WebKit::WebPageProxy::processNextQueuedTouchEvent):\n(WebKit::WebPageProxy::touchEventHandlingCompleted):\n(WebKit::WebPageProxy::handleTouchEvent):\n* Source/WebKit/UIProcess/WebPageProxy.h:\n* Source/WebKit/WebProcess/WebPage/EventDispatcher.cpp:\n(WebKit::mergeTrackingTypes):\n(WebKit::EventDispatcher::updateTouchEventTracking):\n(WebKit::EventDispatcher::touchEventTrackingType const):\n(WebKit::EventDispatcher::dispatchTouchEventViaMainThread):\n(WebKit::EventDispatcher::touchEvent):\n(WebKit::EventDispatcher::EventDispatcher):\n* Source/WebKit/WebProcess/WebPage/EventDispatcher.h:\n* Source/WebKit/WebProcess/WebPage/EventDispatcher.messages.in:\n* Source/WebKit/WebProcess/WebPage/WebPage.cpp:\n(WebKit::WebPage::dispatchTouchEvent):\n* Source/WebKit/WebProcess/WebPage/WebPage.h:\n* LayoutTests/fast/events/touch/basic-multi-touch-events-limited.html:\n* LayoutTests/fast/events/touch/basic-multi-touch-events.html:\n* LayoutTests/fast/events/touch/basic-single-touch-events.html:\n* LayoutTests/fast/events/touch/input-touch-target.html:\n* LayoutTests/fast/events/touch/moved-touch-target.html:\n* LayoutTests/fast/events/touch/multi-touch-grouped-targets.html:\n* LayoutTests/fast/events/touch/multi-touch-inside-iframes.html:\n* LayoutTests/fast/events/touch/multi-touch-inside-nested-iframes.html:\n* LayoutTests/fast/events/touch/multi-touch-some-without-handlers.html:\n* LayoutTests/fast/events/touch/removed-fragment-touch-target.html:\n* LayoutTests/fast/events/touch/removed-touch-target.html:\n* LayoutTests/fast/events/touch/send-oncancel-event.html:\n* LayoutTests/fast/events/touch/tap-highlight-color.html:\n* LayoutTests/fast/events/touch/text-node-touch-target.html:\n* LayoutTests/fast/events/touch/textarea-touch-target.html:\n* LayoutTests/fast/events/touch/touch-active-state.html:\n* LayoutTests/fast/events/touch/touch-coords-in-zoom-and-scroll.html:\n* LayoutTests/fast/events/touch/touch-event-frames.html:\n* LayoutTests/fast/events/touch/touch-event-pageXY.html:\n* LayoutTests/fast/events/touch/touch-inside-iframe.html:\n* LayoutTests/fast/events/touch/touch-scaled-scrolled.html:\n* LayoutTests/fast/events/touch/touch-slider-no-js-touch-listener.html:\n* LayoutTests/fast/events/touch/touch-slider.html:\n* LayoutTests/fast/events/touch/touch-target.html:\n* LayoutTests/fast/events/touch/resources/touch-stale-node-crash.js:\n(onload.async await):\n(onload):\n(onload.async if): Deleted.\n* LayoutTests/fast/events/touch/touch-stale-node-crash.html:\n* LayoutTests/resources/ui-helper.js:\n(window.UIHelper.async renderingUpdate):\n(window.UIHelper.async renderingComplete):\n* Source/WebCore/html/HTMLInputElementInlines.h:\n(WebCore::HTMLInputElement::updateTouchEventHandler):\n* Source/WebCore/platform/ScrollingEffectsController.cpp:\n(WebCore::ScrollingEffectsController::handleWheelEvent):\n* Source/WebCore/page/scrolling/ThreadedScrollingTree.h:\n(WebCore::ThreadedScrollingTree::eventTrackingTypeForTouchEvent):\n\nCanonical link: https://commits.webkit.org/319347@main",
      "email": "fujii@igalia.com",
      "hash": "2dce2395a46b77141ed9e6cadb6b5e5bee1e1bf3",
      "subject": "[GTK][WPE] Support touch event asynchronous scrolling"
    },
    "319348@main": {
      "author": "Richard Robinson",
      "avatar": "https://www.gravatar.com/avatar/a0d2f862985ed0fd47887be66f5a3e4f?d=identicon\u0026s=64",
      "cl": "319348@main",
      "clUrl": "https://commits.webkit.org/319348@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=321995\nrdar://185147060\n\nReviewed by Abrar Rahman Protyasha.\n\nThe tests depended on introspecting the root view of the NSHostingView, which is not\nactually a `PDFHUDControls` (but rather, a `SwiftUI.NSHostingView\u003cSwiftUI.ModifiedContent\u003cWebKit.PDFHUDControls, SwiftUI._EnvironmentKeyWritingModifier\u003cWebKit.PDFHUDControlsModel?\u003e\u003e\u003e`).\n\nFix by just storing the action handler directly and calling that.\n\n* Source/WebKit/UIProcess/PDF/WKAlternatePDFHUDView+Testing.swift:\n(WKAlternatePDFHUDView.performAction(_:)):\n* Source/WebKit/UIProcess/PDF/WKAlternatePDFHUDView.swift:\n\nCanonical link: https://commits.webkit.org/319348@main",
      "email": "richard_robinson2@apple.com",
      "hash": "0032bf6cdfb079d8888cabd2e81a120ba6953685",
      "subject": "[macOS]REGRESSION(318934@main): 5x TestWebKitAPI.UnifiedPDF.*/TestWebKitAPI.WebKit.* (api-tests) are constant crashes."
    },
    "319349@main": {
      "author": "Adrian Taylor",
      "avatar": "https://www.gravatar.com/avatar/d2acb8ad2e2670ff74ae0d65fb27014c?d=identicon\u0026s=64",
      "cl": "319349@main",
      "clUrl": "https://commits.webkit.org/319349@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=321507\nrdar://184618311\n\nReviewed by Zak Ridouh.\n\nA couple of files of tests were missing from the CMake build instructions. Add\nthem.\n\n* Tools/TestWebKitAPI/CMakeLists.txt:\n* Tools/TestWebKitAPI/Tests/WebCore/PushMessageCrypto.cpp:\n\nCanonical link: https://commits.webkit.org/319349@main",
      "email": "adrian_taylor@apple.com",
      "hash": "57fa326743a4765c49a911eb8e7b02336ad008ae",
      "subject": "Add tests missing from CMake build"
    },
    "319350@main": {
      "author": "Carlos Garcia Campos",
      "avatar": "https://www.gravatar.com/avatar/8393f7e76d83c8a147cb852d8fb1a959?d=identicon\u0026s=64",
      "cl": "319350@main",
      "clUrl": "https://commits.webkit.org/319350@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=321869\n\nReviewed by Simon Fraser.\n\n318557@main bounded a layer whose clip is unbounded in one axis by\nre-clipping it to the document rect, but it can be smaller than the\nlayer contents. Fall back to the descendant union instead.\n\nTest: compositing/geometry/composited-bounds-single-axis-clip-taller-than-document.html\n\n* LayoutTests/compositing/geometry/composited-bounds-single-axis-clip-taller-than-document-expected.txt: Added.\n* LayoutTests/compositing/geometry/composited-bounds-single-axis-clip-taller-than-document.html: Added.\n* LayoutTests/compositing/geometry/composited-bounds-with-single-axis-clip-expected.txt:\n* LayoutTests/platform/ios/compositing/geometry/composited-bounds-with-single-axis-clip-expected.txt: Copied from LayoutTests/compositing/geometry/composited-bounds-with-single-axis-clip-expected.txt.\n* Source/WebCore/rendering/RenderLayer.cpp:\n(WebCore::RenderLayer::calculateClipRects const):\n* LayoutTests/platform/glib/compositing/geometry/composited-bounds-single-axis-clip-taller-than-document-expected.txt: Added.\n\nCanonical link: https://commits.webkit.org/319350@main",
      "email": "cgarcia@igalia.com",
      "hash": "c25d650a72fc07adeead148b3da86d9fce4da672",
      "subject": "REGRESSION(318557@main): Pasted text gets cut off in https://app.coderpad.io/sandbox"
    },
    "319351@main": {
      "author": "Sergey Rubanov",
      "avatar": "https://www.gravatar.com/avatar/d04164fa4e06ce85533085f24c766e17?d=identicon\u0026s=64",
      "cl": "319351@main",
      "clUrl": "https://commits.webkit.org/319351@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=321924\n\nReviewed by Yusuke Suzuki.\n\nImmutable imported globals copy their value into the instance. Export\nthen built a new JS wrapper, so re-exporting an imported\nWebAssembly.Global produced a different object. Mutable imports already\ngo through linkGlobal and keep identity.\n\nRemember the imported wrapper and return it from the export object.\nNumber imports still get a fresh wrapper.\n\n* JSTests/wasm/js-api/global-import-export-identity.js: Added.\n* LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/instance/constructor-caching.any-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/instance/constructor-caching.any.worker-expected.txt:\n* Source/JavaScriptCore/wasm/js/JSWebAssemblyInstance.cpp:\n(JSC::JSWebAssemblyInstance::visitChildrenImpl):\n(JSC::JSWebAssemblyInstance::setImportedGlobalWrapper):\n(JSC::JSWebAssemblyInstance::importedGlobalWrapper):\n* Source/JavaScriptCore/wasm/js/JSWebAssemblyInstance.h:\n* Source/JavaScriptCore/wasm/js/WebAssemblyModuleRecord.cpp:\n(JSC::WebAssemblyModuleRecord::initializeImports):\n(JSC::WebAssemblyModuleRecord::initializeExports):\n\nCanonical link: https://commits.webkit.org/319351@main",
      "email": "chi187@gmail.com",
      "hash": "20c0bd7d62f4eaef2e9d82e34875ba340b016b0f",
      "subject": "[JSC][Wasm] Re-exported imported immutable Global should be the same object"
    },
    "319352@main": {
      "author": "Diego Pino Garcia",
      "avatar": "https://www.gravatar.com/avatar/e8cce88637f1a6e79155e8371e24b2e8?d=identicon\u0026s=64",
      "cl": "319352@main",
      "clUrl": "https://commits.webkit.org/319352@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=321926\n\nReviewed by Philippe Normand.\n\nPass 'data' directly to 'NotifyPacketReceived'.\n\n* Source/WebKit/WebProcess/Network/webrtc/LibWebRTCSocket.cpp:\n(WebKit::LibWebRTCSocket::signalReadPacket):\n\nCanonical link: https://commits.webkit.org/319352@main",
      "email": "dpino@igalia.com",
      "hash": "ab28a079a8a7f3538589b33bbcd0614f1dc2d293",
      "subject": "[LibWebRTC] Fix unsafe-buffer-usage-in-container warning in LibWebRTCSocket.cpp"
    },
    "319353@main": {
      "author": "Karl Dubost",
      "avatar": "https://www.gravatar.com/avatar/0c2b3d380fb637f3dd51eda704634b6f?d=identicon\u0026s=64",
      "cl": "319353@main",
      "clUrl": "https://commits.webkit.org/319353@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=321024\nrdar://184542148\n\nReviewed by Darin Adler.\n\nA subgrid in a grid that spreads its leftover space between its tracks laid\nits own tracks out packed together instead of on the parent's grid lines.\nFirefox and Chrome place them on the parent's lines.\n\nA grid keeps its content distribution as two numbers: one shift before the\nfirst track, one added after every track.\ncomputeContentPositionAndDistributionOffset() returned both as zero for a\nsubgridded axis. Zero is right for the shift, already in our border box\nposition, and wrong for the per-track offset, which nothing else put back.\n\nFix by inheriting the parent's per-track offset, keeping the shift at zero.\n\nA subgrid that declares its own gap is a separate defect, not fixed here.\n\nTest: imported/w3c/web-platform-tests/css/css-grid/subgrid/subgridded-axis-content-distribution-001.html\n\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/subgrid/subgridded-axis-content-distribution-001-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/subgrid/subgridded-axis-content-distribution-001.html: Added.\n* Source/WebCore/rendering/RenderGrid.cpp:\n(WebCore::RenderGrid::computeContentPositionAndDistributionOffset const):\n\nCanonical link: https://commits.webkit.org/319353@main",
      "email": "karlcow@apple.com",
      "hash": "767e62cbb34461364cbdf59df9af230a7e5893a8",
      "subject": "Subgrid columns ignore the parent grid's content distribution"
    },
    "319354@main": {
      "author": "Diego Pino Garcia",
      "avatar": "https://www.gravatar.com/avatar/e8cce88637f1a6e79155e8371e24b2e8?d=identicon\u0026s=64",
      "cl": "319354@main",
      "clUrl": "https://commits.webkit.org/319354@main",
      "description": "Unreviewed.\n\nWebKit commit 319248@main added a group of 'display-p3' related tests to\nGLIB TestExpectations. These tests were meant to pass, but lacked a state.\nIn TestExpectations, when a test lacks state the test is actually\ntreated as Skip.\n\nThis change marks the groups of tests added in 319248@main as Pass,\nwhich was the original intention.\n\n* LayoutTests/platform/glib/TestExpectations:\n\nCanonical link: https://commits.webkit.org/319354@main",
      "email": "dpino@igalia.com",
      "hash": "4f9e9ee7c4e85b0b11896317f895ed58b6e9236c",
      "subject": "[GLIB] layout test gardening"
    },
    "319355@main": {
      "author": "Jean-Yves Avenard",
      "avatar": "https://www.gravatar.com/avatar/509313899deeb9262fad8f5e04093f5b?d=identicon\u0026s=64",
      "cl": "319355@main",
      "clUrl": "https://commits.webkit.org/319355@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=321997\nrdar://185184098\n\nUnreviewed build fix.\n\nReplace BBQCalleeReference::operator= with set() to fix -Wthread-safety-precise on GTK\nAliasing slot-\u003em_bbqCallee into a local reference silenced the analyzer for the named-method calls but not for the\nassignment, because clang never substitutes the object expression into a lock attribute when the function is called\nthrough operator syntax — so the operator itself had to go, not the callsite spelling.\n\n* Source/JavaScriptCore/wasm/WasmCalleeGroup.cpp:\n(JSC::Wasm::CalleeGroup::installOptimizedCallee):\n* Source/JavaScriptCore/wasm/WasmCalleeGroup.h:\n\nCanonical link: https://commits.webkit.org/319355@main",
      "email": "jya@apple.com",
      "hash": "20d622b6d656cb7de8d97480534d15edb08aac78",
      "subject": "Build failure when building for GTK using clang 18"
    },
    "319356@main": {
      "author": "Aakash Jain",
      "avatar": "https://www.gravatar.com/avatar/e82e0cafeeac3a35b7e74206ebe4c536?d=identicon\u0026s=64",
      "cl": "319356@main",
      "clUrl": "https://commits.webkit.org/319356@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=321954\n\u003crdar://problem/185136476\u003e\n\nReviewed by Sam Sneddon.\n\nPatches were submitted to EWS either by setting r? on a Bugzilla attachment, or by\nwebkit-patch posting an attachment and then submitting it to the /submit-to-ews/ page.\nThat page was removed from ews-app in 319285@main, so this step now retries a 404 for\neight minutes before failing. Pull requests reach EWS through GitHub events instead.\n\n* Tools/Scripts/webkitpy/common/net/ewsserver.py: Removed.\n* Tools/Scripts/webkitpy/common/net/ewsserver_mock.py: Removed.\n* Tools/Scripts/webkitpy/common/net/ewsserver_unittest.py: Removed.\n* Tools/Scripts/webkitpy/tool/commands/upload.py:\n* Tools/Scripts/webkitpy/tool/commands/upload_unittest.py:\n* Tools/Scripts/webkitpy/tool/main.py:\n* Tools/Scripts/webkitpy/tool/mocktool.py:\n* Tools/Scripts/webkitpy/tool/steps/__init__.py:\n* Tools/Scripts/webkitpy/tool/steps/options.py:\n* Tools/Scripts/webkitpy/tool/steps/postdiff.py:\n* Tools/Scripts/webkitpy/tool/steps/submittoews.py: Removed.\n\nCanonical link: https://commits.webkit.org/319356@main",
      "email": "aakash_jain@apple.com",
      "hash": "1acd8842fdb5e56f1b6c8b02d354f26539bfa948",
      "subject": "[webkit-patch] Remove Bugzilla patch workflow support from webkit-patch"
    },
    "319357@main": {
      "author": "Aakash Jain",
      "avatar": "https://www.gravatar.com/avatar/e82e0cafeeac3a35b7e74206ebe4c536?d=identicon\u0026s=64",
      "cl": "319357@main",
      "clUrl": "https://commits.webkit.org/319357@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=321805\nrdar://184941032\n\nUnreviewed follow-up fix.\n\n* Tools/CISupport/ews-build/steps.py:\n(ConfigureBuild):\n\nCanonical link: https://commits.webkit.org/319357@main",
      "email": "aakash_jain@apple.com",
      "hash": "e6c5641b5b315cb20d842c99c8bc19e287192d2b",
      "subject": "[ews-build] Remove Bugzilla patch workflow support from ews-build.webkit.org - follow up"
    },
    "319358@main": {
      "author": "Fady Farag",
      "avatar": "https://www.gravatar.com/avatar/0ac5127c69f90d0c57054173ae4c3108?d=identicon\u0026s=64",
      "cl": "319358@main",
      "clUrl": "https://commits.webkit.org/319358@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=321992\nrdar://185173274\n\nReviewed by Richard Robinson.\n\nUpdate the PAL Core module's `requires` declaration from `cplusplus` to\n`cplusplus23` so the module is only built in a C++23 context, matching the\nlanguage standard PAL is now compiled with. Also bump the module cache\ninvalidation comment (v7 -\u003e v8) to force a rebuild of the module cache.\n\n* Source/WebCore/PAL/pal/module.modulemap:\n\nCanonical link: https://commits.webkit.org/319358@main",
      "email": "com.webkit.iidmsa@gmail.com",
      "hash": "8f63cddaebc2766f2919ae5ded593531d0db0d1a",
      "subject": "Require C++23 for the PAL Core clang module"
    },
    "319359@main": {
      "author": "Anne van Kesteren",
      "avatar": "https://www.gravatar.com/avatar/09bb44ac3625a121017cd98d0a7dc52c?d=identicon\u0026s=64",
      "cl": "319359@main",
      "clUrl": "https://commits.webkit.org/319359@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=321935\n\nReviewed by Antoine Quint.\n\nAfter this import we should finally be able to de-duplicate with our\nown copy of the HTML parser tests.\n\nUpstream commit: https://github.com/web-platform-tests/wpt/commit/2956deb44ab8bdbab5fff3e558d9db14eac5d960\n\nCanonical link: https://commits.webkit.org/319359@main",
      "email": "annevk@annevk.nl",
      "hash": "734d271033c1eb6ae55b8a0ab7f18673e6885869",
      "subject": "Synchronize WPT html/syntax except speculative-parsing"
    },
    "319360@main": {
      "author": "Philippe Normand",
      "avatar": "https://www.gravatar.com/avatar/eef27203750af3510263cc29af21a16e?d=identicon\u0026s=64",
      "cl": "319360@main",
      "clUrl": "https://commits.webkit.org/319360@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=321913\n\nReviewed by Alicia Boya Garcia.\n\nMake sure GStreamer is initialized, or creating a WebCodecs AudioData from JS might trigger a\nWebProcess crash.\n\n* Source/WebCore/platform/audio/gstreamer/PlatformRawAudioDataGStreamer.cpp:\n(WebCore::PlatformRawAudioData::create):\n\nCanonical link: https://commits.webkit.org/319360@main",
      "email": "philn@igalia.com",
      "hash": "0b7beb9ffda71334e03318a44d3a456b29bb8dfc",
      "subject": "[GStreamer][WebCodecs] Ensure GStreamer is initialized when creating PlatformRawAudioData"
    },
    "319361@main": {
      "author": "Youenn Fablet",
      "avatar": "https://www.gravatar.com/avatar/0a9886e582a7aee1eb908eb59af36da4?d=identicon\u0026s=64",
      "cl": "319361@main",
      "clUrl": "https://commits.webkit.org/319361@main",
      "description": "rdar://183714274\nhttps://bugs.webkit.org/show_bug.cgi?id=320729\n\nReviewed by Alex Christensen.\n\n* Source/WTF/Scripts/Preferences/UnifiedWebPreferences.yaml:\n\nCanonical link: https://commits.webkit.org/319361@main",
      "email": "youenn@apple.com",
      "hash": "c2b3e55128ef7933753c707ba87464a7f3354958",
      "subject": "Enable FetchUploadStreamsEnabled by default"
    },
    "319362@main": {
      "author": "Ahmad Saleem",
      "avatar": "https://www.gravatar.com/avatar/38445f84fe28aa19bfeb1f59f6559532?d=identicon\u0026s=64",
      "cl": "319362@main",
      "clUrl": "https://commits.webkit.org/319362@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=321971\nrdar://185152473\n\nReviewed by Antoine Quint.\n\nFrameRateAligner::finishUpdate() looks for \"the compatible frame rate with the\nhighest value\" to align a newly-encountered frame rate with, but the comparison\nwas inverted, so it picked the lowest one instead.\n\nThis only matters when the new frame rate is compatible with two existing frame\nrates that are incompatible with each other, and therefore may have different\nfirst update times. With animations running at 10fps and 15fps started one frame\napart, a new 30fps animation aligned with the 10fps animation and so was never\nsampled in the same frame as the 15fps animation, which is exactly what this\ncode exists to avoid.\n\nTest: webanimations/frame-rate/animation-frame-rate-alignment-highest-compatible-frame-rate.html\n\n* LayoutTests/webanimations/frame-rate/animation-frame-rate-alignment-highest-compatible-frame-rate-expected.txt: Added.\n* LayoutTests/webanimations/frame-rate/animation-frame-rate-alignment-highest-compatible-frame-rate.html: Added.\n* Source/WebCore/animation/FrameRateAligner.cpp:\n(WebCore::FrameRateAligner::finishUpdate):\n\nCanonical link: https://commits.webkit.org/319362@main",
      "email": "ahmad.saleem792+github@gmail.com",
      "hash": "662686d7e7b2cb7fd3a8d5df6ff7d036e4038af1",
      "subject": "FrameRateAligner aligns a newly-encountered frame rate with the lowest compatible frame rate instead of the highest"
    },
    "319363@main": {
      "author": "Ahmad Saleem",
      "avatar": "https://www.gravatar.com/avatar/38445f84fe28aa19bfeb1f59f6559532?d=identicon\u0026s=64",
      "cl": "319363@main",
      "clUrl": "https://commits.webkit.org/319363@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=321975\nrdar://185153675\n\nReviewed by Antoine Quint.\n\nBlendingKeyframes::analyzeKeyframe() runs once per keyframe and accumulates metadata about\nthe animation as a whole, but the size-dependent transform flags were assigned rather than\nor-ed in, so they described only the last keyframe analyzed. A later size-independent\nkeyframe, a height-dependent keyframe following a width-dependent one, or the\nCSSPropertyTranslate block following the CSSPropertyTransform block within a single\nkeyframe would each wipe a dependency.\n\nThe flags feed computedNeedsForcedLayout(), computeHasSizeDependentTransform() and the\nRunningAccelerated::Prevented check in applyPendingAcceleratedActions(), so losing one\nlets the animation be committed to the compositor with no forced layout, where\nRenderLayerBacking::startAnimation() bakes translateX(50%) against the stale,\npre-animation width and never updates it.\n\nAccumulate with |=, matching every other lambda in analyzeKeyframe().\n\nTests: animations/transform-percent-in-single-keyframe-with-height.html\n       animations/transform-percent-in-single-keyframe-with-width.html\n       webanimations/size-dependent-transform-not-accelerated.html\n\n* LayoutTests/animations/transform-percent-in-single-keyframe-with-height-expected.html: Added.\n* LayoutTests/animations/transform-percent-in-single-keyframe-with-height.html: Added.\n* LayoutTests/animations/transform-percent-in-single-keyframe-with-width-expected.html: Added.\n* LayoutTests/animations/transform-percent-in-single-keyframe-with-width.html: Added.\n* LayoutTests/webanimations/size-dependent-transform-not-accelerated-expected.txt: Added.\n* LayoutTests/webanimations/size-dependent-transform-not-accelerated.html: Added.\n* Source/WebCore/animation/BlendingKeyframes.cpp:\n(WebCore::BlendingKeyframes::analyzeKeyframe):\n\nCanonical link: https://commits.webkit.org/319363@main",
      "email": "ahmad.saleem792+github@gmail.com",
      "hash": "26589117d86d3ca8f966b8d3efa3da5fb549c3f9",
      "subject": "[web-animations] An animation of width or height is incorrectly accelerated when only some keyframes have a size-dependent transform"
    },
    "319364@main": {
      "author": "Philippe Normand",
      "avatar": "https://www.gravatar.com/avatar/eef27203750af3510263cc29af21a16e?d=identicon\u0026s=64",
      "cl": "319364@main",
      "clUrl": "https://commits.webkit.org/319364@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=321875\n\nReviewed by Nikolas Zimmermann.\n\nCheck for the presence of framerate field in caps before attempting to fill video presets.\n\n* Source/WebCore/platform/mediastream/gstreamer/GStreamerVideoCaptureSource.cpp:\n(WebCore::GStreamerVideoCaptureSource::generatePresets):\n\nCanonical link: https://commits.webkit.org/319364@main",
      "email": "philn@igalia.com",
      "hash": "e9140a53f779a7e6e9aede43133b41002ef451ad",
      "subject": "[GStreamer] Web process aborts in gstStructureGetList() when a capture device's caps have no framerate field"
    },
    "319365@main": {
      "author": "Youenn Fablet",
      "avatar": "https://www.gravatar.com/avatar/0a9886e582a7aee1eb908eb59af36da4?d=identicon\u0026s=64",
      "cl": "319365@main",
      "clUrl": "https://commits.webkit.org/319365@main",
      "description": "rdar://184556197\nhttps://bugs.webkit.org/show_bug.cgi?id=320931\n\nReviewed by Jean-Yves Avenard.\n\nWe align with RFC 7065 by reusing the URLParser to parse the query string.\nWe validate that there is only one query string parameter and that the parameter name is transport.\nWe do not validate the parameter value as RFC 7065 allows extension names.\nLibwebrtc underneath will still validate the the parameter value is either udp or tcp anyway.\n\n* LayoutTests/webrtc/stun-server-filtering-expected.txt:\n* LayoutTests/webrtc/stun-server-filtering.html:\n* Source/WebCore/Modules/mediastream/RTCPeerConnection.cpp:\n(WebCore::RTCPeerConnection::iceServersFromConfiguration):\n\nCanonical link: https://commits.webkit.org/319365@main",
      "email": "youenn@apple.com",
      "hash": "d1dca194fe699fe19361e216e2d5f29a2e5eec51",
      "subject": "Summary: TURN URLs with query-string parameters rejected after commit r316873, breaking WebRTC connectivity"
    },
    "319366@main": {
      "author": "Jon Butler",
      "avatar": "https://www.gravatar.com/avatar/8ea31467fdac4a6517da9705d256efe1?d=identicon\u0026s=64",
      "cl": "319366@main",
      "clUrl": "https://commits.webkit.org/319366@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320996\n\nReviewed by Kimmo Kinnunen.\n\nRecent Apple SDK versions introduced a requirement for the UIApplicationSceneManifest key\nin the app's plist to avoid crashing on launch. This change adds this plist key, as well\nas changing the startup code to use the new scene-based design.\n\n* Source/ThirdParty/ANGLE/WebKit/ANGLEEnd2EndTestsAppInfo.plist:\n* Source/ThirdParty/ANGLE/util/ios/ios_main.mm:\n(-[AngleUtilSceneDelegate scene:willConnectToSession:options:]):\n(-[AngleUtilAppDelegate application:didFinishLaunchingWithOptions:]):\n(-[AngleUtilAppDelegate runMain]): Deleted.\n\nCanonical link: https://commits.webkit.org/319366@main",
      "email": "jonbutler@apple.com",
      "hash": "db35c2d759d938c8eec9af1c4069e43bdecfba0d",
      "subject": "Update the ANGLEEnd2EndTests binary plist with the required UIApplicationSceneManifest"
    },
    "319367@main": {
      "author": "Nikolas Zimmermann",
      "avatar": "https://www.gravatar.com/avatar/83cbd636495835720e369cd589e3ca5e?d=identicon\u0026s=64",
      "cl": "319367@main",
      "clUrl": "https://commits.webkit.org/319367@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320897\n\nReviewed by Adrian Perez de Castro.\n\n307174@main added Qualcomm decoder support for TextureMapper only, skiaImage()\nwas left unimplemented so videos couldn't render.\n\nEXT_YUV_target cannot be reproduced under Skia, Ganesh generates its own fragment\nprogram and only emits samplerExternalOES. Use its implicit YUV to RGB conversion,\nsteered by EGL_YUV_COLOR_SPACE_HINT_EXT and EGL_SAMPLE_RANGE_HINT_EXT taken from\nthe frame colorimetry, and fall back to an hint-free import if the driver rejects\nthem.\n\n* Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedPlatformLayerBufferExternalOES.cpp:\n(WebCore::CoordinatedPlatformLayerBufferExternalOES::create):\n(WebCore::CoordinatedPlatformLayerBufferExternalOES::CoordinatedPlatformLayerBufferExternalOES):\n(WebCore::CoordinatedPlatformLayerBufferExternalOES::createExternalOESTexture):\n(WebCore::CoordinatedPlatformLayerBufferExternalOES::paintToTextureMapper):\n(WebCore::CoordinatedPlatformLayerBufferExternalOES::skiaImage):\n* Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedPlatformLayerBufferExternalOES.h:\n* Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedPlatformLayerBufferVideo.cpp:\n(WebCore::yuvColorSpaceFromVideoInfo):\n(WebCore::CoordinatedPlatformLayerBufferVideo::createBufferIfNeeded):\n(WebCore::CoordinatedPlatformLayerBufferVideo::createBufferFromGLMemory):\n\nCanonical link: https://commits.webkit.org/319367@main",
      "email": "nzimmermann@igalia.com",
      "hash": "239e39ffdf78c6980c68cdb1df46ae7c6c09f9e4",
      "subject": "[GStreamer][Skia] Video rendering support for Qualcomm decoder"
    },
    "319368@main": {
      "author": "Ahmad Saleem",
      "avatar": "https://www.gravatar.com/avatar/38445f84fe28aa19bfeb1f59f6559532?d=identicon\u0026s=64",
      "cl": "319368@main",
      "clUrl": "https://commits.webkit.org/319368@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=321988\nrdar://185164643\n\nReviewed by Antoine Quint.\n\nThis patch aligns WebKit with Blink / Chromium.\n\nBlendingKeyframe's copy constructor initializes every member except\nm_hasPropertiesWithRevertRuleOrLayer. BlendingKeyframes::copyKeyframes()\ncopies each keyframe through that constructor and re-derives the container\nflag in analyzeKeyframe(), so the copy always reports\nhasPropertiesWithRevertRuleOrLayer() == false.\n\nIn the animation origin 'revert-layer' and 'revert-rule' roll the cascade\nback to the author level, which WebKit implements by leaving the property\nunapplied so the keyframe keeps the base style's value. That makes the\nkeyframe style depend on the author-level value, and\nKeyframeEffect::recomputeKeyframesIfNecessary() relies on the flag to\nre-resolve it when that value changes. Losing the flag leaves such an\neffect permanently pinned to the value the keyframes were first computed\nwith.\n\nThis is web-observable through the KeyframeEffect copy constructor: the\ncopy carries already-computed keyframes, so updateBlendingKeyframes() will\nnot rebuild them from the parsed keyframes, and setAnimation() only clears\nthem for CSSAnimation-typed effects.\n\nTest: imported/w3c/web-platform-tests/web-animations/interfaces/KeyframeEffect/copy-constructor-revert-layer.html\n\n* LayoutTests/imported/w3c/web-platform-tests/web-animations/interfaces/KeyframeEffect/copy-constructor-revert-layer-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/web-animations/interfaces/KeyframeEffect/copy-constructor-revert-layer.html: Added.\n* Source/WebCore/animation/BlendingKeyframes.cpp:\n(WebCore::BlendingKeyframe::BlendingKeyframe):\n\nCanonical link: https://commits.webkit.org/319368@main",
      "email": "ahmad.saleem792+github@gmail.com",
      "hash": "6718717d10e990b85cababf273e22be911cffa72",
      "subject": "BlendingKeyframe copy constructor drops m_hasPropertiesWithRevertRuleOrLayer, so keyframes using revert-layer/revert-rule stop being recomputed after KeyframeEffect is copied"
    },
    "319369@main": {
      "author": "Ahmad Saleem",
      "avatar": "https://www.gravatar.com/avatar/38445f84fe28aa19bfeb1f59f6559532?d=identicon\u0026s=64",
      "cl": "319369@main",
      "clUrl": "https://commits.webkit.org/319369@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=321986\nrdar://185162728\n\nReviewed by Antoine Quint.\n\nThis patch aligns WebKit with Blink / Chromium.\n\nStickinessAdjustmentData::rangeStartAdjustment() and rangeEndAdjustment()\naccumulated into `auto x = 0`, which deduces int, so each `+=` of a float\nsticky adjustment was truncated toward zero. The room a sticky box has to\nmove within its containing block is a float, so a fractional adjustment was\neither discarded entirely or lost its fraction, shifting the start and end of\nthe view timeline's cover range by up to a pixel. The sibling\nentryDistanceAdjustment() and exitDistanceAdjustment() already used float and\nwere unaffected.\n\nSpell both accumulators float, matching the siblings.\n\nTest: imported/w3c/web-platform-tests/scroll-animations/view-timelines/view-timeline-sticky-subpixel-adjustment.html\n\n* LayoutTests/imported/w3c/web-platform-tests/scroll-animations/view-timelines/view-timeline-sticky-subpixel-adjustment-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/scroll-animations/view-timelines/view-timeline-sticky-subpixel-adjustment.html: Added.\n* Source/WebCore/animation/ViewTimeline.cpp:\n(WebCore::StickinessAdjustmentData::rangeStartAdjustment const):\n(WebCore::StickinessAdjustmentData::rangeEndAdjustment const):\n\nCanonical link: https://commits.webkit.org/319369@main",
      "email": "ahmad.saleem792+github@gmail.com",
      "hash": "5aea254b4c026383ea8087f076499506f50b0963",
      "subject": "[scroll-animations] View timeline range boundaries discard subpixel sticky adjustments"
    },
    "319370@main": {
      "author": "Rob Buis",
      "avatar": "https://www.gravatar.com/avatar/74fb5af173895d2a7814b0aed1238a39?d=identicon\u0026s=64",
      "cl": "319370@main",
      "clUrl": "https://commits.webkit.org/319370@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=318854\n\nReviewed by Alan Baradlay.\n\nImplement computed value rules for display for certain combinations\nof the continue and -webkit-box-orient properties [1].\n\n[1] https://bugs.webkit.org/show_bug.cgi?id=318854\n\n* LayoutTests/TestExpectations:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-overflow/parsing/webkit-box-computed-expected.txt:\n* Source/WebCore/style/StyleAdjuster.cpp:\n(WebCore::Style::Adjuster::adjust const):\n\nCanonical link: https://commits.webkit.org/319370@main",
      "email": "rbuis@igalia.com",
      "hash": "9425389db654d58d4be60d373cd58dd7fdf20c82",
      "subject": "Fix css/css-overflow/parsing/webkit-box-computed.html"
    },
    "319371@main": {
      "author": "Justin Michaud",
      "avatar": "https://www.gravatar.com/avatar/36e0433ee725a08f7e1122a6bc584b57?d=identicon\u0026s=64",
      "cl": "319371@main",
      "clUrl": "https://commits.webkit.org/319371@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=321818\n\nReviewed by Yusuke Suzuki.\n\nSince not all fields of StringImpl are atomic yet, it is\nbetter form to just not share them, even if this site is\nbenign\n\n* JSTests/wasm/stress/wasm-imported-string-constants-utf8.js: Added.\n(uleb):\n(name):\n(moduleWithGlobalImport):\n(testMatch):\n(testNoMatch):\n(string_appeared_here.const.module.new.WebAssembly.Module.moduleWithGlobalImport):\n* Source/JavaScriptCore/wasm/WasmModuleInformation.cpp:\n(JSC::Wasm::encodeAsImportName):\n(JSC::Wasm::ModuleInformation::applyCompileOptions):\n(JSC::Wasm::ModuleInformation::populateImportShouldBeHidden):\n* Source/JavaScriptCore/wasm/WasmModuleInformation.h:\n* Source/JavaScriptCore/wasm/js/WebAssemblyModuleRecord.cpp:\n(JSC::findEnabledBuiltinSet):\n(JSC::WebAssemblyModuleRecord::initializeImports):\n\nCanonical link: https://commits.webkit.org/319371@main",
      "email": "jmichaud@igalia.com",
      "hash": "3400ff6aa7b63e840b7cecd229e38e2c19e538ae",
      "subject": "Don't share StringImpl for worker names"
    },
    "319372@main": {
      "author": "Ben Nham",
      "avatar": "https://www.gravatar.com/avatar/dc0914eabf69047ee3397794c2d17bf7?d=identicon\u0026s=64",
      "cl": "319372@main",
      "clUrl": "https://commits.webkit.org/319372@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=321904\nrdar://problem/185078141\n\nReviewed by Simon Fraser.\n\nThis fixes WebPageProxy::windowScreenDidChange() to broadcast the WindowScreenDidChange message to\nall of the page's processes rather than just the main frame's process.\n\nThere's another message above (PageScreenDidChange) which looks like it might need to be broadcast\nas well (it's used by the momentum dispatcher), but I'm not really sure. I left a FIXME there and\nwill ping the layout and rendering team about it.\n\n* Source/WebKit/UIProcess/API/Cocoa/WKWebViewPrivateForTesting.h:\n* Source/WebKit/UIProcess/API/Cocoa/WKWebViewTesting.mm:\n(-[WKWebView _setDisplayForTesting:nominalFramesPerSecond:]):\n(-[WKWebView _preferredRenderingUpdateIntervalsForTesting:]):\n* Source/WebKit/UIProcess/WebPageProxy.cpp:\n(WebKit::WebPageProxy::swapToProvisionalPage):\n(WebKit::WebPageProxy::windowScreenDidChange):\n* Source/WebKit/UIProcess/WebPageProxyTesting.cpp:\n(WebKit::WebPageProxyTesting::setDisplayForTesting):\n(WebKit::WebPageProxyTesting::preferredRenderingUpdateIntervalsInMilliseconds):\n* Source/WebKit/UIProcess/WebPageProxyTesting.h:\n(WebKit::WebPageProxyTesting::displayNominalFramesPerSecondOverride const):\n* Source/WebKit/WebProcess/WebPage/WebPageTesting.cpp:\n(WebKit::WebPageTesting::preferredRenderingUpdateIntervalInMilliseconds):\n* Source/WebKit/WebProcess/WebPage/WebPageTesting.h:\n* Source/WebKit/WebProcess/WebPage/WebPageTesting.messages.in:\n* Tools/TestWebKitAPI/Tests/WebKit/WKWebView/SiteIsolation.mm:\n(TestWebKitAPI::preferredRenderingUpdateIntervals):\n(TestWebKitAPI::TEST(SiteIsolation, DisplayRefreshRateReachesSubframeProcess)):\n(TestWebKitAPI::(SiteIsolation, DisplayRefreshRateReachesSubframeProcess)):\n\nCanonical link: https://commits.webkit.org/319372@main",
      "email": "nham@apple.com",
      "hash": "cfaa7420dd35be9747e23d977c84d45f27e2d752",
      "subject": "[Site Isolation] Broadcast WindowScreenDidChange to remote frame processes"
    },
    "319373@main": {
      "author": "Ben Nham",
      "avatar": "https://www.gravatar.com/avatar/dc0914eabf69047ee3397794c2d17bf7?d=identicon\u0026s=64",
      "cl": "319373@main",
      "clUrl": "https://commits.webkit.org/319373@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=321891\nrdar://185064757\n\nReviewed by Simon Fraser.\n\nWhen Site Isolation is enabled, we skipped over several operations in out-of-process iframes,\nbecause they only applied when a local main frame was present:\n\n - resuming animated images\n - calling show/hide on LocalFrameView roots (which affects scroll view state and tiled backing\n   coverage)\n\n(The path the pauses animated images isn't affected here--the animated image timer loop already\nself-pause when the images being animated go offscreen.)\n\nFix this by making this logic iterate through all root views rather than applying to just the main\nlocal frame view.\n\n* LayoutTests/http/tests/site-isolation/animated-gif-in-cross-origin-iframe-created-while-hidden-expected.txt: Added.\n* LayoutTests/http/tests/site-isolation/animated-gif-in-cross-origin-iframe-created-while-hidden.html: Added.\n* LayoutTests/http/tests/site-isolation/animated-gif-in-cross-origin-iframe-of-hidden-page-expected.txt: Added.\n* LayoutTests/http/tests/site-isolation/animated-gif-in-cross-origin-iframe-of-hidden-page.html: Added.\n* LayoutTests/http/tests/site-isolation/animated-svg-image-in-cross-origin-iframe-created-while-hidden-expected.txt: Added.\n* LayoutTests/http/tests/site-isolation/animated-svg-image-in-cross-origin-iframe-created-while-hidden.html: Added.\n* LayoutTests/http/tests/site-isolation/animated-svg-image-in-cross-origin-iframe-of-hidden-page-expected.txt: Added.\n* LayoutTests/http/tests/site-isolation/animated-svg-image-in-cross-origin-iframe-of-hidden-page.html: Added.\n* LayoutTests/http/tests/site-isolation/muted-autoplay-in-cross-origin-iframe-created-while-hidden-expected.txt: Added.\n* LayoutTests/http/tests/site-isolation/muted-autoplay-in-cross-origin-iframe-created-while-hidden.html: Added.\n* LayoutTests/http/tests/site-isolation/resources/animated-image-frame.html: Added.\n* LayoutTests/http/tests/site-isolation/resources/animated-red-green-blue-repeat-infinite.gif: Added.\n* LayoutTests/http/tests/site-isolation/resources/muted-autoplay-frame.html: Added.\n* LayoutTests/http/tests/site-isolation/resources/smil-animation.svg: Added.\n* Source/WebCore/page/LocalFrameView.cpp:\n(WebCore::LocalFrameView::show):\n* Source/WebCore/page/Page.cpp:\n(WebCore::Page::resumeAnimatingImages):\n(WebCore::Page::setIsVisibleInternal):\n(WebCore::Page::forEachRootFrameView):\n* Source/WebCore/page/Page.h:\n\nCanonical link: https://commits.webkit.org/319373@main",
      "email": "nham@apple.com",
      "hash": "d5c5445db4d92f7b3e730d443334147ca81eb8b7",
      "subject": "[Site Isolation] Animated images do not stop in an out-of-process iframe of a hidden page"
    },
    "319374@main": {
      "author": "Claudio Saavedra",
      "avatar": "https://www.gravatar.com/avatar/376a6edb56b8e52de407ea171c869bcf?d=identicon\u0026s=64",
      "cl": "319374@main",
      "clUrl": "https://commits.webkit.org/319374@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=322008\n\nReviewed by Vitor Roriz.\n\nUBLOCK_ARABIC_EXTENDED_C is only available in ICU 72.\n\n* Source/WebCore/platform/graphics/FontCascade.cpp:\n(WebCore::computeUnderlineType):\n\nCanonical link: https://commits.webkit.org/319374@main",
      "email": "csaavedra@igalia.com",
      "hash": "654b0d9dd941e1592cecddbc5c473facf0ff08d2",
      "subject": "REGRESSION(319220@main): Broke build with ICU \u003c 72"
    },
    "319376@main": {
      "author": "Sosuke Suzuki",
      "avatar": "https://www.gravatar.com/avatar/e63b87350fe19bdd9a30c7234eda45af?d=identicon\u0026s=64",
      "cl": "319376@main",
      "clUrl": "https://commits.webkit.org/319376@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=321843\n\nReviewed by Yusuke Suzuki.\n\nBytecodeGenerator records the offset of every label it emits, and UnlinkedCodeBlockGenerator::finalize\ncopies the list into UnlinkedCodeBlock::m_jumpTargets, where it stays for the lifetime of the code block\nand is also written to the bytecode cache. Nothing in a shipping configuration reads the contents: DFG and\nthe liveness analysis recompute the targets from the instruction stream with computePreciseJumpTargets(),\nBaseline labels every instruction, and computePreciseJumpTargets() only checks whether the list is empty.\nIt never is, because emitEnter() adds an entry to every code block. The one reader of the contents is\nLOLJIT, which is off by default.\n\nRemove the list from the generator, UnlinkedCodeBlock, CodeBlock and CachedCodeBlock, along with the\nempty check and the recomputation after generatorification. emitLabel() only needs to disable peephole\noptimizations. LOLJIT computes the targets with computePreciseJumpTargets() like DFG does, which also\ngives it the op_catch offsets of handlers with a completion register; the label list recorded the\nfollowing mov instead. The generated bytecode is unchanged.\n\nAfter loading typescript.js and compiling one file, this saves 4 bytes per label (7,040 labels in 944 code\nblocks, about 38 KB with malloc rounding) and 46 KB (1.4%) of bytecode cache. sizeof(UnlinkedFunctionCodeBlock)\ngoes from 216 to 208 bytes, so its cell goes from 224 to 208 bytes as well.\n\n* Source/JavaScriptCore/bytecode/BytecodeRewriter.cpp:\n(JSC::BytecodeRewriter::execute):\n* Source/JavaScriptCore/bytecode/CodeBlock.h:\n(JSC::CodeBlock::numberOfJumpTargets const): Deleted.\n(JSC::CodeBlock::jumpTarget const): Deleted.\n* Source/JavaScriptCore/bytecode/PreciseJumpTargets.cpp:\n(JSC::computePreciseJumpTargetsInternal):\n(JSC::computePreciseJumpTargets):\n(JSC::recomputePreciseJumpTargets): Deleted.\n* Source/JavaScriptCore/bytecode/PreciseJumpTargets.h:\n* Source/JavaScriptCore/bytecode/UnlinkedCodeBlock.cpp:\n(JSC::UnlinkedCodeBlock::visitChildrenImpl):\n* Source/JavaScriptCore/bytecode/UnlinkedCodeBlock.h:\n(JSC::UnlinkedCodeBlock::numberOfJumpTargets const): Deleted.\n(JSC::UnlinkedCodeBlock::jumpTarget const): Deleted.\n(JSC::UnlinkedCodeBlock::lastJumpTarget const): Deleted.\n* Source/JavaScriptCore/bytecode/UnlinkedCodeBlockGenerator.cpp:\n(JSC::UnlinkedCodeBlockGenerator::finalize):\n(JSC::UnlinkedCodeBlockGenerator::applyModification):\n* Source/JavaScriptCore/bytecode/UnlinkedCodeBlockGenerator.h:\n(JSC::UnlinkedCodeBlockGenerator::numberOfJumpTargets const): Deleted.\n(JSC::UnlinkedCodeBlockGenerator::addJumpTarget): Deleted.\n(JSC::UnlinkedCodeBlockGenerator::jumpTarget const): Deleted.\n(JSC::UnlinkedCodeBlockGenerator::lastJumpTarget const): Deleted.\n* Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp:\n(JSC::BytecodeGenerator::generate):\n(JSC::BytecodeGenerator::emitEnter):\n* Source/JavaScriptCore/bytecompiler/BytecodeGeneratorBaseInlines.h:\n(JSC::BytecodeGeneratorBase\u003cTraits\u003e::emitLabel):\n* Source/JavaScriptCore/lol/LOLJIT.cpp:\n(JSC::LOL::LOLJIT::compileAndLinkWithoutFinalizing):\n* Source/JavaScriptCore/lol/LOLJIT.h:\n(JSC::LOL::LOLJIT::nextBytecodeIndexWithFlushForJumpTargetsIfNeeded):\n* Source/JavaScriptCore/runtime/CachedTypes.cpp:\n(JSC::CachedCodeBlock\u003cCodeBlockType\u003e::decode const):\n(JSC::CachedCodeBlock\u003cCodeBlockType\u003e::encode):\n\nCanonical link: https://commits.webkit.org/319376@main",
      "email": "sosuke@bun.sh",
      "hash": "0b92c2bcd0d55ced7be0cbbd1fa38009b5138f4c",
      "subject": "[JSC] Remove `UnlinkedCodeBlock::m_jumpTargets`"
    },
    "319377@main": {
      "author": "Anne van Kesteren",
      "avatar": "https://www.gravatar.com/avatar/09bb44ac3625a121017cd98d0a7dc52c?d=identicon\u0026s=64",
      "cl": "319377@main",
      "clUrl": "https://commits.webkit.org/319377@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=322005\n\nReviewed by Antoine Quint.\n\nAfter 319359@main the WPT tests are just as hackable as our copy. Apart\nfrom legacy \u003cselect\u003e coverage they are a strict superset.\nfast/parser/legacy-select-parsing.html continues covering legacy\n\u003cselect\u003e for as long as we keep that preference around.\n\nCanonical link: https://commits.webkit.org/319377@main",
      "email": "annevk@annevk.nl",
      "hash": "e9effa368f288d616c78a1a8827cc5278d3e0611",
      "subject": "Remove our copy of the HTML parser tests in favor of WPT"
    },
    "319378@main": {
      "author": "Alexey Proskuryakov",
      "avatar": "https://www.gravatar.com/avatar/c66a0fa7958ae738ab34d596994091a4?d=identicon\u0026s=64",
      "cl": "319378@main",
      "clUrl": "https://commits.webkit.org/319378@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=321833\nrdar://184974939\n\nReviewed by Alex Christensen.\n\nA download attribute check outlives the navigation that follows it, which 319105@main made deliberate. Two\nthings followed.\n\nThe check DocumentLoader::willSendRequest() makes for a redirect reuses the navigation's triggering action,\ndownload attribute and all, so it was taken for the download's own check and left outstanding when the\nnavigation was cancelled. Answering it then started a download of the redirect target for a navigation that\nwas already gone. Only the check for the activation is the download's, and it is the one made with no\nredirect response: PolicyChecker makes no other check that carries a download attribute, so the redirect\nresponse tells the two apart, in both processes.\n\nA decision that arrives once a newer navigation owns the load its check was made for was applied to that\nnavigation. The website policies are the clearest of these, disabling content JavaScript in a document the\nclient allowed it for; the navigation identifier and origin keying in the same decision belong to the load\nthat is gone. Record that load with the check, and once it is gone answer anything but a download Ignore.\n\nTests: TestWebKitAPI.WKDownload.DownloadAttributeRedirectCheckIsCancelledWithItsNavigation\n       TestWebKitAPI.WKDownload.DownloadAttributeDecisionDoesNotApplyPoliciesToNewerNavigation\n\n* Source/WebKit/UIProcess/WebFrameProxy.h: Say which checks are download checks.\n* Source/WebKit/UIProcess/WebPageProxy.cpp:\n(WebKit::WebPageProxy::decidePolicyForNavigationAction): Keep a redirect check out of them.\n* Source/WebKit/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:\n(WebKit::WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction): Ditto, and record the load the\ncheck is made for.\n* Source/WebKit/WebProcess/WebPage/WebFrame.cpp:\n(WebKit::WebFrame::setUpPolicyListener): Store it.\n(WebKit::WebFrame::newerNavigationOwnsDownloadAttributePolicyCheckLoad): Added.\n(WebKit::WebFrame::didReceivePolicyDecision): Answer a decision whose load a newer navigation has taken over\nIgnore, unless it is a download, which is all that is still meaningful.\n* Source/WebKit/WebProcess/WebPage/WebFrame.h: Added the load to PolicyCheck and to setUpPolicyListener().\nDeclared newerNavigationOwnsDownloadAttributePolicyCheckLoad().\n* Tools/TestWebKitAPI/Tests/WebKit/WKWebView/Download.mm:\n(TEST(WKDownload, DownloadAttributeRedirectCheckIsCancelledWithItsNavigation)): Added. Holds the redirect\ndecision, cancels the navigation, then answers Download, and round trips through the server so that a\ndownload started by the answer has been served before the check. No layout test: WebKitTestRunner answers\nDownload for every download attribute action, so it never reaches a redirect in one.\n(TEST(WKDownload, DownloadAttributeDecisionDoesNotApplyPoliciesToNewerNavigation)): Added. Answers the newer\nnavigation first so the download's decision is the last word on the policies of a load that is still\nprovisional, and checks that load's script still runs. The navigation identifier in the same decision is not\ncovered: for a main frame the newer navigation's own decision re-stamps the right one immediately, so the\ndamage does not survive. The sandbox extension is not covered either: only a file: URL is granted one, and\nswapping which load it belongs to changes nothing observable while the process holds read access to the file\nby other grants.\n\nCanonical link: https://commits.webkit.org/319378@main",
      "email": "ap@apple.com",
      "hash": "f78e2fb7cfb10417c5a99affaba7fcad58226c52",
      "subject": "REGRESSION (319105@main): a policy decision that outlives its navigation is honored for a load it does not belong to"
    },
    "319379@main": {
      "author": "Diego Pino Garcia",
      "avatar": "https://www.gravatar.com/avatar/e8cce88637f1a6e79155e8371e24b2e8?d=identicon\u0026s=64",
      "cl": "319379@main",
      "clUrl": "https://commits.webkit.org/319379@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=322020\n\nReviewed by Patrick Griffis.\n\n'AccessibilityObjectAtspi' already implements method 'focus' but it was\nnot publicly exposed.\n\nMake 'AccessibilityObjectAtspi::focus()' public and call it from\n'AccessibilityUIElementAtspi::takeFocus()', unblocking three tests.\n\n* LayoutTests/platform/glib/TestExpectations:\n* Source/WebCore/accessibility/atspi/AccessibilityObjectAtspi.h:\n* Tools/WebKitTestRunner/InjectedBundle/atspi/AccessibilityUIElementAtspi.cpp:\n(WTR::AccessibilityUIElementAtspi::takeFocus):\n\nCanonical link: https://commits.webkit.org/319379@main",
      "email": "dpino@igalia.com",
      "hash": "4e8b274fb225f4424f1729114841c02fd3246b45",
      "subject": "[GLIB][a11y] WTR: Add missing implementation of takeFocus"
    },
    "319380@main": {
      "author": "Brady Eidson",
      "avatar": "https://www.gravatar.com/avatar/31bed81d6d8ef517f93b30add03f5651?d=identicon\u0026s=64",
      "cl": "319380@main",
      "clUrl": "https://commits.webkit.org/319380@main",
      "description": "rdar://184640337\nhttps://bugs.webkit.org/show_bug.cgi?id=321529\n\nReviewed by Sihui Liu.\n\nWith site isolation a page is usually backed by more than one web content process.\nBut `stopLoading`, the media playback commands, and the suspend and resume commands\nare only sent to the main frame's process.\n\nCross-site iframes keep loading, keep playing, and kept running timers after the app\nis told the work is done.\n\nFix this by sending the relevant IPC to every process backing the page, as well as\nincluding relevant state information when creating new pages in new processes.\n\nTest: Tools/TestWebKitAPI/Tests/WebKit/WKWebView/SiteIsolation.mm\n\n* Source/WebKit/Shared/WebPageCreationParameters.h:\n* Source/WebKit/Shared/WebPageCreationParameters.serialization.in:\n* Source/WebKit/UIProcess/WebFrameProxy.cpp:\n(WebKit::WebFrameProxy::prepareForProvisionalLoadInProcess):\n* Source/WebKit/UIProcess/WebPageProxy.cpp:\n(WebKit::WebPageProxy::stopLoading):\n(WebKit::WebPageProxy::receivedNavigationActionPolicyDecision):\n(WebKit::WebPageProxy::resumeActiveDOMObjectsAndAnimations):\n(WebKit::WebPageProxy::suspendActiveDOMObjectsAndAnimations):\n(WebKit::WebPageProxy::suspend):\n(WebKit::WebPageProxy::resume):\n(WebKit::WebPageProxy::requestMediaPlaybackState):\n(WebKit::WebPageProxy::pauseAllMediaPlayback):\n(WebKit::WebPageProxy::suspendAllMediaPlayback):\n(WebKit::WebPageProxy::resumeAllMediaPlayback):\n(WebKit::WebPageProxy::creationParameters):\n* Source/WebKit/UIProcess/WebPageProxyInternals.h:\n* Source/WebKit/WebProcess/WebPage/WebPage.cpp:\n(WebKit::m_allowsImmersiveEnvironments):\n(WebKit::WebPage::stopLoading):\n* Tools/TestWebKitAPI/Tests/WebKit/WKWebView/SiteIsolation.mm:\n(TestWebKitAPI::(SiteIsolation, StopLoadingStopsCrossSiteIframe)):\n(TestWebKitAPI::(SiteIsolation, PauseAllMediaPlaybackPausesCrossSiteIframe)):\n(TestWebKitAPI::(SiteIsolation, SetAllMediaPlaybackSuspendedSuspendsCrossSiteIframe)):\n(TestWebKitAPI::(SiteIsolation, ResumeAllMediaPlaybackResumesCrossSiteIframe)):\n(TestWebKitAPI::(SiteIsolation, RequestMediaPlaybackStateReflectsCrossSiteIframe)):\n(TestWebKitAPI::(SiteIsolation, SuspendPageSuspendsCrossSiteIframeProcess)):\n(TestWebKitAPI::(SiteIsolation, SuspendedPageDoesNotLetANewProcessJoin)):\n\nCanonical link: https://commits.webkit.org/319380@main",
      "email": "beidson@apple.com",
      "hash": "9c771fce0a906f72dba484655193f91a369f78d3",
      "subject": "[Site Isolation] Some WKWebView-level APIs don't message all processes associated with the page"
    },
    "319381@main": {
      "author": "Ahmad Saleem",
      "avatar": "https://www.gravatar.com/avatar/38445f84fe28aa19bfeb1f59f6559532?d=identicon\u0026s=64",
      "cl": "319381@main",
      "clUrl": "https://commits.webkit.org/319381@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=322006\nrdar://185202501\n\nReviewed by Antoine Quint.\n\nWhen there are no blending keyframes yet, animatesProperty() walked\nParsedKeyframe::styleStrings.keys() and ParsedKeyframe::customStyleStrings.keys()\ncomparing each key in turn. Both are HashMaps, so this is a hand-rolled linear\nreplacement for contains(). No change in behavior.\n\n* Source/WebCore/animation/KeyframeEffect.cpp:\n(WebCore::KeyframeEffect::animatesProperty const):\n\nCanonical link: https://commits.webkit.org/319381@main",
      "email": "ahmad.saleem792+github@gmail.com",
      "hash": "671776139593b9fdfd7c31d49428ff8ed8af0621",
      "subject": "KeyframeEffect::animatesProperty() scans keyframe property keys instead of hashing them"
    },
    "319382@main": {
      "author": "Marta Darbinyan",
      "avatar": "https://www.gravatar.com/avatar/6143b3673258642a8b75585c768ccf10?d=identicon\u0026s=64",
      "cl": "319382@main",
      "clUrl": "https://commits.webkit.org/319382@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=321110\nrdar://184147135\n\nUnreviewed test gardening\n\n* LayoutTests/platform/ios/TestExpectations:\n* LayoutTests/platform/mac-wk2/TestExpectations:\n\nCanonical link: https://commits.webkit.org/319382@main",
      "email": "darbinyan@apple.com",
      "hash": "a71c205a2fbb8a83dc316dae06f2c92844782f82",
      "subject": "[Gardening]: NEW TEST(317810@main): [iOS macOS]4 tests in imported/w3c/web-platform-tests/webtransport/idlharness are constant failure"
    },
    "319383@main": {
      "author": "Phinehas Fuachie",
      "avatar": "https://www.gravatar.com/avatar/900d85de8c325e38975f39115c36bb75?d=identicon\u0026s=64",
      "cl": "319383@main",
      "clUrl": "https://commits.webkit.org/319383@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=321703\nrdar://184845771\n\nReviewed by Jer Noble.\n\nx-webkit-projection was read with getAttribute() and was not a registered attribute, so nothing\nnotified the renderer when it changed. Setting it on a video that was already rendering did nothing\nuntil the next loadedmetadata or resize, and there was no reflected IDL attribute, so the\nprojection could only be declared in markup and never read back.\n\nRegister the attribute so it generates webkitprojectionAttr, reflect it on HTMLVideoElement as\nprojection behind SpatialVideoRenderingEnabled, and schedule a webkitprojectionchanged event when\nits value changes. SpatialVideoSupport listens for that event and re-resolves the projection.\n\nResolving while active no longer requires tearing down the WebGL context: _buildMesh() producesthe\nmesh and the feather amount, and the draw loop binds the mesh each frame, so a changed projection\nonly needs the mesh rebuilt. An unchanged result is a no-op, and a projection that resolves to\nnothing tears the renderer down so the video returns to being presented as-is.\n\n* Source/WebCore/Modules/modern-media-controls/media/spatial-video-support.js:\n(SpatialVideoSupport.prototype.get mediaEvents):\n(SpatialVideoSupport.prototype._maybeEnable):\n* Source/WebCore/dom/EventNames.json:\n* Source/WebCore/html/HTMLAttributeNames.in:\n* Source/WebCore/html/HTMLVideoElement.cpp:\n(WebCore::HTMLVideoElement::attributeChanged):\n* Source/WebCore/html/HTMLVideoElement.idl:\n\nCanonical link: https://commits.webkit.org/319383@main",
      "email": "pfuachie2@apple.com",
      "hash": "980c70c85a474a9dfa0404174ee002ca75ba3b3c",
      "subject": "Changing the projection attribute on a playing video does not update the spatial video renderer (experimental)"
    },
    "319384@main": {
      "author": "Razvan Caliman",
      "avatar": "https://www.gravatar.com/avatar/e35c40637d6bc28b86585f2cf1b2e1ca?d=identicon\u0026s=64",
      "cl": "319384@main",
      "clUrl": "https://commits.webkit.org/319384@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=321593\nrdar://184713255\n\nReviewed by BJ Burg.\n\nThe `LayoutViewport` coordinates that `WebAutomationSessionProxy::computeElementLayout()`\nreports are relative to the frame's local root, because a frame's web process cannot see\nwhere that frame sits within the page. With Site Isolation enabled, a cross-origin iframe's\nlocal root is the iframe itself, so the reported in-view center point is missing the frame's\noffset within the page. The Automation client feeds that point to the pointer input\ndispatcher, which synthesizes events at a page-level position, so Element Click lands\nsomewhere other than the element.\n\nFinish the conversion in the UI process, which is the only side that knows the whole frame\ntree. The web process now stops at local root contents coordinates when its local root is\nnot the main frame, and `WebAutomationSession` walks them up to the main frame with the\nexisting `convertRectToMainFrameCoordinates()` and `convertPointToMainFrameCoordinates()`.\n\nThose return main frame root view coordinates, which include the obscured content inset area,\nwhereas the `LayoutViewport` space excludes it and consumers add it back when synthesizing\nevents (see `viewportLocationToWindowLocation()`); subtract the insets so both paths report\nthe same space.\n\nWithout Site Isolation a frame's local root is always the main frame, so the new conversion\ndoes not run and behavior is unchanged.\n\n* Source/WebKit/UIProcess/Automation/WebAutomationSession.cpp:\n(WebKit::localRootFrameNeedingMainFrameConversion):\n(WebKit::obscuredContentInsetOffset):\n(WebKit::WebAutomationSession::computeElementLayout):\n(WebKit::WebAutomationSession::viewportInViewCenterPointOfElement):\n* Source/WebKit/WebProcess/Automation/WebAutomationSessionProxy.cpp:\n(WebKit::WebAutomationSessionProxy::computeElementLayout):\n\nCanonical link: https://commits.webkit.org/319384@main",
      "email": "rcaliman@apple.com",
      "hash": "fe0e6eb35c7b113c44dfe6a3d3be81240f30d19a",
      "subject": "[Web Automation] Element Click targets the wrong position inside a cross-origin iframe under Site Isolation"
    },
    "319385@main": {
      "author": "Aakash Jain",
      "avatar": "https://www.gravatar.com/avatar/e82e0cafeeac3a35b7e74206ebe4c536?d=identicon\u0026s=64",
      "cl": "319385@main",
      "clUrl": "https://commits.webkit.org/319385@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=322001\n\u003crdar://problem/185190646\u003e\n\nReviewed by Sam Sneddon.\n\nThese commands posted patches to Bugzilla attachments, landed them through the\ncommit-queue, or edited ChangeLogs, none of which exist any more: post, upload, land,\nland-safely, land-unsafe, land-attachment, land-from-bug, apply-attachment,\napply-from-bug, check-style, mark-bug-fixed, prepare, edit-changelogs and\nvalidate-changelog. suggest-reviewers goes with them, since it has been failing in\ngit svn find-rev for some time.\n\nThe steps used only by those commands are also removed. webkit-patch keeps the commands\nwhich have nothing to do with Bugzilla patches: clean, check-style-local, pretty-diff,\nformat, apply-watchlist-local, rebaseline-server, suggest-nominations and the revert\nfamily.\n\n* Tools/Scripts/webkitpy/tool/commands/__init__.py:\n* Tools/Scripts/webkitpy/tool/commands/commandtest.py:\n* Tools/Scripts/webkitpy/tool/commands/download.py:\n* Tools/Scripts/webkitpy/tool/commands/download_unittest.py:\n* Tools/Scripts/webkitpy/tool/commands/queries.py: Removed.\n* Tools/Scripts/webkitpy/tool/commands/upload.py: Removed.\n* Tools/Scripts/webkitpy/tool/commands/upload_unittest.py: Removed.\n* Tools/Scripts/webkitpy/tool/steps/__init__.py:\n* Tools/Scripts/webkitpy/tool/steps/abstractstep.py:\n* Tools/Scripts/webkitpy/tool/steps/options.py:\n* Tools/Scripts/webkitpy/tool/steps/steps_unittest.py:\n\nCanonical link: https://commits.webkit.org/319385@main",
      "email": "aakash_jain@apple.com",
      "hash": "999e02701ffb694a8e5e9ba1cfe714d209ded98a",
      "subject": "[webkit-patch] Remove Bugzilla patch workflow support from webkit-patch - Part 2"
    },
    "319386@main": {
      "author": "Brian Weinstein",
      "avatar": "https://www.gravatar.com/avatar/2892a9aaa68f537ee65c6f95ef0768a6?d=identicon\u0026s=64",
      "cl": "319386@main",
      "clUrl": "https://commits.webkit.org/319386@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=321941\nrdar://184269255\n\nReviewed by Brady Eidson.\n\nWhile we're here, fix the build with WK_WEB_EXTENSIONS_OFFSCREEN after 29769e195bc7 removed\na variable needed to build.\n\n* Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPIOffscreenCocoa.mm:\n(WebKit::WebExtensionContext::offscreenCreateDocument):\n* Source/WebKit/WebProcess/Extensions/API/WebExtensionAPINamespace.cpp:\n(WebKit::WebExtensionAPINamespace::isPropertyAllowed):\n\nCanonical link: https://commits.webkit.org/319386@main",
      "email": "bweinstein@apple.com",
      "hash": "7684281e4877ed748ef81431c1556cb80db78285",
      "subject": "Protect dynamic web extension properties from a null page"
    },
    "319387@main": {
      "author": "Brent Fulgham",
      "avatar": "https://www.gravatar.com/avatar/c6989a65afef0d015b55c65406e37ccc?d=identicon\u0026s=64",
      "cl": "319387@main",
      "clUrl": "https://commits.webkit.org/319387@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=321980\nrdar://185156091\n\nReviewed by Tim Nguyen.\n\nAfter a modal dialog is closed its cached computed style says display:none. show() set the\nopen attribute but did not mark that style invalid, and\nElement::resolveComputedStyle(ResolveComputedStyleMode::RenderedOnly) treats a cached\ndisplay:none ancestor as an unrendered subtree unless the ancestor is flagged as having an\ninvalid computed style. Every focus candidate inside the dialog therefore looked\nunfocusable, so the dialog focusing steps had nothing to focus and focus did not move. An\nexplicit focus() on the dialog's contents failed at the same point.\n\nshowModal() was unaffected only because addToTopLayer() ends with an explicit\ninvalidateStyle(). Invalidating style here rather than updating it means nothing is\ncomputed at call time, so this does not determine content-visibility proximity early the\nway a forced style update would.\n\nThe underlying resolveComputedStyle() behavior is tracked separately by rdar://185153996;\naddToTopLayer() and show() are now both compensating for it at their call sites.\n\nThis also folds in unrelated popover gardening. popover-top-layer-nesting-hints.html has\nbeen passing all 20 subtests, but its baseline recorded four failures and a\n[ Pass Failure ] expectation accepted either outcome, so the test provided no signal.\nVerified over 50 iterations with num_flaky 0.\n\n* Source/WebCore/html/HTMLDialogElement.cpp:\n(WebCore::HTMLDialogElement::show):\n* LayoutTests/fast/html/dialog-focus-after-modal-close.html: Added.\n* LayoutTests/fast/html/dialog-focus-after-modal-close-expected.txt: Added.\n* LayoutTests/TestExpectations: Remove the obsolete [ Pass Failure ] expectation.\n* LayoutTests/imported/w3c/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/dialog-focus-previous-outside-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/html/semantics/popovers/popover-top-layer-nesting-hints-expected.txt:\n\nCanonical link: https://commits.webkit.org/319387@main",
      "email": "bfulgham@apple.com",
      "hash": "4e2ff065567a0291ed0c7af24052a56e8c54a2a2",
      "subject": "[dialog] show() should invalidate style so the focusing steps see the dialog as rendered"
    },
    "319388@main": {
      "author": "Nikolas Zimmermann",
      "avatar": "https://www.gravatar.com/avatar/83cbd636495835720e369cd589e3ca5e?d=identicon\u0026s=64",
      "cl": "319388@main",
      "clUrl": "https://commits.webkit.org/319388@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=321677\n\nReviewed by Rob Buis.\n\nSVGFEImageElement::imageBufferForEffect() draws the referenced element with\nSVGRenderingContext::renderSubtreeToContext(). That helper belongs to the legacy\nSVG engine and LBSE must not use it: it calls RenderElement::paint() directly,\nwhich skips every child that owns a RenderLayer, so any opacity, mask, filter or\n3D transform below the referenced element was lost. Furthermore it uses\ncalculateTransformationToOutermostCoordinateSystem(), which does not see the\ntransforms kept on RenderLayers, most noticeable it misses the viewBox\ntransform of the outermost \u003csvg\u003e element.\n\nDraw the element with RenderLayer::paintResourceLayerForSVG() instead, like\n\u003cmask\u003e, \u003cclipPath\u003e, \u003cpattern\u003e and \u003cmarker\u003e content, and ask\nSVGTransformComputation for the buffer scale, fixing the problems.\n\nThe feImage-referenced element needs a layer for that, so\nrequiresLayerForSVGIntrinsicReasons() now assignes one to every element an\n\u003cfeImage\u003e points to.\n\nFixes several feImage-* tests under LBSE. Also add a new test that verifies\nlayered descendants properly function under a feImage reference.\n\n* LayoutTests/platform/mac-tahoe-wk2-lbse-text/TestExpectations:\n* LayoutTests/platform/mac-tahoe-wk2-lbse-text/svg/W3C-SVG-1.1/filters-composite-02-b-expected.txt:\n* LayoutTests/platform/mac-tahoe-wk2-lbse-text/svg/filters/feImage-filterUnits-objectBoundingBox-primitiveUnits-objectBoundingBox-expected.txt:\n* LayoutTests/platform/mac-tahoe-wk2-lbse-text/svg/filters/feImage-filterUnits-objectBoundingBox-primitiveUnits-userSpaceOnUse-expected.png:\n* LayoutTests/platform/mac-tahoe-wk2-lbse-text/svg/filters/feImage-filterUnits-objectBoundingBox-primitiveUnits-userSpaceOnUse-expected.txt:\n* LayoutTests/platform/mac-tahoe-wk2-lbse-text/svg/filters/feImage-filterUnits-userSpaceOnUse-primitiveUnits-objectBoundingBox-expected.txt:\n* LayoutTests/platform/mac-tahoe-wk2-lbse-text/svg/filters/feImage-filterUnits-userSpaceOnUse-primitiveUnits-userSpaceOnUse-expected.txt:\n* LayoutTests/platform/mac-tahoe-wk2-lbse-text/svg/filters/feImage-late-indirect-update-expected.txt:\n* LayoutTests/platform/mac-tahoe-wk2-lbse-text/svg/filters/feImage-multiple-targets-id-change-expected.txt:\n* LayoutTests/platform/mac-tahoe-wk2-lbse-text/svg/filters/feImage-position-expected.txt:\n* LayoutTests/platform/mac-tahoe-wk2-lbse-text/svg/filters/feImage-reference-invalidation-expected.txt:\n* LayoutTests/platform/mac-tahoe-wk2-lbse-text/svg/filters/feImage-reference-svg-primitive-expected.txt:\n* LayoutTests/platform/mac-tahoe-wk2-lbse-text/svg/filters/feImage-subregions-expected.txt:\n* LayoutTests/platform/mac-tahoe-wk2-lbse-text/svg/filters/feImage-subregions-preseveAspectRatio-none-expected.txt:\n* LayoutTests/platform/mac-tahoe-wk2-lbse-text/svg/filters/feImage-subregions-preseveAspectRatio-none-with-viewBox-expected.txt:\n* LayoutTests/platform/mac-tahoe-wk2-lbse-text/svg/filters/feImage-target-add-to-document-expected.txt:\n* LayoutTests/platform/mac-tahoe-wk2-lbse-text/svg/filters/feImage-target-attribute-change-expected.txt:\n* LayoutTests/platform/mac-tahoe-wk2-lbse-text/svg/filters/feImage-target-changes-id-expected.txt:\n* LayoutTests/platform/mac-tahoe-wk2-lbse-text/svg/filters/feImage-target-id-change-expected.txt:\n* LayoutTests/platform/mac-tahoe-wk2-lbse-text/svg/filters/feImage-target-inline-style-change-expected.txt:\n* LayoutTests/platform/mac-tahoe-wk2-lbse-text/svg/filters/feImage-target-property-change-expected.txt:\n* LayoutTests/platform/mac-tahoe-wk2-lbse-text/svg/filters/feImage-target-reappend-to-document-expected.txt:\n* LayoutTests/platform/mac-tahoe-wk2-lbse-text/svg/filters/feImage-target-remove-from-document-expected.txt:\n* LayoutTests/platform/mac-tahoe-wk2-lbse-text/svg/filters/feImage-target-style-change-expected.txt:\n* LayoutTests/svg/filters/feImage-target-with-layered-descendants-expected.svg: Added.\n* LayoutTests/svg/filters/feImage-target-with-layered-descendants.svg: Added.\n* Source/WebCore/rendering/RenderLayer.h:\n* Source/WebCore/rendering/RenderLayerModelObject.cpp:\n(WebCore::RenderLayerModelObject::requiresLayerForSVGIntrinsicReasons const):\n* Source/WebCore/rendering/RenderLayerSVGAdditions.cpp:\n(WebCore::RenderLayer::paintChildrenInDOMOrderForSVG):\n* Source/WebCore/svg/SVGElement.cpp:\n(WebCore::SVGElement::addReferencingElement):\n(WebCore::SVGElement::removeReferencingElement):\n(WebCore::SVGElement::invalidateLayerRequirementForFEImageReference):\n(WebCore::SVGElement::isReferencedByFEImage const):\n* Source/WebCore/svg/SVGElement.h:\n* Source/WebCore/svg/SVGFEImageElement.cpp:\n(WebCore::SVGFEImageElement::notifyFinished):\n(WebCore::SVGFEImageElement::imageBufferForEffect const):\n\nCanonical link: https://commits.webkit.org/319388@main",
      "email": "nzimmermann@igalia.com",
      "hash": "6b3f8e7997e61e1eee03e51ec3d3b9e145efe57a",
      "subject": "[LBSE] Paint \u003cfeImage\u003e referenced elements through the layer tree"
    },
    "319389@main": {
      "author": "Aakash Jain",
      "avatar": "https://www.gravatar.com/avatar/e82e0cafeeac3a35b7e74206ebe4c536?d=identicon\u0026s=64",
      "cl": "319389@main",
      "clUrl": "https://commits.webkit.org/319389@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=322003\n\u003crdar://problem/185192934\u003e\n\nReviewed by Ryan Haddad.\n\nThe fast-cq mode skipped compiling and running layout tests for a revert submitted to\nthe commit-queue. Its property was only ever set while reading a Bugzilla attachment, so\nit can no longer be set, and the same is true of the patch author which the results\ndatabase reported when a change had no pull request owners.\n\nThe merge-queue keeps skipping layout tests for a change which already passed mac-wk2.\n\n* Tools/CISupport/ews-build/steps.py:\n* Tools/CISupport/ews-build/steps_unittest.py:\n\nCanonical link: https://commits.webkit.org/319389@main",
      "email": "aakash_jain@apple.com",
      "hash": "b804ff8bde3f850005b3a90701bf071f5f3a136e",
      "subject": "[ews-build] Remove Bugzilla patch workflow support from ews-build.webkit.org - Part 2"
    },
    "319390@main": {
      "author": "Nikolas Zimmermann",
      "avatar": "https://www.gravatar.com/avatar/83cbd636495835720e369cd589e3ca5e?d=identicon\u0026s=64",
      "cl": "319390@main",
      "clUrl": "https://commits.webkit.org/319390@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=321403\n\nReviewed by Simon Fraser.\n\nA mask no longer forces a layer in LBSE. It is applied during paint through\nSVGNonLayerClippingAndMaskingScope (renamed from SVGNonLayerClipPathScope), which now\ncovers both masking possibilites: it opens one transparency layer capturing\nthe renderer's foreground, and composites the mask and also handles clips\nthat cannot be a path.\n\nThe two are painted in the same order as the layer paint path, which runs\npaintMaskForFragments before paintChildClippingMaskForFragments. The mask is\npainted from the offset the foreground painted with, since a renderer positions\nits mask from the paint offset the same way it positions its foreground.\n\nA container with a mask still takes a layer, mirroring the clip-path rule: the\nmask applies to its whole subtree, which is painted only by its own\npaintChildrenInDOMOrderForSVG(), and without a layer its layered descendants\nwould be orphaned. A leaf has no descendants and stays layer-free.\n\nThe DOM-order paint cache treats a masked non-layer child as one unit so the\nmask covers its whole subtree, and is rebuilt when the mask is added or removed.\n\nCovered by existing tests and three new reftests.\n\n* LayoutTests/platform/mac-tahoe-wk2-lbse-text/svg/W3C-SVG-1.1/masking-intro-01-f-expected.txt:\n* LayoutTests/platform/mac-tahoe-wk2-lbse-text/svg/W3C-SVG-1.1/masking-mask-01-b-expected.txt:\n* LayoutTests/platform/mac-tahoe-wk2-lbse-text/svg/custom/absolute-root-position-masking-expected.txt:\n* LayoutTests/platform/mac-tahoe-wk2-lbse-text/svg/custom/absolute-sized-content-with-resources-expected.png:\n* LayoutTests/platform/mac-tahoe-wk2-lbse-text/svg/custom/absolute-sized-content-with-resources-expected.txt:\n* LayoutTests/platform/mac-tahoe-wk2-lbse-text/svg/custom/empty-mask-expected.txt:\n* LayoutTests/platform/mac-tahoe-wk2-lbse-text/svg/custom/grayscale-gradient-mask-2-expected.txt:\n* LayoutTests/platform/mac-tahoe-wk2-lbse-text/svg/custom/grayscale-gradient-mask-expected.txt:\n* LayoutTests/platform/mac-tahoe-wk2-lbse-text/svg/custom/js-late-mask-and-object-creation-expected.txt:\n* LayoutTests/platform/mac-tahoe-wk2-lbse-text/svg/custom/js-late-mask-creation-expected.txt:\n* LayoutTests/platform/mac-tahoe-wk2-lbse-text/svg/custom/mask-changes-expected.txt:\n* LayoutTests/platform/mac-tahoe-wk2-lbse-text/svg/custom/mask-child-changes-expected.txt:\n* LayoutTests/platform/mac-tahoe-wk2-lbse-text/svg/custom/mask-colorspace-expected.txt:\n* LayoutTests/platform/mac-tahoe-wk2-lbse-text/svg/custom/mask-excessive-malloc-expected.txt:\n* LayoutTests/platform/mac-tahoe-wk2-lbse-text/svg/custom/mask-invalidation-expected.txt:\n* LayoutTests/platform/mac-tahoe-wk2-lbse-text/svg/custom/mask-on-multiple-objects-expected.txt:\n* LayoutTests/platform/mac-tahoe-wk2-lbse-text/svg/custom/mask-with-all-units-expected.txt:\n* LayoutTests/platform/mac-tahoe-wk2-lbse-text/svg/custom/mask-with-default-value-expected.txt:\n* LayoutTests/platform/mac-tahoe-wk2-lbse-text/svg/custom/recursive-mask-expected.txt:\n* LayoutTests/platform/mac-tahoe-wk2-lbse-text/svg/custom/resource-invalidate-on-target-update-expected.txt:\n* LayoutTests/platform/mac-tahoe-wk2-lbse-text/svg/custom/transformedMaskFails-expected.txt:\n* LayoutTests/platform/mac-tahoe-wk2-lbse-text/svg/repaint/text-mask-update-expected.txt:\n* LayoutTests/platform/mac-tahoe-wk2-lbse-text/svg/transforms/text-with-mask-with-svg-transform-expected.png:\n* LayoutTests/platform/mac-tahoe-wk2-lbse-text/svg/transforms/text-with-mask-with-svg-transform-expected.txt:\n* LayoutTests/svg/masking/mask-and-clip-path-on-shape-in-group-expected.html: Added.\n* LayoutTests/svg/masking/mask-and-clip-path-on-shape-in-group.html: Added.\n* LayoutTests/svg/masking/mask-on-shape-in-group-expected.html: Added.\n* LayoutTests/svg/masking/mask-on-shape-in-group.html: Added.\n* LayoutTests/svg/masking/mask-on-transformed-shape-in-group-expected.html: Added.\n* LayoutTests/svg/masking/mask-on-transformed-shape-in-group.html: Added.\n* Source/WebCore/rendering/ClipPathPaintScope.h:\n* Source/WebCore/rendering/RenderElement.h:\n* Source/WebCore/rendering/RenderElementStyleInlines.h:\n(WebCore::RenderElement::createsGroupForStyleExcludingClipPathAndMask):\n(WebCore::RenderElement::createsGroupForStyle):\n(WebCore::RenderElement::createsGroupForStyleExcludingClipPath): Deleted.\n* Source/WebCore/rendering/RenderLayerModelObject.cpp:\n(WebCore::RenderLayerModelObject::requiresLayerForSVGIntrinsicReasons const):\n* Source/WebCore/rendering/RenderLayerSVGAdditions.cpp:\n(WebCore::SVGNonLayerClippingAndMaskingScope::SVGNonLayerClippingAndMaskingScope):\n(WebCore::SVGNonLayerClippingAndMaskingScope::~SVGNonLayerClippingAndMaskingScope):\n(WebCore::SVGNonLayerClippingAndMaskingScope::paintPhase):\n(WebCore::RenderLayer::appendChildrenInDOMOrderForSVG):\n(WebCore::RenderLayer::paintChildrenInDOMOrderForSVG):\n(WebCore::RenderLayer::paintRendererByApplyingTransformForSVG):\n(WebCore::RenderLayer::paintSubtreeWithinTransformScopeForSVG):\n(WebCore::SVGNonLayerClipPathScope::SVGNonLayerClipPathScope): Deleted.\n(WebCore::SVGNonLayerClipPathScope::~SVGNonLayerClipPathScope): Deleted.\n* Source/WebCore/rendering/svg/RenderSVGModelObject.cpp:\n(WebCore::RenderSVGModelObject::requiresLayer const):\n(WebCore::RenderSVGModelObject::styleDidChange):\n* Source/WebCore/rendering/svg/RenderSVGResourceMasker.cpp:\n(WebCore::RenderSVGResourceMasker::applyMask):\n\nCanonical link: https://commits.webkit.org/319390@main",
      "email": "nzimmermann@igalia.com",
      "hash": "f860040267ad9b46e9fec0023855c58ce2dbd981",
      "subject": "[LBSE] Don't create a RenderLayer for SVG mask"
    },
    "319391@main": {
      "author": "Cole Carley",
      "avatar": "https://www.gravatar.com/avatar/091dd5641909acc46e581355f491ed34?d=identicon\u0026s=64",
      "cl": "319391@main",
      "clUrl": "https://commits.webkit.org/319391@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=321973\nrdar://185153208\n\nReviewed by Zak Ridouh.\n\nI am going to start making large changes to the quirking system. I want to be sure\nthat my changes do not affect what quirks are active for which websites.\n\nThis patch adds API tests for the following static user agent quirks:\nneedsIPadMiniUserAgent, needsIPhoneUserAgent, and needsCustomUserAgentOverride.\n\nI also moved Tools/TestWebKitAPI/Tests/WebCore/UserAgentQuirks.cpp to\nTools/TestWebKitAPI/Tests/WebCore/glib/UserAgentQuirks.cpp.\n\nTests: Tools/TestWebKitAPI/Tests/WebCore/Quirks.cpp\n       Tools/TestWebKitAPI/Tests/WebCore/glib/UserAgentQuirks.cpp\n\n* Source/WebCore/platform/glib/UserAgentQuirks.cpp:\n* Tools/TestWebKitAPI/CMakeLists.txt:\n* Tools/TestWebKitAPI/PlatformGTK.cmake:\n* Tools/TestWebKitAPI/PlatformWPE.cmake:\n* Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:\n* Tools/TestWebKitAPI/Tests/WebCore/Quirks.cpp: Added.\n(TestWebKitAPI::QuirksTest::SetUp):\n(TestWebKitAPI::customUserAgentFor):\n(TestWebKitAPI::TEST_F(QuirksTest, NeedsIPadMiniUserAgent)):\n(TestWebKitAPI::TEST_F(QuirksTest, NeedsIPhoneUserAgent)):\n(TestWebKitAPI::TEST_F(QuirksTest, NeedsCustomUserAgentOverrideNotAffected)):\n(TestWebKitAPI::TEST_F(QuirksTest, NeedsCustomUserAgentOverrideOutlook)):\n(TestWebKitAPI::TEST_F(QuirksTest, NeedsCustomUserAgentOverrideGroupCall)):\n(TestWebKitAPI::TEST_F(QuirksTest, NeedsCustomUserAgentOverrideIsRegistrableDomainGranularity)):\n(TestWebKitAPI::TEST_F(QuirksTest, NeedsCustomUserAgentOverrideRewritesBaseAgent)):\n(TestWebKitAPI::TEST_F(QuirksTest, NeedsCustomUserAgentOverrideAmazonPrimeVideo)):\n* Tools/TestWebKitAPI/Tests/WebCore/glib/UserAgentQuirks.cpp: Renamed from Tools/TestWebKitAPI/Tests/WebCore/UserAgentQuirks.cpp.\n(TestWebKitAPI::assertUserAgentForURLHasChromeBrowserQuirk):\n(TestWebKitAPI::assertUserAgentForURLHasFirefoxBrowserQuirk):\n(TestWebKitAPI::assertUserAgentForURLHasMacPlatformQuirk):\n(TestWebKitAPI::assertUserAgentForURLHasAndroidQuirk):\n(TestWebKitAPI::assertUserAgentForURLHasEmptyQuirk):\n(TestWebKitAPI::assertUserAgentForURLHasNoQuirk):\n(TestWebKitAPI::TEST(UserAgentTest, Quirks)):\n\nCanonical link: https://commits.webkit.org/319391@main",
      "email": "ccarley2@apple.com",
      "hash": "5d77774e94782f6e2feb16c78cc1555c416816b3",
      "subject": "Add API tests for user agent override quirks"
    },
    "319392@main": {
      "author": "Alan Baradlay",
      "avatar": "https://www.gravatar.com/avatar/788d66417db806c567552cfa1ae89f77?d=identicon\u0026s=64",
      "cl": "319392@main",
      "clUrl": "https://commits.webkit.org/319392@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319285\n\u003crdar://problem/182123153\u003e\n\nReviewed by Antti Koivisto.\n\n  \u003cdiv style=\"display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 1\"\u003e\n    \u003cspan\u003e\u003cdiv\u003ePASS if no ellipsis\u003c/div\u003e\u003c/span\u003e\n  \u003c/div\u003e\n\nThere is one line and room for one line, so nothing is clamped and no ellipsis\nshould show. Instead it was \"PASS if no ellipsis...\".\n\nInline layout puts the ellipsis on as soon as a line reaches the clamp limit,\nbecause clamping is shared across sibling formatting contexts and none of them\ncan tell whether more content follows. The deprecated flexbox takes it back off\nafterwards by relaying out the block container that holds the last formatted line\nwith no clamping, and blockContainerForLastFormattedLine looked for that container\nby walking block level children. With block-in-inline the block sits inside the\ninline box, so the walk stepped right past it and found nothing.\n\nAsk the lines instead of the render tree. A block container with inline children\nknows from its own display lines whether the last formatted line is one of its own\nor belongs to a block level box sitting on one of them, and recursing into that box\nasks the same question one level down.\n\nOff the render tree the walk no longer reaches floats, which is what used to take the\nellipsis back off a float by accident. Floating and out-of-flow boxes never count\ntowards the clamp (see updateLineClampStateAndLogicalHeightAfterLayout), so neither\nshould be ellipsized by one, and LineClampUpdater now clears the clamp for them the\nway it already does for atomic inline level boxes.\n\nThe second case in line-clamp-on-last-formatted-line.html expected an ellipsis on a\nline holding an inline-block with nothing after it. There is no clamp point after the\nlast line box there, so no ellipsis is correct (css-overflow-4 max-lines) -WebKit now matches Blink here.\n\n* Source/WebCore/layout/integration/inline/InlineIteratorLineBox.h:\n(WebCore::InlineIterator::LineBox::hasContentfulInFlowBox const):\n* Source/WebCore/layout/integration/inline/InlineIteratorLineBoxLegacyPath.h:\n* Source/WebCore/layout/integration/inline/InlineIteratorLineBoxModernPath.h:\n* Source/WebCore/rendering/LineClampUpdater.h:\n(WebCore::LineClampUpdater::LineClampUpdater):\n* Source/WebCore/rendering/RenderDeprecatedFlexibleBox.cpp:\n(WebCore::blockContainerForLastFormattedLine):\n(WebCore::RenderDeprecatedFlexibleBox::applyLineClamp):\n* LayoutTests/fast/overflow/line-clamp-on-last-formatted-line.html:\n* LayoutTests/fast/overflow/line-clamp-on-last-formatted-line-expected.html:\n* LayoutTests/fast/overflow/line-clamp-with-block-in-inline.html: Added.\n* LayoutTests/fast/overflow/line-clamp-with-block-in-inline-expected.html: Added.\n\nCanonical link: https://commits.webkit.org/319392@main",
      "email": "zalan@apple.com",
      "hash": "6d0037baf724076591471b689f2fe0636fa11aa9",
      "subject": "REGRESSION(303972@main) [block-in-inline] Unexpected ellipsis shows up when line-clamp is applied"
    },
    "319393@main": {
      "author": "Joanne Pan",
      "avatar": "https://www.gravatar.com/avatar/5cbbf578426a0c98cb5c977ca2dd88fc?d=identicon\u0026s=64",
      "cl": "319393@main",
      "clUrl": "https://commits.webkit.org/319393@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=321552\nrdar://184659364\n\nReviewed by Antti Koivisto.\n\n\u003crandom-ua-ident\u003e is the third alternative in the property-scoping slot of\n\u003crandom-cache-key\u003e and was unimplemented, so an author writing one made the whole\ndeclaration invalid at computed-value time.\n\nIt is a \u003ccustom-ident\u003e that must start with `ua-`, and it spells out the property,\nand optionally the index, that property-scoped and property-index-scoped derive\nimplicitly. `ua-height-1` therefore names the same key that property-index-scoped\nbuilds while parsing `height`. The index in the ident is 1-based. An ident naming\nno known property, or carrying an index of 0, is invalid, which invalidates the\nwhole \u003crandom-key\u003e.\n\nNo index is taken from the caller when one of these is consumed, since the ident\nalready says which index it means, so an ident cannot shift the index of a later\n`auto` or property-index-scoped in the same value.\n\nThis is the parse half of the bug. Serialization is still to do, and § 9.4.1 also\nspells an in-custom-function form, ua-FUNCTIONNAME-PROPERTY[-INDEX], which is not\nhandled: both names can contain hyphens, so splitting it is ambiguous. Asked about\nin https://github.com/w3c/csswg-drafts/issues/14330\n\n* LayoutTests/imported/w3c/web-platform-tests/css/css-values/random-computed.tentative-expected.txt:\n* Source/WebCore/css/CSSRandomKeyParser.cpp:\n(WebCore::CSSPropertyParserHelpers::parseRandomUAIdent):\n(WebCore::CSSPropertyParserHelpers::consumeUnresolvedRandomKey):\n\nCanonical link: https://commits.webkit.org/319393@main",
      "email": "jpan0917@gmail.com",
      "hash": "dea374507ed3eab9cdeb7e85308ff2ec2091431f",
      "subject": "[css-values-5 random-item()] Parse \u003crandom-ua-ident\u003e in a \u003crandom-key\u003e"
    },
    "319394@main": {
      "author": "Nikolas Zimmermann",
      "avatar": "https://www.gravatar.com/avatar/83cbd636495835720e369cd589e3ca5e?d=identicon\u0026s=64",
      "cl": "319394@main",
      "clUrl": "https://commits.webkit.org/319394@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=322027\n\nUnreviewed gardening.\n\n* LayoutTests/platform/glib/TestExpectations:\n* LayoutTests/platform/glib/fast/lists/008-expected.txt:\n* LayoutTests/platform/glib/fast/lists/008-vertical-expected.txt:\n* LayoutTests/platform/glib/fast/lists/marker-image-error-expected.txt:\n* LayoutTests/platform/gtk/TestExpectations:\n* LayoutTests/platform/wpe/TestExpectations:\n\nCanonical link: https://commits.webkit.org/319394@main",
      "email": "nzimmermann@igalia.com",
      "hash": "365a380796d304e159fd7c2ead5d880c44e3f092",
      "subject": "[GTK][WPE] Gardening of tests - 2026-08-18"
    },
    "319395@main": {
      "author": "Lauro Moura",
      "avatar": "https://www.gravatar.com/avatar/6157f52d61e04c2c63fe7ff668ba69b3?d=identicon\u0026s=64",
      "cl": "319395@main",
      "clUrl": "https://commits.webkit.org/319395@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=321607\n\nReviewed by Youenn Fablet.\n\nThe test streams/pipeTo-in-worker-terminate-crash.html terminates\nworkers mid-flight, which should not trigger a crash. In such scenarios,\nthe read operation might happen while we have a pending\nTerminationException. With the current assertion, instead of returning\nsilently as a non-assertion build would, we end up with a crash.\n\nTo address it, this commit relaxes the assertion by accepting this\ntermination state as valid, an approach also currently taken by\nReadableStreamDefaultController.cpp (since 243538@main).\n\n* LayoutTests/platform/wpe/TestExpectations:\n* Source/WebCore/Modules/streams/ReadableStreamDefaultReader.cpp:\n(WebCore::ReadableStreamDefaultReader::read):\n\nCanonical link: https://commits.webkit.org/319395@main",
      "email": "lmoura@igalia.com",
      "hash": "868a13beabdb7370beac344bf37a931351567395",
      "subject": "[Streams API] ASSERT(!resultOrException.hasException(scope)) in ReadableStreamDefaultReader::read() fires when a worker is terminated mid-read"
    },
    "319396@main": {
      "author": "Yusuke Suzuki",
      "avatar": "https://www.gravatar.com/avatar/3455d9081295e3e740c1ffa901217d9b?d=identicon\u0026s=64",
      "cl": "319396@main",
      "clUrl": "https://commits.webkit.org/319396@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=321999\nrdar://185184613\n\nReviewed by Yijia Huang.\n\nLet's just use `@newPromise` and\n@rejectPromiseWithFirstResolvingFunctionCallCheck etc. that is much more\nefficient (not allocating an object for a tuple), not doing any property\nlookup. As a result, nobody is using @newPromiseCapability anymore. So\nthis patch removes it from builtin JS.\n\n* Source/JavaScriptCore/builtins/BuiltinNames.h:\n* Source/JavaScriptCore/bytecode/LinkTimeConstant.h:\n* Source/JavaScriptCore/runtime/JSGlobalObject.cpp:\n(JSC::JSGlobalObject::init):\n* Source/WebCore/Modules/streams/ReadableStreamDefaultReader.js:\n(getter.closed):\n* Source/WebCore/Modules/streams/ReadableStreamInternals.js:\n(readableStreamDefaultReaderClosedForBindings):\n(readableStreamDefaultReaderClosedPromise):\n(readableStreamReaderGenericInitialize):\n(readableStreamTee):\n(const.pullAlgorithm):\n(readableStreamTeePullFunction):\n(readableStreamTeeBranch1CancelFunction):\n(readableStreamTeeBranch2CancelFunction):\n(readableStreamError):\n(readableStreamClose):\n(readableStreamReaderGenericRelease):\n* Source/WebCore/Modules/streams/TransformStreamInternals.js:\n(createInternalTransformStreamFromTransformer):\n(createTransformStream):\n(transformStreamSetBackpressure):\n(transformStreamDefaultControllerPerformTransform):\n(transformStreamDefaultSinkWriteAlgorithm):\n(transformStreamDefaultSinkCloseAlgorithm):\n(transformStreamDefaultSourcePullAlgorithm):\n* Source/WebCore/Modules/streams/WritableStreamInternals.js:\n(writableStreamDefaultWriterClosedForBindings):\n(writableStreamDefaultWriterReadyForBindings):\n(setUpWritableStreamDefaultWriter):\n(writableStreamAbort):\n(writableStreamClose):\n(writableStreamAddWriteRequest):\n(writableStreamFinishErroring):\n(writableStreamFinishInFlightWrite):\n(writableStreamFinishInFlightWriteWithError):\n(writableStreamRejectCloseAndClosedPromiseIfNeeded):\n(writableStreamUpdateBackpressure):\n(writableStreamDefaultWriterEnsureClosedPromiseRejected):\n(writableStreamDefaultWriterEnsureReadyPromiseRejected):\n(writableStreamDefaultWriterClosedPromise):\n(writableStreamDefaultWriterReadyPromise):\n\nCanonical link: https://commits.webkit.org/319396@main",
      "email": "ysuzuki@apple.com",
      "hash": "38027ff0ecca7efe0e74a7f1d7ca71061083381a",
      "subject": "Remove @newPromiseCapability"
    },
    "319397@main": {
      "author": "Zak Ridouh",
      "avatar": "https://www.gravatar.com/avatar/d9b65ef530b9cbbfc6dff1ca158faace?d=identicon\u0026s=64",
      "cl": "319397@main",
      "clUrl": "https://commits.webkit.org/319397@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=321579\nrdar://184690236\n\nReviewed by Charlie Wolfe.\n\nCookieRequestHeaderFieldValue returned the full Cookie header to a web process,\nHttpOnly cookies included. A web process must never see an HttpOnly value. The\nmessage also validated only firstParty, which does not constrain the url the\ncookies are read for.\n\nIts only caller is Vary: Cookie cache validation, which compares the value and\nnever reads it. Return a SHA-1 digest instead, as a std::array\u003cuint8_t, 20\u003e with\nstd::nullopt for \"no Cookie header\". The digest is salted per network process\nlaunch, so a web process cannot recover the header by hashing candidates.\n\ncollectVaryingRequestHeaders() stores its values in a Vector\u003cstd::pair\u003cString,\nString\u003e\u003e that the network cache writes to disk, so the digest is base64 encoded\nat that boundary.\n\nstd::array\u003cuint8_t, N\u003e is an opaque IPC data type, so the reply parameter needs\nan entry in opaque_ipc_types.tracking.in. messages.py did not know a header for\nstd::array yet.\n\nDropping frameID, pageID and webPageProxyID preserves behavior, because that\ncaller always passed std::nullopt for the first two and\nshouldRelaxThirdPartyCookieBlockingForPage() already returned No.\n\nExisting cache entries hold a raw header, so Vary: Cookie entries revalidate\nonce. The cache version stays the same on purpose, because a bump would discard\nevery cached resource instead of only those.\n\nWebCookieJar::cookieRequestHeaderFieldValue now returns nothing. Its only WebKit2\ncaller is Web Inspector WebSocket handshake reporting, and both channels discard\nit. WebKitLegacy uses the unchanged base class implementation.\n\nTest: Tools/TestWebKitAPI/Tests/WebKit/WKWebView/IPCTestingAPI.mm\n\n* Source/WebCore/loader/CookieJar.cpp:\n(WebCore::CookieJar::cookieRequestHeaderFieldValueDigest const):\n* Source/WebCore/loader/CookieJar.h:\n* Source/WebCore/platform/network/CacheValidation.cpp:\n(WebCore::computeCookieHeaderDigestForVary):\n(WebCore::encodeCookieHeaderDigestForVary):\n(WebCore::cookieRequestHeaderFieldValueForVary):\n(WebCore::collectVaryingRequestHeaders):\n(WebCore::verifyVaryingRequestHeaders):\n(WebCore::cookieRequestHeaderFieldValue): Deleted.\n* Source/WebCore/platform/network/CacheValidation.h:\n* Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp:\n(WebKit::NetworkConnectionToWebProcess::cookieRequestHeaderFieldValueDigest):\n(WebKit::NetworkConnectionToWebProcess::cookieRequestHeaderFieldValue): Deleted.\n* Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.h:\n* Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.messages.in:\n* Source/WebKit/NetworkProcess/NetworkProcess.h:\n* Source/WebKit/Scripts/webkit/messages.py:\n* Source/WebKit/Scripts/webkit/opaque_ipc_types.tracking.in:\n* Source/WebKit/WebProcess/WebPage/WebCookieJar.cpp:\n(WebKit::WebCookieJar::cookieRequestHeaderFieldValue const):\n(WebKit::WebCookieJar::cookieRequestHeaderFieldValueDigest const):\n* Source/WebKit/WebProcess/WebPage/WebCookieJar.h:\n* Tools/TestWebKitAPI/Tests/WebKit/WKWebView/IPCTestingAPI.mm:\n(EmptyFirstPartyForCookiesCookieRequestHeaderFieldValueDigest)):\n(InvalidSameSiteInfoCookieRequestHeaderFieldValueDigest)):\n(EmptyFirstPartyForCookiesCookieRequestHeaderFieldValue)): Deleted.\n(InvalidSameSiteInfoCookieRequestHeaderFieldValue)): Deleted.\n\nCanonical link: https://commits.webkit.org/319397@main",
      "email": "zakr@apple.com",
      "hash": "7d09127ca947791dc0a72109466a9b0433ab898e",
      "subject": "Return a digest instead of the Cookie header for Vary: Cookie validation"
    },
    "319398@main": {
      "author": "Tim Horton",
      "avatar": "https://www.gravatar.com/avatar/a04261df168177f0d816f3c7276f6183?d=identicon\u0026s=64",
      "cl": "319398@main",
      "clUrl": "https://commits.webkit.org/319398@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=322043\nrdar://185140001\n\nReviewed by Megan Gardner, Lily Spiniolas, Aditya Keerthi, and Abrar Rahman Protyasha.\n\n* Source/WTF/wtf/PlatformEnable.h:\nTemporarily disable this flag.\n\nCanonical link: https://commits.webkit.org/319398@main",
      "email": "thorton@apple.com",
      "hash": "5e3cb10ac467b750ebfefa9c66ba5f21ea94be41",
      "subject": "Disable fullscreen scroll pocket support"
    },
    "319399@main": {
      "author": "Marta Darbinyan",
      "avatar": "https://www.gravatar.com/avatar/6143b3673258642a8b75585c768ccf10?d=identicon\u0026s=64",
      "cl": "319399@main",
      "clUrl": "https://commits.webkit.org/319399@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=321957\nrdar://185141546\n\nUnreviewed test Gardening\n\nThe test is a flaky failure, so updating the test expectation to reflect the correct flag.\n\n* TestExpectations/apitests:\n\nCanonical link: https://commits.webkit.org/319399@main",
      "email": "darbinyan@apple.com",
      "hash": "2b6e5de7ce664f52e9bfbfbd674a747d9ddc3ba6",
      "subject": "[Gardening]: NEW TEST(319151@main): [ Sequoia Release] TestWebKitAPI.IsolatedSiteStore.PersistsAcrossSessions is a flaky failure"
    },
    "319400@main": {
      "author": "Nikolas Zimmermann",
      "avatar": "https://www.gravatar.com/avatar/83cbd636495835720e369cd589e3ca5e?d=identicon\u0026s=64",
      "cl": "319400@main",
      "clUrl": "https://commits.webkit.org/319400@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=322041\n\nReviewed by Adrian Perez de Castro.\n\nThe test started failing when the bots switched to clang in 318539@main.\n\nWebKitCompilerFlags.cmake passes \"-mllvm -dwarf-linkage-names=Abstract\", which\nGCC ignores but which makes clang drop the mangled name from the debug info of\nregular function definitions. Only the plain name is left, so symbolize() named\nthe test frame \"TestBody\" instead of\n\"TestWebKitAPI::StackTraceTest_StackTraceWorks_Test::TestBody()\". Every frame of\na debug build backtrace lost its namespace and class this way. Release builds\nwere fine because they have no debug info to begin with.\n\nLook the name up in the symbol table first, which always stores the mangled\nname, and only ask the debug info when the symbol table has nothing.\n\nAlso fix two smaller problems in the same code: the symbol was read\nuninitialized when neither lookup found anything, and libbacktrace always calls\nthe error callback, so passing null for it would crash on the first failed\nlookup.\n\n* Source/WTF/wtf/StackTrace.cpp:\n(WTF::backtraceErrorCallback):\n(WTF::backtraceState):\n(WTF::backtraceSyminfoCallback):\n(WTF::backtraceFullCallback):\n(WTF::symbolize):\n\nCanonical link: https://commits.webkit.org/319400@main",
      "email": "nzimmermann@igalia.com",
      "hash": "1f7ab2fec82cca3cf49b4688f5d47ccc5651c095",
      "subject": "[GTK][WPE] StackTraceTest.StackTraceWorks fails when building with clang"
    },
    "319401@main": {
      "author": "Yury Semikhatsky",
      "avatar": "https://www.gravatar.com/avatar/d0aee26d9689e84bd1a7f0ed8f262fe1?d=identicon\u0026s=64",
      "cl": "319401@main",
      "clUrl": "https://commits.webkit.org/319401@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=321746\n\nReviewed by Devin Rousso.\n\nWebPageProxy::close() cancels tracking of the active popup menu, but only\ndrops its reference to the active context menu without dismissing it. On\nmacOS and Windows the menu runs a nested run loop that keeps the proxy\nalive, so the menu stays on screen tracking a closed page.\n\nCancel tracking of the active context menu in close(), matching popup menus.\nImplemented with -[NSMenu cancelTracking] on macOS and ::EndMenu() on\nWindows. GTK needs no override since its menus are non-modal and popped down\nby the proxy destructor; WPE shows no native menu.\n\nTest: Tools/TestWebKitAPI/Tests/WebKit/WKWebView/mac/ContextMenuTests.mm\n\n* Source/WebKit/UIProcess/WebContextMenuProxy.h:\n(WebKit::WebContextMenuProxy::cancelTracking):\n* Source/WebKit/UIProcess/WebPageProxy.cpp:\n(WebKit::WebPageProxy::close):\n* Source/WebKit/UIProcess/mac/WebContextMenuProxyMac.h:\n* Source/WebKit/UIProcess/mac/WebContextMenuProxyMac.mm:\n(WebKit::WebContextMenuProxyMac::cancelTracking):\n* Source/WebKit/UIProcess/win/WebContextMenuProxyWin.cpp:\n(WebKit::WebContextMenuProxyWin::cancelTracking):\n(WebKit::WebContextMenuProxyWin::showContextMenuWithItems):\n* Source/WebKit/UIProcess/win/WebContextMenuProxyWin.h:\n* Tools/TestWebKitAPI/Tests/WebKit/WKWebView/mac/ContextMenuTests.mm:\n(TestWebKitAPI::TEST(ContextMenuTests, MenuTrackingCancelledWhenPageCloses)):\n\nCanonical link: https://commits.webkit.org/319401@main",
      "email": "yurys@chromium.org",
      "hash": "ca495b340ba6cccf8f05dc1dc0ac4e892924c53e",
      "subject": "Context menu is not dismissed when its page is closed"
    },
    "319402@main": {
      "author": "Nikolas Zimmermann",
      "avatar": "https://www.gravatar.com/avatar/4cf161180c532b03a653c7e5c1a8b6cc?d=identicon\u0026s=64",
      "cl": "319402@main",
      "clUrl": "https://commits.webkit.org/319402@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=322050\n\nUnreviewed gardening.\n\nThe pixel test result now matches the legacy SVG engine, remove the LBSE baseline.\n\n* LayoutTests/platform/mac-tahoe-wk2-lbse-text/svg/zoom/page/zoom-background-images-expected.png: Removed.\n\nCanonical link: https://commits.webkit.org/319402@main",
      "email": "zimmermann@kde.org",
      "hash": "afb58b83d299dd829d2d0b0ef19317c12cdbfd36",
      "subject": "[LBSE] Remove stale baseline for svg/zoom/page/zoom-background-images.html"
    },
    "319403@main": {
      "author": "Fujii Hironori",
      "avatar": "https://www.gravatar.com/avatar/ef99cb23f5e5d27977968ca097d9a85f?d=identicon\u0026s=64",
      "cl": "319403@main",
      "clUrl": "https://commits.webkit.org/319403@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=321991\n\nReviewed by Nikolas Zimmermann.\n\nAdded background color support to GraphicsLayerCoordinated,\nCoordinatedPlatformLayer and SkiaCompositingLayer.\n\nThe \"paint flushing\" feature of WebInspector is using\nGraphicsLayer::setBackgroundColor. For Skia compositor, there is one more bug\nfor the \"paint flushing\" feature. See \u003chttps://webkit.org/b/321993\u003e.\n\n* Source/WebCore/platform/graphics/skia/SkiaCompositingLayer.h:\n* Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedPlatformLayer.cpp:\n(WebCore::CoordinatedPlatformLayer::setBackgroundColor):\n(WebCore::CoordinatedPlatformLayer::flushCompositingStateOnTarget):\n(WebCore::CoordinatedPlatformLayer::flushCompositingStateOnSkiaTarget):\n* Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedPlatformLayer.h:\n* Source/WebCore/platform/graphics/texmap/coordinated/GraphicsLayerCoordinated.cpp:\n(WebCore::GraphicsLayerCoordinated::setBackgroundColor):\n(WebCore::GraphicsLayerCoordinated::commitLayerChanges):\n* Source/WebCore/platform/graphics/texmap/coordinated/GraphicsLayerCoordinated.h:\n* Source/WebCore/platform/graphics/skia/SkiaCompositingLayer.cpp:\n(WebCore::SkiaCompositingLayer::paintContents):\n\nCanonical link: https://commits.webkit.org/319403@main",
      "email": "fujii@igalia.com",
      "hash": "9ff20369e3d7ddbd3d90fd7d798857ad7f03cdfa",
      "subject": "[Coordinated Graphics] Support background color of layer"
    },
    "319404@main": {
      "author": "Ryan Haddad",
      "avatar": "https://www.gravatar.com/avatar/b7d8cd2dec546cac2524e4b58181f9d5?d=identicon\u0026s=64",
      "cl": "319404@main",
      "clUrl": "https://commits.webkit.org/319404@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319725\nrdar://182558497\n\nReviewed by Aakash Jain.\n\nThe Site-Isolation-Tests EWS queue reported a change as failing after a single test run, skipping\nthe retry ladder that every other layout-test queue uses to avoid blaming a change for flaky or\npre-existing failures.\n\nThe queue can reuse the existing ladder as-is. Both the first run and the re-run need the site-isolation\nflavor, since each consults results-db and can pass the build early when every failure is already known.\nWithout it the re-run would query regular WK2 history for this queue, which could mark a\nsite-isolation-specific regression as pre-existing and hide it.\n\n* Tools/CISupport/ews-build/steps.py:\n(RunWebKitTests.rerun_step): Added, so a queue can substitute its own re-run step.\n(RunWebKitTests.evaluateCommand): Use rerun_step().\n(RunWebKitTestsInSiteIsolationMode.doStepIf):\n(SiteIsolationResultsDBMixin): Added, holding the site-isolation results-db flavor and reports_to_results_db\nfor both site-isolation steps.\n(SiteIsolationResultsDBMixin.results_db_query_configuration): Moved from RunWebKitTestsEWSSiteIsolation.\n(RunWebKitTestsEWSSiteIsolation): Moved below ReRunWebKitTests so it can reference the re-run step.\nRemoved the single-run evaluateCommand and the filter_failures_using_results_db override that duplicated\nthe base implementation.\n(RunWebKitTestsEWSSiteIsolation.rerun_step):\n(ReRunWebKitTestsEWSSiteIsolation): Added, the re-run step for this queue.\n(RunWebKitTestsEWSSiteIsolation.results_db_query_configuration): Deleted.\n(RunWebKitTestsEWSSiteIsolation.filter_failures_using_results_db): Deleted.\n(RunWebKitTestsEWSSiteIsolation.evaluateCommand): Deleted.\n* Tools/CISupport/ews-build/steps_unittest.py: Add unit tests.\n\nCanonical link: https://commits.webkit.org/319404@main",
      "email": "ryanhaddad@apple.com",
      "hash": "c51356d573bee3e638d384c19944d4f857ec6245",
      "subject": "[EWS] macOS-Sequoia-Release-Site-Isolation-Tests-EWS does not retry tests before reporting results"
    },
    "319406@main": {
      "author": "Sean Patterson",
      "avatar": "https://www.gravatar.com/avatar/b19318d92b64ac7809b78670c03b0f1e?d=identicon\u0026s=64",
      "cl": "319406@main",
      "clUrl": "https://commits.webkit.org/319406@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=321633\nrdar://184724123\n\nReviewed by Abrar Rahman Protyasha.\n\nbroadcastFrameTreeSyncData has a RELEASE_ASSERT that site isolation is enabled.\nFour of its five callers check the preference first; the one in\nremoteProcessDidTerminate does not. 7e7db43cb121 added the assert, the guarded\ncallsite in didCommitLoad, and this unguarded one, all in the same commit.\n\nsiteIsolationEnabled is a mutable preference, and nothing tears down a\nRemotePageProxy or removes a page from its BrowsingContextGroup when it is turned\noff on a live page - WebPreferences::update() only calls\nWebPageProxy::preferencesDidChange(). So a remote page created while site\nisolation was enabled outlives the preference change, and when its process later\nterminates, RemotePageProxy::processDidTerminate reaches\nremoteProcessDidTerminate, which broadcasts unconditionally and the release\nassert kills the UI process.\n\nCheck the preference at the callsite, the way didCommitLoad does.\n\nThe test kills the iframe process and waits for it to exit rather than waiting on\n-waitForWebContentProcessDidTerminate. An iframe process is not the page's\nsiteIsolatedProcess(), so WebProcessProxy::terminationReason() reports\nNonMainFrameWebContentProcessCrash, and\nNavigationState::NavigationClient::processDidTerminate returns early for that reason\nwithout invoking the delegate. Waiting on it never completes, so the test times out\ninstead of failing.\n\n* Source/WebKit/UIProcess/WebFrameProxy.cpp:\n(WebKit::WebFrameProxy::remoteProcessDidTerminate):\n* Tools/TestWebKitAPI/Tests/WebKit/WKWebView/SiteIsolation.mm:\n(TestWebKitAPI::setFeatureEnabled):\n(TestWebKitAPI::enableFeature):\n\nCanonical link: https://commits.webkit.org/319406@main",
      "email": "sean_patterson@apple.com",
      "hash": "884d0116ea09545d3bebd0d91a834ecc23ab6c31",
      "subject": "[Site Isolation] UI process crashes in WebFrameProxy::broadcastFrameTreeSyncData when a remote web process terminates while loading cross-site iframes in private browsing"
    },
    "319407@main": {
      "author": "Marta Darbinyan",
      "avatar": "https://www.gravatar.com/avatar/6143b3673258642a8b75585c768ccf10?d=identicon\u0026s=64",
      "cl": "319407@main",
      "clUrl": "https://commits.webkit.org/319407@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=322051\nrdar://185244348\n\nUnreviewed test gardening\n\n* LayoutTests/platform/mac-wk2/TestExpectations:\n\nCanonical link: https://commits.webkit.org/319407@main",
      "email": "darbinyan@apple.com",
      "hash": "9e5b567892fb1be1769519608941d60a09c3a889",
      "subject": "[Gardening]: REGRESSION(319099@main): [macOS Release] media/picture-in-picture/picture-in-picture-interruption.html is a flaky failure"
    }
  },
  "date": "2026-08-18",
  "days": 1,
  "generatedAt": "2026-08-18T22:06:09Z",
  "markdown": "## Highlights\n\n- **Privacy** Site Isolation now keeps high-value fraud target domains out of the shared process, tightening isolation where risk matters most. [commit 319324@main](https://commits.webkit.org/319324@main)\n- **Web Platform** Fetch upload streams are now enabled by default, unlocking request streaming without flags for more real-world apps. [commit 319361@main](https://commits.webkit.org/319361@main)\n- **Networking** Compression dictionaries can now be fetched from rel=compression-dictionary and Link headers, moving the platform forward on shared dictionary delivery. [commit 319327@main](https://commits.webkit.org/319327@main)\n- **Rendering** Unprefixed user-select landed, reducing a long-standing vendor prefix edge and improving standards alignment. [commit 319334@main](https://commits.webkit.org/319334@main)\n- **V8** JSC added radix-sort for TypedArrays, a concrete performance win for heavy numeric sorting workloads. [commit 319339@main](https://commits.webkit.org/319339@main)\n- **V8** JSC implemented wasm memory64 with multi-memory, expanding WebAssembly support in a meaningful way. [commit 319336@main](https://commits.webkit.org/319336@main)\n- **Security** A private browsing Site Isolation crash in WebFrameProxy::broadcastFrameTreeSyncData was fixed, removing a bad failure mode during cross-site iframe loads. [commit 319406@main](https://commits.webkit.org/319406@main)\n- **GPU** WebGPU fixed a race where indirect draws clamped through one scratch slot per Buffer, preventing same-pass corruption hazards. [commit 319317@main](https://commits.webkit.org/319317@main)\n- **Media** TURN URLs with query parameters work again after a regression, restoring broken WebRTC connectivity paths. [commit 319365@main](https://commits.webkit.org/319365@main)\n\n## What landed by area\n\n### Site Isolation and process model\n\n- **Security** WKWebView-level APIs now message all processes associated with a page instead of missing remote ones under Site Isolation. [commit 319380@main](https://commits.webkit.org/319380@main)\n- **Rendering** Animated images now stop correctly inside out-of-process iframes when the page is hidden. [commit 319373@main](https://commits.webkit.org/319373@main)\n- **UI** WindowScreenDidChange is now broadcast to remote frame processes so out-of-process content tracks screen changes correctly. [commit 319372@main](https://commits.webkit.org/319372@main)\n- **UI** Remote frames now get updated user interaction and last user gesture timestamp flags, fixing state drift across processes. [commit 319332@main](https://commits.webkit.org/319332@main)\n- **Privacy** Isolated site records no longer leak between WebKitTestRunner tests or across runs. [commit 319323@main](https://commits.webkit.org/319323@main)\n- **Security** Web Automation click targeting inside cross-origin iframes under Site Isolation now hits the right position. [commit 319384@main](https://commits.webkit.org/319384@main)\n\n### CSS, layout, and rendering\n\n- **Rendering** Subgrid columns now honor the parent grid's content distribution instead of ignoring it. [commit 319353@main](https://commits.webkit.org/319353@main)\n- **Rendering** block-in-inline line-clamp no longer shows an unexpected ellipsis after a regression. [commit 319392@main](https://commits.webkit.org/319392@main)\n- **Rendering** View timeline range boundaries now preserve subpixel sticky adjustments. [commit 319369@main](https://commits.webkit.org/319369@main)\n- **Rendering** Keyframes using revert-layer or revert-rule keep being recomputed after KeyframeEffect copies. [commit 319368@main](https://commits.webkit.org/319368@main)\n- **Perf** KeyframeEffect::animatesProperty() no longer scans property keys linearly and hashes them instead. [commit 319381@main](https://commits.webkit.org/319381@main)\n- **Rendering** Width and height animations no longer get incorrectly accelerated when only some keyframes use size-dependent transforms. [commit 319363@main](https://commits.webkit.org/319363@main)\n- **Perf** FrameRateAligner now picks the highest compatible frame rate instead of the lowest for newly encountered rates. [commit 319362@main](https://commits.webkit.org/319362@main)\n- **Web Platform** css-values-5 random-item() now parses \u003crandom-ua-ident\u003e in a \u003crandom-key\u003e. [commit 319393@main](https://commits.webkit.org/319393@main)\n- **Rendering** EvaluationTimeZoom now uses the font specifiedSize() getter consistently during length resolution. [commit 319340@main](https://commits.webkit.org/319340@main)\n- **Rendering** px values in calc() expressions that survive into computed style now serialize correctly under EvaluationTimeZoom. [commit 319320@main](https://commits.webkit.org/319320@main)\n- **Refactor** RenderBox dropped unused trimmed-margin rare data bits. [commit 319341@main](https://commits.webkit.org/319341@main)\n- **Build** css/css-overflow/parsing/webkit-box-computed.html was fixed up at the test level. [commit 319370@main](https://commits.webkit.org/319370@main)\n\n### DOM, HTML, and editing\n\n- **Web Platform** dialog.show() now invalidates style so focusing steps see the dialog as rendered. [commit 319387@main](https://commits.webkit.org/319387@main)\n- **Security** MutationObserver delivery now keeps observed nodes alive across callback delivery, avoiding lifetime hazards. [commit 319335@main](https://commits.webkit.org/319335@main)\n- **UI** Pasted text no longer gets cut off in a real-world editor regression tracked in [bug 321869](https://bugs.webkit.org/show_bug.cgi?id=321869). [commit 319350@main](https://commits.webkit.org/319350@main)\n- **Web Platform** WebKit removed its local copy of HTML parser tests in favor of WPT. [commit 319377@main](https://commits.webkit.org/319377@main)\n- **Web Platform** html/syntax WPTs were resynced except speculative parsing. [commit 319359@main](https://commits.webkit.org/319359@main)\n- **Refactor** HTMLModelElement dropped an unused AbortSignal include. [commit 319329@main](https://commits.webkit.org/319329@main)\n\n### Networking, fetch, and storage semantics\n\n- **Networking** Vary: Cookie validation now uses a digest instead of the full Cookie header, reducing cache key sensitivity to raw cookie data. [commit 319397@main](https://commits.webkit.org/319397@main)\n- **Networking** A stale policy decision can no longer outlive its navigation and get applied to the wrong load. [commit 319378@main](https://commits.webkit.org/319378@main)\n- **Web Platform** User agent override quirks now have API test coverage. [commit 319391@main](https://commits.webkit.org/319391@main)\n\n### Media, WebRTC, and capture\n\n- **Media** Changing the projection attribute on a playing video now updates the experimental spatial video renderer. [commit 319383@main](https://commits.webkit.org/319383@main)\n- **Media** ManagedMediaSource emits startstreaming again when seeking, fixing a streaming state regression. [commit 319330@main](https://commits.webkit.org/319330@main)\n- **Media** GStreamer no longer aborts when capture device caps omit a framerate field. [commit 319364@main](https://commits.webkit.org/319364@main)\n- **Media** PlatformRawAudioData creation now guarantees GStreamer is initialized for WebCodecs paths. [commit 319360@main](https://commits.webkit.org/319360@main)\n- **Media** GStreamer plus Skia gained video rendering support for the Qualcomm decoder. [commit 319367@main](https://commits.webkit.org/319367@main)\n- **Media** media-loading-state-timing.sub.html was enabled in WPT coverage. [commit 319344@main](https://commits.webkit.org/319344@main)\n- **Networking** LibWebRTC fixed an unsafe-buffer-usage-in-container warning in LibWebRTCSocket.cpp. [commit 319352@main](https://commits.webkit.org/319352@main)\n\n### JavaScriptCore and WebAssembly\n\n- **V8** JSC added a global priority queue inliner. [commit 319343@main](https://commits.webkit.org/319343@main)\n- **Refactor** JSC moved global-code-only fields out of UnlinkedCodeBlock. [commit 319346@main](https://commits.webkit.org/319346@main)\n- **Refactor** JSC removed UnlinkedCodeBlock::m_jumpTargets. [commit 319376@main](https://commits.webkit.org/319376@main)\n- **V8** Fixed-sized ArgList now uses std::array in JSC. [commit 319337@main](https://commits.webkit.org/319337@main)\n- **Web Platform** Re-exported imported immutable Wasm globals now preserve object identity. [commit 319351@main](https://commits.webkit.org/319351@main)\n- **Refactor** JSC removed @newPromiseCapability. [commit 319396@main](https://commits.webkit.org/319396@main)\n\n### Graphics, SVG, and GPU\n\n- **Rendering** Coordinated Graphics now supports layer background color. [commit 319403@main](https://commits.webkit.org/319403@main)\n- **Rendering** SVG masks no longer create a RenderLayer in LBSE. [commit 319390@main](https://commits.webkit.org/319390@main)\n- **Rendering** feImage referenced elements are now painted through the layer tree in LBSE. [commit 319388@main](https://commits.webkit.org/319388@main)\n- **Build** A stale baseline for svg/zoom/page/zoom-background-images.html was removed. [commit 319402@main](https://commits.webkit.org/319402@main)\n- **Build** Skia was updated to the 2024-02-20 snapshot. [commit 319328@main](https://commits.webkit.org/319328@main)\n\n### UI, platform integration, and accessibility\n\n- **UI** Context menus are now dismissed when their page closes. [commit 319401@main](https://commits.webkit.org/319401@main)\n- **UI** Fullscreen scroll pocket support was disabled. [commit 319398@main](https://commits.webkit.org/319398@main)\n- **A11y** GLIB WebKitTestRunner added the missing takeFocus implementation. [commit 319379@main](https://commits.webkit.org/319379@main)\n- **UI** iOS \u003cselect multiple\u003e now updates its button text when selection changes. [commit 319325@main](https://commits.webkit.org/319325@main)\n- **UI** WKFormSelectPicker now uses a semantic done checkmark instead of a close X for dismissal. [commit 319322@main](https://commits.webkit.org/319322@main)\n- **DevTools** ConsoleManager.js no longer trips this._isNewPageOrReload on first navigation. [commit 319338@main](https://commits.webkit.org/319338@main)\n- **Refactor** WebCore::appleVisualEffectNeedsBackdrop was made inline. [commit 319342@main](https://commits.webkit.org/319342@main)\n\n### Build, tooling, and test infrastructure\n\n- **Build** The PAL Core clang module now requires C++23. [commit 319358@main](https://commits.webkit.org/319358@main)\n- **Build** ICU older than 72 builds again after a regression fix. [commit 319374@main](https://commits.webkit.org/319374@main)\n- **Build** GTK clang 18 build failures were fixed. [commit 319355@main](https://commits.webkit.org/319355@main)\n- **Build** ANGLEEnd2EndTests got the required UIApplicationSceneManifest in its plist. [commit 319366@main](https://commits.webkit.org/319366@main)\n- **Build** Tests missing from CMake builds were added. [commit 319349@main](https://commits.webkit.org/319349@main)\n- **Build** TestWebKitAPI.wkbundle is now loadable outside the TestWebKitAPI binary in CMake builds. [commit 319345@main](https://commits.webkit.org/319345@main)\n- **UI** Media playback controls were fixed up for CMake builds. [commit 319331@main](https://commits.webkit.org/319331@main)\n- **Build** iOS 27 public SDK build follow-up landed. [commit 319319@main](https://commits.webkit.org/319319@main)\n- **Build** A style checker rule now enforces better API header hygiene. [commit 319318@main](https://commits.webkit.org/319318@main)\n- **Build** check-webkit-style jsonchecker.py now knows computed-style-getter-nodelete. [commit 319333@main](https://commits.webkit.org/319333@main)\n- **Build** git-webkit install-hooks no longer crashes on IdentifierTrailer.split. [commit 319316@main](https://commits.webkit.org/319316@main)\n- **Build** ews-build removed more Bugzilla patch workflow support. [commit 319389@main](https://commits.webkit.org/319389@main)\n- **Build** webkit-patch removed more Bugzilla patch workflow support. [commit 319385@main](https://commits.webkit.org/319385@main)\n- **Build** ews-build removed Bugzilla patch workflow support in a follow-up. [commit 319357@main](https://commits.webkit.org/319357@main)\n- **Build** webkit-patch removed Bugzilla patch workflow support. [commit 319356@main](https://commits.webkit.org/319356@main)\n- **Build** macOS Sequoia Site Isolation EWS now retries tests before reporting results. [commit 319404@main](https://commits.webkit.org/319404@main)\n- **Build** UnifiedPDF and related macOS API test crashes were addressed in test infrastructure. [commit 319348@main](https://commits.webkit.org/319348@main)\n- **Build** GTK and WPE fixed StackTraceTest.StackTraceWorks when building with clang. [commit 319400@main](https://commits.webkit.org/319400@main)\n- **Build** GTK and WPE added asynchronous scrolling support for touch events. [commit 319347@main](https://commits.webkit.org/319347@main)\n\n### Test gardening and flake control\n\n- **Build** picture-in-picture-interruption.html was marked and handled as a flaky macOS Release regression. [commit 319407@main](https://commits.webkit.org/319407@main)\n- **Build** TestWebKitAPI.IsolatedSiteStore.PersistsAcrossSessions was added as a flaky failure case on Sequoia Release. [commit 319399@main](https://commits.webkit.org/319399@main)\n- **Build** Imported WPT webtransport idlharness failures on iOS and macOS were marked as constant failures. [commit 319382@main](https://commits.webkit.org/319382@main)\n- **Build** GTK and WPE test gardening batch landed. [commit 319394@main](https://commits.webkit.org/319394@main)\n- **Build** GLIB layout test gardening landed. [commit 319354@main](https://commits.webkit.org/319354@main)\n- **Build** GLIB unreviewed test gardening landed. [commit 319326@main](https://commits.webkit.org/319326@main)\n- **Build** TestWebKitAPI.IsolatedSiteStore.PersistsAcrossSessions flaky handling was also landed in a duplicate gardening change. [commit 319321@main](https://commits.webkit.org/319321@main)",
  "repo": "webkit",
  "repoDisplay": "WebKit",
  "rollGroups": [
    {
      "name": "Unreviewed",
      "count": 2
    }
  ],
  "since": "2026-08-18",
  "totals": {
    "commits": 92,
    "features": 90,
    "rolls": 2
  },
  "until": "2026-08-18"
}