mirror of
https://github.com/servo/servo.git
synced 2025-08-11 16:35:33 +01:00
Update web-platform-tests to revision 122a4672fa0dc554a6e7528fa3487fd907c792ee
This commit is contained in:
parent
fb1123495f
commit
93d826f7ba
301 changed files with 4775 additions and 1769 deletions
|
@ -0,0 +1,98 @@
|
|||
<!DOCTYPE html>
|
||||
<meta charset=utf-8>
|
||||
<title>Correctness of worklet animation state when timeline becomes newly
|
||||
active or inactive.</title>
|
||||
<link rel="help" href="https://drafts.css-houdini.org/css-animationworklet/">
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="/web-animations/testcommon.js"></script>
|
||||
<script src="common.js"></script>
|
||||
<style>
|
||||
.scroller {
|
||||
overflow: auto;
|
||||
height: 100px;
|
||||
width: 100px;
|
||||
}
|
||||
.contents {
|
||||
height: 1000px;
|
||||
width: 100%;
|
||||
}
|
||||
</style>
|
||||
<body>
|
||||
<div id="log"></div>
|
||||
<script>
|
||||
'use strict';
|
||||
|
||||
function createScroller(test) {
|
||||
var scroller = createDiv(test);
|
||||
scroller.innerHTML = "<div class='contents'></div>";
|
||||
scroller.classList.add('scroller');
|
||||
return scroller;
|
||||
}
|
||||
|
||||
function createScrollLinkedWorkletAnimation(test) {
|
||||
const timeline = new ScrollTimeline({
|
||||
scrollSource: createScroller(test),
|
||||
timeRange: 1000
|
||||
});
|
||||
const DURATION = 10000; // ms
|
||||
const KEYFRAMES = { transform: ['translateY(100px)', 'translateY(200px)'] };
|
||||
return new WorkletAnimation('passthrough', new KeyframeEffect(createDiv(test),
|
||||
KEYFRAMES, DURATION), timeline);
|
||||
}
|
||||
|
||||
setup(setupAndRegisterTests, {explicit_done: true});
|
||||
|
||||
function setupAndRegisterTests() {
|
||||
registerPassthroughAnimator().then(() => {
|
||||
|
||||
promise_test(async t => {
|
||||
const animation = createScrollLinkedWorkletAnimation(t);
|
||||
const scroller = animation.timeline.scrollSource;
|
||||
const maxScroll = scroller.scrollHeight - scroller.clientHeight;
|
||||
const timeRange = animation.timeline.timeRange;
|
||||
scroller.scrollTop = 0.2 * maxScroll;
|
||||
|
||||
// Make the timeline inactive.
|
||||
scroller.style.display = "none"
|
||||
// Force relayout.
|
||||
scroller.scrollTop;
|
||||
|
||||
animation.play();
|
||||
assert_equals(animation.currentTime, null,
|
||||
'Initial current time must be unresolved in idle state.');
|
||||
assert_equals(animation.startTime, null,
|
||||
'Initial start time must be unresolved in idle state.');
|
||||
waitForAnimationFrameWithCondition(_=> {
|
||||
return animation.playState == "running"
|
||||
});
|
||||
assert_equals(animation.currentTime, null,
|
||||
'Initial current time must be unresolved in playing state.');
|
||||
assert_equals(animation.startTime, null,
|
||||
'Initial start time must be unresolved in playing state.');
|
||||
|
||||
// Make the timeline active.
|
||||
scroller.style.display = ""
|
||||
scroller.scrollTop;
|
||||
|
||||
assert_times_equal(animation.currentTime, 200,
|
||||
'Current time must be initialized.');
|
||||
assert_times_equal(animation.startTime, 0,
|
||||
'Start time must be initialized.');
|
||||
|
||||
// Make the timeline inactive again.
|
||||
scroller.style.display = "none"
|
||||
scroller.scrollTop;
|
||||
|
||||
assert_times_equal(animation.currentTime, 200,
|
||||
'Current time must be the previous current time.');
|
||||
assert_equals(animation.startTime, null,
|
||||
'Initial start time must be unresolved.');
|
||||
|
||||
}, 'When timeline time becomes inactive previous current time must be ' +
|
||||
'the current time and start time unresolved');
|
||||
done();
|
||||
});
|
||||
}
|
||||
</script>
|
||||
</body>
|
Loading…
Add table
Add a link
Reference in a new issue