Branch: refs/heads/webkitglib/2.52
Home: https://github.com/WebKit/WebKit
Commit: 22684bbb9321e60115f0397bdfc77eb8abca61bd
https://github.com/WebKit/WebKit/commit/22684bbb9321e60115f0397bdfc77eb8abca61bd
Author: Philippe Normand <[email protected]>
Date: 2026-05-05 (Tue, 05 May 2026)
Changed paths:
M Source/WebCore/platform/glib/UserAgentQuirks.cpp
M Tools/TestWebKitAPI/Tests/WebCore/UserAgentQuirks.cpp
Log Message:
-----------
Cherry-pick 312508@main (80b3082d0146).
https://bugs.webkit.org/show_bug.cgi?id=313813
[WPE][GTK] Add a user-agent quirk for disney+
https://bugs.webkit.org/show_bug.cgi?id=313813
Reviewed by Carlos Garcia Campos.
Without this quirk only Fairplay DRM is attempted when trying to play DRM
content, because we would
be detected as a Safari UA. By faking a Firefox UA the page might prompt
for more DRM systems, such
as Widevine.
* Source/WebCore/platform/glib/UserAgentQuirks.cpp:
(WebCore::urlRequiresFirefoxBrowser):
Canonical link: https://commits.webkit.org/312508@main
Canonical link: https://commits.webkit.org/305877.469@webkitglib/2.52
Commit: 23c92463651b8d38d616e449d97205a52e515c2b
https://github.com/WebKit/WebKit/commit/23c92463651b8d38d616e449d97205a52e515c2b
Author: Razvan Caliman <[email protected]>
Date: 2026-05-05 (Tue, 05 May 2026)
Changed paths:
M Source/WebCore/inspector/agents/InspectorLayerTreeAgent.cpp
M Source/WebInspectorUI/UserInterface/Controllers/LayerTreeManager.js
Log Message:
-----------
Cherry-pick 312435@main (95810670932e).
https://bugs.webkit.org/show_bug.cgi?id=307431
Navigating with the Layers inspector tab open breaks the visualization
https://bugs.webkit.org/show_bug.cgi?id=307431
rdar://170836910
Reviewed by Devin Rousso and Qianlang Chen.
There's a race condition that occurs between backend and frontend during
page reload/navigation
while the Layers tab is open resulting in requesting layer snapshots for
layers that have been
resized to zero during the transition.
Page navigation triggers a `WI.LayerTreeManager.Event.LayerTreeDidChange`
event which
`WI.Layers3DContentView.prototype._layerTreeDidChange` handles by causing
layout of the Layers tab.
Layout fetches layers via
`WI.Layers3DContentView.prototype.layersForNode()`. At this point,
layers exist and have valid sizes. Then for each layer, the frontend calls:
`_populateLayerGroup()` → `_loadLayerTexture()` → `snapshotForLayer()`.
The request for snapshot sends `LayerTreeAgent.requestContent` to the
backend. But, during the
navigation, the render tree has changed: layers may have been destroyed,
lost their compositing backing,
lost their graphics layer, or resized to zero during the transition.
All states throw errors in `InspectorLayerTreeAgent::requestContent`.
The zero-size case is common because, during navigation, the new page's
render tree initially creates
layers with zero dimensions before layout runs.
The error returned by the backend is handled by calling the callback to
`snapshotForLayer()` with `null`
which is a case handled further down the call chain in
`WI.Layers3DContentView.prototype._loadLayerTexture()`.
This is only an issue in Engineering / Debug builds of Web Inspector where
`WI.reportInternalError(error)` surfaces the exception. In release builds,
the `null` case is silently handled.
This patch changes the backend to return an empty string instead of
throwing an error for zero-size layers
given how common the case is during page navigation and that zero-sized
layers aren't really an error state.
The issue itself is transient because during reload/navigation, more layer
tree change events are dispatched.
The compositing update that resized layers to zero isn't the last one. When
the new page finishes loading and layout,
`RenderLayerCompositor::updateCompositingLayers` runs again, firing another
event.
The failed snapshot from the transitional state just results in
`callback(null)` in
`WI.Layers3DContentView.prototype._loadLayerTexture`, which means no
texture is applied to that layer group.
Then, the next successful cycle replaces it with the correct textured mesh.
The zero-size layer error only hits during the intermediate state. The
final stable state always produces a clean pass.
* Source/WebCore/inspector/agents/InspectorLayerTreeAgent.cpp:
(WebCore::InspectorLayerTreeAgent::requestContent):
* Source/WebInspectorUI/UserInterface/Controllers/LayerTreeManager.js:
(WI.LayerTreeManager.prototype.snapshotForLayer):
Canonical link: https://commits.webkit.org/312435@main
Canonical link: https://commits.webkit.org/305877.470@webkitglib/2.52
Commit: 306ced7208c5521d1157324f3538fd61210544b9
https://github.com/WebKit/WebKit/commit/306ced7208c5521d1157324f3538fd61210544b9
Author: Tyler Wilcock <[email protected]>
Date: 2026-05-05 (Tue, 05 May 2026)
Changed paths:
A LayoutTests/accessibility/aria-hidden-deep-dom-no-crash-expected.txt
A LayoutTests/accessibility/aria-hidden-deep-dom-no-crash.html
M Source/WebCore/accessibility/AXCoreObject.h
Log Message:
-----------
Cherry-pick 311611@main (e22f4427f1ee).
https://bugs.webkit.org/show_bug.cgi?id=312780
AX: Convert recursive descendant traversal functions to iterative to
prevent stack overflow
https://bugs.webkit.org/show_bug.cgi?id=312780
rdar://172861598
Reviewed by Joshua Hoffman.
enumerateDescendantsIncludingIgnored, findUnignoredDescendant, and
enumerateUnignoredDescendants used unbounded recursion to traverse the
accessibility tree. This could cause stack overflow in two scenarios:
1. JavaScript constructs a deeply nested DOM (e.g. via appendChild) and
toggles aria-hidden, recomputeIsIgnoredForDescendants calls
enumerateDescendantsIncludingIgnored,
which recurses through every descendant with no depth limit.
2. The tree has a cycle, and we recurse infinitely following the cycle
until we crash.
This commit converts all three functions from recursion to iterative DFS
using an explicit Vector stack, preventing the possibility of stack
overflow.
An iteration limit is added to avoid looping forever, and asserts are
added to detect cyles so we can try to debug and fix them (if that is
indeed what was causing this).
* LayoutTests/accessibility/aria-hidden-deep-dom-no-crash-expected.txt:
Added.
* LayoutTests/accessibility/aria-hidden-deep-dom-no-crash.html: Added.
* Source/WebCore/accessibility/AXCoreObject.h:
(WebCore::Accessibility::findUnignoredDescendant):
(WebCore::Accessibility::enumerateDescendantsIncludingIgnored):
(WebCore::Accessibility::enumerateUnignoredDescendants):
Canonical link: https://commits.webkit.org/311611@main
Canonical link: https://commits.webkit.org/305877.471@webkitglib/2.52
Commit: e4da6546450a23e93bc733749efa9af7c7dc5b01
https://github.com/WebKit/WebKit/commit/e4da6546450a23e93bc733749efa9af7c7dc5b01
Author: Chris Dumez <[email protected]>
Date: 2026-05-05 (Tue, 05 May 2026)
Changed paths:
M Source/WebCore/contentextensions/ImmutableNFA.h
M Source/WebCore/contentextensions/ImmutableNFANodeBuilder.h
Log Message:
-----------
Cherry-pick 312425@main (07918cccab88).
https://bugs.webkit.org/show_bug.cgi?id=312298
Uninitialized memory write in
WebCore::ContentExtensions::SerializedNFA::serialize
https://bugs.webkit.org/show_bug.cgi?id=312298
rdar://175273937
Reviewed by Michael Catanzaro.
ImmutableRange<char> has 2 bytes of struct padding after its char fields.
When SerializedNFA serializes the transitions vector as raw bytes, valgrind
flags those uninitialized padding bytes passed to the write() syscall.
Add a default constructor that calls zeroBytes() to ensure padding is
always zeroed.
* Source/WebCore/contentextensions/ImmutableNFA.h:
(WebCore::ContentExtensions::ImmutableRange::ImmutableRange):
* Source/WebCore/contentextensions/ImmutableNFANodeBuilder.h:
(WebCore::ContentExtensions::ImmutableNFANodeBuilder::sinkTransitions):
Canonical link: https://commits.webkit.org/312425@main
Canonical link: https://commits.webkit.org/305877.472@webkitglib/2.52
Commit: bd4109270ef111055a019a637ad96311017b0449
https://github.com/WebKit/WebKit/commit/bd4109270ef111055a019a637ad96311017b0449
Author: Antti Koivisto <[email protected]>
Date: 2026-05-05 (Tue, 05 May 2026)
Changed paths:
M Source/WebCore/style/MatchedDeclarationsCache.cpp
Log Message:
-----------
Cherry-pick 311862@main (ebcf88c1bc30).
https://bugs.webkit.org/show_bug.cgi?id=312236
Page memory grows unboundedly when animating @property-registered custom
properties consumed by calc() across many elements
https://bugs.webkit.org/show_bug.cgi?id=312236
rdar://171659746
Reviewed by Simon Fraser.
Some scenarios like animated custom properties may lead to unlimited cache
growth. While these should be fixed
with a better cache design it is also good idea to protect against this
with a hard maximum size.
* Source/WebCore/style/MatchedDeclarationsCache.cpp:
(WebCore::Style::MatchedDeclarationsCache::add):
Limit MDC size to 16k entries.
Canonical link: https://commits.webkit.org/311862@main
Canonical link: https://commits.webkit.org/305877.473@webkitglib/2.52
Compare: https://github.com/WebKit/WebKit/compare/29ee6c3467ad...bd4109270ef1
To unsubscribe from these emails, change your notification settings at
https://github.com/WebKit/WebKit/settings/notifications