Bug 255114

Summary: Wave animation on https://deploy-preview-14--unas-new-site.netlify.app/ doesn't work in Safari
Product: WebKit Reporter: Simon Fraser (smfr) <simon.fraser>
Component: AnimationsAssignee: Nobody <webkit-unassigned>
Status: NEW    
Severity: Normal CC: ahmad.saleem792, dino, graouts, graouts, karlcow, koivisto, sabouhallawa, simon.fraser, una.kravets, webkit-bug-importer
Priority: P2 Keywords: BrowserCompat, InRadar
Version: WebKit Nightly Build   
Hardware: Unspecified   
OS: Unspecified   
URL: https://deploy-preview-14--unas-new-site.netlify.app/
See Also: https://bugs.webkit.org/show_bug.cgi?id=173154
https://bugs.webkit.org/show_bug.cgi?id=111927
Attachments:
Description Flags
Test none

Simon Fraser (smfr)
Reported 2023-04-06 13:43:41 PDT
Load https://deploy-preview-14--unas-new-site.netlify.app/ in Firefox and note the nice wave animation on the lower edge of the header. Now load in Safari; the wave animation is not there.
Attachments
Test (608 bytes, text/html)
2023-04-07 10:32 PDT, Antoine Quint
no flags
Radar WebKit Bug Importer
Comment 1 2023-04-06 13:44:04 PDT
Simon Fraser (smfr)
Comment 2 2023-04-06 13:44:57 PDT
The animation is driven by: .wave:where(.astro-J7PV25F6) { display:block; width:100%; height:clamp(2rem, 5vw, 10rem); margin:0; z-index:0; bottom:0 } #page-divide:where(.astro-J7PV25F6) { animation:moveforward 10s linear infinite } @keyframes moveforward { 0% { transform:translate(-90px) } to { transform:translate(85px) } }
Simon Fraser (smfr)
Comment 3 2023-04-06 13:46:20 PDT
Looks like we fail to animation the <path> inside the <defs>
Antoine Quint
Comment 4 2023-04-07 00:21:11 PDT
Presumably a <path> within a <defs> does not have a renderer, and I guess we bail out of the accelerated animation code which does not account for this possibility.
Antoine Quint
Comment 5 2023-04-07 10:25:21 PDT
Actually, we correctly animate the transform. This is probably something SVG-specific about updating the shadow tree rendering.
Antoine Quint
Comment 6 2023-04-07 10:32:24 PDT
Antoine Quint
Comment 7 2023-04-07 10:35:19 PDT
I think we need to call a method on SVGElement to notify that the style changed due to an animation which would then call invalidateInstances().
Antoine Quint
Comment 8 2023-04-07 10:40:41 PDT
I wonder if we should add a new virtual method to StyledElement to notify when the animated style changed which would allow SVGElement to override. We could then call this method at the end of Style::TreeResolver::createAnimatedElementUpdate(), or somewhere else?
Note You need to log in before you can comment on or make changes to this bug.