Branch: refs/heads/webkitglib/2.52
  Home:   https://github.com/WebKit/WebKit
  Commit: b4e5456e5a949a61c0cef77215b57e0ae362da7d
      
https://github.com/WebKit/WebKit/commit/b4e5456e5a949a61c0cef77215b57e0ae362da7d
  Author: Sosuke Suzuki <[email protected]>
  Date:   2026-04-09 (Thu, 09 Apr 2026)

  Changed paths:
    A JSTests/modules/arbitrary-module-names-star.js
    A JSTests/modules/arbitrary-module-names-star/export.js
    M JSTests/test262/expectations.yaml
    M Source/JavaScriptCore/parser/NodesAnalyzeModule.cpp
    M Source/JavaScriptCore/parser/Parser.cpp
    M Source/JavaScriptCore/runtime/CommonIdentifiers.cpp
    M Source/JavaScriptCore/runtime/CommonIdentifiers.h

  Log Message:
  -----------
  Cherry-pick 310776@main (46479ddbd5e6). 
https://bugs.webkit.org/show_bug.cgi?id=311509

    [JSC] `import { "*" as x }` should not be treated as a namespace import
    https://bugs.webkit.org/show_bug.cgi?id=311509

    Reviewed by Yusuke Suzuki.

    ES2022 introduced ModuleExportName, allowing arbitrary string literals as
    import/export binding names. JSC was using the public string "*" as a
    sentinel to mark NamespaceImport (`import * as ns`) in ImportSpecifier
    nodes, which collides with the user-written `import { "*" as x }`.

    The export side (`export * as ns`) was already fixed to use
    starNamespacePrivateName when ModuleExportName was implemented, but the
    import side was missed. This patch aligns the import side to use the same
    PrivateName sentinel, and removes the now-unused timesIdentifier.

    Tests: JSTests/modules/arbitrary-module-names-star.js
           JSTests/modules/arbitrary-module-names-star/export.js

    * JSTests/modules/arbitrary-module-names-star.js: Added.
    * JSTests/modules/arbitrary-module-names-star/export.js: Added.
    * JSTests/test262/expectations.yaml:
    * Source/JavaScriptCore/parser/NodesAnalyzeModule.cpp:
    (JSC::ImportDeclarationNode::analyzeModule):
    * Source/JavaScriptCore/parser/Parser.cpp:
    (JSC::Parser<LexerType>::parseImportClauseItem):
    * Source/JavaScriptCore/runtime/CommonIdentifiers.cpp:
    (JSC::CommonIdentifiers::CommonIdentifiers):
    * Source/JavaScriptCore/runtime/CommonIdentifiers.h:

    Canonical link: https://commits.webkit.org/310776@main

Canonical link: https://commits.webkit.org/305877.393@webkitglib/2.52


  Commit: ba67198703cc9a5841857f15a5805c8f24da0a55
      
https://github.com/WebKit/WebKit/commit/ba67198703cc9a5841857f15a5805c8f24da0a55
  Author: Antoine Quint <[email protected]>
  Date:   2026-04-09 (Thu, 09 Apr 2026)

  Changed paths:
    A 
LayoutTests/webanimations/custom-effect/custom-effect-set-to-null-in-callback-expected.txt
    A 
LayoutTests/webanimations/custom-effect/custom-effect-set-to-null-in-callback.html
    M Source/WebCore/animation/AnimationEffect.h
    M Source/WebCore/animation/KeyframeEffect.h
    M Source/WebCore/animation/WebAnimation.cpp

  Log Message:
  -----------
  Cherry-pick 310785@main (106edd02a3cc). 
https://bugs.webkit.org/show_bug.cgi?id=311072

    [web-animations] setting effect to null in `CustomEffect` callback leads to 
a crash
    https://bugs.webkit.org/show_bug.cgi?id=311072
    rdar://173671661

    Reviewed by Anne van Kesteren.

    The callback for a `CustomEffect`, which is called under 
`CustomEffect::animationDidTick()`,
    can reset the associated animation's effect to null. We must make sure that 
the subsequent
    call to `AnimationEffect::animationBecameReady()` is performed on a valid 
effect.

    Since the only concrete implementation of 
`AnimationEffect::animationBecameReady()` was for
    `KeyframeEffect`, we move this function to `KeyframeEffect` instead of 
being a virtual function
    on the superclass.

    Test: webanimations/custom-effect/custom-effect-set-to-null-in-callback.html

    * 
LayoutTests/webanimations/custom-effect/custom-effect-set-to-null-in-callback-expected.txt:
 Added.
    * 
LayoutTests/webanimations/custom-effect/custom-effect-set-to-null-in-callback.html:
 Added.
    * Source/WebCore/animation/AnimationEffect.h:
    (WebCore::AnimationEffect::animationDidTick):
    (WebCore::AnimationEffect::animationBecameReady): Deleted.
    * Source/WebCore/animation/KeyframeEffect.h:
    * Source/WebCore/animation/WebAnimation.cpp:
    (WebCore::WebAnimation::tick):

    Canonical link: https://commits.webkit.org/310785@main

Canonical link: https://commits.webkit.org/305877.394@webkitglib/2.52


  Commit: 568afceb5b124dddda77eb23a88a40c4eed3743e
      
https://github.com/WebKit/WebKit/commit/568afceb5b124dddda77eb23a88a40c4eed3743e
  Author: Chris Dumez <[email protected]>
  Date:   2026-04-09 (Thu, 09 Apr 2026)

  Changed paths:
    A 
LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-extractContents-dynamic-end-expected.txt
    A 
LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-extractContents-dynamic-end.html
    M Source/WebCore/dom/Range.cpp

  Log Message:
  -----------
  Cherry-pick 310770@main (9dac73538145). 
https://bugs.webkit.org/show_bug.cgi?id=311700

    Range.extractContents should not extract out-of-bounds nodes if end 
container is removed during extraction
    https://bugs.webkit.org/show_bug.cgi?id=311700

    Reviewed by Anne van Kesteren.

    When Range::extractContents() processes nodes, removing an iframe can fire 
a synchronous
    unload event. If that event handler removes the Range's end container from 
the DOM, the
    extraction loop loses its end boundary (processEnd becomes null) and 
continues extracting
    all remaining siblings of the common root, including nodes that were 
outside the original range.

    Fix this by skipping the middle node processing when processEnd is null and 
the original
    end container is no longer a descendant of the common root.

    Test: 
imported/w3c/web-platform-tests/dom/ranges/Range-extractContents-dynamic-end.html
    This test was contributed upstream by Blink. It fails in shipping Safari 
but passes with
    this fix. This is thus aligning our behavior with Blink.

    * 
LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-extractContents-dynamic-end-expected.txt:
 Added.
    * 
LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-extractContents-dynamic-end.html:
 Added.
    * Source/WebCore/dom/Range.cpp:
    (WebCore::Range::processContents):

    Canonical link: https://commits.webkit.org/310770@main

Canonical link: https://commits.webkit.org/305877.395@webkitglib/2.52


  Commit: afc70fa5b9aa60bd1e1d395fa95676310c8a425b
      
https://github.com/WebKit/WebKit/commit/afc70fa5b9aa60bd1e1d395fa95676310c8a425b
  Author: Anand Srinivasan <[email protected]>
  Date:   2026-04-09 (Thu, 09 Apr 2026)

  Changed paths:
    A JSTests/stress/validate-does-gc-heap-bigint-compare-watchdog.js
    M Source/JavaScriptCore/dfg/DFGDoesGCCheck.cpp
    M Source/JavaScriptCore/dfg/DFGDoesGCCheck.h
    M Source/JavaScriptCore/runtime/VM.cpp

  Log Message:
  -----------
  Cherry-pick 310722@main (f5b52841f6b5). 
https://bugs.webkit.org/show_bug.cgi?id=311229

    Reset doesGC expectation upon VM termination to avoid stale assertion
    https://bugs.webkit.org/show_bug.cgi?id=311229
    rdar://172191300

    Reviewed by Yusuke Suzuki.

    If the VM terminates in the middle of DFG/FTL JIT code, right now
    m_doesGC contains the value corresponding to the last node executed. If
    this happens, the next time a thread tries to acquire a JSLock it will
    read the stale value in m_doesGC and potentially crash. OSR exits from
    JIT code already reset the value to true, so throwTerminationException
    should do the same thing.

    Test: JSTests/stress/validate-does-gc-heap-bigint-compare-watchdog.js

    * JSTests/stress/validate-does-gc-heap-bigint-compare-watchdog.js: Added.
    (vm.useJIT):
    * Source/JavaScriptCore/dfg/DFGDoesGCCheck.cpp:
    (JSC::DFG::DoesGCCheck::verifyCanGC):
    * Source/JavaScriptCore/dfg/DFGDoesGCCheck.h:
    * Source/JavaScriptCore/runtime/VM.cpp:
    (JSC::VM::throwTerminationException):

    Canonical link: https://commits.webkit.org/310722@main

Canonical link: https://commits.webkit.org/305877.396@webkitglib/2.52


  Commit: 4bef4b69e00616fdb55b1820a75417c98b4460eb
      
https://github.com/WebKit/WebKit/commit/4bef4b69e00616fdb55b1820a75417c98b4460eb
  Author: Chris Dumez <[email protected]>
  Date:   2026-04-09 (Thu, 09 Apr 2026)

  Changed paths:
    M 
LayoutTests/imported/w3c/web-platform-tests/dom/nodes/ParentNode-append-expected.txt
    M 
LayoutTests/imported/w3c/web-platform-tests/dom/nodes/ParentNode-append.html
    M Source/WebCore/dom/Node.cpp

  Log Message:
  -----------
  Cherry-pick 310807@main (eda04d24c262). 
https://bugs.webkit.org/show_bug.cgi?id=311708

    ParentNode.append() should de-duplicate nodes when the same node is passed 
multiple times
    https://bugs.webkit.org/show_bug.cgi?id=311708

    Reviewed by Ryosuke Niwa.

    When the same node is passed multiple times to ParentNode.append() (e.g., 
append(x, y, x)),
    convertNodesOrStringsIntoNodeVector() would produce a vector with duplicate 
entries. This
    caused a crash in appendChildCommon() which asserts that the node has no 
parent, since the
    first insertion already parented the node.

    Fix by de-duplicating nodes in convertNodesOrStringsIntoNodeVector(), 
keeping only the last
    occurrence of each duplicate node. This matches the spec behavior as if a 
temporary
    DocumentFragment was used, and matches Blink and Gecko.

    No new tests, covered by 
imported/w3c/web-platform-tests/dom/nodes/ParentNode-append.html
    which was resync'd from upstream to gain test coverage. This test is 
already passing in
    Chrome and Firefox so this aligns our behavior with them.

    * 
LayoutTests/imported/w3c/web-platform-tests/dom/nodes/ParentNode-append-expected.txt:
    * 
LayoutTests/imported/w3c/web-platform-tests/dom/nodes/ParentNode-append.html:
    * Source/WebCore/dom/Node.cpp:
    (WebCore::Node::convertNodesOrStringsIntoNodeVector):

    Canonical link: https://commits.webkit.org/310807@main

Canonical link: https://commits.webkit.org/305877.397@webkitglib/2.52


  Commit: 1e5332e094d45c3b412a33d3587fb353aeaaac25
      
https://github.com/WebKit/WebKit/commit/1e5332e094d45c3b412a33d3587fb353aeaaac25
  Author: Karl Dubost <[email protected]>
  Date:   2026-04-09 (Thu, 09 Apr 2026)

  Changed paths:
    A 
LayoutTests/imported/w3c/web-platform-tests/svg/animations/syncbase-escaped-dots-expected.txt
    A 
LayoutTests/imported/w3c/web-platform-tests/svg/animations/syncbase-escaped-dots.html
    M Source/WebCore/svg/animation/SVGSMILElement.cpp

  Log Message:
  -----------
  Cherry-pick 310805@main (ba227e713a99). 
https://bugs.webkit.org/show_bug.cgi?id=42871

    Cannot escape Id-value in SVG animation timing attributes
    https://bugs.webkit.org/show_bug.cgi?id=42871
    rdar://94260935

    Reviewed by Antoine Quint.

    The SMIL3 specification (ยง Parsing timing specifiers) requires that
    the reverse solidus character '\' be used to escape full stop '.'
    characters within Id-values in timing attributes, so that dots in
    element IDs are not confused with the Id/event separator.

    For example, begin="my\.anim.end" should reference an element with
    id="my.anim" and its "end" event. WebKit's parseCondition() used a
    simple find('.') which matched the first dot regardless of escaping.

    The fix finds the first unescaped dot (not preceded by '\') when
    splitting the condition string, then strips backslash escapes from
    the resolved element ID before lookup.

    The tests use only .begin events since parseCondition() handles
    begin and end attributes through the same code path.

    Spec: https://www.w3.org/TR/SMIL3/smil-timing.html#q22

    Test: 
imported/w3c/web-platform-tests/svg/animations/syncbase-escaped-dots.html

    * 
LayoutTests/imported/w3c/web-platform-tests/svg/animations/syncbase-escaped-dots-expected.txt:
 Added.
    * 
LayoutTests/imported/w3c/web-platform-tests/svg/animations/syncbase-escaped-dots.html:
 Added.
    * Source/WebCore/svg/animation/SVGSMILElement.cpp:
    (WebCore::SVGSMILElement::parseCondition):

    Canonical link: https://commits.webkit.org/310805@main

Canonical link: https://commits.webkit.org/305877.398@webkitglib/2.52


Compare: https://github.com/WebKit/WebKit/compare/522253d02265...1e5332e094d4

To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications

Reply via email to