{
  "commits": {
    "317659@main": {
      "author": "Sosuke Suzuki",
      "avatar": "https://www.gravatar.com/avatar/e63b87350fe19bdd9a30c7234eda45af?d=identicon\u0026s=64",
      "cl": "317659@main",
      "clUrl": "https://commits.webkit.org/317659@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319850\n\nReviewed by Yusuke Suzuki.\n\ntryCreateObjectViaCloning, which implements the fast path of object spread `{ ...source }`,\nwas creating a JSFinalObject via createWithButterfly, which zero-fills the inline storage in\nits constructor, and then copying source's inline storage over it with gcSafeMemcpy. Since the\nzero-filled values are always overwritten by source's values, that memset is pure waste.\n\nThis patch adds a JSFinalObject constructor (and createWithButterflyCopyingInlineStorage)\nwhich initializes the inline storage by copying from another object's inline storage instead\nof zero-filling it. Because the new object is not exposed to anyone until this function\nreturns, the copy does not need to be gcSafeMemcpy either. Also, DeferGC and the out-of-line\ncapacity computation are now only performed when source actually has out-of-line properties.\n\n                                             Baseline                  Patched\n\n    object-spread-small-clone            11.7545+-0.1951     ^      9.9040+-0.2022        ^ definitely 1.1868x faster\n    clone-objects-via-spread-first       17.8918+-0.1675           17.5364+-0.3234          might be 1.0203x faster\n    clone-objects-via-spread             16.5543+-0.2060           16.3735+-0.1780          might be 1.0110x faster\n\nTest: JSTests/microbenchmarks/object-spread-small-clone.js\n\n* JSTests/microbenchmarks/object-spread-small-clone.js: Added.\n* Source/JavaScriptCore/runtime/JSObject.h:\n(JSC::JSFinalObject::createWithButterflyCopyingInlineStorage):\n* Source/JavaScriptCore/runtime/ObjectConstructorInlines.h:\n(JSC::tryCreateObjectViaCloning):\n\nCanonical link: https://commits.webkit.org/317659@main",
      "email": "sosuke@bun.sh",
      "hash": "8339909e6ce15eb0070e5ec79871bff7e7c76148",
      "subject": "[JSC] Avoid zero-filling and `gcSafeMemcpy` in `tryCreateObjectViaCloning`"
    },
    "317660@main": {
      "author": "Sosuke Suzuki",
      "avatar": "https://www.gravatar.com/avatar/e63b87350fe19bdd9a30c7234eda45af?d=identicon\u0026s=64",
      "cl": "317660@main",
      "clUrl": "https://commits.webkit.org/317660@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319796\n\nReviewed by Yusuke Suzuki.\n\nArrayBuffer.isView had no intrinsic, so DFG/FTL emitted a host function call\nfor it.\n\nThis patch adds ArrayBufferIsViewIntrinsic and inlines it as IsCellWithType,\nwhich now takes a JSTypeRange instead of a single JSType. ArrayBuffer.isView\nis IsCellWithType[Int8ArrayType, DataViewType] and @isTypedArrayView is\nIsCellWithType[Int8ArrayType, BigUint64ArrayType], so the IsTypedArrayView\nnode is removed and both get the folding, CSE and CellUse fixup that\nIsCellWithType already had. speculationFromJSTypeRange unions the range so\nthat the type based folding still applies.\n\n@isView, the private name alias of ArrayBuffer.isView, has no user and is\nremoved.\n\n                               Baseline                  Patched\n\n    array-buffer-is-view   48.8141+-0.8753     ^     32.3578+-0.2090        ^ definitely 1.5086x faster\n\nTests: JSTests/microbenchmarks/array-buffer-is-view.js\n       JSTests/stress/array-buffer-is-view.js\n\n* JSTests/microbenchmarks/array-buffer-is-view.js: Added.\n(isView):\n* JSTests/stress/array-buffer-is-view.js: Added.\n(shouldBe):\n(DerivedUint8Array):\n(DerivedDataView):\n(new.Proxy.new.Uint8Array):\n(isViewOfTypedArray):\n(isViewOfDataView):\n(isViewOfArrayBuffer):\n* Source/JavaScriptCore/dfg/DFGAbstractInterpreterInlines.h:\n(JSC::DFG::AbstractInterpreter\u003cAbstractStateType\u003e::executeEffects):\n* Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:\n(JSC::DFG::ByteCodeParser::handleIntrinsicCall):\n* Source/JavaScriptCore/dfg/DFGClobberize.h:\n(JSC::DFG::clobberize):\n* Source/JavaScriptCore/dfg/DFGDoesGC.cpp:\n(JSC::DFG::doesGC):\n* Source/JavaScriptCore/dfg/DFGFixupPhase.cpp:\n(JSC::DFG::FixupPhase::fixupNode):\n* Source/JavaScriptCore/dfg/DFGNodeType.h:\n* Source/JavaScriptCore/dfg/DFGPredictionPropagationPhase.cpp:\n* Source/JavaScriptCore/dfg/DFGSafeToExecute.h:\n(JSC::DFG::safeToExecute):\n* Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:\n* Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp:\n(JSC::DFG::SpeculativeJIT::compile):\n* Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:\n(JSC::DFG::SpeculativeJIT::compile):\n* Source/JavaScriptCore/ftl/FTLCapabilities.cpp:\n(JSC::FTL::canCompile):\n* Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:\n(JSC::FTL::DFG::LowerDFGToB3::compileNode):\n(JSC::FTL::DFG::LowerDFGToB3::compileCompareStrictEq):\n* Source/JavaScriptCore/runtime/Intrinsic.h:\n* Source/JavaScriptCore/runtime/JSArrayBufferConstructor.cpp:\n(JSC::JSGenericArrayBufferConstructor\u003csharingMode\u003e::finishCreation):\n\nCanonical link: https://commits.webkit.org/317660@main",
      "email": "sosuke@bun.sh",
      "hash": "a88a607d357e17b158c318100fac93ce2407c2b1",
      "subject": "[JSC] Inline `ArrayBuffer.isView` in DFG/FTL by extending `IsCellWithType` to a JSType range"
    },
    "317661@main": {
      "author": "Sosuke Suzuki",
      "avatar": "https://www.gravatar.com/avatar/e63b87350fe19bdd9a30c7234eda45af?d=identicon\u0026s=64",
      "cl": "317661@main",
      "clUrl": "https://commits.webkit.org/317661@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319843\n\nReviewed by Yusuke Suzuki.\n\nSerializers call Symbol.keyFor on the same registered symbols while walking an\nobject graph, and each call allocates a fresh JSString even though Symbol\nalready caches that string in m_description for Symbol.prototype.description.\n\nReturn Symbol::description() instead, since a registered symbol's [[Key]] and\n[[Description]] are the same string.\n\n                                    Baseline                  Patched\n\nsymbol-key-for-registered       16.4233+-0.1339     ^     14.1917+-0.2452        ^ definitely 1.1572x faster\n\n* Source/JavaScriptCore/runtime/SymbolConstructor.cpp:\n(JSC::JSC_DEFINE_HOST_FUNCTION):\n\nCanonical link: https://commits.webkit.org/317661@main",
      "email": "sosuke@bun.sh",
      "hash": "a357eef6dd9359e1f73662ebc012b2f30c6b51df",
      "subject": "[JSC] `Symbol.keyFor` should reuse the symbol's cached description string"
    },
    "317662@main": {
      "author": "Sammy Gill",
      "avatar": "https://www.gravatar.com/avatar/715a3cfee5d85ee90ccfdaa2a4a7a5a3?d=identicon\u0026s=64",
      "cl": "317662@main",
      "clUrl": "https://commits.webkit.org/317662@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319870\nrdar://problem/182774853\n\nReviewed by Vitor Roriz and Brent Fulgham.\n\nExplicitly stretching an item, for example through align-self: stretch,\nforces the item to take up the entire space in the axis. This logic is\nalready implemented through the \"normal,\" alignment behavior for certain\ngrid items so we can use the already existing code for the case where\nthe item is given stretch explicitly.\n\nCanonical link: https://commits.webkit.org/317662@main",
      "email": "sammy.gill@apple.com",
      "hash": "89ad9bf1cf0dc5ec240d259aad77daeb7aeb21c9",
      "subject": "[GFC][Integration] Allow grid items with explicit stretch alignment"
    },
    "317663@main": {
      "author": "Zak Ridouh",
      "avatar": "https://www.gravatar.com/avatar/d9b65ef530b9cbbfc6dff1ca158faace?d=identicon\u0026s=64",
      "cl": "317663@main",
      "clUrl": "https://commits.webkit.org/317663@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319925\nrdar://182851292\n\nReviewed by Keith Miller.\n\nr8d261de036d4 (\"Cache Intl.DateTimeFormat\") changed the inline\nVM::hasAnyEntryScopeServiceRequest() to call the out-of-line\nVM::hasLanguageChange(), but that declaration was never marked\nJS_EXPORT_PRIVATE. hasLanguageChange() must stay out-of-line because\nIntlCache is only forward-declared in VM.h, so its symbol stayed hidden\nin the JavaScriptCore dylib. WebCore inlines\nhasAnyEntryScopeServiceRequest(), needs the symbol, and failed to link:\n\n    Undefined symbols for architecture arm64:\n      \"JSC::VM::hasLanguageChange()\", referenced from:\n          JSC::VM::hasAnyEntryScopeServiceRequest() in WebCoreJSBindings_pch_obj.cpp.o\n\nMark the declaration JS_EXPORT_PRIVATE so it is exported, matching the\nother out-of-line VM methods reached from inline header callers.\n\n* Source/JavaScriptCore/runtime/VM.h:\n\nCanonical link: https://commits.webkit.org/317663@main",
      "email": "zakr@apple.com",
      "hash": "1406a9ebc32d5aebb56b987141810590c0b4270d",
      "subject": "Export VM::hasLanguageChange() so WebCore can link against it"
    },
    "317664@main": {
      "author": "Ian Gower",
      "avatar": "https://www.gravatar.com/avatar/cc2e677bc728b92e5463660d8b8d9ed8?d=identicon\u0026s=64",
      "cl": "317664@main",
      "clUrl": "https://commits.webkit.org/317664@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319853\nrdar://182752197\n\nReviewed by Alex Christensen.\n\nSplits IPAddressSpace's Local value into Local and Loopback, so\n127.0.0.0/8 and ::1 are distinguishable from other private address\nspace. This is prep work for the Local Network Access enforcement\npath (meta bug 250607), which needs to treat loopback more\npermissively than general local-network access.\n\nAlso removes isLocalIPAddressSpace(const URL\u0026), whose only call site\nnow needs the full three-way classification instead of a boolean, and\nfixes an unrelated missing #import in WKWebViewServerTrustKVC.mm found\nwhile working on this stack.\n\n* Source/WebCore/Modules/fetch/FetchRequest.cpp:\n(WebCore::updateTargetAddressSpaceIfNeeded):\n* Source/WebCore/Modules/fetch/IPAddressSpace.cpp:\n(WebCore::classifyHost):\n(WebCore::determineIPAddressSpace):\n* Source/WebCore/Modules/fetch/IPAddressSpace.h:\n(WebCore::publicnessRank):\n(WebCore::isLessPublicThan):\n* Source/WebCore/Modules/fetch/IPAddressSpace.idl:\n* Source/WebCore/platform/network/ResourceRequestBase.h:\n* Source/WebCore/platform/network/ResourceResponseBase.h:\n* Source/WebKit/Shared/WebCoreArgumentCoders.serialization.in:\n* Tools/TestWebKitAPI/Tests/WebCore/IPAddressSpaceTests.cpp:\n(TestWebKitAPI::TEST(IPAddressSpace, IPv4Loopback)):\n(TestWebKitAPI::TEST(IPAddressSpace, IPv6Loopback)):\n(TestWebKitAPI::TEST(IPAddressSpace, IPv6MappedIPv4DottedDecimal)):\n(TestWebKitAPI::TEST(IPAddressSpace, UtilityFunctions)):\n(TestWebKitAPI::TEST(IPAddressSpace, URLsWithPorts)):\n* Tools/TestWebKitAPI/Tests/WebKit/WKWebView/WKWebViewServerTrustKVC.mm:\n\nCanonical link: https://commits.webkit.org/317664@main",
      "email": "i_gower@apple.com",
      "hash": "dd2e06452ff034b6715f831b5320a08b207b6f9c",
      "subject": "Widen IPAddressSpace to distinguish loopback from other local addresses"
    },
    "317665@main": {
      "author": "Basuke Suzuki",
      "avatar": "https://www.gravatar.com/avatar/5192a1151c7575317affb7a4633f8d63?d=identicon\u0026s=64",
      "cl": "317665@main",
      "clUrl": "https://commits.webkit.org/317665@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319875\nrdar://161685860\n\nReviewed by Alex Christensen.\n\nWebTransport::createBidirectionalStream and createUnidirectionalStream discarded their\nWebTransportSendStreamOptions argument, so the sendOrder and sendGroup supplied at stream\ncreation never reached the resulting WebTransportSendStream. As a result writable.sendOrder\ndid not reflect the value passed to createBidirectionalStream({sendOrder: N}).\n\nThread the creation options into WebTransportSendStream::create so the created stream reflects\nthe requested sendOrder (defaulting to 0) and sendGroup, propagating the sendGroup\ntransport-ownership check. Server-initiated streams keep the default (sendOrder 0, no group).\nThis is the WebCore/attribute-level part; actual wire-level send scheduling is tracked\nseparately in rdar://161685860.\n\nThis unskips imported/w3c/web-platform-tests/webtransport/sendorder.https.any.*, which now\npass (all three subtests, across the window/worker/serviceworker/sharedworker variants).\n\n* LayoutTests/TestExpectations: Unskip the sendorder tests and drop sendOrder from the\nbackend-gaps comment.\n* LayoutTests/imported/w3c/web-platform-tests/webtransport/sendorder.https.any-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/webtransport/sendorder.https.any.serviceworker-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/webtransport/sendorder.https.any.sharedworker-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/webtransport/sendorder.https.any.worker-expected.txt:\n* Source/WebCore/Modules/webtransport/WebTransport.cpp:\n(WebCore::createBidirectionalStream):\n(WebCore::WebTransport::createBidirectionalStream):\n(WebCore::WebTransport::createUnidirectionalStream):\n* Source/WebCore/Modules/webtransport/WebTransportSendStream.cpp:\n(WebCore::WebTransportSendStream::create):\n* Source/WebCore/Modules/webtransport/WebTransportSendStream.h:\n\nCanonical link: https://commits.webkit.org/317665@main",
      "email": "basuke@apple.com",
      "hash": "689509d66dd53e195d05c56683f1dcaae2ae3870",
      "subject": "[WebTransport] WebTransportSendStream should reflect sendOrder and sendGroup from creation options"
    },
    "317666@main": {
      "author": "Wenson Hsieh",
      "avatar": "https://www.gravatar.com/avatar/c8fba82556fd4988c78bd3a0aee2a44e?d=identicon\u0026s=64",
      "cl": "317666@main",
      "clUrl": "https://commits.webkit.org/317666@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319901\nrdar://182822622\n\nReviewed by Abrar Rahman Protyasha.\n\nMake a couple of adjustments which allow the agent to click the \"Me\" (login) button on www.iq.com,\neven when the promotional overlay is showing up over the rest of the page:\n\n1.  Surface more context for elements with only an accessibility role (like `uid=… role=button`), so\n    that if the `class` and/or `id` happen to contain additional context, agents are still able to\n    reason about it.\n\n2.  Currently, if the agent tries to click an element, we first try to simulate real mousedown/up\n    events near the center of the targeted element. In the case where the element is obscured by\n    another container (in this case, a modal promotional overlay), we fall back to simulating a\n    programmatic click on the target. While this works well in most cases, because it's dispatched\n    onto the target element directly, it doesn't bubble up the event target chain properly (so if\n    the content expects the event target to be an inner descendant, the click doesn't behave as\n    expected).\n\n    To fix this, we perform a piercing hit-test to find the innermost descendant at the center of\n    the target element, and then simulate the programmatic click over that innermost descendant\n    instead (allowing the event to bubble up the chain to the target).\n\nTest: TextExtractionTests.InteractionClicksThroughOccludingOverlay\n\n* LayoutTests/fast/text-extraction/debug-text-extraction-basic-expected.txt:\n* LayoutTests/fast/text-extraction/debug-text-extraction-basic.html:\n\nAugment an existing layout test to cover the changes for [1] above.\n\n* Source/WebCore/page/text-extraction/TextExtraction.cpp:\n(WebCore::TextExtraction::frontmostHitTestedElementInSubtree):\n\nSee [2] above.\n\n(WebCore::TextExtraction::dispatchSimulatedClick):\n* Source/WebKit/Shared/TextExtractionToStringConversion.cpp:\n(WebKit::recognizedClassesAndIdForItem):\n\nSee [1] above.\n\n* Tools/TestWebKitAPI/Tests/WebKit/WKWebView/TextExtractionTests.mm:\n(TestWebKitAPI::TEST(TextExtractionTests, InteractionClicksThroughOccludingOverlay)):\n\nAdd an API test for [2] above.\n\nCanonical link: https://commits.webkit.org/317666@main",
      "email": "wenson_hsieh@apple.com",
      "hash": "60f57c6dce48e685b7a9a27020bfb1f1d45633f6",
      "subject": "[Text Extraction] Simulated clicks should target the innermost descendant in the targeted element"
    },
    "317667@main": {
      "author": "Basuke Suzuki",
      "avatar": "https://www.gravatar.com/avatar/5192a1151c7575317affb7a4633f8d63?d=identicon\u0026s=64",
      "cl": "317667@main",
      "clUrl": "https://commits.webkit.org/317667@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319915\nrdar://172715074\n\nReviewed by Alex Christensen.\n\nTwo WPT tests for WebTransport back/forward cache behavior were skipped and never actually\nexercised the feature:\n\n- back-forward-cache-with-open-webtransport-connection.https.window\n- back-forward-cache-with-closed-webtransport-connection.https.window\n\nThere were two root causes:\n\n1. WebKitTestRunner's shouldUseBackForwardCache() only enabled the UsesBackForwardCache\npreference for the navigation-api/ and websockets/back-forward-cache test paths, not\nwebtransport/back-forward-cache. The WebTransport test windows therefore ran with the\nback/forward cache disabled, so the page was never cached and the tests reported the\nassert_implements_optional precondition failure \"BFCache not supported\".\n\n2. WebTransport::cleanupContext() queued the closed/ready promise rejection with\nScriptExecutionContext::postTask(), which is not a suspendable event-loop task. When invoked\nfrom suspend() during back/forward cache entry, that task ran after the frame was detached,\nwhen the script execution context has no global object, so cleanup() early-returned and\nsilently dropped the rejection. As a result WebTransport.closed never settled after the page\nwas restored from the back/forward cache; a page with an open WebTransport connection would\nleave closed pending forever after restore.\n\nEnable the preference for the webtransport/back-forward-cache test path, and queue the cleanup\non the event loop (queueTaskKeepingObjectAlive, TaskSource::Networking) instead of\nScriptExecutionContext::postTask. This keeps the asynchronous \"queue a network task\" of the\ncontext cleanup steps (WebTransport spec section 6.7) while ensuring the task is held during\nsuspension and runs on resume, when the global object is valid again, so closed rejects after\nthe page is restored. The now-unused ScriptExecutionContext\u0026 parameter is removed.\n\nCovered by the two now-unskipped WPT tests rebaselined below.\n\n* LayoutTests/TestExpectations: Unskip the two tests.\n* LayoutTests/imported/w3c/web-platform-tests/webtransport/back-forward-cache-with-closed-webtransport-connection.https.window-expected.txt: Rebaseline to PASS.\n* LayoutTests/imported/w3c/web-platform-tests/webtransport/back-forward-cache-with-open-webtransport-connection.https.window-expected.txt: Rebaseline to PASS.\n* Source/WebCore/Modules/webtransport/WebTransport.cpp:\n(WebCore::WebTransport::suspend):\n(WebCore::WebTransport::cleanupContext):\n* Source/WebCore/Modules/webtransport/WebTransport.h:\n* Tools/TestRunnerShared/TestFeatures.cpp:\n(WTR::shouldUseBackForwardCache):\n\nCanonical link: https://commits.webkit.org/317667@main",
      "email": "basuke@apple.com",
      "hash": "1fb66e16eddacd6ead9e4c01ba6b01b647a3709d",
      "subject": "[WebTransport] WebTransport pages should be restorable from the back/forward cache"
    },
    "317668@main": {
      "author": "Chris Dumez",
      "avatar": "https://www.gravatar.com/avatar/a9f21fe3a8baf79b45f3c91572187bdc?d=identicon\u0026s=64",
      "cl": "317668@main",
      "clUrl": "https://commits.webkit.org/317668@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319881\nrdar://182244946\n\nReviewed by Brady Eidson.\n\nA WebContent process asks the network process for the messages queued on one of its\nMessagePorts via NetworkConnectionToWebProcess::takeAllMessagesForPort(). That request\ncan race with the port's channel being destroyed, or with the port being disentangled /\ntransferred to another process: existingChannelContainingPort() returns null once the\nchannel is gone, and MessagePortChannel::processForPort() returns std::nullopt while a\nport is mid-transfer or closed.\n\nBoth of these are benign races, not misbehaving WebContent processes, yet the handler\ntreated them as invalid messages via MESSAGE_CHECK_COMPLETION(). Note that\nMESSAGE_CHECK_COMPLETION() still calls markCurrentlyDispatchedMessageAsInvalid(), so it\nrequests termination of the sender; the completion handler only avoids leaving the reply\nhanging. This is easy to hit while a SharedWorker's context process is being torn down and\nrelaunched, since a takeAllMessagesForPort() may already have been dispatched from a worker\nthread (see the existing comments in MessagePort::messageAvailable() and\nWebMessagePortChannelProvider::takeAllMessagesForPort()). When it happens repeatedly, the\nnetwork process terminates each new WebContent process, the worker relaunches (its clients\nstill need it), and the loop spins fast enough that the UI process accumulates IPC::Connection\nport rights until it is killed for Mach port exhaustion.\n\nOnly take messages when the port is currently entangled to the requesting process. When the\nchannel is missing or the port is not entangled to anyone, gracefully return no messages\ninstead of terminating the sender; the queued messages remain in the channel and are\ndelivered once the port is re-entangled to its owner. Keep the terminating check strictly for\na request for a port entangled to a *different* process, which is the only genuine violation.\n\nNo new tests, I have tried writing one but wasn't successful. This is likely very timing\ndependent.\n\n* Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp:\n(WebKit::NetworkConnectionToWebProcess::takeAllMessagesForPort):\n\nCanonical link: https://commits.webkit.org/317668@main",
      "email": "cdumez@apple.com",
      "hash": "1c2e7ba25b95c9835fdbd67878c189d7906c713a",
      "subject": "NetworkConnectionToWebProcess::takeAllMessagesForPort terminates WebContent on a benign message-port race"
    },
    "317669@main": {
      "author": "Simon Fraser",
      "avatar": "https://www.gravatar.com/avatar/3763324aa0cdfa93be751c6081b8006a?d=identicon\u0026s=64",
      "cl": "317669@main",
      "clUrl": "https://commits.webkit.org/317669@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319862\nrdar://182762135\n\nReviewed by Alan Baradlay.\n\nUpstream commit: https://github.com/web-platform-tests/wpt/commit/5fed9e8740e582a1099eca1400f86671c2ba26a0\n\n* LayoutTests/TestExpectations:\n* LayoutTests/imported/w3c/web-platform-tests/images/anim-rgb.gif: Added.\n* LayoutTests/imported/w3c/web-platform-tests/images/blue-100x100.png: Added.\n* LayoutTests/imported/w3c/web-platform-tests/images/blue-100x100.svg: Added.\n* LayoutTests/imported/w3c/web-platform-tests/images/blue-100x50-transparent-100x50.png: Added.\n* LayoutTests/imported/w3c/web-platform-tests/images/blue-100x50-transparent-100x50.svg: Added.\n* LayoutTests/imported/w3c/web-platform-tests/images/checkerboard.svg: Added.\n* LayoutTests/imported/w3c/web-platform-tests/images/fyi-logo/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/images/green-100x100.png: Added.\n* LayoutTests/imported/w3c/web-platform-tests/images/green-100x100.svg: Added.\n* LayoutTests/imported/w3c/web-platform-tests/images/left-half-rectangle-50.png: Added.\n* LayoutTests/imported/w3c/web-platform-tests/images/left-half-rectangle-50.svg: Added.\n* LayoutTests/imported/w3c/web-platform-tests/images/pattern.ogv: Removed.\n* LayoutTests/imported/w3c/web-platform-tests/images/red-100x100.png: Added.\n* LayoutTests/imported/w3c/web-platform-tests/images/red-100x100.svg: Added.\n* LayoutTests/imported/w3c/web-platform-tests/images/red-green-animated.gif: Added.\n* LayoutTests/imported/w3c/web-platform-tests/images/transparent-100x50-blue-100x50.png: Added.\n* LayoutTests/imported/w3c/web-platform-tests/images/transparent-100x50-blue-100x50.svg: Added.\n* LayoutTests/imported/w3c/web-platform-tests/images/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/images/wpt-logo/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/images/wpt-pr-bot-logo/w3c-import.log:\n* LayoutTests/platform/glib/TestExpectations:\n\nCanonical link: https://commits.webkit.org/317669@main",
      "email": "simon.fraser@apple.com",
      "hash": "532efbed04c34702272ea62a2309fcdb59daceda",
      "subject": "Resync `/images` from WPT upstream"
    },
    "317670@main": {
      "author": "Anthony Tarbinian",
      "avatar": "https://www.gravatar.com/avatar/e2fb942081a29714985c48f402fa1788?d=identicon\u0026s=64",
      "cl": "317670@main",
      "clUrl": "https://commits.webkit.org/317670@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=318903\nrdar://181740350\n\nReviewed by Alex Christensen.\n\nWhen site isolation is enabled, a popup opened to about:blank by window.open() will\nshare its opener's process.\nThen, the popup navigates to another empty site which causes a process swap.\nThe bug is that after that swap, window.opener is null.\n\nThe test fast/events/before-unload-navigate-different-window.html revealed\nthis bug and is failing with site isolation enabled.\n\nThe test does the following:\n1. window.open('about:blank'). The popup stays in the opener's process.\n2. The test navigates the popup to resources/message-opener.html. This\n    is treated as a file:// URL which triggers a process swap for the popup.\n    A process swap happens because the opener's process committed a\n    meaningful load by loading the main test page (see\n    WebProcessPool::processForNavigationInternal + the hasCommittedAnyMeaningfulProvisionalLoads check)\n3. Now, we have the opener (which is a file:// empty site) and the popup\n   (which is also a file:// empty site). However, the opener and popup\n    are in different processes.\n4. WebKit sees that the two pages are same site and doesn't set up a\n    RemotePageProxy for the opener in the popup's new process. This bug\n    is in BrowsingContextGroup::addFrameProcessAndInjectPageContextIf.\n5. With no RemotePageProxy for the opener, the popup has no way of\n    accessing the opener in a different process. So, window.opener is\n    null in the test and the test can't postMessage to the opener.\n\nBrowsingContextGroup::addFrameProcessAndInjectPageContextIf decides which\nexisting pages need a RemotePageProxy created in a new process. It skipped\ncreating one for any existing page whose site matched the new process's site.\n\nIn this test case, the logic saw that the new process (popup file:// empty site)\nand the existing page (opener main test page file:// empty site) were\nsame site. As such, it assumed these two pages were in the same process\n(which is not true since the popup process-swapped). Therefore, it skipped\nadding the opener's RemotePageProxy in the popup's new process.\n\nThis patch additionally checks process identity in the case where both\nthe new process's site and the existing page's site are empty. When the\nexisting empty-site page is actually in a different process, we now\ncreate the RemotePageProxy it needs. Behavior for non-empty sites is\nunchanged (the process-identity check is only consulted for empty sites).\n\nAdded a regression test that opens an about:blank popup, navigates it\ncross-process under site isolation, and verifies the popup can still\npostMessage back via window.opener. This regression test exposed a\nGTK/WPE only assertion so I added a site isolation specific relaxation\nwhich allows a page to not have a local root frame.\n\nTest: fast/events/window-open-and-navigate-preserves-opener-under-site-isolation.html\n\n* LayoutTests/fast/events/site-isolation/window-open-and-navigate-preserves-opener-expected.txt: Added.\n* LayoutTests/fast/events/site-isolation/window-open-and-navigate-preserves-opener.html: Added.\n* Source/WebCore/page/DOMWindow.cpp:\n(WebCore::DOMWindow::crossDomainAccessErrorMessage):\n* Source/WebCore/page/Page.cpp:\n(WebCore::Page::finalizeRenderingUpdate):\n* Source/WebCore/page/Page.h:\n* Source/WebKit/UIProcess/BrowsingContextGroup.cpp:\n(WebKit::BrowsingContextGroup::addFrameProcessAndInjectPageContextIf):\n\nCanonical link: https://commits.webkit.org/317670@main",
      "email": "atar137h@gmail.com",
      "hash": "177f74567f875555ca57a01715af2ae322e2ffad",
      "subject": "[Site Isolation]  window.opener is null after a window.open() popup process-swaps to an empty site"
    },
    "317671@main": {
      "author": "Elliott Williams",
      "avatar": "https://www.gravatar.com/avatar/4086acbe078d65242df929cb51298130?d=identicon\u0026s=64",
      "cl": "317671@main",
      "clUrl": "https://commits.webkit.org/317671@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319641\n\nReviewed by Keith Miller.\n\nReplace some one-off implementations of code signing with centralized\nlogic. When building for Apple platforms, dylib and executable targets\nget a codesign task added automatically, which uses a\nglobally-controlled signing identity. They can set a\n${_target}_CODE_SIGN_ENTITLEMENTS variable to pass an entitlements plist\nto the codesign invocation.\n\nThe signing logic itself handles a few ancillary details: it filters\noutput from `codesign` to keep the build log clean when successful; on\ninternal builds, it injests some logic from WebKitAdditions to ensure\nthe \"Safari Engineering\" keychain is unlocked, and it works around a\nlongstanding bug where a codesign leaves behind *.cstemp files in the\nbuild dir when it is interrupted, breaking subsequent builds.\n\nFor framework bundle directories, signing needs to happen once after all\nthe bundle's contents are in place. For WebKit.framework in particular,\nwhich build daemons and services that must link against WebKit, extra\ndependency edges need to be added to prevent signing from happening too\nearly. WebKit sets a ${_target}_CODE_SIGN_INPUTS variable to indicate\nthese extra dependencies.\n\nFor targets which have hard-coded entitlements (e.g. WKTR), set them\nnow. JavaScriptCore has an existing wrapper for it's Xcode-based\nprocess-entitlements.sh script, which is retrofitted, although the\nwrapper is incomplete and doesn't set all the build settings needed to\nfully evaluate. WebKit's entitlement processing is much more complex and\nincludes content from WebKitAdditions. It will be configured in a\nfollow-up change.\n\n* Source/JavaScriptCore/CMakeLists.txt:\n* Source/JavaScriptCore/PlatformIOS.cmake:\n* Source/WebCore/PlatformCocoa.cmake:\n* Source/WebKit/PlatformCocoa.cmake:\n* Source/WebKitLegacy/PlatformIOS.cmake:\n* Source/cmake/OptionsCocoa.cmake:\n* Source/cmake/WebKitMacros.cmake:\n* Source/cmake/WebKitXcodeSDK.cmake:\n* Tools/DumpRenderTree/PlatformMac.cmake:\n* Tools/MiniBrowser/mac/CMakeLists.txt:\n* Tools/WebKitTestRunner/PlatformMac.cmake:\n\nCanonical link: https://commits.webkit.org/317671@main",
      "email": "emw@apple.com",
      "hash": "41115cd8a3fd26adecce6678fe4dd6eed2f990df",
      "subject": "[CMake] Centralize code signing and add missing entitlements"
    },
    "317672@main": {
      "author": "Alan Baradlay",
      "avatar": "https://www.gravatar.com/avatar/788d66417db806c567552cfa1ae89f77?d=identicon\u0026s=64",
      "cl": "317672@main",
      "clUrl": "https://commits.webkit.org/317672@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319866\n\nReviewed by Antti Koivisto.\n\nRenderFlexibleBox reached its children through an OrderIterator: a stateful iterator\nthat re-walked the container's live children (sorted by the used 'order' value) on\ndemand, every time paint, hit-testing, the flex formatting context, or a baseline\nquery needed them. Reversed traversal was expressed by walking the child stream from\nthe back, which had no notion of flex lines.\n\nReplace it with a list built once per layout: a Vector\u003cSingleThreadWeakPtr\u003cRenderBox\u003e\u003e\nof the container's in-flow flex items in order-modified document order (a stable sort by\nthe used 'order' value, so document order breaks ties), rebuilt in\nprepareFlexItemsAndMargins (renamed from prepareOrderIteratorAndMargins). The pointers\nare weak because painting/hit-testing/baseline queries read the list after layout, when\na child may have been removed; out-of-flow and excluded children are not flex items and\nare left out, so the shared shouldSkipChild predicate is applied once, at build time,\nrather than by every consumer.\n\nAll consumers now read this list: paintChildren, hitTestChildren (iterating the list in\nreverse instead of building an ad-hoc reversed Vector), appendFlexItemBorderBoxRects,\nrepaintFlexItemsDuringLayoutIfMoved, the integration's collectFlexItems and baseline\ncandidate selection, and InspectorOverlay. Out-of-flow static-position preparation, which\nused to piggyback on the iterator walk, moves to its own document-order child walk in\ncollectFlexItems (it does not depend on flex order). OrderIterator itself is unchanged and\nstill used by RenderGrid.\n\nNo new tests: no intended behavior change (the list reproduces the iterator's\norder-modified document order, and reversed iteration is the list reversed).\n\n* Source/WebCore/rendering/RenderFlexibleBox.h:\n* Source/WebCore/rendering/RenderFlexibleBox.cpp:\n(WebCore::RenderFlexibleBox::shouldSkipChild):\n(WebCore::RenderFlexibleBox::hitTestChildren):\n(WebCore::RenderFlexibleBox::paintChildren):\n(WebCore::RenderFlexibleBox::appendFlexItemBorderBoxRects):\n(WebCore::RenderFlexibleBox::repaintFlexItemsDuringLayoutIfMoved):\n(WebCore::RenderFlexibleBox::prepareFlexItemsAndMargins):\n(WebCore::RenderFlexibleBox::layoutBlock):\n(WebCore::RenderFlexibleBox::prepareOrderIteratorAndMargins): Deleted.\n* Source/WebCore/layout/integration/flex/LayoutIntegrationFlexLayout.h:\n* Source/WebCore/layout/integration/flex/LayoutIntegrationFlexLayout.cpp:\n(WebCore::LayoutIntegration::FlexLayout::collectFlexItems):\n(WebCore::LayoutIntegration::FlexLayout::firstBaselineCandidateOnLine):\n(WebCore::LayoutIntegration::FlexLayout::lastBaselineCandidateOnLine):\n(WebCore::LayoutIntegration::FlexLayout::flexItemForFirstBaseline const):\n(WebCore::LayoutIntegration::FlexLayout::flexItemForLastBaseline const):\n(WebCore::LayoutIntegration::FlexLayout::firstBaselineCandidateOnLine const):\n(WebCore::LayoutIntegration::FlexLayout::lastBaselineCandidateOnLine const):\n* Source/WebCore/inspector/InspectorOverlay.cpp:\n(WebCore::rendererIsFlexboxItem):\n(WebCore::InspectorOverlay::buildFlexOverlay):\n\nCanonical link: https://commits.webkit.org/317672@main",
      "email": "zalan@apple.com",
      "hash": "d2ad48527784e03cfd44768050bde95694754526",
      "subject": "[Flexbox] Replace RenderFlexibleBox's OrderIterator with an ordered flex item list built once per layout"
    },
    "317673@main": {
      "author": "Megan Gardner",
      "avatar": "https://www.gravatar.com/avatar/b466a5bcbfabf4d82a8ecc595db5a531?d=identicon\u0026s=64",
      "cl": "317673@main",
      "clUrl": "https://commits.webkit.org/317673@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319858\nrdar://182757292\n\nReviewed by Jessica Cheung, Abrar Rahman Protyasha, and Wenson Hsieh.\n\n::selection text-decoration was never painted — the Selection marked-text path set fill/stroke/background but never\napplied the ::selection pseudo's decoration, and even once applied the coalesce step dropped it because its\ndecoration-combine was gated to custom highlights only. Factor the pseudo decoration resolution into a helper,\napply it for ::selection using selectionPseudoStyle(), and extend coalesceAdjacentWithSameRanges to combine decorations\nfor the selection overlay too (it's the topmost highlight), so ::selection underline/overline/line-through paint.\nRecoloring an originating currentColor decoration to the selection color is a separate follow-up.\n\nimported/w3c/web-platform-tests/css/css-highlight-api/painting/custom-highlight-font-metrics-003.html\n\n* LayoutTests/TestExpectations:\n* LayoutTests/platform/ios/TestExpectations:\n* Source/WebCore/rendering/StyledMarkedText.cpp:\n(WebCore::computeDecorationStylesForPseudoElementStyle):\n(WebCore::computeStyleForPseudoElementStyle):\n(WebCore::resolveStyleForMarkedText):\n(WebCore::coalesceAdjacentWithSameRanges):\n\nCanonical link: https://commits.webkit.org/317673@main",
      "email": "megan_gardner@apple.com",
      "hash": "453693ef5539c7c4ec3358690a8960c412277924",
      "subject": "[Custom Highlight] ::selection text-decoration is not painted."
    },
    "317674@main": {
      "author": "Sammy Gill",
      "avatar": "https://www.gravatar.com/avatar/715a3cfee5d85ee90ccfdaa2a4a7a5a3?d=identicon\u0026s=64",
      "cl": "317674@main",
      "clUrl": "https://commits.webkit.org/317674@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319914\nrdar://problem/182834140\n\nReviewed by Elika Etemad.\n\nhttps://drafts.csswg.org/css-grid-1/#grid-item-sizing\n\nHere we implement the case where we have a non-replaced element without\na preferred aspect ratio and an alignment that is not normal or stretch.\nIn this case the automatic size for that grid item is the fit-content\nsize. We can simply expand the preferred size functions to detect this,\ncompute each of the sizes that goes into the fit-content size, and then\nreturn the result.\n\n* Source/WebCore/layout/formattingContexts/grid/GridLayoutUtils.cpp:\n(WebCore::Layout::GridLayoutUtils::stretchFitSize):\nThis is a pretty common operation at this point that is used in a few\ndifferent scenarios so we might as well move it over to a helper\nfunction.\n\n(WebCore::Layout::GridLayoutUtils::stretchedBlockSize): Deleted.\nFolded into the generic stretch fit size function since the logic is the\nsame for both inline and block version.\n\n* Source/WebCore/layout/integration/LayoutIntegrationUtils.cpp:\n(WebCore::Layout::IntegrationUtils::maxContentWidth const):\nWe already used the respective minContentWidth integration function to\nget the min content width of a grid item so now that we do the same with\nthe max content width we need to update this assert.\n\n(WebCore::Layout::blockSizeForGridItem):\n(WebCore::Layout::IntegrationUtils::maxContentHeightForGridItem const):\n* Source/WebCore/layout/integration/LayoutIntegrationUtils.h:\nThis new integration API mirrors the one that we have to get the min\ncontent height for a grid item. This ends up calling into\nblockSizeForGridItem with the type of height we are querying for the\ngrid item.\n\nCanonical link: https://commits.webkit.org/317674@main",
      "email": "sammy.gill@apple.com",
      "hash": "25f9a54701a9457c5acfc8347221a0297a06ba1b",
      "subject": "[GFC] Implement fit-content sizing for non-replaced elements."
    },
    "317675@main": {
      "author": "Zak Ridouh",
      "avatar": "https://www.gravatar.com/avatar/d9b65ef530b9cbbfc6dff1ca158faace?d=identicon\u0026s=64",
      "cl": "317675@main",
      "clUrl": "https://commits.webkit.org/317675@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319931\nrdar://182855273\n\nReviewed by Megan Gardner and Alex Christensen.\n\nUnder site isolation a cross-origin subframe loads in its own web process. The\nper-navigation website policies chosen in the UI process (WKWebpagePreferences,\ne.g. allowsJSHandleCreationInPageWorld) were never delivered to that process:\ncontinueNavigationInNewProcess built the subframe's LoadParameters without\nwebsitePolicies, and even when present WebPage::createDocumentLoader only applied\npending website policies to the main frame. As a result the policies were silently\ndropped for cross-origin subframes, unlike without site isolation where the\nsubframe's own DocumentLoader receives them via the navigation policy decision.\n\nOne user-visible consequence: window.webkit.createJSHandle (gated by the\nallowsJSHandleCreationInPageWorld page-world policy) was undefined in cross-origin\nsubframes, which breaks testRunner.runUIScript()/UIHelper when called from a\nsubframe under site isolation.\n\nTest: Tools/TestWebKitAPI/Tests/WebKit/WKWebView/SiteIsolation.mm\n\n* Source/WebKit/UIProcess/WebPageProxy.cpp:\n(WebKit::WebPageProxy::continueNavigationInNewProcess):\n* Source/WebKit/WebProcess/WebPage/WebPage.cpp:\n(WebKit::WebPage::createDocumentLoader):\n* Tools/TestWebKitAPI/Tests/WebKit/WKWebView/SiteIsolation.mm:\n(TestWebKitAPI::(SiteIsolation, WebsitePoliciesAppliedToCrossOriginSubframeDocumentLoader)):\n\nCanonical link: https://commits.webkit.org/317675@main",
      "email": "zakr@apple.com",
      "hash": "1183bebc8967b3cda38776fe26c3e31a4fe240b8",
      "subject": "[Site Isolation] Apply per-navigation website policies to cross-origin subframe document loaders"
    },
    "317676@main": {
      "author": "Anuj Panta",
      "avatar": "https://www.gravatar.com/avatar/f795b7daddea5f93c9cbb5a4a8f0db14?d=identicon\u0026s=64",
      "cl": "317676@main",
      "clUrl": "https://commits.webkit.org/317676@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319605\nrdar://182434202\n\nReviewed by Qianlang Chen.\n\nPage.getResourceContent was a stub under Site Isolation, breaking the\nResources tab fallback content path for cross-origin frames (their document\nand cached subresources live in another WebContent process). Implement it by\nfetching the bytes from the frame's hosting process over IPC.\n\n- Page.json: flip getResourceContent to async (a cross-process reply needs a\ncallback); convert the in-process InspectorPageAgent to the callback form.\n- New GetFrameResourceContent IPC + WebInspectorBackend handler: serve the\ncommitted main document (exact url match) else a cached subresource by url --\nthe same two-step lookup as ResourceUtilities::resourceContent, composed from\nexported primitives (resourceContent itself isn't WEBCORE_EXPORT).\n- ProxyingPageAgent::getResourceContent: parse the process-qualified frameId,\nroute to the hosting process, fail cleanly on every error path.\n- parseProtocolFrameId: validate raw values before constructing identifiers so\na malformed frameId is a parse failure, not a UIProcess crash.\n- Resource.js: route the getResourceContent fallback through WI.backendTarget\nunder Site Isolation (the in-process page target can't reach a remote frame);\nunchanged without Site Isolation.\n- Add a Site Isolation layout test (child document, subresource, main-frame\ndocument, invalid frameId, missing resource).\n\nTest: http/tests/site-isolation/inspector/page/resource-content-cross-origin-iframe.html\n\n* LayoutTests/http/tests/site-isolation/inspector/page/resource-content-cross-origin-iframe-expected.txt: Added.\n* LayoutTests/http/tests/site-isolation/inspector/page/resource-content-cross-origin-iframe.html: Added.\n* LayoutTests/http/tests/site-isolation/inspector/page/resources/resource-content-subframe-style.css: Added.\n(body):\n* LayoutTests/http/tests/site-isolation/inspector/page/resources/resource-content-subframe.html: Added.\n* Source/JavaScriptCore/inspector/protocol/Page.json:\n* Source/WebCore/inspector/InspectorIdentifierRegistry.h:\n(Inspector::IdentifierRegistry::parseProtocolFrameId):\n* Source/WebCore/inspector/agents/InspectorPageAgent.cpp:\n(WebCore::InspectorPageAgent::getResourceContent):\n* Source/WebCore/inspector/agents/InspectorPageAgent.h:\n* Source/WebInspectorUI/UserInterface/Controllers/NetworkManager.js:\n(WI.NetworkManager.prototype.initializeTarget):\n(WI.NetworkManager.prototype.get enabledPageForSiteIsolation):\n* Source/WebInspectorUI/UserInterface/Models/Resource.js:\n(WI.Resource.prototype.requestContentFromBackend):\n* Source/WebKit/UIProcess/Inspector/Agents/ProxyingPageAgent.cpp:\n(Inspector::ProxyingPageAgent::getResourceContent):\n* Source/WebKit/UIProcess/Inspector/Agents/ProxyingPageAgent.h:\n* Source/WebKit/WebProcess/Inspector/WebInspectorBackend.cpp:\n(WebKit::WebInspectorBackend::getFrameResourceContent):\n* Source/WebKit/WebProcess/Inspector/WebInspectorBackend.h:\n* Source/WebKit/WebProcess/Inspector/WebInspectorBackend.messages.in:\n\nCanonical link: https://commits.webkit.org/317676@main",
      "email": "a_panta@apple.com",
      "hash": "1663a8831d14cd4ef327591402996ff061d3c91c",
      "subject": "Web Inspector: [SI] implement Page.getResourceContent under Site Isolation"
    },
    "317677@main": {
      "author": "Phinehas Fuachie",
      "avatar": "https://www.gravatar.com/avatar/900d85de8c325e38975f39115c36bb75?d=identicon\u0026s=64",
      "cl": "317677@main",
      "clUrl": "https://commits.webkit.org/317677@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319554\nrdar://150329731\n\nReviewed by Alex Christensen.\n\nWith site isolation, entering fullscreen from a cross-origin \u003ciframe\u003e dispatched two resize events\ninstead of one. The iframe's child process creates its LocalFrameView at the viewport size (its\ntrue size isn't known yet) and records that as the resize baseline. When the real size later\narrives from the frame-owning process, setFrameRect schedules a spurious resize; fullscreen then\nfires the second. A same-process iframe never sees this because its view starts at the correct\nsize.\n\nTreat the first frame rect delivered from the frame-owning process as establishing the baseline\nrather than a change: prime LocalFrameView's resize baseline to the incoming size before\nsetFrameRect, so the correction is absorbed while later size changes (fullscreen, script, layout)\nstill fire normally.\n\nAnd this fix makes TEST(SiteIsolation, DISABLED_Events) deterministic.\n\n* LayoutTests/http/tests/site-isolation/fullscreen-resize-event-expected.txt: Added.\n* LayoutTests/http/tests/site-isolation/fullscreen-resize-event.html: Added.\n* LayoutTests/http/tests/site-isolation/resources/fullscreen-resize-event.html: Added.\n* Source/WebCore/page/LocalFrameView.cpp:\n(WebCore::LocalFrameView::primeResizeEventBaseline):\n* Source/WebCore/page/LocalFrameView.h:\n* Source/WebKit/WebProcess/WebPage/WebFrame.cpp:\n(WebKit::WebFrame::createProvisionalFrame):\n(WebKit::WebFrame::updateFrameRectFromRemote):\n(WebKit::WebFrame::updateLocalFrameRect):\n* Source/WebKit/WebProcess/WebPage/WebFrame.h:\n(WebKit::WebFrame::consumeIsInitialFrameRect):\n* TestExpectations/apitests:\n* Tools/TestWebKitAPI/Tests/WebKit/WKWebView/SiteIsolation.mm:\n(TestWebKitAPI::(SiteIsolation, Events)):\n(TestWebKitAPI::(SiteIsolation, DISABLED_Events)): Deleted.\n\nCanonical link: https://commits.webkit.org/317677@main",
      "email": "pfuachie2@apple.com",
      "hash": "38e88737aa9734bff86b0807f2ef751b73900477",
      "subject": "[Site Isolation] Remove extra resize event when entering fullscreen with site isolation on"
    },
    "317678@main": {
      "author": "Ithril",
      "avatar": "https://www.gravatar.com/avatar/fe2334cb59663d7d45fdcb65e19cc89e?d=identicon\u0026s=64",
      "cl": "317678@main",
      "clUrl": "https://commits.webkit.org/317678@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319663\n\nReviewed by Yusuke Suzuki.\n\nICU derived Gregorian calendars retain a Julian-to-Gregorian cutover that cannot be disabled. Use an unconditional ISO year for Japanese dates, keep pre-1873 aggregate fields proleptic Gregorian, and construct year-only and named-era property bags with Gregorian arithmetic. Named eras derive the arithmetic ISO year from checked era metadata while retaining canonical era and eraYear output at modern transitions.\n\nRoute ROC and Buddhist Gregorian-arithmetic fields through deterministic ISO date fields and checked fixed-year offsets so getters, property bags, with(), overflow handling, PlainMonthDay reference dates, and boundary round trips agree across historical dates.\n\nTest: JSTests/stress/temporal-calendar-icu-bridge-non-iso.js\n\n* JSTests/stress/temporal-calendar-icu-bridge-non-iso.js:\n  - Cover Japanese ISO-year and named-era construction, historical Gregorian overflow, modern transitions, PlainMonthDay reference dates, and ROC/Buddhist checked-offset boundaries.\n* JSTests/stress/temporal-japanese-ce-bce-era-validation.js:\n  - Update the year-zero assertion for unconditional Japanese ISO-year behavior.\n* Source/JavaScriptCore/runtime/temporal/core/CalendarICUBridge.cpp:\n  - Use coherent proleptic-Gregorian field and construction paths for Japanese, ROC, and Buddhist calendars.\n\nCanonical link: https://commits.webkit.org/317678@main",
      "email": "ithril.laydec@gmail.com",
      "hash": "8ccbe522e1f14bc3356a6124fa05b7e53a5f723c",
      "subject": "[JSC][Temporal] Fix Japanese, ROC, and Buddhist calendar fields"
    },
    "317679@main": {
      "author": "Alex Christensen",
      "avatar": "https://www.gravatar.com/avatar/b087c5dfcb1233e80cad9105fd5a1ac6?d=identicon\u0026s=64",
      "cl": "317679@main",
      "clUrl": "https://commits.webkit.org/317679@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319926\nrdar://182852612\n\nReviewed by Basuke Suzuki.\n\nThis required a few things to get right:\n1. We need to be able to get stats after a connection has closed, so we can't null out m_session\n   because that's our only way to communicate with the network process.  We need to keep it non-null\n   and use m_state for any JS-visible early returns.  I audited use of m_session to make sure\n   that the early returns from m_session being null are not JS-visible.\n2. getStats can be called before the WebTransport session has been initialized over the network.\n   To implement this, I added a Vector\u003cCompletionHandler\u003e on NetworkTransportSession to keep the\n   completion handlers that we receive before initialization has completed.\n3. I keep some more statistics on NetworkTransportSession to be able to provide stats that we can\n   keep without asking the networking implementation to provide more stats, which hasn't been implemented\n   yet.  The trickiest one was m_initializationTime which is the amount of time it took to initialize\n   over the network, which is the one API call we have that we know did a roundtrip over the network.\n   I use this as the basis for my bad implementation of rtt stats, to be improved upon once we have\n   support in Network.framework.\n4. When network setup fails, we need to fail any stats requests we've already received before it failed\n   with DOMException.INVALID_STATE_ERR.  To make this possible, I need to change the promised async\n   return type from WebTransportConnectionInfo to std::optional\u003cWebTransportConnectionInfo\u003e to handle failure.\n\n* LayoutTests/imported/w3c/web-platform-tests/webtransport/stats.https.any-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/webtransport/stats.https.any.serviceworker-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/webtransport/stats.https.any.sharedworker-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/webtransport/stats.https.any.worker-expected.txt:\n* Source/WebCore/Modules/webtransport/WebTransport.cpp:\n(WebCore::WebTransport::initializeOverHTTP):\n(WebCore::WebTransport::WebTransport):\n(WebCore::WebTransport::receiveIncomingUnidirectionalStream):\n(WebCore::WebTransport::receiveBidirectionalStream):\n(WebCore::WebTransport::getStats):\n(WebCore::WebTransport::cleanupContext):\n(WebCore::WebTransport::close):\n(WebCore::WebTransport::cleanup):\n* Source/WebKit/NetworkProcess/webtransport/NetworkTransportSession.cpp:\n(WebKit::NetworkTransportSession::~NetworkTransportSession):\n(WebKit::NetworkTransportSession::receiveDatagram):\n(WebKit::NetworkTransportSession::destroyStream):\n(WebKit::NetworkTransportSession::getSendGroupStats):\n(WebKit::NetworkTransportSession::getStats):\n(WebKit::NetworkTransportSession::completeStatsRequestsAfterInitialization):\n* Source/WebKit/NetworkProcess/webtransport/NetworkTransportSession.h:\n* Source/WebKit/NetworkProcess/webtransport/NetworkTransportSession.messages.in:\n* Source/WebKit/NetworkProcess/webtransport/NetworkTransportStream.h:\n(WebKit::NetworkTransportStream::bytesSent const):\n(WebKit::NetworkTransportStream::bytesReceived const):\n* Source/WebKit/NetworkProcess/webtransport/cocoa/NetworkTransportSessionCocoa.mm:\n(WebKit::NetworkTransportSession::initialize):\n(WebKit::NetworkTransportSession::sendDatagram):\n(WebKit::NetworkTransportSession::getStats): Deleted.\n* Source/WebKit/WebProcess/Network/WebTransportSession.cpp:\n(WebKit::WebTransportSession::getStats):\n\nCanonical link: https://commits.webkit.org/317679@main",
      "email": "achristensen@apple.com",
      "hash": "a4b377ac567badb50a448d4ff2f7039a9e788107",
      "subject": "Begin implementing WebTransport.getStats"
    },
    "317680@main": {
      "author": "Alan Baradlay",
      "avatar": "https://www.gravatar.com/avatar/788d66417db806c567552cfa1ae89f77?d=identicon\u0026s=64",
      "cl": "317680@main",
      "clUrl": "https://commits.webkit.org/317680@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319896\n\nReviewed by Antti Koivisto.\n\nA flex container's first/last baseline comes from a single baseline flex item: the item\nnearest the visual start of the visually-first flex line (first baseline) or the visual end\nof the visually-last line (last baseline). \"Which end\" is decided by two orthogonal CSS\nflips: flex-wrap: wrap-reverse flips which line is visually first, and flex-direction:\n*-reverse flips which item within a line is visually first.\n\nSelecting that item used a 2x2x2 matrix: flexItemForFirstBaseline / flexItemForLastBaseline\neach branched on wrap-reverse and direction-reverse and dispatched to one of two helpers\n(firstBaselineCandidateOnLine / lastBaselineCandidateOnLine), which walked the whole flat\nchild stream from the front or back and counted numberOfItemsOn{First,Last}Line to reach a\nline. That contortion was a leftover from the order iterator, which had no notion of flex\nlines.\n\nNow that RenderFlexibleBox exposes its flex items as an ordered list (bug 319866), a flex\nline is just a contiguous slice of it: [0, firstCount) or [size - lastCount, size). So the\nwhole thing collapses to one helper, baselineFlexItemInLine(lineStart, itemCount, reverse),\nwhich scans that slice in the given direction and returns the first item participating in\nbaseline alignment (baseline self-alignment, main axis is the item's inline axis, no auto\ncross-axis margins), or the first item scanned when none participate. firstBaseline picks\nits line via wrap-reverse and scans reversed for a reversed main axis; lastBaseline picks\nthe opposite line and scans the opposite direction.\n\nNo new tests: no behavior change (the single helper reproduces the two old helpers, which\ndiffered only in scan direction, and all eight wrap-reverse x direction-reverse x first/last\ncombinations map to the same line slice and scan direction).\n\n* Source/WebCore/layout/integration/flex/LayoutIntegrationFlexLayout.h:\n* Source/WebCore/layout/integration/flex/LayoutIntegrationFlexLayout.cpp:\n(WebCore::LayoutIntegration::FlexLayout::flexItemForFirstBaseline):\n(WebCore::LayoutIntegration::FlexLayout::flexItemForLastBaseline):\n(WebCore::LayoutIntegration::FlexLayout::baselineFlexItemInLine):\n(WebCore::LayoutIntegration::FlexLayout::firstBaselineCandidateOnLine): Deleted.\n(WebCore::LayoutIntegration::FlexLayout::lastBaselineCandidateOnLine): Deleted.\n\nCanonical link: https://commits.webkit.org/317680@main",
      "email": "zalan@apple.com",
      "hash": "484cad986f48892c25124372b4c78cde7c7b6ec1",
      "subject": "[cleanup] Simplify flex baseline item selection to a single per-line scan"
    },
    "317681@main": {
      "author": "David Kilzer",
      "avatar": "https://www.gravatar.com/avatar/e228ffc7a792e70bf2d160563c18dcc6?d=identicon\u0026s=64",
      "cl": "317681@main",
      "clUrl": "https://commits.webkit.org/317681@main",
      "description": "\u003chttps://bugs.webkit.org/show_bug.cgi?id=319772\u003e\n\u003crdar://182630802\u003e\n\nUnreviewed test fix.\n\nIn test-parallel-safety mode every supplied test is dispatched as a\nrepeat=True task so it runs continuously to surface parallelization\nproblems.  A gtest test whose method name is prefixed with DISABLED_\nnever executes, so its iteration returns immediately having done no\nwork.  Repeating an instant no-op spins as fast as the CPU allows,\nemitting one \"Disabled\" status line per iteration until the log limit\ntrips and the run is killed, so any modified-test set that includes a\ndisabled test can never complete.\n\nPartition disabled tests out of the repeat set before dispatch and log\nwhich ones were skipped.  A disabled test carries no parallel-safety\nsignal, so excluding it loses nothing.  Detect them with a shared\n`_is_disabled_test()` helper that the per-run check in `_run_single_test`\nalso uses, so the two paths cannot disagree on what \"disabled\" means.\n\nTests: Added unit tests covering disabled-test detection and the\npartitioning helper.\n\n* Tools/Scripts/webkitpy/api_tests/runner.py:\n(Runner._is_disabled_test): Add.\n(Runner._partition_parallel_safety_tests): Add.\n(Runner.run):\n(_Worker._run_single_test):\n* Tools/Scripts/webkitpy/api_tests/runner_unittest.py: Add.\n(RunnerTest.test_is_disabled_test_detects_disabled_method): Add.\n(RunnerTest.test_is_disabled_test_allows_enabled_test): Add.\n(RunnerTest.test_parallel_safety_tests_excludes_disabled): Add.\n(RunnerTest.test_partition_keeps_all_enabled_tests): Add.\n\nCanonical link: https://commits.webkit.org/317681@main",
      "email": "ddkilzer@apple.com",
      "hash": "89a5bd3e4c0e63659094e0be2104bf3b3faba224",
      "subject": "run-api-tests --test-parallel-safety never terminates and emits unbounded output when a DISABLED_ test is in the test list"
    },
    "317682@main": {
      "author": "Lauro Moura",
      "avatar": "https://www.gravatar.com/avatar/6157f52d61e04c2c63fe7ff668ba69b3?d=identicon\u0026s=64",
      "cl": "317682@main",
      "clUrl": "https://commits.webkit.org/317682@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319949\n\nUnreviewed test gardening.\n\n* LayoutTests/platform/glib/TestExpectations:\n* LayoutTests/platform/gtk/TestExpectations:\n\nCanonical link: https://commits.webkit.org/317682@main",
      "email": "lmoura@igalia.com",
      "hash": "4c4055cee103be2edd41e32179ddc364df9882fa",
      "subject": "REGRESSION(317427@main) [GLIB] wheel/pointer-lock/swipe layout tests crashing"
    },
    "317683@main": {
      "author": "Lauro Moura",
      "avatar": "https://www.gravatar.com/avatar/6157f52d61e04c2c63fe7ff668ba69b3?d=identicon\u0026s=64",
      "cl": "317683@main",
      "clUrl": "https://commits.webkit.org/317683@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319955\n\nUnreviewed test gardening.\n\n* Tools/TestWebKitAPI/glib/TestExpectations.json:\n\nCanonical link: https://commits.webkit.org/317683@main",
      "email": "lmoura@igalia.com",
      "hash": "f0b9e080c652da302ee54944efdf04d73566d5aa",
      "subject": "REGRESSION(317506@main) [GTK] TestMultiprocess:/webkit/WebKitWebContext/process-per-web-view API test is timing out"
    },
    "317684@main": {
      "author": "Lauro Moura",
      "avatar": "https://www.gravatar.com/avatar/6157f52d61e04c2c63fe7ff668ba69b3?d=identicon\u0026s=64",
      "cl": "317684@main",
      "clUrl": "https://commits.webkit.org/317684@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319950\n\nUnreviewed test gardening.\n\n* LayoutTests/platform/glib/TestExpectations:\n\nCanonical link: https://commits.webkit.org/317684@main",
      "email": "lmoura@igalia.com",
      "hash": "9b7d6baa26f90e58aa2ecb7c0effc4ca145d3a1a",
      "subject": "REGRESSION(317211@main) [GLIB] imported/w3c/web-platform-tests/css/css-pseudo/marker-hit-testing.html is failing"
    },
    "317685@main": {
      "author": "Lauro Moura",
      "avatar": "https://www.gravatar.com/avatar/6157f52d61e04c2c63fe7ff668ba69b3?d=identicon\u0026s=64",
      "cl": "317685@main",
      "clUrl": "https://commits.webkit.org/317685@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=318634\n\nUnreviewed test gardening.\n\n* LayoutTests/platform/glib/TestExpectations:\n\nCanonical link: https://commits.webkit.org/317685@main",
      "email": "lmoura@igalia.com",
      "hash": "a5e7e6ba3dd1d9290f0b93470f57b57e09df61e3",
      "subject": "[GLIB] test ipc/loadping-firstpartyforcookies-message-check.html is failing since added"
    },
    "317686@main": {
      "author": "Lauro Moura",
      "avatar": "https://www.gravatar.com/avatar/6157f52d61e04c2c63fe7ff668ba69b3?d=identicon\u0026s=64",
      "cl": "317686@main",
      "clUrl": "https://commits.webkit.org/317686@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319953\n\nUnreviewed test gardening.\n\n* LayoutTests/platform/wpe/TestExpectations:\n\nCanonical link: https://commits.webkit.org/317686@main",
      "email": "lmoura@igalia.com",
      "hash": "d2429789d088503a4b0cae4d4383e6d47b2e16b5",
      "subject": "[WPE] imported/w3c/web-platform-tests/pointerevents/pointerevent_touch-action-mouse.html is failing on arm64 bots since unskipped in 317551@main"
    },
    "317687@main": {
      "author": "Tim Nguyen",
      "avatar": "https://www.gravatar.com/avatar/208c05ac2decdf818a4a08ada568328e?d=identicon\u0026s=64",
      "cl": "317687@main",
      "clUrl": "https://commits.webkit.org/317687@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=245626\nrdar://100364547\n\nReviewed by Abrar Rahman Protyasha.\n\n`color: text` is non standard, and is equivalent to CanvasText. WebKit is the only browser engine that supports it.\n\nReject it at parse-time behind a linked on or after check for Cocoa platforms for backwards compat with apps, remove entire support for other platforms.\n\n* LayoutTests/css-dark-mode/color-scheme-css.html:\n* LayoutTests/css-dark-mode/color-scheme-meta.html:\n* LayoutTests/css-dark-mode/color-scheme-priority.html:\n* LayoutTests/css-dark-mode/older-syntax/supported-color-schemes-css.html:\n* LayoutTests/css-dark-mode/older-syntax/supported-color-schemes-meta.html:\n* LayoutTests/css-dark-mode/older-systems/color-scheme-css.html:\n* LayoutTests/css-dark-mode/older-systems/color-scheme-meta.html:\n* LayoutTests/css-dark-mode/older-systems/prefers-color-scheme.html:\n* LayoutTests/css-dark-mode/prefers-color-scheme.html:\n* LayoutTests/css3/color-filters/color-filter-ignore-semantic-expected.html:\n* LayoutTests/css3/color-filters/color-filter-ignore-semantic.html:\n* LayoutTests/fast/css/color-text-value-not-supported-expected.txt: Added.\n* LayoutTests/fast/css/color-text-value-not-supported.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/parsing/background-computed-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/parsing/background-shorthand-serialization-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/parsing/background-valid-expected.txt:\n* Source/WTF/wtf/cocoa/RuntimeApplicationChecksCocoa.h:\n* Source/WebCore/css/values/color/CSSKeywordColor.cpp:\n(WebCore::CSS::isSystemColorKeyword):\n(WebCore::CSS::isDeprecatedSystemColorKeyword):\n* Source/WebCore/rendering/RenderTheme.cpp:\n(WebCore::RenderTheme::systemColor const):\n* Source/WebCore/rendering/adwaita/RenderThemeAdwaita.cpp:\n(WebCore::RenderThemeAdwaita::systemColor const):\n* Websites/bugs.webkit.org/PrettyPatch/PrettyPatch.rb:\n\nCanonical link: https://commits.webkit.org/317687@main",
      "email": "ntim@apple.com",
      "hash": "dc0028a55f2826bd4dbcda47cd2160e65f682e34",
      "subject": "Remove `text` value for CSS colors"
    },
    "317688@main": {
      "author": "Lauro Moura",
      "avatar": "https://www.gravatar.com/avatar/6157f52d61e04c2c63fe7ff668ba69b3?d=identicon\u0026s=64",
      "cl": "317688@main",
      "clUrl": "https://commits.webkit.org/317688@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319956\n\nUnreviewed test gardening.\n\n* LayoutTests/platform/glib/TestExpectations:\n\nCanonical link: https://commits.webkit.org/317688@main",
      "email": "lmoura@igalia.com",
      "hash": "374a50de1e1db1b70eb11a8dd9f85dac8235a5cf",
      "subject": "REGRESSION(317669@main) [GLIB] some createImageBitmap tests are failing after WPT resync with Unhandled rejection"
    },
    "317689@main": {
      "author": "Tyler Wilcock",
      "avatar": "https://www.gravatar.com/avatar/9545082e6bed96158a9f52dac6e4b869?d=identicon\u0026s=64",
      "cl": "317689@main",
      "clUrl": "https://commits.webkit.org/317689@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319899\nrdar://182818999\n\nReviewed by Dominic Mazzoni and Chris Fleizach.\n\nAXPrimaryScreenHeight was reported as 0 for any frame whose isolated tree was\nbuilt by the AXObjectCache constructor's build timer, causing VoiceOver to render\nthe cursor and element bounds vertically mirrored for every element in that frame.\n\nPrimary-screen-rect initialization -- and the initial object-region paint that\ncaches per-object rects -- lived only in AXObjectCache::getOrCreateIsolatedTree().\n317449@main added a second build path: the AXObjectCache constructor arms a timer\nthat runs buildIsolatedTree() -\u003e AXIsolatedTree::create() directly, bypassing\ngetOrCreateIsolatedTree() and thus both setup steps. After a navigation (and for\nevery reloaded or inserted iframe, which gets a fresh AXObjectCache) the tree was\nbuilt with an uninitialized primary screen rect, so\nAXIsolatedObject::primaryScreenRect() returned an empty rect and\nAXPrimaryScreenHeight came back as 0.\n\nMove both setup steps into AXObjectCache::initializeIsolatedTreeGeometry() and\ninvoke it from AXIsolatedTree::create() and createEmpty(), which every build path\nfunnels through, so the initialization can no longer be skipped.\n\n* LayoutTests/accessibility/mac/primary-screen-height-iframe-expected.txt: Added.\n* LayoutTests/accessibility/mac/primary-screen-height-iframe.html: Added.\n* Source/WebCore/accessibility/AXObjectCache.cpp:\n(WebCore::AXObjectCache::getOrCreateIsolatedTree):\n(WebCore::AXObjectCache::initializeIsolatedTreeGeometry):\n* Source/WebCore/accessibility/AXObjectCache.h:\n* Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.cpp:\n(WebCore::AXIsolatedTree::createEmpty):\n(WebCore::AXIsolatedTree::create):\n\nCanonical link: https://commits.webkit.org/317689@main",
      "email": "tyler_w@apple.com",
      "hash": "46b3fcfd6171a66e90ca9cb410f9a3f3f5926426",
      "subject": "AX: VoiceOver cursor vertically mirrored for frames whose isolated tree is built by the AXObjectCache constructor timer"
    },
    "317690@main": {
      "author": "Tyler Wilcock",
      "avatar": "https://www.gravatar.com/avatar/9545082e6bed96158a9f52dac6e4b869?d=identicon\u0026s=64",
      "cl": "317690@main",
      "clUrl": "https://commits.webkit.org/317690@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319937\nrdar://182309307\n\nReviewed by Dominic Mazzoni and Chris Fleizach.\n\nWhen accessibility relations are rebuilt, updateRelationsIfNeeded() iterates\nm_elementsWithRelationAttributes, which can hold detached elements. For an origin\nthat is not in a tree scope, Element::elementsArrayForAttributeInternal() cannot\nuse the TreeScope id map and falls back to getElementByIdIncludingDisconnected(),\nwhich linearly scans the entire detached subtree once per referenced id. On pages\nwith large detached subtrees that carry ARIA relation attributes, this can severely\nharm performance.\n\nFix this by skipping resolution of  relations for origins that are not in a tree scope.\nSuch elements have no accessibility object, so their relations have no consumer.\n\nAdditionally, this commit reduces how often relations are rebuilt. performDeferredCacheUpdate()\nused to mark all relations dirty on every id-attribute change, forcing a full rebuild, regardless\nof whether that id was part of a relation. Now we track every id referenced by a relation attribute\n(resolved or not) in a new m_referencedRelationTargetIds set and only dirty relations when a changed\nid can actually affect one.\n\n* LayoutTests/accessibility/aria-relations-disconnected-subtree-no-timeout-expected.txt: Added.\n* LayoutTests/accessibility/aria-relations-disconnected-subtree-no-timeout.html: Added.\n* Source/WebCore/accessibility/AXObjectCache.cpp:\n(WebCore::AXObjectCache::performDeferredCacheUpdate):\n(WebCore::AXObjectCache::updateRelationsIfNeeded):\n(WebCore::AXObjectCache::idChangeCanAffectRelations const):\n(WebCore::AXObjectCache::addRelation):\n(WebCore::AXObjectCache::addLabelForRelation):\n* Source/WebCore/accessibility/AXObjectCache.h:\n\nCanonical link: https://commits.webkit.org/317690@main",
      "email": "tyler_w@apple.com",
      "hash": "8b7c9b52a2c5166d71da7c97345fa12aec5b6d07",
      "subject": "AX: Inefficiencies around id dirtying and searching when building accessibility relations"
    },
    "317691@main": {
      "author": "Basuke Suzuki",
      "avatar": "https://www.gravatar.com/avatar/5192a1151c7575317affb7a4633f8d63?d=identicon\u0026s=64",
      "cl": "317691@main",
      "clUrl": "https://commits.webkit.org/317691@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319944\nrdar://182860876\n\nReviewed by Alex Christensen.\n\nThe imported WPT idlharness harness (webidl2.js@e6d8ab8) requires the\nsingle-token \"async_iterable\" WebIDL syntax and emits a validation error\nfor the older two-token \"async iterable\" syntax. The imported dependency\nIDL files streams.idl and fs.idl still used the old syntax, so every\nidl_test that pulls in streams.idl recorded a spurious\n\"FAIL idl_test validation\" line, affecting idlharness expected files\nacross compression, encoding, fs, streams, webrtc-encoded-transform, and\nwebtransport.\n\nUpdate both imported IDL files to the async_iterable syntax and rebaseline\nthe affected idlharness expected files. The new IDL matches upstream\nweb-platform-tests, taken from commit\n14c7ae5dd9a2c7f726ed51f968dc2340cb4fbe74 (2025-08-20, \"Sync interfaces/\nwith @webref/idl 3.66.2\", #54029), which updated both interfaces/streams.idl\nand interfaces/fs.idl to async_iterable.\n\nCovered by existing tests (the rebaselined idlharness tests).\n\n* LayoutTests/imported/w3c/web-platform-tests/compression/idlharness.https.any-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/compression/idlharness.https.any.worker-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/encoding/idlharness.any-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/encoding/idlharness.any.serviceworker-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/encoding/idlharness.any.sharedworker-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/encoding/idlharness.any.worker-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/fs/idlharness.https.any-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/fs/idlharness.https.any.worker-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/interfaces/fs.idl:\n* LayoutTests/imported/w3c/web-platform-tests/interfaces/streams.idl:\n* LayoutTests/imported/w3c/web-platform-tests/streams/idlharness.any-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/streams/idlharness.any.serviceworker-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/streams/idlharness.any.sharedworker-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/streams/idlharness.any.worker-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/webrtc-encoded-transform/idlharness.https.window-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/webtransport/idlharness.https.sub.any-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/webtransport/idlharness.https.sub.any.serviceworker-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/webtransport/idlharness.https.sub.any.sharedworker-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/webtransport/idlharness.https.sub.any.worker-expected.txt:\n\nCanonical link: https://commits.webkit.org/317691@main",
      "email": "basuke@apple.com",
      "hash": "3b703ea64b16c659e9aff78ab2e427b8984af0b6",
      "subject": "[WPT] Update imported streams.idl and fs.idl to async_iterable syntax"
    },
    "317692@main": {
      "author": "Lauro Moura",
      "avatar": "https://www.gravatar.com/avatar/6157f52d61e04c2c63fe7ff668ba69b3?d=identicon\u0026s=64",
      "cl": "317692@main",
      "clUrl": "https://commits.webkit.org/317692@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319954\n\nUnreviewed test gardening.\n\n* LayoutTests/platform/glib/TestExpectations:\n\nCanonical link: https://commits.webkit.org/317692@main",
      "email": "lmoura@igalia.com",
      "hash": "60b820d58099d033235b9668f6890f3f7c7e7a1a",
      "subject": "[GLIB] imported/w3c/web-platform-tests/css/css-text/white-space/white-space-trim-inline-block.html is failing since added in 317172@main"
    },
    "317693@main": {
      "author": "Wenson Hsieh",
      "avatar": "https://www.gravatar.com/avatar/c8fba82556fd4988c78bd3a0aee2a44e?d=identicon\u0026s=64",
      "cl": "317693@main",
      "clUrl": "https://commits.webkit.org/317693@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319948\nrdar://181639089\n\nReviewed by Abrar Rahman Protyasha.\n\nRevert the changes in 314741@main for now; this caused the keyboard on iOS to dismiss immediately\nafter focusing a text field in iPhone Mirroring mode, from macOS.\n\n* LayoutTests/editing/selection/ios/select-text-by-long-press-with-focused-element-expected.txt: Removed.\n* LayoutTests/editing/selection/ios/select-text-by-long-press-with-focused-element.html: Removed.\n* LayoutTests/editing/selection/ios/select-text-by-long-press-with-hardware-keyboard-expected.txt: Removed.\n* LayoutTests/editing/selection/ios/select-text-by-long-press-with-hardware-keyboard.html: Removed.\n* LayoutTests/editing/selection/ios/tap-focused-input-clears-outside-selection-expected.txt: Removed.\n* LayoutTests/editing/selection/ios/tap-focused-input-clears-outside-selection.html: Removed.\n* Source/WebKit/UIProcess/ios/WKContentViewInteraction.h:\n* Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm:\n(-[WKContentView cleanUpInteraction]):\n(-[WKContentView textInteractionGesture:shouldBeginAtPoint:]):\n(-[WKContentView selectPositionAtPoint:completionHandler:]):\n(-[WKContentView _selectPositionAtPoint:stayingWithinFocusedElement:completionHandler:]):\n(-[WKContentView _hideKeyboard:]):\n(-[WKContentView _elementDidBlur]):\n(-[WKContentView _updateSelectionAssistantSuppressionState]):\n\nCanonical link: https://commits.webkit.org/317693@main",
      "email": "wenson_hsieh@apple.com",
      "hash": "fcc2e3e66a2a0ac4f138e66dbdc321ab833d1526",
      "subject": "[iOS 27] REGRESSION (314741@main): Text fields lose focus immediately after showing the keyboard in iPhone Mirroring"
    },
    "317694@main": {
      "author": "Sosuke Suzuki",
      "avatar": "https://www.gravatar.com/avatar/e63b87350fe19bdd9a30c7234eda45af?d=identicon\u0026s=64",
      "cl": "317694@main",
      "clUrl": "https://commits.webkit.org/317694@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319932\n\nReviewed by Yusuke Suzuki.\n\nreread() returns errorCodePoint for a trail surrogate whose *following* code\nunit is a lead. The error case is a read landing in the middle of a pair, so it\nmust look at the preceding unit; readCheckedDontAdvance() already does this.\n\ntryConsumeBackReference() rereads the captured text, and errorCodePoint there\nfails the backreference unconditionally. Patterns with a lookbehind always run\nin the interpreter, so this reproduces with default options:\n\n    var unit = \"\\uDC00\\uD800a\";\n    /(?\u003c=^)(...)\\1/u.test(unit + unit);  // false, should be true\n\nAlso move the from + 1 \u003c length check into the lead branch, so that a trail\nsurrogate at the end of the input is still checked.\n\nIntroduced in 280563@main.\n\nTest: JSTests/stress/regexp-backreference-lone-trail-then-lone-lead.js\n\n* JSTests/stress/regexp-backreference-lone-trail-then-lone-lead.js: Added.\n(shouldBe):\n* Source/JavaScriptCore/yarr/YarrInterpreter.cpp:\n(JSC::Yarr::Interpreter::InputStream::reread):\n\nCanonical link: https://commits.webkit.org/317694@main",
      "email": "sosuke@bun.sh",
      "hash": "8c6275e1441775ef617f65034e8fe99de9e517f5",
      "subject": "[YARR] `InputStream::reread()` should check the code unit before a trail surrogate, not after"
    },
    "317695@main": {
      "author": "Megan Gardner",
      "avatar": "https://www.gravatar.com/avatar/b466a5bcbfabf4d82a8ecc595db5a531?d=identicon\u0026s=64",
      "cl": "317695@main",
      "clUrl": "https://commits.webkit.org/317695@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319947\nrdar://182864748\n\nReviewed by Wenson Hsieh.\n\nhasDecoration in paintForegroundAndDecorations only accounted for the originating element, custom highlights,\nand spelling/grammar — not ::selection. So when text had no decoration of its own and only ::selection did,\nthe decoration-paint path was skipped and the selection's decoration never painted. Add a hasSelectionDecoration\ncheck so the path runs, making selection-text-decoration-currentcolor.html and target-text-005.html pass.\n\nimported/w3c/web-platform-tests/css/css-pseudo/selection-text-decoration-currentcolor.html\nimported/w3c/web-platform-tests/css/css-pseudo/target-text-005.html\n\n* LayoutTests/TestExpectations:\n* LayoutTests/platform/ios/TestExpectations:\n* Source/WebCore/rendering/TextBoxPainter.cpp:\n(WebCore::TextBoxPainter::paintForegroundAndDecorations):\n\nCanonical link: https://commits.webkit.org/317695@main",
      "email": "megan_gardner@apple.com",
      "hash": "34482f630e94bffa517a6b298ea6b001ea37d03f",
      "subject": "[Selection] ::selection text-decoration is not painted when only the selection has a decoration."
    },
    "317696@main": {
      "author": "Youenn Fablet",
      "avatar": "https://www.gravatar.com/avatar/0a9886e582a7aee1eb908eb59af36da4?d=identicon\u0026s=64",
      "cl": "317696@main",
      "clUrl": "https://commits.webkit.org/317696@main",
      "description": "rdar://182509958\nhttps://bugs.webkit.org/show_bug.cgi?id=319666\n\nReviewed by Andy Estes and Jean-Yves Avenard.\n\nWe update the project to include asm and .S files.\nWe exclude them for non arm64/arm64e builds.\nWe update Source/WebCore/PAL/ThirdParty/dav1d/config.h to enable ASM for arm64.\nWe add Source/WebCore/PAL/ThirdParty/dav1d/config folder from upstream repo as it is useful to update Source/WebCore/PAL/ThirdParty/dav1d/config.h.\n\nCovered by existing tests.\n\n* Source/WebCore/PAL/ThirdParty/dav1d/Configurations/dav1d.xcconfig:\n* Source/WebCore/PAL/ThirdParty/dav1d/config.h:\n* Source/WebCore/PAL/ThirdParty/dav1d/config/apple/arm/config.h: Added.\n* Source/WebCore/PAL/ThirdParty/dav1d/config/apple/arm64/config.h: Added.\n* Source/WebCore/PAL/ThirdParty/dav1d/config/apple/x64/config.asm: Added.\n* Source/WebCore/PAL/ThirdParty/dav1d/config/apple/x64/config.h: Added.\n* Source/WebCore/PAL/ThirdParty/dav1d/config/apple/x86/config.asm: Added.\n* Source/WebCore/PAL/ThirdParty/dav1d/config/apple/x86/config.h: Added.\n* Source/WebCore/PAL/ThirdParty/dav1d/config/linux-noasm/generic/config.h: Added.\n* Source/WebCore/PAL/ThirdParty/dav1d/config/linux-noasm/x64/config.h: Added.\n* Source/WebCore/PAL/ThirdParty/dav1d/config/linux/arm/config.h: Added.\n* Source/WebCore/PAL/ThirdParty/dav1d/config/linux/arm64/config.h: Added.\n* Source/WebCore/PAL/ThirdParty/dav1d/config/linux/riscv64/config.h: Added.\n* Source/WebCore/PAL/ThirdParty/dav1d/config/linux/riscv64/cpu-renamed.c: Added.\n* Source/WebCore/PAL/ThirdParty/dav1d/config/linux/x64/config.asm: Added.\n* Source/WebCore/PAL/ThirdParty/dav1d/config/linux/x64/config.h: Added.\n* Source/WebCore/PAL/ThirdParty/dav1d/config/linux/x86/config.asm: Added.\n* Source/WebCore/PAL/ThirdParty/dav1d/config/linux/x86/config.h: Added.\n* Source/WebCore/PAL/ThirdParty/dav1d/config/win/arm64/config.h: Added.\n* Source/WebCore/PAL/ThirdParty/dav1d/config/win/x64/config.asm: Added.\n* Source/WebCore/PAL/ThirdParty/dav1d/config/win/x64/config.h: Added.\n* Source/WebCore/PAL/ThirdParty/dav1d/config/win/x86/config.asm: Added.\n* Source/WebCore/PAL/ThirdParty/dav1d/config/win/x86/config.h: Added.\n* Source/WebCore/PAL/ThirdParty/dav1d/dav1d.xcodeproj/project.pbxproj:\n\nCanonical link: https://commits.webkit.org/317696@main",
      "email": "youenn@apple.com",
      "hash": "99fc4c073730d4dcf09d7ffd26382e29bad6da7c",
      "subject": "Enable ASM support in dav1d"
    },
    "317697@main": {
      "author": "Anuj Panta",
      "avatar": "https://www.gravatar.com/avatar/f795b7daddea5f93c9cbb5a4a8f0db14?d=identicon\u0026s=64",
      "cl": "317697@main",
      "clUrl": "https://commits.webkit.org/317697@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=X\nrdar://179248483\n\nReviewed by Qianlang Chen.\n\nUnder Site Isolation a cross-origin iframe's DOM lives in a separate\nWebProcess with its own FrameDOMAgent. The DOM.shadowRootPushed and\nshadowRootPopped events are fired through InstrumentingAgents, which only\nnotified the page-level agent, so attaching a shadow root inside a cross-\norigin iframe reached no agent for that frame -- and even when it did, the\nfrontend dropped it for a FrameTarget. The shadow root never appeared in the\nElements tree.\n\ndidPushShadowRootImpl and willPopShadowRootImpl now resolve the host's frame\nand notify that frame's persistentFrameDOMAgent before falling through to the\npage agent, matching the branch already used by the sibling per-node hooks\n(didModifyDOMAttr, didInsertDOMNode). The main frame has no\npersistentFrameDOMAgent and the page agent's boundNodeId() guard suppresses\nsubframe hosts, so there is no double-fire. DOM.json widens both events'\ntargetTypes from [\"page\"] to [\"frame\",\"page\"] so the generated dispatcher\naccepts them from a FrameTarget; FrameDOMAgent already implemented\ndidPushShadowRoot/willPopShadowRoot.\n\nOn the frontend, DOMObserver replaces the two FrameTarget FIXME early-returns\nwith _frameTargetShadowRootPushed/_frameTargetShadowRootPopped, modeled on\n_frameTargetChildNodeInserted/Removed. They scope the shadow-root WI.DOMNode\nto the owning frame target (target.identifier + \":\" + nodeId) so colliding\nraw NodeIds across frames stay distinct.\n\nshadowRootPopped is wired but has no end-to-end test: author shadow roots have\nno scriptable detach, so willPopShadowRoot only fires on host destruction, and\nremoving the host first unbinds the root (FrameDOMAgent::unbind), leaving\nboundNodeId 0 so the backend suppresses the event.\n\nTests: http/tests/site-isolation/inspector/dom/shadow-root-cross-frame-isolation-frame-target.html\n       http/tests/site-isolation/inspector/dom/shadow-root-pushed-frame-target.html\n\n* LayoutTests/http/tests/site-isolation/inspector/dom/resources/shadow-root-child-frame.html: Added.\n* LayoutTests/http/tests/site-isolation/inspector/dom/resources/shadow-root-frame.html: Added.\n* LayoutTests/http/tests/site-isolation/inspector/dom/resources/shadow-root-grandchild-frame.html: Added.\n* LayoutTests/http/tests/site-isolation/inspector/dom/shadow-root-cross-frame-isolation-frame-target-expected.txt: Added.\n* LayoutTests/http/tests/site-isolation/inspector/dom/shadow-root-cross-frame-isolation-frame-target.html: Added.\n* LayoutTests/http/tests/site-isolation/inspector/dom/shadow-root-pushed-frame-target-expected.txt: Added.\n* LayoutTests/http/tests/site-isolation/inspector/dom/shadow-root-pushed-frame-target.html: Added.\n* Source/JavaScriptCore/inspector/protocol/DOM.json:\n* Source/WebCore/inspector/InspectorInstrumentation.cpp:\n(WebCore::InspectorInstrumentation::didPushShadowRootImpl):\n(WebCore::InspectorInstrumentation::willPopShadowRootImpl):\n* Source/WebInspectorUI/UserInterface/Controllers/DOMManager.js:\n(WI.DOMManager.prototype._frameTargetShadowRootPushed):\n(WI.DOMManager.prototype._frameTargetShadowRootPopped):\n* Source/WebInspectorUI/UserInterface/Protocol/DOMObserver.js:\n(WI.DOMObserver.prototype.shadowRootPushed):\n(WI.DOMObserver.prototype.shadowRootPopped):\n\nCanonical link: https://commits.webkit.org/317697@main",
      "email": "a_panta@apple.com",
      "hash": "034bf10318cda0200ec8efc019bca8c0202da9e8",
      "subject": "Web Inspector: [SI] route shadowRootPushed/Popped to per-frame FrameDOMAgent"
    },
    "317698@main": {
      "author": "Anuj Panta",
      "avatar": "https://www.gravatar.com/avatar/f795b7daddea5f93c9cbb5a4a8f0db14?d=identicon\u0026s=64",
      "cl": "317698@main",
      "clUrl": "https://commits.webkit.org/317698@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=315597\nrdar://177978474\n\nReviewed by Qianlang Chen.\n\nReplace WI.DOMUndoCoordinator's single _lastEditTarget slot with a pair\nof LIFO target stacks that record one entry per edit, in order. Each\nedit's target — the main page or a cross-origin iframe — is pushed when\ndidEdit is called. undo pops the top, dispatches to that target's\nDOMAgent, and pushes to the redo stack on completion; redo is the\nsymmetric inverse. Empty-stack undo and redo fall back to the main\ntarget as a no-op without pushing onto either stack. TargetRemoved\nfilters both stacks so a torn-down frame can't be popped later.\n\nEnd-user effect: edit a node in a cross-origin iframe, edit a node on\nthe main page, press Cmd+Z — the main edit reverses; press Cmd+Z again,\nthe iframe edit reverses.\n\nThe existing single-target dispatch test is updated to await the now-\nasync undo/redo entry points.\n\nTest: http/tests/site-isolation/inspector/dom/cross-frame-undo-coordinator.html\n\n* LayoutTests/http/tests/site-isolation/inspector/dom/cross-frame-undo-coordinator-expected.txt: Added.\n* LayoutTests/http/tests/site-isolation/inspector/dom/cross-frame-undo-coordinator.html: Added.\n* LayoutTests/http/tests/site-isolation/inspector/dom/undo-coordinator-frame-target-expected.txt:\n* LayoutTests/http/tests/site-isolation/inspector/dom/undo-coordinator-frame-target.html:\n* Source/WebInspectorUI/UserInterface/Controllers/DOMUndoCoordinator.js:\n(WI.DOMUndoCoordinator):\n(WI.DOMUndoCoordinator.prototype.didEdit):\n(WI.DOMUndoCoordinator.prototype.markUndoableState):\n(WI.DOMUndoCoordinator.prototype.undo):\n(WI.DOMUndoCoordinator.prototype.redo):\n(WI.DOMUndoCoordinator.prototype._performOperationSoon):\n(WI.DOMUndoCoordinator.prototype.async _undo):\n(WI.DOMUndoCoordinator.prototype.async _redo):\n(WI.DOMUndoCoordinator.prototype._handleTargetRemoved):\n\nCanonical link: https://commits.webkit.org/317698@main",
      "email": "a_panta@apple.com",
      "hash": "de24f73abd975bc8500b7efcba2290a244143c9e",
      "subject": "Web Inspector: [SI] coordinate Cmd+Z across per-frame undo stacks"
    },
    "317699@main": {
      "author": "Anuj Panta",
      "avatar": "https://www.gravatar.com/avatar/f795b7daddea5f93c9cbb5a4a8f0db14?d=identicon\u0026s=64",
      "cl": "317699@main",
      "clUrl": "https://commits.webkit.org/317699@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=NNNNNN\nrdar://179176056\n\nReviewed by Qianlang Chen.\n\nWeb Inspector's Elements tree for an out-of-process iframe went\nstale on these lifecycle changes:\n\n- DOM.customElementStateChanged\n- DOM.pseudoElementAdded\n- DOM.pseudoElementRemoved\n\nThey were stubbed off at every layer for the frame target: the protocol declared\nthem \"page\"-only, InspectorInstrumentation routed them only to the page-level\npersistentDOMAgent(), and the frontend DOMObserver early-returned with a FIXME\nfor FrameTarget. FrameDOMAgent already had complete, correct implementations of\nall three methods, so this is a pure wiring change, not a new feature.\n\nThis adds the missing routing following the existing convention used by\ndidInsertDOMNode / didModifyDOMAttr (notify the frame's own FrameDOMAgent, then\nthe page agent), declares the events for the frame target, and adds the\nscoped-id frontend handlers so the iframe's Elements tree stays live.\n\nThe added layout test deliberately covers multiple, repeated, and interleaved\nscenarios rather than a single event per type, since these handlers manage\nper-node and per-pseudo-type state: two custom elements upgraded back-to-back\n(no cross-contamination), ::before and ::after coexisting, targeted single-pseudo\nremoval leaving the sibling intact, and an add/remove/re-add cycle guarding\nagainst stale-node leaks. It also documents that one upgrade legitimately emits\ntwo transitions (FailedOrPrecustomized then Custom), which the frame target\nrelays just like the page target.\n\nTest: http/tests/site-isolation/inspector/dom/custom-elements-and-pseudo-elements-frame-target.html\n\n* LayoutTests/http/tests/site-isolation/inspector/dom/custom-elements-and-pseudo-elements-frame-target-expected.txt: Added.\n* LayoutTests/http/tests/site-isolation/inspector/dom/custom-elements-and-pseudo-elements-frame-target.html: Added.\n* LayoutTests/http/tests/site-isolation/inspector/dom/resources/custom-elements-and-pseudo-elements-frame.html: Added.\n* Source/JavaScriptCore/inspector/protocol/DOM.json:\n* Source/WebCore/inspector/InspectorInstrumentation.cpp:\n(WebCore::InspectorInstrumentation::didChangeCustomElementStateImpl):\n(WebCore::InspectorInstrumentation::pseudoElementCreatedImpl):\n(WebCore::InspectorInstrumentation::pseudoElementDestroyedImpl):\n* Source/WebInspectorUI/UserInterface/Controllers/DOMManager.js:\n(WI.DOMManager.prototype._frameTargetCustomElementStateChanged):\n(WI.DOMManager.prototype._frameTargetPseudoElementAdded):\n(WI.DOMManager.prototype._frameTargetPseudoElementRemoved):\n* Source/WebInspectorUI/UserInterface/Protocol/DOMObserver.js:\n(WI.DOMObserver.prototype.customElementStateChanged):\n(WI.DOMObserver.prototype.pseudoElementAdded):\n(WI.DOMObserver.prototype.pseudoElementRemoved):\n\nCanonical link: https://commits.webkit.org/317699@main",
      "email": "a_panta@apple.com",
      "hash": "c432535e2dd2f474007a2398f0156106eb87ed0e",
      "subject": "[Web Inspector] [Site Isolation] Deliver DOM custom-element and pseudo-element events to Frame Targets"
    },
    "317700@main": {
      "author": "Tetsuharu Ohzeki",
      "avatar": "https://www.gravatar.com/avatar/549cbf8e9e2460763d7248f6266be8af?d=identicon\u0026s=64",
      "cl": "317700@main",
      "clUrl": "https://commits.webkit.org/317700@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319673\n\nReviewed by Sosuke Suzuki.\n\nThis change is related to only the fast path of `Array#flat()`.\n`resultIndex` is 8-bytes (`uint64_t`). It's enough small size.\n\nInterestingly, this change has a side-effect which is a micro benchmark\nprogression on macOS arm64 at least.\n\n                                             TipOfTree                  Patched\n\narray-prototype-flat-depth-1-string      124.7313+-15.7674    ?    126.7053+-14.0930       ? might be 1.0158x slower\narray-prototype-flat-depth-1-double       85.8047+-8.6982     ?     88.9680+-4.1780        ? might be 1.0369x slower\narray-prototype-flat-large-nested         45.0930+-2.4765     ^     27.1562+-1.0824        ^ definitely 1.6605x faster\narray-prototype-flat-huge-arrays          10.5353+-1.8040           10.0453+-1.7224          might be 1.0488x faster\narray-prototype-flat-small-arrays          3.4522+-0.1238            3.3026+-0.0755          might be 1.0453x faster\narray-prototype-flat-depth-infinity      117.2919+-1.0095          117.0930+-0.6006\narray-prototype-flat-depth-2              94.7117+-1.3260     ?     95.6852+-4.3372        ? might be 1.0103x slower\narray-prototype-flat-depth-1-int32        85.2135+-4.3134     ?     88.4635+-2.5566        ? might be 1.0381x slower\narray-prototype-flat-depth-3             105.7020+-7.5027          102.3541+-4.5175          might be 1.0327x faster\narray-prototype-flat-sparse-array        152.1396+-3.2477     ?    161.3152+-11.0580       ? might be 1.0603x slower\narray-prototype-flat-depth-1-mixed        93.9877+-4.2939     ?     94.3616+-4.7335        ?\n\n\u003cgeometric\u003e                               57.9736+-0.6088     ^     55.5547+-0.9141        ^ definitely 1.0435x faster\n\nNo new tests.\nIt wlll be covered by exist test cases.\n\nCanonical link: https://commits.webkit.org/317700@main",
      "email": "tetsuharu.ohzeki@gmail.com",
      "hash": "4b8e37abf2836c3dda3db728c5e2e82de59c7a49",
      "subject": "[JSC] Use pass-by-value for `resultIndex` argument of `JS::fastFlatIntoBuffer()`"
    },
    "317701@main": {
      "author": "Swati Kedia",
      "avatar": "https://www.gravatar.com/avatar/723d6dc94f8c49efe80cf6709414615c?d=identicon\u0026s=64",
      "cl": "317701@main",
      "clUrl": "https://commits.webkit.org/317701@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319487\n\nReviewed by Devin Rousso.\n\nMove the owned std::optional\u003cint64_t\u003e when forwarding it to\nWebInspectorUIProxy::setEmulatedConditions().\n\nWebInspectorBackendProxy owns the std::optional by value but forwards it\nto a function taking std::optional\u003cint64_t\u003e\u0026\u0026, causing compilation to\nfail when ENABLE_INSPECTOR_NETWORK_THROTTLING is enabled.\n\nForward the optional using WTF::move().\n\n* Source/WebKit/UIProcess/Inspector/WebInspectorBackendProxy.cpp:\n(WebKit::WebInspectorBackendProxy::setEmulatedConditions):\n\nCanonical link: https://commits.webkit.org/317701@main",
      "email": "swati.kedia@youview.com",
      "hash": "242f356b9eea8de56da34dda33e12a9c8c71f8c0",
      "subject": "WebInspectorBackendProxy::setEmulatedConditions fails to compile when ENABLE_INSPECTOR_NETWORK_THROTTLING is enabled"
    },
    "317702@main": {
      "author": "Sam Weinig",
      "avatar": "https://www.gravatar.com/avatar/354b409240f9fb3357f498c547423d96?d=identicon\u0026s=64",
      "cl": "317702@main",
      "clUrl": "https://commits.webkit.org/317702@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319905\n\nReviewed by Antoine Quint.\n\nConverts the view-timeline-inset CSS property to use unzoomed lengths.\n\nNew test added showing view-timeline-inset working properly with inherited + zoomed values.\n\nTests: imported/w3c/web-platform-tests/css/css-viewport/zoom/view-timeline-inset.html\n* LayoutTests/imported/w3c/web-platform-tests/css/css-viewport/zoom/reference/view-timeline-inset-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-viewport/zoom/view-timeline-inset-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-viewport/zoom/view-timeline-inset.html: Added.\n* Source/WebCore/Headers.cmake:\n* Source/WebCore/WebCore.xcodeproj/project.pbxproj:\n* Source/WebCore/animation/CSSAnimation.cpp:\n* Source/WebCore/animation/ResolvableViewTimelineInsets.h: Added.\n* Source/WebCore/animation/StyleOriginatedTimelinesController.cpp:\n* Source/WebCore/animation/StyleOriginatedTimelinesController.h:\n* Source/WebCore/animation/ViewTimeline.cpp:\n* Source/WebCore/animation/ViewTimeline.h:\n* Source/WebCore/style/Styleable.cpp:\n* Source/WebCore/style/values/scroll-animations/StyleViewTimelineInsetItem.h:\n\nCanonical link: https://commits.webkit.org/317702@main",
      "email": "sam@webkit.org",
      "hash": "27b5f7b5a093eb497506f0d4af22af72044dbba6",
      "subject": "[EvaluationTimeZoom] Convert view-timeline-inset property to use unzoomed lengths"
    },
    "317703@main": {
      "author": "Vitaly Dyachkov",
      "avatar": "https://www.gravatar.com/avatar/ab950c52088e289585a5a01580ec66a4?d=identicon\u0026s=64",
      "cl": "317703@main",
      "clUrl": "https://commits.webkit.org/317703@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319974\n\nUnreviewed test gardening.\n\n* LayoutTests/platform/wpe/TestExpectations:\n\nCanonical link: https://commits.webkit.org/317703@main",
      "email": "vitaly@igalia.com",
      "hash": "74fd55aac63877a75d8983da31b9bdb8a383234d",
      "subject": "[WPE] `webrtc/remoteAudio-never-played.html` is a rare flaky crash"
    },
    "317704@main": {
      "author": "Vitaly Dyachkov",
      "avatar": "https://www.gravatar.com/avatar/ab950c52088e289585a5a01580ec66a4?d=identicon\u0026s=64",
      "cl": "317704@main",
      "clUrl": "https://commits.webkit.org/317704@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319949\n\nUnreviewed test gardening.\n\nThis test was marked as expected to crash in glib/TestExpectations in\n317682@main but there was an override of in wpe/TestExpectations.\n\nTemporarily comment out the override.\n\n* LayoutTests/platform/wpe/TestExpectations:\n\nCanonical link: https://commits.webkit.org/317704@main",
      "email": "vitaly@igalia.com",
      "hash": "93daff4aa46d18009eec0cb7fe53365296900bbb",
      "subject": "[WPE] `fast/events/wheel/wheelevent-basic.html` is a constant crash"
    },
    "317705@main": {
      "author": "Youenn Fablet",
      "avatar": "https://www.gravatar.com/avatar/0a9886e582a7aee1eb908eb59af36da4?d=identicon\u0026s=64",
      "cl": "317705@main",
      "clUrl": "https://commits.webkit.org/317705@main",
      "description": "rdar://182761259\nhttps://bugs.webkit.org/show_bug.cgi?id=319968\n\nReviewed by Chris Dumez.\n\nWebSWServerConnection sometimes calls networkProcess() asynchronously following an IPC message, for instance in WebSWServerConnection::postMessageToServiceWorkerClient.\nIn that case, there is no guarantee that m_networkConnectionToWebProcess is not nullptr and calling WebSWServerConnection::networkProcess should return nullptr.\n\nWe change WebSWServerConnection::networkProcess to account for this and return a NetworkProcess pointer instead of a ref.\nAt call sites, we check for networkProcess being nullptr for async cases.\n\nCovered by existing tests.\n\n* Source/WebKit/NetworkProcess/ServiceWorker/WebSWServerConnection.cpp:\n(WebKit::WebSWServerConnection::networkProcess):\n(WebKit::WebSWServerConnection::sharedPreferencesForWebProcess const):\n(WebKit::WebSWServerConnection::resolveUnregistrationJobInClient):\n* Source/WebKit/NetworkProcess/ServiceWorker/WebSWServerConnection.h:\n\nCanonical link: https://commits.webkit.org/317705@main",
      "email": "youenn@apple.com",
      "hash": "2a66dfcd19dbbc5fcdb0d7cd3acd1d891b63bf93",
      "subject": "WebSWServerConnection::networkProcess should account for a nullptr m_networkConnectionToWebProcess"
    },
    "317706@main": {
      "author": "Pawel Lampe",
      "avatar": "https://www.gravatar.com/avatar/3c9bf19417c230eff7ade252118deb7a?d=identicon\u0026s=64",
      "cl": "317706@main",
      "clUrl": "https://commits.webkit.org/317706@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=312461\n\nReviewed by Carlos Garcia Campos.\n\nThis change unifies the default font rendering settings between GTK\nand WPE.\n\nTo be more precise, it changes the WPE's default value for\nsubpixel layout from RGB to NONE so that it matches the default from\nFontRenderOptions that is used by GTK normally.\n\nCanonical link: https://commits.webkit.org/317706@main",
      "email": "plampe@igalia.com",
      "hash": "18d9a420b6524cfa9056906074efe4f4fd07f5f6",
      "subject": "WPEWebKit font rendering has different thickness than WebKitGTK"
    },
    "317707@main": {
      "author": "Youenn Fablet",
      "avatar": "https://www.gravatar.com/avatar/0a9886e582a7aee1eb908eb59af36da4?d=identicon\u0026s=64",
      "cl": "317707@main",
      "clUrl": "https://commits.webkit.org/317707@main",
      "description": "rdar://182400674\nhttps://bugs.webkit.org/show_bug.cgi?id=319570\n\nReviewed by Chris Dumez.\n\nWebTransport is subclassing WritableStreamDefaultWriter in WebTransportWriter.\nTo prepare for implementing WebTransportWriter, we make WritableStreamDefaultWriter a standard C++ class instead of a JS built-in.\nWe beef up InternalWritableStreamWriter to support more bindings API and we forward WritableStreamDefaultWriter calls to InternalWritableStreamWriter.\n\nCovered by existing tests.\n\n* Source/WebCore/CMakeLists.txt:\n* Source/WebCore/DerivedSources-input.xcfilelist:\n* Source/WebCore/DerivedSources-output.xcfilelist:\n* Source/WebCore/DerivedSources.make:\n* Source/WebCore/Modules/streams/WritableStream.cpp:\n(WebCore::WritableStream::getWriter):\n(WebCore::JSWritableStream::getWriter): Deleted.\n* Source/WebCore/Modules/streams/WritableStream.h:\n* Source/WebCore/Modules/streams/WritableStream.idl:\n* Source/WebCore/Modules/streams/WritableStreamDefaultWriter.cpp: Added.\n(WebCore::WritableStreamDefaultWriter::create):\n(WebCore::WritableStreamDefaultWriter::WritableStreamDefaultWriter):\n(WebCore::WritableStreamDefaultWriter::desiredSize):\n(WebCore::WritableStreamDefaultWriter::releaseLock):\n(WebCore::JSWritableStreamDefaultWriter::closed const):\n(WebCore::JSWritableStreamDefaultWriter::ready const):\n(WebCore::JSWritableStreamDefaultWriter::abort):\n(WebCore::JSWritableStreamDefaultWriter::close):\n(WebCore::JSWritableStreamDefaultWriter::write):\n* Source/WebCore/Modules/streams/WritableStreamDefaultWriter.h: Added.\n(WebCore::WritableStreamDefaultWriter::internalWriter):\n* Source/WebCore/Modules/streams/WritableStreamDefaultWriter.idl:\n* Source/WebCore/Modules/streams/WritableStreamDefaultWriter.js: Removed.\n* Source/WebCore/Modules/streams/WritableStreamInternals.js:\n(acquireWritableStreamDefaultWriter):\n(writableStreamDefaultWriterClosedForBindings):\n(writableStreamDefaultWriterReadyForBindings):\n(writableStreamDefaultWriterDesiredSizeForBindings):\n(writableStreamDefaultWriterAbortForBindings):\n(writableStreamDefaultWriterCloseForBindings):\n(writableStreamDefaultWriterReleaseLockForBindings):\n(writableStreamDefaultWriterWriteForBindings):\n* Source/WebCore/Sources.txt:\n* Source/WebCore/WebCore.xcodeproj/project.pbxproj:\n* Source/WebCore/bindings/js/InternalWritableStreamWriter.cpp:\n(WebCore::InternalWritableStreamWriter::closedForBindings):\n(WebCore::InternalWritableStreamWriter::desiredSizeForBindings):\n(WebCore::InternalWritableStreamWriter::readyForBindings):\n(WebCore::InternalWritableStreamWriter::abortForBindings):\n(WebCore::InternalWritableStreamWriter::closeForBindings):\n(WebCore::InternalWritableStreamWriter::releaseLockForBindings):\n(WebCore::InternalWritableStreamWriter::writeForBindings):\n* Source/WebCore/bindings/js/InternalWritableStreamWriter.h:\n\nCanonical link: https://commits.webkit.org/317707@main",
      "email": "youenn@apple.com",
      "hash": "6d8ca7e79a097c2013cf960c16489930cad90f11",
      "subject": "Allow subclassing of WritableStreamDefaultWriter"
    },
    "317708@main": {
      "author": "Chris Dumez",
      "avatar": "https://www.gravatar.com/avatar/a9f21fe3a8baf79b45f3c91572187bdc?d=identicon\u0026s=64",
      "cl": "317708@main",
      "clUrl": "https://commits.webkit.org/317708@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319959\n\nReviewed by Alan Baradlay.\n\nThe failures seem related to 317593@main.\n\n* Source/WebCore/SaferCPPExpectations/NoUncheckedPtrMemberCheckerExpectations:\n* Source/WebCore/SaferCPPExpectations/UncheckedCallArgsCheckerExpectations:\n* Source/WebCore/SaferCPPExpectations/UncheckedLocalVarsCheckerExpectations:\n* Source/WebCore/layout/formattingContexts/flex/FlexFormattingContext.cpp:\n(WebCore::FlexFormattingContext::layout):\n(WebCore::FlexFormattingContext::layoutFlexItems):\n(WebCore::FlexFormattingContext::handleCrossAxisAlignmentForFlexLines):\n(WebCore::FlexFormattingContext::performBaselineAlignment):\n(WebCore::FlexFormattingContext::computeFlexItemRects):\n(WebCore::FlexFormattingContext::placeFlexItems):\n(WebCore::FlexFormattingContext::reverseColumnLinesFromContainerMainEndIfNeeded):\n(WebCore::FlexFormattingContext::layoutColumnReverse):\n(WebCore::ScopedFlexBasisAsFlexItemMainSize::ScopedFlexBasisAsFlexItemMainSize):\n(WebCore::ScopedFlexBasisAsFlexItemMainSize::~ScopedFlexBasisAsFlexItemMainSize):\n(WebCore::FlexFormattingContext::flexBaseSizeForFlexItem):\n(WebCore::FlexFormattingContext::flexBaseSizeNeedsBlockAxisContentSize):\n(WebCore::FlexFormattingContext::ensureBlockAxisContentSizeForFlexItemIfNeeded):\n(WebCore::FlexFormattingContext::computeContentBasedMinMainSize):\n(WebCore::FlexFormattingContext::computeMainAxisExtentForFlexItem):\n(WebCore::FlexFormattingContext::computeMainSizeFromAspectRatioUsing const):\n(WebCore::FlexFormattingContext::flexItemIntrinsicLogicalHeight const):\n(WebCore::FlexFormattingContext::flexItemCrossSizeIsDefinite):\n(WebCore::FlexFormattingContext::trimMainAxisMarginStart):\n(WebCore::FlexFormattingContext::trimMainAxisMarginEnd):\n(WebCore::FlexFormattingContext::trimCrossAxisMarginStart):\n(WebCore::FlexFormattingContext::trimCrossAxisMarginEnd):\n(WebCore::FlexFormattingContext::canFitItemWithTrimmedMarginEnd const):\n(WebCore::FlexFormattingContext::removeMarginEndFromFlexSizes const):\n(WebCore::FlexFormattingContext::applyStretchAlignmentToFlexItem):\n(WebCore::FlexFormattingContext::applyStretchMinMaxCrossSize):\n* Source/WebCore/layout/formattingContexts/flex/FlexFormattingContext.h:\n* Source/WebCore/layout/integration/flex/LayoutIntegrationFlexLayout.cpp:\n(WebCore::LayoutIntegration::FlexLayout::collectFlexItems):\n(WebCore::LayoutIntegration::FlexLayout::flexItemForFirstBaseline const):\n(WebCore::LayoutIntegration::FlexLayout::flexItemForLastBaseline const):\n(WebCore::LayoutIntegration::FlexLayout::baselineFlexItemInLine const):\n* Source/WebCore/layout/integration/flex/LayoutIntegrationFlexLayout.h:\n* Source/WebCore/rendering/RenderFlexibleBox.cpp:\n* Source/WebCore/rendering/RenderFlexibleBox.h:\n\nCanonical link: https://commits.webkit.org/317708@main",
      "email": "cdumez@apple.com",
      "hash": "1042e04c5482513405f895d56f12c0efc44515a8",
      "subject": "Address recent safer cpp regressions in layout code"
    },
    "317709@main": {
      "author": "Chris Dumez",
      "avatar": "https://www.gravatar.com/avatar/a9f21fe3a8baf79b45f3c91572187bdc?d=identicon\u0026s=64",
      "cl": "317709@main",
      "clUrl": "https://commits.webkit.org/317709@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319952\n\nReviewed by Per Arne Vollan.\n\nWhen log forwarding is enabled, each WebContent process gets a LogStream in the UI process\n(WebProcessProxy::createLogStream), backed by a StreamServerConnection over its own IPC::Connection.\n\nLogStream::stopListeningForIPC() only called StreamServerConnection::stopReceivingMessages(),\nwhich unregisters the message receiver but never invalidates the underlying IPC::Connection. An\nopen connection keeps itself alive through its Mach-receive dispatch source (which holds a Ref\nback to the connection) and holds its Mach port / kqueue workloop until it is explicitly\ninvalidated. So tearing down the WebProcessProxy released its reference to the LogStream but did\nnot release the connection: StreamServerConnection::m_receivers and the connection's own receive\nsource kept the LogStream / StreamServerConnection / IPC::Connection alive as a self-sustaining\nisland with a dead peer.\n\nOne such connection leaked per WebContent process. Over a long session these accumulate in the UI\nprocess until it is killed for Mach port exhaustion (32768) or kqueue workloop exhaustion (2048),\nwhichever limit is reached first.\n\nFix LogStream::stopListeningForIPC() to also invalidate() the connection: stopReceivingMessages()\nclears the receiver map (breaking the m_receivers \u003c-\u003e m_connection retain cycle so the objects can\nbe freed) and invalidate() cancels the receive source and releases the Mach port / kqueue workloop.\n\nAlso tear the log stream down from WebProcessProxy::shutDown() (via a new stopLogStream() helper,\nshared with platformDestroy()) so the connection is released as soon as the process shuts down,\nrather than waiting for the proxy object to be destroyed.\n\n* Source/WebKit/Shared/LogStream.mm:\n(WebKit::LogStream::stopListeningForIPC):\n* Source/WebKit/UIProcess/Cocoa/WebProcessProxyCocoa.mm:\n(WebKit::WebProcessProxy::platformDestroy):\n(WebKit::WebProcessProxy::stopLogStream):\n* Source/WebKit/UIProcess/WebProcessProxy.cpp:\n(WebKit::WebProcessProxy::shutDown):\n* Source/WebKit/UIProcess/WebProcessProxy.h:\n\nCanonical link: https://commits.webkit.org/317709@main",
      "email": "cdumez@apple.com",
      "hash": "28f59c40aa4913fbacc1900cb2eb5e0ba55ef7f2",
      "subject": "LogStream leaks its IPC connection (and Mach port / kqueue workloop) after the WebContent process exits"
    },
    "317710@main": {
      "author": "Fady Farag",
      "avatar": "https://www.gravatar.com/avatar/0ac5127c69f90d0c57054173ae4c3108?d=identicon\u0026s=64",
      "cl": "317710@main",
      "clUrl": "https://commits.webkit.org/317710@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319933\nrdar://182856553\n\nReviewed by Chris Dumez.\n\nThis improves readability and enforces more idiomatic C++ by resorting to\nequivalent binary boolean operations.\n\n* Source/WebCore/css/parser/CSSPropertyParserConsumer+Transform.cpp:\n(WebCore::CSSPropertyParserHelpers::consumeRotate):\n* Source/WebCore/css/typedom/CSSNumericValue.cpp:\n(WebCore::operationOnValuesOfSameUnit):\n* Source/WebCore/dom/Document.cpp:\n(WebCore::Document::hasTouchEventHandlers const):\n* Source/WebCore/dom/Node.cpp:\n(WebCore::Node::canStartSelection const):\n* Source/WebCore/dom/ScriptExecutionContext.cpp:\n(WebCore::ScriptExecutionContext::allowsMediaDevices const):\n* Source/WebCore/rendering/LogicalSelectionOffsetCachesInlines.h:\n(WebCore::LogicalSelectionOffsetCaches::ContainingBlockInfo::setBlock):\n* Source/WebCore/rendering/RenderBlockFlow.cpp:\n(WebCore::RenderBlockFlow::MarginInfo::MarginInfo):\n(WebCore::RenderBlockFlow::styleWillChange):\n(WebCore::RenderBlockFlow::hasContentfulInlineOrBlockLine const):\n(WebCore::RenderBlockFlow::hasContentfulInlineLine const):\n* Source/WebCore/rendering/RenderBoxModelObject.cpp:\n(WebCore::RenderBoxModelObject::adjustedPositionRelativeToOffsetParent const):\n* Source/WebCore/rendering/RenderLayer.cpp:\n(WebCore::RenderLayer::referenceBoxRectForClipPath const):\n(WebCore::RenderLayer::calculateClipRects const):\n* Source/WebCore/rendering/RenderLayerCompositor.cpp:\n(WebCore::RenderLayerCompositor::updateCompositingLayers):\n* Source/WebCore/rendering/RenderLayoutState.cpp:\n(WebCore::RenderLayoutState::computeOffsets):\n* Source/WebCore/rendering/RenderObject.cpp:\n(WebCore::RenderObject::canUpdateSelectionOnRootLineBoxes):\n* Source/WebCore/rendering/RenderTreeAsText.cpp:\n(WebCore::writeLayers):\n* Source/WebCore/rendering/shapes/ShapeInterval.h:\n(WebCore::ShapeInterval::isEmpty const):\n* Source/WebCore/rendering/svg/RenderSVGInlineText.cpp:\n(WebCore::RenderSVGInlineText::styleDidChange):\n\nCanonical link: https://commits.webkit.org/317710@main",
      "email": "com.webkit.iidmsa@gmail.com",
      "hash": "4ae3114d45cb72cca15bb119fc3e7756007e7ea4",
      "subject": "Reduce further unnecessary usage of ternary operator in WebCore"
    },
    "317711@main": {
      "author": "Jean Haberer",
      "avatar": "https://www.gravatar.com/avatar/8ac33d529228e323edb2a2df3a3bac2f?d=identicon\u0026s=64",
      "cl": "317711@main",
      "clUrl": "https://commits.webkit.org/317711@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319983\nrdar://179862957\n\nReviewed by Etienne Segonzac.\n\nAlign the immersive documentation syntax with the other API documentations.\n\n* Source/WebKit/UIProcess/API/Cocoa/WKImmersiveEnvironment.h:\n* Source/WebKit/UIProcess/API/Cocoa/WKImmersiveEnvironmentDelegate.h:\n* Source/WebKit/UIProcess/API/Swift/WebPage+Configuration.swift:\n* Source/WebKit/UIProcess/API/Swift/WebPage+ImmersiveEnvironment.swift:\n* Source/WebKit/_WebKit_SwiftUI/API/View+WebViewModifiers.swift:\n* Source/WebKit/_WebKit_SwiftUI/API/WebViewImmersiveEnvironmentView.swift:\n\nCanonical link: https://commits.webkit.org/317711@main",
      "email": "jean.haberer@apple.com",
      "hash": "1fa786a6d5aa6b5854d06233485bec44fe16c7d7",
      "subject": "Improve the Immersive API documentation"
    },
    "317712@main": {
      "author": "Sammy Gill",
      "avatar": "https://www.gravatar.com/avatar/715a3cfee5d85ee90ccfdaa2a4a7a5a3?d=identicon\u0026s=64",
      "cl": "317712@main",
      "clUrl": "https://commits.webkit.org/317712@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319942\nrdar://problem/182860702\n\nReviewed by Cole Carley.\n\nAfter track sizing is finished, we attempt to resolve the margins for\ngrid items in two different places: once during the final sizing of the\nitem and then when we want to align them. The logic to do this is\nexactly the same and we do it in two different ways in both scenarios\nwhen we do not need to. Instead, let's just use the static helper\nfunction that we already have during item sizing and remove the lambdas\nthat were basically just duplicate code.\n\nThis change requires us to compute a list of the margins for each grid\nitem rather than resolve the margins one at a time, but this is\nbasically just a matter of plumbing the values to the right place.\n\n* Source/WebCore/layout/formattingContexts/grid/GridLayout.cpp:\nRemove the local UsedMargins definition now that it lives in\nGridLayoutUtils.h.\n\n(WebCore::Layout::GridLayout::layoutGridItems const):\nResolve each grid item's used margins with computeMarginsForAxis and pass\nthem into the sizing functions.\n\n* Source/WebCore/layout/formattingContexts/grid/GridLayoutUtils.cpp:\n(WebCore::Layout::GridLayoutUtils::stretchFitSize):\n(WebCore::Layout::GridLayoutUtils::inlinePreferredSize):\n(WebCore::Layout::GridLayoutUtils::blockPreferredSize):\n(WebCore::Layout::GridLayoutUtils::inlineUsedSize):\n(WebCore::Layout::GridLayoutUtils::blockUsedSize):\nAforementioned plumbing from GridLayout::layoutGridItems to the spots\nwhere we were manually resolving them in the lambdas.\n\nCanonical link: https://commits.webkit.org/317712@main",
      "email": "sammy.gill@apple.com",
      "hash": "1665f4bc90084a86cd9463d60553211b8a79a77b",
      "subject": "[GFC][Cleanup] Remove some code duplication for resolving margins"
    },
    "317713@main": {
      "author": "Youenn Fablet",
      "avatar": "https://www.gravatar.com/avatar/0a9886e582a7aee1eb908eb59af36da4?d=identicon\u0026s=64",
      "cl": "317713@main",
      "clUrl": "https://commits.webkit.org/317713@main",
      "description": "rdar://182758228\nhttps://bugs.webkit.org/show_bug.cgi?id=319969\n\nReviewed by Jean-Yves Avenard.\n\nIn M150 libwebrtc resync, explicit hopping from network thread to worker thread was removed from WebRtcVideoReceiveChannel::OnPacketReceived.\nThis is ok in Chrome since network thread and worker thread are the same.\nWe apply the same setup in WebKit in LibWebRTCProvider::createPeerConnectionFactory.\n\nThe issue is that while Call::DeliverRtpPacket use a safety task to make sure the Call pointer is valid after hopping to worker thread,\nthe OnUndemuxablePacketHandler is keeping a pointer to WebRtcVideoReceiveChannel/WebRtcVoiceReceiveChannel, which are not guaranteed to stay valid in our previous config where worker thread and signalling thread were the same.\nFor good measure, we make sure that the OnUndemuxablePacketHandler given to Call::DeliverRtpPacket from WebRtcVideoReceiveChannel and WebRtcVoiceReceiveChannel use safety flags so that we protect from any misuse pointers.\n\n* Source/ThirdParty/libwebrtc/Source/webrtc/media/engine/webrtc_video_engine.cc:\n* Source/ThirdParty/libwebrtc/Source/webrtc/media/engine/webrtc_voice_engine.cc:\n* Source/WebCore/platform/mediastream/libwebrtc/LibWebRTCProvider.cpp:\n(WebCore::LibWebRTCProvider::createPeerConnectionFactory):\n\nCanonical link: https://commits.webkit.org/317713@main",
      "email": "youenn@apple.com",
      "hash": "73766fe6de29197f943066aaa14fb7d1ca7cd009",
      "subject": "libwebrtc workerThread should be networkThread and not signalingThread"
    },
    "317714@main": {
      "author": "Brady Eidson",
      "avatar": "https://www.gravatar.com/avatar/31bed81d6d8ef517f93b30add03f5651?d=identicon\u0026s=64",
      "cl": "317714@main",
      "clUrl": "https://commits.webkit.org/317714@main",
      "description": "rdar://182612413\nhttps://bugs.webkit.org/show_bug.cgi?id=319922\n\nReviewed by Alex Christensen.\n\nThere's already many `.frame` properties on various classes on Cocoa platforms, most of which are NS/CGRect.\nThis new property is a bit confusing for devs cognitively, and also trips up tooling.\n\nLet's rename to something that already has WebKit precedent.\n\n* Source/WebKit/UIProcess/API/Cocoa/WKJSHandle.h:\n* Source/WebKit/UIProcess/API/Cocoa/WKJSHandle.mm:\n(-[WKJSHandle sourceFrame]):\n(-[_WKJSHandle frame]):\n(-[WKJSHandle frame]): Deleted.\n* Source/WebKit/UIProcess/API/Cocoa/_WKJSHandle.h:\n\nCanonical link: https://commits.webkit.org/317714@main",
      "email": "beidson@apple.com",
      "hash": "2ec7fdde9d38c50157326629df576514451468b4",
      "subject": "Rename WKJSHandle.frame to WKJSHandle.sourceFrame"
    },
    "317715@main": {
      "author": "Marcos Caceres",
      "avatar": "https://www.gravatar.com/avatar/d31c9c6a3b0af558a2945682020e5b90?d=identicon\u0026s=64",
      "cl": "317715@main",
      "clUrl": "https://commits.webkit.org/317715@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=247996\nrdar://102634281\n\nReviewed by BJ Burg.\n\nImplement the \"consume user activation of Window\" WebDriver extension command\n(POST /session/{id}/window/consume-user-activation) defined in HTML, which\nconsumes the current browsing context active window's transient user activation\nand returns whether activation was present. The command mirrors the existing\ngetComputedRole automation command, routing from the UI process to the web\nprocess to call LocalDOMWindow::consumeTransientActivation().\n\n* Source/WebDriver/Session.cpp:\n(WebDriver::Session::consumeUserActivation):\n* Source/WebDriver/Session.h:\n* Source/WebDriver/WebDriverService.cpp:\n(WebDriver::WebDriverService::consumeUserActivation):\n* Source/WebDriver/WebDriverService.h:\n* Source/WebKit/UIProcess/Automation/Automation.json:\n* Source/WebKit/UIProcess/Automation/WebAutomationSession.cpp:\n(WebKit::WebAutomationSession::consumeUserActivation):\n* Source/WebKit/UIProcess/Automation/WebAutomationSession.h:\n* Source/WebKit/UIProcess/WebPageProxy.cpp:\n* Source/WebKit/WebProcess/Automation/WebAutomationSessionProxy.cpp:\n(WebKit::WebAutomationSessionProxy::consumeUserActivation):\n* Source/WebKit/WebProcess/Automation/WebAutomationSessionProxy.h:\n* Source/WebKit/WebProcess/Automation/WebAutomationSessionProxy.messages.in:\n\nCanonical link: https://commits.webkit.org/317715@main",
      "email": "marcosc@apple.com",
      "hash": "853933be651f6b93726cecf958fe1ae84ed9f0ef",
      "subject": "[WebDriver] Implement the \"consume user activation\" command"
    },
    "317716@main": {
      "author": "Ahmad Saleem",
      "avatar": "https://www.gravatar.com/avatar/38445f84fe28aa19bfeb1f59f6559532?d=identicon\u0026s=64",
      "cl": "317716@main",
      "clUrl": "https://commits.webkit.org/317716@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319815\nrdar://182714057\n\nReviewed by Sam Weinig.\n\nThe const variadic overloads in WeakPtr.h and UniqueRef.h were\nmistakenly named is() instead of isAnyOf(), colliding with the\nconst single-argument is() overload and leaving isAnyOf() without\na const overload for these two types. Ref.h, RefPtr.h, CheckedPtr.h,\nand CheckedRef.h all name this overload isAnyOf() correctly.\n\n* Source/WTF/wtf/UniqueRef.h:\n(WTF::isAnyOf):\n* Source/WTF/wtf/WeakPtr.h:\n(WTF::isAnyOf):\n\nCanonical link: https://commits.webkit.org/317716@main",
      "email": "ahmad.saleem792+github@gmail.com",
      "hash": "cd0d2eee8a72a46efa4993c6c40e730768bae0db",
      "subject": "WeakPtr::is()/UniqueRef::is() const variadic overloads should be named isAnyOf"
    },
    "317717@main": {
      "author": "Yusuke Suzuki",
      "avatar": "https://www.gravatar.com/avatar/3455d9081295e3e740c1ffa901217d9b?d=identicon\u0026s=64",
      "cl": "317717@main",
      "clUrl": "https://commits.webkit.org/317717@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319964\nrdar://182889728\n\nReviewed by Yijia Huang.\n\nSince japanese calendar is using proleptic Gregorian calendar, for year,\nday, month, monthcode, we do not need to query to the calendar, we can\njust use ISO 8601 values. For era related ones need to query to the\nactual calendar.\n\nTest: JSTests/stress/temporal-japanese-calendar-proleptic-gregorian.js\n\n* JSTests/stress/temporal-japanese-calendar-proleptic-gregorian.js: Added.\n(shouldBe):\n(checkDateFields):\n(checkEra):\n* Source/JavaScriptCore/runtime/temporal/core/CalendarICUBridge.cpp:\n(JSC::TemporalCore::isoToCalendarFields):\n(JSC::TemporalCore::calendarMonth):\n(JSC::TemporalCore::calendarMonthCode):\n(JSC::TemporalCore::calendarDay):\n\nCanonical link: https://commits.webkit.org/317717@main",
      "email": "ysuzuki@apple.com",
      "hash": "57b041070824fe1a7ad9675c08cdb05711eadb00",
      "subject": "[JSC][Temporal] japanese calendar can use ISO year, day, month, monthcode"
    },
    "317718@main": {
      "author": "Issac Roy",
      "avatar": "https://www.gravatar.com/avatar/dad994528f617bf59fe005077d0fa8f3?d=identicon\u0026s=64",
      "cl": "317718@main",
      "clUrl": "https://commits.webkit.org/317718@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319400\nrdar://157892382\n\nReviewed by Aakash Jain.\n\nEWSContext defines the EWS results schema (bug 319113); this adds the read\nand write path on top of it. register() classifies a run's unexpected\nfailures and stores them, routing to the flaky table when given a\nflaky_type and the failed table otherwise, and find_for_test() queries\neither table via a flaky flag. EWSContext is wired into Model, with a mock\nhelper (add_mock_ews_results) and unit tests.\n\nThis also refines the landed skeleton: the result column becomes result_id,\na build_number column is added, and a Source value type bundles the\nprovenance columns (remote, pr_number, commit_hash, build_number).\n\n* Tools/Scripts/libraries/resultsdbpy/resultsdbpy/model/ews_context.py:\n(Source):\n(Source.unpack):\n(EWSContext):\n(EWSContext.EWSResultsBase):\n(EWSContext.EWSResultsBase.unpack):\n(EWSContext.EWSFailedTestsByCommit):\n(EWSContext.EWSFlakyTestsByCommit):\n(EWSContext.__init__):\n(EWSContext.register):\n(EWSContext._classify_unexpected):\n(EWSContext.find_for_test):\n* Tools/Scripts/libraries/resultsdbpy/resultsdbpy/model/ews_context_unittest.py: Added.\n(EWSContextTest):\n(EWSContextTest.init_database):\n(EWSContextTest._find):\n(EWSContextTest.test_unexpected_failures_stored):\n(EWSContextTest.test_metadata_stored):\n(EWSContextTest.test_flaky_results_stored):\n(EWSContextTest.test_retries_preserved_for_same_commit):\n(EWSContextTest.test_no_unexpected_failures):\n(EWSContextTest.test_no_results):\n* Tools/Scripts/libraries/resultsdbpy/resultsdbpy/model/mock_model_factory.py:\n(MockModelFactory):\n(MockModelFactory.add_mock_ews_results):\n* Tools/Scripts/libraries/resultsdbpy/resultsdbpy/model/model.py:\n(Model.__init__):\n\nCanonical link: https://commits.webkit.org/317718@main",
      "email": "issacroy05@gmail.com",
      "hash": "ae1867e8e9b49ece369b854297943d87959980ee",
      "subject": "Store and query EWS test results in the results database"
    },
    "317719@main": {
      "author": "Tom Greenslade",
      "avatar": "https://www.gravatar.com/avatar/1e93780f3d216ef56b718cd0386916c7?d=identicon\u0026s=64",
      "cl": "317719@main",
      "clUrl": "https://commits.webkit.org/317719@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319982\n\nReviewed by Patrick Griffis.\n\nProblems fixed:\n\n1)\nconst usage in Source/WebCore/crypto/openssl/CryptoKeyRSAOpenSSL.cpp\nhttps://docs.openssl.org/3.0/man7/migration_guide/#functions-that-return-an-internal-key-should-be-treated-as-read-only\n\"the value returned from EVP_PKEY_get0_RSA(3), ... have been made const\"\n\n2)\nFeature test ifdefs in Source/WebCore/crypto/openssl/CryptoAlgorithmRSA_OAEPOpenSSL.cpp no longer work\nhttps://github.com/WebKit/WebKit/blob/6d8ca7e79a097c2013cf960c16489930cad90f11/Source/WebCore/crypto/openssl/CryptoAlgorithmRSA_OAEPOpenSSL.cpp#L39\nThese were macros in OpenSSL 1.x, but are now real functions in OpenSSL 3.x:\nhttps://docs.openssl.org/3.0/man3/EVP_PKEY_CTX_ctrl/#history \"In OpenSSL 1.1.1 and below the functions were mostly macros. From OpenSSL 3.0 they are all functions.\"\nSo the ifdefs do not see the macros defined (because they are now functions), so the code incorrectly returns ExceptionCode::NotSupportedError.\nThe solution is to remove these feature checks, surely no one is still using OpenSSL 0.x from before these were added as macros.\n\n3)\nRuntime GCM failures. In Source/WebCore/crypto/openssl/CryptoAlgorithmAESGCMOpenSSL.cpp EVP_CIPHER_CTX_set_padding() is called *before*\nEVP_EncryptInit_ex() and EVP_DecryptInit_ex().\nThe OpenSSL documentation says:\n\"This function should be called after the context is set up for encryption or decryption\"\nhttps://docs.openssl.org/3.0/man3/EVP_EncryptInit/#description .\nIn OpenSSL 1.x this did not matter because EVP_EncryptInit_ex() always returned 1:\nhttps://github.com/openssl/openssl/blob/OpenSSL_1_1_1-stable/crypto/evp/evp_enc.c#L650 ,\nbut in OpenSSL 3.x it can return 0 if it is called incorrectly, as here with a null ctx-\u003ecipher.\nThe solution is to move the function calls after the init functions.\n\nNo new tests: fixes behaviour in non default configuration\n\n* Source/WebCore/crypto/openssl/CryptoAlgorithmAESGCMOpenSSL.cpp: move EVP_CIPHER_CTX_set_padding() calls\n(WebCore::cryptEncrypt): move EVP_CIPHER_CTX_set_padding() call after EVP_EncryptInit_ex()\n(WebCore::cryptDecrypt): move EVP_CIPHER_CTX_set_padding() call after EVP_DecryptInit_ex()\n* Source/WebCore/crypto/openssl/CryptoAlgorithmRSA_OAEPOpenSSL.cpp: delete broken feature check #ifs\n(WebCore::CryptoAlgorithmRSA_OAEP::platformEncrypt): delete broken feature check #if\n(WebCore::CryptoAlgorithmRSA_OAEP::platformDecrypt): delete broken feature check #if\n* Source/WebCore/crypto/openssl/CryptoAlgorithmRSA_PSSOpenSSL.cpp: delete broken feature check #ifs\n(WebCore::CryptoAlgorithmRSA_PSS::platformSign): delete broken feature check #if\n(WebCore::CryptoAlgorithmRSA_PSS::platformVerify): delete broken feature check #if\n* Source/WebCore/crypto/openssl/CryptoKeyRSAOpenSSL.cpp: Add const to match OpenSSL 3.x API changes\n(WebCore::getRSAModulusLength): add const\n(WebCore::CryptoKeyRSA::keySizeInBits const): add const\n(WebCore::CryptoKeyRSA::algorithm const): add const\n(WebCore::CryptoKeyRSA::exportData const): add const\n\nCanonical link: https://commits.webkit.org/317719@main",
      "email": "thomgree@cisco.com",
      "hash": "86b93412c2ed0729569d01cef74410c689827f2e",
      "subject": "OpenSSL 3.x compatibility improvements"
    },
    "317720@main": {
      "author": "Basuke Suzuki",
      "avatar": "https://www.gravatar.com/avatar/5192a1151c7575317affb7a4633f8d63?d=identicon\u0026s=64",
      "cl": "317720@main",
      "clUrl": "https://commits.webkit.org/317720@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319994\nrdar://182925790\n\nReviewed by Alex Christensen.\n\nAdd the WebTransport.exportKeyingMaterial() IDL surface so the WebTransport\nidlharness WPT conformance checks pass. This covers the interface shape only:\nthe IDL operation, the prototype property, and argument-arity behavior. The\nimplementation rejects the returned promise with NotSupportedError because\nderiving TLS keying material requires a Network.framework SPI that libnetcore\ndoes not yet expose; the functional implementation remains tracked by\nrdar://167646346.\n\nClears 3 idlharness subtest FAILs per variant across the 4 webtransport\nidlharness variants. No IPC or network-process changes.\n\n* LayoutTests/imported/w3c/web-platform-tests/webtransport/idlharness.https.sub.any-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/webtransport/idlharness.https.sub.any.serviceworker-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/webtransport/idlharness.https.sub.any.sharedworker-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/webtransport/idlharness.https.sub.any.worker-expected.txt:\n* Source/WebCore/Modules/webtransport/WebTransport.cpp:\n(WebCore::WebTransport::exportKeyingMaterial):\n* Source/WebCore/Modules/webtransport/WebTransport.h:\n* Source/WebCore/Modules/webtransport/WebTransport.idl:\n\nCanonical link: https://commits.webkit.org/317720@main",
      "email": "basuke@apple.com",
      "hash": "0c4a8543bea68b7d8743d046e5113bbf67b1125d",
      "subject": "[WebTransport] Add exportKeyingMaterial() IDL interface"
    },
    "317721@main": {
      "author": "Carlos Garcia Campos",
      "avatar": "https://www.gravatar.com/avatar/8393f7e76d83c8a147cb852d8fb1a959?d=identicon\u0026s=64",
      "cl": "317721@main",
      "clUrl": "https://commits.webkit.org/317721@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319986\n\nReviewed by Simon Fraser.\n\nRenderLayer::localClipRect() is public, but only used by\nRenderLayer::calculateLayerBounds() so it could be simplified by making\nit a simple lambda inside calculateLayerBounds(). This way we don't need\nthe LocalClipRectMode enum nor the clipExceedsBounds out parameter.\n\nNo new tests since this shouldn't change the behavior.\n\n* Source/WebCore/rendering/RenderLayer.cpp:\n(WebCore::RenderLayer::calculateClipRects const):\n* Source/WebCore/rendering/RenderLayer.h:\n\nCanonical link: https://commits.webkit.org/317721@main",
      "email": "cgarcia@igalia.com",
      "hash": "b995ec5503b1137d52b9c3b0225958cdf42c1ac1",
      "subject": "Simplify RenderLayer::calculateLayerBounds() to compute the local clip rect"
    },
    "317722@main": {
      "author": "Vitor Roriz",
      "avatar": "https://www.gravatar.com/avatar/5dafdad90c36e85902302c3a586a531c?d=identicon\u0026s=64",
      "cl": "317722@main",
      "clUrl": "https://commits.webkit.org/317722@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=309793\nrdar://169616107\n\nReviewed by Ryosuke Niwa, Zak Ridouh, and Brent Fulgham.\n\nWebCore::Font uses non-thread-safe RefCounted. A DrawGlyphs display list item holds\na Ref\u003cconst Font\u003e, and a DisplayList-backed ImageBuffer can be transferred to another\nRemoteRenderingBackend, which runs on its own work-queue thread. After the transfer\nboth threads run ref and deref on the same Font, which races the non-atomic refcount\nand leads to a use-after-free.\n\nMaking Font ThreadSafeRefCounted would require dropping its single-thread weak\npointers (e.g. GlyphPage weakly points back at its Font to break the Font/GlyphPage\nownership cycle) in favor of strong references, which would change Font lifetime:\nfonts would retain each other and could no longer be purged.\n\nInstead, when a display list is transferred, replace each Font it references with the\ndata needed to rebuild it (its FontInternalAttributes and FontPlatformData) on the\nsource backend thread, and rebuild the Font on the destination backend thread,\nrecursing into nested DrawDisplayList items. Font stamps its single-thread weak\npointer with the thread that constructs it, so rebuilding on the destination keeps\neach Font constructed, used and destroyed on a single thread. The rebuild data holds\nno single-thread state, and its FontPlatformData internals (FontCustomPlatformData,\nand on Skia SkiaHarfBuzzFont) are made ThreadSafeRefCounted, so it is safe to move\nacross the two threads.\n\nSeparately, ImageBufferDisplayListBackend::copyNativeImage now replays through the\nbackend own ControlFactory instead of the main-thread ControlFactory::singleton(),\nwhich is not safe to access off the main thread.\n\n* Source/WebCore/platform/graphics/FontCustomPlatformData.h:\n* Source/WebCore/platform/graphics/skia/SkiaHarfBuzzFont.h:\n* Source/WebCore/platform/graphics/displaylists/DisplayListItems.h:\n(WebCore::DisplayList::DrawGlyphs::font):\n(WebCore::DisplayList::DrawGlyphs::replaceFontWithRebuildData):\n(WebCore::DisplayList::DrawGlyphs::rebuildFont):\n* Source/WebCore/platform/graphics/displaylists/DisplayListItems.cpp:\n(WebCore::DisplayList::DrawGlyphs::apply):\n(WebCore::DisplayList::DrawDisplayList::setDisplayList):\n* Source/WebCore/platform/graphics/displaylists/DisplayListRecorderImpl.h:\n* Source/WebCore/platform/graphics/displaylists/DisplayListRecorderImpl.cpp:\n(WebCore::DisplayList::RecorderImpl::replaceFontsWithRebuildData):\n(WebCore::DisplayList::RecorderImpl::rebuildFonts):\n* Source/WebCore/platform/graphics/ImageBuffer.h:\n* Source/WebCore/platform/graphics/ImageBuffer.cpp:\n(WebCore::ImageBuffer::replaceFontsWithRebuildData):\n(WebCore::ImageBuffer::rebuildFonts):\n* Source/WebCore/platform/graphics/ImageBufferBackend.h:\n(WebCore::ImageBufferBackend::replaceFontsWithRebuildData):\n(WebCore::ImageBufferBackend::rebuildFonts):\n* Source/WebCore/platform/graphics/ImageBufferDisplayListBackend.h:\n* Source/WebCore/platform/graphics/ImageBufferDisplayListBackend.cpp:\n(WebCore::ImageBufferDisplayListBackend::copyNativeImage):\n(WebCore::ImageBufferDisplayListBackend::replaceFontsWithRebuildData):\n(WebCore::ImageBufferDisplayListBackend::rebuildFonts):\n* Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.cpp:\n(WebKit::RemoteRenderingBackend::moveToSerializedBuffer):\n(WebKit::RemoteRenderingBackend::moveToImageBuffer):\n* LayoutTests/ipc/move-to-image-buffer-cross-thread-font-crash.html: Added.\n* LayoutTests/ipc/move-to-image-buffer-cross-thread-font-crash-expected.txt: Added.\n\nCanonical link: https://commits.webkit.org/317722@main",
      "email": "vitor.roriz@apple.com",
      "hash": "ad056c8f508834087113e86119ef9b922886ab84",
      "subject": "Copy fonts when transferring a display list between RemoteRenderingBackends"
    },
    "317723@main": {
      "author": "Anand Srinivasan",
      "avatar": "https://www.gravatar.com/avatar/84643a20c269974c2df6681742daf0a4?d=identicon\u0026s=64",
      "cl": "317723@main",
      "clUrl": "https://commits.webkit.org/317723@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319296\nrdar://182132863\n\nReviewed by Yijia Huang and Yusuke Suzuki.\n\ngetNamedTimeZoneEpochNanoseconds makes a number of ICU calls which could\nbe reduced by invoking ICU function ucal_getTimeZoneOffsetFromLocal to\ndeal with time zone offsets. New JSTests/ microbenchmark appears\nperformance neutral.\n\n                                                     ToT                     Patched\n\ntemporal-zoned-date-time-from-named-time-zone  19.3681+-0.0994           19.3105+-0.0791\n\u003cgeometric\u003e                                    19.3681+-0.0994           19.3105+-0.0791          might be 1.0030x faster\n\n* JSTests/microbenchmarks/temporal-zoned-date-time-from-named-time-zone.js: Added.\n* Source/JavaScriptCore/runtime/temporal/core/TimeZoneICUBridge.cpp:\n\nCanonical link: https://commits.webkit.org/317723@main",
      "email": "anand_srinivasan@apple.com",
      "hash": "df073f7df0ffd5ca628c52d47943c54cad3d5cd9",
      "subject": "Clean up JS Temporal getNamedTimeZoneEpochNanoseconds"
    },
    "317724@main": {
      "author": "Youenn Fablet",
      "avatar": "https://www.gravatar.com/avatar/0a9886e582a7aee1eb908eb59af36da4?d=identicon\u0026s=64",
      "cl": "317724@main",
      "clUrl": "https://commits.webkit.org/317724@main",
      "description": "rdar://182510365\nhttps://bugs.webkit.org/show_bug.cgi?id=319667\n\nReviewed by Alex Christensen.\n\nWe add a runtime flag to control fetch stream uploads.\nWhen flag is on, we pass a stream identifier as part of a form data.\nThis is sent over to the networking process that can read it via FormDataStreamCFNet.\n\nWe update FormDataStreamCFNet to handle this case and fail the load as a temporary measure.\nA follow-up patch will tie the FormData with NetworkDataTaskCocoa to detect whether H1 or H2.\n\nWe do not yet support reading a stream form data from a service worker, we currently reject with NotSupportedError.\nA follow-up patch will fix this.\n\nWe explicitly fail the load in NetworkDataTaskSoup for now to align with cocoa.\n\nCovered by existing and rebased tests.\n\n* LayoutTests/http/wpt/fetch/fetch-request-with-stream-body.html:\n* LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-upload.any-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-upload.any.serviceworker-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-upload.any.sharedworker-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-upload.any.worker-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/fetch/api/redirect/redirect-upload.h2.any-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/fetch/api/redirect/redirect-upload.h2.any.serviceworker-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/fetch/api/redirect/redirect-upload.h2.any.sharedworker-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/fetch/api/redirect/redirect-upload.h2.any.worker-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/fetch-event.https-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/fetch-event.https.h2-expected.txt:\n* LayoutTests/platform/glib/imported/w3c/web-platform-tests/fetch/api/basic/request-upload.any-expected.txt:\n* LayoutTests/platform/glib/imported/w3c/web-platform-tests/fetch/api/basic/request-upload.any.serviceworker-expected.txt:\n* LayoutTests/platform/glib/imported/w3c/web-platform-tests/fetch/api/basic/request-upload.any.sharedworker-expected.txt:\n* LayoutTests/platform/glib/imported/w3c/web-platform-tests/fetch/api/basic/request-upload.any.worker-expected.txt:\n* Source/WTF/Scripts/Preferences/UnifiedWebPreferences.yaml:\n* Source/WebCore/Headers.cmake:\n* Source/WebCore/Modules/fetch/FetchBody.cpp:\n(WebCore::FetchBody::bodyAsFormData const):\n* Source/WebCore/Modules/fetch/FetchResponse.cpp:\n(WebCore::FetchResponse::fetch):\n* Source/WebCore/Modules/fetch/FormDataConsumer.cpp:\n(WebCore::FormDataConsumer::read):\n* Source/WebCore/WebCore.xcodeproj/project.pbxproj:\n* Source/WebCore/platform/network/FormData.cpp:\n(WebCore::FormData::create):\n(WebCore::FormDataElement::lengthInBytes const):\n(WebCore::FormDataElement::isolatedCopy const):\n(WebCore::FormData::isPendingStream const):\n(WebCore::FormData::resolveBlobReferences):\n* Source/WebCore/platform/network/FormData.h:\n(WebCore::FormDataElement::FormDataElement):\n(WebCore::FormDataElement::operator== const):\n* Source/WebCore/platform/network/PendingStreamIdentifier.h: Added.\n* Source/WebCore/platform/network/cf/FormDataStreamCFNet.mm:\n(WebCore::advanceCurrentStream):\n(WebCore::formOpen):\n(WebCore::formRead):\n(WebCore::formCanRead):\n(WebCore::formCopyProperty):\n(WebCore::createHTTPBodyCFReadStream):\n* Source/WebCore/platform/network/curl/CurlFormDataStream.cpp:\n(WebCore::CurlFormDataStream::read):\n* Source/WebCore/platform/network/soup/WebKitFormDataInputStream.cpp:\n(webkitFormDataInputStreamCreateNextStream):\n* Source/WebKit/NetworkProcess/NetworkDataTask.cpp:\n(WebKit::NetworkDataTask::NetworkDataTask):\n* Source/WebKit/NetworkProcess/NetworkDataTask.h:\n(WebKit::NetworkDataTask::hasPendingStreamBody const):\n* Source/WebKit/NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:\n(WebKit::NetworkDataTaskCocoa::NetworkDataTaskCocoa):\n* Source/WebKit/NetworkProcess/soup/NetworkDataTaskSoup.cpp:\n(WebKit::NetworkDataTaskSoup::createRequest):\n* Source/WebKit/Scripts/webkit/messages.py:\n(atomic_object_identifier):\n(serialized_identifiers):\n* Source/WebKit/Scripts/webkit/opaque_ipc_types.tracking.in:\n* Source/WebKit/Shared/WTFArgumentCoders.serialization.in:\n* Source/WebKit/Shared/WebCoreArgumentCoders.serialization.in:\n* Source/WebKit/WebProcess/WebCoreSupport/SessionStateConversion.cpp:\n(WebKit::toHTTPBody):\n\nCanonical link: https://commits.webkit.org/317724@main",
      "email": "youenn@apple.com",
      "hash": "0a676123bd679af5b6d5f7c9be6e967b4437fab3",
      "subject": "Start implementing fetch stream uploads"
    },
    "317725@main": {
      "author": "Basuke Suzuki",
      "avatar": "https://www.gravatar.com/avatar/5192a1151c7575317affb7a4633f8d63?d=identicon\u0026s=64",
      "cl": "317725@main",
      "clUrl": "https://commits.webkit.org/317725@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319992\nrdar://182923403\n\nReviewed by Alex Christensen.\n\n317696@main (\"Enable ASM support in dav1d\") changed config.h so that\nHAVE_ASM=1 on arm64 and updated the Xcode project to compile the arm64\n.S assembly, but Source/ThirdParty/dav1d/CMakeLists.txt was left behind.\nThe ASM-enabled C then referenced dav1d_*_neon symbols with no assembly\ncompiled, breaking the arm64 CMake build.\n\nCompile the arm64 .S files (and the generic arm/cpu.c) in the CMake build\nwhen WTF_CPU_ARM64, mirroring the aarch64 source list in src/meson.build.\nThe .S files are compiled once into a dedicated OBJECT library (no BITDEPTH)\nand set their own architecture via .arch, so no extra assembler flags are\nneeded. Other architectures keep HAVE_ASM=0 and build no assembly.\n\n* Source/ThirdParty/dav1d/CMakeLists.txt:\n\nCanonical link: https://commits.webkit.org/317725@main",
      "email": "basuke@apple.com",
      "hash": "7baf27bd15e01df68926be1e9d36361e20a5fbdb",
      "subject": "Fix CMake build on arm64 broken by 317696@main (Enable ASM support in dav1d)"
    },
    "317726@main": {
      "author": "Yusuke Suzuki",
      "avatar": "https://www.gravatar.com/avatar/3455d9081295e3e740c1ffa901217d9b?d=identicon\u0026s=64",
      "cl": "317726@main",
      "clUrl": "https://commits.webkit.org/317726@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319991\nrdar://182920842\n\nReviewed by Yijia Huang.\n\nThis patch adds strength reduction rules for\n\n    VectorZipHigher(a, all-zeros)\n    VectorZipLower(a, all-zeros)\n\nTaking low / high part of each narrow lane and extending it with zeros,\nso this is VectorExtendHigh / VectorExtendLow.\n\nTests: Source/JavaScriptCore/b3/testb3_1.cpp\n       Source/JavaScriptCore/b3/testb3_7.cpp\n\n* Source/JavaScriptCore/b3/B3ReduceStrength.cpp:\n* Source/JavaScriptCore/b3/testb3.h:\n* Source/JavaScriptCore/b3/testb3_1.cpp:\n(run):\n* Source/JavaScriptCore/b3/testb3_7.cpp:\n(testVectorZipZeroExtendForLane):\n(testVectorZipWithZeroIsZeroExtend):\n\nCanonical link: https://commits.webkit.org/317726@main",
      "email": "ysuzuki@apple.com",
      "hash": "d8082ccd8788955200b95084e2bad3e933fdff05",
      "subject": "[JSC] Add VectorZipX(a, all-zeros) strength reduction"
    },
    "317727@main": {
      "author": "Razvan Caliman",
      "avatar": "https://www.gravatar.com/avatar/e35c40637d6bc28b86585f2cf1b2e1ca?d=identicon\u0026s=64",
      "cl": "317727@main",
      "clUrl": "https://commits.webkit.org/317727@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319988\nrdar://169956207\n\nReviewed by Qianlang Chen and Devin Rousso.\n\nSnapshot of inspector protocol changes since 26.4.\n\n* Source/WebInspectorUI/UserInterface/Protocol/Legacy/iOS/27.0/InspectorBackendCommands.js: Added.\n* Source/WebInspectorUI/UserInterface/Protocol/Legacy/macOS/27.0/InspectorBackendCommands.js: Added.\n* Source/WebInspectorUI/UserInterface/Views/DOMTreeContentView.js:\n(WI.DOMTreeContentView.prototype._populateConfigureDOMTreeBadgesNavigationItemContextMenu):\n* Source/WebInspectorUI/Versions/Inspector-iOS-27.0.json: Added.\n* Source/WebInspectorUI/Versions/Inspector-macOS-27.0.json: Added.\n\nCanonical link: https://commits.webkit.org/317727@main",
      "email": "rcaliman@apple.com",
      "hash": "e6d773b354eff8b8b81b3c17dbabdcc0fa874e10",
      "subject": "Web Inspector: Add Versioned Protocol for iOS 27.0 and macOS 27.0"
    },
    "317728@main": {
      "author": "David Kilzer",
      "avatar": "https://www.gravatar.com/avatar/e228ffc7a792e70bf2d160563c18dcc6?d=identicon\u0026s=64",
      "cl": "317728@main",
      "clUrl": "https://commits.webkit.org/317728@main",
      "description": "\u003chttps://bugs.webkit.org/show_bug.cgi?id=319979\u003e\n\u003crdar://182796386\u003e\n\nReviewed by Youenn Fablet.\n\n`AudioVideoRendererAVFObjC` requires main-thread destruction.  Its\ndestructor tears down AVFoundation objects, removes its synchronizer\ntime observer, and calls `VideoMediaSampleRenderer::shutdown()`, whose\nfirst statement asserts it is running on the main thread.\n\nSpecify `DestructionThread::Main` so the final dereference routes\ndeletion through the main thread regardless of which thread drops the\nlast reference, matching the destruction-thread policy already used by\n`VideoMediaSampleRenderer` and the sibling AVFoundation renderers.\n\nNo new tests since this change is not directly testable.\n\n* Source/WebCore/platform/graphics/avfoundation/AudioVideoRendererAVFObjC.h:\n\nCanonical link: https://commits.webkit.org/317728@main",
      "email": "ddkilzer@apple.com",
      "hash": "2f17ef9754178289bbf6953e4e54a4811bb77489",
      "subject": "REGRESSION (315527@main): AudioVideoRendererAVFObjC must be destroyed on the main thread"
    },
    "317729@main": {
      "author": "Ahmad Saleem",
      "avatar": "https://www.gravatar.com/avatar/38445f84fe28aa19bfeb1f59f6559532?d=identicon\u0026s=64",
      "cl": "317729@main",
      "clUrl": "https://commits.webkit.org/317729@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319965\nrdar://182891397\n\nReviewed by Sam Sneddon.\n\nimport-w3c-tests only copied META: variant= lines into the generated\nHTML wrapper for .any.js tests. For .window.js and .worker.js tests,\nwrite_html_files_for_templated_js_tests() wrote a wrapper with no\nvariant info at all, so WebKit's test runner never split the test\ninto one run per variant. The test instead ran once with an empty\nlocation.search, which addWindow-urlType.window.js and\naddIframe-urlType.window.js treat as an unhandled urlType and throw.\n\nRead variants from the .window.js/.worker.js source the same way\n.any.js already does, and pass them through to the generated\nwrapper's META: variant= comments so each variant runs and gets its\nown expected result.\n\n* LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/remote-context-helper-tests/addIframe-urlType.window-expected.txt: Removed.\n* LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/remote-context-helper-tests/addIframe-urlType.window.html:\n* LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/remote-context-helper-tests/addIframe-urlType.window_urlType=blank-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/remote-context-helper-tests/addIframe-urlType.window_urlType=blob-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/remote-context-helper-tests/addIframe-urlType.window_urlType=data-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/remote-context-helper-tests/addIframe-urlType.window_urlType=origin-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/remote-context-helper-tests/addWindow-urlType.window-expected.txt: Removed.\n* LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/remote-context-helper-tests/addWindow-urlType.window.html:\n* LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/remote-context-helper-tests/addWindow-urlType.window_urlType=blank-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/remote-context-helper-tests/addWindow-urlType.window_urlType=blob-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/remote-context-helper-tests/addWindow-urlType.window_urlType=origin-expected.txt: Added.\n* Tools/Scripts/webkitpy/w3c/test_importer.py:\n(TestImporter.write_html_files_for_templated_js_tests):\n* Tools/Scripts/webkitpy/w3c/test_importer_unittest.py:\n\nCanonical link: https://commits.webkit.org/317729@main",
      "email": "ahmad.saleem792+github@gmail.com",
      "hash": "a7db8ec7ef72f912d9caa27928be356bb7b7bf7a",
      "subject": "[WPT import] META: variant= is not expanded into the generated wrapper for .window.js/.worker.js templated tests"
    },
    "317730@main": {
      "author": "Yusuke Suzuki",
      "avatar": "https://www.gravatar.com/avatar/3455d9081295e3e740c1ffa901217d9b?d=identicon\u0026s=64",
      "cl": "317730@main",
      "clUrl": "https://commits.webkit.org/317730@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319951\nrdar://182872024\n\nReviewed by Sosuke Suzuki.\n\nApply more FTL select operations for arithmetic ops diamond to remove\nmicro basic blocks.\n\n* Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:\n(JSC::FTL::DFG::LowerDFGToB3::compileArithRound):\n(JSC::FTL::DFG::LowerDFGToB3::compileCompareStrictEq):\n\nCanonical link: https://commits.webkit.org/317730@main",
      "email": "ysuzuki@apple.com",
      "hash": "4d7b4aee32e5575bf55de5e18d88b427814503da",
      "subject": "[JSC] Use more FTL select for arithmetic ops"
    },
    "317731@main": {
      "author": "Adrian Perez de Castro",
      "avatar": "https://www.gravatar.com/avatar/30ffea8cf404586741a8f5f7110c0914?d=identicon\u0026s=64",
      "cl": "317731@main",
      "clUrl": "https://commits.webkit.org/317731@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319897\n\nReviewed by Carlos Garcia Campos.\n\nUpstream Skia has changed the compiler flags used to enable AVX{2,512}\noptimizations in commit fceaf4cd95c949775480a61bb695019441fe84ce to use\nthe more standard -march=x86-64-v{3,4} compiler options, as those were\nthe flags used in Chromium builds.\n\nUse the same in the WebKit CMake build system to ensure that the bundled\nSkia gets built in the same way tested by upstream. To avoid unpleasant\nsurprises in case a compiler may not support the flags, keep the ones\npreviously used as a fallback.\n\n* Source/ThirdParty/skia/CMakeLists.txt:\n\nCanonical link: https://commits.webkit.org/317731@main",
      "email": "aperez@igalia.com",
      "hash": "47c965b7fc19df90c48e7eb2becef6a22dd291bd",
      "subject": "[CMake][Skia] Prefer more standard AVX512 and AVX2 compiler flags"
    },
    "317732@main": {
      "author": "Utku Uckun",
      "avatar": "https://www.gravatar.com/avatar/422449808fc4f6e8b91d3e02e2e60b3d?d=identicon\u0026s=64",
      "cl": "317732@main",
      "clUrl": "https://commits.webkit.org/317732@main",
      "description": "Reviewed by Tyler Wilcock.\n\nAdds a new accessibility custom action, AXShowWritingTools, exposed on editable text fields (textareas, editable web areas, elements with an editable ancestor) whenever\n  Writing Tools is actually available for that content — e.g. announced to VoiceOver/AX clients as an action a screen-reader user can invoke to bring up the Writing\n  Tools affordance. It correctly disappears for non-editable content and for fields where Writing Tools is disallowed (e.g. password fields).\n\n  The plumbing, layer by layer\n\n  1. Availability signal — ChromeClient (Source/WebCore/page/ChromeClient.h)\n  Two new virtual hooks: writingToolsAvailable() (query) and showWritingToolsAffordance() (invoke). WebChromeClient (WebKit's ChromeClient implementation, in\n  WebProcess/WebCoreSupport/WebChromeClient.cpp/.h) implements both by forwarding to WebPage.\n\n  2. WebProcess side — WebPage (WebProcess/WebPage/WebPage.h, WebPageCocoa.mm)\n  - m_writingToolsAvailable — a bool cached in the WebProcess, exposed via writingToolsAvailable().\n  - setWritingToolsAvailable(bool) — setter, driven by a new IPC message SetWritingToolsAvailable from the UIProcess (declared in WebPage.messages.in).\n  - showWritingToolsAffordance() — sends a ShowWritingToolsAffordance message up to the UIProcess (new entry in WebPageProxy.messages.in).\n\n  3. UIProcess side — WebPageProxy (UIProcess/WebPageProxy.cpp/.h)\n  - writingToolsBehavior() (pre-existing) computes whether Writing Tools should be None/Limited/Complete for the current editor state (selection type,\n  password-field/plugin exclusions, page-wide editability, and the WKWebViewConfiguration setting).\n  - New: updateWritingToolsAvailability() — sends SetWritingToolsAvailable(writingToolsBehavior() != None) down to WebPage. This is the piece I added during debugging\n  (explained below).\n  - showWritingToolsAffordance(IPC::Connection\u0026) (WebPageProxyCocoa.mm) — receives the WebProcess's request and forwards it to PageClient.\n  - PageClient/PageClientImplMac (UIProcess/PageClient.h, UIProcess/mac/PageClientImplMac.h/.mm) — showWritingToolsAffordance() triggers the actual native Writing Tools\n  UI via showWritingTools(WTRequestedToolIndex).\n\n  4. The accessibility action itself — WebAccessibilityObjectWrapperMac.mm\n  - accessibilityActionNames — appends AXShowWritingTools to the action list when the object is a text area/editable-web-area/has-editable-ancestor and\n  chrome().client().writingToolsAvailable() is true.\n  - accessibilityPerformAction: — handles invoking AXShowWritingTools by calling chrome().client().showWritingToolsAffordance() on the main thread.\n  - accessibilityActionDescription: — returns a human-readable label via the new AXShowWritingToolsLabel() string (added to LocalizedStrings.cpp/.h) instead of falling\n  through to the generic \"no custom actions\" default.\n\nTest: accessibility/mac/show-writing-tools-action.html\n\n* LayoutTests/accessibility/mac/show-writing-tools-action-expected.txt: Added.\n* LayoutTests/accessibility/mac/show-writing-tools-action.html: Added.\n* Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.mm:\n(-[WebAccessibilityObjectWrapper accessibilityActionNames]):\n(-[WebAccessibilityObjectWrapper accessibilityPerformAction:]):\n(-[WebAccessibilityObjectWrapper accessibilityActionDescription:]):\n* Source/WebCore/page/ChromeClient.h:\n(WebCore::ChromeClient::showWritingToolsAffordance):\n(WebCore::ChromeClient::writingToolsAvailable const):\n* Source/WebCore/platform/LocalizedStrings.cpp:\n(WebCore::AXShowWritingToolsLabel):\n* Source/WebCore/platform/LocalizedStrings.h:\n* Source/WebKit/UIProcess/Cocoa/WebPageProxyCocoa.mm:\n(WebKit::WebPageProxy::showWritingToolsAffordance):\n* Source/WebKit/UIProcess/PageClient.h:\n(WebKit::PageClient::showWritingToolsAffordance):\n* Source/WebKit/UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.mm:\n(WebKit::RemoteLayerTreeDrawingAreaProxy::commitLayerTree):\n* Source/WebKit/UIProcess/WebPageProxy.cpp:\n(WebKit::WebPageProxy::editorStateChanged):\n(WebKit::WebPageProxy::updateWritingToolsAvailability):\n* Source/WebKit/UIProcess/WebPageProxy.h:\n* Source/WebKit/UIProcess/WebPageProxy.messages.in:\n* Source/WebKit/UIProcess/mac/PageClientImplMac.h:\n* Source/WebKit/UIProcess/mac/PageClientImplMac.mm:\n(WebKit::PageClientImpl::showWritingToolsAffordance):\n* Source/WebKit/WebProcess/WebCoreSupport/WebChromeClient.cpp:\n(WebKit::WebChromeClient::showWritingToolsAffordance):\n(WebKit::WebChromeClient::writingToolsAvailable const):\n* Source/WebKit/WebProcess/WebCoreSupport/WebChromeClient.h:\n* Source/WebKit/WebProcess/WebPage/Cocoa/WebPageCocoa.mm:\n(WebKit::WebPage::showWritingToolsAffordance):\n(WebKit::WebPage::setWritingToolsAvailable):\n* Source/WebKit/WebProcess/WebPage/WebPage.h:\n* Source/WebKit/WebProcess/WebPage/WebPage.messages.in:\n\nCanonical link: https://commits.webkit.org/317732@main",
      "email": "utku.uckun@gmail.com",
      "hash": "c9fef076099c4c9696945247550c8e7405b0d446",
      "subject": "AX: Web text field should have accessibility custom action to bring up the new Siri writing tools UI https://bugs.webkit.org/show_bug.cgi?id=319444 rdar://182257138"
    },
    "317733@main": {
      "author": "Richard Robinson",
      "avatar": "https://www.gravatar.com/avatar/a0d2f862985ed0fd47887be66f5a3e4f?d=identicon\u0026s=64",
      "cl": "317733@main",
      "clUrl": "https://commits.webkit.org/317733@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319700\nrdar://182543552\n\nReviewed by Abrar Rahman Protyasha.\n\nClicking and dragging on an image should select the image's recognized text via Live Text when it\ncontains any, and otherwise fall through to the existing drag / context-menu behavior.\n\nImplement this behavior using three new gesture recognizers:\n\n1. A preflight NSPressGestureRecognizer (`_imageAnalysisGestureRecognizer`): a short, stationary\nlong-press that, once it settles on an analyzable image, kicks off Vision image analysis. It\nrecognizes simultaneously with everything, prevents nothing, and is always allowed to begin.\n\n2. `_imageAnalysisTextSelectionDeferringGestureRecognizer`: holds the text-selection gestures over\nan image until analysis resolves.\n\n3. `_imageAnalysisDragAndContextMenuDeferringGestureRecognizer`: holds the drag-press and\nsecondary-click (context menu) recognizers over an image until analysis resolves.\n\nTwo deferrals are required because WKDeferringGestureRecognizer's `endDeferralShouldPreventGestures`\napplies a single boolean (recognized -\u003e .ended / prevents, or failed -\u003e allows) to *every* gesture\nit defers, whereas text selection and the drag / context-menu fallback must resolve to opposite\noutcomes: on \"text found\" we allow text selection and prevent the fallback (Live Text wins), and\nthe reverse on \"no text\". iOS needs only one deferral because its drag / context menu are UIKit\ninteractions gated by a ProceedWithTextSelectionInImage callback; macOS drag-press and secondary-click\nare independent NSGestureRecognizers on their own timers, so they must be deferred to keep them\nfrom firing before analysis resolves.\n\nTest: Tools/TestWebKitAPI/Tests/WebKit/WebPage/AppKit Gesture Tests/BasicAppKitGesturesTests.swift\n\n* Source/WebKit/UIProcess/mac/WKAppKitGestureController.mm:\n(isAnalyzableImageForLiveText):\n(-[WKAppKitGestureController setUpGestureRecognizers]):\n(-[WKAppKitGestureController setUpImageAnalysisGestureRecognizer]):\n(-[WKAppKitGestureController _makeImageAnalysisDeferringGestureRecognizerNamed:]):\n(-[WKAppKitGestureController setUpImageAnalysisDeferringGestureRecognizer]):\n(-[WKAppKitGestureController addGesturesToWebView]):\n(-[WKAppKitGestureController enableGesturesIfNeeded]):\n(-[WKAppKitGestureController ensureGesturesAreNotArchived]):\n(-[WKAppKitGestureController enableImageAnalysisGestureIfNeeded]):\n(-[WKAppKitGestureController imageAnalysisGestureRecognized:]):\n(-[WKAppKitGestureController _resolveImageAnalysisDeferralsWithOutcome:]):\n(-[WKAppKitGestureController deferringGestureRecognizer:shouldDeferOtherGestureRecognizer:]):\n(-[WKAppKitGestureController deferringGestureRecognizer:shouldDeferGesturesForEventThatWillBeginAction:]):\n(-[WKAppKitGestureController gestureRecognizer:shouldRecognizeSimultaneouslyWithGestureRecognizer:]):\n(-[WKAppKitGestureController gestureRecognizerShouldBegin:]):\n(-[WKAppKitGestureController _gestureRecognizer:canPreventGestureRecognizer:]):\n* Source/WebKit/UIProcess/mac/WebViewImpl.h:\n* Tools/TestWebKitAPI/Helpers/cocoa/ImageAnalysisTestingUtilities.swift:\n* Tools/TestWebKitAPI/Tests/WebKit/WebPage/AppKit Gesture Tests/BasicAppKitGesturesTests.swift:\n\nCanonical link: https://commits.webkit.org/317733@main",
      "email": "richard_robinson2@apple.com",
      "hash": "3330d607a01671f4588217c7fbd58fca43fdd98c",
      "subject": "[AppKit Gestures] Support Live Text interactions for images"
    }
  },
  "date": "2026-07-22",
  "days": 1,
  "generatedAt": "2026-07-22T22:06:17Z",
  "markdown": "## Highlights\n- **Web Platform** Fetch stream uploads started landing, opening the path to true request body streaming from the web platform. [commit 317724@main](https://commits.webkit.org/317724@main)\n- **Web Platform** WebTransport grew exportKeyingMaterial(), getStats groundwork, BFCache support, and stream option plumbing in one burst. [commit 317720@main](https://commits.webkit.org/317720@main) [commit 317679@main](https://commits.webkit.org/317679@main) [commit 317667@main](https://commits.webkit.org/317667@main) [commit 317665@main](https://commits.webkit.org/317665@main)\n- **Rendering** Grid and flex layout got meaningful engine work, including fit-content sizing and cheaper ordered flex item handling. [commit 317674@main](https://commits.webkit.org/317674@main) [commit 317672@main](https://commits.webkit.org/317672@main)\n- **DevTools** Web Inspector kept moving on Site Isolation with per-frame DOM event routing, undo coordination, and resource content support. [commit 317699@main](https://commits.webkit.org/317699@main) [commit 317698@main](https://commits.webkit.org/317698@main) [commit 317676@main](https://commits.webkit.org/317676@main)\n- **A11y** Accessibility work improved Siri writing tools integration, relation building efficiency, and a VoiceOver cursor placement bug in isolated trees. [commit 317732@main](https://commits.webkit.org/317732@main) [commit 317690@main](https://commits.webkit.org/317690@main) [commit 317689@main](https://commits.webkit.org/317689@main)\n- **Networking** Site isolation and process plumbing fixes closed real navigation and opener correctness bugs across cross-origin frame and popup flows. [commit 317675@main](https://commits.webkit.org/317675@main) [commit 317670@main](https://commits.webkit.org/317670@main)\n- **Perf** JavaScriptCore landed another set of FTL and DFG wins, plus lower-overhead object cloning and symbol handling. [commit 317730@main](https://commits.webkit.org/317730@main) [commit 317660@main](https://commits.webkit.org/317660@main) [commit 317659@main](https://commits.webkit.org/317659@main) [commit 317661@main](https://commits.webkit.org/317661@main)\n- **UI** Live Text interactions for images landed in AppKit, and an iPhone Mirroring keyboard focus regression on iOS 27 got fixed. [commit 317733@main](https://commits.webkit.org/317733@main) [commit 317693@main](https://commits.webkit.org/317693@main)\n- **Build** CMake and codec build work tightened up code signing, OpenSSL 3.x compatibility, dav1d ASM support, and SIMD flag selection. [commit 317671@main](https://commits.webkit.org/317671@main) [commit 317719@main](https://commits.webkit.org/317719@main) [commit 317696@main](https://commits.webkit.org/317696@main) [commit 317731@main](https://commits.webkit.org/317731@main)\n\n## What landed by area\n\n### JavaScriptCore and language runtime\n- **Perf** JSC uses more FTL select lowering for arithmetic ops, shaving branches out of hot numeric code paths. [commit 317730@main](https://commits.webkit.org/317730@main)\n- **Perf** VectorZipX with an all-zero lane now strength-reduces to a cheaper form in JSC. [commit 317726@main](https://commits.webkit.org/317726@main)\n- **Refactor** Temporal's getNamedTimeZoneEpochNanoseconds implementation got cleaned up. [commit 317723@main](https://commits.webkit.org/317723@main)\n- **Web Platform** Temporal's Japanese calendar now accepts ISO year, day, month, and monthCode fields. [commit 317717@main](https://commits.webkit.org/317717@main)\n- **Refactor** fastFlatIntoBuffer now takes resultIndex by value instead of by reference-like plumbing. [commit 317700@main](https://commits.webkit.org/317700@main)\n- **Security** YARR fixed InputStream::reread() to validate the code unit before a trail surrogate, tightening regex text decoding behavior. [commit 317694@main](https://commits.webkit.org/317694@main)\n- **Web Platform** Temporal field handling was corrected for Japanese, ROC, and Buddhist calendars. [commit 317678@main](https://commits.webkit.org/317678@main)\n- **Refactor** VM::hasLanguageChange() is now exported so WebCore can link against it directly. [commit 317663@main](https://commits.webkit.org/317663@main)\n- **Perf** Symbol.keyFor now reuses the symbol's cached description string instead of rebuilding it. [commit 317661@main](https://commits.webkit.org/317661@main)\n- **Perf** ArrayBuffer.isView got inlined in DFG and FTL by extending IsCellWithType across a JSType range. [commit 317660@main](https://commits.webkit.org/317660@main)\n- **Perf** tryCreateObjectViaCloning avoids zero-fill and gcSafeMemcpy overhead during object cloning. [commit 317659@main](https://commits.webkit.org/317659@main)\n\n### Networking, fetch, service workers, and WebTransport\n- **Web Platform** Fetch stream uploads started landing, a key capability gap for streamed request bodies. [commit 317724@main](https://commits.webkit.org/317724@main)\n- **Web Platform** WebTransport added the exportKeyingMaterial() IDL surface. [commit 317720@main](https://commits.webkit.org/317720@main)\n- **Refactor** libwebrtc thread naming was corrected so workerThread maps to networkThread instead of signalingThread. [commit 317713@main](https://commits.webkit.org/317713@main)\n- **Web Platform** WritableStreamDefaultWriter can now be subclassed. [commit 317707@main](https://commits.webkit.org/317707@main)\n- **Networking** WebSWServerConnection now handles a null network connection to the web process without falling over. [commit 317705@main](https://commits.webkit.org/317705@main)\n- **Web Platform** WebDriver implemented the consume user activation command. [commit 317715@main](https://commits.webkit.org/317715@main)\n- **Web Platform** WebTransport getStats implementation work began. [commit 317679@main](https://commits.webkit.org/317679@main)\n- **Networking** Cross-origin subframe document loaders now get per-navigation website policies under Site Isolation. [commit 317675@main](https://commits.webkit.org/317675@main)\n- **Security** A benign message-port race no longer terminates WebContent in takeAllMessagesForPort. [commit 317668@main](https://commits.webkit.org/317668@main)\n- **Web Platform** WebTransport pages are now restorable from the back/forward cache. [commit 317667@main](https://commits.webkit.org/317667@main)\n- **Web Platform** WebTransportSendStream now reflects sendOrder and sendGroup creation options correctly. [commit 317665@main](https://commits.webkit.org/317665@main)\n- **Networking** IPAddressSpace was widened to distinguish loopback from other local address space. [commit 317664@main](https://commits.webkit.org/317664@main)\n\n### Rendering, layout, and CSS\n- **Rendering** Display list transfer between RemoteRenderingBackends now copies fonts, fixing cross-backend text correctness. [commit 317722@main](https://commits.webkit.org/317722@main)\n- **Rendering** RenderLayer::calculateLayerBounds() was simplified around computing the local clip rect. [commit 317721@main](https://commits.webkit.org/317721@main)\n- **Refactor** Grid formatting context margin resolution lost some duplicated code. [commit 317712@main](https://commits.webkit.org/317712@main)\n- **Security** Recent safer-cpp regressions in layout code were addressed. [commit 317708@main](https://commits.webkit.org/317708@main)\n- **Rendering** view-timeline-inset now uses unzoomed lengths under EvaluationTimeZoom. [commit 317702@main](https://commits.webkit.org/317702@main)\n- **Rendering** ::selection now paints text-decoration even when only the selection supplies the decoration. [commit 317695@main](https://commits.webkit.org/317695@main)\n- **Web Platform** The CSS color value text was removed. [commit 317687@main](https://commits.webkit.org/317687@main)\n- **Refactor** Flex baseline item selection was simplified to a single scan per line. [commit 317680@main](https://commits.webkit.org/317680@main)\n- **Rendering** Non-replaced elements now implement fit-content sizing in grid formatting context. [commit 317674@main](https://commits.webkit.org/317674@main)\n- **Rendering** Custom Highlight and ::selection text-decoration painting was fixed. [commit 317673@main](https://commits.webkit.org/317673@main)\n- **Perf** RenderFlexibleBox now builds one ordered flex item list per layout instead of iterating with OrderIterator repeatedly. [commit 317672@main](https://commits.webkit.org/317672@main)\n- **Rendering** Grid items with explicit stretch alignment are now allowed in the grid formatting context integration path. [commit 317662@main](https://commits.webkit.org/317662@main)\n\n### Web Inspector and Site Isolation\n- **DevTools** Web Inspector added versioned protocol definitions for iOS 27.0 and macOS 27.0. [commit 317727@main](https://commits.webkit.org/317727@main)\n- **DevTools** Inspector network throttling builds again when ENABLE_INSPECTOR_NETWORK_THROTTLING is on. [commit 317701@main](https://commits.webkit.org/317701@main)\n- **DevTools** DOM custom-element and pseudo-element events now reach frame targets under Site Isolation. [commit 317699@main](https://commits.webkit.org/317699@main)\n- **DevTools** Cmd+Z is coordinated across per-frame undo stacks under Site Isolation. [commit 317698@main](https://commits.webkit.org/317698@main)\n- **DevTools** shadowRootPushed and shadowRootPopped now route to per-frame FrameDOMAgent. [commit 317697@main](https://commits.webkit.org/317697@main)\n- **UI** Entering fullscreen under Site Isolation no longer fires an extra resize event. [commit 317677@main](https://commits.webkit.org/317677@main)\n- **DevTools** Page.getResourceContent is now implemented under Site Isolation. [commit 317676@main](https://commits.webkit.org/317676@main)\n- **UI** window.opener now survives the popup process-swap to an empty site case correctly. [commit 317670@main](https://commits.webkit.org/317670@main)\n\n### Accessibility, input, and platform UI\n- **UI** AppKit image interactions now support Live Text. [commit 317733@main](https://commits.webkit.org/317733@main)\n- **A11y** Web text fields now expose an accessibility custom action to invoke the new Siri writing tools UI. [commit 317732@main](https://commits.webkit.org/317732@main) [bug 319444](https://bugs.webkit.org/show_bug.cgi?id=319444)\n- **UI** iPhone Mirroring on iOS 27 no longer causes text fields to immediately lose focus after the keyboard appears. [commit 317693@main](https://commits.webkit.org/317693@main)\n- **A11y** Building accessibility relations got cheaper by reducing id dirtying and relation search churn. [commit 317690@main](https://commits.webkit.org/317690@main)\n- **A11y** VoiceOver cursor placement was fixed for frames whose isolated tree is built by the AXObjectCache constructor timer. [commit 317689@main](https://commits.webkit.org/317689@main)\n- **UI** Text Extraction simulated clicks now target the innermost descendant inside the chosen element. [commit 317666@main](https://commits.webkit.org/317666@main)\n- **Refactor** WKJSHandle.frame was renamed to WKJSHandle.sourceFrame for clearer API semantics. [commit 317714@main](https://commits.webkit.org/317714@main)\n\n### Media, graphics, and WPE/GTK platform behavior\n- **Media** AudioVideoRendererAVFObjC is again destroyed on the main thread after a regression. [commit 317728@main](https://commits.webkit.org/317728@main)\n- **Media** dav1d ASM support was enabled. [commit 317696@main](https://commits.webkit.org/317696@main)\n- **Build** The arm64 CMake build was fixed after the dav1d ASM enablement regressed it. [commit 317725@main](https://commits.webkit.org/317725@main)\n- **Rendering** WPEWebKit font rendering was adjusted to better match WebKitGTK thickness. [commit 317706@main](https://commits.webkit.org/317706@main)\n- **Mobile** A constant WPE crash in fast/events/wheel/wheelevent-basic.html was fixed. [commit 317704@main](https://commits.webkit.org/317704@main)\n- **Media** A rare WPE crash in webrtc/remoteAudio-never-played.html was fixed. [commit 317703@main](https://commits.webkit.org/317703@main)\n\n### Build, testing infrastructure, and developer tooling\n- **Build** CMake now prefers more standard AVX512 and AVX2 compiler flags for Skia builds. [commit 317731@main](https://commits.webkit.org/317731@main)\n- **Build** OpenSSL 3.x compatibility improved. [commit 317719@main](https://commits.webkit.org/317719@main)\n- **Build** EWS test results are now stored and queried from the results database. [commit 317718@main](https://commits.webkit.org/317718@main)\n- **Refactor** WeakPtr::is() and UniqueRef::is() const variadic overloads were renamed to isAnyOf for clarity. [commit 317716@main](https://commits.webkit.org/317716@main)\n- **Refactor** More unnecessary ternary operator usage was removed in WebCore. [commit 317710@main](https://commits.webkit.org/317710@main)\n- **Security** LogStream no longer leaks its IPC connection, Mach port, or kqueue workloop after WebContent exits. [commit 317709@main](https://commits.webkit.org/317709@main)\n- **Build** CMake centralized code signing and added missing entitlements. [commit 317671@main](https://commits.webkit.org/317671@main)\n- **Build** run-api-tests --test-parallel-safety no longer hangs forever and floods output when a DISABLED_ test is present. [commit 317681@main](https://commits.webkit.org/317681@main)\n- **UI** Immersive API documentation was improved. [commit 317711@main](https://commits.webkit.org/317711@main)\n\n### WPT imports, test sync, and platform test stability\n- **Build** WPT wrapper generation now correctly preserves variant= for templated .window.js and .worker.js tests. [commit 317729@main](https://commits.webkit.org/317729@main)\n- **Web Platform** streams.idl and fs.idl WPT imports were updated to async_iterable syntax. [commit 317691@main](https://commits.webkit.org/317691@main)\n- **Build** A GLIB white-space-trim-inline-block WPT failure introduced in [commit 317172@main](https://commits.webkit.org/317172@main) was fixed. [commit 317692@main](https://commits.webkit.org/317692@main)\n- **Build** createImageBitmap GLIB failures after the /images WPT resync were fixed. [commit 317688@main](https://commits.webkit.org/317688@main)\n- **Build** pointerevent_touch-action-mouse.html on WPE arm64 bots was fixed after being unskipped. [commit 317686@main](https://commits.webkit.org/317686@main)\n- **Build** The GLIB ipc/loadping-firstpartyforcookies-message-check.html test failure was fixed. [commit 317685@main](https://commits.webkit.org/317685@main)\n- **Build** marker-hit-testing.html regression fallout on GLIB was fixed. [commit 317684@main](https://commits.webkit.org/317684@main)\n- **Build** A multiprocess WebKitWebContext process-per-web-view API timeout regression on GTK was fixed. [commit 317683@main](https://commits.webkit.org/317683@main)\n- **Build** GLIB crashes in wheel and pointer-lock swipe layout tests were fixed. [commit 317682@main](https://commits.webkit.org/317682@main)\n- **Build** /images was resynced from upstream WPT. [commit 317669@main](https://commits.webkit.org/317669@main)\n\n## Reverts \u0026 Reapplies",
  "repo": "webkit",
  "repoDisplay": "WebKit",
  "rollGroups": [],
  "since": "2026-07-22",
  "totals": {
    "commits": 75,
    "features": 75,
    "rolls": 0
  },
  "until": "2026-07-22"
}