[view-timeline]: support CSS string inset
Bug: 1329159
Change-Id: Ice3d87216e7c2ad30f363f12c6ca3eba3d0553eb
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/4071125
Reviewed-by: Anders Hartvoll Ruud <andruud@chromium.org>
Commit-Queue: Kevin Ellis <kevers@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1078386}
diff --git a/scroll-animations/view-timelines/testcommon.js b/scroll-animations/view-timelines/testcommon.js
index 41341cf..969f282 100644
--- a/scroll-animations/view-timelines/testcommon.js
+++ b/scroll-animations/view-timelines/testcommon.js
@@ -130,6 +130,8 @@
fill: 'both'
}
const length = options.inset.length;
- const range = options.inset.join(' ');
+ const range =
+ (options.inset instanceof Array) ? options.inset.join(' ')
+ : options.inset;
return runTimelineRangeTest(t, options, range);
}
diff --git a/scroll-animations/view-timelines/view-timeline-inset.html b/scroll-animations/view-timelines/view-timeline-inset.html
index 0dcce6d..72480ea 100644
--- a/scroll-animations/view-timelines/view-timeline-inset.html
+++ b/scroll-animations/view-timelines/view-timeline-inset.html
@@ -106,7 +106,7 @@
promise_test(async t => {
t.add_cleanup(() => {
- container.class = '';
+ container.classList.remove('scroll-padded');
});
const anim = await runTimelineInsetTest(t, {
inset: [ "auto", "auto" ],
@@ -125,13 +125,13 @@
promise_test(async t => {
t.add_cleanup(() => {
- target.class = '';
+ target.classList.remove('big-font');
});
const anim = await runTimelineInsetTest(t, {
inset: [ CSS.em(1), CSS.em(2) ],
rangeStart: 632,
rangeEnd: 884
- })
+ });
verifyTimelineOffsets(anim, 632, 884);
target.classList.add('big-font');
await runTimelineRangeTest(t, {
@@ -158,13 +158,69 @@
});
}, 'view timeline with viewport relative insets.');
+promise_test(async t => {
+ await runTimelineInsetTest(t, {
+ inset: "10px",
+ rangeStart: 610,
+ rangeEnd: 890
+ });
+ await runTimelineInsetTest(t, {
+ inset: "10px 20px",
+ rangeStart: 620,
+ rangeEnd: 890
+ });
+ await runTimelineInsetTest(t, {
+ inset: "10%",
+ rangeStart: 620,
+ rangeEnd: 880
+ });
+ await runTimelineInsetTest(t, {
+ inset: "10% 20%",
+ rangeStart: 640,
+ rangeEnd: 880
+ });
+ await runTimelineInsetTest(t, {
+ inset: "auto",
+ rangeStart: 600,
+ rangeEnd: 900
+ });
+ await runTimelineInsetTest(t, {
+ inset: "1em 2em",
+ rangeStart: 632,
+ rangeEnd: 884
+ });
+ assert_throws_js(TypeError, () => {
+ new ViewTimeline({
+ subject: target,
+ inset: "go fish"
+ });
+ });
+
+ assert_throws_js(TypeError, () => {
+ new ViewTimeline({
+ subject: target,
+ inset: "1 2"
+ });
+ });
+
+}, 'view timeline inset as string');
promise_test(async t => {
- assert_throws_dom('NOT_SUPPORTED_ERR', () => {
+ assert_throws_js(TypeError, () => {
new ViewTimeline({
subject: target,
inset: [ CSS.rad(1) ]
});
});
+
+ assert_throws_js(TypeError, () => {
+ new ViewTimeline({
+ subject: target,
+ inset: [ CSS.px(10), CSS.px(10), CSS.px(10) ]
+ });
+ });
+
+
}, 'view timeline with invalid inset');
+
</script>