summaryrefslogtreecommitdiffstats
path: root/layout/reftests/invalidation/paintedlayer-recycling-1.html
blob: 5f0b211e1063d45c4e552e86d078b4e060a27cc7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
<!DOCTYPE html>
<html lang="en" class="reftest-wait">
<meta charset="utf-8">
<title>Switching the transform to animate shouldn't invalidate the fixed layer</title>

<style>

.content {
  box-sizing: border-box;
  width: 200px;
  height: 200px;
  border: 1px solid black;
}

.fixed {
  position: fixed;
  background-color: white;
  top: 20px;
  left: 240px;
}

.reftest-no-paint {
  border-color: lime;
}

.transform {
  transform: translateY(0.1px);
}

.aboveTransform {
  margin-top: 20px;
  border-color: blue;
  position: relative;
}

body {
  margin: 0;
  padding: 20px;
  height: 3000px;
}

</style>

<div class="transform content" id="aboutToAnimate">
  <!--
    This transform starts out inactive and is going to turn active + prerendered.
  -->
</div>

<div class="aboveTransform content">
  <!--
    This content is on top of .transform in z-order but starts out in the
    same layer as .transform (and the canvas background). Once the transform
    turns active, this needs its own PaintedLayer because the prerendered
    transform might asynchronously move underneath it.
  -->
</div>

<div class="fixed reftest-no-paint content">
  <!--
    This fixed layer gets its own PaintedLayer above the rest.
    When .aboveTransform requires its own PaintedLayer, it should not cause
    .fixed to change layers.
  -->
</div>

<script>

function doTest() {
  document.querySelector("#aboutToAnimate").style.willChange = "transform";
  document.documentElement.removeAttribute("class");
}
document.addEventListener("MozReftestInvalidate", doTest);

</script>