Files
firefox/testing/web-platform/tests/css/css-ruby/position-relative.html
Kent Tamura 5039716b7c Bug 1895825 [wpt PR 46178] - RubyLB: position:relative outside of ruby-text should move it., a=testonly
Automatic update from web-platform-tests
RubyLB: position:relative outside of ruby-text should move it.

InlineLayoutStateStack::ApplyRelativePositioning() for annotation
lines should be applied after ApplyRelativePositioning() for the base
line.

* Call ApplyRelativePositioning() for the base line and annotation lines
  almost same time, with passing ancestor relative offsets.

* Call CreateBoxFragments() for annotation lines just before
  CreateBoxFragments() for the base line.

* Remove FinalizeAnnotationLines().

* Don't move InlineLayoutStateStack::ruby_column_list_ out. It's
  necessary until CreateBoxFragments().

Bug: 324111880
Change-Id: I2cf66af6118ad52ffedf7579930bde25c794ca5e
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5493166
Commit-Queue: Koji Ishii <[email protected]>
Reviewed-by: Koji Ishii <[email protected]>
Auto-Submit: Kent Tamura <[email protected]>
Cr-Commit-Position: refs/heads/main@{#1298506}

--

wpt-commits: 6ca6cf86c9378bc6659febb8f1fc4185b1fdf757
wpt-pr: 46178
2024-05-21 09:46:18 +00:00

48 lines
2.0 KiB
HTML

<!DOCTYPE html>
<link rel="help" href="https://drafts.csswg.org/css-ruby/#ruby-layout">
<link rel="stylesheet" href="/fonts/ahem.css">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<style>
body {
font: 20px/1 Ahem;
}
</style>
<body>
<div id=container></div>
<script>
const container = document.querySelector('#container');
test(() => {
container.innerHTML = '<ruby style="position:relative">base<rt>annotation</ruby>';
const rtBefore = document.querySelector('rt').getBoundingClientRect();
document.querySelector('ruby').style.left = '100px';
const rtAfter = document.querySelector('rt').getBoundingClientRect();
assert_equals(rtBefore.x + 100, rtAfter.x);
}, 'position:relative on a ruby should move the annotation together');
test(() => {
container.innerHTML = `<span style="position:relative">
<ruby>base<rt>annotation</ruby></span>`;
const rubyBefore = document.querySelector('ruby').getBoundingClientRect();
const rtBefore = document.querySelector('rt').getBoundingClientRect();
document.querySelector('span').style.left = '100px';
const rubyAfter = document.querySelector('ruby').getBoundingClientRect();
const rtAfter = document.querySelector('rt').getBoundingClientRect();
assert_equals(rubyBefore.x + 100, rubyAfter.x);
assert_equals(rtBefore.x + 100, rtAfter.x);
}, 'position:relative on a ruby parent should move the ruby and the annotation');
test(() => {
container.innerHTML = `b<ruby style="position:relative">base
<rt style="position:relative">annotation</ruby>`;
const rtBefore = document.querySelector('rt').getBoundingClientRect();
document.querySelector('ruby').style.left = '100px';
document.querySelector('rt').style.left = '10px';
document.querySelector('rt').style.top = '-50px';
const rtAfter = document.querySelector('rt').getBoundingClientRect();
assert_equals(rtBefore.x + 110, rtAfter.x);
assert_equals(rtBefore.y - 50, rtAfter.y);
}, 'Accumulate position:relative offsets');
</script>
</body>