diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-19 00:47:55 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-19 00:47:55 +0000 |
commit | 26a029d407be480d791972afb5975cf62c9360a6 (patch) | |
tree | f435a8308119effd964b339f76abb83a57c29483 /testing/web-platform/tests/css/css-layout-api/position-fragment | |
parent | Initial commit. (diff) | |
download | firefox-26a029d407be480d791972afb5975cf62c9360a6.tar.xz firefox-26a029d407be480d791972afb5975cf62c9360a6.zip |
Adding upstream version 124.0.1.upstream/124.0.1
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'testing/web-platform/tests/css/css-layout-api/position-fragment')
8 files changed, 377 insertions, 0 deletions
diff --git a/testing/web-platform/tests/css/css-layout-api/position-fragment/htb-ltr.https.html b/testing/web-platform/tests/css/css-layout-api/position-fragment/htb-ltr.https.html new file mode 100644 index 0000000000..f60109ca57 --- /dev/null +++ b/testing/web-platform/tests/css/css-layout-api/position-fragment/htb-ltr.https.html @@ -0,0 +1,54 @@ +<!DOCTYPE html> +<html class=reftest-wait> +<link rel="help" href="https://drafts.css-houdini.org/css-layout-api/#layoutfragment"> +<link rel="match" href="ref.html"> +<meta name="assert" content="This test checks that child fragments get positioned correctly." /> +<style> +.test { + background: red; + width: 100px; + height: 100px; +} + +.test { + writing-mode: horizontal-tb; + direction: ltr; +} + +.child-1 { + background: rebeccapurple; + width: 10px; + height: 20px; + + --inline-offset: 5; + --block-offset: 25; +} + +.child-2 { + writing-mode: vertical-rl; + background: rebeccapurple; + width: 15px; + height: 25px; + + --inline-offset: 50; + --block-offset: 60; +} + +@supports (display: layout(test)) { + .test { + background: green; + display: layout(test); + } +} +</style> +<script src="/common/reftest-wait.js"></script> +<script src="/common/worklet-reftest.js"></script> + +<div class="test"> + <div class="child-1"></div> + <div class="child-2"></div> +</div> + +<script> +importWorkletAndTerminateTestAfterAsyncPaint(CSS.layoutWorklet, {url: 'support/layout-position-child-worklet.js'}); +</script> diff --git a/testing/web-platform/tests/css/css-layout-api/position-fragment/htb-rtl.https.html b/testing/web-platform/tests/css/css-layout-api/position-fragment/htb-rtl.https.html new file mode 100644 index 0000000000..980a3cdc25 --- /dev/null +++ b/testing/web-platform/tests/css/css-layout-api/position-fragment/htb-rtl.https.html @@ -0,0 +1,54 @@ +<!DOCTYPE html> +<html class=reftest-wait> +<link rel="help" href="https://drafts.css-houdini.org/css-layout-api/#layoutfragment"> +<link rel="match" href="ref.html"> +<meta name="assert" content="This test checks that child fragments get positioned correctly." /> +<style> +.test { + background: red; + width: 100px; + height: 100px; +} + +.test { + writing-mode: horizontal-tb; + direction: rtl; +} + +.child-1 { + background: rebeccapurple; + width: 10px; + height: 20px; + + --inline-offset: 85; + --block-offset: 25; +} + +.child-2 { + writing-mode: vertical-rl; + background: rebeccapurple; + width: 15px; + height: 25px; + + --inline-offset: 35; + --block-offset: 60; +} + +@supports (display: layout(test)) { + .test { + background: green; + display: layout(test); + } +} +</style> +<script src="/common/reftest-wait.js"></script> +<script src="/common/worklet-reftest.js"></script> + +<div class="test"> + <div class="child-1"></div> + <div class="child-2"></div> +</div> + +<script> +importWorkletAndTerminateTestAfterAsyncPaint(CSS.layoutWorklet, {url: 'support/layout-position-child-worklet.js'}); +</script> diff --git a/testing/web-platform/tests/css/css-layout-api/position-fragment/ref.html b/testing/web-platform/tests/css/css-layout-api/position-fragment/ref.html new file mode 100644 index 0000000000..4ce0a6e39d --- /dev/null +++ b/testing/web-platform/tests/css/css-layout-api/position-fragment/ref.html @@ -0,0 +1,33 @@ +<!DOCTYPE html> +<style> +.result { + position: relative; + background: green; + width: 100px; + height: 100px; +} + +.result-child-1 { + background: rebeccapurple; + width: 10px; + height: 20px; + + position: absolute; + top: 25px; + left: 5px; +} + +.result-child-2 { + background: rebeccapurple; + width: 15px; + height: 25px; + + position: absolute; + top: 60px; + left: 50px; +} +</style> +<div class="result"> + <div class="result-child-1"></div> + <div class="result-child-2"></div> +</div> diff --git a/testing/web-platform/tests/css/css-layout-api/position-fragment/support/layout-position-child-worklet.js b/testing/web-platform/tests/css/css-layout-api/position-fragment/support/layout-position-child-worklet.js new file mode 100644 index 0000000000..7d5c494952 --- /dev/null +++ b/testing/web-platform/tests/css/css-layout-api/position-fragment/support/layout-position-child-worklet.js @@ -0,0 +1,20 @@ +registerLayout('test', class { + static get childInputProperties() { + return [ + '--inline-offset', + '--block-offset', + ]; + } + + async intrinsicSizes() {} + async layout(children, edges, constraints, styleMap) { + const childFragments = await Promise.all(children.map((child) => child.layoutNextFragment({}))); + + for (let i = 0; i < children.length; i++) { + childFragments[i].inlineOffset = parseInt(children[i].styleMap.get('--inline-offset').toString()); + childFragments[i].blockOffset = parseInt(children[i].styleMap.get('--block-offset').toString()); + } + + return {autoBlockSize: 0, childFragments}; + } +}); diff --git a/testing/web-platform/tests/css/css-layout-api/position-fragment/vlr-ltr.https.html b/testing/web-platform/tests/css/css-layout-api/position-fragment/vlr-ltr.https.html new file mode 100644 index 0000000000..d75a4af639 --- /dev/null +++ b/testing/web-platform/tests/css/css-layout-api/position-fragment/vlr-ltr.https.html @@ -0,0 +1,54 @@ +<!DOCTYPE html> +<html class=reftest-wait> +<link rel="help" href="https://drafts.css-houdini.org/css-layout-api/#layoutfragment"> +<link rel="match" href="ref.html"> +<meta name="assert" content="This test checks that child fragments get positioned correctly." /> +<style> +.test { + background: red; + width: 100px; + height: 100px; +} + +.test { + writing-mode: vertical-lr; + direction: ltr; +} + +.child-1 { + background: rebeccapurple; + width: 10px; + height: 20px; + + --inline-offset: 25; + --block-offset: 5; +} + +.child-2 { + writing-mode: vertical-rl; + background: rebeccapurple; + width: 15px; + height: 25px; + + --inline-offset: 60; + --block-offset: 50; +} + +@supports (display: layout(test)) { + .test { + background: green; + display: layout(test); + } +} +</style> +<script src="/common/reftest-wait.js"></script> +<script src="/common/worklet-reftest.js"></script> + +<div class="test"> + <div class="child-1"></div> + <div class="child-2"></div> +</div> + +<script> +importWorkletAndTerminateTestAfterAsyncPaint(CSS.layoutWorklet, {url: 'support/layout-position-child-worklet.js'}); +</script> diff --git a/testing/web-platform/tests/css/css-layout-api/position-fragment/vlr-rtl.https.html b/testing/web-platform/tests/css/css-layout-api/position-fragment/vlr-rtl.https.html new file mode 100644 index 0000000000..a8ef6c699c --- /dev/null +++ b/testing/web-platform/tests/css/css-layout-api/position-fragment/vlr-rtl.https.html @@ -0,0 +1,54 @@ +<!DOCTYPE html> +<html class=reftest-wait> +<link rel="help" href="https://drafts.css-houdini.org/css-layout-api/#layoutfragment"> +<link rel="match" href="ref.html"> +<meta name="assert" content="This test checks that child fragments get positioned correctly." /> +<style> +.test { + background: red; + width: 100px; + height: 100px; +} + +.test { + writing-mode: vertical-lr; + direction: rtl; +} + +.child-1 { + background: rebeccapurple; + width: 10px; + height: 20px; + + --inline-offset: 55; + --block-offset: 5; +} + +.child-2 { + writing-mode: vertical-rl; + background: rebeccapurple; + width: 15px; + height: 25px; + + --inline-offset: 15; + --block-offset: 50; +} + +@supports (display: layout(test)) { + .test { + background: green; + display: layout(test); + } +} +</style> +<script src="/common/reftest-wait.js"></script> +<script src="/common/worklet-reftest.js"></script> + +<div class="test"> + <div class="child-1"></div> + <div class="child-2"></div> +</div> + +<script> +importWorkletAndTerminateTestAfterAsyncPaint(CSS.layoutWorklet, {url: 'support/layout-position-child-worklet.js'}); +</script> diff --git a/testing/web-platform/tests/css/css-layout-api/position-fragment/vrl-ltr.https.html b/testing/web-platform/tests/css/css-layout-api/position-fragment/vrl-ltr.https.html new file mode 100644 index 0000000000..21c9ce54d6 --- /dev/null +++ b/testing/web-platform/tests/css/css-layout-api/position-fragment/vrl-ltr.https.html @@ -0,0 +1,54 @@ +<!DOCTYPE html> +<html class=reftest-wait> +<link rel="help" href="https://drafts.css-houdini.org/css-layout-api/#layoutfragment"> +<link rel="match" href="ref.html"> +<meta name="assert" content="This test checks that child fragments get positioned correctly." /> +<style> +.test { + background: red; + width: 100px; + height: 100px; +} + +.test { + writing-mode: vertical-rl; + direction: ltr; +} + +.child-1 { + background: rebeccapurple; + width: 10px; + height: 20px; + + --inline-offset: 25; + --block-offset: 85; +} + +.child-2 { + writing-mode: vertical-rl; + background: rebeccapurple; + width: 15px; + height: 25px; + + --inline-offset: 60; + --block-offset: 35; +} + +@supports (display: layout(test)) { + .test { + background: green; + display: layout(test); + } +} +</style> +<script src="/common/reftest-wait.js"></script> +<script src="/common/worklet-reftest.js"></script> + +<div class="test"> + <div class="child-1"></div> + <div class="child-2"></div> +</div> + +<script> +importWorkletAndTerminateTestAfterAsyncPaint(CSS.layoutWorklet, {url: 'support/layout-position-child-worklet.js'}); +</script> diff --git a/testing/web-platform/tests/css/css-layout-api/position-fragment/vrl-rtl.https.html b/testing/web-platform/tests/css/css-layout-api/position-fragment/vrl-rtl.https.html new file mode 100644 index 0000000000..777e725da9 --- /dev/null +++ b/testing/web-platform/tests/css/css-layout-api/position-fragment/vrl-rtl.https.html @@ -0,0 +1,54 @@ +<!DOCTYPE html> +<html class=reftest-wait> +<link rel="help" href="https://drafts.css-houdini.org/css-layout-api/#layoutfragment"> +<link rel="match" href="ref.html"> +<meta name="assert" content="This test checks that child fragments get positioned correctly." /> +<style> +.test { + background: red; + width: 100px; + height: 100px; +} + +.test { + writing-mode: vertical-rl; + direction: rtl; +} + +.child-1 { + background: rebeccapurple; + width: 10px; + height: 20px; + + --inline-offset: 55; + --block-offset: 85; +} + +.child-2 { + writing-mode: vertical-rl; + background: rebeccapurple; + width: 15px; + height: 25px; + + --inline-offset: 15; + --block-offset: 35; +} + +@supports (display: layout(test)) { + .test { + background: green; + display: layout(test); + } +} +</style> +<script src="/common/reftest-wait.js"></script> +<script src="/common/worklet-reftest.js"></script> + +<div class="test"> + <div class="child-1"></div> + <div class="child-2"></div> +</div> + +<script> +importWorkletAndTerminateTestAfterAsyncPaint(CSS.layoutWorklet, {url: 'support/layout-position-child-worklet.js'}); +</script> |