Bug 1434747 - Add a reftest for async-scrolling of fixed content inside a CSS filter. r=kats
The test only passes with WebRender enabled. Passing without WebRender
would require implementing CSS filters in the Gecko compositor.
MozReview-Commit-ID: HPgxxuj5iJl
new file mode 100644
--- /dev/null
+++ b/layout/reftests/async-scrolling/bg-fixed-in-css-filter-ref.html
@@ -0,0 +1,29 @@
+<!DOCTYPE html>
+<html>
+<head>
+ <meta charset="UTF-8">
+ <title>Fixed background inside blur filter</title>
+ <style>
+ .scrollable {
+ width: 100px;
+ height: 100px;
+ overflow: hidden;
+ }
+ .bg {
+ width: 100px;
+ height: 100px;
+ background-image: url("repeatable-diagonal-gradient.png");
+ background-repeat: no-repeat;
+ background-attachment: fixed;
+ }
+ .blur {
+ filter: blur(10px);
+ }
+ </style>
+</head>
+<body>
+<div class="scrollable">
+ <div class="bg blur"></div>
+</div>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/layout/reftests/async-scrolling/bg-fixed-in-css-filter.html
@@ -0,0 +1,33 @@
+<!DOCTYPE html>
+<html reftest-async-scroll>
+<head>
+ <meta charset="UTF-8">
+ <title>Fixed background inside blur filter</title>
+ <style>
+ .scrollable {
+ width: 100px;
+ height: 100px;
+ overflow: hidden;
+ }
+ .bg {
+ width: 100px;
+ height: 100px;
+ background-image: url("repeatable-diagonal-gradient.png");
+ background-repeat: no-repeat;
+ background-attachment: fixed;
+ }
+ .blur {
+ filter: blur(10px);
+ }
+ </style>
+</head>
+<body>
+<div class="scrollable"
+ reftest-displayport-x="0" reftest-displayport-y="0"
+ reftest-displayport-w="100" reftest-displayport-h="200"
+ reftest-async-scroll-x="0" reftest-async-scroll-y="100">
+ <div class="bg"></div>
+ <div class="bg blur"></div>
+</div>
+</body>
+</html>
--- a/layout/reftests/async-scrolling/reftest.list
+++ b/layout/reftests/async-scrolling/reftest.list
@@ -2,16 +2,18 @@ skip-if(!asyncPan) == bg-fixed-1.html bg
skip-if(!asyncPan) == bg-fixed-cover-1.html bg-fixed-cover-1-ref.html
skip-if(!asyncPan) == bg-fixed-cover-2.html bg-fixed-cover-2-ref.html
skip-if(!asyncPan) == bg-fixed-cover-3.html bg-fixed-cover-3-ref.html
skip-if(!asyncPan) == bg-fixed-child.html bg-fixed-child-ref.html
skip-if(!asyncPan) == bg-fixed-child-clip-1.html bg-fixed-child-clip-ref.html
skip-if(!asyncPan) == bg-fixed-child-clip-2.html bg-fixed-child-clip-ref.html
fuzzy(1,246) fuzzy-if(skiaContent,2,170) fuzzy-if(browserIsRemote&&d2d,53,187) skip-if(!asyncPan) == bg-fixed-child-mask.html bg-fixed-child-mask-ref.html
skip-if(!asyncPan) == bg-fixed-in-opacity.html bg-fixed-in-opacity-ref.html
+# Passing the test below without WebRender would require implementing CSS filters in the Gecko compositor.
+fails-if(!webrender) skip-if(!asyncPan) == bg-fixed-in-css-filter.html bg-fixed-in-css-filter-ref.html
skip-if(!asyncPan) == bg-fixed-child-no-culling-1.html bg-fixed-child-no-culling-1-ref.html
skip-if(!asyncPan) == bg-fixed-child-no-culling-2.html bg-fixed-child-no-culling-2-ref.html
skip-if(!asyncPan) == bg-fixed-child-no-culling-3.html bg-fixed-child-no-culling-3-ref.html
fuzzy-if(Android,2,4000) fuzzy-if(browserIsRemote&&cocoaWidget,2,179524) fuzzy-if(browserIsRemote&&winWidget,1,74590) fuzzy-if(gtkWidget&&layersGPUAccelerated,1,3528) skip-if(!asyncPan) == bg-fixed-transformed-image.html bg-fixed-transformed-image-ref.html
skip-if(!asyncPan) == element-1.html element-1-ref.html
pref(layers.force-active,true) skip-if(!asyncPan) == iframe-1.html iframe-1-ref.html
skip-if(!asyncPan) == nested-1.html nested-1-ref.html
skip-if(!asyncPan) == nested-2.html nested-2-ref.html