fune/testing/web-platform/tests/scroll-animations/css/scroll-animation-initial-offset-ref.html
Steve Kobes c3bb93064b Bug 1830968 [wpt PR 39810] - Force KeyframeModel::time_offset_ to be 0 for scroll-driven animations., a=testonly
Automatic update from web-platform-tests
Force KeyframeModel::time_offset_ to be 0 for scroll-driven animations.

KeyframeModel::CalculateActiveTime shifts all times by time_offset_,
which is initialized when we start the animation on the compositor.

But we don't want such shifting for scroll-driven animations, because
cc::Animation::Tick gives the KeyframeModel a pause_time_ based on
absolute progress (the current scroll position).

Fix by making Animation::ComputeCompositorTimeOffset return 0 during
Animation::StartAnimationOnCompositor, even if the scroll position is
non-zero from an earlier scroll.

Bug: 1431191
Change-Id: Ie2a2b7e099c12232e05900907231da1729ee6c34
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/4498525
Commit-Queue: Steve Kobes <skobes@chromium.org>
Reviewed-by: Kevin Ellis <kevers@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1138967}

--

wpt-commits: 797d2099e320aa895aae4c445ab3cefc9379b23c
wpt-pr: 39810
2023-05-21 22:44:03 +00:00

44 lines
678 B
HTML

<!DOCTYPE html>
<style>
#scroller {
overflow-y: auto;
height: 200px;
border: 2px solid green;
position: relative;
background: gray;
}
.spacer {
height: 1000px;
}
#align {
box-sizing: border-box;
width: 100%;
height: 50px;
background: rgba(0, 0, 200, 0.2);
color: white;
position: absolute;
border: 1px solid white;
transform: translateY(200px);
will-change: transform;
}
#marker {
width: 100%;
height: 50px;
background: #640;
position: absolute;
top: 350px;
}
</style>
<div id="scroller">
<div id="align">TOP</div>
<div class="spacer"></div>
<div id="marker">BOTTOM</div>
</div>
<script>
scroller.scrollTo(0, 200);
</script>