tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

commit 5eda13b23b4effcc3ae543c2e27ce0a6fa432611
parent 849f2bf3248d124d75f29c7cdfc6fd8d4783c9a0
Author: David Awogbemila <awogbemila@chromium.org>
Date:   Wed,  3 Dec 2025 14:41:21 +0000

Bug 2003311 [wpt PR 56372] - [animation-trigger] Enforce timeline-trigger shorthand order, a=testonly

Automatic update from web-platform-tests
[animation-trigger] Enforce timeline-trigger shorthand order

The updated spec[1] for timeline-trigger indicates that the values
specified are to be parsed in specific order. This patch makes this
change and also adds the '/' convenience for disambiguating the enter
range values from the exit range values.

[1] https://drafts.csswg.org/css-animations-2/#:~:text=must%20be%20given

Bug: 390314945
Change-Id: I43d15699aaf3825dd9025889a59c84d76d61edfd
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7206049
Reviewed-by: Anders Hartvoll Ruud <andruud@chromium.org>
Reviewed-by: David Awogbemila <awogbemila@chromium.org>
Commit-Queue: David Awogbemila <awogbemila@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1552174}

--

wpt-commits: 0b29c0ffcb1fe6bc45ee380e1a9b755ca20a3630
wpt-pr: 56372

Diffstat:
Mtesting/web-platform/tests/scroll-animations/animation-trigger/animation-trigger-repeat.tentative.html | 6+++---
Mtesting/web-platform/tests/scroll-animations/animation-trigger/parsing/timeline-trigger-shorthand.tentative.html | 190+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++------------
2 files changed, 165 insertions(+), 31 deletions(-)

diff --git a/testing/web-platform/tests/scroll-animations/animation-trigger/animation-trigger-repeat.tentative.html b/testing/web-platform/tests/scroll-animations/animation-trigger/animation-trigger-repeat.tentative.html @@ -25,18 +25,18 @@ #scroll_target { animation-trigger: --scrolltrigger play-forwards reset; - timeline-trigger: --scrolltrigger scroll() 250px 300px 200px 350px; + timeline-trigger: --scrolltrigger scroll() 250px 300px / 200px 350px; } #view_target { animation-trigger: --viewtrigger play-forwards reset; - timeline-trigger: --viewtrigger view() 250px 300px 200px 350px; + timeline-trigger: --viewtrigger view() 250px 300px / 200px 350px; } #deferred_target { animation-trigger: --deferredtrigger play-forwards reset; } #deferred_subject { view-timeline: --viewtimeline; - timeline-trigger: --deferredtrigger --viewtimeline 250px 300px 200px 350px; + timeline-trigger: --deferredtrigger --viewtimeline 250px 300px / 200px 350px; } .scroller { diff --git a/testing/web-platform/tests/scroll-animations/animation-trigger/parsing/timeline-trigger-shorthand.tentative.html b/testing/web-platform/tests/scroll-animations/animation-trigger/parsing/timeline-trigger-shorthand.tentative.html @@ -9,7 +9,7 @@ <div id="target" style="font-size:10px"></div> <script> test_shorthand_value('timeline-trigger', - '--my-trigger view() contain 0% contain 100% cover 0% cover 100%', + '--my-trigger view() contain 0% contain 100% / cover 0% cover 100%', { 'timeline-trigger-name': '--my-trigger', 'timeline-trigger-source': 'view()', @@ -19,7 +19,7 @@ 'timeline-trigger-exit-range-end': 'cover', }); test_shorthand_value('timeline-trigger', - '--my-trigger view() contain 20% contain 80% cover 10% cover 90%', + '--my-trigger view() contain 20% contain 80% / cover 10% cover 90%', { 'timeline-trigger-name': '--my-trigger', 'timeline-trigger-source': 'view()', @@ -29,7 +29,7 @@ 'timeline-trigger-exit-range-end': 'cover 90%', }); test_shorthand_value('timeline-trigger', - '--my-trigger view() contain 0% contain 100% cover 0%', + '--my-trigger view() contain 0% contain 100% / cover 0%', { 'timeline-trigger-name': '--my-trigger', 'timeline-trigger-source': 'view()', @@ -39,7 +39,7 @@ 'timeline-trigger-exit-range-end': 'cover', }); test_shorthand_value('timeline-trigger', - '--my-trigger view() contain 20% contain 80% cover 10%', + '--my-trigger view() contain 20% contain 80% / cover 10%', { 'timeline-trigger-name': '--my-trigger', 'timeline-trigger-source': 'view()', @@ -49,7 +49,7 @@ 'timeline-trigger-exit-range-end': 'cover', }); test_shorthand_value('timeline-trigger', - '--my-trigger view() contain 0% contain 100% cover', + '--my-trigger view() contain 0% contain 100% / cover', { 'timeline-trigger-name': '--my-trigger', 'timeline-trigger-source': 'view()', @@ -137,8 +137,8 @@ 'timeline-trigger-exit-range-end': 'auto, auto', }); test_shorthand_value('timeline-trigger', - '--my-trigger1 --my-timeline1 contain cover normal exit, '+ - '--my-trigger2 --my-timeline2 entry exit contain normal', + '--my-trigger1 --my-timeline1 contain cover / normal exit, '+ + '--my-trigger2 --my-timeline2 entry exit / contain normal', { 'timeline-trigger-name': '--my-trigger1, --my-trigger2', 'timeline-trigger-source': '--my-timeline1, --my-timeline2', @@ -147,38 +147,172 @@ 'timeline-trigger-exit-range-start': 'normal, contain', 'timeline-trigger-exit-range-end': 'exit, normal', }); + test_shorthand_value('timeline-trigger', + '--my-trigger1 --my-timeline1 contain / cover', + { + 'timeline-trigger-name': '--my-trigger1', + 'timeline-trigger-source': '--my-timeline1', + 'timeline-trigger-range-start': 'contain', + 'timeline-trigger-range-end': 'contain', + 'timeline-trigger-exit-range-start': 'cover', + 'timeline-trigger-exit-range-end': 'cover', + }); + test_shorthand_value('timeline-trigger', + '--my-trigger1 --my-timeline1 contain exit 0% / cover', + { + 'timeline-trigger-name': '--my-trigger1', + 'timeline-trigger-source': '--my-timeline1', + 'timeline-trigger-range-start': 'contain', + 'timeline-trigger-range-end': 'exit 0%', + 'timeline-trigger-exit-range-start': 'cover', + 'timeline-trigger-exit-range-end': 'cover', + }); + test_shorthand_value('timeline-trigger', + '--my-trigger1 --my-timeline1 contain cover 100% / cover exit 100%', + { + 'timeline-trigger-name': '--my-trigger1', + 'timeline-trigger-source': '--my-timeline1', + 'timeline-trigger-range-start': 'contain', + 'timeline-trigger-range-end': 'cover', + 'timeline-trigger-exit-range-start': 'cover', + 'timeline-trigger-exit-range-end': 'exit', + }); + test_shorthand_value('timeline-trigger', + '--my-trigger1 --my-timeline1 contain 50% / cover 50%', + { + 'timeline-trigger-name': '--my-trigger1', + 'timeline-trigger-source': '--my-timeline1', + 'timeline-trigger-range-start': 'contain 50%', + 'timeline-trigger-range-end': 'contain', + 'timeline-trigger-exit-range-start': 'cover 50%', + 'timeline-trigger-exit-range-end': 'cover', + }); + test_shorthand_value('timeline-trigger', + '--my-trigger1 --my-timeline1 contain 50% contain 90% / cover 50% cover 90%', + { + 'timeline-trigger-name': '--my-trigger1', + 'timeline-trigger-source': '--my-timeline1', + 'timeline-trigger-range-start': 'contain 50%', + 'timeline-trigger-range-end': 'contain 90%', + 'timeline-trigger-exit-range-start': 'cover 50%', + 'timeline-trigger-exit-range-end': 'cover 90%', + }); + test_shorthand_value('timeline-trigger', + '--my-trigger1 --my-timeline1 / cover ', + { + 'timeline-trigger-name': '--my-trigger1', + 'timeline-trigger-source': '--my-timeline1', + 'timeline-trigger-range-start': 'normal', + 'timeline-trigger-range-end': 'normal', + 'timeline-trigger-exit-range-start': 'cover', + 'timeline-trigger-exit-range-end': 'cover', + }); + test_shorthand_value('timeline-trigger', + '--my-trigger1 --my-timeline1 / cover exit 100%', + { + 'timeline-trigger-name': '--my-trigger1', + 'timeline-trigger-source': '--my-timeline1', + 'timeline-trigger-range-start': 'normal', + 'timeline-trigger-range-end': 'normal', + 'timeline-trigger-exit-range-start': 'cover', + 'timeline-trigger-exit-range-end': 'exit', + }); test_computed_value('timeline-trigger', - '--my-trigger view() contain 0% contain 100% cover 0% cover 100%', - '--my-trigger view() contain contain cover cover'); + '--my-trigger view() contain 0% contain 100% / cover 0% cover 100%', + '--my-trigger view() contain / cover'); test_computed_value('timeline-trigger', - '--my-trigger view() contain 20% contain 80% cover 10% cover 90%'); + '--my-trigger view() contain 20% contain 80% / cover 10% cover 90%'); test_computed_value('timeline-trigger', - '--my-trigger view() contain 20% contain 80% cover 0%', - '--my-trigger view() contain 20% contain 80% cover cover'); + '--my-trigger view() contain 20% contain 80% / cover 0%', + '--my-trigger view() contain 20% contain 80% / cover'); test_computed_value('timeline-trigger', - '--my-trigger view() contain 20% contain 80% cover 10%', - '--my-trigger view() contain 20% contain 80% cover 10% cover'); + '--my-trigger view() contain 20% contain 80% / cover 10%', + '--my-trigger view() contain 20% contain 80% / cover 10%'); test_computed_value('timeline-trigger', '--my-trigger view() contain 0% contain 100%', - '--my-trigger view() contain contain auto auto'); - test_computed_value('timeline-trigger', - 'view()', - 'none view() normal normal auto auto'); + '--my-trigger view() contain'); + test_computed_value('timeline-trigger', 'view()'); test_computed_value('timeline-trigger', '--my-trigger --my-timeline', - '--my-trigger --my-timeline normal normal auto auto'); - test_computed_value('timeline-trigger', - 'contain 0% contain 100% --my-trigger --my-timeline', - '--my-trigger --my-timeline contain contain auto auto'); + '--my-trigger --my-timeline'); - test_computed_value('timeline-trigger', - '--trigger1, --trigger2', - '--trigger1 auto normal normal auto auto, ' + - '--trigger2 auto normal normal auto auto'); + test_computed_value('timeline-trigger', '--trigger1, --trigger2'); test_computed_value('timeline-trigger', '--trigger1 view(), --trigger2 scroll()', - '--trigger1 view() normal normal auto auto, ' + - '--trigger2 scroll() normal normal auto auto'); + '--trigger1 view(), --trigger2 scroll()'); + test_computed_value('timeline-trigger', + '--my-trigger --my-timeline normal / contain', + '--my-trigger --my-timeline / contain'); + test_computed_value('timeline-trigger', + '--my-trigger --my-timeline / contain'); + + test_valid_value('timeline-trigger', + '--my-trigger view() contain 0% contain 100% / cover 0% cover 100%', + '--my-trigger view() contain / cover'); + test_valid_value('timeline-trigger', + '--my-trigger view() contain 20% contain 80% / cover 10% cover 90%'); + test_valid_value('timeline-trigger', + '--my-trigger view() contain 20% contain 80% / cover 0%', + '--my-trigger view() contain 20% contain 80% / cover'); + test_valid_value('timeline-trigger', + '--my-trigger view() contain 20% contain 80% / cover 10%', + '--my-trigger view() contain 20% contain 80% / cover 10%'); + test_valid_value('timeline-trigger', + '--my-trigger view() contain 0% contain 100%', + '--my-trigger view() contain'); + test_valid_value('timeline-trigger', 'view()'); + test_valid_value('timeline-trigger', '--my-trigger --my-timeline'); + + test_valid_value('timeline-trigger', '--trigger1, --trigger2'); + + test_valid_value('timeline-trigger', + '--trigger1 view(), --trigger2 scroll()', + '--trigger1 view(), --trigger2 scroll()'); + + test_valid_value('timeline-trigger', + '--my-trigger view() normal normal / auto auto', + '--my-trigger view()'); + + test_valid_value('timeline-trigger', + '--my-trigger view() normal normal / normal auto', + '--my-trigger view() / normal'); + + test_valid_value('timeline-trigger', + '--my-trigger view() normal normal / cover auto', + '--my-trigger view() / cover'); + + test_valid_value('timeline-trigger', + '--my-trigger view() normal normal / cover 10% auto', + '--my-trigger view() / cover 10%'); + + test_valid_value('timeline-trigger', + '--my-trigger --my-timeline normal / contain', + '--my-trigger --my-timeline / contain'); + test_valid_value('timeline-trigger', + '--my-trigger --my-timeline / contain'); + test_invalid_value('timeline-trigger', + '--my-trigger view() contain 0% contain 100% // cover 0% cover 100%'); + test_invalid_value('timeline-trigger', + '--my-trigger view() contain 20% contain 80% contain / cover 10% cover 90%'); + test_invalid_value('timeline-trigger', + '--my-trigger view() contain 20% contain 80% / cover 10% cover 90% cover 100%'); + test_invalid_value('timeline-trigger', + '--my-trigger view() contain 20% contain 80% /'); + test_invalid_value('timeline-trigger', + '--my-trigger view() contain 20% contain 80% / cover 10% /'); + test_invalid_value('timeline-trigger', + '--my-trigger view() contain 20% contain 80% cover 10% cover 90% contan'); + test_invalid_value('timeline-trigger', '--my-trigger view() /'); + test_invalid_value('timeline-trigger', + '--my-trigger view() contain / cover, contain /'); + test_invalid_value('timeline-trigger', + '--my-trigger view() contain / cover, contain contain /'); + test_invalid_value('timeline-trigger', + '--my-trigger view() contain / cover, contain contain contain / cover'); + test_invalid_value('timeline-trigger', + '--my-trigger view() contain contain cover cover'); + test_invalid_value('timeline-trigger', + '--my-trigger view() contain contain cover'); </script>