Index: third_party/WebKit/LayoutTests/paint/invalidation/compositing/fixed-pos-inside-composited-intermediate-layer.html |
diff --git a/third_party/WebKit/LayoutTests/paint/invalidation/compositing/fixed-pos-inside-composited-intermediate-layer.html b/third_party/WebKit/LayoutTests/paint/invalidation/compositing/fixed-pos-inside-composited-intermediate-layer.html |
new file mode 100644 |
index 0000000000000000000000000000000000000000..0e12feb954a1073cd1f103feb24e8c8278dc08e1 |
--- /dev/null |
+++ b/third_party/WebKit/LayoutTests/paint/invalidation/compositing/fixed-pos-inside-composited-intermediate-layer.html |
@@ -0,0 +1,66 @@ |
+<!DOCTYPE html> |
+<html> |
+ |
+<head> |
+<script src="../resources/text-based-repaint.js"></script> |
+<style> |
+ |
+.compositedBehind { |
+ width: 500px; |
+ height: 500px; |
+ transform: translatez(0); |
+ background-color: cyan; |
+} |
+ |
+.containerOverlapsComposited { |
+ position: absolute; |
+ z-index: 2; /* Creates a stacking context so that the fixed-pos layer is contained instead of a sibling */ |
+ top: 20px; |
+ left: 20px; |
+ width: 100px; |
+ height: 30000px; |
+ background-color: green; |
+} |
+ |
+.fixed { |
+ position: fixed; |
+ top: 45px; |
+ left: 45px; |
+ background-color: lime; |
+ width: 50px; |
+ height: 50px; |
+} |
+ |
+</style> |
+ |
+<script> |
+ if (window.internals) { |
+ /* Note carefully, compositing for fixed position is _disabled_ here */ |
+ internals.settings.setPreferCompositingToLCDTextEnabled(false); |
+ } |
+ |
+ function repaintTest() { |
+ window.scrollTo(0, 100); |
+ } |
+</script> |
+ |
+</head> |
+ |
+ |
+ |
+<body onload="runRepaintAndPixelTest()"> |
+ <!-- |
+ Among other duplicate bugs: https://code.google.com/p/chromium/issues/detail?id=128375 |
+ A non-composited fixed-position element can get grouped into a composited container. |
+ In this case, repaint invalidations were incorrectly going to the LayoutView instead |
+ of the composited container. The incorrect result was that the fixed-position element |
+ never repainted, and it appeared to scroll along with the composited container. |
+ --> |
+ <div class="compositedBehind"> </div> |
+ |
+ <div class="containerOverlapsComposited"> |
+ <div class="fixed"></div> |
+ </div> |
+</body> |
+ |
+</html> |