Branch: refs/heads/webkitglib/2.52
Home: https://github.com/WebKit/WebKit
Commit: 7a2b71d0014f0b661cbaf9a04efc50dec769d094
https://github.com/WebKit/WebKit/commit/7a2b71d0014f0b661cbaf9a04efc50dec769d094
Author: Rupin Mittal <[email protected]>
Date: 2026-04-16 (Thu, 16 Apr 2026)
Changed paths:
M
Source/WebKit/NetworkProcess/ServiceWorker/ServiceWorkerNavigationPreloader.cpp
Log Message:
-----------
Cherry-pick 311165@main (4e1728b58249).
https://bugs.webkit.org/show_bug.cgi?id=312219
StabilityTracer: Crash in NetworkProcess::findPendingDownloadLocation
https://bugs.webkit.org/show_bug.cgi?id=312219
rdar://174045941
Reviewed by Chris Dumez.
NetworkProcess::findPendingDownloadLocation passes a lambda to
DownloadProxy::DecideDestinationWithSuggestedFilename which contians a
completionHandler. When this completionHandler is called, we crash because
the
underlying function is null. It's possible that when the completionHandler
was passed in to NetworkProcess::findPendingDownloadLocation(), it was
already
null.
One of the ways this completionHandler ends up here is:
1. DownloadManager::convertNetworkLoadToDownload()
2. PendingDownload::PendingDownload()
3. NetworkLoad::convertTaskToDownload()
4. NetworkProcess::findPendingDownloadLocation()
There are three callsites to convertNetworkLoadToDownload() that pass in a
completionHandler. One of them constructs the completionHandler right before
passing it in. The other null checks the completionHandler before passing it
in. The third callsite,
ServiceWorkerNavigationPreloader::convertToDownload(),
does neither.
So, as a speculative fix, we amend the this third callsite to null check its
completionHandler before passing it to convertNetworkLoadToDownload().
*
Source/WebKit/NetworkProcess/ServiceWorker/ServiceWorkerNavigationPreloader.cpp:
(WebKit::ServiceWorkerNavigationPreloader::convertToDownload):
Canonical link: https://commits.webkit.org/311165@main
Canonical link: https://commits.webkit.org/305877.435@webkitglib/2.52
Commit: 1f33d1908da09ad328f7efcc4b1eeca62d1b6c77
https://github.com/WebKit/WebKit/commit/1f33d1908da09ad328f7efcc4b1eeca62d1b6c77
Author: Tyler Wilcock <[email protected]>
Date: 2026-04-16 (Thu, 16 Apr 2026)
Changed paths:
A LayoutTests/accessibility/aria-labelledby-cycle-multi-element-expected.txt
A LayoutTests/accessibility/aria-labelledby-cycle-multi-element.html
M Source/WebCore/accessibility/AccessibilityNodeObject.cpp
Log Message:
-----------
Cherry-pick 311172@main (a7d0c4715931).
https://bugs.webkit.org/show_bug.cgi?id=312187
AX: Resolving aria-labelledby and aria-describedby can cause infinite
recursion, eventually crashing
https://bugs.webkit.org/show_bug.cgi?id=312187
rdar://174683836
Reviewed by Chris Fleizach.
The accessible name computation had no recursion guard against cycles
involving 3+ elements. The existing ignoredChildNode guard only prevented
direct 2-element cycles. Cycles through intermediary elements bypassed it
because each descriptionForElements call created a fresh
TextUnderElementMode
with a different ignoredChildNode.
Added a visited-element set (via static NeverDestroyed<HashSet>) to both
ariaLabeledByAttribute() and ariaDescribedByAttribute(). If we re-enter
either function for an element already being resolved, we return an empty
string, breaking the cycle. This follows the W3C accname spec: "If the
current node is already part of an aria-labelledby traversal, do not
follow its aria-labelledby."
*
LayoutTests/accessibility/aria-labelledby-cycle-multi-element-expected.txt:
Added.
* LayoutTests/accessibility/aria-labelledby-cycle-multi-element.html: Added.
* Source/WebCore/accessibility/AccessibilityNodeObject.cpp:
(WebCore::AccessibilityNodeObject::ariaDescribedByAttribute const):
(WebCore::AccessibilityNodeObject::ariaLabeledByAttribute const):
Canonical link: https://commits.webkit.org/311172@main
Canonical link: https://commits.webkit.org/305877.436@webkitglib/2.52
Compare: https://github.com/WebKit/WebKit/compare/a4380724fc1f...1f33d1908da0
To unsubscribe from these emails, change your notification settings at
https://github.com/WebKit/WebKit/settings/notifications