Skip to content

Commit d896bcb

Browse files
noamrchromium-wpt-export-bot
authored andcommitted
Keep pseudo-elements during moveBefore
This happens by default since we don't detach the layout, but this CL removes the assertions that the psuedo-elements are gone. Bug: 40150299 Change-Id: I6200dd8ff0902b1e0d2950009ce46f51f53eda59 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5481991 Reviewed-by: Rune Lillesveen <[email protected]> Reviewed-by: Dominic Farolino <[email protected]> Commit-Queue: Noam Rosenthal <[email protected]> Cr-Commit-Position: refs/heads/main@{#1291905}
1 parent 21bc807 commit d896bcb

File tree

2 files changed

+108
-0
lines changed

2 files changed

+108
-0
lines changed
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
<!DOCTYPE html>
2+
<title>Node.moveBefore should preserve CSS transition state on pseudo-elements (left)</title>
3+
<script src="/resources/testharness.js"></script>
4+
<script src="/resources/testharnessreport.js"></script>
5+
6+
<body>
7+
<section id="old-parent">
8+
<div id="item"></div>
9+
</section>
10+
<section id="new-parent">
11+
</section>
12+
<style>
13+
#item {
14+
width: 100px;
15+
height: 100px;
16+
background: green;
17+
position: absolute;
18+
left: 0;
19+
}
20+
21+
#item::before {
22+
content: "Foo";
23+
width: 100px;
24+
height: 100px;
25+
background: green;
26+
transition: left 60s steps(1, jump-both);
27+
left: 0px;
28+
position: absolute;
29+
}
30+
31+
#item.big::before {
32+
left: 400px;
33+
}
34+
35+
section {
36+
position: relative;
37+
}
38+
39+
body {
40+
margin-left: 0;
41+
}
42+
</style>
43+
<script>
44+
promise_test(async t => {
45+
const item = document.querySelector("#item");
46+
assert_equals(item.getBoundingClientRect().x, 0);
47+
item.classList.add("big");
48+
await new Promise(resolve => item.addEventListener("transitionstart", resolve));
49+
document.querySelector("#new-parent").moveBefore(item, null);
50+
await new Promise(resolve => requestAnimationFrame(() => resolve()));
51+
assert_equals(getComputedStyle(item, "::before").left, "200px");
52+
});
53+
</script>
54+
</body>
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
<!DOCTYPE html>
2+
<title>Node.moveBefore should preserve CSS transition state on pseudo-elements (transform)</title>
3+
<script src="/resources/testharness.js"></script>
4+
<script src="/resources/testharnessreport.js"></script>
5+
6+
<body>
7+
<section id="old-parent">
8+
<div id="item"></div>
9+
</section>
10+
<section id="new-parent">
11+
</section>
12+
<style>
13+
#item {
14+
width: 100px;
15+
height: 100px;
16+
background: green;
17+
position: absolute;
18+
left: 0;
19+
}
20+
21+
#item::before {
22+
content: "Foo";
23+
width: 100px;
24+
height: 100px;
25+
background: green;
26+
transition: transform 60s steps(1, jump-both);
27+
transform: none;
28+
position: absolute;
29+
}
30+
31+
#item.big::before {
32+
transform: translateX(400px);
33+
}
34+
35+
section {
36+
position: relative;
37+
}
38+
39+
body {
40+
margin-left: 0;
41+
}
42+
</style>
43+
<script>
44+
promise_test(async t => {
45+
const item = document.querySelector("#item");
46+
assert_equals(item.getBoundingClientRect().x, 0);
47+
item.classList.add("big");
48+
await new Promise(resolve => item.addEventListener("transitionstart", resolve));
49+
document.querySelector("#new-parent").moveBefore(item, null);
50+
await new Promise(resolve => requestAnimationFrame(() => resolve()));
51+
assert_not_equals(getComputedStyle(item, "::before").transform, "none");
52+
});
53+
</script>
54+
</body>

0 commit comments

Comments
 (0)