Bug 308303
| Summary: | [threaded-animations] failed assertion `ASSERT(sourceScrollableArea->scrollingNodeID())` in `ScrollTimeline::computeProgressResolutionData()` | ||
|---|---|---|---|
| Product: | WebKit | Reporter: | Antoine Quint <graouts> |
| Component: | Animations | Assignee: | Antoine Quint <graouts> |
| Status: | RESOLVED FIXED | ||
| Severity: | Normal | CC: | graouts, webkit-bug-importer |
| Priority: | P2 | Keywords: | InRadar |
| Version: | WebKit Nightly Build | ||
| Hardware: | Unspecified | ||
| OS: | Unspecified | ||
Antoine Quint
We have reports of `ASSERT(sourceScrollableArea->scrollingNodeID())` in `ScrollTimeline::computeProgressResolutionData()` failing.
Code inspection make it pretty obvious what is wrong: we use `ScrollTimeline::canBeAccelerated()` to determine that a timeline can be accelerated in `AcceleratedEffectStackUpdater::takeTimelinesUpdate()` to guard calls to `ScrollTimeline::updateAcceleratedRepresentation()` and then `ScrollTimeline::computeProgressResolutionData()`, letting those methods imply that they have a source with a scrolling node ID.
However, `ScrollTimeline::canBeAccelerated()` is not live and returns the cached result of `ScrollTimeline::computeCanBeAccelerated()` under `AnimationTimeline::runPostRenderingUpdateTasks()` so that we can determine when that status changes one per animation frame.
We need to change `canBeAccelerated()` to be live and keep and rename the cached flag for just that purpose.
| Attachments | ||
|---|---|---|
| Add attachment proposed patch, testcase, etc. |
Antoine Quint
rdar://168255217
Antoine Quint
Pull request: https://github.com/WebKit/WebKit/pull/59093
EWS
Committed 307965@main (05c889923120): <https://commits.webkit.org/307965@main>
Reviewed commits have been landed. Closing PR #59093 and removing active labels.