Source code

Revision control

Copy as Markdown

Other Tools

Test Info: Warnings

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Test construction of a view timeline with a detached subject</title>
</head>
<style type="text/css">
#container {
overflow: hidden;
height: 200px;
width: 200px;
}
#block {
background: green;
height: 100px;
width: 100px;
}
.filler {
height: 200px;
}
</style>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/web-animations/testcommon.js"></script>
<body>
<div id="container">
<div class="filler"></div>
</div>
</body>
<script>
promise_test(async t => {
const element = document.createElement('div');
element.id = 'block';
const timeline = new ViewTimeline({
subject: element,
inset: new CSSMathNegate(CSS.px(144))
});
assert_equals(timeline.source, null, 'Null source while detached');
await waitForNextFrame();
const scroller = document.getElementById('container');
scroller.appendChild(element);
assert_equals(timeline.source, scroller, 'Source resolved once attached');
await waitForNextFrame();
// Start offset = cover 0%
// = target offset - viewport height + end side inset
// = 200 - 200 + (-144) = -144
assert_equals(timeline.startOffset.toString(), CSS.px(-144).toString());
// End offset = cover 100%
// = target offset + target height - start side inset
// = 200 + 100 - (-144) = 444
assert_equals(timeline.endOffset.toString(), CSS.px(444).toString());
}, 'Creating a view timeline with a subject that is not attached to the ' +
'document works as expected');
</script>
</html>