Branch: refs/heads/webkitglib/2.48
  Home:   https://github.com/WebKit/WebKit
  Commit: 2a29384d19944ad99475962c8eb1af51e6bb1f1d
      
https://github.com/WebKit/WebKit/commit/2a29384d19944ad99475962c8eb1af51e6bb1f1d
  Author: Russell Epstein <[email protected]>
  Date:   2025-04-01 (Tue, 01 Apr 2025)

  Changed paths:
    M Source/WTF/Scripts/Preferences/UnifiedWebPreferences.yaml

  Log Message:
  -----------
  Cherry-pick 289651.11@safari-7621-branch (f9ec4c5d77ee). 
https://bugs.webkit.org/show_bug.cgi?id=288936

    Disable FilterLinkDecorationByDefaultEnabled feature flag
    rdar://143989240

    Reviewed by Brent Fulgham.

    * Source/WTF/Scripts/Preferences/UnifiedWebPreferences.yaml: Disable 
FilterLinkDecorationByDefaultEnabled. Change status to 'testable'.

    Canonical link: https://commits.webkit.org/289651.11@safari-7621-branch

Canonical link: https://commits.webkit.org/290945.106@webkitglib/2.48


  Commit: 1c0ce1abae341ff34caf61c967d5da3555394aec
      
https://github.com/WebKit/WebKit/commit/1c0ce1abae341ff34caf61c967d5da3555394aec
  Author: Chris Dumez <[email protected]>
  Date:   2025-04-01 (Tue, 01 Apr 2025)

  Changed paths:
    M Source/WTF/wtf/UUID.h
    M Source/WebKit/Shared/WTFArgumentCoders.serialization.in

  Log Message:
  -----------
  Cherry-pick 283286.608@safari-7620-branch (c860007e04ea). 
https://bugs.webkit.org/show_bug.cgi?id=285690

    WTF::UUID IPC deserialization doesn't check against emptyValue
    https://bugs.webkit.org/show_bug.cgi?id=285690
    rdar://141754711

    Reviewed by Brent Fulgham.

    During IPC deserialization, we now check that the serialized
    UUID is not the empty value. It used to check only for the deleted
    value.

    * Source/WTF/wtf/UUID.h:
    (WTF::UUID::isValid):
    * Source/WebKit/Shared/WTFArgumentCoders.serialization.in:

    Canonical link: https://commits.webkit.org/283286.608@safari-7620-branch

    Canonical link: https://commits.webkit.org/289651.12@safari-7621-branch

Canonical link: https://commits.webkit.org/290945.107@webkitglib/2.48


  Commit: ddb817fb313990093fb75c72777f469d368c0631
      
https://github.com/WebKit/WebKit/commit/ddb817fb313990093fb75c72777f469d368c0631
  Author: Youenn Fablet <[email protected]>
  Date:   2025-04-01 (Tue, 01 Apr 2025)

  Changed paths:
    M 
Source/ThirdParty/libwebrtc/Source/third_party/boringssl/src/crypto/bio/printf.c

  Log Message:
  -----------
  Cherry-pick 283286.609@safari-7620-branch (d55b7f471238). 
https://bugs.webkit.org/show_bug.cgi?id=285690

    Potential 'overflow' issue commited to upstream libwebrtc
    rdar://141802173

    Reviewed by Jean-Yves Avenard.

    Cherrry-picking of 
https://boringssl.googlesource.com/boringssl/+/168777fbc49296eeb54b5da8fc7dfcae1a4d3e27.

    * 
Source/ThirdParty/libwebrtc/Source/third_party/boringssl/src/crypto/bio/printf.c:
    (BIO_printf):

    Canonical link: https://commits.webkit.org/283286.609@safari-7620-branch

    Canonical link: https://commits.webkit.org/289651.13@safari-7621-branch

Canonical link: https://commits.webkit.org/290945.108@webkitglib/2.48


  Commit: dd9c8b03e3d22daeba20b7a4339d5c8dc7a4b49c
      
https://github.com/WebKit/WebKit/commit/dd9c8b03e3d22daeba20b7a4339d5c8dc7a4b49c
  Author: Chris Dumez <[email protected]>
  Date:   2025-04-01 (Tue, 01 Apr 2025)

  Changed paths:
    A 
LayoutTests/storage/indexeddb/cursor-continue-add-error-private-expected.txt
    A LayoutTests/storage/indexeddb/cursor-continue-add-error-private.html
    M Source/WebCore/Modules/indexeddb/server/IndexValueStore.cpp

  Log Message:
  -----------
  Cherry-pick 283286.610@safari-7620-branch (02c5baaa939c). 
https://bugs.webkit.org/show_bug.cgi?id=285703

    IndexValueStore::removeRecord should only remove the IndexValueEntry when 
it's empty
    https://bugs.webkit.org/show_bug.cgi?id=285703
    rdar://142446346

    Reviewed by Sihui Liu.

    The previous implementation was removing the entire `IndexValueEntry` 
object (iterator->value)
    when successfully removing the specified key. However, when the index has 
been set up to allow
    duplicate values, it may have multiple keys. So in that case, after 
removing a key from the
    entry, its count may still not be zero, namely, 
`iterator->value->getCount() > 0`. Consequently,
    an incorrect entry could be removed prematurely without notifying the 
cursors referencing it,
    which then can lead to use-after-free.

    * 
LayoutTests/storage/indexeddb/cursor-continue-add-error-private-expected.txt: 
Added.
    * LayoutTests/storage/indexeddb/cursor-continue-add-error-private.html: 
Added.
    * Source/WebCore/Modules/indexeddb/server/IndexValueStore.cpp:
    (WebCore::IDBServer::IndexValueStore::removeRecord):

    Canonical link: https://commits.webkit.org/283286.610@safari-7620-branch

    Canonical link: https://commits.webkit.org/289651.14@safari-7621-branch

Canonical link: https://commits.webkit.org/290945.109@webkitglib/2.48


  Commit: f7dbf5456e9fb260dfcb8ad336951b90079a6cda
      
https://github.com/WebKit/WebKit/commit/f7dbf5456e9fb260dfcb8ad336951b90079a6cda
  Author: Chris Dumez <[email protected]>
  Date:   2025-04-01 (Tue, 01 Apr 2025)

  Changed paths:
    M Tools/WebKitTestRunner/TestInvocation.cpp

  Log Message:
  -----------
  Cherry-pick 283286.611@safari-7620-branch (bad30b75d429). 
https://bugs.webkit.org/show_bug.cgi?id=285869

    Guard against overflows in TestInvocation::dumpResults()
    https://bugs.webkit.org/show_bug.cgi?id=285869
    rdar://142781265

    Reviewed by Ryosuke Niwa.

    A badly behaving WebProcess could spam the UIProcess with test output
    until the StringBuilder overflows, causing the UIProcess to crash.
    Instead, we now record the overflow and simply dump in the test output
    that the text overflowed.

    * Tools/WebKitTestRunner/TestInvocation.cpp:
    (WTR::TestInvocation::TestInvocation):
    (WTR::TestInvocation::dumpResults):

    Canonical link: https://commits.webkit.org/283286.611@safari-7620-branch

    Canonical link: https://commits.webkit.org/289651.15@safari-7621-branch

Canonical link: https://commits.webkit.org/290945.110@webkitglib/2.48


  Commit: 069ef50ba55f541439e775d9572be9a62b221782
      
https://github.com/WebKit/WebKit/commit/069ef50ba55f541439e775d9572be9a62b221782
  Author: Yusuke Suzuki <[email protected]>
  Date:   2025-04-01 (Tue, 01 Apr 2025)

  Changed paths:
    A LayoutTests/js/dom/resizable-array-buffer-do-not-crash-expected.txt
    A LayoutTests/js/dom/resizable-array-buffer-do-not-crash.html
    A LayoutTests/js/dom/script-tests/resizable-array-buffer-do-not-crash.js
    M Source/JavaScriptCore/runtime/ArrayBufferView.h

  Log Message:
  -----------
  Cherry-pick 283286.614@safari-7620-branch (604d4327862d). 
https://bugs.webkit.org/show_bug.cgi?id=285876

    [JSC] Fix incorrect OOB condition for resizable ArrayBuffer in C++ wrapper 
code
    https://bugs.webkit.org/show_bug.cgi?id=285876
    rdar://141269480

    Reviewed by Yijia Huang and Keith Miller.

    OOB checking condition is not correct for resizable ArrayBuffer when it
    is used with C++ wrapper code. This patch fixes it.

    * LayoutTests/js/dom/resizable-array-buffer-do-not-crash-expected.txt: 
Added.
    * LayoutTests/js/dom/resizable-array-buffer-do-not-crash.html: Added.
    * LayoutTests/js/dom/script-tests/resizable-array-buffer-do-not-crash.js: 
Added.
    (main):
    * Source/JavaScriptCore/runtime/ArrayBufferView.h:
    (JSC::ArrayBufferView::byteOffset const):
    (JSC::ArrayBufferView::byteLength const):

    Canonical link: https://commits.webkit.org/283286.614@safari-7620-branch

    Canonical link: https://commits.webkit.org/289651.18@safari-7621-branch

Canonical link: https://commits.webkit.org/290945.111@webkitglib/2.48


  Commit: ffbfaf57ada9bdc5ba095b7b1705809f073077e1
      
https://github.com/WebKit/WebKit/commit/ffbfaf57ada9bdc5ba095b7b1705809f073077e1
  Author: Yusuke Suzuki <[email protected]>
  Date:   2025-04-01 (Tue, 01 Apr 2025)

  Changed paths:
    A JSTests/stress/eval-call-should-update-top-frame.js
    M Source/JavaScriptCore/jit/JITOperations.cpp

  Log Message:
  -----------
  Cherry-pick 283286.615@safari-7620-branch (2d42b44d8073). 
https://bugs.webkit.org/show_bug.cgi?id=285892

    [JSC] Eval call operations should update VM::topCallFrame
    https://bugs.webkit.org/show_bug.cgi?id=285892
    rdar://140795825

    Reviewed by Yijia Huang.

    Eval operations should update VM::topCallFrame to prepare for throwing
    an error for OOM of input string resolution.

    * JSTests/stress/eval-call-should-update-top-frame.js: Added.
    * Source/JavaScriptCore/jit/JITOperations.cpp:
    (JSC::JSC_DEFINE_JIT_OPERATION):

    Canonical link: https://commits.webkit.org/283286.615@safari-7620-branch

    Canonical link: https://commits.webkit.org/289651.19@safari-7621-branch

Canonical link: https://commits.webkit.org/290945.112@webkitglib/2.48


  Commit: 4cd747e37de12fab914d4152c9a4b705fafc28c1
      
https://github.com/WebKit/WebKit/commit/4cd747e37de12fab914d4152c9a4b705fafc28c1
  Author: Sihui Liu <[email protected]>
  Date:   2025-04-01 (Tue, 01 Apr 2025)

  Changed paths:
    A LayoutTests/storage/indexeddb/delete-indexes-with-same-name-expected.txt
    A 
LayoutTests/storage/indexeddb/delete-indexes-with-same-name-private-expected.txt
    A LayoutTests/storage/indexeddb/delete-indexes-with-same-name-private.html
    A LayoutTests/storage/indexeddb/delete-indexes-with-same-name.html
    A LayoutTests/storage/indexeddb/resources/delete-indexes-with-same-name.js
    M Source/WebCore/Modules/indexeddb/server/MemoryBackingStoreTransaction.cpp
    M Source/WebCore/Modules/indexeddb/server/MemoryBackingStoreTransaction.h

  Log Message:
  -----------
  Cherry-pick 283286.616@safari-7620-branch (7ffc1f92efb2). 
https://bugs.webkit.org/show_bug.cgi?id=285892

    MemoryBackingStoreTransaction::m_deletedIndexes should not track indexes by 
name
    rdar://141931985

    Reviewed by Chris Dumez.

    According to spec 
(https://www.w3.org/TR/IndexedDB/#dom-idbobjectstore-createindex), index name 
is unique in its object
    store. A transaction can operate on multiple object stores, so index name 
is not unique in transaction, and transaction
    should not track indexes by name. To fix this, make 
MemoryBackingStoreTransaction::m_deletedIndexes a set instead of
    a map.

    Tests: storage/indexeddb/delete-indexes-with-same-name.html
           storage/indexeddb/delete-indexes-with-same-name-private.html

    * LayoutTests/storage/indexeddb/delete-indexes-with-same-name-expected.txt: 
Added.
    * 
LayoutTests/storage/indexeddb/delete-indexes-with-same-name-private-expected.txt:
 Added.
    * LayoutTests/storage/indexeddb/delete-indexes-with-same-name-private.html: 
Added.
    * LayoutTests/storage/indexeddb/delete-indexes-with-same-name.html: Added.
    * LayoutTests/storage/indexeddb/resources/delete-indexes-with-same-name.js: 
Added.
    (prepareDatabase):
    (upgradeDatabase):
    (deleteIndexes):
    * Source/WebCore/Modules/indexeddb/server/MemoryBackingStoreTransaction.cpp:
    (WebCore::IDBServer::MemoryBackingStoreTransaction::indexDeleted):
    (WebCore::IDBServer::MemoryBackingStoreTransaction::objectStoreDeleted):
    (WebCore::IDBServer::MemoryBackingStoreTransaction::abort):
    * Source/WebCore/Modules/indexeddb/server/MemoryBackingStoreTransaction.h:

    Canonical link: https://commits.webkit.org/283286.616@safari-7620-branch

    Canonical link: https://commits.webkit.org/289651.20@safari-7621-branch

Canonical link: https://commits.webkit.org/290945.113@webkitglib/2.48


  Commit: 1dcd84eda7d67665cedf0aed69f85b26fb738e9e
      
https://github.com/WebKit/WebKit/commit/1dcd84eda7d67665cedf0aed69f85b26fb738e9e
  Author: Keith Miller <[email protected]>
  Date:   2025-04-01 (Tue, 01 Apr 2025)

  Changed paths:
    A JSTests/stress/static-private-fields-dont-need-property-conditions.js
    M Source/JavaScriptCore/bytecode/Repatch.cpp

  Log Message:
  -----------
  Cherry-pick 283286.618@safari-7620-branch (222ba8af1970). 
https://bugs.webkit.org/show_bug.cgi?id=285643

    [JSC] Puts to private fields shouldn't generate property conditions
    https://bugs.webkit.org/show_bug.cgi?id=285643
    rdar://142585218

    Reviewed by Yusuke Suzuki.

    Private fields shouldn't generate property conditions this is because:

    1) Private fields are always own properties so we should never walk the 
prototype chain.
    2) Private names are constants in the function rather than part of the code 
block or IC.

    We could solve (2) by having the CodeBlock's ICs reference the private name 
but that's not useful
    anyway because we don't need to walk the prototype chain.

    * JSTests/stress/static-private-fields-dont-need-property-conditions.js: 
Added.
    (f0):
    (catch):
    (const.v12.of.v3.):
    (const.v12.of.v3):
    * Source/JavaScriptCore/bytecode/Repatch.cpp:
    (JSC::tryCacheGetBy):
    (JSC::tryCachePutBy):
    (JSC::tryCacheInBy):

    Canonical link: https://commits.webkit.org/283286.618@safari-7620-branch

    Canonical link: https://commits.webkit.org/289651.22@safari-7621-branch

Canonical link: https://commits.webkit.org/290945.114@webkitglib/2.48


  Commit: 9797dbdb12b56e19444a274f07788dfd531d1c2d
      
https://github.com/WebKit/WebKit/commit/9797dbdb12b56e19444a274f07788dfd531d1c2d
  Author: Sihui Liu <[email protected]>
  Date:   2025-04-01 (Tue, 01 Apr 2025)

  Changed paths:
    M Source/WebCore/Modules/indexeddb/server/MemoryBackingStoreTransaction.cpp
    M Source/WebCore/Modules/indexeddb/server/MemoryBackingStoreTransaction.h
    M Source/WebCore/Modules/indexeddb/server/MemoryCursor.cpp
    M Source/WebCore/Modules/indexeddb/server/MemoryCursor.h
    M Source/WebCore/Modules/indexeddb/server/MemoryIDBBackingStore.cpp
    M Source/WebCore/Modules/indexeddb/server/MemoryIDBBackingStore.h
    M Source/WebCore/Modules/indexeddb/server/MemoryIndex.cpp
    M Source/WebCore/Modules/indexeddb/server/MemoryIndex.h
    M Source/WebCore/Modules/indexeddb/server/MemoryIndexCursor.cpp
    M Source/WebCore/Modules/indexeddb/server/MemoryIndexCursor.h
    M Source/WebCore/Modules/indexeddb/server/MemoryObjectStore.cpp
    M Source/WebCore/Modules/indexeddb/server/MemoryObjectStore.h
    M Source/WebCore/Modules/indexeddb/server/MemoryObjectStoreCursor.cpp
    M Source/WebCore/Modules/indexeddb/server/MemoryObjectStoreCursor.h

  Log Message:
  -----------
  Cherry-pick 283286.620@safari-7620-branch (6a243437ed2c). 
https://bugs.webkit.org/show_bug.cgi?id=285643

    Cursors should be closed when its transaction finishes
    rdar://141673897

    Reviewed by Chris Dumez.

    According to spec, cursor's lifetime should be tied to its transaction, not 
its source (object store or index). This
    means when transaction ends, cursor should also be closed. To implement 
this, now we make MemoryCursor keep track of
    the transaction it is created in, and ensures its owner (MemoryObjectStore 
and MemoryIndex) releases it when
    corresponding transaction finishes.

    * Source/WebCore/Modules/indexeddb/server/MemoryBackingStoreTransaction.cpp:
    (WebCore::IDBServer::MemoryBackingStoreTransaction::create):
    (WebCore::IDBServer::MemoryBackingStoreTransaction::finish):
    * Source/WebCore/Modules/indexeddb/server/MemoryBackingStoreTransaction.h:
    * Source/WebCore/Modules/indexeddb/server/MemoryCursor.cpp:
    (WebCore::IDBServer::MemoryCursor::MemoryCursor):
    * Source/WebCore/Modules/indexeddb/server/MemoryCursor.h:
    (WebCore::IDBServer::MemoryCursor::transaction const):
    * Source/WebCore/Modules/indexeddb/server/MemoryIDBBackingStore.cpp:
    (WebCore::IDBServer::MemoryIDBBackingStore::openCursor):
    (WebCore::IDBServer::MemoryIDBBackingStore::objectStoreForName const):
    * Source/WebCore/Modules/indexeddb/server/MemoryIDBBackingStore.h:
    * Source/WebCore/Modules/indexeddb/server/MemoryIndex.cpp:
    (WebCore::IDBServer::MemoryIndex::maybeOpenCursor):
    (WebCore::IDBServer::MemoryIndex::transactionFinished):
    * Source/WebCore/Modules/indexeddb/server/MemoryIndex.h:
    * Source/WebCore/Modules/indexeddb/server/MemoryIndexCursor.cpp:
    (WebCore::IDBServer::MemoryIndexCursor::MemoryIndexCursor):
    * Source/WebCore/Modules/indexeddb/server/MemoryIndexCursor.h:
    * Source/WebCore/Modules/indexeddb/server/MemoryObjectStore.cpp:
    (WebCore::IDBServer::MemoryObjectStore::transactionFinished):
    (WebCore::IDBServer::MemoryObjectStore::maybeOpenCursor):
    * Source/WebCore/Modules/indexeddb/server/MemoryObjectStore.h:
    (WebCore::IDBServer::MemoryObjectStore::writeTransaction):
    * Source/WebCore/Modules/indexeddb/server/MemoryObjectStoreCursor.cpp:
    (WebCore::IDBServer::MemoryObjectStoreCursor::MemoryObjectStoreCursor):
    * Source/WebCore/Modules/indexeddb/server/MemoryObjectStoreCursor.h:

    Canonical link: https://commits.webkit.org/283286.620@safari-7620-branch

    Canonical link: https://commits.webkit.org/289651.25@safari-7621-branch

Canonical link: https://commits.webkit.org/290945.115@webkitglib/2.48


  Commit: 0ef4da86194d95b865405d4f2d14128e09f7a218
      
https://github.com/WebKit/WebKit/commit/0ef4da86194d95b865405d4f2d14128e09f7a218
  Author: Sihui Liu <[email protected]>
  Date:   2025-04-01 (Tue, 01 Apr 2025)

  Changed paths:
    M Source/WebCore/Modules/indexeddb/server/MemoryObjectStore.cpp

  Log Message:
  -----------
  Cherry-pick 283286.619@safari-7620-branch (0797bced96ba). 
https://bugs.webkit.org/show_bug.cgi?id=285643

    Do not create index if index with the same identifier exists
    rdar://142446444

    Reviewed by Chris Dumez.

    MemoryObjectStore::createIndex currently creates index and updates 
m_indexesByIdentifier without checking whether
    identifier already exists. This could lead to original index gets destroyed 
without proper cleanup (some object may
    still refer to that index).

    * Source/WebCore/Modules/indexeddb/server/MemoryObjectStore.cpp:
    (WebCore::IDBServer::MemoryObjectStore::createIndex):

    Canonical link: https://commits.webkit.org/283286.619@safari-7620-branch

    Canonical link: https://commits.webkit.org/289651.26@safari-7621-branch

Canonical link: https://commits.webkit.org/290945.116@webkitglib/2.48


  Commit: 3cbb7430f342e65daa7e8d0bbdb8c31267bc1270
      
https://github.com/WebKit/WebKit/commit/3cbb7430f342e65daa7e8d0bbdb8c31267bc1270
  Author: Keith Miller <[email protected]>
  Date:   2025-04-01 (Tue, 01 Apr 2025)

  Changed paths:
    M Source/JavaScriptCore/dfg/DFGConstantFoldingPhase.cpp

  Log Message:
  -----------
  Cherry-pick 283286.621@safari-7620-branch (cf19ad9af78c). 
https://bugs.webkit.org/show_bug.cgi?id=286145

    GetById constant folding should use the results of AI
    https://bugs.webkit.org/show_bug.cgi?id=286145
    rdar://141582168

    Reviewed by Yusuke Suzuki and Yijia Huang.

    Right now ConstantFolding tries to recompute the same information that AI 
does.
    However since compilation is concurrent this information could be outdated 
on the
    mutator. This can cause problems, instead ConstantFolding should just trust 
AI.

    This isn't really the right long term fix for this. Instead ConstantFolding
    should just be part of AI (conditionally enabled) but we should fix that in 
a
    follow up patch.

    * Source/JavaScriptCore/dfg/DFGConstantFoldingPhase.cpp:
    (JSC::DFG::ConstantFoldingPhase::foldConstants):

    Canonical link: https://commits.webkit.org/283286.621@safari-7620-branch

    Canonical link: https://commits.webkit.org/289651.27@safari-7621-branch

Canonical link: https://commits.webkit.org/290945.117@webkitglib/2.48


  Commit: 227bfbcaa5fa617c20d06d8debc3ae8ff3e4de13
      
https://github.com/WebKit/WebKit/commit/227bfbcaa5fa617c20d06d8debc3ae8ff3e4de13
  Author: Yusuke Suzuki <[email protected]>
  Date:   2025-04-01 (Tue, 01 Apr 2025)

  Changed paths:
    A JSTests/stress/enumerator-put-by-val-should-respect-readonly.js
    M Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp
    M Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp
    M Source/JavaScriptCore/jit/JITPropertyAccess.cpp
    M Source/JavaScriptCore/llint/LowLevelInterpreter64.asm
    M Source/JavaScriptCore/runtime/CommonSlowPathsInlines.h

  Log Message:
  -----------
  Cherry-pick 283286.623@safari-7620-branch (0e91bfa1a4ef). 
https://bugs.webkit.org/show_bug.cgi?id=286325

    [JSC] enumerator_put_by_val should respect ReadOnly
    https://bugs.webkit.org/show_bug.cgi?id=286325
    rdar://143136742

    Reviewed by Keith Miller.

    For EnumeratorPutByVal, we should check 
hasReadOnlyOrGetterSetterPropertiesExcludingProto bit too
    since enumerated names may have ReadOnly properties.

    * JSTests/stress/enumerator-put-by-val-should-respect-readonly.js: Added.
    (shouldBe):
    (shouldThrow):
    (strict):
    * Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:
    (JSC::DFG::SpeculativeJIT::compileEnumeratorPutByVal):
    * Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:
    (JSC::FTL::DFG::LowerDFGToB3::compileCompareStrictEq):
    * Source/JavaScriptCore/jit/JITPropertyAccess.cpp:
    (JSC::JIT::emit_op_enumerator_put_by_val):
    * Source/JavaScriptCore/llint/LowLevelInterpreter64.asm:
    * Source/JavaScriptCore/runtime/CommonSlowPathsInlines.h:
    (JSC::CommonSlowPaths::opEnumeratorPutByVal):

    Canonical link: https://commits.webkit.org/283286.623@safari-7620-branch

    Canonical link: https://commits.webkit.org/289651.28@safari-7621-branch

Canonical link: https://commits.webkit.org/290945.118@webkitglib/2.48


  Commit: fdac3c039682995ad5ce8fa46187e3d1378b3760
      
https://github.com/WebKit/WebKit/commit/fdac3c039682995ad5ce8fa46187e3d1378b3760
  Author: Daniel Liu <[email protected]>
  Date:   2025-04-01 (Tue, 01 Apr 2025)

  Changed paths:
    M JSTests/stress/regexp-duplicate-named-captures.js
    M Source/JavaScriptCore/yarr/YarrPattern.cpp

  Log Message:
  -----------
  Cherry-pick 283286.624@safari-7620-branch (f17564aaeeb2). 
https://bugs.webkit.org/show_bug.cgi?id=286315

    Removing zero-count repeats of a forward reference should remove the 
associated m_forwardReferencesInLookbehind entry
    https://bugs.webkit.org/show_bug.cgi?id=286315
    rdar://143118888

    Reviewed by Yusuke Suzuki.

    Currently, Yarr tries to convert forward references to backreferences if 
possible. If
    a forward reference is elided because it is quantified with a zero repeat 
count, it can
    be removed. However, we do not remove bookkeeping data for backreference 
conversion,
    meaning that we hold a stale index in this data.

    * JSTests/stress/regexp-duplicate-named-captures.js:
    * Source/JavaScriptCore/yarr/YarrPattern.cpp:
    (JSC::Yarr::YarrPatternConstructor::quantifyAtom):

    Canonical link: https://commits.webkit.org/283286.624@safari-7620-branch

    Canonical link: https://commits.webkit.org/289651.29@safari-7621-branch

Canonical link: https://commits.webkit.org/290945.119@webkitglib/2.48


  Commit: 4b0795ccbf6c378f2e1445456eddacf147c1b0c0
      
https://github.com/WebKit/WebKit/commit/4b0795ccbf6c378f2e1445456eddacf147c1b0c0
  Author: Said Abou-Hallawa <[email protected]>
  Date:   2025-04-01 (Tue, 01 Apr 2025)

  Changed paths:
    A 
LayoutTests/fast/canvas/getCSSCanvasContext-create-and-request-expected.txt
    A LayoutTests/fast/canvas/getCSSCanvasContext-create-and-request.html
    M Source/WebCore/html/HTMLCanvasElement.cpp

  Log Message:
  -----------
  Cherry-pick 283286.625@safari-7620-branch (ea954231fc42). 
https://bugs.webkit.org/show_bug.cgi?id=286105

    getCSSCanvasContext() unconditionally casts the context to 
ImageBitmapRenderingContext
    https://bugs.webkit.org/show_bug.cgi?id=286105
    rdar://142779827

    Reviewed by Dan Glastonbury.

    Like what we do in similar functions, getContextBitmapRenderer() should 
return
    nullptr if the type of m_context is not `bitmaprenderer`. It should check
    m_context.isBitmapRenderer() before casting m_context to 
ImageBitmapRenderingContext
    Alternatively we can use dynamicDowncast<ImageBitmapRenderingContext> 
instead.

    * 
LayoutTests/fast/canvas/getCSSCanvasContext-create-and-request-expected.txt: 
Added.
    * LayoutTests/fast/canvas/getCSSCanvasContext-create-and-request.html: 
Added.
    * Source/WebCore/html/HTMLCanvasElement.cpp:
    (WebCore::HTMLCanvasElement::getContext2d):
    (WebCore::HTMLCanvasElement::getContextWebGL):
    (WebCore::HTMLCanvasElement::getContextBitmapRenderer):
    (WebCore::HTMLCanvasElement::getContextWebGPU):

    Canonical link: https://commits.webkit.org/283286.625@safari-7620-branch

    Canonical link: https://commits.webkit.org/289651.30@safari-7621-branch

Canonical link: https://commits.webkit.org/290945.120@webkitglib/2.48


  Commit: 2287a718a19aeaaaa638d6c8b6f4e6776f3dcf00
      
https://github.com/WebKit/WebKit/commit/2287a718a19aeaaaa638d6c8b6f4e6776f3dcf00
  Author: Pascoe <[email protected]>
  Date:   2025-04-01 (Tue, 01 Apr 2025)

  Changed paths:
    M Source/WebKit/UIProcess/WebPageProxy.cpp
    M Source/WebKit/UIProcess/WebPageProxy.h
    M Tools/TestWebKitAPI/Tests/WebKitCocoa/OpenAndCloseWindow.mm

  Log Message:
  -----------
  Cherry-pick 283286.627@safari-7620-branch (c08948bfe20e). 
https://bugs.webkit.org/show_bug.cgi?id=286381

    Some clients decide to unconditionally load window.open requests in the 
main frame
    https://bugs.webkit.org/show_bug.cgi?id=286381
    rdar://142278116

    Reviewed by Alex Christensen and Charlie Wolfe.

    Some clients of WKWebView decide to uncoditionally load the request from 
window.open and
    return nil during their createWebViewWithConfiguration UI delegate call. 
This is okay in
    most situations if you want to replace what is in the main frame, but is an 
issue whenever
    the url passed to window.open is a javascript url. In this case, any 
i-frame can use this
    to run script as the main frame.

    To fix this, we ignore javascript scheme load requests that are made during 
the short time
    we are calling the createNewPage UI delegate. The normal flow is to make a 
request after this
    delegate has completed and it's unusual for apps to make one while they are 
processing this delegate,
    so I think this won't break any apps.

    * Source/WebKit/UIProcess/WebPageProxy.cpp:
    (WebKit::WebPageProxy::loadRequest):
    (WebKit::WebPageProxy::createNewPage):
    * Source/WebKit/UIProcess/WebPageProxy.h:

    Canonical link: https://commits.webkit.org/283286.627@safari-7620-branch

    Canonical link: https://commits.webkit.org/289651.31@safari-7621-branch

Canonical link: https://commits.webkit.org/290945.121@webkitglib/2.48


  Commit: 5fb8357c878a6d97dcc84e4f82a60bccdceb191b
      
https://github.com/WebKit/WebKit/commit/5fb8357c878a6d97dcc84e4f82a60bccdceb191b
  Author: Antti Koivisto <[email protected]>
  Date:   2025-04-01 (Tue, 01 Apr 2025)

  Changed paths:
    A LayoutTests/fast/selectors/has-nesting-crash-expected.txt
    A LayoutTests/fast/selectors/has-nesting-crash.html
    M Source/WebCore/css/CSSSelector.h
    M Source/WebCore/css/CSSStyleSheet.cpp
    M Source/WebCore/css/SelectorChecker.cpp
    M Source/WebCore/css/StyleSheetContents.h
    M Source/WebCore/style/RuleSetBuilder.cpp
    M Source/WebCore/style/RuleSetBuilder.h

  Log Message:
  -----------
  Cherry-pick 283286.628@safari-7620-branch (0cd63a733258). 
https://bugs.webkit.org/show_bug.cgi?id=284055

    REGRESSION: Crashes in SelectorChecker::checkOne
    https://bugs.webkit.org/show_bug.cgi?id=284055
    rdar://140936598

    Reviewed by Ryosuke Niwa.

    Track whether we have resolved nested selectors and avoid doing it again if 
we have.
    Reset the bit if the stylesheet is mutated.

    This avoids a situtation where selectors in shared adopted stylesheets get 
mutated multiple times via nesting
    resolution leading to use of a deleted selector (such stylesheets are 
otherwise immutable).

    * LayoutTests/fast/selectors/has-nesting-crash-expected.txt: Added.
    * LayoutTests/fast/selectors/has-nesting-crash.html: Added.
    * Source/WebCore/css/CSSSelector.h:
    (WebCore::CSSSelector::destructorHasBeenCalled const):
    * Source/WebCore/css/CSSStyleSheet.cpp:
    (WebCore::CSSStyleSheet::didMutateRules):
    * Source/WebCore/css/SelectorChecker.cpp:
    (WebCore::SelectorChecker::match const):
    * Source/WebCore/css/StyleSheetContents.h:
    * Source/WebCore/style/RuleSetBuilder.cpp:
    (WebCore::Style::m_builderShouldResolveNesting):
    (WebCore::Style::RuleSetBuilder::addChildRule):
    (WebCore::Style::RuleSetBuilder::addRulesFromSheetContents):
    (WebCore::Style::RuleSetBuilder::addStyleRule):
    (WebCore::Style::m_shouldResolveNesting): Deleted.
    * Source/WebCore/style/RuleSetBuilder.h:

    Canonical link: https://commits.webkit.org/283286.628@safari-7620-branch

    Canonical link: https://commits.webkit.org/289651.32@safari-7621-branch

Canonical link: https://commits.webkit.org/290945.122@webkitglib/2.48


  Commit: ce7f2eb3ff36e591b7ed7ec9e0ec08c553a040a5
      
https://github.com/WebKit/WebKit/commit/ce7f2eb3ff36e591b7ed7ec9e0ec08c553a040a5
  Author: Antti Koivisto <[email protected]>
  Date:   2025-04-01 (Tue, 01 Apr 2025)

  Changed paths:
    A LayoutTests/fast/css/transform-translate-parsing-crash-expected.txt
    A LayoutTests/fast/css/transform-translate-parsing-crash.html
    M Source/WebCore/css/parser/CSSParserFastPaths.cpp

  Log Message:
  -----------
  Cherry-pick 283286.630@safari-7620-branch (c09afb6b82bf). 
https://bugs.webkit.org/show_bug.cgi?id=286462

    Crash in transform fast-path parsing
    https://bugs.webkit.org/show_bug.cgi?id=286462
    rdar://142276253

    Reviewed by Darin Adler.

    * LayoutTests/fast/css/transform-translate-parsing-crash-expected.txt: 
Added.
    * LayoutTests/fast/css/transform-translate-parsing-crash.html: Added.
    * Source/WebCore/css/parser/CSSParserFastPaths.cpp:
    (WebCore::parseSimpleTransformValue):

    Check we don't access out of bounds indexes.

    Canonical link: https://commits.webkit.org/283286.630@safari-7620-branch

    Canonical link: https://commits.webkit.org/289651.34@safari-7621-branch

Canonical link: https://commits.webkit.org/290945.123@webkitglib/2.48


  Commit: 945d070ff077d5bb140d5d02dc4a5c51530adaf1
      
https://github.com/WebKit/WebKit/commit/945d070ff077d5bb140d5d02dc4a5c51530adaf1
  Author: Sihui Liu <[email protected]>
  Date:   2025-04-01 (Tue, 01 Apr 2025)

  Changed paths:
    M Source/WebCore/Modules/indexeddb/server/UniqueIDBDatabase.cpp

  Log Message:
  -----------
  Cherry-pick 283286.631@safari-7620-branch (43d9bdf80277). 
https://bugs.webkit.org/show_bug.cgi?id=286462

    Do not start new transaction when there is active version change transcation
    rdar://142170054

    Reviewed by Brady Eidson.

    According to spec 
(https://w3c.github.io/IndexedDB/#upgrade-transaction-construct), version 
change (or upgrade)
    transaction has exclusive access to database. The current implementation 
enforces this on client side (web process) by
    not adding new transaction on server when there is ongoing version change 
transaction. This patch adds this check to
    server side since web process could be compromised and schedule 
transactions unexpectedly.

    * Source/WebCore/Modules/indexeddb/server/UniqueIDBDatabase.cpp:
    (WebCore::IDBServer::UniqueIDBDatabase::takeNextRunnableTransaction):

    Canonical link: https://commits.webkit.org/283286.631@safari-7620-branch

    Canonical link: https://commits.webkit.org/289651.36@safari-7621-branch

Canonical link: https://commits.webkit.org/290945.124@webkitglib/2.48


  Commit: 5cf4deaf2527c37012c34115bbf47adbdf3fc27b
      
https://github.com/WebKit/WebKit/commit/5cf4deaf2527c37012c34115bbf47adbdf3fc27b
  Author: Daniel Liu <[email protected]>
  Date:   2025-04-01 (Tue, 01 Apr 2025)

  Changed paths:
    A JSTests/wasm/stress/bbq-fusedif-register-alloc.js
    M Source/JavaScriptCore/wasm/WasmBBQJIT64.cpp

  Log Message:
  -----------
  Cherry-pick 283286.632@safari-7620-branch (4af308c795b6). 
https://bugs.webkit.org/show_bug.cgi?id=286512

    BBQ FusedIf should propagate allocated scratch register to new block
    https://bugs.webkit.org/show_bug.cgi?id=286512
    rdar://142474221

    Reviewed by Yusuke Suzuki.

    Since FusedIf allocates a scratch register, the new block created by
    FusedIf needs to be aware of this allocation, or else it may try to
    allocate another register in the same place.

    * Source/JavaScriptCore/wasm/WasmBBQJIT64.cpp:
    (JSC::Wasm::BBQJITImpl::BBQJIT::addFusedIfCompare):

    Canonical link: https://commits.webkit.org/283286.632@safari-7620-branch

    Canonical link: https://commits.webkit.org/289651.37@safari-7621-branch

Canonical link: https://commits.webkit.org/290945.125@webkitglib/2.48


  Commit: d2aa03f3cd4814108fbe23fb9362e9b6530a27da
      
https://github.com/WebKit/WebKit/commit/d2aa03f3cd4814108fbe23fb9362e9b6530a27da
  Author: Jer Noble <[email protected]>
  Date:   2025-04-01 (Tue, 01 Apr 2025)

  Changed paths:
    A LayoutTests/http/tests/media/clearkey/clear-key-session-id-expected.txt
    A LayoutTests/http/tests/media/clearkey/clear-key-session-id.html
    M Source/WebCore/platform/encryptedmedia/clearkey/CDMClearKey.cpp
    M Source/WebCore/platform/encryptedmedia/clearkey/CDMClearKey.h

  Log Message:
  -----------
  Cherry-pick 283286.633@safari-7620-branch (0fdf187e80df). 
https://bugs.webkit.org/show_bug.cgi?id=286580

    ClearKey session identifiers persist across MediaKeySystem instances
    https://bugs.webkit.org/show_bug.cgi?id=286580
    rdar://143525332

    Reviewed by Eric Carlson.

    Store the next session identifier value in the CDMInstanceClearKey, rather 
than as
    a static variable.

    * LayoutTests/http/tests/media/clearkey/clear-key-session-id-expected.txt: 
Added.
    * LayoutTests/http/tests/media/clearkey/clear-key-session-id.html: Added.
    * Source/WebCore/platform/encryptedmedia/clearkey/CDMClearKey.cpp:
    (WebCore::CDMInstanceSessionClearKey::requestLicense):
    * Source/WebCore/platform/encryptedmedia/clearkey/CDMClearKey.h:

    Canonical link: https://commits.webkit.org/283286.633@safari-7620-branch

    Canonical link: https://commits.webkit.org/289651.38@safari-7621-branch

Canonical link: https://commits.webkit.org/290945.126@webkitglib/2.48


  Commit: 5cadfce6d193e3ec255392fbd13642796a07e659
      
https://github.com/WebKit/WebKit/commit/5cadfce6d193e3ec255392fbd13642796a07e659
  Author: Matt Woodrow <[email protected]>
  Date:   2025-04-01 (Tue, 01 Apr 2025)

  Changed paths:
    M Source/WebCore/dom/ViewTransition.cpp
    M Source/WebCore/dom/ViewTransition.h

  Log Message:
  -----------
  Cherry-pick 283286.634@safari-7620-branch (9ea70df86dfe). 
https://bugs.webkit.org/show_bug.cgi?id=286109

    Crash in WebCore::forEachRendererInPaintOrder; 
WebCore::ViewTransition::captureNewState.
    https://bugs.webkit.org/show_bug.cgi?id=286109
    <rdar://142779342>

    Reviewed by Tim Nguyen.

    captureNewState was writing new styles while iterating the render layer 
tree,
    and also implicitly flushing styles by reading computed values. In rare 
cases
    the style flush could invalidate the render layer positioned list.

    This change splits this into two separate passes. The first pass reads all 
the
    computed styles from the captured elements, and then second pass generates 
all
    the stylesheet changes. Finally we flush style, and configure the VT psuedo
    renderers as needed.

    * Source/WebCore/dom/ViewTransition.cpp:
    (WebCore::ViewTransition::updatePropertiesForGroupPseudo):
    (WebCore::ViewTransition::captureNewState):
    (WebCore::ViewTransition::setupTransitionPseudoElements):
    (WebCore::ViewTransition::activateViewTransition):
    (WebCore::ViewTransition::handleTransitionFrame):
    (WebCore::ViewTransition::updateNewState):
    (WebCore::ViewTransition::updatePseudoElementStyles):
    (WebCore::ViewTransition::updatePseudoElementRenderers):
    (WebCore::ViewTransition::updatePropertiesForRenderer): Deleted.
    (WebCore::ViewTransition::updatePseudoElementSizes): Deleted.
    * Source/WebCore/dom/ViewTransition.h:

    Canonical link: https://commits.webkit.org/283286.634@safari-7620-branch

    Canonical link: https://commits.webkit.org/289651.39@safari-7621-branch

Canonical link: https://commits.webkit.org/290945.127@webkitglib/2.48


  Commit: 311862787420e45618e86b7a5bbb50b578c43de2
      
https://github.com/WebKit/WebKit/commit/311862787420e45618e86b7a5bbb50b578c43de2
  Author: Michael Saboff <[email protected]>
  Date:   2025-04-01 (Tue, 01 Apr 2025)

  Changed paths:
    A JSTests/stress/regexp-lookbehind-char-ignorecase-nongreedy.js
    M Source/JavaScriptCore/yarr/YarrInterpreter.cpp

  Log Message:
  -----------
  Cherry-pick 283286.635@safari-7620-branch (facb51ef4940). 
https://bugs.webkit.org/show_bug.cgi?id=286691

    [JSC] ASAN_TRAP | Yarr::Interpreter::matchDisjunction; 
Yarr::Interpreter::interpret; JSC::Yarr::interpret
    https://bugs.webkit.org/show_bug.cgi?id=286691
    rdar://143684098

    Reviewed by Mark Lam.

    We weren't initializing the begining postion in the 
PatternCasedCharacterNonGreedy matching
    code like we were in the PatternCharacterNonGreedy matching code.  Unified 
the two code patch
    into one.

    Added new tests.

    * JSTests/stress/regexp-lookbehind-char-ignorecase-nongreedy.js: Added.
    (arrayToString):
    (objectToString):
    (dumpValue):
    (compareArray):
    (compareGroups):
    (testRegExp):
    (testRegExpSyntaxError):
    * Source/JavaScriptCore/yarr/YarrInterpreter.cpp:
    (JSC::Yarr::Interpreter::matchDisjunction):

    Canonical link: https://commits.webkit.org/283286.635@safari-7620-branch

    Canonical link: https://commits.webkit.org/289651.40@safari-7621-branch

Canonical link: https://commits.webkit.org/290945.128@webkitglib/2.48


  Commit: 4c65775f049beec4fe0a50c1243dcfa634bf33e1
      
https://github.com/WebKit/WebKit/commit/4c65775f049beec4fe0a50c1243dcfa634bf33e1
  Author: Jer Noble <[email protected]>
  Date:   2025-04-01 (Tue, 01 Apr 2025)

  Changed paths:
    R 
LayoutTests/platform/ios/imported/w3c/web-platform-tests/webaudio/the-audio-api/the-audioworklet-interface/audioworklet-denormals.https.window-expected.txt
    M LayoutTests/platform/mac/TestExpectations
    A LayoutTests/webaudio/audoworklet-denormal-float-values-expected.txt
    A LayoutTests/webaudio/audoworklet-denormal-float-values.html
    M Source/WTF/wtf/PlatformHave.h
    M Source/WebCore/Sources.txt
    M Source/WebCore/WebCore.xcodeproj/project.pbxproj
    A Source/WebCore/platform/audio/DenormalDisabler.cpp
    M Source/WebCore/platform/audio/DenormalDisabler.h

  Log Message:
  -----------
  Cherry-pick 289651.43@safari-7621-branch (c1b04541303e). 
https://bugs.webkit.org/show_bug.cgi?id=286694

    Enable Denormal Disabling on ARM platforms
    https://bugs.webkit.org/show_bug.cgi?id=286694
    rdar://141366322

    Reviewed by Jean-Yves Avenard.

    Modernize DenormalDisabler with an implementation inspired by libwebrtc's.

    The original DenormalDisabler from 2011 only worked with Windows+MSVC, or on
    platforms supporting SSE. Migrate all the CPU checks into PlatformHave.h,
    move the implementation into a .cpp file, and add an implementation for ARM.

    * LayoutTests/webaudio/audoworklet-denormal-float-values-expected.txt: 
Added.
    * LayoutTests/webaudio/audoworklet-denormal-float-values.html: Added.
    * Source/WTF/wtf/PlatformHave.h:
    * Source/WebCore/Sources.txt:
    * Source/WebCore/WebCore.xcodeproj/project.pbxproj:
    * Source/WebCore/platform/audio/DenormalDisabler.cpp: Added.
    (WebCore::readStatusWord):
    (WebCore::setStatusWord):
    (WebCore::areDenormalsEnabled):
    (WebCore::DenormalDisabler::DenormalDisabler):
    (WebCore::DenormalDisabler::~DenormalDisabler):
    * Source/WebCore/platform/audio/DenormalDisabler.h:

    Canonical link: https://commits.webkit.org/289651.43@safari-7621-branch

Canonical link: https://commits.webkit.org/290945.129@webkitglib/2.48


  Commit: 899c0b9c6f4f7395b81678344846c986b115fe48
      
https://github.com/WebKit/WebKit/commit/899c0b9c6f4f7395b81678344846c986b115fe48
  Author: Timothy Hatcher <[email protected]>
  Date:   2025-04-01 (Tue, 01 Apr 2025)

  Changed paths:
    M Source/WebCore/bindings/js/CachedModuleScriptLoader.cpp
    M Source/WebCore/bindings/js/CachedModuleScriptLoader.h
    M Source/WebCore/bindings/js/CachedScriptFetcher.cpp
    M Source/WebCore/bindings/js/CachedScriptFetcher.h
    M Source/WebCore/bindings/js/ScriptModuleLoader.cpp
    M Source/WebCore/dom/LoadableClassicScript.cpp
    M Source/WebCore/dom/ScriptElementCachedScriptFetcher.cpp
    M Source/WebCore/dom/ScriptElementCachedScriptFetcher.h
    M Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtension.mm

  Log Message:
  -----------
  Cherry-pick 289651.71@safari-7621-branch (e0100f67af2d). 
https://bugs.webkit.org/show_bug.cgi?id=287305

    Script imports in Web Extension content script are not isolated from 
service workers.
    https://webkit.org/b/287305
    rdar://144104878

    Reviewed by Chris Dumez.

    When importing a script in an extension isolated world, we should load it 
so that
    it does not use the page's service worker to prevent interference.

    * Source/WebCore/bindings/js/CachedModuleScriptLoader.cpp:
    (WebCore::CachedModuleScriptLoader::load): Pass serviceWorkersMode.
    * Source/WebCore/bindings/js/CachedModuleScriptLoader.h:
    * Source/WebCore/bindings/js/CachedScriptFetcher.cpp:
    (WebCore::CachedScriptFetcher::requestModuleScript const): Pass 
serviceWorkersMode.
    (WebCore::CachedScriptFetcher::requestScriptWithCache const): Use 
serviceWorkersMode or
    default to ServiceWorkersMode::All.
    * Source/WebCore/bindings/js/CachedScriptFetcher.h:
    * Source/WebCore/bindings/js/ScriptModuleLoader.cpp:
    (WebCore::ScriptModuleLoader::fetch): Pass ServiceWorkersMode based on the 
current world.
    * Source/WebCore/dom/LoadableClassicScript.cpp:
    (WebCore::LoadableNonModuleScriptBase::load): Pass { } for 
serviceWorkersMode.
    * Source/WebCore/dom/ScriptElementCachedScriptFetcher.cpp:
    (WebCore::ScriptElementCachedScriptFetcher::requestModuleScript const): 
Pass serviceWorkersMode.
    * Source/WebCore/dom/ScriptElementCachedScriptFetcher.h:
    * Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtension.mm:
    (TestWebKitAPI::TEST(WKWebExtension, ContentScriptImport)): Added.

    Canonical link: https://commits.webkit.org/289651.71@safari-7621-branch

Canonical link: https://commits.webkit.org/290945.130@webkitglib/2.48


  Commit: 247273bfc5d73cb2ad69d27d6938472ac9ba2250
      
https://github.com/WebKit/WebKit/commit/247273bfc5d73cb2ad69d27d6938472ac9ba2250
  Author: Alex Christensen <[email protected]>
  Date:   2025-04-01 (Tue, 01 Apr 2025)

  Changed paths:
    M Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp
    M Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.h
    M Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.messages.in
    M Source/WebKit/Scripts/webkit/messages.py
    M Source/WebKit/Scripts/webkit/tests/MessageArgumentDescriptions.cpp
    M Source/WebKit/Shared/WTFArgumentCoders.serialization.in
    M Source/WebKit/WebProcess/WebCoreSupport/WebMessagePortChannelProvider.cpp

  Log Message:
  -----------
  Cherry-pick 283286.636@safari-7620-branch (b7588e839b38). 
https://bugs.webkit.org/show_bug.cgi?id=286822

    Use an ObjectIdentifier instead of uint64_t for 
NetworkConnectionToWebProcess::didDeliverMessagePortMessages
    https://bugs.webkit.org/show_bug.cgi?id=286822
    rdar://140773504

    Reviewed by Chris Dumez.

    If you send a 0 or -1 to 
NetworkConnectionToWebProcess::didDeliverMessagePortMessages it corrupts 
HashTable memory.
    ObjectIdentifier will refuse to decode such values successfully.

    * Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp:
    (WebKit::NetworkConnectionToWebProcess::nextMessageBatchIdentifier):
    (WebKit::NetworkConnectionToWebProcess::takeAllMessagesForPort):
    (WebKit::NetworkConnectionToWebProcess::didDeliverMessagePortMessages):
    * Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp.orig: 
Copied from Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp.
    * Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.h:
    * Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.messages.in:
    * Source/WebKit/Scripts/webkit/messages.py:
    (serialized_identifiers):
    (headers_for_type):
    * Source/WebKit/Scripts/webkit/tests/MessageArgumentDescriptions.cpp:
    (IPC::serializedIdentifiers):
    * Source/WebKit/Shared/WTFArgumentCoders.serialization.in:
    * Source/WebKit/WebProcess/WebCoreSupport/WebMessagePortChannelProvider.cpp:
    (WebKit::WebMessagePortChannelProvider::takeAllMessagesForPort):

    Canonical link: https://commits.webkit.org/283286.636@safari-7620-branch

    Canonical link: https://commits.webkit.org/289651.91@safari-7621-branch

Canonical link: https://commits.webkit.org/290945.131@webkitglib/2.48


  Commit: ab52cba9f523d289aed9c90ad07fcf4eab1dccb4
      
https://github.com/WebKit/WebKit/commit/ab52cba9f523d289aed9c90ad07fcf4eab1dccb4
  Author: Darryl Parkinson <[email protected]>
  Date:   2025-04-01 (Tue, 01 Apr 2025)

  Changed paths:
    M LayoutTests/http/wpt/webauthn/ctap-hid-failure.https.html
    M LayoutTests/http/wpt/webauthn/ctap-hid-success.https.html
    M LayoutTests/http/wpt/webauthn/ctap-nfc-failure.https.html
    M LayoutTests/http/wpt/webauthn/idl.https.html
    M 
LayoutTests/http/wpt/webauthn/public-key-credential-create-failure-hid-silent.https.html
    M 
LayoutTests/http/wpt/webauthn/public-key-credential-create-failure-hid.https.html
    M 
LayoutTests/http/wpt/webauthn/public-key-credential-create-failure-local-silent.https.html
    M 
LayoutTests/http/wpt/webauthn/public-key-credential-create-failure-local.https.html
    M 
LayoutTests/http/wpt/webauthn/public-key-credential-create-failure-nfc.https.html
    M 
LayoutTests/http/wpt/webauthn/public-key-credential-create-failure-u2f-silent.https.html
    M 
LayoutTests/http/wpt/webauthn/public-key-credential-create-failure-u2f.https.html
    M 
LayoutTests/http/wpt/webauthn/public-key-credential-create-failure.https.html
    M 
LayoutTests/http/wpt/webauthn/public-key-credential-create-success-ccid.https.html
    M 
LayoutTests/http/wpt/webauthn/public-key-credential-create-success-hid.https.html
    M 
LayoutTests/http/wpt/webauthn/public-key-credential-create-success-local.https.html
    M 
LayoutTests/http/wpt/webauthn/public-key-credential-create-success-nfc.https.html
    M 
LayoutTests/http/wpt/webauthn/public-key-credential-create-success-u2f.https.html
    M 
LayoutTests/http/wpt/webauthn/public-key-credential-cross-origin.https.html
    M 
LayoutTests/http/wpt/webauthn/public-key-credential-get-failure-hid-silent.https.html
    M 
LayoutTests/http/wpt/webauthn/public-key-credential-get-failure-hid.https.html
    M 
LayoutTests/http/wpt/webauthn/public-key-credential-get-failure-local-silent.https.html
    M 
LayoutTests/http/wpt/webauthn/public-key-credential-get-failure-local.https.html
    M 
LayoutTests/http/wpt/webauthn/public-key-credential-get-failure-nfc.https.html
    M 
LayoutTests/http/wpt/webauthn/public-key-credential-get-failure-u2f-silent.https.html
    M 
LayoutTests/http/wpt/webauthn/public-key-credential-get-failure-u2f.https.html
    M LayoutTests/http/wpt/webauthn/public-key-credential-get-failure.https.html
    M 
LayoutTests/http/wpt/webauthn/public-key-credential-get-success-ccid.https.html
    M 
LayoutTests/http/wpt/webauthn/public-key-credential-get-success-hid.https.html
    M 
LayoutTests/http/wpt/webauthn/public-key-credential-get-success-local.https.html
    M 
LayoutTests/http/wpt/webauthn/public-key-credential-get-success-nfc.https.html
    M 
LayoutTests/http/wpt/webauthn/public-key-credential-get-success-u2f.https.html
    M 
LayoutTests/http/wpt/webauthn/public-key-credential-get-with-invalid-parameters.https.html
    M LayoutTests/http/wpt/webauthn/public-key-credential-ip-address.html
    M 
LayoutTests/http/wpt/webauthn/public-key-credential-same-origin-with-ancestors.https.html
    M 
LayoutTests/http/wpt/webauthn/resources/public-key-credential-cross-origin.https.html
    M 
LayoutTests/http/wpt/webauthn/resources/public-key-credential-ip-address.https.html
    M Source/WebKit/UIProcess/WebPageProxy.messages.in
    M Tools/TestWebKitAPI/Tests/WebKitCocoa/_WKWebAuthenticationPanel.mm

  Log Message:
  -----------
  Cherry-pick 289651.122@safari-7621-branch (187eb9fbee7c). 
https://bugs.webkit.org/show_bug.cgi?id=287249

    Annotate SetMockWebAuthenticationConfiguration endpoint with 
AllowTestOnlyIPC
    https://bugs.webkit.org/show_bug.cgi?id=287249
    rdar://144224078

    Reviewed by Sihui Liu and Ryosuke Niwa.

    Annotate SetMockWebAuthenticationConfiguration endpoint with 
AllowTestOnlyIPC

    * Source/WebKit/UIProcess/WebPageProxy.messages.in:

    Canonical link: https://commits.webkit.org/289651.122@safari-7621-branch

Canonical link: https://commits.webkit.org/290945.132@webkitglib/2.48


  Commit: b4092de69fc94b6e3906b6f65a2882528a4f86a1
      
https://github.com/WebKit/WebKit/commit/b4092de69fc94b6e3906b6f65a2882528a4f86a1
  Author: Daniel Liu <[email protected]>
  Date:   2025-04-01 (Tue, 01 Apr 2025)

  Changed paths:
    M Source/JavaScriptCore/bytecode/GetByIdMetadata.h

  Log Message:
  -----------
  Cherry-pick 289651.165@safari-7621-branch (a93595279e2b). 
https://bugs.webkit.org/show_bug.cgi?id=287567

    LLInt GetByIdModeMetadata should not hold potentially dead structure IDs
    https://bugs.webkit.org/show_bug.cgi?id=287567
    rdar://144076957

    Reviewed by Yijia Huang and Yusuke Suzuki.

    GetByIdModeMetadata does not reset its structure ID upon transitioning to 
ArrayLengthMode,
    meaning that this could get held over across another reset. This could 
later cause access
    to a freed (or reallocated) structure ID.

    This patch also cleans up the code in `setProtoLoadMode` slightly to clear 
up the specific
    writes being performed.

    This does not apply to other modes, since they set their structure ID 
explicitly. Since the
    mutator thread is the thread changing modes, it will only invalidate the 
structure ID after
    the call to clearToDefaultModeWithoutCache finishes, meaning that the 
structure ID already
    is cleared.

    * Source/JavaScriptCore/bytecode/GetByIdMetadata.h:
    (JSC::GetByIdModeMetadata::clearToDefaultModeWithoutCache):
    (JSC::GetByIdModeMetadata::setUnsetMode):
    (JSC::GetByIdModeMetadata::setArrayLengthMode):
    (JSC::GetByIdModeMetadata::setProtoLoadMode):
    * Source/JavaScriptCore/bytecode/GetByStatus.cpp:
    (JSC::GetByStatus::computeFromLLInt):

    Canonical link: https://commits.webkit.org/289651.165@safari-7621-branch

Canonical link: https://commits.webkit.org/290945.133@webkitglib/2.48


  Commit: ddbb652ea0fe948d482c9bdb61452488b1ed9305
      
https://github.com/WebKit/WebKit/commit/ddbb652ea0fe948d482c9bdb61452488b1ed9305
  Author: Wenson Hsieh <[email protected]>
  Date:   2025-04-01 (Tue, 01 Apr 2025)

  Changed paths:
    M Source/WebKit/WebProcess/WebPage/ViewGestureGeometryCollector.cpp

  Log Message:
  -----------
  Cherry-pick 289651.168@safari-7621-branch (fa20ee9ef67f). 
https://bugs.webkit.org/show_bug.cgi?id=288407

    [watchOS] Occasional crash in 
ViewGestureGeometryCollector::computeTextLegibilityScales when double-tapping
    https://bugs.webkit.org/show_bug.cgi?id=288407
    rdar://145501290

    Reviewed by Abrar Rahman Protyasha.

    Avoid hash table lookup and mutation in `computeTextLegibilityScales`, in 
the case where the font
    size is not a valid `unsigned` hash key; this would correspond to either 0 
or an extremely large
    value anyways, which can safely be ignored for the purposes of this 
heuristic, which attempts to
    estimate a good scale to set when double-tapping to zoom that makes most of 
the text on the webpage
    legible, based on a histogram of sampled font sizes for visible text in the 
DOM.

    To make this code a bit easier to reason about, we also replace the 
`HashMap<unsigned, unsigned>`
    with `HashCountedSet<unsigned>`, and use `add(…)` to increment the counter 
per bucket. Importantly,
    we can also use `HashCountedSet::isValidValue` to avoid any attempts to 
perform hash table lookup/
    mutations against invalid keys (note that the `ValueType` for a 
`HashCountedSet` corresponds to the
    hash key, not the internal count which is always `unsigned`).

    * Source/WebKit/WebProcess/WebPage/ViewGestureGeometryCollector.cpp:
    (WebKit::ViewGestureGeometryCollector::computeTextLegibilityScales):

    Canonical link: https://commits.webkit.org/289651.168@safari-7621-branch

Canonical link: https://commits.webkit.org/290945.134@webkitglib/2.48


  Commit: 5259d53d6b27e8168f8f0229836e792a11e4030c
      
https://github.com/WebKit/WebKit/commit/5259d53d6b27e8168f8f0229836e792a11e4030c
  Author: Chris Dumez <[email protected]>
  Date:   2025-04-01 (Tue, 01 Apr 2025)

  Changed paths:
    A LayoutTests/webaudio/audioworklet-exception-handling-expected.txt
    A LayoutTests/webaudio/audioworklet-exception-handling.html
    M Source/WebCore/Modules/webaudio/AudioWorkletProcessor.cpp

  Log Message:
  -----------
  Cherry-pick 289651.171@safari-7621-branch (56ecf8401bfc). 
https://bugs.webkit.org/show_bug.cgi?id=288452

    Missing exception checks in AudioWorkletProcessor.cpp leading to an OOB 
write
    https://bugs.webkit.org/show_bug.cgi?id=288452
    rdar://145525358

    Reviewed by Yusuke Suzuki.

    Add missing exception checks in AudioWorkletProcessor.cpp.

    * LayoutTests/webaudio/audioworklet-exception-handling-expected.txt: Added.
    * LayoutTests/webaudio/audioworklet-exception-handling.html: Added.
    * Source/WebCore/Modules/webaudio/AudioWorkletProcessor.cpp:
    (WebCore::getArrayAtIndex):
    (WebCore::constructJSFloat32Array):
    (WebCore::constructFrozenKeyValueObject):
    (WebCore::constructFrozenJSArray):
    (WebCore::copyDataFromJSArrayToBuses):
    (WebCore::copyDataFromBusesToJSArray):
    (WebCore::copyDataFromParameterMapToJSObject):
    (WebCore::zeroJSArray):
    (WebCore::AudioWorkletProcessor::buildJSArguments):
    (WebCore::AudioWorkletProcessor::process):

    Canonical link: https://commits.webkit.org/289651.171@safari-7621-branch

Canonical link: https://commits.webkit.org/290945.135@webkitglib/2.48


  Commit: 6677c79b4a499220676f81abbffa833153fed306
      
https://github.com/WebKit/WebKit/commit/6677c79b4a499220676f81abbffa833153fed306
  Author: Frédéric Wang <[email protected]>
  Date:   2025-04-01 (Tue, 01 Apr 2025)

  Changed paths:
    A LayoutTests/fast/editing/insert-list-hang-and-assert-expected.txt
    A LayoutTests/fast/editing/insert-list-hang-and-assert.html
    A 
LayoutTests/fast/frames/max-connected-subframe-count-with-lazy-loading-crash-expected.txt
    A 
LayoutTests/fast/frames/max-connected-subframe-count-with-lazy-loading-crash.html
    M LayoutTests/fast/ruby/crash-when-ruby-base-is-collapsed-expected.txt
    M LayoutTests/fast/text/selection-on-a-detached-tree-expected.txt
    M Source/WebCore/editing/InsertListCommand.cpp
    M Source/WebCore/editing/markup.cpp
    M Source/WebCore/loader/SubframeLoader.cpp
    M Source/WebCore/loader/SubframeLoader.h

  Log Message:
  -----------
  Cherry-pick [email protected] (abbb214798c6). 
https://bugs.webkit.org/show_bug.cgi?id=286833

    Fix connectedSubframeCount overflow with lazy frame loading.
    https://bugs.webkit.org/show_bug.cgi?id=286833

    Reviewed by Ryosuke Niwa.

    HTMLFrameElementBase::openURL() calls createFrameIfNecessary() for lazy
    loaded frames, which will unconditionally increments the value of
    RareDataBitFields::connectedSubframeCount and can lead to a size
    overflow for it. This patch makes sure it never exceeds the value of
    Page::maxNumberOfFrames.

    This bug was originally detected via a repro case that relies on
    InsertListCommand::doApply() looping infinitely and hitting a debug
    assertion in StyledMarkupAccumulator::textContentRespectingRange().
    These two issues are also fixed in this patch.

    * LayoutTests/fast/editing/insert-list-hang-and-assert-expected.txt: Added.
    * LayoutTests/fast/editing/insert-list-hang-and-assert.html: Added. This is 
based on the original repro for the editor bugs.
    * 
LayoutTests/fast/frames/max-connected-subframe-count-with-lazy-loading-crash-expected.txt:
 Added.
    * 
LayoutTests/fast/frames/max-connected-subframe-count-with-lazy-loading-crash.html:
 Added. This is a direct test for the frame bug.
    * LayoutTests/fast/ruby/crash-when-ruby-base-is-collapsed-expected.txt: 
Update expectation.
    * LayoutTests/fast/text/selection-on-a-detached-tree-expected.txt: Update 
expectation.
    * Source/WebCore/editing/InsertListCommand.cpp:
    (WebCore::InsertListCommand::doApply): Make sure startOfCurrentParagraph 
always moves forward, so that we eventually stop.
    * Source/WebCore/editing/markup.cpp:
    (WebCore::StyledMarkupAccumulator::textContentRespectingRange): Don't 
assert for start == end. This handles the case when
    m_start.containerNode() is before the Text node and the m_end is offset 0 
in the Text node.
    * Source/WebCore/loader/SubframeLoader.cpp:
    (WebCore::FrameLoader::SubframeLoader::canCreateSubFrame const): Introduce 
a helper for some conditons of FrameLoader::SubframeLoader::loadSubframe.
    (WebCore::FrameLoader::SubframeLoader::createFrameIfNecessary): Use 
canCreateSubFrame().
    (WebCore::FrameLoader::SubframeLoader::loadSubframe): Ditto.
    * Source/WebCore/loader/SubframeLoader.h: Declare canCreateSubFrame().

    Canonical link: https://commits.webkit.org/[email protected]

    Canonical link: https://commits.webkit.org/289651.187@safari-7621-branch

Canonical link: https://commits.webkit.org/290945.136@webkitglib/2.48


  Commit: 62ad98f8ceb27cdcc2bec98e7d3402c6fe537f45
      
https://github.com/WebKit/WebKit/commit/62ad98f8ceb27cdcc2bec98e7d3402c6fe537f45
  Author: Frédéric Wang <[email protected]>
  Date:   2025-04-01 (Tue, 01 Apr 2025)

  Changed paths:
    A 
LayoutTests/fast/rendering/render-multi-column-set-invalidate-002-crash-expected.txt
    A 
LayoutTests/fast/rendering/render-multi-column-set-invalidate-002-crash.html
    M Source/WebCore/rendering/RenderObject.cpp

  Log Message:
  -----------
  Cherry-pick [email protected] (90b6e2339664). 
https://bugs.webkit.org/show_bug.cgi?id=286931

    Handle consecutive MultiColumnSets in 
propagateRepaintToParentWithOutlineAutoIfNeeded
    https://bugs.webkit.org/show_bug.cgi?id=286931

    Reviewed by Alan Baradlay.

    Special code was added in https://commits.webkit.org/259412@main for
    propagateRepaintToParentWithOutlineAutoIfNeeded() to handle placeholder
    of MultiColumnSet. However, this code assumes the renderer argument of
    findColumnSpannerPlaceholder() is necessarily a spanner if its previous
    sibling is a MultiColumnSet, which is not the case in the reported
    repro case. We align with RenderMultiColumnSet::requiresBalancing() and
    skip the fix in that case. See bug 286931 for details.

    * 
LayoutTests/fast/rendering/render-multi-column-set-invalidate-002-crash-expected.txt:
 Added.
    * 
LayoutTests/fast/rendering/render-multi-column-set-invalidate-002-crash.html: 
Added. Reduced from the original repro.
    * Source/WebCore/rendering/RenderObject.cpp:
    (WebCore::RenderObject::propagateRepaintToParentWithOutlineAutoIfNeeded 
const): Don't try getting a spanner in the bad case when the renderer it itself 
a MultiColumnSet.

    Canonical link: https://commits.webkit.org/[email protected]

    Canonical link: https://commits.webkit.org/289651.188@safari-7621-branch

Canonical link: https://commits.webkit.org/290945.137@webkitglib/2.48


  Commit: 8746ffddc9133318e05521576c239dbd47189888
      
https://github.com/WebKit/WebKit/commit/8746ffddc9133318e05521576c239dbd47189888
  Author: Claudio Saavedra <[email protected]>
  Date:   2025-04-01 (Tue, 01 Apr 2025)

  Changed paths:
    A 
LayoutTests/media/encrypted-media/media-events-transfer-arrays-expected.txt
    A LayoutTests/media/encrypted-media/media-events-transfer-arrays.html
    M Source/JavaScriptCore/jsc.cpp
    M Source/JavaScriptCore/runtime/GenericTypedArrayViewInlines.h
    M Source/JavaScriptCore/runtime/JSGenericTypedArrayView.h
    M Source/JavaScriptCore/runtime/JSGenericTypedArrayViewInlines.h
    M Source/WebCore/Modules/webaudio/AudioBuffer.cpp

  Log Message:
  -----------
  Cherry-pick [email protected] (15ab95a2898a). 
https://bugs.webkit.org/show_bug.cgi?id=286835

    ASAN_TRAP | JSArrayBufferView::ConstructionContext::ConstructionContext; 
JSC::JSGenericTypedArrayView::create; JSC::GenericTypedArrayView::wrapImpl
    https://bugs.webkit.org/show_bug.cgi?id=286835

    Reviewed by Yijia Huang.

    Since ArrayBuffer#transfer was added, it's not possible to assume that a 
impl TypedArray
    will have a valid ArrayBuffer attached. When wrapping a TypedArray with a 
JS counter part,
    JSGenericTypedArrayView<Adaptor>::create() was assumming that the 
TypedArray's buffer would
    not be nullptr, but this is not the case if JS code has transferred the 
buffer
    elsewhere.

    To fix this check that the buffer has not been detached and throw if that's
    not the case.

    This bug seems to only be reproducible at the moment with legacy EME events
    that have Uint8Array attributes, so the added test covers both occurences
    I found.

    * 
LayoutTests/media/encrypted-media/media-events-transfer-arrays-expected.txt: 
Added.
    * LayoutTests/media/encrypted-media/media-events-transfer-arrays.html: 
Added.
    * Source/JavaScriptCore/jsc.cpp:
    (JSC_DEFINE_HOST_FUNCTION):
    * Source/JavaScriptCore/runtime/GenericTypedArrayViewInlines.h:
    (JSC::GenericTypedArrayView<Adaptor>::wrapImpl):
    * Source/JavaScriptCore/runtime/JSGenericTypedArrayView.h:
    * Source/JavaScriptCore/runtime/JSGenericTypedArrayViewInlines.h:
    (JSC::JSGenericTypedArrayView<Adaptor>::create):
    * Source/WebCore/Modules/webaudio/AudioBuffer.cpp:
    (WebCore::AudioBuffer::getChannelData):

    Canonical link: https://commits.webkit.org/[email protected]

    Canonical link: https://commits.webkit.org/289651.189@safari-7621-branch

Canonical link: https://commits.webkit.org/290945.138@webkitglib/2.48


  Commit: 4ff8e1f00ec5288fff4684d6950d47e665d71f53
      
https://github.com/WebKit/WebKit/commit/4ff8e1f00ec5288fff4684d6950d47e665d71f53
  Author: Daniel Liu <[email protected]>
  Date:   2025-04-01 (Tue, 01 Apr 2025)

  Changed paths:
    M Source/JavaScriptCore/bytecode/CodeBlock.cpp

  Log Message:
  -----------
  Cherry-pick 289651.190@safari-7621-branch (15053072f223). 
https://bugs.webkit.org/show_bug.cgi?id=288554

    CodeBlock should reset its StubInfo when jettisoned
    https://bugs.webkit.org/show_bug.cgi?id=288554
    rdar://144072285

    Reviewed by Yusuke Suzuki.

    CodeBlock's StubInfo can keep watchpoints alive which do not ref data they 
hold, meaning
    that when the CodeBlock is jettisoned, we may have dangling pointers to 
data that was
    freed during a GC.

    * Source/JavaScriptCore/bytecode/CodeBlock.cpp:
    (JSC::CodeBlock::jettison):

    Canonical link: https://commits.webkit.org/289651.190@safari-7621-branch

Canonical link: https://commits.webkit.org/290945.139@webkitglib/2.48


  Commit: 842ab26be9f04e717f050cba708f5537685f9a72
      
https://github.com/WebKit/WebKit/commit/842ab26be9f04e717f050cba708f5537685f9a72
  Author: Rupin Mittal <[email protected]>
  Date:   2025-04-01 (Tue, 01 Apr 2025)

  Changed paths:
    A 
LayoutTests/cookies/cookie-store-register-eventlistener-from-file-protocol-expected.txt
    A 
LayoutTests/cookies/cookie-store-register-eventlistener-from-file-protocol.html
    M Source/WebCore/Modules/cookie-store/CookieStore.cpp
    M Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp

  Log Message:
  -----------
  Cherry-pick 289651.191@safari-7621-branch (9bf48496fa9a). 
https://bugs.webkit.org/show_bug.cgi?id=288666

    [SU+Main] [990d58df312b55ff] ASAN_TRAP | 
WebKit::WebCookieJar::addChangeListenerWithAccess; 
WebKit::WebCookieJar::addChangeListener; 
WebCore::CookieStore::eventListenersDidChange
    https://bugs.webkit.org/show_bug.cgi?id=288666
    rdar://144404037

    Reviewed by Chris Dumez.

    Event listeners are keyed on the host of the document that registered them. 
If the request comes from
    a file protocol, the host will be empty and attempting to use an empty 
string as the key of a HashMap
    causes an assert to be hit, leading to a crash.

    We fix this by ensuring that the CookieStore and WebCookieJar do not 
attempt to register event listeners
    with empty host names and if, somehow, such a request were to make it to 
the Network Process, that process
    will kill the sending Web Process.

    Credit to Rob Buis for doing most of the work in creating the layout test.

    * 
LayoutTests/cookies/cookie-store-register-eventlistener-from-file-protocol-expected.txt:
 Added.
    * 
LayoutTests/cookies/cookie-store-register-eventlistener-from-file-protocol.html:
 Added.
    * Source/WebCore/Modules/cookie-store/CookieStore.cpp:
    (WebCore::CookieStore::stop):
    (WebCore::CookieStore::eventListenersDidChange):
    * Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp:
    
(WebKit::NetworkConnectionToWebProcess::subscribeToCookieChangeNotifications):
    
(WebKit::NetworkConnectionToWebProcess::unsubscribeFromCookieChangeNotifications):

    Canonical link: https://commits.webkit.org/289651.191@safari-7621-branch

Canonical link: https://commits.webkit.org/290945.140@webkitglib/2.48


  Commit: 7ee37925b6553ddd2d768cd4efd60447a3181af1
      
https://github.com/WebKit/WebKit/commit/7ee37925b6553ddd2d768cd4efd60447a3181af1
  Author: Rob Buis <[email protected]>
  Date:   2025-04-01 (Tue, 01 Apr 2025)

  Changed paths:
    A LayoutTests/fast/html/autopopover-mismatch-crash-expected.txt
    A LayoutTests/fast/html/autopopover-mismatch-crash.html
    M Source/WebCore/dom/Document.cpp

  Log Message:
  -----------
  Cherry-pick [email protected] (7e6ca0c83e15). 
https://bugs.webkit.org/show_bug.cgi?id=286837

    ASAN_TRAP | WebCore::Document::removeTopLayerElement; 
WebCore::Element::removeFromTopLayer; WebCore::Element::removedFromAncestor
    https://bugs.webkit.org/show_bug.cgi?id=286837

    Reviewed by Tim Nguyen.

    Reloading a document can cause it to become not fully active. That is one 
of the reasons why
    HTMLElement::checkPopoverValidity can fail. In the test case it does fail 
at the final
    instruction where popover is set to 'auto', as part of the 
popoverAttributeChanged steps. So
    we end up with an 'auto' popover that is still showing, and any gc/deletion 
of the element
    will end up in Document::removeTopLayerElement, the if statement will be 
true and the RELEASE_ASSERT
    hit, since the element was never added to m_autoPopoverList, as the test 
case demonstrates.

    Fixing this has proven to be hard, so just remove the RELEASE_ASSERT since 
we have now a situation where
    the popover was not necessarily added to m_autoPopoverList.

    * LayoutTests/fast/html/autopopover-mismatch-crash-expected.txt: Added.
    * LayoutTests/fast/html/autopopover-mismatch-crash.html: Added.
    * Source/WebCore/dom/Document.cpp:
    (WebCore::Document::addTopLayerElement):
    (WebCore::Document::removeTopLayerElement):

    Canonical link: https://commits.webkit.org/[email protected]

    Canonical link: https://commits.webkit.org/289651.198@safari-7621-branch

Canonical link: https://commits.webkit.org/290945.141@webkitglib/2.48


  Commit: d9db92885d62591508652b727c254e864031879a
      
https://github.com/WebKit/WebKit/commit/d9db92885d62591508652b727c254e864031879a
  Author: Frédéric Wang <[email protected]>
  Date:   2025-04-01 (Tue, 01 Apr 2025)

  Changed paths:
    A 
LayoutTests/fast/cookie-store/start-listening-for-change-with-null-url-crash-expected.txt
    A 
LayoutTests/fast/cookie-store/start-listening-for-change-with-null-url-crash.html

  Log Message:
  -----------
  Cherry-pick [email protected] (181f1f4f7cd0). 
https://bugs.webkit.org/show_bug.cgi?id=286834

    Add a test for a NULLPTR crash in startListeningForCookieChangeNotifications
    https://bugs.webkit.org/show_bug.cgi?id=286834

    Reviewed by Ryosuke Niwa.

    It was crashing when the url argument contains a null string but this was 
fixed
    by https://commits.webkit.org/289567@main which block cookies for an invalid
    url.

    * 
LayoutTests/fast/cookie-store/start-listening-for-change-with-null-url-crash-expected.txt:
 Added.
    * 
LayoutTests/fast/cookie-store/start-listening-for-change-with-null-url-crash.html:
 Added.

    Canonical link: https://commits.webkit.org/[email protected]

    Canonical link: https://commits.webkit.org/289651.199@safari-7621-branch

Canonical link: https://commits.webkit.org/290945.142@webkitglib/2.48


  Commit: a6db3f7923863143d61c282bc4114bad72e3ba9b
      
https://github.com/WebKit/WebKit/commit/a6db3f7923863143d61c282bc4114bad72e3ba9b
  Author: Yusuke Suzuki <[email protected]>
  Date:   2025-04-01 (Tue, 01 Apr 2025)

  Changed paths:
    A JSTests/stress/stack-height-check.js
    M Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp

  Log Message:
  -----------
  Cherry-pick 289651.210@safari-7621-branch (d58fb4361f2a). 
https://bugs.webkit.org/show_bug.cgi?id=287791

    Instruction movaps access unaligned memory in JavaScriptCore 
operationHasEnumerableIndexedProperty
    https://bugs.webkit.org/show_bug.cgi?id=287791
    rdar://144977122

    Reviewed by Yijia Huang.

    Except for ARM64, pushToSave just pushes the register to the stack. So
    in x64 etc., stack height alignment can be broken when we only do
    pushing once. We need to do twice to align stack with 16-bytes.

    * JSTests/stress/stack-height-check.js: Added.
    (test):
    (const.v20.in.v19.test.v20):
    * Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:

    Canonical link: https://commits.webkit.org/289651.210@safari-7621-branch

Canonical link: https://commits.webkit.org/290945.143@webkitglib/2.48


  Commit: 7222f95087176e9641353544b6890680a5cda217
      
https://github.com/WebKit/WebKit/commit/7222f95087176e9641353544b6890680a5cda217
  Author: Yusuke Suzuki <[email protected]>
  Date:   2025-04-01 (Tue, 01 Apr 2025)

  Changed paths:
    M Source/JavaScriptCore/bytecode/GetByIdMetadata.h

  Log Message:
  -----------
  Cherry-pick 289651.211@safari-7621-branch (38a19eb3b7c0). 
https://bugs.webkit.org/show_bug.cgi?id=289017

    [JSC] GetByIdModeMetadata's mode needs to be set when not using 64bit 
pointer
    https://bugs.webkit.org/show_bug.cgi?id=289017
    rdar://145852436

    Reviewed by Mark Lam.

    On environment having 32bit pointer or non-little-endian, mode needs to
    be set.

    * Source/JavaScriptCore/bytecode/GetByIdMetadata.h:
    (JSC::GetByIdModeMetadata::setProtoLoadMode):

    Canonical link: https://commits.webkit.org/289651.211@safari-7621-branch

Canonical link: https://commits.webkit.org/290945.144@webkitglib/2.48


  Commit: 00f2564d0704513d514dc2d5702b91a35bee1a4e
      
https://github.com/WebKit/WebKit/commit/00f2564d0704513d514dc2d5702b91a35bee1a4e
  Author: Brent Fulgham <[email protected]>
  Date:   2025-04-01 (Tue, 01 Apr 2025)

  Changed paths:
    M Source/WTF/Scripts/Preferences/UnifiedWebPreferences.yaml

  Log Message:
  -----------
  Cherry-pick 17b810c5dd42. https://bugs.webkit.org/show_bug.cgi?id=289017

    [LDM] Disable SafeFontParser code path until stability issues are resolved
    rdar://146310860

    Reviewed by Vitor Roriz.

    Revert the enablement of the SafeFontParser in LDM.

    * Source/WTF/Scripts/Preferences/UnifiedWebPreferences.yaml:

    Canonical link: https://commits.webkit.org/289651.233@safari-7621-branch

Canonical link: https://commits.webkit.org/290945.145@webkitglib/2.48


  Commit: a2d01afed7369155c1f03e8728135562656a8861
      
https://github.com/WebKit/WebKit/commit/a2d01afed7369155c1f03e8728135562656a8861
  Author: Dan Hecht <[email protected]>
  Date:   2025-04-01 (Tue, 01 Apr 2025)

  Changed paths:
    M JSTests/wasm/stress/tail-call-js-to-wasm.js
    M Source/JavaScriptCore/wasm/WasmOMGIRGenerator.cpp

  Log Message:
  -----------
  Cherry-pick 0f9cca586aee. https://bugs.webkit.org/show_bug.cgi?id=289100

    [JSC] wasm tail-call patchpoint can clobber param register
    https://bugs.webkit.org/show_bug.cgi?id=289100
    rdar://145246917

    Reviewed by Yusuke Suzuki and Keith Miller.

    The wasm tail call patchpoint was saving/restoring
    the tmp register before clobbering it, however it was still
    reading the tmp register in the case that the tmp was used
    to pass an argument. Fix this by using the already spilled
    value for this register.

    Also, in assert builds, the code that stores 0xBEEF to
    the safe area clobbers tmp (since it's also the
    macroassembler's data scratch), so the tmp spilling
    must occur before that.

    An alternate solution considered was to mark the tmp
    (which is also the macroassembler's scratch) as an early
    clobber. However, on x86_64 there are not enough registers
    for that solution since a register is used to carry the
    "calleeCallee" across the prepare code, and on x86_64 the
    only available register for that is the tmp/scratch.

    * JSTests/wasm/stress/tail-call-js-to-wasm.js:
    (async testCallToTail):
    (async testCallToTail2):
    * Source/JavaScriptCore/wasm/WasmOMGIRGenerator.cpp:
    (JSC::Wasm::prepareForTailCallImpl):

    Canonical link: https://commits.webkit.org/289651.241@safari-7621-branch

Canonical link: https://commits.webkit.org/290945.146@webkitglib/2.48


  Commit: 60942f7a9eca63532c4f275033c8ab3c7c7ba335
      
https://github.com/WebKit/WebKit/commit/60942f7a9eca63532c4f275033c8ab3c7c7ba335
  Author: Yusuke Suzuki <[email protected]>
  Date:   2025-04-01 (Tue, 01 Apr 2025)

  Changed paths:
    A JSTests/wasm/stress/js-tag-rethrow.js
    M Source/JavaScriptCore/interpreter/Interpreter.cpp

  Log Message:
  -----------
  Cherry-pick 5c8b9aff5306. https://bugs.webkit.org/show_bug.cgi?id=289286

    [JSC] js-tagged error can be rethrow so we should wrap it whenever 
exception is not wasm exception
    https://bugs.webkit.org/show_bug.cgi?id=289286
    rdar://144588498

    Reviewed by Keith Miller.

    JS-tagged exception can be thrown via rethrow. So it does not matter
    whether an error is through JS frames. Let's wrap an exception with wasm
    exception object whenever thrown value is not an wasm exception value
    *and* handler is wasm code.

    * JSTests/wasm/stress/js-tag-rethrow.js: Added.
    (main):
    (shouldBe):
    (catch):
    * Source/JavaScriptCore/interpreter/Interpreter.cpp:
    (JSC::UnwindFunctor::UnwindFunctor):
    (JSC::UnwindFunctor::operator() const):

    Canonical link: https://commits.webkit.org/289651.242@safari-7621-branch

Canonical link: https://commits.webkit.org/290945.147@webkitglib/2.48


  Commit: 2569e17b04b3ae07c6d866c01a3647480a30c752
      
https://github.com/WebKit/WebKit/commit/2569e17b04b3ae07c6d866c01a3647480a30c752
  Author: Adrian Perez de Castro <[email protected]>
  Date:   2025-04-01 (Tue, 01 Apr 2025)

  Changed paths:
    M Source/WebCore/platform/encryptedmedia/clearkey/CDMClearKey.cpp

  Log Message:
  -----------
  fixup! Cherry-pick 283286.633@safari-7620-branch (0fdf187e80df). 
https://bugs.webkit.org/show_bug.cgi?id=286580

Canonical link: https://commits.webkit.org/290945.148@webkitglib/2.48


Compare: https://github.com/WebKit/WebKit/compare/f7487089491a...2569e17b04b3

To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to