Skip to content

Commit

Permalink
Update offsetParent behavior in shadow trees
Browse files Browse the repository at this point in the history
New behavior for offsetParent in shadow trees was discussed in [1] and
[2]. This lead to a chromium patch [3] which changed the behavior. After
[3] landed, the desired behavior in the discussions in [1] and [2]
seemed to have changed. Unfortunately, the author of [3] was no longer
working on chromium. This new behavior was then added to the spec and
landed in webkit [4] and firefox [5], and a WPT was added for it [6].

This patch implements the new behavior to follow suit with webkit and
firefox based on the WPT in [6]. Unfortunately, there are several tests
which are either internal to chromium or are only passing in chromium
which appear to oppose this new behavior and will have to be updated or
removed:
- external/wpt/css/css-contain/content-visibility/content-visibility-035.html
- external/wpt/css/css-contain/content-visibility/content-visibility-044.html
- fast/dom/shadow/offset-parent-does-not-leak-ua-shadow.html
- shadow-dom/offsetParent.html
For shadow-dom/offsetParent.html, I verified that firefox and safari
both currently fail the same tests which this patch does.

[1] WICG/webcomponents#497
[2] w3c/csswg-drafts#159
[3] https://chromium.googlesource.com/chromium/src/+/18d455ee833f6a30dcbe2755380861eb75cd9f6f
[4] https://trac.webkit.org/changeset/239313/webkit
[5] https://bugzilla.mozilla.org/show_bug.cgi?id=1514074
[6] https://wpt.fyi/results/shadow-dom/offsetParent-across-shadow-boundaries.html

Fixed: 920069
Change-Id: I168edc5ad0e4fcb92d0c4a440623f2424b14a988
  • Loading branch information
josepharhar authored and chromium-wpt-export-bot committed Mar 24, 2021
1 parent def549c commit e4737da
Show file tree
Hide file tree
Showing 2 changed files with 3 additions and 3 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -41,10 +41,10 @@
}

async function forceLayoutTest() {
t.step(() => assert_equals(slotted.offsetTop, 0));
t.step(() => assert_equals(slotted.offsetTop, 8));
// Add a 20px div above the slotted div.
container.innerHTML = "<div style='height: 20px;'></div><slot></slot>";
t.step(() => assert_equals(slotted.offsetTop, 20));
t.step(() => assert_equals(slotted.offsetTop, 28));
t.done();
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@
t.step(async () => {
container.classList.add("hidden");
requestAnimationFrame(() => {
assert_equals(slotted.offsetTop, 0);
assert_equals(slotted.offsetTop, 8);
container.innerHTML = "<div style='height: 20px;'></div><slot></slot>";
t.done();
});
Expand Down

0 comments on commit e4737da

Please sign in to comment.