Bug 1403559 - Remove random-if(webrender) annotations for layers-specific reftests and instead skip the layers checks in the reftest harness. r=mstange draft
authorKartikaya Gupta <kgupta@mozilla.com>
Wed, 27 Sep 2017 10:12:10 -0400
changeset 671272 60c22211bc4baeb3292ec76fee6e4c59b9ca105d
parent 671271 ef17776575f52ee02b293cf92012636831328d1e
child 733480 7e4134c2b0b59301dea512a84ba1abe517c28759
push id81897
push userkgupta@mozilla.com
push dateWed, 27 Sep 2017 18:26:52 +0000
reviewersmstange
bugs1403559
milestone58.0a1
Bug 1403559 - Remove random-if(webrender) annotations for layers-specific reftests and instead skip the layers checks in the reftest harness. r=mstange MozReview-Commit-ID: 8Xtx3aGIx8
layout/reftests/async-scrolling/reftest.list
layout/reftests/css-animations/reftest.list
layout/reftests/invalidation/reftest.list
layout/reftests/layers/reftest.list
layout/reftests/reftest-sanity/reftest.list
layout/tools/reftest/reftest-content.js
layout/tools/reftest/reftest.jsm
--- a/layout/reftests/async-scrolling/reftest.list
+++ b/layout/reftests/async-scrolling/reftest.list
@@ -43,18 +43,18 @@ fuzzy-if(Android,6,4) skip-if(!asyncPan)
 fuzzy-if(Android,6,4) skip == offscreen-clipped-blendmode-3.html offscreen-clipped-blendmode-ref.html # bug 1251588 - wrong AGR on mix-blend-mode item
 fuzzy-if(Android,6,4) skip-if(!asyncPan) == offscreen-clipped-blendmode-4.html offscreen-clipped-blendmode-ref.html
 fuzzy-if(Android,7,4) skip-if(!asyncPan) == perspective-scrolling-1.html perspective-scrolling-1-ref.html
 fuzzy-if(Android,7,4) skip-if(!asyncPan) == perspective-scrolling-2.html perspective-scrolling-2-ref.html
 fuzzy-if(Android,7,4) fails-if(webrender) skip-if(!asyncPan) == perspective-scrolling-3.html perspective-scrolling-3-ref.html # bug 1361720 for webrender
 fuzzy-if(Android,7,4) skip-if(!asyncPan) == perspective-scrolling-4.html perspective-scrolling-4-ref.html
 pref(apz.disable_for_scroll_linked_effects,true) skip-if(!asyncPan) == disable-apz-for-sle-pages.html disable-apz-for-sle-pages-ref.html
 fuzzy-if(browserIsRemote&&d2d,1,19) skip-if(!asyncPan) == background-blend-mode-1.html background-blend-mode-1-ref.html
-random-if(webrender) skip-if(Android||!asyncPan) != opaque-fractional-displayport-1.html about:blank    # test is specific to "layers" and not valid with webrender
-random-if(webrender) skip-if(Android||!asyncPan) != opaque-fractional-displayport-2.html about:blank    # test is specific to "layers" and not valid with webrender
+skip-if(Android||!asyncPan) != opaque-fractional-displayport-1.html about:blank
+skip-if(Android||!asyncPan) != opaque-fractional-displayport-2.html about:blank
 fuzzy-if(Android,6,4) fails-if(webrender) skip-if(!asyncPan) == fixed-pos-scrolled-clip-1.html fixed-pos-scrolled-clip-1-ref.html   # bug 1373802 for webrender
 fuzzy-if(Android,6,8) fails-if(webrender) skip-if(!asyncPan) == fixed-pos-scrolled-clip-2.html fixed-pos-scrolled-clip-2-ref.html   # bug 1373802 for webrender
 fuzzy-if(Android,6,8) fails-if(webrender) skip-if(!asyncPan) == fixed-pos-scrolled-clip-3.html fixed-pos-scrolled-clip-3-ref.html   # bug 1373802 for webrender
 fuzzy-if(Android,6,8) fails-if(webrender) skip-if(!asyncPan) == fixed-pos-scrolled-clip-4.html fixed-pos-scrolled-clip-4-ref.html   # bug 1373802 for webrender
 fuzzy-if(Android,6,4) skip-if(!asyncPan) == position-sticky-scrolled-clip-1.html position-sticky-scrolled-clip-1-ref.html
 fuzzy-if(Android,6,4) skip == position-sticky-scrolled-clip-2.html position-sticky-scrolled-clip-2-ref.html # bug ?????? - incorrectly applying clip to sticky contents
 
 # for the following tests, we want to disable the low-precision buffer
--- a/layout/reftests/css-animations/reftest.list
+++ b/layout/reftests/css-animations/reftest.list
@@ -32,20 +32,20 @@ test-pref(layers.offmainthreadcompositio
 == stacking-context-transform-none-animation-with-backface-visibility.html stacking-context-animation-ref.html
 == stacking-context-transform-none-animation-with-preserve-3d.html stacking-context-animation-ref.html
 == stacking-context-transform-none-with-fill-backwards.html stacking-context-animation-ref.html
 == stacking-context-transform-none-with-fill-forwards.html stacking-context-animation-ref.html
 == stacking-context-opacity-1-in-delay.html stacking-context-animation-ref.html
 == stacking-context-opacity-removing-important-in-delay.html stacking-context-animation-ref.html
 == stacking-context-transform-none-in-delay.html stacking-context-animation-ref.html
 == stacking-context-transform-removing-important-in-delay.html stacking-context-animation-ref.html
-fails == background-position-in-delay.html background-position-ref.html # This test fails the reftest-opaque-layer check since animating background-position currently creates an active layer from its delay phse, and reftest-opaque-layer only handles items assigned to PaintedLayers.
-fails-if(webrender) == background-position-after-finish.html background-position-ref.html
-fails == background-position-running.html background-position-ref.html # This test fails the reftest-opaque-layer check since animating background-position currently creates an active layer, and reftest-opaque-layer only handles items assigned to PaintedLayers.
-fails == background-position-important.html background-position-ref.html # This test fails the reftest-opaque-layer check since animating background-position overridden by a non-animated !important style also creates an active layer, and reftest-opaque-layer only handles items that are assigned to PaintedLayers.
+fails-if(layerChecksEnabled) == background-position-in-delay.html background-position-ref.html # This test fails the reftest-opaque-layer check since animating background-position currently creates an active layer from its delay phse, and reftest-opaque-layer only handles items assigned to PaintedLayers.
+== background-position-after-finish.html background-position-ref.html
+fails-if(layerChecksEnabled) == background-position-running.html background-position-ref.html # This test fails the reftest-opaque-layer check since animating background-position currently creates an active layer, and reftest-opaque-layer only handles items assigned to PaintedLayers.
+fails-if(layerChecksEnabled) == background-position-important.html background-position-ref.html # This test fails the reftest-opaque-layer check since animating background-position overridden by a non-animated !important style also creates an active layer, and reftest-opaque-layer only handles items that are assigned to PaintedLayers.
 
 == mask-position-after-finish-1a.html mask-anim-ref.html
 == mask-position-after-finish-1b.html mask-anim-ref.html
 == mask-position-in-delay-1a.html mask-anim-ref.html
 == mask-position-in-delay-1b.html mask-anim-ref.html
 == mask-size-after-finish-1a.html mask-anim-ref.html
 == mask-size-after-finish-1b.html mask-anim-ref.html
 == mask-size-in-delay-1a.html mask-anim-ref.html
--- a/layout/reftests/invalidation/reftest.list
+++ b/layout/reftests/invalidation/reftest.list
@@ -38,44 +38,41 @@ pref(layout.animated-image-layers.enable
 == filter-userspace-offset.svg?offsetContainer=foreignObject&mask=boundingBox filter-userspace-offset.svg
 == filter-userspace-offset.svg?offsetContainer=rect&mask=userSpace-at100 filter-userspace-offset.svg
 == filter-userspace-offset.svg?offsetContainer=use&mask=userSpace-atZero filter-userspace-offset.svg
 == filter-userspace-offset.svg?offsetContainer=innerSVG&mask=userSpace-atZero filter-userspace-offset.svg
 == filter-userspace-offset.svg?offsetContainer=foreignObject&mask=userSpace-at100 filter-userspace-offset.svg
 == filter-userspace-offset.svg?offsetContainer=rect&filter=matrix-fillPaint-boundingBox filter-userspace-offset.svg
 == filter-userspace-offset.svg?offsetContainer=rect&filter=matrix-fillPaint-userSpace-at100 filter-userspace-offset.svg
 
-# All the tests marked with random-if(webrender) are specific to "layers" and therefore not really valid with WebRender enabled.
-# We are marking them random-if so that we ensure they don't crash, but allow any non-crash result.
-
 fails-if(webrender) != scroll-inactive-layers.html about:blank
 fails-if(webrender) != scroll-inactive-layers-2.html about:blank
 != inactive-layertree-visible-region-1.html about:blank
 != inactive-layertree-visible-region-2.html about:blank
 != transform-floating-point-invalidation.html about:blank
 != transform-floating-point-invalidation.html?reverse about:blank
 != nudge-to-integer-invalidation.html about:blank
 != nudge-to-integer-invalidation.html?reverse about:blank
 != clipped-animated-transform-1.html about:blank
-random-if(webrender) != paintedlayer-recycling-1.html about:blank
-random-if(webrender) != paintedlayer-recycling-2.html about:blank
-pref(layers.single-tile.enabled,false) random-if(webrender) != paintedlayer-recycling-3.html about:blank
-random-if(webrender) != paintedlayer-recycling-4.html about:blank
-random-if(webrender) != paintedlayer-recycling-5.html about:blank
-random-if(webrender) != paintedlayer-recycling-6.html about:blank
-random-if(webrender) != paintedlayer-recycling-7.html about:blank
+!= paintedlayer-recycling-1.html about:blank
+!= paintedlayer-recycling-2.html about:blank
+pref(layers.single-tile.enabled,false) != paintedlayer-recycling-3.html about:blank
+!= paintedlayer-recycling-4.html about:blank
+!= paintedlayer-recycling-5.html about:blank
+!= paintedlayer-recycling-6.html about:blank
+!= paintedlayer-recycling-7.html about:blank
 != masklayer-1.html about:blank
 != masklayer-2.html about:blank
-random-if(webrender) != layer-splitting-1.html about:blank
-random-if(webrender) != layer-splitting-2.html about:blank
-random-if(webrender) != layer-splitting-3.html about:blank
-random-if(webrender) != layer-splitting-4.html about:blank
-random-if(webrender) != layer-splitting-5.html about:blank
-random-if(webrender) != layer-splitting-6.html about:blank
-random-if(webrender) != layer-splitting-7.html about:blank
+!= layer-splitting-1.html about:blank
+!= layer-splitting-2.html about:blank
+!= layer-splitting-3.html about:blank
+!= layer-splitting-4.html about:blank
+!= layer-splitting-5.html about:blank
+!= layer-splitting-6.html about:blank
+!= layer-splitting-7.html about:blank
 fuzzy-if(gtkWidget,2,4) fuzzy-if(asyncPan,2,3955) fuzzy-if(OSX,179,30) fuzzy-if(skiaContent,16,3230) == image-scrolling-zoom-1.html image-scrolling-zoom-1-ref.html
 != image-scrolling-zoom-1-ref.html image-scrolling-zoom-1-notref.html
 pref(layers.single-tile.enabled,false) != fast-scrolling.html about:blank
 == background-position-1.html background-position-1-ref.html
 == background-position-2a.html background-position-2-ref.html
 == background-position-2b.html background-position-2-ref.html
 == background-position-2c.html background-position-2-ref.html
 == background-position-2d.html background-position-2-ref.html
--- a/layout/reftests/layers/reftest.list
+++ b/layout/reftests/layers/reftest.list
@@ -1,44 +1,38 @@
 == move-to-background-1.html move-to-background-1-ref.html
 fuzzy-if(cocoaWidget,2,6) random-if(Android) == component-alpha-exit-1.html component-alpha-exit-1-ref.html # bug 760275
 
-# The pull-background-* tests are specific to "layers" and are not valid with WebRender.
-# We mark them random-if to make sure they don't crash, but allow any result.
-random-if(webrender) != pull-background-1.html about:blank
-random-if(webrender) skip-if(styloVsGecko) != pull-background-2.html about:blank # skip styloVsGecko for imperceptible pixel rounding differences between Stylo and Gecko
-random-if(webrender) != pull-background-3.html about:blank
-random-if(webrender) != pull-background-4.html about:blank
-random-if(webrender) fuzzy-if(styloVsGecko,1,1) != pull-background-5.html about:blank
-random-if(webrender) != pull-background-6.html about:blank
+!= pull-background-1.html about:blank
+skip-if(styloVsGecko) != pull-background-2.html about:blank # skip styloVsGecko for imperceptible pixel rounding differences between Stylo and Gecko
+!= pull-background-3.html about:blank
+!= pull-background-4.html about:blank
+fuzzy-if(styloVsGecko,1,1) != pull-background-5.html about:blank
+!= pull-background-6.html about:blank
 
 # The animated-position tests are disabled for intermittent failures / passes, bug 1150941
 skip != pull-background-animated-position-1.html about:blank # Fails with event regions
 skip != pull-background-animated-position-2.html about:blank
 skip != pull-background-animated-position-3.html about:blank # Fails because PaintedLayer item assignment doesn't recognize overflow:hidden clips
 skip != pull-background-animated-position-4.html about:blank # Fails because PaintedLayer item assignment and background pulling don't recognize overflow:hidden clips
 skip != pull-background-animated-position-5.html about:blank # Fails because ownLayer bounds don't anticipate changes of animated contents, but doesn't fail with event regions
 
-# The pull-background-displayport-* tests are specific to "layers" and are not valid with webrender.
-# We mark them random-if to make sure they don't crash, but allow any result.
-random-if(webrender) skip-if(!asyncPan) != pull-background-displayport-1.html about:blank
-random-if(webrender) skip-if(!asyncPan) skip-if(styloVsGecko) != pull-background-displayport-2.html about:blank # skip styloVsGecko for imperceptible pixel rounding differences between Stylo and Gecko
-random-if(webrender) skip-if(!asyncPan) != pull-background-displayport-3.html about:blank # fails with non-overlay scrollbars and event regions due to bug 1148515
-random-if(webrender) skip-if(!asyncPan) != pull-background-displayport-4.html about:blank # fails with non-overlay scrollbars and event regions due to bug 1148515
-random-if(webrender) skip-if(!asyncPan) fuzzy-if(styloVsGecko,1,1) != pull-background-displayport-5.html about:blank
-random-if(webrender) skip-if(!asyncPan) != pull-background-displayport-6.html about:blank # fails with non-overlay scrollbars and event regions due to bug 1148515
+skip-if(!asyncPan) != pull-background-displayport-1.html about:blank
+skip-if(!asyncPan) skip-if(styloVsGecko) != pull-background-displayport-2.html about:blank # skip styloVsGecko for imperceptible pixel rounding differences between Stylo and Gecko
+skip-if(!asyncPan) != pull-background-displayport-3.html about:blank # fails with non-overlay scrollbars and event regions due to bug 1148515
+skip-if(!asyncPan) != pull-background-displayport-4.html about:blank # fails with non-overlay scrollbars and event regions due to bug 1148515
+skip-if(!asyncPan) fuzzy-if(styloVsGecko,1,1) != pull-background-displayport-5.html about:blank
+skip-if(!asyncPan) != pull-background-displayport-6.html about:blank # fails with non-overlay scrollbars and event regions due to bug 1148515
 
 fuzzy(2,30150) == opacity-blending.html opacity-blending-ref.html
 fuzzy(16,5) == mask-layer-transform.html mask-layer-transform-ref.html
 fuzzy-if(gtkWidget,1,17) fuzzy-if(Android,3,4) == forced-bg-color-outside-visible-region.html forced-bg-color-outside-visible-region-ref.html
-# The following tests are random-if(webrender) because they are specific to
-# "layers" and are not valid with webrender
-random-if(webrender) != layerize-over-fixed-bg-1.html about:blank
-skip-if(!asyncPan) random-if(webrender) != fixed-pos-scrolled-clip-layerize.html about:blank
-skip-if(!asyncPan) random-if(webrender) == fixed-pos-scrolled-clip-opacity-layerize.html fixed-pos-scrolled-clip-opacity-inside-layerize.html
+!= layerize-over-fixed-bg-1.html about:blank
+skip-if(!asyncPan) != fixed-pos-scrolled-clip-layerize.html about:blank
+skip-if(!asyncPan) == fixed-pos-scrolled-clip-opacity-layerize.html fixed-pos-scrolled-clip-opacity-inside-layerize.html
 
 # These tests check whether the GPU process is working. We expect it to work if:
 #   E10S is enabled, and
 #   Direct2D 1.1 works (as a proxy for Windows 7 SP1 + Platform Update or higher), OR
 #   The GPU process has been forced on.
 # If these conditions are met, but the GPU process is not on, these tests will turn on
 # and compare false.
 skip-if(!browserIsRemote||!d2d||gpuProcess) == data:text/plain,FAIL about:blank
--- a/layout/reftests/reftest-sanity/reftest.list
+++ b/layout/reftests/reftest-sanity/reftest.list
@@ -161,51 +161,47 @@ fuzzy(1,0-2) skip-if(styloVsGecko) != fu
 # they are both overfuzzed
 # fuzzy(3-4,250000) == fuzzy.html fuzzy-ref.html
 # fuzzy(1,250001-250002) == fuzzy.html fuzzy-ref.html
 #
 # When using 565 fuzzy.html and fuzzy-ref.html will compare as equal
 fails fuzzy-if(false,2,1) random-if(Android) == fuzzy.html fuzzy-ref.html
 
 # Test that reftest-no-paint fails correctly.
-# Since this is a "layers"-specific test, we allow any non-crash result with WebRender.
-fails random-if(webrender) == reftest-no-paint.html reftest-no-paint-ref.html
+fails-if(layerChecksEnabled) == reftest-no-paint.html reftest-no-paint-ref.html
 
 skip-if(!asyncPan||!browserIsRemote) == async-scroll-1a.html async-scroll-1-ref.html
 
 # Disable low-res painting for this test as it will cause more to
 # be drawn than we want.
 default-preferences pref(layers.low-precision-buffer,false)
 skip-if(!asyncPan||!browserIsRemote) != async-scroll-1b.html async-scroll-1-ref.html
 default-preferences
 
 skip-if(!Android) pref(apz.allow_zooming,true) != async-zoom-1.html async-zoom-1-ref.html
 fuzzy(112,800) skip-if(!Android) pref(apz.allow_zooming,true) == async-zoom-2.html async-zoom-2-ref.html
 
 # reftest-opaque-layer
-# Since this is a "layers"-specific test, we allow any non-crash result with WebRender.
-random-if(webrender) == reftest-opaque-layer-pass.html reftest-opaque-layer-pass.html
-random-if(webrender) != reftest-opaque-layer-pass.html about:blank
-random-if(webrender) != about:blank reftest-opaque-layer-pass.html
-fails random-if(webrender) == reftest-opaque-layer-fail.html reftest-opaque-layer-fail.html
+== reftest-opaque-layer-pass.html reftest-opaque-layer-pass.html
+!= reftest-opaque-layer-pass.html about:blank
+!= about:blank reftest-opaque-layer-pass.html
+fails-if(layerChecksEnabled) == reftest-opaque-layer-fail.html reftest-opaque-layer-fail.html
 
 # If reftest-opaque-layer fails (no matter whether it fails in the test or in the reference),
 # it shouldn't matter whether the test matches the reference.
-# Since this is a "layers"-specific test, we allow any non-crash result with WebRender.
-fails random-if(webrender) != reftest-opaque-layer-fail.html reftest-opaque-layer-fail.html
-fails random-if(webrender) == reftest-opaque-layer-fail.html about:blank
-fails random-if(webrender) == about:blank reftest-opaque-layer-fail.html
-fails random-if(webrender) != reftest-opaque-layer-fail.html about:blank
-fails random-if(webrender) != about:blank reftest-opaque-layer-fail.html
+fails != reftest-opaque-layer-fail.html reftest-opaque-layer-fail.html
+fails == reftest-opaque-layer-fail.html about:blank
+fails == about:blank reftest-opaque-layer-fail.html
+fails-if(layerChecksEnabled) != reftest-opaque-layer-fail.html about:blank
+fails-if(layerChecksEnabled) != about:blank reftest-opaque-layer-fail.html
 
 # reftest-opaque-layer and reftest-wait
-# Since this is a "layers"-specific test, we allow any non-crash result with WebRender.
-random-if(webrender) == reftest-opaque-layer-wait-pass.html reftest-opaque-layer-pass.html
-random-if(webrender) != reftest-opaque-layer-wait-pass.html about:blank
-fails random-if(webrender) == reftest-opaque-layer-wait-fail.html reftest-opaque-layer-fail.html
-fails random-if(webrender) != reftest-opaque-layer-wait-fail.html about:blank
+== reftest-opaque-layer-wait-pass.html reftest-opaque-layer-pass.html
+!= reftest-opaque-layer-wait-pass.html about:blank
+fails-if(layerChecksEnabled) == reftest-opaque-layer-wait-fail.html reftest-opaque-layer-fail.html
+fails-if(layerChecksEnabled) != reftest-opaque-layer-wait-fail.html about:blank
 
 # reftest-assigned-layer
-random-if(webrender) != reftest-assigned-layer-pass.html about:blank
-fails random-if(webrender) != reftest-assigned-layer-fail-1.html about:blank
-fails random-if(webrender) != reftest-assigned-layer-fail-2.html about:blank
-fails random-if(webrender) != reftest-assigned-layer-fail-3.html about:blank
-fails random-if(webrender) != reftest-assigned-layer-fail-4.html about:blank
+!= reftest-assigned-layer-pass.html about:blank
+fails-if(layerChecksEnabled) != reftest-assigned-layer-fail-1.html about:blank
+fails-if(layerChecksEnabled) != reftest-assigned-layer-fail-2.html about:blank
+fails-if(layerChecksEnabled) != reftest-assigned-layer-fail-3.html about:blank
+fails-if(layerChecksEnabled) != reftest-assigned-layer-fail-4.html about:blank
--- a/layout/tools/reftest/reftest-content.js
+++ b/layout/tools/reftest/reftest-content.js
@@ -843,16 +843,21 @@ function OnDocumentLoad(event)
     }
 }
 
 function CheckLayerAssertions(contentRootElement)
 {
     if (!contentRootElement) {
         return;
     }
+    if (gIsWebRenderEnabled) {
+        // WebRender doesn't use layers, so let's not try checking layers
+        // assertions.
+        return;
+    }
 
     var opaqueLayerElements = getOpaqueLayerElements(contentRootElement);
     for (var i = 0; i < opaqueLayerElements.length; ++i) {
         var elem = opaqueLayerElements[i];
         try {
             if (!windowUtils().isPartOfOpaqueLayer(elem)) {
                 SendFailedOpaqueLayer(elementDescription(elem) + ' is not part of an opaque layer');
             }
--- a/layout/tools/reftest/reftest.jsm
+++ b/layout/tools/reftest/reftest.jsm
@@ -722,16 +722,17 @@ function BuildConditionSandbox(aURL) {
     sandbox.layersOpenGL =
       gWindowUtils.layerManagerType == "OpenGL";
     sandbox.webrender =
       gWindowUtils.layerManagerType == "WebRender";
     sandbox.layersOMTC =
       gWindowUtils.layerManagerRemote == true;
     sandbox.advancedLayers =
       gWindowUtils.usingAdvancedLayers == true;
+    sandbox.layerChecksEnabled = !sandbox.webrender;
 
     // Shortcuts for widget toolkits.
     sandbox.Android = xr.OS == "Android";
     sandbox.cocoaWidget = xr.widgetToolkit == "cocoa";
     sandbox.gtkWidget = xr.widgetToolkit == "gtk2"
                         || xr.widgetToolkit == "gtk3";
     sandbox.qtWidget = xr.widgetToolkit == "qt";
     sandbox.winWidget = xr.widgetToolkit == "windows";